第11章软件复用.ppt

上传人:本田雅阁 文档编号:2978941 上传时间:2019-06-17 格式:PPT 页数:27 大小:422.51KB
返回 下载 相关 举报
第11章软件复用.ppt_第1页
第1页 / 共27页
第11章软件复用.ppt_第2页
第2页 / 共27页
第11章软件复用.ppt_第3页
第3页 / 共27页
第11章软件复用.ppt_第4页
第4页 / 共27页
第11章软件复用.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《第11章软件复用.ppt》由会员分享,可在线阅读,更多相关《第11章软件复用.ppt(27页珍藏版)》请在三一文库上搜索。

1、第十章 软件复用,软件复用的基本概念 领域工程 基于构件的软件开发 面向对象与软件复用,软件复用的基本概念,软件复用的定义 1983年,Freeman对软件复用给出了这样的定义: “在构造新的软件系统过程中,对已存在的软件人工制品的使用技术。” 开发伴随复用,开发为了复用,领域 工程,领域分析,软件结构开发,可重用构件开发,领域模型,结构模型,可复用 构件库,基于构件 的开发,分析,构件选用,构件更新,构件工程,结构设计,测试,构件调整,构件组合,应用 软件,软件复用的重要性 软件复用的目的是能更快、更好、成本更低地生产软件产品。 实现软件复用应解决的问题 建立支持复用的基础设施(如构件库)。

2、 培训工程师和管理者使用复用软件。 采用促进软件复用的开发方法(如面向对象的开发方法)。 企业内部采取激励措施。,复用具有许多明显的优点,但目前应用不广泛的主要原因是: (1)技术因素 构件与应用系统之间的差异; 构件要达到一定的规模,才能支持有效的复用; 发现合用构件的困难; 基于复用的软件开发方法和软件过程需要一些新的理论、技术及支持环境。,软件复用的困难,(2)人的因素 喜欢自己创造而不喜欢使用别人的东西。,(4)教育因素 软件科学技术的教育与培训中,缺乏关于软件复用的内容,缺少专门教材和课程。,(3)管理因素 把复用构件和一般软件构件同等看待,把复用看作可有可无的事。,软件复用的粒度

3、源代码复用 在构件库检索到实用的构件,通过设置参数值,使之具有新的适应性。 由于构件经过充分的测试,其可靠性高。 但通用性、抽象性较差。 软件体系结构复用 可复用较大粒度的软件制品 因为难以抽象出简明的描述,存放体系结构的库不宜管理,应用程序生成器 用于对整个软件系统设计的复用。 自动化程度高 特定的应用程序生成器不宜构造 领域特定的软件体系结构的复用 指对特定领域中存在的一个公共体系结构及其构件的复用。要求对领域有透彻的理解才能进行领域建模。 特点: 复用程度高 前期投入大,领域工程,领域:是一组具有相似或相近软件需求的应用系统所覆盖的区域。 领域中的复用可分为:横向复用和纵向复用 横向复用

4、:指复用不同应用领域中的软件元素,如标准函数库。 纵向复用:指具有较多公共性的应用领域之间的软件复用。 纵向复用的领域工程实施的活动: 实施领域分析 开发可复用的构件 建立可复用构件库,实施领域分析 领域分析是在特定应用领域寻找最优复用的过程,它以公共对象、类、子集合和框架等形式进行标识,然后对它们进行分析和规约。 这个阶段的主要任务是获得“领域模型”,领域模型的需求描述为“领域需求”。 根据领域需求,领域工程师寻找领域的共性,进而确定软件的可复用构件。,领域分析(Domain Analysis)是对一类应用系统的共同应用领域进行系统化分析,以发现该领域的共同知识、需求及其应用系统的共同特征。

5、 领域分析又称作领域工程(Domain Engineering),是软件工程的发展与延伸。 领域分析是一项比系统分析更难的工作。领域分析方法可采用结构化方法和面向对象方法,而后者将成为主流。,领域分析的步骤:, 选择特定的领域 抽取具有最优复用的功能 标识该功能 建立领域分析模型 定义需求规约,得到由需求规约构件和子配置构成的领域模型,领域分析是对特定应用领域中共同的特征、知识、需求的标识、分析和规约。领域分析是特定领域内软件重用的基础,它的目标就是:发现和挖掘在特定领域内可以被复用的构件。领域分析活动中输入和输出如图所示:,领域分析,领域分析,输入信息 技术文献 已有应用 专家经验/建议 当

6、前与未来的需求,输出信息 领域语言 复用标准 分类方法 功能/行为模型,领域分析的输入和输出,领域分析不是针对某个特定的软件系统,而是针对一类软件系统的共同的特征、知识和需求。比需求分析更一般、更抽象、更广泛的特征。,开发可复用构件 构件应具有的特征 通用性 可变性 在建造构件时,应该提供构件的特化和调整机制。 易组装性 构件的组装分为同构件的组装和异构件的组装。 构件应有良好的封装性和良好的接口。 构件间应有松散的耦合度 应提供便于组装的机制,领域构件的设计框架 标准数据 标准接口协议 程序模板 几种流行的构件技术 COM(Component Object Model) 组件对象模型技术 C

7、OM是Microsoft公司开发的一种构件对象模型,它提供了使用不同厂商生产的对象的规约。任何人都可以按此标准独立地开发组件和增值组件,或由若干组件组建集成软件。,几种流行的构件技术 CORBA(Common Object Request Broker Achitecture)公共对象请求代理体系结构 CORBA是对象管理组织于1991年发布的一种基于分布对象技术的公共对象请求代理体系结构,其目的是在分布式环境下,建立一个基于对象技术的体系结构和一组规范,实现应用的集成,使组件在异构环境中可以复用、移植和互操作。 OpenDoc开放式文档接口 OpenDoc是IBM、Apple、Novell等

