摘要:软件复用技术就是将原来的软件部分去组成新的软件系统结构。那么被复用的软件部分就称为可复用构件,即使对可复用的构件照搬地使用还是做一定的调整然后再继续使用,可以说只要是构建新的软件,则就可以称为复用。软件复用不仅是简单地对程序的复用,而且还包含对软件开发过程中的任何行为所生产的制成品的复用,例如项目计划、可行性研究报告、需求分析、模型定义、模型设计、研发说明、源程序、用例测试等等。
关键词:软件复用
中图分类号:TP311.52 文献标识码:A文章编号:1007-9599 (2011) 05-0000-02
Research and Analysis of the Software Reuse Technology
Fu Mingbai
(Zhaotong Teacher"s College,Zhaotong657000,China)
Abstract:Software reuse is the software composition that will have been already had to used for constructing new software system.the software can composition being replied to use generally call to reply to use to reach a piece and regardless use again towards canning reply to use to reach a piece intactly an use being after still making an appropriate modification,as long as use to construct new software,then can call to reply to use.The software reuse not only is to use to the procedure"s replying,it still includesoftware in the middle of the production line any activity produce of the replying of finished product is used and planned such as the item,possibility report,need definition,analysis model,design model,elaborate,the source procedure,test is used and so on.
Keywords:Software reuse
软件复用是指一种计算机软件工程的理论方法。上世纪60年代的“软件危机”使软件开发人员懂得难于维护的软件成本是非常昂贵的,当软件的规模持续扩展时,那么软件的总体综合成本可以说是很难能够负担起的,并且即使投入了昂贵的成本也很难生产出合格的产品,解决这种问题的重要方法之一就是软件复用的思想。
一、复用的障碍
对软件可复用性不断增加的关注意味着什么这一问题仍然存在混乱,复用的障碍主要体现在以下五个方面:
(一)技术原因
构件和系统应用之间的差别。许多技术开发人员开发出的构件,可以在被另外的技术人员开发的系统中使用,从对外接口到内容都恰好合适,或做很少量的改动,这的确是不容易实现的。软件复用由于受到技术发展水平的限制,常常局限在代码层次或者函数包的复用,随着技术的变革,包括面向对象语言和方法带来的更好的面向应用领域的抽象能力、各种分布式组件方法与标准的提出、过程方法的成熟,基于组件的软件开发——通过组装各种组件来构造系统被认为是实现灵活的软件架构、实现软件复用的最佳途径。基于组件的开发给软件产业带来一种新的思考方法和理论基础,它在传统面向对象和分布式组件对象方法的基础上以一种更加高层的视角来分析应用和设计软件,能够有效地控制软件开发与部署的复杂性,构建具有清晰模块化结构、更易于维护、演进、重用的软件系统。
(二)人的原因
软件研发是一种建设性工作,长时间在这个行业的人员养成了特定的习惯:更想自己去创造而非借用他人成果,特别是要对别人研发的软件作适当的改动然后使用时,他们往往喜欢自己另外再开发一个。
(三)管理原因
在软件管理中,从原来的使用与一些与复用的目标很不协同的规则,如计算工作量时,对复用的部分打不少的折扣,有时候不计算工作量;另外,不是在项目初始阶段以可复用构件为目标,而是全部任务结束后,从中去努力寻找可复用构件。这些短处阻碍了可复用软件水平规模的前进,甚至会打击投身于复用的人员的热情。
(四)教育原因
在软件科学技术的教育与培训中,缺少关于软件复用的东西,这方面的资料不多,即使在其它资料中提到软件复用,其中的篇幅与内容也相当少见。
(五)法律原因
在法律上还存在某些东西,例如,一个可复用构件在某种系统应用中出现问题,而构件的研发者和系统应用的研发者不是同一厂家,那么责任应该由谁担负?此外,在版权、有关政策等等方面也有某些没有解决的问题。
二、领域工程
(一)领域工程简介
领域工程是实现大规模,系统化软件复用关键技术之一。针对复用的过程模型,均强调并行的轨迹,在轨迹中领域工程和软件工程同时进行。经过领域工程标识、构造、分类和传播的软件能很好的适应现在和将来的的软件系统。领域工程的总目标是建立一种模式,让软件工程师复用这些软件并应用于现在和将来的软件系统。领域工程包括三个主要的活动——分析、构造和传播。
(二)领域分析
领域分析适用于任意软件工程范型,并且可以用于传统的以及面向对象的软件开发。相关注意事项如下:
1.领域分析不是针对某个特定的软件系统,而是针对一类软件系统的共同的特征、知识和需求。比需求分析更一般、更抽象、更广泛的特征。
2.领域分析(Domain Analysis)是对一类应用系统的共同应用领域进行系统化分析,以发现该领域的共同知识、需求及其应用系统的共同特征。
3.领域分析又称领域工程(Domain Engineering),是软件工程的发展与延伸。
4.领域分析是一项比系统分析更难的工作。领域分析方法可采用结构化方法和面向对象方法,而后者将成为主流。
三、建造可复用构件
软件构架不是解决软件的某个局部问题,而是描述了软件的总体结构。它描述了一类软件的总体构成情况,包括该软件有哪些主要部件以及各部件之间的关系,但是不涉及每个部件的细节。我们考虑特定于复用的问题,它们是对完整的软件工程实践的补充。
(一)构件的分类
大多数的构件分类模式可以归纳为以下三种类型:
1.枚举分类
通过定义一个层次结构来对构件进行分类。构件库中的可复用构件按照某种标准被分成了若干个大类,而每个大类中的构件再被划分成若干个小类,依此类推,这样就形成了一个构件分类的层次结构:
2.刻面分类
一个刻面描述构件某一个方面的特征。刻面分类则是从不同的侧面对构件进行分类,每一种分类方式称为一个刻面。不同的刻面根据其重要性可以设置不同的优先级。对构件的每个刻面赋予相应的值,用以描述该构件。刻面分类具有较好的灵活性,易于加入新的刻面值,因此刻面分类比枚举分类更易于扩展和修改。
该方法首先是为构件库中的所有构件定义一组属性,并赋予相应的属性值。开发人员通过指定一组属性值在构件库中对构件进行检索。
3.属性-值分类
该方法首先是为构件库中的所有构件定义一组属性,并赋予相应的属性值。开发人员通过指定一组属性值在构件库中对构件进行检索。
该分类方法与刻面分类方法有几点不同之处:
(1)属性的数量没有限制,而刻面描述一般限制在7或8个刻面;
(2)属性没有优先级,而刻面根据其重要程度,有相应的优先级;
(二)构造方法
和设计一样,可复用软件制品的构造依赖于软件工程方法,构造均可以使用传统的第三代语言、第四代语言和代码生成器、可视化程序设计技术、或更高级的技术方法来完成。
领域分析的结果为构件的选取和开发提供了指导性的原则。除了有领域分析作为其基础,构件开发还需要遵循一定的设计概念和原则。
构件应该具有相当的一般性和抽象性,能够用于满足一类相似的需求,一个过于特殊的构件是很难被重复使用的。即使一个通用性很高的构件也不可能完全适应用户的需求和运行环境,所以在一个构件被不同的应用复用时,对它的某些部分进行修改是不可避免的。所以构件开发时,需要为用户对构件的调整和修改留出余地。例如继承、参数化、模板和宏都是典型的提高构件灵活性和可调整性的机制。
(三)基于构件的开发
基于构件的开发是使用可复用构件组装开发新的应用系统。
1.构件的鉴定
构件的鉴定是对打算用于软件开发的构件能否满足应用的需要,达到应用所需要的性能、可靠性、质量的保证进行相应的考察。
2.构件的调整
通常在将构件复用到应用中时,构件需要进行必要的调整和修改才能适应应用的需要。
3.构件的组装
构件的组装是将经过鉴定和调整以后的构件组装到应用系统中。通常为了达到此目的,还必须建一个基础设施提供构件协同的模型和使构件能够交互并完成共同任务的特定服务。
在同一个领域的应用系统之间,不但可以找到其共同的软件构件,而且可以发现共同的或相似的软件体系结构。专向领域的复用开拓了一种新的复用境界,被复用的不仅是可实现某种局部功能的软件构件,而且可以是一些形成系统总体结构,并把各个可复用构件连接到一起的软件构架。电子产品的主电路板可看成该产品可复用的构架,它把许多可复用的电子器件连接在一起。软件构架是一种由特定领域的软件体系结构所决定的软件构造框架。
四、小结
复用的过程里有两个处于并发状态的子过程:领域工程以及软件工程。首先,领域工程是在一个特殊环境内标识、构造、分类和传播一组软件制品。然后,软件工程可在新系统开发中选取这些软件制品作为复用。对可复用构件的分析、设计技术采用和在良好的软件工程实践中使用的相同原则和概念。可复用构件应该在一个环境中设计,该环境为每个应用领域建立标准数据结构、接口协议和程序体系结构。
五、结束语
软件产品也是一种精神的创造产品,它的出现几乎完全是人脑思考的产生,它的存在价值,也几乎完全在于其中所产生的思想,人脑所能达到的复杂程度,比人类制造的客观物质产品更加复杂,因此,采用软件的复用技术更为困难和不易。这些和很多其他问题还在继续困扰研究者和产业专业人员,他们正在努力使软件构件复用成为主流的软件工程方法。
参考文献
[1]Adler,R.M.“Emerging Standards for Component Software,”IEEE Computer,vol 28,no.3,March 1995,pp.68-77
[2]Carma McClure《软件复用技术在系统开发过程中考虑复用》,(美),February 2003
[3]谢颖苇.软件复用技术及其应用研究[D].吉林大学硕士学位论文,2007
[作者简介]
付明柏(1967-),男,云南镇雄人,副教授,硕士,研究方向:软件工程。