组件化软件工程

上传人:jiups****uk12 文档编号:45424037 上传时间:2018-06-16 格式:PPT 页数:57 大小:517.50KB
返回 下载 相关 举报
组件化软件工程_第1页
第1页 / 共57页
组件化软件工程_第2页
第2页 / 共57页
组件化软件工程_第3页
第3页 / 共57页
组件化软件工程_第4页
第4页 / 共57页
组件化软件工程_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《组件化软件工程》由会员分享,可在线阅读,更多相关《组件化软件工程(57页珍藏版)》请在金锄头文库上搜索。

1、高级软件工程 构件化软件开发陈宁江2008.051软件复用(reuse)的概念o软件复用:利用已有的软件来建造新的软件系统 的过程,将可复用构件作为新系统的构建模块并 以可控的方式和过程对构件进行组合与修改o软件复用的发展n子程序(Subroutine) (A. Turing, 20世纪40年代 )n复用 代码、函数、算法等 n“软件工厂” ( Mcllroy , 1968 ) n软件库、类库n构件2软件复用的优点 o改善软件质量o减少工作量o快速构建系统原型o帮助程序员获得经验和知识 3影响软件复用成败的因素o管理和组织层面n项目管理者的支持和经验n面向复用特点的软件过程模型n专门的小组搜集

2、、维护和提供可复用的构件n程序员的心理因素o技术层面n支持复用的方法和技术还存在许多困难n需有一个组织和管理良好的构件库n改编已有的软件或者构件,提取可复用的构件o经济层面n开发可复用的构件的代价较高4复用的一般过程 复用评估复用启动复用实验复用扩展领域分析复用整合软件组织了解和评估实施复用的能力,分析复用所带来的收益 和所付出的代价分析已有软件,寻找、评价和选择可复 用的软件构件了解防碍复用的问题,减少复用的风险和 代价确定项目复用过程中各个 参与者的职责,扩展或者 整合可复用构件库 建立系统性的复用过程, 标识某一领域多个应用的 共同需求根据复用需要调整组织结 构和软件开发过程,建立 制度

3、性的复用5复用的层次 复用:应用 (COTS)复用:框架 (半完成应用)复用:微结构 (设计模式,协作关系)复用:类,方法,代码6基于构件的软件开发目标o长期以来的软件开发状况n多数软件都是针对某个具体的应用系统从头进行开发的n导致:出现了大量的同类软件重复开发,造成大量人力、财力 的浪费,而且软件的质量也不高o对比:汽车工业的生产模式n在已有的部件基础上通过组装进行生产:有专门的部件生产工 厂,汽车设计者在设计中选择市场上已有的合适的部件n避免了大量的重复劳动,提高了产品质量和生产效率,促进分 工合作o我们的目标:将制造业中的组装式生产模 式引入到软件开发中7构件(Component)的典型

4、定义oPressman:构件是某系统中有价值的、几乎独立的并 可替换的一个部分,它在良好定义的体系结构语境内 满足某清晰的功能oBrown:构件是一个独立发布的功能部分,可以通过 其接口访问它的服务o“计算机科学技术百科全书” :软件构件是软件系统中 具有相对独立功能,可以明确标识,接口由规约指定 ,与语境有明显依赖关系,可独立部署,且多由第三 方提供的可组装软件实体;软件构件须承载有用的功 能,并遵循某种构件模型;可复用构件是指具有可复 用价值的构件8构件(Component)的概念o构件是:n已被封装的、具有良好接口定义的软件包n可以被独立地开发和部署,可由第三方来组合n能够与其它构件组合

5、n具有清晰的接口和文档,并定义了复用的情景o注:构件不是对象,也不一定使用对象技术 实现。从粒度上,构件一般都比对象类大, 面向对象的构件一般实现为一组类的集合 9构件的要素o规格说明:建立在接口概念之上,作为服 务提供方与客户方之间的契约o一个或多个实现o受约束的构件标准o包装方法o部署方法103C构件模型:一个指导性模型o构件由三个不同方面的描述组成n概念(concept):关于“构件做什么”的抽象 描述,可以通过概念去理解构件的功能。 概念包括接口规约和语义描述(和每个操 作相关联,一般表示为前后置谓词形式) n内容(content):概念的具体实现,描述构 件如何完成概念所刻画的功能n

