软件复用技术_第1页
软件复用技术_第2页
软件复用技术_第3页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、论使用复用设计 1、 引言 复用是活动,而不是对象。在创建软件相关的系统的语境中, 复用仅仅是非 常简单的任何过程,该过程通过复用来自以前开发工作的某些东西来生产 (或帮 助生产)一个系统。那么,唯一的问题是:复用什么、什么是导致成功复用的过 程。 在软件工程的范围内,复用既是旧概念,也是新概念。程序员从最早的计算 时代已开始复用概念、对象、论据、抽象和过程,但是我们复用的途径是特定的。 本文对软件复用的讨论,将从以下四个方面进行: 1) 软件工程师可以获得一系列可复用的软件制品,这些包括软件的技术表 示(例如,规约、体系结构模型、设计和代码)、文档、测试数据,甚至包括过程 相关的任务(如,检

2、查技术)。 2) 复用过程包括两个并发的子过程:领域工程和软件工程。领域工程的目 的是在特定应用领域中标识、构造、分类和传播一组软件制品。然后,软件工程 可在新系统开发中选取这些软件制品作为复用。 3) 构件复用为软件质量、开发者生产率、以及整个系统成本带来了固有的 收益,然而,在复用过程模型被广泛地用于软件产业前,必须克服很多障碍。 4) 对可复用构件的分析、设计技术采用和在良好的软件工程实践中使用的 相同原则和概念。可复用构件应该在一个环境中设计,该环境为每个应用领域建 立标准数据结构、接口协议和程序体系结构。 2、 可复用的软件制品 软件复用不仅仅涉及源代码,但是,还涉及多少东西呢? C

3、aperJones定义了 可作为复用候选的十种软件制品: 项目计划。软件项目计划的基本结构和许多内容(例如,SQA计划)均是可以 跨项目复用的。这样减少了用于制定计划的时间, 也减低了和建立进度表、风险 分析和其他特征相关的不确定性。 成本估计。因为经常不同项目中含有类似的功能, 所以有可能在极少修改或 不修改的情况下,复用对该功能的成本估计。 体系结构。即使当考虑不同的应用领域时,也很少有截然不同的程序和数据 体系结构。因此,有可能创建一组类属的体系结构模板 (例如,事务处理体系结 构),并将那些模板作为可复用的设计框架。 需求模型和规约。类和对象的模型和规约是明显的复用的候选者, 此外,用

4、 传统软件工程方法开发的分析模型(例如,数据流图)也是可复用的。 设计。用传统方法开发的体系结构、数据、接口和过程化设计是复用的候选 者,更常见的是,系统和对象设计是可复用的。 源代码。验证过的程序构件(用兼容的程序设计语言书写的)是复用的候选 者。 用户和技术文档。即使特定的应用是不同的,也经常有可能复用用户和技术 文档的大部分。 用户界面。可能是最广泛被复用的软件制品,GUI软件经常被复用。因为它 可占到一个应用的60%的代码量,因此,复用的效果非常显著。 数据。在大多数经常被复用的软件制品中,数据包括:内部表、列表和记录 结构,以及文件和完整的数据库。 测试用例。一旦设计或代码构件将被复

5、用,相关的测试用例应该“附属于” 它们。 应该注意,复用可以扩展到上面所讨论的可交付的软件制品之外,它也包含 了软件工程过程中的元素。特定的分析建模方法、检查技术、测试用例设计技术、 质量保证过程、以及很多其他软件工程实践可以被“复用”,例如,如果某软件 项目组有效地应用净室软件工程方法, 该方法可能适用于另一个项目。为了作出 决定,有必要定义一组描述功能,它们使得潜在的净室用户能够对其应用作出适 当的决策。 3、复用过程 复用过程包括两个并发的子过程:领域工程和软件工程。 3.1、 领域工程 领域工程的目的是标识、构造、分类和传播一组软件制品,它们对某特定应 用领域中对现存的和未来的软件系统

