软件复用名词解释
- 格式:doc
- 大小:13.05 KB
- 文档页数:2
浅析软件复用技术作者:王茂蛟来源:《电脑知识与技术·学术交流》2008年第14期摘要:软件复用是将已有的软件及其有效成分用于构造新的软件或系统软件,是提高软件质量和生产效率的的基本途径。
本文主要介绍软件复用的基本概念、分类,软件复用技术以及基于复用的软件开发过程。
关键词:软件复用;软件复用技术;基于复用的软件开发过程中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)14-20940-021 软件复用的概念所谓软件复用是指重复使用“为了复用目的而设计的软件”的过程。
而可复用软件则是指为了复用目的而设计的软件。
软件复用更强调的是复用的目的。
它是一种系统化的方法,为了复用而进行设计。
为了复用而开发。
并且要有效地组织和管理这些复用产品。
方便人们查找和使用。
基于复用产品进行开发。
由此可见。
并非所有重复使用软件的行为都是软件复用过程。
例如:重复使用“并非为了复用目的而设计的软件”或在一个应用系统的不同版本间重复使用代码。
这两类行为都不属于严格意义上的软件复用。
软件复用一定要有积累。
首先要为了复用目的设计很多的复用产品,有了一定的积累后才能进行软件复用。
2 软件复用的分类软件复用就是将已有的软件成分用于构造新的软件系统,它不仅仅是对程序的复用,它还包括对软件生产过程中任何活动所产生的成品的复用。
按抽象程度的高低,可以划分为如下的复用级别:2.1 代码的复用包括目标代码和源代码的复用。
当前大部分编程语言的运行支持系统都提供了连接、绑定等功能来支持目标代码的复用。
源代码的复用级别略高于目标代码的复用,程序员在编程时把一些代码段复制到自己的程序中,但这样往往会产生一些新旧代码不匹配的错误。
要想大规模的实现源程序的复用只有依靠含有大量可复用构件的构件库。
比如“对象链接及嵌入”(0LE)技术,既支持在源程序级定义构件并用以构造新的系统,又使这些构件在目标代码的级别上仍然是一些独立的可复用构件,能够在运行时被灵活的重新组合为各种不同的应用。
1. 软件软件是计算机系统中与硬件相互依存的部分,它是包括程序、数据及相关文档的完整集合。
2. 软件危机软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
3. 软件工程软件工程是研究和应用如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。
4. 软件生存周期软件生存周期是指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退役为止的整个过程,一般包括计划、分析、设计、实现、测试、集成、交付、维护等阶段。
5. 软件复用软件复用就是利用某些已开发的、对建立新系统有用的软件元素来生成新的软件系统。
6. 质量质量是产品或服务满足明确或隐含需求能力的特性和特征的集合。
在合同环境下,需求是明确的;在其他环境下,隐含的需求需要识别和定义。
7. 质量策划质量策划包括产品策划、管理和作业策划,以及质量计划的编制和质量改进的准备工作。
8. 质量改进质量改进是以最求最高的效益和效率为目标的持续性活动。
9. 质量控制质量控制是对流程和产品的符合性的评估,独立分析不足并予以更正使得产品与需求相符。
10. 质量保证质量保证是有计划的和系统性的活动,它对部件或产品满足确定的技术需求提供足够的信心。
11. 软件质量软件质量是指明确声明的功能和性能需求、明确文档化的开发标准、以及专业人员开发的软件所具有的所有隐含特征都得到满足。
12. 正式技术复审正式技术复审是一种由软件开发人员进行的软件质量保证活动,其目的是在软件的任何一种表示形式中发现功能、逻辑或实现的错误,验证经过复审的软件确实满足需求,保证软件符合预定义的标准,使软件按照一致的方式开发,使项目更易于管理。
13. ISOISO是一个组织的英语简称,代表International Organization for Standardization,即"国际标准化组织"。
14. ISO9000ISO9000是由ISO/TC176制定的关于质量管理和质量保证的国际标准。
软件工程名词解释软件工程是一门研究如何用系统化、规范化、可度量的方法来开发、运行和维护软件的学科。
在软件工程的领域中,有许多重要的名词,理解这些名词对于深入掌握软件工程的知识和实践具有重要意义。
首先,让我们来谈谈“需求分析”。
需求分析是软件开发过程中的关键步骤,它就像是为建造房屋绘制蓝图一样。
在这个阶段,开发团队与客户或用户进行深入的沟通,了解他们对软件的期望和要求。
这包括软件需要实现的功能、性能指标、安全性需求、用户界面的设计要求等等。
通过需求分析,开发团队能够明确软件的目标和范围,为后续的设计、编码和测试工作提供清晰的指导。
接下来是“软件设计”。
这是在明确了需求之后,对软件的架构、模块划分、数据结构、算法等方面进行规划和设计的过程。
好的软件设计应该具有高内聚、低耦合的特点,也就是说各个模块内部的功能紧密相关,而模块之间的相互依赖程度较低。
这样可以使得软件易于维护和扩展,提高软件的质量和可靠性。
“编码”则是将软件设计转化为实际可执行代码的过程。
开发人员使用特定的编程语言,按照设计的要求编写程序。
在编码过程中,需要遵循良好的编程规范和风格,保证代码的可读性、可维护性和可测试性。
“测试”是软件工程中不可或缺的环节。
它包括单元测试、集成测试、系统测试和验收测试等多种类型。
单元测试是对软件中的最小单元,如函数或模块进行测试,确保其功能的正确性。
集成测试则是检验各个模块组合在一起是否能够正常工作。
系统测试是在整个系统的层面上进行测试,包括功能、性能、兼容性等方面。
验收测试则是由用户或客户来确认软件是否满足他们的需求。
“软件维护”是软件在交付使用后,为了改正错误、满足新的需求或改进性能而进行的修改和完善工作。
软件维护可以分为纠错性维护、适应性维护、完善性维护和预防性维护。
纠错性维护是修复软件中存在的错误;适应性维护是使软件能够适应新的运行环境或硬件设备;完善性维护是增加新的功能或改进现有功能;预防性维护则是为了提高软件的可维护性和可靠性而进行的工作。
软件工程中的软件复用技术分析在当今快速发展的信息技术领域,软件工程面临着越来越高的要求和挑战。
为了提高软件开发的效率、质量和降低成本,软件复用技术逐渐成为软件工程中的重要手段。
软件复用,简单来说,就是在软件开发过程中,重复使用已有的软件资源,包括代码、设计、文档等。
这就好比在建造房屋时,不是每次都从制作砖头开始,而是可以直接使用已经生产好的砖头,从而节省时间和精力。
软件复用技术具有诸多显著的优势。
首先,它能够显著提高软件开发的效率。
通过复用已有的成熟组件和模块,开发人员无需从头开始构建每一个功能,从而大大缩短了开发周期。
想象一下,如果每次开发一个新的应用程序都要重新编写登录模块、用户管理模块等常见功能,那将是多么耗时费力的事情。
而有了软件复用,这些常见的功能模块可以直接拿来使用,或者在其基础上进行少量的修改和定制,就能满足新的需求。
其次,软件复用有助于提高软件的质量。
被复用的软件组件往往经过了多次的测试和优化,其稳定性和可靠性相对较高。
使用这些经过验证的组件,能够降低新开发软件中出现错误和缺陷的风险。
再者,软件复用还能降低开发成本。
由于减少了重复开发的工作量,相应的人力、时间和资源投入也会降低,从而使软件开发的成本得到有效控制。
在软件工程中,常见的软件复用形式多种多样。
代码复用是最基本的一种形式,开发人员可以直接复用他人编写的函数、类或者模块。
设计复用则是在更高层次上的复用,例如复用软件的架构设计、算法设计等。
还有一种是组件复用,这就像是在搭积木,将各种预定义好的组件组合在一起,构建出复杂的软件系统。
然而,要实现有效的软件复用,并非一帆风顺,也面临着一些挑战和问题。
首先是复用资源的查找和评估问题。
在庞大的软件资源库中,如何快速准确地找到符合需求的复用资源,并且评估其质量和适用性,是一个难题。
这需要建立有效的检索机制和评估标准。
其次,复用资源的适应性和兼容性也是需要考虑的。
不同的软件项目可能有不同的需求和环境,复用的资源可能需要进行一定的修改和调整才能适应新的情况。
可重用软件与软件复用的研究随着科技的发展,软件的使用越来越普及,而软件设计和开发也越来越成熟。
在软件开发的过程中,可重用软件和软件复用的概念也逐渐被重视和应用。
本文将从多个方面来探讨可重用软件和软件复用的研究。
一、可重用软件与软件复用的基本概念可重用软件和软件复用的概念近年来受到越来越多人的关注。
可重用软件是一种已经开发好的软件,可以在不同的系统中被重复使用。
而软件复用是利用已有的软件组件来进行开发新的软件。
可重用软件和软件复用的出现可以节省开发成本和时间,提高开发效率,并减少代码错误率,提高软件质量。
这两种方法已经在国内外很多公司的开发项目中得到了应用。
二、可重用软件和软件复用的优势与传统开发方法相比,可重用软件和软件复用有着很多优势。
首先,可重用软件可以减少软件编写的时间和成本,提高开发效率。
在软件开发的过程中,开发人员不需要重新编写已经存在的代码,节省时间和精力。
此外,可重用软件可以重复使用,能够提高软件的质量,减少错误率。
其次,软件复用可以降低软件的开发难度。
在软件复用的过程中,已经存在的代码可以用来解决一些常见的问题,减少重复的工作。
此外,软件复用可以提高系统的稳定性,因为复用的代码已经经过测试和验证,可以确认其可用性和可靠性。
最后,可重用软件和软件复用可以提高软件的可维护性。
在软件开发的过程中,对于一些经常需要修改的功能或者模块,开发人员可以利用已经存在的代码进行修改,而无需重新编写。
这样可以减少软件维护的成本和难度,提高软件的可维护性。
三、可重用软件和软件复用的实际应用可重用软件和软件复用已经在国内外商业项目中得到广泛应用。
例如,微软的. NET 框架就是一个成功的可重用软件,它可以提供一些经常使用的库和工具,使得开发人员可以更加高效地编写代码。
此外,有一些机构也提供一些可重用软件和软件复用的服务。
例如,Apache 开源组织提供了很多常用的软件库和工具,可以被广泛地应用在软件开发的过程中。
第八章软件复用一、复习要求1. 了解软件复用的概念、过程和意义。
2. 了解软件复用的类型、复用的目标和内容。
3. 了解针对复用的过程模型和论域工程。
4. 了解可复用构件的构造原则和质量标准。
5. 了解可复用构件库的组织,包括可复用构件的3C模型。
6. 了解软件的分层式体系结构。
7. 了解软件构件的复用过程(包括构件的检索与提取、理解与评价和修改)8. 了解面向对象的软件复用技术9. 了解支持软件复用的CASE工具需求二、内容提要1.软件复用的概念、过程和意义(1) 软件复用的概念对建立软件目标系统而言,所谓复用(Reuse),就是利用某些早先开发的对建立新软件系统有用的软件元素来生产新系统。
它是一项活动,而不是一个对象。
这里所说的软件元素可以包括需求规格说明、设计过程、设计规格说明、程序代码、测试用例、度量等等。
对于新的软件开发项目而言,它们或者是构成新软件系统的构件,或者是在软件开发过程中发挥某种作用。
通常将这些软件元素称为可复用构件。
早在50年代用机器语言编写程序的时期,计算正弦、余弦、对数等的标准子程序包就开创了复用的先河。
到70年代的早期,在语言、数据结构、操作系统、程序变换等方面各种技术的发展,都与代码的复用有关。
当时,复用的应用领域有限,软件的复用问题没有提到很重要的位置上来讨论。
70年代的中期和后期开始,为了缓解软件危机,许多人寄希望于软件复用技术,因为在提高软件生产率与质量,以及减少软件开发时间和成本的努力中软件复用已经成了关键因素。
当前,美、日一些大公司的资料表明,软件复用率最高可望达到90%,而且软件复用使得企业在及时满足市场、软件质量、软件开发费用和维护费用等方面得到显著的改进。
为了保证软件的复用,需要注意解决的问题主要有:▪复用必须以对被复用对象的理解为基础;▪如何表达对软件构件的需求;▪如何寻找有关的软件构件;▪如何识别是否满足要求;▪如何调整或修改构件使之满足要求;▪如何组装到新系统中;▪如何保证结果的正确性;▪如何进行效益的定量估算。
第十章软件复用10.1软件复用概述10.1.1 软件复用目的软件复用使得应用系统的开发不再采用一切从“零”开始的模式,可以充分利用过去应用系统开发中积累的知识和经验,从而可以高效、高质地开发和维护软件系统,主要表现在以下几个方面:1、缩短软件开发和维护的时间;2、降低软件开发和维护的成本;3、保证软件的可靠性;4、保证软件的一致性;5、保护投资者的利益。
10.1.2 软件复用的类型软件复用可以分为横向复用和纵向复用两种类型。
横向复用是指复用不同应用领域中的软件成份,如数据结构、算法、人机界面构件等。
纵向复用活动的关键在于领域分析:根据应用领域的特征和相似性,预测软件成份的可复用性。
一旦确认了软件成份的可复用价值,便进行开发,然后将开发得到的软件制品存入可复用构件库,供未来开发项目使用。
10.1.3 软件复用的内容软件复用的内容,除了源程序代码外,还有许多其它软件制品,甚至特定的分析建模方法、检查技术、质量保证过程等,均可以被复用。
C.Jones定义了10种可能复用的软件制品:(1)项目计划:软件项目计划的基本结构和许多内容,如SQA计划,均可以跨项目复用。
(2)成本估计:由于不同项目中常包含类似的功能,所以有可能在极少修改或不修改的情况下,复用对该功能的成本估计。
(3)体系结构:即使应用论域千差万别,但程序和数据的体系结构很少有截然不同的情形。
因此,有可能创建一组类属的体系结构模板,如事务处理结构,将这些模板作为可复用涉及的框架。
(4)需求模型和规格说明:数据流图、类模型等均可以复用。
(5)设计:系统和对象设计等是常见的复用成份。
(6)源代码(7)用户文档和技术文档:即使特定的应用不同,也有可能复用用户文档和技术文档中的大部分内容。
(8)用户界面:用户界面可能是最广泛地被复用的软件制品。
由于它可能占一个应用软件的60%的代码量,所以复用的效果最明显。
(9)数据:在大多数经常被复用的软件制品中,数据包括:内部表、列表和记录结构,以及文件和完整的数据库。
软件复⽤性软件复⽤介绍软件复⽤,即使⽤已存在的软件部件(softwaare components)来实现或者更新软件系统。
软件复⽤有两种视⾓:⼀是创造,⼆是使⽤。
创造即⾯向复⽤编程,开发可复⽤的软件。
使⽤即基于复⽤编程,利⽤已有的可复⽤软件搭建应⽤系统。
复⽤是现代软件编写中最重要的概念之⼀。
它具有很多优点,如:适应性,⾼可靠性,能够降低成本和开发时间等优点。
复⽤的花销1. 可复⽤的组件应该使⽤清晰的定义、开放的⽅式、简洁的接⼝以及简洁明了的⽂档。
在设计时,也要为未来的更新留⾜余地。
2. 复⽤的代价是很⾼的,它包括了有组织性的、有技巧的设计,复⽤中出现的多种变化,以及⽀撑这些变化的⼯具的开销与让⼈们适应新⼯具与新变化的开销。
同时,可复⽤的软件⼀般也具有⼀定缺陷,它的性能会稍稍差⼀些,针对更加普适的场景,缺少⾜够的针对性。
如何定义软件的可复⽤性可复⽤性通常涉及到软件的构建、打包、分发、安装、设置、应⽤、维护以及更新等问题。
⼀个具有⾼可复⽤性的软件应该⼩⽽精、与现⾏的多种标准相兼容、灵活可变、具有优良的可扩展性、使⽤泛型参数、具有模块化、在变化中维护较好的局部性、具有良好的稳定性,并且能提供丰富的⽂档以及帮助。
复⽤的层次软件复⽤具有多种层次,分别是:代码层⾯:包括实现的⽅法,对变量的定义等模块层⾯:最基本的就是类与接⼝运⾏库层⾯:各种API的设计与实现架构层⾯:使⽤各种框架,例如:springboot等现⾏的流⾏框架在这其中最主要的复⽤是在代码层⾯,它与程序员息息相关,这是最底层的复⽤。
代码复⽤1. ⽩盒复⽤:源代码可见,可修改与扩展。
它的可定制化程度⾼,需要对代码进⾏更加深⼊的了解,对它的修改会增加软件的复杂度。
2. ⿊盒复⽤:源代码不可见,并且不能修改。
我们可以调⽤API接⼝来使⽤内部的⿊盒代码,但是⽆法修改。
使⽤代码复⽤,在⼤多数情况下,我们都需要对源代码进⾏修改,以满⾜新的应⽤需求。
模块复⽤模块复⽤与类和接⼝有关,⼀个类是模块复⽤的基本单元,我们可以不必知道其中的代码,只需使⽤jar包导⼊该类,只需将其添加到classpath中,我们可以使⽤javap⼯具来得到⼀个类的公共⽅法的headers。
软件的复用技术及开发方法软件的复用技术及开发方法2.1软件的复用技术软件复用是指在开发新的软件系统时,对已有的软件或软件模块重新使用,该软件可以是己经存在的软件,也可以是专门的可复用组件〔8〕。
软件可复用性的高低影响到生产效率的高低、软件质量的好坏和系统可维护性的好坏。
在软件工程中面临的问题不是缺乏复用,而是缺乏广泛的、系统的复用。
软件复用包括构造可复用软件和用可复用软件进行构造。
构造可复用软件,一方面可以从现存的软件系统中抽取,另一方面通过改写或重新设计来实施。
Jones将软件复用的对象分为4种数据复用、体系结构复用、设计复用和程序复用。
这样,软件复用可在实现层、设计层和体系结构层三个层次上实现。
实现层软件复用是指对己有的程序代码进行复用,它包括源代码组件形式。
设计层软件复用是指对已有的软件系统的设计信息进行复用。
而体系结构层软件复用是最有效的软件复用,它主要是软件体系结构形式化的复用,即将软件的框架组织,全局结构设计作为复用对象。
可复用的软件体系结构则通常是显式地复用软件体系结构,并通过集成其他软件体系结构,建立新的更高层次的体系结构。
面向对象的软件复用机制主要有两种:继承和对象组合。
(1)继承继承是指子类可以从父类中直接获得某些特征和行为的能力,继承可作为代码复用和概念复用的手段。
作为代码复用的手段是指:子类通过继承父类的行为,一些代码就不必重写;作为概念复用的手段是指:子类共享父类的方法定义。
作为代码复用和概念复用手段的继承机制,在面向对象技术中,通过面向对象技术的一些主要机制来实现对“支持可维护性的可复用性”的支持。
这些面向对象的主要机制是:数据的抽象化、封装和多态性。
通过运用这些机制,继承可以在高层次上提供(相对于传统的低层次复用)可复用性:数据的抽象化和继承关系使得概念或定义可以复用;多态性使得实现和应用可以复用;而抽象化和封装可以保持和促进系统的可维护性。
这样一来,复用的焦点不再集中在函数和算法等具体实现细节上,而是集中在最重要的含有宏观商业逻辑的抽象层次上。
面向对象方法中的软件复用技术探讨摘要:软件复用(SoftWare Reuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。
软件复用是提高软件生产力和质量的一种重要技术。
本文介绍了软件复用的基本概念和关键技术,并阐述了面向对象方法中的软件复用技术。
关键词:软件复用;软件工程;面向对象1.引言近年来,随着计算机硬件的成本的不断下降,软件的生产规模日益增大,计算机的应用范围也得到了很大程度的普及,人们对软件系统的需求急剧上升,随之而来的软件规模越来越大,开发费用越来越高,开发的质量和效率不断降低的问题日益严重。
造成这种现象的一个主要原因就是软件开发组织对相同或相似系统做着大量的重复性工作。
要改变这种状况,软件复用是一条现实可行的途径。
2.软件复用概述2.1软件复用概念软件复用是一种计算机软件工程方法和理论,是指重复使用"为了复用目的而设计的软件"的过程。
它是一种系统化的方法,为了复用而进行设计,为了复用而开发,并且要有效地组织和管理这些复用产品,方便人们查找和使用,基于复用产品进行开发。
软件复用一定要有积累,首先要为了复用目的设计很多的复用产品,有了一定的积累后才能进行软件复用。
软件复用的主要思想是,将软件看成是由不同功能部分的"组件"所组成的有机体,每一个组件在设计编写时可以被设计成完成同类工作的通用工具,这样,如果完成各种工作的组件被建立起来以后,编写一特定软件的工作就变成了将各种不同组件组织连接体来的简单问题,这对于软件产品的最终质量和维护工作都有本质性的改变。
2.2软件复用意义通常情况下,应用软件系统的开发过程包含以下几个阶段:需求分析,设计,编码,测试,维护等。
当每个应用系统的开发都是从头开始时,在系统开发过程中就必然存在大量的重复劳动,如:用户需求获取的重复,需求分析和设计的重复,编码的重复,测试的重复和文档工作的重复等。
软件复用技术及其在软件开发中的应用摘要:软件复用技术是指将已有软件资源和成果应用于新的软件开发中,用于节省开发成本和提升开发效率的一种技术手段。
本文结合软件开发的实践经验,从软件复用的概念、实现方法和实际应用等方面进行了深入探讨,分析了软件复用技术的优点和局限性,并对如何有效地实现软件复用提出了建议。
关键词:软件复用;技术手段;开发成本;开发效率;局限性。
正文:1. 概念软件复用是指在软件开发过程中,将已有软件资源和成果运用到新的软件开发中的技术手段。
这些已有的软件资源和成果可以为程序代码、工具、文档、数据、流程等多个方面。
利用软件复用技术,开发者可以更快速高效地完成软件开发。
2. 实现方法要实现软件复用,需要进行以下几个步骤:(1)分析资源:分析已有的软件资源和成果,找出可复用部分。
(2)设计接口:设计复用部分与新开发部分之间的接口,保证复用部分的可用性和合理性。
(3)编写封装:编写封装代码,将复用部分封装成易于调用的模块或组件。
(4)测试验证:进行测试验证,保证复用部分的正确性和可靠性。
(5)维护更新:定期维护更新复用部分,确保其与新开发部分的协同工作。
3. 实际应用软件复用技术在实际软件开发中的应用非常广泛。
它可以通过以下几种方式帮助开发者更快福地开发出高质量的软件:(1)库文件:开发者可以使用已有的库文件,将其中的代码片段复用到新的项目中。
(2)框架:利用框架,开发者可以快速构建出程序的骨架,再针对不同的业务需求进行定制。
(3)组件:组件是指一些可独立使用的软件部件,如操作系统、数据库、UI组件等。
(4)代码重构:开发者可以对已有的代码进行重构,提取其中的可复用部分作为代码库。
4. 软件复用技术的优点和局限性(1)优点:软件复用技术可以大大节省软件开发成本和提升开发效率,减少重复工作,降低出错率。
同时,软件复用还可以提高系统的灵活性和可维护性。
(2)局限性:软件复用技术的局限性主要表现在以下几个方面:- 需要额外的索引和管理开销;- 可复用性需要在软件设计时考虑,增加了开发难度;- 依赖于复用部分的软件开发需要遵循一定的规范和标准。
软件复用与软件构件技术X杨芙清梅宏李克勤(北京大学计算机科学技术系,北京100871=提要>软件复用是在软件开发中避免重复劳动的解决方案.通过软件复用,可以提高软件开发的效率和质量.近十几年来,面向对象技术出现并逐步成为主流技术,为软件复用提供了基本的技术支持.软件复用研究重新成为热点,被视为解决软件危机,提高软件生产效率和质量的现实可行的途径.它通常可分为产品复用和过程复用两条途径.基于构件的复用是产品复用的主要形式,也是当前复用研究的焦点.同时,在分布对象研究领域,软件构件技术也是一个重要内容.当前软件构件技术被视为实现成功复用的关键因素之一.软件复用技术的广泛应用将促进软件产业的变革,使其重组分工,软件构件生产必将成为独立的行业而存在.这种变革对我国软件产业的发展将是一个很好的机遇.本文将对软件复用技术的发展作一全面综述,介绍软件复用的基本概念及关键技术,同时介绍国内外在软件复用方面的成功的研究和实践活动,包括我国政府支持的国家重点科技攻关项目青鸟工程,并对我国如何加强相关技术研究和应用,推动软件产业发展提出一些思路.关键词:软件工程,软件复用,软件构件技术,计算机辅助软件工程(CASESoftware Reuse and Software Compon ent Techn ologyYang Fuqing,M ei Hong,Li Keqin(Dept.of Computer Science&T echnology,Peking U niversity,Beijing100871Abstract:Software reuse offers a solution to eliminate r epeated work and improve efficiency and quality in the software development.In the recent ten years,object-oriented technology has appeared and become a mainstream technolog y,thereby providing fundamental technology suppor t for software reuse.Software r euse regains more attention in softw ar e engineer ing research and is consider ed a pratical and feasibleapproach to solving the software crisis.Software reuse i s gener ally classified into tw o catalogues:pro duct reuse and process r euse.Reuse based on software components is the important form o f product reuse and i s the major area of software reuse resear ch.A t the same time,softw are component technology plays an important role in distr ibuted object research.T herefore,software component technology is regarded as a key factor of successful software reuse.T he development and application of software r euse technology w ill facilitate the revolution of software development and reor ganize softw are industry.As a result,the dev elopment o f software components w ill become an independent and insepar able industr y.T he r evo lution offers a good chance for Chinese software development.T his paper i s a summarizat ion on the develop-ment of software reuse technology.It presents fundamental concepts and key techniques of software r euse.After introducing sev eral successful resear ch and pr actice in software reuse,including Jade Bird Project,a Chinese national key project suppor ted by the go ver nment,it proposes some ideas on how to reinforce research and application of related techniques and facilitate t he development of software industry in China.Key words:Softw ar e Engineering,Softw ar e Reuse,Softw ar e Component T echnology,CASE一、引言11为什么要复用通常情况下,应用软件系统的开发过程包含以下几个阶段:需求分析、设计、编码、测试、维护等.当每个应用系统的开发都是从头开始时,在系统开发过程中就必然存在大量的重复劳动,如:用户需求获取的重复、需求分析和设计的重复、编码的重复、测试的重复和文档工作的重复等.探讨应用系统的本质,可以发现其中通常包含三类成分:¹通用基本构件:是特定于计算机系统的构成成分,如基本的数据结构、用户界面元素等,它们可以存在于各种应用系统中;º领域共性构件:是应用系统所属领域的共性构成成分,它们存在于该领域的各个应用系统中;»应用专用构件:是每个应用系统的特有构成成分.应用系统开发中的重复劳动主要在于前两类构成成分的重复开发.第2期1999年2月电子学报ACT A ELECTRONICA SINICAVol.27No.2Feb.1999X1998年6月收到,1998年10月修改定稿.国家/九五0科技攻关项目及863高技术计划资助课题软件复用是在软件开发中避免重复劳动的解决方案,其出发点是应用系统的开发不再采用一切/从零开始0的模式,而是以已有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,如:需求分析结果、设计方案、源代码、测试计划及测试案例等,从而将开发的重点集中于应用的特有构成成分.通过软件复用,在应用系统开发中可以充分地利用已有的开发成果,消除了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率,同时,通过复用高质量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量.21复用的基本概念软件复用是指重复使用/为了复用目的而设计的软件0的过程[22].相应地,可复用软件是指为了复用目的而设计的软件.与软件复用的概念相关,重复使用软件的行为还可能是重复使用/并非为了复用目的而设计的软件0的过程,或在一个应用系统的不同版本间重复使用代码的过程,这两类行为都不属于严格意义上的软件复用.以下的类比有助于进一步说明软件复用的概念.在软件演化的过程中,重复使用的行为可能发生在三个维上:(1时间维:使用以前的软件版本作为新版本的基础,加入新功能,适应新需求,即软件维护.(2平台维:以某平台上的软件为基础,修改其和运行平台相关的部分,使其运行于新平台,即软件移植.(3应用维:将某软件(或其中构件用于其他应用系统中,新系统具有不同功能和用途,即真正的软件复用.这三种行为中都重复使用了现有的软件,但是,真正的复用是为了支持软件在应用维的演化,使用/为复用而开发的软件(构件0来更快、更好地开发新的应用系统.复用概念的第一次引入是在1968年N AT O 软件工程会议上,M cIlroy 的论文/大量生产的软件构件0中.在此以前,子程序的概念也体现了复用的思想.但其目的是为了节省当时昂贵的机器内存资源,并不是为了节省开发软件所需的人力资源.然而子程序的概念可以用于节省人力资源的目的,从而出现了通用子程序库,供程序员在编程时使用.例如,数学程序库就是非常成功的子程序复用的例子.在其后的发展过程中,有许多复用技术的研究成果和成功的复用实践活动.但是,复用技术在整体上对软件产业的影响却并不尽如人意.这是由于技术方面和非技术方面的种种因素造成的,其中技术上的不成熟是一个主要原因.近十几年来,面向对象技术出现并逐步成为主流技术,为软件复用提供了基本的技术支持.软件复用研究重新成为热点,被视为解决软件危机,提高软件生产效率和质量的现实可行的途径[12].分析传统产业的发展,其基本模式均是符合标准的零部件(构件生产以及基于标准构件的产品生产(组装,其中,构件是核心和基础,/复用0是必需的手段.实践表明,这种模式是产业工程化、工业化的必由之路.标准零部件生产业的独立存在和发展是产业形成规模经济的前提.机械、建筑等传统行业以及年轻的计算机硬件产业的成功发展均是基于这种模式并充分证明了这种模式的可行性和正确性.这种模式是软件产业发展的良好借鉴,软件产业要发展并形成规模经济,标准构件的生产和构件的复用是关键因素.这正是软件复用受到高度重视的根本原因.软件复用可以从多个角度进行考察[18].依据复用的对象,可以将软件复用分为产品复用和过程复用.产品复用指复用已有的软件构件,通过构件集成(组装得到新系统.过程复用指复用已有的软件开发过程,使用可复用的应用生成器来自动或半自动地生成所需系统.过程复用依赖于软件自动化技术的发展,目前只适用于一些特殊的应用领域.产品复用是目前现实的、主流的途径.依据对可复用信息进行复用的方式,可以将软件复用区分为黑盒(Black -box 复用和白盒(White -box 复用.黑盒复用指对已有构件不需作任何修改,直接进行复用.这是理想的复用方式.白盒复用指已有构件并不能完全符合用户需求,需要根据用户需求进行适应性修改后才可使用.而在大多数应用的组装过程中,构件的适应性修改是必需的.31如何实现复用软件复用有三个基本问题,一是必须有可以复用的对象;二是所复用的对象必须是有用的,三是复用者需要知道如何去使用被复用的对象.软件复用包括两个相关过程:可复用软件(构件的开发(Development for Reuse和基于可复用软件(构件的应用系统构造(集成和组装(Dev elo pment with Reuse.解决好这几个方面的问题才能实现真正成功的软件复用.与以上几个方面的问题相联系,实现软件复用的关键因素(技术和非技术因素主要包括:软件构件技术(Software Component T echnolo gy、领域工程(Do main Eng ineering、软件构架(Software Architecture、软件再工程(Softw are Reeng-i neering、开放系统(Open System、软件过程(Software Pro -cess、CASE 技术等以及各种非技术因素.二、实现软件复用的关键因素实现软件复用的各种技术因素和非技术因素是互相联系的.如图1所示,它们结合在一起,共同影响软件复用的实现.图1 实现软件复用的关键因素11软件构件技术构件(Component是指应用系统中可以明确辨识的构成69第 2 期杨芙清:软件复用与软件构件技术成分.而可复用构件(Reusable Component 是指具有相对独立的功能和可复用价值的构件.可复用构件应具备以下属性[22]:¹有用性(U sefulness:构件必须提供有用的功能;º可用性(U sability :构件必须易于理解和使用;»质量(Quality:构件及其变形必须能正确工作;¼适应性(A daptability:构件应该易于通过参数化等方式在不同语境中进行配置;½可移植性(Por tabilit y:构件应能在不同的硬件运行平台和软件环境中工作.随着对软件复用理解的深入,构件的概念已不再局限于源代码构件,而是延伸到需求、系统和软件的需求规则约、系统和软件的构架、文档、测试计划、测试案例和数据以及其他对开发活动有用的信息.这些信息都可以称为可复用软件构件.软件构件技术是支持软件复用的核心技术,是近几年来迅速发展并受到高度重视的一个学科分支.其主要研究内容包括:(1构件获取:有目的的构件生产和从已有系统中挖掘提取构件;(2构件模型:研究构件的本质特征及构件间的关系;(3构件描述语言:以构件模型为基础,解决构件的精确描述、理解及组装问题;(4构件分类与检索:研究构件分类策略、组织模式及检索策略,建立构件库系统,支持构件的有效管理;(5构件复合组装:在构件模型的基础上研究构件组装机制,包括源代码级的组装和基于构件对象互操作性的运行级组装;(6标准化:构件模型的标准化和构件库系统的标准化.21软件构架软件构架是对系统整体结构设计的刻划,包括全局组织与控制结构,构件间通讯、同步和数据访问的协议,设计元素间的功能分配,物理分布,设计元素集成,伸缩性和性能,设计选择等[9].研究软件构架对于进行高效的软件工程具有非常重要的意义:通过对软件构架的研究,有利于发现不同系统在较高级别上的共同特性;获得正确的构架对于进行正确的系统设计非常关键;对各种软件构架的深入了解,使得软件工程师可以根据一些原则在不同的软件构架之间作出选择;从构架的层次上表示系统,有利于系统较高级别性质的描述和分析.特别重要的是,在基于复用的软件开发中,为复用而开发的软件构架可以作为一种大粒度的、抽象级别较高的软件构件进行复用,而且软件构架还为构件的组装提供了基础和上下文,对于成功的复用具有非常重要的意义.软件构架研究如何快速、可靠地从可复用构件构造系统的方式,着重于软件系统自身的整体结构和构件间的互联.其中主要包括:软件构架原理和风格,软件构架的描述和规约,特定领域软件构架,构件向软件构架的集成机制等.31领域工程领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的过程,它覆盖了建立可复用软件构件的所有活动[22].领域是指一组具有相似或相近软件需求的应用系统所覆盖的功能区域.领域工程包括三个主要的阶段.(1领域分析:这个阶段的主要目标是获得领域模型(Do -main M odel.领域模型描述领域中系统之间的共同的需求[17].这个阶段的主要活动包括确定领域边界,识别信息源,分析领域中系统的需求,确定哪些需求是被领域中的系统广泛共享的,哪些是可变的,从而建立领域模型.(2领域设计:这个阶段的目标是获得领域构架(Domain -Specific Software Architecture,缩写为DSSA .DSSA 描述在领域模型中表示的需求的解决方案,它不是单个系统的表示,而是能够适应领域中多个系统的需求的一个高层次的设计[17].建立了领域模型之后,就可以派生出满足这些被建模的领域需求的DSSA.由于领域模型中的领域需求具有一定的变化性,DSSA 也要相应地具有变化性.(3领域实现:这个阶段的主要行为是定义将需求翻译到由可复用构件创建的系统的机制.根据所采用的复用策略和领域的成熟和稳定程度,这种机制可能是一组与领域模型和DSSA 相联系的可复用构件,也可能是应用系统的生成器.这些活动的产品(可复用的软件构件包括:领域模型、领域构架、领域特定的语言、代码生成器和代码构件等.在领域工程的实施过程中,可能涉及的人员包括[5]:(1最终用户:使用某领域中具体系统的人员;(2领域专家:提供关于领域中系统信息的人员,他应该熟悉该领域中系统的软件设计和实现、硬件限制、未来的用户需求及技术走向;(3领域分析员:收集领域信息、完成领域分析并提炼出领域产品(可复用软件构件的人员,他应该具有完备的关于复用的知识,并对分析的领域有一定程度的了解.(4领域分析产品(构件、构架的使用者:包括最终用户、应用系统的需求分析员和软件设计者.领域工程的主要产品和人员如图2所示.图2 领域工程41软件再工程软件复用中的一些问题与现有系统密切相关,如:现有软件系统如何适应当前技术的发展及需求的变化,采用更易于理解的、适应变化的、可复用的系统软件构架并提炼出可复用的软件构件?现存大量的遗产软件系统(Legacy Software由于技术的发展,正逐渐退出使用,如何对这些系统进行挖掘、整理,得到有用的软件构件?已有的软件构件随着时间的流逝会逐渐变得不可使用,如何对它们进行维护,以延长其生命70 电子学报1999年期,充分利用这些可复用构件?等等.软件再工程(Software R eengineering正是解决这些问题的主要技术手段.软件再工程是一个工程过程,它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式[7].再工程的基础是系统理解,包括对运行系统、源代码、设计、分析、文档等的全面理解.但在很多情况下,由于各类文档的丢失,只能对源代码进行理解,即程序理解.再工程的主要行为如图3所示.图3 软件再工程51开放系统技术开放系统技术的基本原则是在系统的开发中使用接口标准,同时使用符合接口标准的实现.这些为系统开发中的设计决策,特别是对于系统的演化,提供了一个稳定的基础,同时,也为系统(子系统间的互操作提供了保证.开放系统技术具有在保持(甚至是提高系统效率的前提下降低开发成本、缩短开发周期的可能.对于稳定的接口标准的依赖,使得开发系统更容易适应技术的进步[8].当前,以解决异构环境中的互操作为目标的分布对象技术是开放系统技术中新的主流技术.开放系统技术为软件复用提供了良好的支持.特别是分布对象技术使得符合接口标准的构件可以方便地以/即插即用0的方式组装到系统中,实现黑盒复用.这样,在符合接口标准的前提下,构件就可以独立地进行开发,从而形成独立的构件制造业.61软件过程软件过程又称软件生存周期过程,是软件生存周期内为达到一定目标而必须实施的一系列相关过程的集合.一个良好定义的软件过程对软件开发的质量和效率有着重要影响.当前,软件过程研究以及企业的软件过程改善已成为软件工程界的热点,并已出现了一些实用的过程模型标准,如CM M 、ISO 9001/T ickIT 等.然而,基于构件复用的软件开发过程和传统的一切从头开始的软件开发过程有着实质性的不同,探讨适应于软件复用的软件过程自然就成为一个迫切的问题.71C ASE 技术随着软件工程思想的日益深入人心,以计算机辅助开发软件为目标的CASE(Computer Aided Software Engineer ing 技术越来越为众多的软件开发人员所接受,CA SE 工具和CASE 环境得到越来越广泛的应用.CASE 技术对软件工程的很多方面,例如分析、设计、代码生成、测试、版本控制和配置管理、再工程、软件过程、项目管理等等,都可以提供有力的自动或半自动支持.CA SE 技术的应用,可以帮助软件开发人员控制软件开发中的复杂性,有利于提高软件开发的效率和质量.软件复用同样需要CASE 技术的支持.CA SE 技术中与软件复用相关的主要研究内容包括:在面向复用的软件开发中,可复用构件的抽取、描述、分类和存储;在基于复用的软件开发中,可复用构件的检索、提取和组装;可复用构件的度量等等.81非技术因素除了上述的技术因素以外,软件复用还涉及众多的非技术因素,如:机构组织如何适应复用的需求;管理方法如何适应复用的需求;开发人员知识的更新;创造性和工程化的关系;开发人员的心理障碍;知识产权问题;保守商业秘密的问题;复用前期投入的经济考虑;标准化问题等等.这些因素超出了本文的范围,这里不再详细讨论.三、复用的研究与实践活动11领域工程研究实践表明,软件复用在特定领域内更容易获得成功.因此,领域工程受到高度重视,已有许多研究成果.这里将介绍三个有代表性的工作.卡内基#梅隆大学的软件工程研究所(CM U /SEI提出了面向特征的领域分析方法(F eature -O riented Domain AnalysisM ethod,缩写为FODA 方法[8].它支持对某领域中系统共性和个性的发现、分析和文档记录.FODA 的过程分为三个阶段:上下文分析(Context A nalysis、领域建模(Domain M ode-l ing、构架建模(A rchitecture M odeling.(1上下文分析:上下文分析的目标是定义领域的范围.在这个阶段要分析领域与外部元素间的关系,例如不同的操作环境,不同的数据需求等,还要对可变性进行评价.上下文分析的结果是上下文模型.(2领域建模:领域的范围确定后,领域建模阶段提供了一些步骤来分析领域中的应用的共同性和差异,并产生领域模型.领域建模阶段主要包含三种行为:#特征分析(F eature Analysis.在特征分析阶段,要获得客户或最终用户对一类系统的一般能力的理解,即特征.特征描述了领域应用的上下文、需要的操作和属性、以及表示的变化.#信息分析(I nformation A nalysis.在信息分析中,要定义和分析为实现领域中应用所需的领域知识和数据需求.信息分析的目标是用领域实体及其相互之间的关系表示领域知识,并使它们在操作分析和构架建模中可以用来派生对象和数据定义.#操作分析(Oper ational A nalysis.在操作分析中,要识别领域中应用的行为特性,例如数据流和控制流的共同性和差异、有限状态自动机模型等.(3构架建模:这个阶段为领域中的应用提供软件解决方案.在这个阶段中开发出构架模型,即领域中应用的高层设计.这个阶段的焦点是识别并发进程和面向领域的共同模块.这个阶段中定义进程,并将定义在领域模型中的特征、功能和数据对象分配到进程和模块中.F ODA 方法已成功地应用于美国空军运动控制等领域.71第 2 期杨芙清:软件复用与软件构件技术在美国国防部高级研究项目署(AR PA 资助下,W ill T racz 提出了领域构架方法(Domain -Specific Software Arch-itecture,缩写为(DSSA 方法[22].在最高的级别上,该方法有五个阶段.每个阶段可以进一步划分为一些步骤或子阶段.每个阶段包括一组需要回答的问题,一组需要的输入、一组将产生的输出和验证标准.该方法的领域工程过程是并发的(con -curr ent、递归的(recursive和反复的(iterativ e.或者可以说,它是螺旋型的(spiral.完成该过程可能需要对每个阶段经历几遍,每次增加更多的细节.该领域工程过程的五个阶段是:(1定义领域范围:重点是确定领域中包含哪些元素以及领域工程过程到何时结束.这个阶段的一个主要输出是领域中的应用需要满足的一系列用户的需求;(2定义领域特定的元素:目标是制订领域字典和领域术语的同义词词典.在领域工程过程的前一个阶段产生的高层次块图中增加更多的细节,特别是识别领域中应用间的共同性和差异性;(3定义领域特定的设计和实现需求约束:目标是描述解空间中的特性.不仅要识别约束,并且要记录约束对设计和实现决定造成的后果,还要记录对处理这些问题时产生的所有问题的讨论;(4定义领域模型和构架:目标是产生DSSA,并说明构成它的模块或构件的语法和语义;(5产生、搜集可复用产品:目标是为DSSA 增加构件使得它可以被用来产生问题域中的新应用.ST AR S 领域分析过程(Domain A nalysis Process分四个阶段,每个阶段用结构化分析与设计技术描述,使用SADT 图[22]:(1准备领域信息:定义领域,按自顶向下方式完成高级功能分析;(2分类领域实体:按自底向上方式识别和描述对象及操作,并构造领域字典;(3导出领域模型:结合上述信息,构造基于可复用构件的类属功能模型;(4扩展模型并分类:应用并确认模型.21产品线系统产品线系统(Product L ine System是CM U /SEI 提出的产品开发的组织方式.产品线集中体现了软件复用思想.经验表明,单靠技术方法并不能保证成功的产品线生产能力,经济、组织、管理和过程在建立和维护产品线中起到了关键作用.一个产品线是共享一组共同设计及标准的产品族,从市场角度看是在某市场片断中的一组相似的产品.建立产品线是根据生产的经济学,使产品族可复用构件能达到最大限度的复用目的.产品线方法可以通过各种可复用软件构件,如需求、需求规约、构架、代码构件、文档、测试策略和计划、测试案例和数据、开发人员的知识和技能、过程、方法及工具等,支持最大限度的软件复用.产品线也是基于在相同产品价格条件下提高竞争力的商业考虑.产品线系统已有成功的应用实例.图4和图5分别是瑞典CelsiusT ech System 公司和美国空军电子系统中心(ESC的产品线系统[3、6].这两个产品线系统的共同特点是构架组、构件组和集成组的分离.构架组负责产品线系统构架的定义和演化.构件组负责根据产品线系统构架,生产和管理可复用构件.集成组则根据具体客户的需求,利用产品线系统构架和可复用构件进行具体的系统集成。
软件复用名词解释
所谓软件复用,就是用某种相同的方法把几个程序或模块合并成一个新的,也就是在它们的组成、结构以及工作原理等基本要素不变的情况下进行重新组织,使之具有更好的适应性。
软件复用的定义:计算机系统中所谓的“复用”指的是将一个计算机程序模块从头到尾地执行完毕后,然后再把执行完的程序(包括中间结果)抽出来(如把结果存入磁盘),再把执行过程中所产生的
一些文件加以分析和整理后,继续进行执行。
可见这里的“复用”就是指程序模块的运行。
4。
简单小型复用计算机的体系结构通常采用微型计算机作为主机,由许多功能部件如数据处理器( CPU)、控制器(或微控制器)、输入/输出设备和外围设备组成。
5。
系统软件与应用软件按照我国的计算机发展水平,目前系统
软件、应用软件都属于开放型体系结构。
开放型体系结构的基础是标准化。
实现开放式体系结构的关键是代码级和语义级的标准化。
代码级标准化的关键是语法分析,语义级标准化的关键是统一编译器接口。
由于软件复用需要满足的条件太多,因此很难给出严格的定义,而且,软件复用往往需要根据特定的环境,利用各种有效的技术手段来实现,所以软件复用在实践中可以采取不同的复用形式。
常见的有:综合复用、产品复用、功能复用和项目复用等。
6。
分布式系统及其复用由多台计算机互联成的一种计算机系统
称为分布式系统。
分布式系统是由若干台计算机通过网络互连而组成
的大规模计算机系统,可以分布在不同地点的远程计算机上,每台计算机既可以独立工作,也可以协同工作,即分布式操作系统。
这样,每台计算机可以同时运行多个用户的程序,这就使得资源能够充分共享,从而提高了资源的利用率。
7。
分布式操作系统
8。
计算机系统在设计、开发和使用过程中,由于种种原因必然会造成不同程度的各种浪费,诸如人力的浪费,计算机及其软硬件设施的浪费,材料和物质的浪费等。
有效的管理和合理的使用这些浪费,对提高整个计算机系统的使用效率和经济效益是非常重要的。
这些有效的管理和合理的使用,需要依靠管理信息系统(也称为管理软件)的支持,尤其是分布式管理信息系统。
11。
项目管理及其复用
16。