6、情境(context):描述构件和外围环境在概 念级和内容级的关系,刻画构件的应用环 境,为构件的选用和适应性修改提供指导11常用的构件标准oCORBA(Common Object Request Broker Architecture)nOMG发布的构件标准n核心是ORB(Object Request Broker),定义了异构环境下对象 透明地发送请求和接收响应的基本机制oCOM+n微软开发的一个构件对象模型,提供了在运行于Windows操 作系统之上的单个应用中使用不同厂商生产的对象的规约 oEJB:基于Java的构件n提供了让客户端使用远程的分布式对象的框架nEJB规约规定了EJB构件

7、如何与EJB容器进行行交互12构件化软件开发(CBSD)13构件化软件开发的比较AnalysisComponent AcquisitionComponent Oriented DesignComponent CompositionIntegration TestSystem Test构件化软件开发过程ImplementationUnit Test传统的软件过程AnalysisDesignIntegration TestSystem Test 14基于构件的软件开发过程15领域工程步骤o领域分析o建立领域特定的基准体系结构模型o标识候选构件o泛化(generalization)和可变性(vari

8、ability)分析o重建构件o构件的测试o构件的包装o构件入库16应用系统工程的步骤o建立应用系统的体系结构模型o寻找候选构件o评价和选择合适的构件o构件的修改(modify)和特化(specialize)o开发未被复用的部分o构件的组装o集成测试o评价被复用的构件,并推荐可能的新构件17基于构件的软件开发中的关键活动o(1)查找构件n发掘待开发应用中的核心构件,用文档描述构件;通 过领域分析、自行开发、逆向工程或者商业购买等途 径来获得所需构件;创建构件库o(2)选择构件n从构件库中挑选合适的构件。选择过程通常与构件库 的检索技术及算法相关o(3)适配构件n改编或者定制化所挑选的构件来满足

9、新的应用需求, 使其能与其它构件或者底层框架集成18基于构件的软件开发中的关键活动(续)o(4)创建构件n所选择的构件不能完全满足应用需求,这时必 须开发和创建新的构件o(5)组合构件n组装和集成构件的过程。工作量取决于构件的 性质o(6)替换构件n替换构件的过程与产品的维护有关,构件升级 及其版本管理19构件化开发中值得注意的问题o技术方面n构件接口应该清晰、标准n开发过程模型 : 以接口为中心 ;独立于编程 语言 ;组合性 ;分离性n集成能力 o商业方面n构件市场和标准 n市场的范围、规模和标准化 20Software Industry In the Real WorldFlashline

10、 () Javabeans/COM/ActiveXVbxtras () Visual BasicComponent Source () Java/COM/C+/Delphi/VisualStudio2122基于构件的开发活动 (1): 构件选择o在构件库中浏览和检索构件 n检索的效率n检索的精确性o构件存储和分类的标准n构件的存在形式:源代码,可执行代码n使用范围:在单个项目中使用,整个产品线中使用,多个产 品线使用n查询表示方法:功能说明,关键字列表,设计模式,行为样 例n构件表示方法:功能说明,源代码,执行代码,关键字n检索目标:精确性,功能近似性,结构近似性n匹配标准:正确性,关键字的相

11、等性和包容性,自然语言分 析23构件的管理o构件的分类描述n对构件库中的构件进行合理的分类和组织,帮助软件 开发人员方便地找到所需要的构件n大多数的研究都建议使用图书馆科学索引方法进行构 件分类o构件库管理系统:主要用于构件的储存、检索、浏览和 管理24常用的构件分类模式-1o枚举分类(Enumerated Classification)n将构件组织成分类层次结构,构件库中的构件按某些性 质分成若干大类,每个大类又分成若干较小的类,经过 若干次分解,形成构件分类的层次结构,实际的构件位 于层次结构的最低层,其它层次则表示构件的类或子类n枚举分类模式的分层结构易于理解和检索,但是,在建 立层次结