6、具有很好适用性。其整体目标是建立相应的 机制,以使得软件工程师在工作于新的或现存的系统时可以分享这些软件制品一 复用它们。 领域工程包括三个主要的活动分析、构造和传播。在第 20章中已给出 领域分析的概述,然而,本节中将再讨论这个话题。领域构造和传播将在本章以 后几节中讨论。 有人争辩说“复用将消失,不是被消除,而是被集成”进软件工程实践之中, 随着复用被更多的强调,人们相信在下个十年领域工程将变得和软件工程一样重 要。 、 领域分析过程 在面向对象软件工程范围内领域分析的方法,过程中的步骤定义如下: 1) .定义将被研究的领域。 2) .分类从领域中抽出的物项。 3) .收集领域中有代表性的

7、应用样本。 4) .分析样本中的每个应用。 5) .开发对象的分析模型。 必须注意,领域分析适用于任意软件工程范型,并且可以用于传统的以及面 向对象的软件开发。 Prieto Diaz扩展了上面给出的领域分析的第二个步骤,建议了一个8步骤 的标识和分类可复用软件制品的方法: 1) .选择特定的功能/对象。 2) .抽象功能/对象。 3) .定义分类法。 4) .标识公共特征。 5) .标识特定的关系。 6) .抽象关系。 7) .导出功能模型。 8) .定义领域语言。 领域语言使得在领域中进行应用的规约及构造成为可能。 虽然上面的步骤提供了一个有用的领域分析模型, 但是它没有提供帮助决定 哪些

8、软件制品是复用候选的有用的指南。Hutchinson和Hindley提出了下面一组 实际的问题,它们可以用作标识可复用软件构件的指南: *构件功能对未来的实现工作是需要的吗? *在领域中构件功能的公共性怎样? *在领域中存在构件功能的重复吗? *构件是否依赖于硬件? *在不同实现之间硬件是否保持不变? *硬件细节可被移动到另一个构件吗? *设计为下面的实现进行过足够的优化吗? *我们能够将一个不可复用的构件参数化以使其变成可复用的吗? *构件是否可以仅仅经过少许修改就能够在很多实现中复用吗? *通过修改进行复用是可行的吗? *某不可复用的构件能够通过被分解以产生一组可复用构件吗? *针对复用的

9、构件分解是有效的吗? 关于领域分析的深入讨论不在本书范围之内,更多的信息可见。 、结构建模和结构点 当使用领域分析时,分析员寻找在某领域中应用间的重复模式。结构化建模 (Structuralmodeli ng) 是一种基于模式的领域工程方法,应用该方法的前提假设 是:每个应用领域有重复的模式(功能的、数据的和行为的),它们具有可复用的 潜在可能。 Pollak 和Rissmanf苗述结构建模如下: 结构模型由少量的用于表明清晰的交互模式的结构元素组成。 使用结构模型 的系统的体系结构通过多个由这些模型元素组成的东西来刻划, 这样,在系统的 体系结构单元间的复杂交互可以用在这些少量元素间的简单交

10、互模式来描述。 每个应用领域可用一个结构模型来刻划(例如,飞行器电子设备在细节上差 异很大,但是在该领域的所有现代软件具有相同的结构模型 ),因此,结构模型 是一种体系结构制品,它可以也应该在领域内所有应用中被复用。 McMaho描述结构点(structure Point)为:“在结构模型中的一个独特构成 物”,结构点有三个显著的特征: 1) . 一个结构点是一个抽象,它应该有有限数量的实例。用面向对象的行话 来陈述,类层次的规模应是小的。此外,该抽象应该在领域中所有应用中不断重 现,否则,用于验证、文档化和传播结构点所需的努力不可能是成本合算的。 2) .管理结构点的使用的规则应该是容易理解

11、的。此外,结构点的接口应该 相当简单。 3) .结构点应该通过隐藏所有包含在结构点内部的复杂性而实现信息隐蔽, 这会减少整个系统可被感知的复杂性。 作为把结构点当作系统的体系结构模式的一个例子,考虑警报系统的软件领 域,该领域可能包含如SafeHom这样简单的系统,或如工业过程警报系统这样 复杂的系统,然而,在每种情形,均可以遇到一组可以预测的结构模式: *界面,使用户能够和系统交互。 *范围设置机制,允许用户设置将被测度的参数的范围。 *传感器管理机制,和所有的监控传感器通讯。 *反应机制,对传感器管理系统提供的输入作出反应。 *控制机制,使用户能够可以控制监控执行的方式。 这些结构点中的每

