基于构件的软件工程.ppt_第1页
基于构件的软件工程.ppt_第2页
基于构件的软件工程.ppt_第3页
基于构件的软件工程.ppt_第4页
基于构件的软件工程.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章 基于构件的软件工程,基本概念 基于构件的开发模型 CBSE过程 基于构件的开发 典型的构件模型 构件分类与检索,6.1 基本概念,基于构件的软件工程(component-based software engineering,CBSE)是强调使用可复用的软件“构件”来设计和构造基于计算机的系统的过程。,6.1 基本概念,通常来讲,构件是计算机软件中的一个模块化的构造块。 OMG 统一建模语言规范是这样定义构件的:“系统中模块化的、可部署的和可替换的部件,该部件封装了实现并暴露一系列接口。”,6.1 基本概念,在面向对象软件工程环境中,构件包括一组协作的类 。 在进行构件级设计时,需要对构件中的每个类进行详细设计,包括属性、与实现相关的操作、所有与其他设计类相互通信协作的接口(消息)。,6.1 基本概念,在传统软件工程环境中,一个构件就是程序的一个功能要素。传统构件也称为模块。 通常,构件具有以下三个角色之一: (1) 控制构件:协调问题域中所有其他构件的调用; (2) 问题域构件:完成部分或全部用户的需求; (3) 基础设施构件:负责完成问题域中所需相关处理的功能。,Brown和Wallnau给出了如下可能的构件描述: (1)构件一个系统中有价值的、几乎独立的、并可替换的部分,它在很好定义的体系结构中完成某一确定的功能。 (2)运行时软件构件由一个或多个程序构成的动态绑定包,其中的程序可作为单元进行管理、并可通过在运行时发现的文档化接口来访问。 (3)软件构件仅具有契约性描述的、显示语境依赖的组装单元。 (4)业务构件某一“自治的”业务概念或业务过程的软件实现。,构件分类: 纵向: 系统级构件 应用构件 横向: 界面构件(控件) 业务构件 数据访问构件,除了关于软件构件的这些描述,也可以基于软件构件在CBSE过程中的使用来描述。 除了COTS构件,CBSE过程生产: (1)已认证的构件由软件工程师评估,以确保不仅功能而且性能、可靠性、可用性和其它质量因素均符合待构造的系统或产品的需求。 (2)适应的构件对不想要的或不希望的特征进行适应性修改(也称掩盖或包裹)。 (3)组装的构件被集成到体系结构风格中,并与能够有效地协同和管理构件的合适的基础设施互联。 (4)更新的构件当新版本的构件可用时,替换现存的构件。,描述构件接口的语言,模块接口语言MIL(Module interface language) 接口定义语言IDL(Interface definition language) 体系结构描述语言ADL(Architecture description language),接口定义语言IDL,IDL用于描述接口的一种高级符号语言,IDL不涉及任何接口的实现细节。 特点: 是一种规范语言,看上去很像C语言; 分离对象的接口和其实现; 剥离了编程语言和对象的依赖性; 提供了一套通用数据类型,并用这套数据类型来定义更为复杂的数据类型。,接口定义语言IDL,体系结构描述语言ADL,ADL是一种描述实际系统体系结构的形式语法; 构成元素: 构件 连接件 体系结构配置 比较有影响的ADL有C2、UniCon、MetaH、Aesop、SADL、Rapide、Wright等。,构件接口的分类,内部接口 应用系统接口 平台接口,构件接口的分类,6.2 基于构件的开发模型,从表面上看,CBSE似乎类似于传统软件工程或面向对象的软件工程。软件团队针对每一系统需求询问如下问题: 现有的商业成品构件(commercial off-the-shelf,COTS)是否能够实现该需求? 内部开发的可复用构件是否能够实现该需求? 可用构件的接口与待构造系统的体系结构是否相容? 团队可以试图修改或去除那些不能用COTS或自有构件实现的系统需求。如果不能修改或删除这些需求,则必须应用软件工程方法构造满足这些需求的新构件。,基于构件的开发模型,基于构件的开发模型,基于构件的开发模型具有许多螺旋模型的特点。它本质上是演进模型,需要以迭代方式构建软件。不同之处在于,基于构件开发模型采用预先打包的软件构件开发程序。,基于构件的开发模型,基于构件的开发模型中, 建模和构建活动开始于识别可选构件。这些构件有些设计成通用的软件模块,有些设计成面向对象的类或软件包。 不考虑构件的开发技术,基于构件的开发模型由以下步骤组成(采用演进方法): 对于该问题领域的基于构件的可用的产品进行研究和评估。 考虑构件集成的问题。 设计软件架构以容纳这些构件。 将构件集成到架构中。 进行充分的测试以保证功能正常。,基于构件的开发模型,存在的问题: 构件的信赖度一个拿不到源代码的构件如何是可信赖的呢? 构件认证谁来认证构件的质量? 自然特性预测如何预测构件合成的自然性质。 需求折衷在多个构件的特性中人们应该如何进行折衷?,6.3 CBSE过程,CBSE过程是这样描述的:不仅标识候选的构件,而且认证每个构件接口,适应性修改构件以消除体系结构中的不匹配,组装构件到选择的体系结构风格中以及当系统需求变化时更新构件。 基于构件的软件工程的过程模型强调领域工程与基于构件的开发并行进行。,领域工程,领域工程的目的是标识、构造、分类和传播一组软件构件,它们对某特定应用领域中现存的和未来的软件具有适用性。 总体目标是建立相应的机制,使得软件工程师在开发新系统或改造现存系统时可以共享这些构件复用它们。 领域工程包括三个主要活动分析、构造和传播。,领域分析过程,通常在面向对象软件工程的范畴内描述领域分析方法。领域分析过程中的步骤定义如下: 1. 定义待研究的领域。 2. 对从领域中抽取出的项进行分类。 3. 收集领域中有代表性的应用样本。 4. 分析样本中的每个应用,并定义分析类。 5. 开发类的分析模型。,虽然上面的步骤提供了领域分析的有用模型,但对决定哪些是候选的可复用软件构件并没有指导作用。,Hutchinson和HindleyHUT88提出了下面一组实际问题用来指导标识可复用的软件构件: 在将来的实现中是否需要构件的功能? 构件功能在领域中的公共性怎么样? 构件是否有硬件依赖性?如果具有依赖性,硬件在不同实现之间保持不变吗?或者,硬件的细节可以移到另一个构件中吗? 设计是否为以后的实现进行了足够的优化?,领域分析过程,能否将一个不可复用的构件参数化使其变成可复用的? 是否可以仅对构件进行少量修改,就能够在很多实现中复用? 通过修改进行复用是可行的吗? 不可复用的构件是否能够通过分解产生一组可复用的构件? 针对复用的构件分解有效吗?,领域分析过程,6.4 基于构件的开发,基于构件的开发(component-based development,CBD)是一个与领域活动并行的CBSE活动。 一旦建立了体系结构,就必须向其中增加构件,这些构件可从复用库中获得,或者根据专门需要而开发。,构件合格性检验、适应性修改与组装,当计划使用某一构件时,要进行基于构件开发的一系列活动: 1. 构件合格性检验:保证候选构件执行需要的功能,将完全适合系统的体系结构,并具有该应用所需的质量特性。 2. 构件适应性修改 3. 构件组装,1.构件合格性检验,在构件合格性检验中考虑的很多因素有: 应用编程接口(API); 构件所需的开发与集成工具; 运行时需求,包括资源使用(如内存和存储器)、时间或速度以及网络协议; 服务需求,包括操作系统接口及来自其他构件的支持; 安全特征,包括访问控制和身份验证协议; 嵌入式设计假定,包括特定的数值或非数值算法的使用; 异常处理。,2.构件适应性修改,实际上,即使已经对一个构件在应用体系结构内部的使用进行了合格性检验,也可能在刚才提到的一个或多个地方发生冲突。为了避免这些冲突,经常使用一种称为构件包装(component wrapping)的适应性修改技术: 白盒包装技术:检查构件的内部处理细节,并进行代码级的修改来消除任何冲突。 灰盒包装技术:当构件库提供了能够消除或掩盖冲突的构件扩展语言或API时, 应用灰盒包装技术。 黑盒包装技术:需要在构件接口中引入前处理、后处理以消除或掩盖冲突。,3.构件组装,构件组装任务将经过合格性检验的、适应性修改的、及开发的构件组装到为应用建立的体系结构中。 为完成这项任务,必须建立一个基础设施以将构件绑定到一个运行系统中。 该基础设施(通常是专门的构件库)提供了构件协作的模型和使构件能够相互协作并完成共同任务的特定服务。,3.构件组装,完成构件组装所需要的体系结构成分:数据交换模型、自动化、结构化存储、底层对象模型。 数据交换模型 对所有的可复用构件应该定义使用户及应用间能够交互和传递数据的机制(例如,拖和放,剪切和粘贴)。,3.构件组装,自动化 应实现多种工具、宏结构和脚本以辅助可复用构件之间的交互。 结构化存储 应将包含在“复合文档”中的异质数据(例如,图形数据、声音视频、文本和数值数据)组织在一起,并作为一个单独的数据结构进行存取,而不是作为一组分离的文件。,3.构件组装,底层对象模型 对象模型保证在不同平台上用不同程序设计语言开发的构件可以互操作,也就是说,对象必须具有跨网络进行通信的能力。,6.5 典型的构件模型,由于复用和CBSE对软件产业的巨大影响,一些大公司及产业联盟已经提出了一些构件软件标准: 1. OMG/CORBA 2. Microsoft COM/DCOM 3. Sun JavaBean构件,1. OMG/CORBA 对象管理组织发布了公共对象请求代理体系结构(OMG/CORBA),一个对象请求代理(object request broker,ORB)提供了多种服务使得可复用构件(对象)可以与其它构件通信,而不管这些构件在系统中的位置如何。,2. Microsoft COM/DCOM 微软开发了构件对象模型(COM),此模型提供了运行于Windows操作系统下的单个应用使用不同厂商生产的构件的规格说明。 COM包含两个元素:COM接口(实现为COM对象),注册和在COM接口间传递消息的一组机制。,3. Sun JavaBean构件 JavaBean构件系统是一个可移植的、平台独立的使用Java程序设计语言开发的CBSE基础设施。JavaBean构件系统包括一组工具,称为Bean开发工具箱(Bean Development Kit,BDK),它允许开发者做以下工作: (1)分析现存的Bean(构件)如何工作; (2)定制它们的行为和外观; (3)建立协作及通信机制; (4)开发在特定应用中使用的定制Bean; (5)测试和评估Bean的行为。, 公共对象请求代理(CORBA), CORBA是对象管理组织OMG制定的工业标准。 主要目标是提供一种机制,使对象可以透明地发出请求和获得应答,从而建立起一个异质的分布式应用环境。 1991年,OMG基于面向对象技术,给出了以对象请求代理(ORB)为中心的对象管理结构。, 对象管理结构,例子 : Grid Object,客户 是 希望在对象上执行操作的实体 对象实现 是 实现对象的代码和数据 ORB 负责 组成请求的数据的通讯 查找请求所需对象实现的机制 准备接收请求的对象实现,客户如何通过ORB向对象实现发出请求,对象请求代理的结构,客户利用存根或者DII发出请求,对象实现通过Skeleton或者动态骨架接口(DSI)接收请求, CORBA技术规范, 接口定义语言(IDL) 接口池(IR) 动态调用接口(DII) 对象适配器(OA), CORBA技术规范, 接口定义语言 CORBA利用IDL统一地描述服务器对象(向调用者提供服务的对象)的接口。IDL本身也是面向对象的。它虽然不是编程语言,但它为客户对象(发出服务请求的对象)提供了语言的独立性,因为客户对象只需了解服务器对象的IDL接口,不必知道其编程语言。 IDL语言是CORBA规范中定义的一种中性语言,它用来描述对象的接口,而不涉及对象的具体实现。 在CORBA中定义了IDL语言到C、C+、SmallTalk和Java语言的映射。, CORBA技术规范,interface Grid readonly attribute short height; readonly attribute short width; void set(in short row, in short col, in long value); long get(in short row, in short col); ;,CORBA中主要构件的接口全部由IDL进行定义 例如:ORB接口、Stub、Skeleton, 对象适配器更主要的用途是定义应用对象! 例子:grid.idl, CORBA技术规范, 接口池 CORBA的接口池包括了分布计算环境中所有可用的服务器对象的接口表示。它使动态搜索可用服务器的接口、动态构造请求及参数成为可能。 接口池提供持久对象的服务 这些对象在运行时以可用的形式表示IDL信息 ORB可以使用接口池信息执行请求, 例如,如果程序在编译时遇到接口未知的对象,那么使用接口池中的信息可以: 确定对象的有效操作 对它发出调用, CORBA技术规范, 动态调用接口 CORBA的动态调用接口提供了一些标准函数以供客户对象动态创建请求、动态构造请求参数。客户对象将动态调用接口与接口池配合使用可实现服务器对象接口的动态搜索、请求及参数的动态构造与动态发送。 当然,只要客户对象在编译之前能够确定服务器对象的IDL接口,CORBA也允许客户对象使用静态调用机制。显然,静态机制的灵活性虽不及动态机制,但执行效率却胜过动态机制。, CORBA技术规范, 对象适配器 在CORBA中,对象适配器用于屏蔽ORB内核的实现细节,为服务器对象的实现者提供抽象接口,以便他们使用ORB内部的某些功能。这些功能包括服务器对象的登录与激活、客户请求的认证等。, 引入中间件作为事务代理,完成客户机向服务对象方(Server)提出的业务请求。 实现客户与服务对象的完全分开,客户不需要了解服务对象的实现过程以及具体位置。 提供软总线机制,使得在任何环境下、采用任何语言开发的软件只要符合接口规范的定义,均能够集成到分布式系统中。 CORBA规定采用面向对象的软件实现方法开发应用系统,实现对象内部细节的完整封装,保留对象方法的对外接口定义。, CORBA技术规范特点,构件工程,CBSE过程鼓励使用现存的软件构件。然而,有时必须开发新构件,也就是说,必须开发新构件并与现有的COTS构件及自有构件集成。 因为这些新构件将成为自有的可复用构件库的新成员,应按照复用的要求来开发。,复用的分析与设计,当设计者开始创建新的构件时应该考虑为了复用的设计(DFR)。 DFR需要软件工程师应用一致的设计概念和原则,但是,也必须考虑应用领域的特征。,Binder对构成可复用的设计基础的一系列关键问题给出了如下建议: 标准数据。应该研究应用领域,并标识出标准的全局数据结构(例如,文件结构或完整的数据库),然后就可以对所有设计构件如何使用这些标准数据结构进行描述。 标准接口协议。应该建立三个层次的接口协议:模块内接口的本质、外部的技术(非人)接口的设计及人机界面。 程序模板。结构模型(是一种体系结构风格)可以作为新程序体系结构设计的模板。,6.6 构件分类与检索,描述可复用构件 复用环境,描述可复用构件,可以用很多方式来描述可复用软件构件, 但是理想的描述包括TracZ提出的3C 模型概念(concept)、内容(content)和语境(context)。 软件构件的概念是“构件做什么的描述”WHI95。对构件的接口进行完整地描述,并且对语义进行标识以带有前置条件及后置条件的上下文来表示。概念将传达构件的意图。 构件的内容描述概念如何被实现。在本质上,内容是对一般用户隐蔽的信息,只有那些想要修改或测试该构件的人才需要了解。 语境将可复用软件构件放到其应用领域中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论