8、公司推出的关于复合文档和构件软件的标准。,构件库,构件库(Component Library)用于对可复用构件进行存储和管理。它是支持软件复用的必要设施。构件库必须有大量的可复用构件。 构件库系统应提供的主要功能:构件的存储、管理、检索以及库的浏览与维护等。 关键是支持使用者高效而准确地发现所需的可复用构件。相关的主要技术是分类方法和检索方法。 支持方便的、友好的用户管理和使用界面。,构件分类,构件检索,涉及两个基本问题:,大多数的构件分类模式可以归纳为以下三种类型: (1)枚举分类 通过定义一个层次结构来对构件进行分类。构件库中的可复用构件按照某种标准被分成了若干个大类,而每个大类中的构件再

9、被划分成若干个小类,依此类推,这样就形成了一个构件分类的层次结构,,枚举分类的层次结构,构件的分类,(2)刻面分类 一个刻面描述构件某一个方面的特征。刻面分类则是从不同的侧面对构件进行分类,每一种分类方式称为一个刻面。不同的刻面根据其重要性可以设置不同的优先级。,对构件的每个刻面赋予相应的值,用以描述该构件。刻面分类具有较好的灵活性,易于加入新的刻面值,因此刻面分类比枚举分类更易于扩展和修改。 该方法首先是为构件库中的所有构件定义一组属性,并赋予相应的属性值。开发人员通过指定一组属性值在构件库中对构件进行检索。,刻面分类法(Faceted Classification): 支持多重观点对构件进

10、行分类,例如从构件的应用领域、构件所描述的对象、构件的观点和编程语言等不同的方式来分类。 每一种分类方式称为一个刻面。 每个刻面把构件集合划分为一个子集,各刻面所划分的子集形成一些较小的交集。 一个构件对每个刻面有一个刻面值,例如: 应用领域 = 计算机绘图 对象 = 椭圆 功能 彩色填充, 编程语言 = C+,检索一个构件时,给出一组刻面值,将确定一组子集合,构件应该在这些子结合的交集中,从其中确认所需的构件就比较容易。 构件可用属性描述,例如构件类型、开发单位、作者、提交日期等属性。检索时通过构件的属性可以缩小搜索范围。 刻面和属性都不涉及构件内部实现,只是为了便于构件的管理、检索和使用。

11、如果把构件比作一只箱子,其内容如同箱子中装的东西,刻面和属性则如同箱子外边的标签。 刻面分类法可以看作层次分类法的扩充。, 属性-值分类 为领域中的所有构件定义一组属性,然后赋给这组属性一组值。通过属性,查找构件。 属性-值分类对可使用的属性数量没有限制,而呈面分类限定不超过7或8个。 属性-值分类中的属性没有优先级,而呈面可以区分优先级。 属性-值分类不具有同义词功能,而呈面可以查找相关的同义词。,构件库中检索一个构件和在数据库中检索一个记录是不同的。 构件库检索的不确定性带来两种相互矛盾的结果:检索的结果可能是一个较大的构件集合,要从中找到所需的构件仍然很费力;检索得到的集合没有把真正需要

12、的构件包括在内。 解决方法: (一)一般构件库系统能对提出的检索条件作广义解释。 建立同义词对照表,例如“商品销售”、“售货”、“卖货”看作一组同义词; 建立近意词对照表,例如把“商业”、“商场”、“连锁店”看作一组近意词。 系统首先匹配同义词,再匹配近意词,都可以被包括到广义结果集合中。,构件检索,(二)使检索得到的构件集合尽可能不包括对用户无用的构件。 增加更多的刻面与构件属性:较多的刻面和属性值,将得到更小的子集合文集,减轻最终发现和确认所需构件的难度; 建立构件关键词:根据构件内容提炼关键词,如同学术论文的关键词,反映有关构件内容的一些主要信息。 例如,找功能构件的关键词有“压入”、“

13、弹出”、“后进先出”等等。如果通过刻面和构件属性得到的构件子集较大,可用关键词作进一步的检索,以缩小搜索范围。,改进构件检索的其它措施: (1)记录用户使用构件库的经验,并根据这些经验改经构件检索系统; (2)对每个构件给出一段文字的简要介绍; (3)提供较强的人机对话功能; (4)引导用户对自己需求的表达不断精化。,基于构件的软件开发,CBSD改变了软件的生活方式,提高了软件生产的效率和质量,查询,构件库,新系统,构件理解,复合,适应性修改,把库中的构件集成到应用系统中,应用系统工程 ASE(Application System Engineering) 通过复用构件系统开发某个特定应用系统

14、的构件工程。,收集和分析用户的需求,设计并实现需要另加的构件,对所提供的可复用构件进行必要的修改,建造和测试整个应用系统。,测试,获取需求,分析,设计与实现,打包,面向对象与软件复用,面向对象技术的核心概念是“类”,而类的主要特征封装、继承和多态,都十分有利于复用。 面向对象方法对软件复用的支持 OOA模型 OOA模型分基础模型和详细模型,基础模型体现更高层次的抽象,更容易复用。 OOA和OOD的分工 对象的表示 一般-特殊结构 整体-部分结构 实例连接 建议用简单的二元关系表示各种复杂关系和多元关系 类模型模板 用例,复用技术对面向对象方法的支持 类库 人们已经开发了许多基于面向对象语言的编程类库,有利地支持了源程序级的软件复用。 构件库 构件库可以提炼比对象类粒度更大的可复用构件,如用例图、交互图等,形式和内容比类库更丰富。 构架库 通过领域分析,建立可重用的OOA模型。 工具 支持复用的软件工具。 OOA过程,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1