12、一个被集成到一个领域体系结构中。 定义跨越一组不同的应用领域的类属的结构点是可能的: *应用前端。GUI,包括所有菜单、面板、输入和命令编辑设施。 *数据库。所有和应用领域相关的对象的仓库。 *计算引擎。操作数据的数值和非数值模型。 *报告设施。产生所有种类的输出的功能。 *应用编辑器。根据用户特定需要定制应用的机制。 结构点已被建议作为在软件成本估计中代码行和功能点的替代物。 4、构件复用 关于创建可复用的软件并没有任何神奇之处。抽象、隐蔽、功能独立性、求 精、以及结构化程序设计等设计概念,连同面向对象方法、测试、 SQA以及正 确性验证方法一一所有均对可复用软件构件的创建有贡献。 本节中,

13、我们将不重 复讨论这些话题,而是考虑特定于复用的问题,它们是对完整的软件工程实践的 补充。 4.1、 为了复用的分析和设计 数据、功能和行为模型(用一系列不同符号表示)可以被创建以描述特定应用 必须完成的任务,书面的规约被用于描述这些模型并生成完整的需求描述。 理想地,分析分析模型以确定模型中的那些指向现存的可复用软件制品的元 素。问题是以能够导致“规约匹配”的形式从需求模型中抽取信息。 Belli nzoni 及其同事描述了一种针对面向对象系统的方法: 构件被在不同的抽象层次定义和存储为规约、设计和实现类一一每个类是来 自以前应用的某产品的工程化描述。规约知识一一开发知识一一被以复用建议 (

14、reuse-suggestion)类的形式存储,它们包括对以构件的描述为基础检索可复用 构件及检索后组装和剪裁构件的指导。 使用自动化工具浏览构件库,以试图匹配当前规约中所标记的需求和那些为 现存可复用构件(类)描述的需求。领域特征和关键词被用于发现潜在的可复用构 件。 如果规约匹配生成符合当前应用需要的构件,设计者可从可复用构件库中提 取这些构件并将它们用于新系统的设计中。 如果没能找到设计构件,软件工程师 必须应用传统的或面向对象的设计方法去创建它们。正是在这点一一当设计者开 始创建新的构件时 应该考虑为了复用的设计 (DFR)。 我们已经提到过,为了复用的设计需要软件工程师应用已有的设计

15、概念和原 则,但是,也必须考虑应用领域的特征。Binder建议了作为为了复用的设计的基 础而应该考虑的一系列关键问题: 标准数据。应该研究应用领域,并标识出标准的全局数据结构 (例如,文件 结构或完整的数据库),那么所有设计构件可以使用这些标准数据结构来刻划。 标准接口协议。应该建立三个层次的接口协议:模块内接口的本质、外部的 技术(非人)接口的设计、以及人机界面。 程序模板。结构模型可以作为新程序的体系结构设计的模板。 一旦已经建立 了标准数据、接口和程序模板,则设计者有了一个可在其中创建设计的框架。 符合这个框架的新的构件对以后的复用有更高的概率。 4.2、 构造方法 和设计一样,可复用软

16、件制品的构造依赖于本书中其他地方已经讨论过的软 件工程方法,构造可以使用传统的第三代语言、第四代语言和代码生成器、可视 化程序设计技术、或更高级的工具来完成。 更高级的构造技术的一个有代表性例子是 Netron公司开发Frame技术Netron 方法定义了一组自适应的、称作Frame的类属构件。和对象一样,Frame圭寸装数 据和操作,但是,它扩展了对象的定义,它结合进了使软件工程师能够通过选择、 删除、修改或重复那些构成该Frame的任意子构件而对Frame进行适应性修改的 机制。 可以通过组装来自Frame层次的构件而构造应用。在该层次底部的Frame类 似于在因子化体系结构中的工作者(w

17、orker)模块,即,它们包含执行低层系统功 能(例如,操作系统交互、接口构造、数据库交互)的操作和数据结构;在Frame层 次中层的Frame着重于和特定信息系统领域相关的功能(例如,事务处理、银行 业务、客户服务);在层次的顶部是“规约fream ”,它的作用是作为“系统的主 要蓝图和开发者创建来定义系统的唯一的 Frame”。 4.3、基于构件的开发 当复用占据了一个应用开发的主导地位时,则构造方法有时被称为基于构件 的开发或构件软件。如我们已经看到的,领域工程提供了基于构件的开发所需要 的可复用构件库。这些可复用构件中的某些是内部开发的, 其他的可以从现存应 用中抽取的,还有一些可以从

