- 1、本文档共76页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
清华大学软件工程课程讲义 第八章 软件复用
第八章 软件复用 8.1 软件复用概念与复用分类 8.2 软件复用的过程 8.3 领域工程与应用工程 8.4 可复用构件的构造原则和质量标准 8.5 软件构件与可复用构件库 8.6 软件构件的复用 8.7 面向对象的软件复用技术 8.1 软件复用概念与复用分类 对建立软件目标系统而言,所谓复用,就是利用某些早先开发的对建立新软件系统有用的软件元素来生产新系统。 软件复用是一项活动,不是一个对象。 复用的目的是想放弃那种原始的、一切从头开始的软件开发方式,利用复用,由共用的可复用构件来组装新的系统。 所有可用于复用的软件元素构成可复用的资产,这些资产包括高质量的软件工作成果(如代码、设计、体系结构、接口、测试)和文档、工具、过程、经过编译的知识(如指导原则、模型、公式)等。 为了更快、更好、更省地开发和维护软件,要有计划、有目的地开展软件复用工作。 要实现软件复用,必须在分析和设计过程中就加以考虑,将软件开发过程分解为领域工程和应用系统工程。使现存软件和新软件得到最大程度的复用。 可供复用的软件元素可有不同规模,如 应用系统复用 作为产品整体复用; 构件复用 作为可复用构件,复用现存软件中的某一成分; 功能复用 复用单一功能的函数。 这些可复用的软件元素作为软件构件创建,并以软件构件的方式集成到新应用系统中。 所谓构件,是在一个系统中有价值的,近似独立的,可替换的系统成分。它可在仔细定义的体系结构环境中履行一个显式定义的功能。 所谓软件构件则是一个具有按契约定义的、依赖上下文环境的组装单元。 软件复用需要解决的问题 复用需以对被复用对象的理解为基础; 如何表达对软件构件的需求; 如何寻找有关的软件构件; 如何识别是否满足要求; 如何调整或修改构件使之满足要求; 如何组装到新系统中; 如何保证结果的正确性; 如何进行效益的定量估算。只有当复用能带来效益时人们才会考虑复用。 可能复用的软件要素 项目计划 软件项目计划的基本结构和许多内容都可以跨项目复用。 成本估计 由于不同项目中常包含类似的功能,所以有可能在极少修改或不修改的情况下,复用对该功能的成本估计。 体系结构 某些体系结构模板(如事务处理结构), 可作为可复用的设计框架。 需求模型和规格说明 类和对象的模型和规格说明, 用传统软件工程方法开发的分析模型(如数据流图)都可以复用。 设计 体系结构、数据、接口和过程化设计,面向对象系统和对象的设计都可复用。 源程序代码 验证过的程序构件(用兼容的程序设计语言书写)可以复用。 用户文档和技术文档 复用用户文档和技术文档中的大部分内容。 用户界面 复用GUI的软件构件。 数据结构 经常被复用的数据结构包括:内部表、文件和完整的数据库。 测试用例 只要将设计或代码构件定义成可复用构件,相关的测试用例就应当成为这些构件的“从属品”。 从使用构件的角度,构件的关键特性为: 构件是一个独立的可运行的实体,其源代码是看不到的; 所有的交互都通过构件接口完成,其形式表现为带参数的函数; 一般情况下,构件涉及两个关联的接口: 构件提供的接口:定义构件可提供使用的服务。 系统要求的接口:系统为使用此构件需要的操作。 Meyer将其归结到 5 个不同的抽象层次上。 功能抽象 构件提供单一的功能; 不规则的组合 构件是一组松散关联的实体的集合。如数据声明或函数等; 数据抽象 构件是ADT或对象类; 聚合抽象 构件是一群能在一起工作的相关的对象类,即框架; 系统抽象 构件是一个完整的自包含系统。 软件复用的种类 可以从不同角度,对软件复用的形式进行分类: 根据复用活动所跨越的领域,可以分为横向复用和纵向复用。 根据实现复用的途径,可以分为组装式复用和生成式复用。 根据复用的方式,可以分为黑盒复用和白盒复用。 横向复用和纵向复用: 横向复用是复用不同应用领域中的软件元素,如数据结构、排序算法、人机界面构件等。为此建立标准函数库。 纵向复用是在一类具有较多公共性的应用领域之间复用软件构件。 由于在两个截然不同的应用领域之间进行软件复用潜力不大,所以多数复用集中在纵向复用。 组装式复用和生成式复用: 组装式复用是事先已有一个可复用构件库,开发软件时从库中选择合适的构件,组装成新系统。必要时还要开发一些库中没有的构件。此类复用着重于源代码级的复用。 生成式复用是根据待开发软件的形式化描述,通过应用生成器自动生成相应的应用软件。例如,典型的词法分析和语法分析生成器Lex和Yacc。 黑盒复用和白盒复用: 黑盒复用是指不对可复用构件做任何修改,原封不动地复用。此类复用要求可复用构件通用性、封装性、可靠性强,具有标准接口。 白盒复用是指在复用一个构件时需对
文档评论(0)