软件复用技术

上传人:飞****9 文档编号:131944484 上传时间:2020-05-11 格式:DOC 页数:9 大小:64.01KB
返回 下载 相关 举报
软件复用技术_第1页
第1页 / 共9页
软件复用技术_第2页
第2页 / 共9页
软件复用技术_第3页
第3页 / 共9页
软件复用技术_第4页
第4页 / 共9页
软件复用技术_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《软件复用技术》由会员分享,可在线阅读,更多相关《软件复用技术(9页珍藏版)》请在金锄头文库上搜索。

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

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

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

4、系结构、数据、接口和过程化设计是复用的候选者,更常见的是,系统和对象设计是可复用的。源代码。验证过的程序构件(用兼容的程序设计语言书写的)是复用的候选者。用户和技术文档。即使特定的应用是不同的,也经常有可能复用用户和技术文档的大部分。用户界面。可能是最广泛被复用的软件制品,GUI 软件经常被复用。因为它可占到一个应用的60的代码量,因此,复用的效果非常显著。数据。在大多数经常被复用的软件制品中,数据包括:内部表、列表和记录结构,以及文件和完整的数据库。测试用例。一旦设计或代码构件将被复用,相关的测试用例应该“附属于”它们。应该注意,复用可以扩展到上面所讨论的可交付的软件制品之外,它也包含了软件

5、工程过程中的元素。特定的分析建模方法、检查技术、测试用例设计技术、质量保证过程、以及很多其他软件工程实践可以被“复用”,例如,如果某软件项目组有效地应用净室软件工程方法,该方法可能适用于另一个项目。为了作出决定,有必要定义一组描述功能,它们使得潜在的净室用户能够对其应用作出适当的决策。3、复用过程复用过程包括两个并发的子过程:领域工程和软件工程。3.1、领域工程领域工程的目的是标识、构造、分类和传播一组软件制品,它们对某特定应用领域中对现存的和未来的软件系统具有很好适用性。其整体目标是建立相应的机制,以使得软件工程师在工作于新的或现存的系统时可以分享这些软件制品复用它们。领域工程包括三个主要的

6、活动分析、构造和传播。在第20 章中已给出领域分析的概述,然而,本节中将再讨论这个话题。领域构造和传播将在本章以后几节中讨论。有人争辩说“复用将消失,不是被消除,而是被集成”进软件工程实践之中,随着复用被更多的强调,人们相信在下个十年领域工程将变得和软件工程一样重要。3.1.1、领域分析过程在面向对象软件工程范围内领域分析的方法,过程中的步骤定义如下:1).定义将被研究的领域。2).分类从领域中抽出的物项。3).收集领域中有代表性的应用样本。4).分析样本中的每个应用。5).开发对象的分析模型。必须注意,领域分析适用于任意软件工程范型,并且可以用于传统的以及面向对象的软件开发。PrietoDi

7、az扩展了上面给出的领域分析的第二个步骤,建议了一个8 步骤的标识和分类可复用软件制品的方法:1).选择特定的功能/对象。2).抽象功能/对象。3).定义分类法。4).标识公共特征。5).标识特定的关系。6).抽象关系。7).导出功能模型。8).定义领域语言。领域语言使得在领域中进行应用的规约及构造成为可能。虽然上面的步骤提供了一个有用的领域分析模型,但是它没有提供帮助决定哪些软件制品是复用候选的有用的指南。Hutchinson 和Hindley提出了下面一组实际的问题,它们可以用作标识可复用软件构件的指南:*构件功能对未来的实现工作是需要的吗?*在领域中构件功能的公共性怎样?*在领域中存在构

8、件功能的重复吗?*构件是否依赖于硬件?*在不同实现之间硬件是否保持不变?*硬件细节可被移动到另一个构件吗?*设计为下面的实现进行过足够的优化吗?*我们能够将一个不可复用的构件参数化以使其变成可复用的吗?*构件是否可以仅仅经过少许修改就能够在很多实现中复用吗?*通过修改进行复用是可行的吗?*某不可复用的构件能够通过被分解以产生一组可复用构件吗?*针对复用的构件分解是有效的吗?关于领域分析的深入讨论不在本书范围之内,更多的信息可见。3.1.2、结构建模和结构点当使用领域分析时,分析员寻找在某领域中应用间的重复模式。结构化建模(Structuralmodeling)是一种基于模式的领域工程方法,应用

9、该方法的前提假设是:每个应用领域有重复的模式(功能的、数据的和行为的),它们具有可复用的潜在可能。Pollak 和Rissman描述结构建模如下:结构模型由少量的用于表明清晰的交互模式的结构元素组成。使用结构模型的系统的体系结构通过多个由这些模型元素组成的东西来刻划,这样,在系统的体系结构单元间的复杂交互可以用在这些少量元素间的简单交互模式来描述。每个应用领域可用一个结构模型来刻划(例如,飞行器电子设备在细节上差异很大,但是在该领域的所有现代软件具有相同的结构模型),因此,结构模型是一种体系结构制品,它可以也应该在领域内所有应用中被复用。McMahon描述结构点(structure Point

10、)为:“在结构模型中的一个独特构成物”,结构点有三个显著的特征:1).一个结构点是一个抽象,它应该有有限数量的实例。用面向对象的行话来陈述,类层次的规模应是小的。此外,该抽象应该在领域中所有应用中不断重现,否则,用于验证、文档化和传播结构点所需的努力不可能是成本合算的。2).管理结构点的使用的规则应该是容易理解的。此外,结构点的接口应该相当简单。3).结构点应该通过隐藏所有包含在结构点内部的复杂性而实现信息隐蔽,这会减少整个系统可被感知的复杂性。作为把结构点当作系统的体系结构模式的一个例子,考虑警报系统的软件领域,该领域可能包含如SafeHome这样简单的系统,或如工业过程警报系统这样复杂的系