18、第三方获取。 但是,我们如何创建一个具有一致结构的构件库它可以被一系列不同的 内部和外部源查询并且还可以被集成进在某应用领域内的任意系统?答案是对 这样的构件的标准的采用。4个“体系结构成分”将被用于实现基于构件的开发: 数据交换模型。应该对所有的可复用构件定义使得用户和应用间能够交互和 传递数据的机制(例如,拖和放、剪切和粘贴)。数据交换机制不仅应允许人和软 件、构件和构件间的数据传递,而且也应使得能够在系统资源间进行数据传递 (例 如,将一个文件拖到某打印机图符上以实现输出 )。 自动化。应实现一系列工具、宏和脚本为可复用构件间的交互服务。 结构化存储。包含在“复合文档”中的异质数据 (例

19、如,图形数据、声音、 文本和数值数据)应该被作为单独的数据结构来组织和访问,而不是作为一组分 开的文件。“结构化数据维持了嵌套结构的一个描述性索引, 使得应用可以自由 地进行导航浏览以定位、创建或编辑个体数据内容,就象终端用户直接操作一 样”。 底层对象模型。对象模型保证在不同平台上用不同程序设计语言开发的构件 可以互操作,即,对象必须能够跨网络进行通信。为了达到这个目标,对象模型 定义了构件互操作标准,该标准是语言独立的,并使用接口定义语言 (IDL)来定 义。因为复用对软件产业的潜在影响非常巨大,一些主要的公司和产业联盟 已 经提出了对构件软件的建议标准: OpenDo。主要技术公司(包括

20、IBM、Apple、和Novell)的一个联盟已经提出 了复合文档和构件软件的标准OPenDoc该标准定义了为使得由某开发者提供的 构件能够和另一个开发者提供的构件相互操作而必须实现的服务、控制基础设 施、和体系结构。 OMG/CORBA寸象管理组织发布了公共对象请求代理体系结构 (OMG/CORBA) 一个对象请求代理(ORB提供了一系列服务,它们使得可复用构件(对象)可以和 其他构件通信,而不管它们在系统中的位置。当用 OMG/CORBfe准建立构件时, 那些构件在某系统内的集成(没有修改)可以得到保证。 使用客户/服务器的比喻,在客户端应用中的对象向 ORB服务器请求一个或 多个服务,请

21、求是通过IDL或在运行时动态地进行的。一个接口池包含了所有关 于服务请求和回答格式的信息。 OLE2.0。微软开发了一个构件对象模型(COM)它提供了对在单个应用中使 用不同厂商生产的对象的规约。对象连接和嵌入 (OLE)是COM的一部分,定义了 可复用构件的标准结构。OLE已成为微软操作系统(Windows 95、Windows NT) 的一部分。 这些标准中哪一个将在产业中占据支配地位?这在当前是不容易回答的问 题。当前OLE被用得更广一些(由于基于Windows应用的广泛使用),但是,很多 OMG/CORB工具和开发环境正在被引入。 5、分类和检索构件 考虑一个大的大学图书馆,成千上万的

22、书籍、期刊和其他信息资源是可用的。 但是为了访问这些资源,必须有合适的分类模式。为了在这些大量的信息中导航 浏览,图书馆管理者定义了一种分类模式,它包括分类码、关键词、作者名、以 及其他索引条目,所有这些使得用户可以快速和方便地找到所需资源。 现在考虑一个大的构件仓库,其中存放了成千上万的可复用构件。但是,软 件工程师如何找到他所需要的构件呢?为了回答这个问题,又出现了另一个问 题:我们如何以无二义的、可分类的术语来描述软件构件?这些是困难的问题, 至今还没有确定性的答案。在本节中,我们探讨当前的研究方向,这将使得未来 的软件工程师可以导航浏览复用库。 5.1、描述可复用构件 可以用很多方式来

23、描述可复用软件构件,但是理想的描述包括 TracZ提出的 3C模型 - 概念(concePt)、内容(content)和语境(context)。软件构件的概念 是“对构件做什么的描述”。构件的接口被完整地描述,而且语义一一表示在前 置条件后置条件的语境中一一被标识。概念将传达构件的意图。 构件的内容描述概念如何被实现。在本质上,内容是对一般用户隐蔽的信息, 只有那些企图修改该构件的人才需要了解的信息。 语境将可复用软件构件放置到其应用的领域中。即,通过刻划概念的、操作 的和实现的特征,语境使得软件工程师能够发现适当的构件以满足应用需求。 为了可用在实际环境中,概念、内容和语境必须被转换为具体的

24、规约模式。 已有很多的文章涉及可复用构件的分类模式。 所提出的方法可以分为三大类: 图书馆和信息科学方法、人工智能方法、以及超文本系统。目前为止,绝大部分 研究工作建议使用图书馆科学方法进行构件分类。 大多数软件构件分类模式可归为如下的三类: 1)枚举分类(Enumerated Classification) 。通过定义一个层次结构来描述 构件,在该层次中定义软件构件的类以及不同层次的子类。 实际的构件被罗列在 枚举层次的任何路径的最低层,例如,对窗口操作的枚举层次可能是: win dow operati ons display ope n menu-based OpenWin dow sys

