当前位置:
文档之家› 软件工程导论第11章软件重用
软件工程导论第11章软件重用
(2)人的因素
喜欢自己创造而不喜欢使用别人的东西。
软件复用的困难
(3)管理因素
把复用构件和一般软件构件同等看待,把复用看作可有可
无的事。
(4)教育因素
软件科学技术的教育与培训中,缺乏关于软件复用的内容, 缺少专门教材和课程。
11.1 可重用的软件成分 11.2 软件重用过程 11.3 领域工程 11.4 开发可重用的构件 11.5 分类和检索构件
采用结构化方法和面向对象方法,而后者将成为主流。
11.3.2
领域特征
为了确定一个可能可重用的软件成分在特定情况 下是否确实可以被使用,有必要定义一组领域特征, 这些特征是该领域中所有软件共有的。领域特征定义 了该领域中所有产品共有的类属属性,例如,安全(或
可靠性)的重要性,程序设计语言,处理中的并发性等。
件和完整的数据库。 · 测试用例。一旦设计或代码构件将被重用,相 关的测试用例应该“附属于”它们。
11.2
11.2.1
软件重用过程
构件组装模型
“重用”应该是每个软件过程的一个不可缺少的 组成部分。图11.1所示的构件组装模型,举例说明了 怎样把一个可重用的软件构件库集成到典型的演化过 程模型中。
· 用户文档和技术文档。即使针对的应用是不同
的,也经常有可能重用用户文档和技术文档的大部分。 · 用户界面。这可能是最广泛被重用的软件成分, GUI(图形用户界面)软件经常被重用。因为它可占到一 个应用程序的60%代码量,因此,重用的效果非常显著。
· 数据。在大多数经常被重用的软件成分中,被
重用的数据包括:内部表、列表和记录结构,以及文
二、基于软件复用的软件开发过程的角度分
1.生产者复用(product reuse)
指建立、获取或者重新设计可复用构件的活动。涉及到的活 动包括:复用的规划、领域分析、构件的开发、构件库的组织和 管理。 2.消费者复用(consumer reuse) 指使用可复用的构件建立新的系统的活动。涉及到的活动包 括:应用系统的规划、构件的检索和选择、应用系统中非复用部 分的开发、应用系统的组装。
的某些事物或某些问题的抽象程度 更高的解法。 受实际环境影响小,可复用机会多, 所需修改少。 包括目标代码,也包括文本形式的 源代码。
设计结果的复用
低
代码的复用
软件成分的重用可以进一步划分成以下三个级别。
(1) 代码重用 (2) 设计结果重用 设计结果重用指的是,重用某个软件系统的设计模型(即求解域 模型)。这个级别的重用有助于把一个应用系统移植到完全不同的 软/硬件平台上。
11.4
11.4.1
开发可重用的构件
为了重用的分析与设计
2. 类构件的重用方式 (1) 实例重用 (2) 继承重用 面向对象方法特有的继承性,提供了一种对已有 的类构件进行裁剪的机制。当已有的类构件不能通过 实例重用完全满足当前系统需求时,继承重用提供了 一种安全地修改已有类构件,以便在当前系统中重用 的手段 (3) 多态重用 利用多态性不仅可以使对象的对外接口更加一般 化(基类与派生类的许多对外接口是相同的),从而降 低了消息连接的复杂程度,而且还提供了一种简便可 靠的软构件组合机制,系统运行时,根据接收消息的 对象类型,由多态性机制启动正确的方法,去响应一 个一般化的消息,从而简化了消息界面和软构件连接 过程。
高
测试信息的复用 抽
象
程 度
分析结果的复用
从现有系统的分析结果中提取可复 用构件用于新系统的分析; 主要包括测试用例(test case) 用一份完整的分析文档作为输入, 的复用和测试过程信息的复用。 成生针对不通软硬件平台和其它实现条 件的多项设计; 独立于具体应用,专门开发一些 可被复用的分析结果是针对问题域 可复用的分析构件。
第11章 软件重用
重用(reuse)也称为再用或复用,是指同一事物不做 修改或稍加改动就多次重复使用。
软件重用的优点:
(1)提高软件生产率,降低软件生产代价; (2)提高软件质量; (3)互操作性好; (4)推动标准化; (5)支持原型开发。
退出
软件复用就是将已有的软件成分用于构造新的软件系统, 以达到提高软件系统的开发质量与效率,降低开发成本的目 的。
图11.2
一个强调重用的过程模型
11.3 领域工程
领域工程的目的是,标识、构造、分类和传播一
组软件成分,在特定的应用领域中这些软件成分可适 用于现有的和未来的软件系统。其总体目标是,建立 相应的机制,使得软件工程师可以在新的或现有的系 统中分享这些软件成分——重用它们。 领域工程包括三个主要的活动,它们是分析、构 造和传播。
11.2.3
重用过程模型
为了实现软件重用,已经提出了许多过程模型, 这些模型都强调领域工程与软件工程同时进行。领域 工程完成一系列工作,以建立一组可以被软件工程师 重用的软件成分。 图11.2给出了一个典型的明显适用于重用的过程 模型。领域工程创建应用领域的模型,在软件工程流 中使用该模型作为分析用户需求的基础。软件体系结 构及相应的结构点(见11.3.3节)为应用系统的设计提 供了输入信息。最后,在可重用的软件成分作为领域 工程的一部分被构造出来之后,它们可以在软件开发 活动中被软件工程师使用。
· 成本估计。因为在不同项目中经常含有类似的
功能,所以有可能在只做极少修改或根本不做修改的 情况下,重用对该功能的成本估计结果。 · 体系结构。即使在考虑不同的应用领域时,也 很少有截然不同的程序和数据体系结构。因此,有可 能创建一组类属的体系结构模板(例如,事务处理体系 结构),并把那些模板作为可重用的设计框架。 · 需求模型和规格说明。类和对象的模型及规格
· 分析每个应用样本。
· 开发对象的分析模型。
领域分析是对特定应用领域中共同的特征、知识、需
求的标识、分析和规约。领域分析是特定领域内软件重用的
基础,它的目标就是:发现和挖掘在特定领域内可以被复用 的构件。领域分析活动中输入和输出如图所示:
输入信息
技术文献 已有应用 专家经验/建议 当前与未来的需求
一个可重用的软件成分的领域特征集可以表示为 {DP},集合中每一项DPi表示一个特定的领域特征。
赋给DPi的值表示等级,它指出该特征与软件成分P的 相关性。典型的等级如下。
· 与重用是否合适不相关。 · 仅在特殊情况下才相关。 · 相关,但存在差异无关紧要,该软件成分经过 修改后仍然可以被使用。 · 明显相关,如果新软件不具有此特征,虽然重 用仍然是可能的,但却是低效的。 · 很相关,如果新软件不具有此特征,重用将是 非常低效的,此时不推荐重用。 当在该应用领域中要开发一个新软件w时,可以为 它导出一组领域特征{Dw},然后比较DPi与Dwi,以决 定是否现存的软件成分P可以在应用系统w中有效地重 用。 表11.1列出了可能对软件重用有影响的典型的领 域特征,为了有效地重用软件成分,必须考虑这些领 域特征。
可 复 用 的 软 件 成 分 , 也 称 为 可 复 用 构 件 (Reusable Component)可从旧软件中提取,也可以专门为复用而开发。
软件复用不仅是对程序的复用,它包括对软件生产过程 中任何活动所产生的制成品的复用。如:项目计划、可行性 报告、需求定义、分析模型、详细说明、源程序和测试用例 等等。
即使待开发的软件明显属于某个应用领域,对该 领域中可重用的软件成分也必须加以分析,以确定它 们在当前项目中的可重用性。在少数情况下,从头开 发可能仍然是成本最低的途径。 11.3.3 结构建模和结构点
每个应用领域都可以用一个结构模型来刻画(例如,
不同飞行器飞行控制系统的细节差别很大,但是在该 领域的所有现代软件都具有相同的结构模型),因此, 结构模型是一种体系结构制品,它可以也应该在该领 域内的所有应用系统中被重用。
图2
典型的重用的过程模型,描述了领域工程与软件工程的关系。
领域工程
领域分析 设计软件 体系结构 开发可重用 的软件成分
领域 模型
结构 模型
中心库
可重用软件 成分/构件
软件工程
系统分析 用户 需求
规格说明 与设计
建造
系统规 格说明
分析与 设计模型
应用 软件
重用的过程模型
11.3.1
分析过程
领域分析过程基本上由下述步骤组成。 · 定义被研究的领域。 · 把从该领域中抽取出来的项分类。 · 收集该领域中有代表性的应用样本。
软件生产过程主要是正向过程,即软件产品从抽象级别较高
的形态向抽象级别较低的形态演化,所以较高级别的复用容易带
动较低级别的复用,反之则不然。 复用级别越高,可得到的回报也越大,因此分析软件 (Analysis Ware)和设计软件(Design Ware)的复用备受重视。
软件复用的形式
一、按照重用活动所跨越的应用领域的类型分
表 11.1 影响重用的领域特征 产品 需求稳定性 并发软件 内存限制 应用大小 用户界面复杂性 程序设计语言 安全/可靠性 寿命需求 产品质量 产品可靠性 过程 过程模型 过程符合性 项目环境 进度限制 预算限制 生产率 人员 动机 教育 经验/培训 · 应用领域 · 过程 · 平台 · 语言 开发队伍 生产率
输出信息
领域分析 领域语言 复用标准 分类方法 功能/行为模型
领域分析的输入和输出
领域分析不是针对某个特定的软件系统,而是针对一类
软件系统的共同的特征、知识和需求。比需求分析更一般、更 抽象、更广泛的特征。 领域分析(Domain Analysis)是对一类应用系统的共同应 用领域进行系统化分析,以发现该领域的共同知识、需求及其应 用系统的共同特征。 领域分析又称领域工程(Domain Engineering),是软件工 程的发展与延伸。 领域分析是一项比系统分析更难的工作。领域分析方法可
(3) 分析结果重用
这是一种更高级别的重用,即重用某个系统的分析模型。这种 重用特别适用于用户需求未改变,但系统体系结构发生了根本变化 的场合。更具体地说,可能被重用的软件成分主要有以下10种。