您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第6章基于构件的软件工程
第6章基于构件的软件工程基本概念基于构件的开发模型CBSE过程基于构件的开发典型的构件模型构件分类与检索6.1基本概念•基于构件的软件工程(component-basedsoftwareengineering,CBSE)是强调使用可复用的软件“构件”来设计和构造基于计算机的系统的过程。6.1基本概念•通常来讲,构件是计算机软件中的一个模块化的构造块。•OMG统一建模语言规范是这样定义构件的:“系统中模块化的、可部署的和可替换的部件,该部件封装了实现并暴露一系列接口。”6.1基本概念•在面向对象软件工程环境中,构件包括一组协作的类。•在进行构件级设计时,需要对构件中的每个类进行详细设计,包括属性、与实现相关的操作、所有与其他设计类相互通信协作的接口(消息)。PrintJobcomputeJobinitiateJobPrintJob6.1基本概念•在传统软件工程环境中,一个构件就是程序的一个功能要素。传统构件也称为模块。•通常,构件具有以下三个角色之一:(1)控制构件:协调问题域中所有其他构件的调用;(2)问题域构件:完成部分或全部用户的需求;(3)基础设施构件:负责完成问题域中所需相关处理的功能。JobmanagementsystemReadprintjobdataSelectjobmgmtfunctionBrown和Wallnau给出了如下可能的构件描述:(1)构件——一个系统中有价值的、几乎独立的、并可替换的部分,它在很好定义的体系结构中完成某一确定的功能。(2)运行时软件构件——由一个或多个程序构成的动态绑定包,其中的程序可作为单元进行管理、并可通过在运行时发现的文档化接口来访问。(3)软件构件——仅具有契约性描述的、显示语境依赖的组装单元。(4)业务构件——某一“自治的”业务概念或业务过程的软件实现。构件分类:纵向:系统级构件应用构件横向:界面构件(控件)业务构件数据访问构件除了关于软件构件的这些描述,也可以基于软件构件在CBSE过程中的使用来描述。除了COTS构件,CBSE过程生产:(1)已认证的构件——由软件工程师评估,以确保不仅功能而且性能、可靠性、可用性和其它质量因素均符合待构造的系统或产品的需求。(2)适应的构件——对不想要的或不希望的特征进行适应性修改(也称掩盖或包裹)。(3)组装的构件——被集成到体系结构风格中,并与能够有效地协同和管理构件的合适的基础设施互联。(4)更新的构件——当新版本的构件可用时,替换现存的构件。描述构件接口的语言•模块接口语言MIL(Moduleinterfacelanguage)•接口定义语言IDL(Interfacedefinitionlanguage)•体系结构描述语言ADL(Architecturedescriptionlanguage)接口定义语言IDL•IDL用于描述接口的一种高级符号语言,IDL不涉及任何接口的实现细节。•特点:(1)是一种规范语言,看上去很像C语言;(2)分离对象的接口和其实现;(3)剥离了编程语言和对象的依赖性;(4)提供了一套通用数据类型,并用这套数据类型来定义更为复杂的数据类型。接口定义语言IDL体系结构描述语言ADL•ADL是一种描述实际系统体系结构的形式语法;•构成元素:构件连接件体系结构配置•比较有影响的ADL有C2、UniCon、MetaH、Aesop、SADL、Rapide、Wright等。构件接口的分类•内部接口•应用系统接口•平台接口构件接口的分类6.2基于构件的开发模型从表面上看,CBSE似乎类似于传统软件工程或面向对象的软件工程。软件团队针对每一系统需求询问如下问题:现有的商业成品构件(commercialoff-the-shelf,COTS)是否能够实现该需求?内部开发的可复用构件是否能够实现该需求?可用构件的接口与待构造系统的体系结构是否相容?团队可以试图修改或去除那些不能用COTS或自有构件实现的系统需求。如果不能修改或删除这些需求,则必须应用软件工程方法构造满足这些需求的新构件。基于构件的开发模型基于构件的开发模型基于构件的开发模型具有许多螺旋模型的特点。它本质上是演进模型,需要以迭代方式构建软件。不同之处在于,基于构件开发模型采用预先打包的软件构件开发程序。基于构件的开发模型基于构件的开发模型中,建模和构建活动开始于识别可选构件。这些构件有些设计成通用的软件模块,有些设计成面向对象的类或软件包。不考虑构件的开发技术,基于构件的开发模型由以下步骤组成(采用演进方法):对于该问题领域的基于构件的可用的产品进行研究和评估。考虑构件集成的问题。设计软件架构以容纳这些构件。将构件集成到架构中。进行充分的测试以保证功能正常。基于构件的开发模型•存在的问题:构件的信赖度——一个拿不到源代码的构件如何是可信赖的呢?构件认证——谁来认证构件的质量?自然特性预测——如何预测构件合成的自然性质。需求折衷——在多个构件的特性中人们应该如何进行折衷?6.3CBSE过程•CBSE过程是这样描述的:不仅标识候选的构件,而且认证每个构件接口,适应性修改构件以消除体系结构中的不匹配,组装构件到选择的体系结构风格中以及当系统需求变化时更新构件。•基于构件的软件工程的过程模型强调领域工程与基于构件的开发并行进行。领域工程领域工程的目的是标识、构造、分类和传播一组软件构件,它们对某特定应用领域中现存的和未来的软件具有适用性。总体目标是建立相应的机制,使得软件工程师在开发新系统或改造现存系统时可以共享这些构件——复用它们。领域工程包括三个主要活动——分析、构造和传播。领域分析过程通常在面向对象软件工程的范畴内描述领域分析方法。领域分析过程中的步骤定义如下:1.定义待研究的领域。2.对从领域中抽取出的项进行分类。3.收集领域中有代表性的应用样本。4.分析样本中的每个应用,并定义分析类。5.开发类的分析模型。虽然上面的步骤提供了领域分析的有用模型,但对决定哪些是候选的可复用软件构件并没有指导作用。Hutchinson和Hindley[HUT88]提出了下面一组实际问题用来指导标识可复用的软件构件:在将来的实现中是否需要构件的功能?构件功能在领域中的公共性怎么样?构件是否有硬件依赖性?如果具有依赖性,硬件在不同实现之间保持不变吗?或者,硬件的细节可以移到另一个构件中吗?设计是否为以后的实现进行了足够的优化?领域分析过程能否将一个不可复用的构件参数化使其变成可复用的?是否可以仅对构件进行少量修改,就能够在很多实现中复用?通过修改进行复用是可行的吗?不可复用的构件是否能够通过分解产生一组可复用的构件?针对复用的构件分解有效吗?领域分析过程6.4基于构件的开发•基于构件的开发(component-baseddevelopment,CBD)是一个与领域活动并行的CBSE活动。•一旦建立了体系结构,就必须向其中增加构件,这些构件可从复用库中获得,或者根据专门需要而开发。构件合格性检验、适应性修改与组装当计划使用某一构件时,要进行基于构件开发的一系列活动:1.构件合格性检验:保证候选构件执行需要的功能,将完全适合系统的体系结构,并具有该应用所需的质量特性。2.构件适应性修改3.构件组装1.构件合格性检验在构件合格性检验中考虑的很多因素有:应用编程接口(API);构件所需的开发与集成工具;运行时需求,包括资源使用(如内存和存储器)、时间或速度以及网络协议;服务需求,包括操作系统接口及来自其他构件的支持;安全特征,包括访问控制和身份验证协议;嵌入式设计假定,包括特定的数值或非数值算法的使用;异常处理。2.构件适应性修改实际上,即使已经对一个构件在应用体系结构内部的使用进行了合格性检验,也可能在刚才提到的一个或多个地方发生冲突。为了避免这些冲突,经常使用一种称为构件包装(componentwrapping)的适应性修改技术:白盒包装技术:检查构件的内部处理细节,并进行代码级的修改来消除任何冲突。灰盒包装技术:当构件库提供了能够消除或掩盖冲突的构件扩展语言或API时,应用灰盒包装技术。黑盒包装技术:需要在构件接口中引入前处理、后处理以消除或掩盖冲突。3.构件组装构件组装任务将经过合格性检验的、适应性修改的、及开发的构件组装到为应用建立的体系结构中。为完成这项任务,必须建立一个基础设施以将构件绑定到一个运行系统中。该基础设施(通常是专门的构件库)提供了构件协作的模型和使构件能够相互协作并完成共同任务的特定服务。3.构件组装完成构件组装所需要的体系结构成分:数据交换模型、自动化、结构化存储、底层对象模型。数据交换模型对所有的可复用构件应该定义使用户及应用间能够交互和传递数据的机制(例如,拖和放,剪切和粘贴)。3.构件组装自动化应实现多种工具、宏结构和脚本以辅助可复用构件之间的交互。结构化存储应将包含在“复合文档”中的异质数据(例如,图形数据、声音/视频、文本和数值数据)组织在一起,并作为一个单独的数据结构进行存取,而不是作为一组分离的文件。3.构件组装底层对象模型对象模型保证在不同平台上用不同程序设计语言开发的构件可以互操作,也就是说,对象必须具有跨网络进行通信的能力。6.5典型的构件模型•由于复用和CBSE对软件产业的巨大影响,一些大公司及产业联盟已经提出了一些构件软件标准:1.OMG/CORBA2.MicrosoftCOM/DCOM3.SunJavaBean构件1.OMG/CORBA对象管理组织发布了公共对象请求代理体系结构(OMG/CORBA),一个对象请求代理(objectrequestbroker,ORB)提供了多种服务使得可复用构件(对象)可以与其它构件通信,而不管这些构件在系统中的位置如何。2.MicrosoftCOM/DCOM微软开发了构件对象模型(COM),此模型提供了运行于Windows操作系统下的单个应用使用不同厂商生产的构件的规格说明。COM包含两个元素:COM接口(实现为COM对象),注册和在COM接口间传递消息的一组机制。3.SunJavaBean构件JavaBean构件系统是一个可移植的、平台独立的使用Java程序设计语言开发的CBSE基础设施。JavaBean构件系统包括一组工具,称为Bean开发工具箱(BeanDevelopmentKit,BDK),它允许开发者做以下工作:(1)分析现存的Bean(构件)如何工作;(2)定制它们的行为和外观;(3)建立协作及通信机制;(4)开发在特定应用中使用的定制Bean;(5)测试和评估Bean的行为。◇公共对象请求代理(CORBA)◎CORBA是对象管理组织OMG制定的工业标准。◎主要目标是提供一种机制,使对象可以透明地发出请求和获得应答,从而建立起一个异质的分布式应用环境。◎1991年,OMG基于面向对象技术,给出了以对象请求代理(ORB)为中心的对象管理结构。◇对象管理结构应用对象通用服务对象请求代理(ObjectRequestBroker)对象服务(ObjectServices)例子:GridObject客户是希望在对象上执行操作的实体对象实现是实现对象的代码和数据ORB负责组成请求的数据的通讯查找请求所需对象实现的机制准备接收请求的对象实现客户如何通过ORB向对象实现发出请求对象请求代理的结构客户利用存根或者DII发出请求对象实现通过Skeleton或者动态骨架接口(DSI)接收请求◇CORBA技术规范◎接口定义语言(IDL)◎接口池(IR)◎动态调用接口(DII)◎对象适配器(OA)◇CORBA技术规范◎接口定义语言CORBA利用IDL统一地描述服务器对象(向调用者提供服务的对象)的接口。IDL本身也是面向对象的。它虽然不是编程语言,但它为客户对象(发出服务请求的对象)提供了语言的独立性,因为客户对象只需了解服务器对象的IDL接口,不必知道其编程语言。IDL语言是CORBA规范中定义的一种中性语言,它用来描述对象的接口,而不涉及对象的具体实现。在CORBA中定义了IDL语言到C、C++、Small
本文标题:第6章基于构件的软件工程
链接地址:https://www.777doc.com/doc-2197314 .html