25、tem based sysWi ndow close via poin ter resize viacomma nd setWindowSize, stdResize , shrinkwindow viadrag pullwindow , stretchWindow up/dow nshuffle move close 枚举分类模式的层次结构使得它易于理解和使用,然而,在建立层次之前, 必须进行领域工程以获得在层次中适当的项的足够的信息。 刻面分类(Faceted Classification)。分析领域,并标识出一组基本的描述 特征,这些特征,称为刻面,被根据其重要性区分优先次序并被联系到构

26、件。刻 面可以描述构件执行的功能、被操作的数据、构件应用的语境或任意其他特征。 描述构件的刻面的集合称为刻面描述子, 通常,刻面描述被限定不超过7或8个刻 面。 作为一个简单的在构件分类中使用刻面的例子, 考虑使用下列构件描述子的 模式: function ,object type ,system tyPe 刻面描述子中的每个刻面可含有一个或多个值,这些值一般是描述性关键 词,例如,如果功能(function)是某构件的刻面,赋给此刻面的典型值可能是: function=(copy ,from)or(copy , replace,all) 多个刻面值的使用使得原函数copy能够被更完全地精化。

27、 关键词(值)被赋给复用库中的每个构件的刻面集, 当软件工程师在设计中希 望查询构件库以发现可能的构件时,规定一列值,然后到库中寻找匹配项。可使 用自动工具以完成同义词词典功能,这使得查找不仅包括软件工程师给出的关键 词,还包括这些关键词的技术同义词。 刻面分类模式给领域工程师在刻划构件的复杂描述子时更大的灵活性, 因为 可以很容易地加入新的刻面值,因此,刻面分类模式比枚举分类方法易于扩展和 进行适应性修改。 属性一值分类(Attribute Value Classification) 。为领域中的所有构件 定义一组属性,然后值被以和刻面分类方法非常相似的方式赋给这些属性, 事实 上,属性-值

28、分类方法和刻面分类方法是类似的, 除了下面几点不同:(1)对可使 用的属性数量没有限制,(2)属性没有优先级,(3)不使用同义词词典功能。 基于对上面分类技术的实验研究,Frank和Pole指出没有明显“最好”的技 术和“没有某种方法比别的方法在查找效果上更适度” 。对复用库有效的分类 模式的开发仍有许多工作要做。 5.2、构件复用环境 软件构件复用必须有环境的支撑,环境应包含如下元素: *用于存储构件和对检索构件必需的分类信息的构件库。 *提供对构件库访问的库管理系统。 *允许客户应用从构件库服务器中检索构件和服务的软件构件检索系统 (如, 对象请求代理)。 *将复用的构件集成到新设计或实现中的 CASE工具。 每一个功能在复用库的范围内交互或者被包含在复用库中。 复用库是一个更大型CAS仓库的一个元素,并且为一系列可复用软件制品 (例如,规约、设计、代码、测试用例、用户指南)的存储提供设施。复用库包含 一个数据库以及查询数据库和构件检索所必需的工具, 构件分类模式是构件库查 询的基础。 查询通常用前面描述的3C模型中的语境来刻划,如果某初始查询产生大量 的候选构件,则查询被求精以减

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论