11、统,然而,在每种情形,均可以遇到一组可以预测的结构模式:*界面,使用户能够和系统交互。*范围设置机制,允许用户设置将被测度的参数的范围。*传感器管理机制,和所有的监控传感器通讯。*反应机制,对传感器管理系统提供的输入作出反应。*控制机制,使用户能够可以控制监控执行的方式。这些结构点中的每一个被集成到一个领域体系结构中。定义跨越一组不同的应用领域的类属的结构点是可能的:*应用前端。GUI,包括所有菜单、面板、输入和命令编辑设施。*数据库。所有和应用领域相关的对象的仓库。*计算引擎。操作数据的数值和非数值模型。*报告设施。产生所有种类的输出的功能。*应用编辑器。根据用户特定需要定制应用的机制。结构

12、点已被建议作为在软件成本估计中代码行和功能点的替代物。4、构件复用关于创建可复用的软件并没有任何神奇之处。抽象、隐蔽、功能独立性、求精、以及结构化程序设计等设计概念,连同面向对象方法、测试、SQA、以及正确性验证方法所有均对可复用软件构件的创建有贡献。本节中,我们将不重复讨论这些话题,而是考虑特定于复用的问题,它们是对完整的软件工程实践的补充。4.1、为了复用的分析和设计数据、功能和行为模型(用一系列不同符号表示)可以被创建以描述特定应用必须完成的任务,书面的规约被用于描述这些模型并生成完整的需求描述。理想地,分析分析模型以确定模型中的那些指向现存的可复用软件制品的元素。问题是以能够导致“规约

13、匹配”的形式从需求模型中抽取信息。Bellinzoni 及其同事描述了一种针对面向对象系统的方法:构件被在不同的抽象层次定义和存储为规约、设计和实现类每个类是来自以前应用的某产品的工程化描述。规约知识开发知识被以复用建议(reuse-suggestion)类的形式存储,它们包括对以构件的描述为基础检索可复用构件及检索后组装和剪裁构件的指导。使用自动化工具浏览构件库,以试图匹配当前规约中所标记的需求和那些为现存可复用构件(类)描述的需求。领域特征和关键词被用于发现潜在的可复用构件。如果规约匹配生成符合当前应用需要的构件,设计者可从可复用构件库中提取这些构件并将它们用于新系统的设计中。如果没能找到

14、设计构件,软件工程师必须应用传统的或面向对象的设计方法去创建它们。正是在这点当设计者开始创建新的构件时应该考虑为了复用的设计(DFR)。我们已经提到过,为了复用的设计需要软件工程师应用已有的设计概念和原则,但是,也必须考虑应用领域的特征。Binder建议了作为为了复用的设计的基础而应该考虑的一系列关键问题:标准数据。应该研究应用领域,并标识出标准的全局数据结构(例如,文件结构或完整的数据库),那么所有设计构件可以使用这些标准数据结构来刻划。标准接口协议。应该建立三个层次的接口协议:模块内接口的本质、外部的技术(非人)接口的设计、以及人机界面。程序模板。结构模型可以作为新程序的体系结构设计的模板

15、。一旦已经建立了标准数据、接口和程序模板,则设计者有了一个可在其中创建设计的框架。符合这个框架的新的构件对以后的复用有更高的概率。4.2、构造方法和设计一样,可复用软件制品的构造依赖于本书中其他地方已经讨论过的软件工程方法,构造可以使用传统的第三代语言、第四代语言和代码生成器、可视化程序设计技术、或更高级的工具来完成。更高级的构造技术的一个有代表性例子是Netron公司开发Frame技术Netron方法定义了一组自适应的、称作Frame 的类属构件。和对象一样,Frame 封装数据和操作,但是,它扩展了对象的定义,它结合进了使软件工程师能够通过选择、删除、修改或重复那些构成该Frame 的任意子构件而对Frame 进行适应性修改的机制。可以通过组装来自Frame 层次的构件而构造应用。在该层次底部的Frame 类似于在因子化体系结构中的工作者(worker)模块,即,它们包含执行低层系统功能(例如,操作系统交互、接口构造、数据库交互)的操作和数据结构;在Frame 层次中层的Frame 着重于和特定信息系统领域相关的功能(例如,事务处理、银行业务、客户服务);在层次的顶部是“规约fream”,它的作用是作为“系统的主要蓝图和开发者创建来定义系统的唯一的Frame”。4.3、基于构件的开发当复用占据了一个应用开发的主导地位时,则构造方法有

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号