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