第四章 软件复用.
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件复用
1 软件复用概念与复用分类
2 软件复用的过程 3 领域工程与应用工程
4 可复用构件的构造原则和质量标准 5 软件构件与可复用构件库 6 软件构件的复用
7 面向对象的软件复用技术
1
8.1 软件复用概念与复用分类
对建立软件目标系统而言,所谓复用, 就是利用某些早先开发的对建立新软 件系统有用的软件元素来生产新系统。 软件复用是一项活动,不是一个对象。 复用的目的是想放弃那种原始的、一 切从头开始的软件开发方式,利用复 用,由共用的可复用构件来组装新的 系统。
测试用例 只要将设计或代码构件定义 成可复用构件,相关的测试用例就应当 成为这些构件的“从属品”。
9
从使用构件的角度,构件的关键特性为: 构件是一个独立的可运行的实体,其 源代码是看不到的; 所有的交互都通过构件接口完成,其 形式表现为带参数的函数; 一般情况下,构件涉及两个关联的接口: 构件提供的接口:定义构件可提供使 用的服务。 系统要求的接口:系统为使用此构件 需要的操作。
2
所有可用于复用的软件元素构成可复 用的资产,这些资产包括高质量的软 件工作成果(如代码、设计、体系结 构、接口、测试)和文档、工具、过 程、经过编译的知识(如指导原则、 模型、公式)等。 为了更快、更好、更省地开发和维护 软件,要有计划、有目的地开展软件 复用工作。
3
要实现软件复用,必须在分析和设计过 程中就加以考虑,将软件开发过程分解 为领域工程和应用系统工程。使现存软 件和新软件得到最大程度的复用。 可供复用的软件元素可有不同规模,如 应用系统复用 作为产品整体复用; 构件复用 作为可复用构件,复用现 存软件中的某一成分; 功能复用 复用单一功能的函数。
14
黑盒复用和白盒复用: 黑盒复用是指不对可复用构件做任何 修改,原封不动地复用。此类复用要 求可复用构件通用性、封装性、可靠 性强,具有标准接口。 白盒复用是指在复用一个构件时需对 其进行部分修改,以适应具体应用的 需要。
15
8.2 软件复用的过程
为了取得系统的复用效果,新的开发方 法应将各种应用开发项目与界定、创建 可复用资产联系在一起。 为此,首先要界定可复用的“资产”, 然后创建这些资产,对它们打包,编制 相关文档;其次,开发组织必须建立新 的系统工程过程,使开发者有机会确定 复用方案,有机会挑选可复用的构件。
复用需以对被复用对象的理解为基础; 如何表达对软件构件的需求; 如何寻找有关的软件构件; 如何识别是否满足要求; 如何调整或修改构件使之满足要求; 如何组装到新系统中; 如何保证结果的正确性; 如何进行效益的定量估算。只有当复用 能带来效益时人们才会考虑复用。
6
可能复用的软件要素
13
组装式复用和生成式复用: 组装式复用是事先已有一个可复用构 件库,开发软件时从库中选择合适的 构件,组装成新系统。必要时还要开 发一些库中没有的构件。此类复用着 重于源代码级的复用。 生成式复用是根据待开发软件的形式 化描述,通过应用生成器自动生成相 应的应用软件。例如,典型的词法分 析和语法分析生成器Lex和Yacc。
设计 体系结构、数据、接口和过程化 设计,面向对象系统和对象的设计都可 复用。
源程序代码 验证过的程序构件(用兼 容的程序设计语言书写)可以复用。
8
用户文档和技术文档 复用用户文档和 技术文档中的大部分内容。 用户界面 复用GUI的软件构件。
数据结构 经常被复用的数据结构包括: 内部表、文件和完整的数据库。
项目计划 软件项目计划的基本结构和 许多内容都可以跨项目复用。 成本估计 由于不同项目中常包含类似 的功能,所以有可能在极少修改或不修 改的情况下,复用对该功能的成本估计。 体系结构 某些体系结构模板(如事务 处理结构), 可作为可复用的设计框架。
7
需求模型和规格说明 类和对象的模型 和规格说明, 用传统软件工程方法开发 的分析模型(如数据流图)都可以复用。
17
管理 计划, 基金, 优先顺序, 协同工作, 学习
创建 工程,领域,框架,构件,工具 支持 确认,分类,打包 分发,建议,维护 产品需求与现有软件
产品 复用 挑选,客户化,组装
10
Meyer将其归结到 5 个不同的抽象层次上。
功能抽象
构件提供单一的功能; 不规则的组合 构件是一组松散关联的 实体的集合。如数据声明或函数等; 数据抽象 构件是ADT或对象类; 聚合抽象 构件是一群能在一起工作的 相关的对象类,即框架; 系统抽象 构件是一个完整的自包含系 统。
4Biblioteka Baidu
这些可复用的软件元素作为软件构件创 建,并以软件构件的方式集成到新应用 系统中。 所谓构件,是在一个系统中有价值的, 近似独立的,可替换的系统成分。它可 在仔细定义的体系结构环境中履行一个 显式定义的功能。 所谓软件构件则是一个具有按契约定义 的、依赖上下文环境的组装单元。
5
软件复用需要解决的问题
11
软件复用的种类
可以从不同角度,对软件复用的形式进 行分类: 根据复用活动所跨越的领域,可以分 为横向复用和纵向复用。 根据实现复用的途径,可以分为组装 式复用和生成式复用。 根据复用的方式,可以分为黑盒复用 和白盒复用。
12
横向复用和纵向复用: 横向复用是复用不同应用领域中的软 件元素,如数据结构、排序算法、人 机界面构件等。为此建立标准函数库。 纵向复用是在一类具有较多公共性的 应用领域之间复用软件构件。 由于在两个截然不同的应用领域之间进 行软件复用潜力不大,所以多数复用集 中在纵向复用。
16
1) 创建过程 界定和提供可复用资产, 以满足复用者的需要。可复用资产的 来源可以是新开发的、再工程的、购 置的。 2) 复用过程 利用可复用资产来生产应 用软件产品。 3) 支持过程 全面支持可复用资产的获 取、管理和维护工作。 4) 管理过程 执行计划、启动、资源、 跟踪,并协调其他各个过程。
1 软件复用概念与复用分类
2 软件复用的过程 3 领域工程与应用工程
4 可复用构件的构造原则和质量标准 5 软件构件与可复用构件库 6 软件构件的复用
7 面向对象的软件复用技术
1
8.1 软件复用概念与复用分类
对建立软件目标系统而言,所谓复用, 就是利用某些早先开发的对建立新软 件系统有用的软件元素来生产新系统。 软件复用是一项活动,不是一个对象。 复用的目的是想放弃那种原始的、一 切从头开始的软件开发方式,利用复 用,由共用的可复用构件来组装新的 系统。
测试用例 只要将设计或代码构件定义 成可复用构件,相关的测试用例就应当 成为这些构件的“从属品”。
9
从使用构件的角度,构件的关键特性为: 构件是一个独立的可运行的实体,其 源代码是看不到的; 所有的交互都通过构件接口完成,其 形式表现为带参数的函数; 一般情况下,构件涉及两个关联的接口: 构件提供的接口:定义构件可提供使 用的服务。 系统要求的接口:系统为使用此构件 需要的操作。
2
所有可用于复用的软件元素构成可复 用的资产,这些资产包括高质量的软 件工作成果(如代码、设计、体系结 构、接口、测试)和文档、工具、过 程、经过编译的知识(如指导原则、 模型、公式)等。 为了更快、更好、更省地开发和维护 软件,要有计划、有目的地开展软件 复用工作。
3
要实现软件复用,必须在分析和设计过 程中就加以考虑,将软件开发过程分解 为领域工程和应用系统工程。使现存软 件和新软件得到最大程度的复用。 可供复用的软件元素可有不同规模,如 应用系统复用 作为产品整体复用; 构件复用 作为可复用构件,复用现 存软件中的某一成分; 功能复用 复用单一功能的函数。
14
黑盒复用和白盒复用: 黑盒复用是指不对可复用构件做任何 修改,原封不动地复用。此类复用要 求可复用构件通用性、封装性、可靠 性强,具有标准接口。 白盒复用是指在复用一个构件时需对 其进行部分修改,以适应具体应用的 需要。
15
8.2 软件复用的过程
为了取得系统的复用效果,新的开发方 法应将各种应用开发项目与界定、创建 可复用资产联系在一起。 为此,首先要界定可复用的“资产”, 然后创建这些资产,对它们打包,编制 相关文档;其次,开发组织必须建立新 的系统工程过程,使开发者有机会确定 复用方案,有机会挑选可复用的构件。
复用需以对被复用对象的理解为基础; 如何表达对软件构件的需求; 如何寻找有关的软件构件; 如何识别是否满足要求; 如何调整或修改构件使之满足要求; 如何组装到新系统中; 如何保证结果的正确性; 如何进行效益的定量估算。只有当复用 能带来效益时人们才会考虑复用。
6
可能复用的软件要素
13
组装式复用和生成式复用: 组装式复用是事先已有一个可复用构 件库,开发软件时从库中选择合适的 构件,组装成新系统。必要时还要开 发一些库中没有的构件。此类复用着 重于源代码级的复用。 生成式复用是根据待开发软件的形式 化描述,通过应用生成器自动生成相 应的应用软件。例如,典型的词法分 析和语法分析生成器Lex和Yacc。
设计 体系结构、数据、接口和过程化 设计,面向对象系统和对象的设计都可 复用。
源程序代码 验证过的程序构件(用兼 容的程序设计语言书写)可以复用。
8
用户文档和技术文档 复用用户文档和 技术文档中的大部分内容。 用户界面 复用GUI的软件构件。
数据结构 经常被复用的数据结构包括: 内部表、文件和完整的数据库。
项目计划 软件项目计划的基本结构和 许多内容都可以跨项目复用。 成本估计 由于不同项目中常包含类似 的功能,所以有可能在极少修改或不修 改的情况下,复用对该功能的成本估计。 体系结构 某些体系结构模板(如事务 处理结构), 可作为可复用的设计框架。
7
需求模型和规格说明 类和对象的模型 和规格说明, 用传统软件工程方法开发 的分析模型(如数据流图)都可以复用。
17
管理 计划, 基金, 优先顺序, 协同工作, 学习
创建 工程,领域,框架,构件,工具 支持 确认,分类,打包 分发,建议,维护 产品需求与现有软件
产品 复用 挑选,客户化,组装
10
Meyer将其归结到 5 个不同的抽象层次上。
功能抽象
构件提供单一的功能; 不规则的组合 构件是一组松散关联的 实体的集合。如数据声明或函数等; 数据抽象 构件是ADT或对象类; 聚合抽象 构件是一群能在一起工作的 相关的对象类,即框架; 系统抽象 构件是一个完整的自包含系 统。
4Biblioteka Baidu
这些可复用的软件元素作为软件构件创 建,并以软件构件的方式集成到新应用 系统中。 所谓构件,是在一个系统中有价值的, 近似独立的,可替换的系统成分。它可 在仔细定义的体系结构环境中履行一个 显式定义的功能。 所谓软件构件则是一个具有按契约定义 的、依赖上下文环境的组装单元。
5
软件复用需要解决的问题
11
软件复用的种类
可以从不同角度,对软件复用的形式进 行分类: 根据复用活动所跨越的领域,可以分 为横向复用和纵向复用。 根据实现复用的途径,可以分为组装 式复用和生成式复用。 根据复用的方式,可以分为黑盒复用 和白盒复用。
12
横向复用和纵向复用: 横向复用是复用不同应用领域中的软 件元素,如数据结构、排序算法、人 机界面构件等。为此建立标准函数库。 纵向复用是在一类具有较多公共性的 应用领域之间复用软件构件。 由于在两个截然不同的应用领域之间进 行软件复用潜力不大,所以多数复用集 中在纵向复用。
16
1) 创建过程 界定和提供可复用资产, 以满足复用者的需要。可复用资产的 来源可以是新开发的、再工程的、购 置的。 2) 复用过程 利用可复用资产来生产应 用软件产品。 3) 支持过程 全面支持可复用资产的获 取、管理和维护工作。 4) 管理过程 执行计划、启动、资源、 跟踪,并协调其他各个过程。