12、构之前,必须进行领域分析,寻找合适的供分 类的性质。o属性值分类(Attribute_Value Classification)n为所有构件定义一组属性,每个构件都具有一组属性值 ,开发人员通过指定一组属性值对构件库检索25常用的构件分类模式-2o刻面分类(Faceted Classification)n根据一组刻面对构件分类,每个刻面从不同的侧面对构件 库中的构件进行分类,并根据重要性设置刻面的优先级n每个刻面由一组术语(term)构成,称之为术语空间(term space),这些术语通常是描述性的关键词n检索:用户通过指定一组刻面的术语值寻找匹配的构件n使用同义词词典(thesaurus)

13、解决用户指定的术语值与库中 构件所对应的术语值之间的不一致问题n评价:具有较好的灵活性,易于加入新的刻面值,比枚举 分类模式易于扩展和修改26构件库管理系统的主要功能o构件的分类存储(即添加构件):根据构件库的分 类模型将入库的构件储存在构件库中o构件检索:从构件库中检索出满足用户要求或接 近用户要求的构件.o构件库浏览:浏览库中的全部或部分构件o删除构件:将不再使用的构件从构件库中删去o构件使用情况评价:根据用户使用和检索构件的 反馈意见对构件作出评价,为进一步的改进提供 依据27构件的描述和检索o构件库管理系统的两个关键技术,直接影响到 构件库检索的查准率(precision)、查全率 (

14、recall)和效率(efficient)o常用的构件检索方法n规约匹配:基于有序的谓词逻辑的匹配,通过谓词演算公式进行 精确匹配,通过逻辑连接符和逻辑量词进行部分精确匹配n特征(signature)匹配:通过接口的定义进行匹配,适用于函数之类 的构件n术语轮廓匹配:基于构件编目描述语言的匹配,将每一个构件的 编目描述作为该构件的一个特征矢量,通过测算矢量的距离进行 匹配n行为采样:基于构件测试的匹配,根据测试结果相同的概率进行 匹配 28基于构件的开发方法 (2) 构件适配(Adaptation)o构件适配指:是一般化化的构件建立面向特定应 用的构件o方法:n部分实现。构件只实现一部分行为,

15、而其它部分仅提 供接口o例如,C+类的抽象方法n重载。构件为其全部行为提供了缺省的实现,用户在 具体应用时可以重载这些行为n插件。通过编写插件的形式为构件添加功能。插件在 构件中注册其服务,构件在需要使用该服务时调用插 件29基于构件的开发方法 (3) 构件的创建 o创建构件时必须强调广泛性、通用性,而不应考 虑那些仅在一些特定场合有用的特性o构件创建的技术思路n扩展。扩展构件的范围,延伸其需求,以便于以后的 应用n收缩。缩小构件的范围和限制它们的功能,为以后的 构件延伸建立基础。(如:继承机制)n隔离。把构件与系统特定的部分(如操作系统或者硬 件)分离开来,以实现构件的独立性n可配置性。创建

16、一些较小的构件,然后通过配置以不 同的方式组合这些构件以适应不同的应用需求o构件创建完成之后,必须对其进行认证30建造可复用构件o建造构件的目的是为了以后复用构件,即 为复用而建造构件o在建造构件时仍应遵循抽象、逐步求精、 信息隐蔽、功能独立、结构化程序设计等 思想和原则o由于面向对象方法具有封装性、继承等特 点,能有力地支持复用,所以应尽可能考 虑采用面向对象方法31对可复用构件的要求o构件的设计应具有较高的通用程度o构件应易于调整o构件应易于组装o构件必须具有可检索性o构件必须经过充分的测试32创建领域构件的设计框架o除应遵循已有的设计概念和原则外, 还必须考虑应用领域的特征,例如:n标准数据:应该研究应用领域,并标识出标 准的全局数据结构(如文件结构或完整的数据 库)n标准接口协议:应该建立三个层次的接口协 议:构件内(intramodular)接口、构件外接口 以及人机接口n程序模板:程序的结构模型可以作为新程序 的体系结构设计的模板33

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号