您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 第10章基于组件开发的软件工程
西安交通大学刘海岩1第10章基于组件开发的软件工程概念基于组件的开发基于组件的软件工程(CBSE)过程西安交通大学刘海岩210.1有关概念组件(Component)也称构件,是比对象更高级的抽象。它是对一组类的组合进行封装,并完成一个或多个功能的特定服务,并客户提供了多个接口。因此组件是可以被直接复用的、由组件接口与组件实现两部分组成软件实体。组件技术是应用级别的集成技术,涉及到组件的描述方法、调用方法和运行体系。组件技术的基本思想是将应用软件分解成一个个独立的单元,将软件开发的过程转变成为类似于“搭积木”的搭建过程,通过组装不同的软件组件来实现软件的集成。应用软件的开发就成为各种不同组件的集成过程。西安交通大学刘海岩3软件技术发展过程:程序=算法+数据结构软件=程序+文档模块化(构件化)是软件的规模与复杂性发展到一定程度时产生的必然结果关注焦点的不同,形成了不同的技术:数据与操作的封装面向对象技术利用网络计算环境分布计算技术利用已经开发出的软件软件复用技术西安交通大学刘海岩4不论哪种技术模块形式及模块之间的协作方式是关键问题面向对象技术:对象对象之间的关联分布计算技术:不同节点上的运行程序及程序之间的通讯软件复用技术:软件组件软件组件的组装西安交通大学刘海岩5基于组件的软件工程(Component-BasedSoftwareEngineering,CBSE)强调使用可复用的组件来建造软件系统。从“实现”系统转向“集成”系统,它改变着软件的开发方式和人们的思维方式。它支持“购买”而非“开发”的思想,真正改变了软件生产模式。可实现下述要求:•提供一种手段,使的应用软件可用预先编好的、功能明确的产品部件定制而成,并可用不同版本的部件实现应用的扩展和更新。•利用模块化方法,将复杂的难以维护的系统分解为互相独立、协同工作的部件,并努力使这些部件可重用。•突破时间、空间及不同硬件设备的限制,利用客户和软件之间统一的接口实现跨平台的互操作。西安交通大学刘海岩6组件的技术的关键涉及组件做什么、构建交互的规则、组件存在的环境等。相应的在实现中有各种支撑性的技术:•组件模型。研究组件的本质特征及组件间的关系;•组件描述语言。以组件模型为基础,解决组件的精确描述、理解和组装问题;•组件分类与检索。研究组件的分类策略、组织模式及检索策略,建立组件库系统,支持组件的有效管理。•组件复合组装。包括源代码级的组装和基于组件对象互操作性的运行级组装;•标准化。包括组件模型的标准化和组件库的标准化;•软件架构。研究如何快速、可靠的应用可复用组件进行系统构造的方式,着重于系统的整体结构和组件级的关联。西安交通大学刘海岩7组件模型组件模型定义了组件实现、文档书写以及部署的标准。这些标准为开发者确保组件的互操作性而设立。最重要的模型有:CORBA、EnterpriseJavaBean和COM+。组件模型的基本要素分类为:•组件接口要素:规定如何定义组件接口及其包括的要素,如操作名、参数及异常等。同时还指定接口定义的语言(IDL)。•使用组件的需知信息要素:为使组件远程分布和访问,需要给组件一个特定的名字。COM+用128位标识符,CORBA和EJB用的是“根”为因特网域名的一个层次化的名字。该类要素中还有反映组件本身接口和属性信息的元数据,以供用户访问。•组件部署要素:定义如何打包为一个可独立执行的实体、何时和如何替换的控制规则。西安交通大学刘海岩8组件模型不仅是标准,同时还是那些支持组件执行的中间件的基础。操作系统提供了一组可被应用使用的通用服务,组件模型的实现提供了类似的共享的服务给组件。水平服务组件管理事务管理资源管理并发持久性信息安全平台服务寻址接口定义异常管理组件通信由组件模型提供的服务这些基本服务使组件间可以相互通信这些与应用无关的服务可被不同的组件使用为利用组件模型所提供的服务,将组件部署在预先定义的标准的容器中。容器是一组接口,通过这些接口来访问支持服务的实现。组件本身不能被其他组件直接访问,它们通过容器进行访问。西安交通大学刘海岩910.2基于组件的开发对于业务和商业系统,可复用的实体从细粒度的函数到整个应用系统,而基于组件的开发为进行系统化的复用创造了机会。组件有两个关键特性:(1)组件是独立可执行的实体。组件的源代码是不可能得到的,所以无需编译。(2)组件所提供的服务可以通过其接口得到,而且所有的交互都是通过接口实现的。组件接口表现为参数化的过程,其内部状态是不会暴露出来的。组件在大多数情况下可被看成有两种关联接口:需求接口和服务接口。见下图:西安交通大学刘海岩10component需求接口服务接口(API)使用此组件的系统应该提供的服务由该组件提供的服务数据采集组件的接口DataCollector例如:sensorManagementsensorDataaddSensorremoveSensorstartSensorstopSensortestSensorInitialisereportlistAll西安交通大学刘海岩11图中额外的区显示Order组件提供的服务接口和需求接口,提供了名为OrderEntry和AccountPayable的服务接口,也要求另外的组件提供名为Person的需求接口。组件可用两个区域来描述:西安交通大学刘海岩12组件关系的建模该图显示Order系统组件如何依赖于其他组件西安交通大学刘海岩13下图显示Store组件的内部结构:端口提供一种方法,它显示建模组件的服务/需求接口如何与它里面的部分相关联。西安交通大学刘海岩14基于组件开发的两种思路:完成高层设计,对设计中的组件给出描述,以便找出可复用的组件,这些组件可在体系结构层次上加入或更详细的设计层次上加入。先根据需求搜寻可复用组件,再将设计建立在获得的组件基础上。两种思路可结合起来。设计系统体系结构描述组件搜寻并验证可复用组件集成系统先完成架构设计的复用系统需求描述搜寻并验证可复用组件对需求作某些修改体系结构设计集成系统复用驱动设计西安交通大学刘海岩15组件合成组件合成是通过组件组装来创建新系统的过程。合成的类型包括:•顺序合成:各个组件的服务接口组合在一起,可能需要编写一些额外的代码来连接这些组件。•层次合成:一个组件直接调用另一个组件所提供的服务。即由一个“组合连接器”绑定一个组件的服务接口到另外的一个组件的需求接口上。。•叠加合成:多个组件接口集中在一起创建一个新组件。重复操作需要删除。(见下页图)西安交通大学刘海岩16ABABAB组件合成的类型a)顺序合成b)层次合成c)叠加合成西安交通大学刘海岩17在合成独立开发的可复用组件时,会经常面临接口不兼容的问题,如:•参数不兼容:接口每一边的操作有相同的名字,但参数的类型和数目不同。•操作不兼容:服务接口和需求接口操作名不同。•操作不完备:一个组件的服务接口是另一个组件的需求接口的子集,或者相反。对所有情况,都必须通过编写适配器组件来解决不兼容的问题,可将一个组件的接口转换为另一个组件的接口。西安交通大学刘海岩1810.3CBSE过程下图是Pressman给出的CBSE过程模型。该模型强调CBSE过程是一个并行的轨迹:即领域工程和基于组件的开发并行的发生。领域工程创建应用领域的模型,该模型作为软件工程过程中分析用户需求的基础。领域工程创建的结构模型为应用的设计提供了输入,建立的可复用组件可被从事组件开发的软件人员使用。西安交通大学刘海岩19领域分析软件架构开发可复用组件开发领域模型结构模型可复用组件库分析组件组装体系结构设计组件认证组件适应组件工程组件更新测试应用软件领域工程基于组件的应用系统的开发一个支持CBSE的过程模型西安交通大学刘海岩201、CBSE过程的需求阶段CBSE强调了软件复用,在需求阶段还有一些重要的目标:识别并找出可复用的组件。主要角色、步骤、主要文档见下图:捕捉领域词汇需求捕获确定参与者和用例识别业务组件可重用资产分析确定并验证业务组件需求业务组件需求规约可重用组件列表需求分析师领域专家组件库管理员西安交通大学刘海岩21捕捉领域词汇定义系统开发过程中使用的领域词汇表或领域模型,统一对所处领域的认识。具体方式有两种:●词汇表(采用自然语言)如银行卡的卡号业务规则说明如下:位数:16位格式:xxxxxyyyyzzzzzzn说明:xxxxx为银行卡组织为总行卡机构分配的标识号yyyy为各银行发卡子机构分配的联行号zzzzzz为发卡序号n为检验位●领域模型(采用UML)西安交通大学刘海岩22需求捕获捕获系统的功能需求和非功能需求确定参与者和用例确定与本系统交互的人或外部系统。有助于确定系统的边界、有助于理解系统的目标。通过研究下列问题确定用例:针对每个参与者系统将完成哪些任务;参与者需要获知系统哪些情况;参与者是否将外部的变化通知系统;系统要修改和建立哪些信息,参与者如何参与其中;用例是否需要支持系统的管理和维护等等。仅给出用例的名称和简短描述,细化描述放在后面分析或高层设计阶段。西安交通大学刘海岩23识别业务组件确定业务组件,并将捕获的功能需求和非功能需求分配给每个业务组件。将用例分组可帮助确定业务组件。业务组件是完成业务功能的整体,内部封装了展现逻辑、业务行为和数据管理,实现给用户带来业务价值的用户需求。因此需要深入考察业务词汇表或业务模型,理清各个业务概念之间的关系,将需求结构化,使每个用例总是从属于一个业务组件。可重用资产分析组件库中所积累的业务组件是经过多次复用并锤炼的结果,其设计往往是经过优化调整的。上游活动识别出的业务组件,应充分重视已有的成熟业务组件所提供的参考意义,因此上游活动的工作成果会有一定的调整。西安交通大学刘海岩24确定并验证业务组件需求需求是分层次的,能够体现软件系统将给用户带来业务价值的需求称为用户需求。而软件为达到用户需求所必须提供的功能(服务)属于下层的需求,有时称为服务级需求,服务级需求是软件为达到用户需求所必须提供的功能,其数量往往比用户需求高一个数量级,这些需求在软件架构设计时再考虑。“业务组件需求”是指对用户有业务价值的需求,因此该活动就是将用户需求分配给业务组件,即确保并验证业务组件对用户有价值。西安交通大学刘海岩252、CBSE过程分析与高层设计用户交互设计架构选型业务组件分析数据模型设计业务组件设计确定系统架构可重用资产分析确定服务组件需求系统架构文档服务组件需求可重用服务组件列表产生:架构设计师组件库管理员界面设计师西安交通大学刘海岩26用户交互设计用户界面原型和流程设计,确定和优化交互过程,提高系统的可用性。可用状态图表达“屏幕”或“页面”的跳转流程。架构选定选择架构风格。利用构件平台提供的技术定义架构。前期的用例模型通过标明哪些是与本系统交互的外部系统来明确系统的边界。业务组件分析分析的客体是问题域。分析的目的是建立“理想化”的解决方案,未考虑具体的技术环境。通过对业务组件“黑盒”进行分析,确定从业务组件(给用户带来业务价值的用户需求)到服务组件(为达到用户需求必须提供的服务)的分解方案(用例由多个组件的协作实现,或一个组件会服务于多个用例)。西安交通大学刘海岩27数据模型设计应专人负责持久化机制。业务组件设计业务组件白盒化:确定接口、完成业务组件的服务组件集以及每个服务组件的接口。每个业务组件的职责可以借助服务组件之间的交互图来辅助发现。组件的描述:3C模型:Concept、Content、Context:概念:描述组件可以做什么,完整的描述组件的接口。内容:描述组件是如何实现的,对维护人员才开放。上下文:描述组件的应用领域、使用环境,便于开发人员选择适当的组件以满足应用需求。西安交通大学刘海岩28确定业务架构基于上游的选型、分析、设计活动,最终确定系统架构(覆盖所有的重要设计)。架构文档需评审通过。可复用资产分析识别可复用的服务组件。确定服务组件需求确定服务级需求并评审通过。西安交通大学刘海岩293、CBSE过程并行与测试经过分析与高层设计阶段的工作,系统的架构已确定,其中包含了
本文标题:第10章基于组件开发的软件工程
链接地址:https://www.777doc.com/doc-4240138 .html