《组件化软件工程课件.ppt》由会员分享,可在线阅读,更多相关《组件化软件工程课件.ppt(59页珍藏版)》请在三一办公上搜索。
1、组件化软件工程,26、我们像鹰一样,生来就是自由的,但是为了生存,我们不得不为自己编织一个笼子,然后把自己关在里面。博莱索27、法律如果不讲道理,即使延续时间再长,也还是没有制约力的。爱科克28、好法律是由坏风俗创造出来的。马克罗维乌斯29、在一切能够接受法律支配的人类的状态中,哪里没有法律,那里就没有自由。洛克30、风俗可以造就法律,也可以废除法律。塞约翰逊,组件化软件工程组件化软件工程26、我们像鹰一样,生来就是自由的,但是为了生存,我们不得不为自己编织一个笼子,然后把自己关在里面。博莱索27、法律如果不讲道理,即使延续时间再长,也还是没有制约力的。爱科克28、好法律是由坏风俗创造出来的。
2、马克罗维乌斯29、在一切能够接受法律支配的人类的状态中,哪里没有法律,那里就没有自由。洛克30、风俗可以造就法律,也可以废除法律。塞约翰逊高级软件工程构件化软件开发陈宁江2008.052软件复用(reuse)的概念软件复用:利用已有的软件来建造新的软件系统的过程,将可复用构件作为新系统的构建模块并以可控的方式和过程对构件进行组合与修改软件复用的发展子程序(Subroutine)(A.Turing,20世纪40年代)复用 代码、函数、算法等“软件工厂”(Mcllroy,1968)软件库、类库构件3,6,复用的一般过程,软件组织了解和评估实施复用的能力,分析复用所带来的收益和所付出的代价,分析已有
3、软件,寻找、评价和选择可复用的软件构件,了解防碍复用的问题,减少复用的风险和代价,确定项目复用过程中各个参与者的职责,扩展或者整合可复用构件库,建立系统性的复用过程,标识某一领域多个应用的共同需求,根据复用需要调整组织结构和软件开发过程,建立制度性的复用,7,复用的层次,8,基于构件的软件开发目标,长期以来的软件开发状况多数软件都是针对某个具体的应用系统从头进行开发的导致:出现了大量的同类软件重复开发,造成大量人力、财力的浪费,而且软件的质量也不高对比:汽车工业的生产模式在已有的部件基础上通过组装进行生产:有专门的部件生产工厂,汽车设计者在设计中选择市场上已有的合适的部件避免了大量的重复劳动,
4、提高了产品质量和生产效率,促进分工合作我们的目标:将制造业中的组装式生产模式引入到软件开发中,9,构件(Component)的典型定义,Pressman:构件是某系统中有价值的、几乎独立的并可替换的一个部分,它在良好定义的体系结构语境内满足某清晰的功能Brown:构件是一个独立发布的功能部分,可以通过其接口访问它的服务“计算机科学技术百科全书”:软件构件是软件系统中具有相对独立功能,可以明确标识,接口由规约指定,与语境有明显依赖关系,可独立部署,且多由第三方提供的可组装软件实体;软件构件须承载有用的功能,并遵循某种构件模型;可复用构件是指具有可复用价值的构件,10,构件(Component)的
5、概念,构件是:已被封装的、具有良好接口定义的软件包可以被独立地开发和部署,可由第三方来组合能够与其它构件组合具有清晰的接口和文档,并定义了复用的情景注:构件不是对象,也不一定使用对象技术实现。从粒度上,构件一般都比对象类大,面向对象的构件一般实现为一组类的集合,11,构件的要素,规格说明:建立在接口概念之上,作为服务提供方与客户方之间的契约一个或多个实现受约束的构件标准包装方法部署方法,12,3C构件模型:一个指导性模型,构件由三个不同方面的描述组成概念(concept):关于“构件做什么”的抽象描述,可以通过概念去理解构件的功能。概念包括接口规约和语义描述(和每个操作相关联,一般表示为前后置
6、谓词形式)内容(content):概念的具体实现,描述构件如何完成概念所刻画的功能情境(context):描述构件和外围环境在概念级和内容级的关系,刻画构件的应用环境,为构件的选用和适应性修改提供指导,13,常用的构件标准,CORBA(Common Object Request Broker Architecture)OMG发布的构件标准核心是ORB(Object Request Broker),定义了异构环境下对象透明地发送请求和接收响应的基本机制COM+微软开发的一个构件对象模型,提供了在运行于Windows操作系统之上的单个应用中使用不同厂商生产的对象的规约 EJB:基于Java的构件提
7、供了让客户端使用远程的分布式对象的框架EJB规约规定了EJB构件如何与EJB容器进行行交互,14,构件化软件开发(CBSD),15,构件化软件开发的比较,Analysis,Component Acquisition,Component Oriented Design,Component Composition,Integration Test,System Test,构件化软件开发过程,Implementation,Unit Test,传统的软件过程,Analysis,Design,Integration Test,System Test,16,基于构件的软件开发过程,17,领域工程步骤,领域
8、分析建立领域特定的基准体系结构模型标识候选构件泛化(generalization)和可变性(variability)分析重建构件构件的测试构件的包装构件入库,18,应用系统工程的步骤,建立应用系统的体系结构模型寻找候选构件评价和选择合适的构件构件的修改(modify)和特化(specialize)开发未被复用的部分构件的组装集成测试评价被复用的构件,并推荐可能的新构件,19,基于构件的软件开发中的关键活动,(1)查找构件发掘待开发应用中的核心构件,用文档描述构件;通过领域分析、自行开发、逆向工程或者商业购买等途径来获得所需构件;创建构件库(2)选择构件从构件库中挑选合适的构件。选择过程通常与构
9、件库的检索技术及算法相关(3)适配构件改编或者定制化所挑选的构件来满足新的应用需求,使其能与其它构件或者底层框架集成,20,基于构件的软件开发中的关键活动(续),(4)创建构件所选择的构件不能完全满足应用需求,这时必须开发和创建新的构件(5)组合构件组装和集成构件的过程。工作量取决于构件的性质(6)替换构件替换构件的过程与产品的维护有关,构件升级及其版本管理,21,构件化开发中值得注意的问题,技术方面构件接口应该清晰、标准开发过程模型:以接口为中心;独立于编程语言;组合性;分离性集成能力 商业方面构件市场和标准 市场的范围、规模和标准化,22,Software Industry In the
10、Real World,Flashline(flashline)Javabeans/COM/ActiveXVbxtras(vbxtras)Visual BasicComponent Source(componentsource)Java/COM/C+/Delphi/VisualStudio,23,24,基于构件的开发活动(1):构件选择,在构件库中浏览和检索构件 检索的效率检索的精确性构件存储和分类的标准构件的存在形式:源代码,可执行代码使用范围:在单个项目中使用,整个产品线中使用,多个产品线使用查询表示方法:功能说明,关键字列表,设计模式,行为样例构件表示方法:功能说明,源代码,执行代码,关键
11、字检索目标:精确性,功能近似性,结构近似性匹配标准:正确性,关键字的相等性和包容性,自然语言分析,25,构件的管理,构件的分类描述对构件库中的构件进行合理的分类和组织,帮助软件开发人员方便地找到所需要的构件大多数的研究都建议使用图书馆科学索引方法进行构件分类构件库管理系统:主要用于构件的储存、检索、浏览和管理,26,常用的构件分类模式-1,枚举分类(Enumerated Classification)将构件组织成分类层次结构,构件库中的构件按某些性质分成若干大类,每个大类又分成若干较小的类,经过若干次分解,形成构件分类的层次结构,实际的构件位于层次结构的最低层,其它层次则表示构件的类或子类枚举
12、分类模式的分层结构易于理解和检索,但是,在建立层次结构之前,必须进行领域分析,寻找合适的供分类的性质。属性值分类(Attribute_Value Classification)为所有构件定义一组属性,每个构件都具有一组属性值,开发人员通过指定一组属性值对构件库检索,27,常用的构件分类模式-2,刻面分类(Faceted Classification)根据一组刻面对构件分类,每个刻面从不同的侧面对构件库中的构件进行分类,并根据重要性设置刻面的优先级每个刻面由一组术语(term)构成,称之为术语空间(term space),这些术语通常是描述性的关键词检索:用户通过指定一组刻面的术语值寻找匹配的构
13、件使用同义词词典(thesaurus)解决用户指定的术语值与库中构件所对应的术语值之间的不一致问题评价:具有较好的灵活性,易于加入新的刻面值,比枚举分类模式易于扩展和修改,28,构件库管理系统的主要功能,构件的分类存储(即添加构件):根据构件库的分类模型将入库的构件储存在构件库中构件检索:从构件库中检索出满足用户要求或接近用户要求的构件.构件库浏览:浏览库中的全部或部分构件删除构件:将不再使用的构件从构件库中删去构件使用情况评价:根据用户使用和检索构件的反馈意见对构件作出评价,为进一步的改进提供依据,29,构件的描述和检索,构件库管理系统的两个关键技术,直接影响到构件库检索的查准率(preci
14、sion)、查全率(recall)和效率(efficient)常用的构件检索方法规约匹配:基于有序的谓词逻辑的匹配,通过谓词演算公式进行精确匹配,通过逻辑连接符和逻辑量词进行部分精确匹配特征(signature)匹配:通过接口的定义进行匹配,适用于函数之类的构件术语轮廓匹配:基于构件编目描述语言的匹配,将每一个构件的编目描述作为该构件的一个特征矢量,通过测算矢量的距离进行匹配行为采样:基于构件测试的匹配,根据测试结果相同的概率进行匹配,30,基于构件的开发方法(2)构件适配(Adaptation),构件适配指:是一般化化的构件建立面向特定应用的构件方法:部分实现。构件只实现一部分行为,而其它部
15、分仅提供接口例如,C+类的抽象方法重载。构件为其全部行为提供了缺省的实现,用户在具体应用时可以重载这些行为插件。通过编写插件的形式为构件添加功能。插件在构件中注册其服务,构件在需要使用该服务时调用插件,31,基于构件的开发方法(3)构件的创建,创建构件时必须强调广泛性、通用性,而不应考虑那些仅在一些特定场合有用的特性构件创建的技术思路扩展。扩展构件的范围,延伸其需求,以便于以后的应用收缩。缩小构件的范围和限制它们的功能,为以后的构件延伸建立基础。(如:继承机制)隔离。把构件与系统特定的部分(如操作系统或者硬件)分离开来,以实现构件的独立性可配置性。创建一些较小的构件,然后通过配置以不同的方式组
16、合这些构件以适应不同的应用需求构件创建完成之后,必须对其进行认证,32,建造可复用构件,建造构件的目的是为了以后复用构件,即为复用而建造构件在建造构件时仍应遵循抽象、逐步求精、信息隐蔽、功能独立、结构化程序设计等思想和原则由于面向对象方法具有封装性、继承等特点,能有力地支持复用,所以应尽可能考虑采用面向对象方法,33,对可复用构件的要求,构件的设计应具有较高的通用程度构件应易于调整构件应易于组装构件必须具有可检索性构件必须经过充分的测试,34,创建领域构件的设计框架,除应遵循已有的设计概念和原则外,还必须考虑应用领域的特征,例如:标准数据:应该研究应用领域,并标识出标准的全局数据结构(如文件结
17、构或完整的数据库)标准接口协议:应该建立三个层次的接口协议:构件内(intramodular)接口、构件外接口以及人机接口程序模板:程序的结构模型可以作为新程序的体系结构设计的模板,35,可变性分析,构件应具有较强的通用性和可变性为了满足不同的复用需求,需要在构件复用时可能发生变化的一个或多个位置上标识变化点(variation point),同时为变化点附加一个或多个变体(variant)例如Account构件的帐号编码规则以及透支规则在不同的国家可能不一样,36,构件系统中的门面和变体,37,可变性机制,继承:在变化点上创建指定抽象类型或抽象类的子类型或子类。扩展和扩展点:可以在用况和对象
18、构件中的变化点(或扩展点)上附加变体(或扩展)参数化:用于模板、框架和宏的类型和类适用于变体较小时(经常是一个数值、短语或表达式),38,构件质量保证(qualification),目的:确保获得的构件可以完成所需的功能并能被集成在系统中与系统的其它构件正确交互主要依据是构件的接口描述和相关的规格说明,但这些信息往往还不足以确保构件能成功地集成到系统中对于外部提供的成品构件(COTS)可通过运行构件测试版进行鉴定,39,构件质量保证需考虑的因素,应用编程接口(API)该构件所需的开发和集成工具运行时需求,包括使用的资源(如内存或存储器)、时间或速度以及网络协议服务需求,包括操作系统接口和来自其
19、他构件的支持安全特征,包括访问控制和身份验证协议嵌入式设计假定,包括特定的数值或非数值算法的使用异常处理,40,构件质量的保证措施,41,基于构件的开发方法(4)构件的组合,构件组装将经过鉴定和特化后的构件组装成应用系统提倡使用构件组装工具来组装应用系统(能检查接口匹配中的错误,实现组装的自动化或半自动化)构件特化根据应用系统的具体情况对其进行特化,对变化点配置特定的变体,必要时要自行开发变体如果所选的构件不能完全满足应用系统的功能需求,还需对构件作适当的修改如果所选的构件未按构件标准开发(如遗产系统中抽取的构件)时,还需按某种构件标准对其进行包装,42,构件组合的方法,构件的结构构件组合的主
20、要方法,确切匹配 额外服务,修改服务 补充服务,粘合代码,43,构件组合的中介,直接组合。构件通过直接交互的方式来构建应用构件必须了解其它构件的存在及其所能提供的服务,并直接调用这些服务直接组合导致构件接口之间的强耦合基于中间件的组合中间件通过底层的基础设施来容纳和集成构件构件之间并不直接互相调用,而是通过中间件框架所提供的接口来调用,44,构件组合要注意的问题,构件方面的问题构件的分类和文档化技术构件测试与认证技术构件的版本和升级问题集成过程方面的问题构件集成对软件开发过程模型可能产生影响在分析待开发系统前就应熟悉已经存在的构件,并根据构件的有关信息将系统分割为构件维护构件的困难,45,构件
21、组合要注意的问题(续),质量方面的问题如何保证构件及其组合结果系统的可靠性相对于从头开发并经过优化的系统,基于构件系统的性能可能有所下降使用构件组合系统的安全性,46,应用系统工程,任务:通过组装可复用构件得到应用系统构件是组成应用系统的基本单元注重体系结构和构件接口的分析和设计,忽略构件内部实现的设计,47,关注接口的设计,接口是构件行为的描述机制,并提供了对其服务的访问供应接口(Provided interface):描述构件所提供的服务,可以被其它构件访问请求接口(requived interface):请求接口描述构件为完成其功能(服务)需请求其它构件为其提供的服务一个接口可以有多种实
22、现,并且对使用者隐蔽接口描述是构件使用者能依赖的所有信息,因此构件接口描述的表达能力和完整性是CBSD方法主要关注的问题之一,48,基于构件的体系结构,基于构件的应用系统体系结构描述了组成应用系统的构件,构件之间的组织结构、交互、约束和关系对系统的组成、结构以及系统如何工作的较为宏观的描述如果在领域工程中已开发了领域基准体系结构(reference architecture),则可以通过对基准体系结构的剪裁和/或扩充获得应用系统的体系结构,49,基于构件的体系结构层次,逻辑体系结构以接口形式对每组服务进行描述,并描述那些包怎样交互来满足通常的用户使用场景展示了系统设计的蓝图,可用于验证系统是否
23、提供了适当的功能,并能在系统功能需求变化时方便地改变系统的设计物理体系结构描述系统的物理设计,包括硬件及其拓扑结构、网络和通信协议、基础设施(如运行平台、中间件、数据库管理系统等),以及软件系统的部署展示了系统的实现构架,有助于理解系统的许多非功能属性,如性能、吞吐量、服务的可用性等,50,基于构件的应用系统开发方法,Rational统一过程(RUP)一个关于软件开发的广泛的过程框架,覆盖了整个软件生命周期使用UML进行分析和设计建模,鼓励使用CBSD方法Sterling Software的Enterprise-CBD方法鼓励使用UML的扩展形式把构件的规格说明和实现分离允许制作技术中立的规格
24、说明,然后再使用不同的实现技术来实现规格说明共同点:关注构件库中的构件、接口的设计和基于构件构架的应用程序组装,51,COTS的概念,商品构件COTS(Commercial Off The Shelf):指可根据商品价目表向制造商或供应商购买的现成商品,用户能在不加任何修改的情况下直接使用 在软件领域中,COTS是指具有如下特征的可运行的软件产品:可以面向公众销售、出租或者授予许可;购买者、租赁者和获得许可者没有存取源代码的权利,只能将COTS作为黑盒使用;由创建它的供应商提供,一般情况下由供应商负责维护和升级;在市场上可以有多种版本的拷贝可用。使用COTS的主要优点在于:价格;产品质量;功能
25、;上市时间;维护代价,52,基于COTS的开发与基于构件的开发,基于COTS的开发方法与CBD都是组合式的软件开发方法,前者可以看作后者的特殊情形 二者的区别,53,Java世界中的构件化开发,JavaBeanEJBEJB 2.1EJB 3.0Java EE(J2EE),54,DB&EISResources,Browser,Stand-aloneApplication,Web Components,EJBs,Web Components,EJBs,EJB,EJB Server,EJB Client,Standalone EJB client talking to EJB server,web-
26、tier EJB client talking to EJB server,EJB clients talking to EJB server,55,Client,Object Reference,Stub,Servant,Skeleton,Server,network,Client and server are collocated in different address space.,56,EJB Architecture,57,EJB Architecture,58,EJB container/server,66、节制使快乐增加并使享受加强。德谟克利特67、今天应做的事没有做,明天再早也是耽误了。裴斯泰洛齐68、决定一个人的一生,以及整个命运的,只是一瞬之间。歌德69、懒人无法享受休息之乐。拉布克70、浪费时间是一桩大罪过。卢梭,