搜档网
当前位置:搜档网 › 基于构件的软件复用技术研究与应用实践

基于构件的软件复用技术研究与应用实践

基于构件的软件复用技术研究与应用实践
基于构件的软件复用技术研究与应用实践

基于构件的软件复用技术研究与应用实践

基于构件的软件复用技术研究

谷今杰莫继红 ((湖南大学软件学院,长沙410082)

通常情况下.应用软件系统的开发过程包含以下几个阶段:需求分析、设计、编码、测试、维护等。当每个应用系统的开发都是从头开始时,在系统开发过程中就必然存在大量的重复劳动,如:用户需求获取的重复、需求分析、编码、测试的重复和文档等。探讨应用系统的本质,发现其中通常包含:①通用基本构件:是特定于计算机系统的构成成分,如基本的数据结构、用户界面元素等,它们可以存在于各种应用系统中;②领域共性构件:是应用系统所属领域的共性构成成分,它们存在于该领域的各个应用系统中;③应用专用构件:是每个应用系统的特有构成成分。应用系统开发中重复劳动主要在于前两类构成成分的重复开发。

软件复用是在软件开发中避免重复劳动的解决方案。其出发点是应用系统的开发不再采用一切“从零开始”的模式,而是以已有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,如:需求分析结果、设计方案、源代码、测试计划及测试案例等.从而将开发的重点集中于应用的特有构成成分。

通过软件复用,在应用系统开发中可以充分利用已有的开发成果.消除了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率:同时,通过复用高质量的已有开发成果时,避免了重新开发可能引入的错误,从而提高软件的质量。

软件复用指重复使用“为了复用目的而设计的软件”的过程。相应地,可复用软件是指为了复用目的而设计的软件。与软件复用的概念相关,重复使用软件的行为还可能是重复使用“并非为了复用目的而设计的软件”的过程,或在一个应用系统中的不同版本间重复使用代码的过程,这两类行为都不属于严格意义上的软件复用。真正的复用是为了支持软件,使用“为复用而开发的软件(构件)”来更快、更好地开发新的应用系统。

复用技术在整体上对软件产业的影响却并不尽如意。这是由于技术方面和非技术方面的种种因素造成的,其中技术上的不成熟是一个主要原因。近十几年来,面向对象技术出现并逐步成为主流技术,为软件复用提供了基本的技术支持。软件复用研究重新成为热点。被视为解决软件危机。提高软件生产效率和质量的现实可行途径。

(复用分类)软件复用可以从多个角度进行考察。依据复用的对象,可以将软件复用分为产品复用和过程复用。产品复用指复用已有的软件构件.通过构件集成(组装)得到新系统。过程复用指复用已有的软件开发过程.使用可复用的应用生成器来自动或半自动地生成所需系统。过程复用依赖于软件自动化技术的发展,目前只适应于一些特殊的应用领域。产品复用是目前现实的、主流的途径。

依据对可复用信息进行复用的方式。可以将软件复用区分为黑盒(Black—box)复用和白盒(White—box)复用。黑盒复用指对已有构件不需作任何修改,直接进行复用。这是理想的复用方式。白盒复用指已有构件并不能完全符合用户的需求。需要根据用户需求进行适应性修改后才使用。而在大多数应用的组装过程中,构件适应性修改是必需的。

软件复用按抽象程度的高低, 可以划分为如下的复用级别:

(1) 代码的复用, 包括目标代码和源代码的复用。当前大部分编程语言的运行支持系统都提供了连接(L ink) 、绑定(Binding) 等功能来支持这种复用; ( 2) 设计的复用, 设计结果比源程序的抽象级别更高, 因此它的复用受到实现环境的影响较少, 从而使可复用构件被复用的机会更多, 并且所需的修改更少; (3) 分析的

复用, 可复用的分析成分是针对问题域的某些事物(问题) 的抽象程度更高的解法。

软件复用有三个基本问题.一是必须有可一是必须有可以复用的对象。二是所复用的对象必须是有用的。三是复用者需要知道如何去使用被复用的对象。软件复用包括两个相关的过程:可复用软件(构件)的开发(Development, for Reuse)和基本可复用软件(构件)的应用系统构造(集成和组装)(Development with Reuse)。解决好这几个方面的问题才能实现真正成功的软件复用。

2构件技术

2.1构件技术模型

构件复用是软件复用的核心问题,因此有关构件的研究得到日益重视并且形成了软件工程学科的一个分支。在产业界正在逐渐形成一种产业模式,即构件生产商负责生产构件,构件销售商负责构件的销售,构件集成商负责构件集成。目前已经商品化的构件有微软的COM/DCOM、Sun公司的Java Bean和对象管理组织(OMG)的CORBA。

构件是一种不透明的功能实现.要通过构件模型进行构造,要能够与第三方进行合成,这样就存在构件模型标准化的问题。构件模型的标准化要能同时满足构件生产者和构件消费者需求,学术界普遍接受的是“3C”(Concept,Content,Context)模型[2],即component=(Concept,Content,Context),在这个模型中:Concept:概念.描述软件完成什么功能。描述构件的接口和语义,概念和内容(Content)能够进行通信;Content:内容,描述如何实现这个构件,一般情况下,构件的内容信息对临时用户是隐藏的。只有需要对构件作修改的用户才是可知的;

Context:上下文、组件在其适用领域内的配置,通过对概念、操作和实现特征的详细说明。上下文能够使软件寻找到满足应用需求的组件。

2.2构件的开发

构件的开发技术有多种.其中比较有代表性的是CBSD技术。CBSD是CMU/SEI提出的构件设计参考模式,这种设计模式的原则是:组件具的扩充独立性:组件模型必须给出一些标准以保证独立开发的组件能够配置到公共的环境中,而不会出现不可预知的问题;开发时间短,这样会减少整个开发和维护费用;提高可预知性。

基于构件的系统来源于基于构件的设计策略,构件技术包括支持这种设计策略的产品的概念,这种设计策略与组件描述的设计模式和交互模式的构造类型非常相近,组件(即构件)反映的设计模式如图1。

图1中,①构件实现是能够在物理或者逻辑设备中执行的软件实现。一个构件可以有一个或者多个接口②。构件满足一定的规范,这里称为契约,这些契约的作用是保证独立开发的构件符合给定的规则,以便以可预知的方式进行交互并配置到标准的建造环境和运行环境④中。基于构件的系统是建立在少数不同的构件类型上。每一个构件的类型在⑤中扮演的一个特定的角色,由接口②对其进行描述。构件模型⑥是组件类型、接口和组件间相互作用的模式说明书集合。构件构架⑦提供多种服务⑧来支持和加强构件模型。

3 COTS构件

当前的软件已不再是一个简单的系统.规模越来越大,通常是一复杂的“系统中的系统”。大型软件尤其如此,从头开始做每一件事情来建造系统几乎是不可能的。于是出现了COTS(Commercial Off The Shelf)技术。COTS构件是从市场上采购得到的软件组件,它由第三方开发。系统开发者不能访问源代码,相同的COTS构件可能有很多用户最后才能得到健壮的系统。

C0码构件有以下的特征:COTS软件不能被修改,这是COTS软件的固有特性.系统集成者购买组件后,不需要对构件作修改:有时为了把所有的构件进行了太多的修改就不再被认为是COTS组件了;系统集成者对COTS构件没有升级和维护控制权,软件升级和维护是COTS组件开发者的职责。依据COTS组件在系统中所起的作用不同。COTS分为两类:一类是一个COTS系统中,不是单一的COTS 构件支配整个系统,而是由一组绑定在一起构成的;另一类是在COTS解决方案中。使用一个主COTS 构件作为主解决方案。其他的传统的构件作为辅助的软件或者插件加入到系统中。

使用COTS构件突出的优点是能降低软件开发的成本.购买现有的软件比自己开发所需的成本低,软件的健壮性要高,因为市场上提供的COTS软件使用的是成熟的技术,使用这样的构件往往比自己开发的构件的可靠性要高。但是COTS构件的缺点是以“黑盒”提供给用户,没有源代码,维护

困难.版本易于变化。不同COTS之间存在潜在的冲突。软件构件提供的功能过少或者过多。

4基于Agent的软件复用技术

Agent也被称为软件Agent或智能Agent.许多研究人员依据不同的研究内容和目标对术语“Agent”赋予了不同含义。Woodridge和Jennings对“Agent”的不同定义进行了总结,认为“Agent”按其用法可分为两种.也就是Agent的两种定义[3]:弱定义和强定义。Agent的弱定义是指Agent 具有的自主性、社会性、反应性、能动性、时间连续性以及面向目标的特性。Agent强定义指Agent 除了具有弱定义中的特性以外,通常还具有:可移动性、理性、适应性、协作性。

面向对象技术用于对被动实体的抽象较好。但是,它无法实现对活动实体的抽象;而Agent技术能够较好地实现对活动实体的抽象。基于Agent的软件复用是软件工程的一个新的研究领域,面向Agent编程AOP(Agent—Oriented Programming)的概念是Shoham在1993年提出的。因此,软件技术的发展经历00(Object Oriented)技术后。并正在Agent技术方向发展。人工智能专家Guilfoyle在1995年就断言:10年后大多数新兴信息技术的发展将接受:Agent理论与技术手段是解决2l世纪系统建模和网络化协同的重要手段【4】。

基于构件的复用必须解决的需求有:用户能对所需要的构件进行搜索;需要有对已有复用该构件的用户版本进行升级机制;对应用该组构件生产商和用户提供一种能够用相同的技术语言交流的工具;构件生产者和构件复用者可以灵活地加入系统和从系统中撤销;Internet上基于构件复用的工具一定是复用者和生产者的环境的集成的部分。

要满足以上需求。基于组件复用的软件开发过程实际上成为被多Agent系统理解和操作的过程,这里称为“面向Agent的软件复用”。其基本思想是:在可复用的通用多Agent机构中,对Agent 结构中的每一个元素都进行定义,这些元素包括Agent需要的知识、计划、行为和Agent之间的交互等,每一个具体Agent都是在基本Agent结构的基础上进行创建。

Internet环境下基于Agent的软件复用的一般结构如图2所示。

依据上述结构,构建基于构件的软件复用的多Agent系统结构时,必须要考虑的因素有:选用哪几种类型的Agent,多Agent人分工与协作,Agent知识库的建立等。构建的方法和步聚包括:识别Agent.对任务进行提炼,定义本体(Ontology),定义行为计划,表示行为和定义交互作用,构造原型。使用Java的RIM能够很好地实现通讯模块的功能,这种结构中需要对每一个实例化的Agent定义必需的知识。这些知识概括为:计划、行为、与其他Agent的交互等。

5结论

不同的复用技术,得到复用构件或软件的粒度大小不一样,其设计方法和模式也不一样。比较常用和成熟的是构件复用。对于大型系统需要更大粒度的软件复用一COTS,但其缺点是不能访问源代码,在Internet环境下,本人提出了基于Agent的软件复用和方法由Agent在网络环境下自主地进行构件的寻找和匹配,实现软件的复用。软件复用是解决软件危机的有效途径,促进了软件向产业化和健康化的方向发展。

参考文献

1杨美清.软件复用及其相关技术.计算机世界.1990—03—15:(5)

2 Tveit A.A survery of agent-oriented software engineering.http:

//www.eleomag.corn/around/2003.5

3齐艳平.面Agent与面向对象.计算机科学

4 Syeara K Desker K,Pannu A.et a1.Distributed intelligent agents.http:

//www.cs.eemu.Edu/softanents/.1996

5 Sommervile L Software engineering(4th ed).Mass:Addison-Wesley,

Reading,1992

6 Giorgini P,Kolp M,Mylopoulos J.Multi-agent and software agent

and software architecture:a comparative case study.http://www.cs.

Toronto.end,2003;4

7 Nwosu I C. Workshop on componet based software engineering

processes.http://www.11WOU.net/papem,2002.5

8 Jennings N R.A roadmap of agent a researsh and development.

http://citeseer.ni.nec.eom/Jennings98 roamp.htral,2003;10

基于构件的软件复用技术应用研究

武伟,张明新

(1.西北师范大学数学与信息科学学院,甘肃兰州730070;

2.山西大同大学数学与计算机科学学院,山西大同037009)

2软件复用的核心技术

构件(Component)是指应用系统中可以明确辨识的构成成分.而可复用构件(Reusable Component)是指具有相对独立的功能和可复用价值的构件.软件构件技术(Software Component Technology)是支持软件复用的核心技术,是近几年来迅速发展并受到高度重视的一个学科分支.其主要研究内容

如下:

2.1建立构件库

简单来说,构件库是一个对软件构件统一进行形式化包装、分类描述、存储管理、检索浏览的场所.软件构件库是大范围内、系统化实施软件复用的必备基础设施.要复用软件构件有两个前提条件,一是所需的构件已经存在,二是复用者能方便地找到所需的构件.由于软件构件蕴涵了大量的信息,对其准确、简洁地描述极其困难,如果没有一个统一的场所对其进行统一的描述包装,大规模的软件复用是不可能实现的,所以建立大规模的公共构件库是必须的.建立自己的构件库是实现复用的基础,可获取的构件有公共构件和商业构件,前者质量无法保障,必须对构件进行测试;后者不能修改源码,只能是黑盒使用.此外,可以自己开发一些简单的构件.这样通过不同途径不断的积累自己的软构件库,开发的复用率会逐渐提高.

2.2构件分类

对于一个应用系统通常包插i类成分:

1)通用基本构件:是特定于计算机系统的构成

成分,如基本数据结构、用户界面元素等,它们可以

存在于各种应用系中;

2)领域共性构件:是应用系统所属领域的共性

构成成分,它们存在于该领域的各个应用系统中;

3)应用专用构件:是应用系统的特有构成成分.

应用系统开发中的重复劳动主要在于前两类构成

成分重复开发.其中通用基本构件层为底层,整个

集成环境和运行环境都使用的构件,通用性好,粒

度最小,可广泛复用,属于黑盒复用;领域共性构件

完成系统主要功能,但通用性不如前者,大部分使

用前须进行修改和测试,复用方式属于白盒复用.

2.3构件管理

构件库随着规模的扩大和应用时间的增长,构件的管理难度也越来越大,作者设计一管理工具,在此管理工具中对入库构件需登记以下信息:构件名称、构件序号、制作日期、修改日期、功能分类、功能描述、使用环境、构件名称、版本、保存位置和复用次数.管

理工具提供了添加、删除、修改、检索、统计等功能,实现了构件的系统管理,通过该工具对构件进行管理基本解决了构件保存、版本和筛选的问题,提高了软件复用的效率.2.4构件组装

构件的组装指将构件库中或能直接使用的构件,或经过适应性修改后的构件以及为当前项目新开发的构件进行整合,最终构成新的目标软件的过程.基于构件的开发通过构件组装得到最终应用系统,构件组装必须以某个框架或架构为蓝图,实际可以看作是用构件实例将软件构架具体化的过程.构件组装技术以构件模型、构件一构架描述盒开放系统技术为基础,成功的组装必须以开放构件模型和规范的构件描述(包括对构件连接和交互协议的严格定义)为基础,构件实例必须符合系统中其他部分的要求.分布式软件总线、事件登记和回调、构架描述语言、脚本语言和代码生成技术都为架构组装指出了希望之路;DCO,JavaBean等运行级的分布式构件模型的出现和ORB与Internet的引入,是构件之问的独立性和互操作性变得更强,这些技术为构件组装,尤其是运行级的构件组装提供了有力的支持.

2.5构件标准化

构件模型的标准化和构件库系统的标准化.

3基于构件的软件开发基本思想

基于构件软件开发方法的思路是借鉴传统工业生产模式,首先是分析消费者需求,设计整体结构框架,根据需要到构件库中选择能完成相应功能的构件,之后组装应用系统.如果所需构件不存在,就去购买、定制或自行开发新构件.

构件生产组和系统开发组问严格按照生产者一消费者关系进行任务分工:经验工厂负责生产、提供构件,项目组不再编程,而是通过从经验工厂中请求所需的构件集成组装而得到最终所需的系统.经验工厂的活动分为同步活动和异步活动.同步活动指配合项目组的活动,接收构件查找请求或定制请求,为项目组服务.异步活动指有目的的构件生产或对同步活动中的构件进行再工程以提高构件的可复用性.

4软件复用技术的应用

作者【本文】把软件复用技术应用在管理信息系统中,简介如下:

4.1系统分析

管理信息系统(MIS)包括以下模块:

1)信息管理模块.实现各类信息的添加、删除、修改、审核等功能;

2)信息查询模块.实现对各类数据信息的查询功能;

3)信息输出模块.实现数据的显示,报表生成和打印功能;

4)用户管理模块.实现对各类用户信息的输入、修改、删除和用户权限分配功能以及用户相关信息统计功能;

5)部门管理模块.实现各个部门管理的分配、修改,新部门的添加以及老部门的更新功能;

6)访问统计模块.实现系统访问次数的统计,包括日访问量、周访问量、月访问量和年访问量.对来访的IP地址进行统计,并提供查询功能;

7)异常处理模块.异常处理模块继承了Java自身的异常处理类实现了对自定义异常的处理.

4.2 软件复用技术在系统中的应用

MIS主要是利用已有构件组合集成生成软件产品.它的开发过程与传统方法不同,大体分为以下几个阶段:

1)需求分析和构件的查找.首先要对业务需求进行分析,然后提炼出需要的构件,最后对构件进行检索;

2)构件的裁剪.有些构件不能直接使用,须对其进行扩张或者修改;

3)构件的生成.裁剪后得到的构件和新开发的构件,都必须在构造应用工具上进行测试,保证构件功能及接口规范的实现,称之为构件的生成;

4)构件的组装.构件的组装是把构件装配成一个整体.我们需要用开发工具制作一个应用框架,这个框架是整个应用系统的一个骨架,这个骨架在设计时可以通过领域分析方法设计成在某一领域可复用的构架.

在MIS中底层的通用基本构件包括基本界面以及常用菜单,这些构件不需要修改直接就可以应用到系统中;报表生成、打印、数据库连接池、异常处理和访问统计这些领域共性构件无需修改,几乎每个系统都能用到;信息、部门和用户的添加构件、删除构件、修改构件以及查询构件等领域共性构件实现系统的主要功能,根据应用的不同,需进行修改和调试才能复用.用户权限分配对不同的应用系统差别较大,是应用系统的特有构成成分,是应用专用构件,需结合应用重新开发.可见随着构件层次的升高,构件的功能越来越强,通用性也越来越差.由于应用系统的多样性,有些功能无法用构件实现,可将其制成专用构件,与复用构件一起集成到应用框架.

参考文献

『1】杨芙清,梅宏,李克勤.软件复用与软件构件技术【J】.电子学报,1999,27(2):68—75.

[2】李海东,杨社堂.C/S模式应用开发中软件复用的研究【J].太原理工大学学报,2006,37(S1):117—118.

【3】张春枝,王弘.基于C/S与B/W/S混合模式的MIS系统设计[J】.计算机应用研究,2001(10):123—125.

【4]黎娅.基于构件的软件复用技术应用研究[D】.重庆:重庆大学计算机科学与技术学院,2008.

【5]Pead Brereton,David Budgen.Component-Based Systems.A Classification of Issues[J1.IEEE Computer,2000,33(11):54—62

5 构件的选取

构件的选取主要包括获取和评选两项工作。

构件获取是指有目的构件生产和从已有系统中挖掘提取构件。在获取阶段,确定构件的性质,包括构件功能和构件接口,以及构件的可靠性、可用性等质量方面的因素,在某些情况下一些非技术因素也需要考虑,如构件生产厂商的市场份额、过去的商业表现和过程成熟度等。构件提取的主要途径有:1、从现有的构件中获得符合要求的构件,直接使用或作适应性修改,得到可复用的构件;2、"通过遗传工程,将具有潜在复用价值的构件提取出来得到可复用的构件;3、从市场上购买的商用构件;4、开发新的符合要求的构件。

构件的评选是对构件的可靠性、正确性进行验证,从而从候选构件中选择最合适的构件。基于可复用构件的软件开发过程

曹春萍,龚崇栋)上海水产大学学报 2005年9月第14卷第3期

(1 上海理工大学计算机工程学院,上海200093;)2 上海理工大学现代化教学中心,上海200093)

软件复用技术的优点可总结如下: ( 1) 提高软件生产率, 减少开发时间和费用。生产率的提高不仅体现在代码开发阶段, 在分析、设计及测试阶段同样可以利用复用来节省开销。用可复用的构件构造系统还可以提高系统的性能和可靠性, 因为可复用构件经过了高度优化, 并且在实践中经受过检验; ( 2 ) 提高软件质量,

开发出来的软件可靠性高;(3) 降低开发风险; (4) 简化软件开发流程, 使得软件开发易于管理; (5) 降低维护的难度、工作量和费用, 且有可能延长运行期以提高软件系统的效益。由于使用经过检验的构件, 减少了可能的错误, 同时软件中需要维护的部分也减少;(6) 共享有关关键系统的知识, 便于学习系统结构和建立好

的系统, 促进软件开发过程的标准化, 易于提供文档资料等。【本文】

基于软件复用的CRM系统的柔性化设计应用发展研

袁琦, 施一明(11浙江旅游职业学院, 浙江杭州311231;

21浙江大学智能系统与控制研究所, 浙江杭州310027)

科技管理研究2010年第5期

浅谈软件复用技术及其应用

浅谈软件复用技术及其应用___________________________________________________________ ____________________ 【摘要】随着企业信息化建设的不断深入,集团公司多个烟厂生产指挥系统建设将相继展开。在企业中充分运用软件复用技术,不仅可以规范企业的业务流程,进而对企业的业务过程进行优化重组,而且构建可复用的软件系统本身就是企业非常重要的知识库和规则库,可以成为指导企业实施和扩展管理信息系统的模型。在深入分析企业需求基础上建立可复用的企业业务模型可以在最大程度上提高企业实施ERP的成功率,降低信息化投资的成本,缩短建设周期。所以大力发展并推广软件复用技术对于促进集团化规模下的多个烟厂信息化建设有重要的现实意义。【关键词】软件复用模块化生产指挥系统___________________________________________________________ ____________________ 1 软件复用技术概述 1.1 软件复用技术的概念大多数情况下所讨论的软件可复用性指软件本身的可重用性,即软件代码实现的可重用性。而实际上,软件复用远不止这些,软件开发的全生命周期都有可重用的价值,包括项目的组织、软件需求、设计、文档、实现、测试方法和测试用例都是可以被重复利用或借鉴的有效资源。软件较强的可复用一直是软件工程所追求的目标之一,软件工程界希望有一天能和其它工业领域一样,利用标准化的软件模块快速构建特定的应用系统。事实上,这种努力也取得了

软件复用指南-模板1

XXX有限公司软件复用指南

*变化状态:A——增加,M——修改,D——删除

1.目的 指导项目组选择设计指南。 2.适用范围 适用于公司软件开发的设计过程。 3.裁减指南 本过程文件中的过程裁减应依据《组织标准过程裁减指南》的规定。 4.参考文件 本过程文件的编写依据是美国软件工程研究院(SEI)的集成成熟度模型软件分支1.1版本(CMMI-SW V1.1)。 5.术语和缩写 复用:就是将已有的软件成分用于构造新的软件系统。可以被复用的软件成分一般称作可复用构件,无论对可复用构件原封不动地使用还是作适当的修改后再使用,只要是用来构造新软件,则都可称作复用。软件复用不仅仅是对程序的复用,它还包括对软件生产过程中任何活动所产生的制成品的复用,如项目计划、可行性报告、需求定义、分析模型、设计模型、详细说明、源程序、测试用例等等。如果是在一个系统中多次使用一个相同的软件成分,则不称作复用,而称作共享;对一个软件进行修改,使它运行于新的软硬件平台也不称作复用,而称作软件移值。 6.职责

7.软件复用的特点和现状 软件复用就是将已有的软件成分用于构造新的软件系统。可以被复用的软件成分一般称作可复用构件,无论对可复用构件原封不动地使用还是作适当的修改后再使用,只要是用来构造新软件,则都可称作复用。软件复用不仅仅是对程序的复用,它还包括对软件生产过程中任何活动所产生的制成品的复用,如项目计划、可行性报告、需求定义、分析模型、设计模型、详细说明、源程序、测试用例等等。如果是在一个系统中多次使用一个相同的软件成分,则不称作复用,而称作共享;对一个软件进行修改,使它运行于新的软硬件平台也不称作复用,而称作软件移值。 目前及近期的未来最有可能产生显著效益的复用是对软件生命周期中一些主要开发阶段的软件制品的复用,按抽象程度的高低,可以划分为如下的复用级别: (1)代码的复用 包括目标代码和源代码的复用。其中目标代码的复用级别最低,历史也最久,当前大部分编程语言的运行支持系统都提供了连接(Link)、绑定(BI n DI ng) 等功能来支持这种复用。源代码的复用级别略高于目标代码的复用,程序员在编程时把一些想复用的代码段复制到自己的程序中,但这样往往会产生一些新旧代码不匹配的错误。想大规模的实现源程序的复用只有依靠含有大量可复用构件的构件库。如”对象链接及嵌入”(OLE)技术,既支持在源程序级定义构件并用以构造新的系统,又使这些构件在目标代码的级别上仍然是一些独立的可复用构件,能够在运行时被灵活的得新组合为各种不同的应用。 (2)设计的复用 设计结果比源程序的抽象级别更高,因此它的复用受实现环境的影响较少,从而使可复用构件被复用的机会更多,并且所需的修改更少。这种复用有三种途径,第一种途径是从现有系统的设计结果中提取一些可复用的设计构件,并把这些构件应用于新系统的设计;第二种途径是把一个现有系统的全部设计文档在新的软硬件平台上重新实现,也就是把一个设计运用于多个具体的实现;第三种途径是独立于任何具体的应用,有计划地开发一些可复用的设计构件。

软件复用技术

论使用复用设计 1、引言 复用是活动,而不是对象。在创建软件相关的系统的语境中,复用仅仅是非常简单的任何过程,该过程通过复用来自以前开发工作的某些东西来生产(或帮助生产)一个系统。那么,唯一的问题是:复用什么、什么是导致成功复用的过程。 在软件工程的范围内,复用既是旧概念,也是新概念。程序员从最早的计算时代已开始复用概念、对象、论据、抽象和过程,但是我们复用的途径是特定的。 本文对软件复用的讨论,将从以下四个方面进行: 1)软件工程师可以获得一系列可复用的软件制品,这些包括软件的技术表示(例如,规约、体系结构模型、设计和代码)、文档、测试数据,甚至包括过程相关的任务(如,检查技术)。 2)复用过程包括两个并发的子过程:领域工程和软件工程。领域工程的目的是在特定应用领域中标识、构造、分类和传播一组软件制品。然后,软件工程可在新系统开发中选取这些软件制品作为复用。 3)构件复用为软件质量、开发者生产率、以及整个系统成本带来了固有的收益,然而,在复用过程模型被广泛地用于软件产业前,必须克服很多障碍。 4)对可复用构件的分析、设计技术采用和在良好的软件工程实践中使用的相同原则和概念。可复用构件应该在一个环境中设计,该环境为每个应用领域建立标准数据结构、接口协议和程序体系结构。 2、可复用的软件制品 软件复用不仅仅涉及源代码,但是,还涉及多少东西呢?CaperJones定义了可作为复用候选的十种软件制品: 项目计划。软件项目计划的基本结构和许多内容(例如,SQA 计划)均是可以跨项目复用的。这样减少了用于制定计划的时间,也减低了和建立进度表、风险分析和其他特征相关的不确定性。 成本估计。因为经常不同项目中含有类似的功能,所以有可能在极少修改或不修改的情况下,复用对该功能的成本估计。 体系结构。即使当考虑不同的应用领域时,也很少有截然不同的程序和数据体系结构。因此,有可能创建一组类属的体系结构模板(例如,事务处理体系结构),并将那些模板作为可复用的设计框架。 需求模型和规约。类和对象的模型和规约是明显的复用的候选者,此外,用传统软件工程方法开发的分析模型(例如,数据流图)也是可复用的。 设计。用传统方法开发的体系结构、数据、接口和过程化设计是复用的候选者,更常见的是,系统和对象设计是可复用的。 源代码。验证过的程序构件(用兼容的程序设计语言书写的)是复用的候选者。 用户和技术文档。即使特定的应用是不同的,也经常有可能复用用户和技术文档的大部分。 用户界面。可能是最广泛被复用的软件制品,GUI 软件经常被复用。因为它可占到一个应用的60%的代码量,因此,复用的效果非常显著。 数据。在大多数经常被复用的软件制品中,数据包括:内部表、列表和记录结构,以及文件和完整的数据库。

软件的复用技术及开发方法

软件的复用技术及开发方法 软件的复用技术及开发方法 2.1软件的复用技术 软件复用是指在开发新的软件系统时,对已有的软件或软件模块重新使用,该软件可以是己经存在的软件,也可以是专门的可复用组件〔8〕。软件可复用性的高低影响到生产效率的高低、软件质量的好坏和系统可维护性的好坏。在软件工程中面临的问题不是缺乏复用,而是缺乏广泛的、系统的复用。软件复用包括构造可复用软件和用可复用软件进行构造。构造可复用软件,一方面可以从现存的软件系统中抽取,另一方面通过改写或重新设计来实施。 Jones将软件复用的对象分为4种数据复用、体系结构复用、设计复用和程序复用。这样,软件复用可在实现层、设计层和体系结构层三个层次上实现。实现层软件复用是指对己有的程序代码进行复用,它包括源代码组件形式。设计层软件复用是指对已有的软件系统的设计信息进行复用。而体系结构层软件复用是最有效的软件复用,它主要是软件体系结构形式化的复用,即将软件的框架组织,全局结构设计作为复用对象。可复用的软件体系结构则通常是显式地复用软件体系结构,并通过集成其他软件体系结构,建立新的更高层次的体系结构。 面向对象的软件复用机制主要有两种:继承和对象组合。 (1)继承 继承是指子类可以从父类中直接获得某些特征和行为的能力,继承可作为代码复用和概念复用的手段。作为代码复用的手段是指:子类通过继承父类的行为,一些代码就不必重写;作为概念复用的手段是指:子类共享父类的方法定义。作为代码复用和概念复用手段的继承机制,在面向对象技术中,通过面向对象技术的一些主要机制来实现对“支持可维护性的可复用性”的支持。这些面向对象的主要机制是:数据的抽象化、封装和多态性。通过运用这些机制,继承可以在高层次上提供(相对于传统的低层次复用)可复用性:数据的抽象化和继承关系使得概念或定义可以复用;多态性使得实现和应用可以复用;而抽象化和封装可以保持和促进系统的可维护性。这样一来,复用的焦点不再集中在函数和算法等具体实现细节上,而是集中在最重要的含有宏观商业逻辑的抽象层次上。换言之,复用的焦点发生了“倒转”。发生复用焦点的倒转并不是因为实现细节的复用并不重要,而是因为这些细节上的复用己经做的很好了,并且这种复用在提高复用性的同时提高了软件的可维护性。由于继承关系直接继承的是接口,同时也继承实现,因而实际上父类的内部实现对子类而言是可见的,属于白盒复用方式。 (2)对象的组合 对象组合是指新的复杂功能可以通过组装或组合对象来获得。这种复杂的功能由对象组合来获得的设计思想与过程化程序设计思想是相似的,在过程化程序设计中,一个复杂的功能模块可以分解为更细小的和更简单的功能模块,整体功能是各个局部功能的聚集。在面向对象系统中,系统是由对象构成,因此复杂的功能或者说能完成更复杂功能的对象,可以通过功能较简单的对象的组装或组合来实现。对象组合方式是从整体与局部的角度来考虑软件复用思想的。 对象组合要求对象具有良好的接口定义,使用对象的接口来使用对象的功能,并往往运用赋值多态来获得具体对象,对象的内部功能是不可见的,对象只以“黑盒”的形式出现,属于黑盒复用方式。

软件复用与构件技术简介

软件复用与构件技术简介
李 戈
北京大学 信息科学技术学院 软件研究所 2008年10月16日

北京第三届优秀软件构件评选
支持单位: 北京市科学技术委员会 主办: 北京软件行业协会 北京软件与信息服务业促进中心 北京软件产业基地公共技术支撑体系 承办: 北京软件产品质量检测检验中心 北京大学

北京第三届优秀软件构件评选
z
提升北京市软件企业的核心竞争力 –帮助企业提高软件开发技术与研发能力,提 高软件开发效率,降低软件开发成本 推动以企业为主体、产学研相结合的技术创新体 系的建设 促进北京软件产业的变革,使软件产业走上工程 化、工业化的发展轨道
z
z

软件企业的现状与问题
z
现状:
– 软件系统的规模和复杂度不断提高 – 对生产效率和产品质量的要求不断提高
z
问题 问题:
– 如何提高软件生产的效率? – 如何掌控软件产品的质量? – 生产效率 与 产品质量 怎可得兼?

为什么需要软件复用
z
应用软件系统的一般开发模式
设计 实现 测试 运行
需求分析
z
基本特征:应用系统的开发总是从头开始
– 每个应用系统的开发均涉及大量的重复劳动
? ? ? ? ?
用户需求获取的重复 需求分析、设计的重复 编码实现的重复 测试工作的重复 文档工作的重复

为什么需要软件复用
z
应用系统的构成成分分类
– 探讨应用系统的本质,其构成成分可分为:
? ? ?
特定于计算机系统的构成成分 应用系统所属领域的共性构成成分 每个应用系统的特有构成成分
系统专用的构成成分 软件系统的 构成成分 领域共用的构成成分 通用的系统构成成分

软件复用技术

软件复用技术 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

论使用复用设计 1、引言 复用是活动,而不是对象。在创建软件相关的系统的语境中,复用仅仅是非常简单的任何过程,该过程通过复用来自以前开发工作的某些东西来生产(或帮助生产)一个系统。那么,唯一的问题是:复用什么、什么是导致成功复用的过程。 在软件工程的范围内,复用既是旧概念,也是新概念。程序员从最早的计算时代已开始复用概念、对象、论据、抽象和过程,但是我们复用的途径是特定的。 本文对软件复用的讨论,将从以下四个方面进行: 1)软件工程师可以获得一系列可复用的软件制品,这些包括软件的技术表示(例如,规约、体系结构模型、设计和代码)、文档、测试数据,甚至包括过程相关的任务(如,检查技术)。 2)复用过程包括两个并发的子过程:领域工程和软件工程。领域工程的目的是在特定应用领域中标识、构造、分类和传播一组软件制品。然后,软件工程可在新系统开发中选取这些软件制品作为复用。 3)构件复用为软件质量、开发者生产率、以及整个系统成本带来了固有的收益,然而,在复用过程模型被广泛地用于软件产业前,必须克服很多障碍。 4)对可复用构件的分析、设计技术采用和在良好的软件工程实践中使用的相同原则和概念。可复用构件应该在一个环境中设计,该环境为每个应用领域建立标准数据结构、接口协议和程序体系结构。 2、可复用的软件制品 软件复用不仅仅涉及源代码,但是,还涉及多少东西呢?CaperJones定义了可作为复用候选的十种软件制品: 项目计划。软件项目计划的基本结构和许多内容(例如,SQA 计划)均是可以跨项目复用的。这样减少了用于制定计划的时间,也减低了和建立进度表、风险分析和其他特征相关的不确定性。 成本估计。因为经常不同项目中含有类似的功能,所以有可能在极少修改或不修改的情况下,复用对该功能的成本估计。 体系结构。即使当考虑不同的应用领域时,也很少有截然不同的程序和数据体系结构。因此,有可能创建一组类属的体系结构模板(例如,事务处理体系结构),并将那些模板作为可复用的设计框架。 需求模型和规约。类和对象的模型和规约是明显的复用的候选者,此外,用传统软件工程方法开发的分析模型(例如,数据流图)也是可复用的。 设计。用传统方法开发的体系结构、数据、接口和过程化设计是复用的候选者,更常见的是,系统和对象设计是可复用的。 源代码。验证过的程序构件(用兼容的程序设计语言书写的)是复用的候选者。 用户和技术文档。即使特定的应用是不同的,也经常有可能复用用户和技术文档的大部分。 用户界面。可能是最广泛被复用的软件制品,GUI 软件经常被复用。因为它可占到一个应用的60%的代码量,因此,复用的效果非常显著。

基于构件的软件复用技术研究与应用实践

基于构件的软件复用技术研究与应用实践 基于构件的软件复用技术研究 谷今杰莫继红 ((湖南大学软件学院,长沙410082) 通常情况下.应用软件系统的开发过程包含以下几个阶段:需求分析、设计、编码、测试、维护等。当每个应用系统的开发都是从头开始时,在系统开发过程中就必然存在大量的重复劳动,如:用户需求获取的重复、需求分析、编码、测试的重复和文档等。探讨应用系统的本质,发现其中通常包含:①通用基本构件:是特定于计算机系统的构成成分,如基本的数据结构、用户界面元素等,它们可以存在于各种应用系统中;②领域共性构件:是应用系统所属领域的共性构成成分,它们存在于该领域的各个应用系统中;③应用专用构件:是每个应用系统的特有构成成分。应用系统开发中重复劳动主要在于前两类构成成分的重复开发。 软件复用是在软件开发中避免重复劳动的解决方案。其出发点是应用系统的开发不再采用一切“从零开始”的模式,而是以已有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,如:需求分析结果、设计方案、源代码、测试计划及测试案例等.从而将开发的重点集中于应用的特有构成成分。 通过软件复用,在应用系统开发中可以充分利用已有的开发成果.消除了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率:同时,通过复用高质量的已有开发成果时,避免了重新开发可能引入的错误,从而提高软件的质量。 软件复用指重复使用“为了复用目的而设计的软件”的过程。相应地,可复用软件是指为了复用目的而设计的软件。与软件复用的概念相关,重复使用软件的行为还可能是重复使用“并非为了复用目的而设计的软件”的过程,或在一个应用系统中的不同版本间重复使用代码的过程,这两类行为都不属于严格意义上的软件复用。真正的复用是为了支持软件,使用“为复用而开发的软件(构件)”来更快、更好地开发新的应用系统。 复用技术在整体上对软件产业的影响却并不尽如意。这是由于技术方面和非技术方面的种种因素造成的,其中技术上的不成熟是一个主要原因。近十几年来,面向对象技术出现并逐步成为主流技术,为软件复用提供了基本的技术支持。软件复用研究重新成为热点。被视为解决软件危机。提高软件生产效率和质量的现实可行途径。 (复用分类)软件复用可以从多个角度进行考察。依据复用的对象,可以将软件复用分为产品复用和过程复用。产品复用指复用已有的软件构件.通过构件集成(组装)得到新系统。过程复用指复用已有的软件开发过程.使用可复用的应用生成器来自动或半自动地生成所需系统。过程复用依赖于软件自动化技术的发展,目前只适应于一些特殊的应用领域。产品复用是目前现实的、主流的途径。 依据对可复用信息进行复用的方式。可以将软件复用区分为黑盒(Black—box)复用和白盒(White—box)复用。黑盒复用指对已有构件不需作任何修改,直接进行复用。这是理想的复用方式。白盒复用指已有构件并不能完全符合用户的需求。需要根据用户需求进行适应性修改后才使用。而在大多数应用的组装过程中,构件适应性修改是必需的。 软件复用按抽象程度的高低, 可以划分为如下的复用级别: (1) 代码的复用, 包括目标代码和源代码的复用。当前大部分编程语言的运行支持系统都提供了连接(L ink) 、绑定(Binding) 等功能来支持这种复用; ( 2) 设计的复用, 设计结果比源程序的抽象级别更高, 因此它的复用受到实现环境的影响较少, 从而使可复用构件被复用的机会更多, 并且所需的修改更少; (3) 分析的 复用, 可复用的分析成分是针对问题域的某些事物(问题) 的抽象程度更高的解法。

浅谈软件复用技术的四个关键问题

浅谈软件复用技术的四个关键问题 [摘要]软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。60年代出现的软件危机导致了有关软件复用的研究。软件复用是指重复使用“为了复用目的而设计的软件”的过程。通过软件复用,在应用系统开发中可以充分利用已有的开发成果,消除了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率。同时,通过复用高质量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量。 [关键词]软件复用技术软件危机软件复用 一、引言 软件复用的概念是由McI1roy在1968年的NATO软件工程会议上提出的。McI1roy提出了发展以可复用源代码软件构件为基础的软件工业和利用COTS (Component Off The Shelf)构件工业化生产软件的观点。软件复用被认为是解决所谓“软件危机”的技术上可行的、现实的解决方案。软件复用的对象包括软件开发过程中所使用和产生的各种资源:源代码、各种文档、测试数据、设计方法、体系结构等等,总称可复用构件。软件复用是为了改善软件生产的资金投入大、开发周期长、软件产品失败率高等不能满足市场需求的现状,充分利用已有的高质量软件产品和部件,经过组装集成快速搭建应用软件系统的软件开发理论。经历了结构化程序设计、面向对象技术、软件构件技术的发展,软件复用已经成为加速软件工业化早日实现的重要力量。 二、面向对象技术 面向对象技术提供了新的认知和表示世界的思想和方法。面向对象方法就是用对象来作为描写客观信息的基本单元,它包括封装在一起的对象标识、对象属性和对象操作。面向对象技术是以对象为基础来构件系统的,可以通过一个指向对象的指针或对它的引用,就可以访问这个对象的所有数据和方法,用面向对象技术建造起来的系统不仅易于管理和使用,而且源代码的可读性高。如果没有对象,在程序中必须保存大量的变量和一个个孤立的函数,然后在这些没有多大关连的变量和函数之间进行变量传递,这不仅给编程增加了很大的复杂性,而且使得程序的可读性极差。通过把这些有关连的变量和函数封装在一个对象中,大大的简化了编程的复杂性,提高了程序可读性,并且提供了一种抽象,该抽象是可扩展性的关键。正是因为面向对象技术的特点,封装和继承使得面向对象技术成为了软构件技术的基础。 面向对象技术具有以下一些特性能够使它和软件复用相结合: (一)对象是可重用构件的雏形,面向对象技术中,对象(类)已经充当了构成系统的基本单元,由于它的一系列特有的性质,使它具有了可重用构件的雏形;

NATO软件复用标准

NATO软件复用标准简介 摘要 实践证明,软件复用可以有效地提高软件的质量和生产率,它包括开发可复用软件构件和基于可复用构件的开发两个生命周期。在这两个生命周期中,采用一个适当的标准以识别和开发可复用软件将大大促进软件复用的实践。为此,NATO(北大西洋公约组织)制定了一整套软件复用的指导性标准,以帮助NATO及其参与国和承包商的项目管理部门进行有效的软件复用。这套标准包括《可复用软件构件开发指南》、《可复用软件构件库管理指南》和《软件复用过程指南》三个文档,分别从软件生命周期的各个阶段对软件复用进行了指导和帮助。 关键词:NATO,软件复用,可复用构件开发,构件库管理,复用过程 一、前言 1.背景与目的 自从McIlroy在1968年的NATO软件工程会议上正式提出软件复用的概念以来,软件复用已有了近三十年的发展历程,复用的对象也从早期的代码复用扩展到对软件开发过程中一切有价值的信息的复用,包括需求、需求规约、设计、源代码、测试计划和测试案例等。近三十年的实践证明,软件复用可以有效地提高软件的质量和生产率,是解决当前“软件危机”的一条比较现实可行的途径。 软件复用包括开发可复用软件构件和基于可复用构件的开发两个生命周期。在这两个生命周期中,采用一个适当的标准以识别和开发可复用软件将大大促进软件复用的实践。为此,NATO(北大西洋公约组织)制定了一整套软件复用的指导性标准,以帮助NATO及其参与国和承包商的项目管理部门进行有效的软件复用。这套标准包括《可复用软件构件开发指南》、《可复用软件构件库管理指南》和《软件复用过程指南》三个文档,分别从软件生命周期的各个阶段对软件复用进行指导,以便最大限度地减少复用代价和增加复用收益。 青鸟工程是国家“九五”重点科技攻关项目,其中研究的主要内容之一便是软件复用和软件构件技术。为了吸收和利用国外软件复用的最新研究成果,我们对国际上相关研究和实践工作进行了深入分析,以期能拓宽思路,取长补短,使我们的工作能和国际主流接轨。本文便是对NATO软件复用标准的总结和介绍,希望能为国内相关工作的进展和相关的软件从业人员起到一个借鉴和参考的作用。 2.本文的组织 本文的第二章介绍了NATO标准中出现的一些复用的基本概念,以便使读者能对NATO的软件复用框架有一个大致的了解。第三章是NATO的可复用构件开发标准,它的目的是为创建具有最大

软件复用

第十章软件复用 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)数据:在大多数经常被复用的软件制品中,数据包括:内部表、列表和记录结构,以及文件和完整的数据库。 (10)测试用例:一旦设计或代码被复用,相关的测试用例应该“附属于”它们。

软件复用与基于面向对象框架的软件开发方法

收稿日期:!""#$"%$"!;修订日期:!""#$"&$!’ 作者简介:王丽娟(()&&$),女,河南省周口市人,河南农业大学副教授,主要从事计算机理论教学及应用研究* 文章编号:(&+($&,##(!""#)"#$""!%$"’ 软件复用与基于面向对象框架的软件开发方法 王丽娟(,孙西超!,底松茂#,王哲光(,冯志慧(,刘 倩( ((-河南农业大学现代教育部,河南郑州%’"""!;!*河南农业大学财务处,河南郑州%’"""!;#*郑州大 学财务处,河南郑州%’"""!)摘 要:介绍了软件复用的基本概念和意义,分析了框架的特征以及它与类库、组件、设计模式等常用 的面向对象复用技术(./0)的联系,给出了基于框架的软件开发方法的开发过程-首先进行领域分析即在给定的领域中,通过分析找出对所有应用程序来说明共同的类和对象,建立领域模型;其次,结合领域分析,给出系统需求说明书;第三步是框架设计,通过对应用程序进行分析和设计,得到应用程序在该领域的特殊要求,从而扩展框架来实现该应用程序;最后是软件的测试-目前./0的研究更多的集中于特定的领域如制造业、银行业、卫生系统等-在开发方法上,将较多的采用黑盒框架,在框架集成方面,更注重将框架与类库,组件和设计模式等联合在一起使用,更注重对框架继承性的研究-关键词:软件复用;面向对象;框架;组件;设计模式中图分类号:12#"( 文献标识码:3 "引言 目前计算机技术的飞速发展使得软件开发的环境日益复杂,应用软件需要具有开放的系统结构和跨越多个异构平台的能力,这样就导致在应用系统中的软件越来越庞大,传统的开发技术已远远不能满足需要,在这种情况下,有关软件复用的研究也就应运而生了-软件复用是软件工程中具有很高前瞻性的研究领域,面向对象的软件复用技术是软件复用的一种重要方式,基于面向对象框架的软件开发技术./0(.4567$894:6;<9=06>6?<@:6AB )是一种面向特定领域的复用技术,随着面向对象技术的成熟,面向对象框架的软件开发被认为是一种最有前途的提高软件重用度和软件生网络产力的面向对象技术-该方法对特定领域复杂系统的高可靠专用软件具有很高的实用价值,为特定领域的软件开 发提供了一种强有力的技术支持[(]- (软件复用的概念和意义 软件复用是指重复使用“为了复用目的而设 计的软件”的过程,而可复用软件则是指为了复用目的而设计的软件,是指在开发新的应用系统时重复使用以前的资源,如设计、代码、文档等-软件 复用更强调的是复用的目的,它是一种系统化的方法,为了复用而进行设计,为了复用而开发,并且要有效地组织和管理这些复用产品,方便人们查找和使用,从而提高系统开发效率及软件质量-软件复用一定要有软件开发的积累,有了一定的积累后才能进行软件复用-总的来说,软件复用有三个基本问题:一是必须有可复用的对象,二是可复用的对象必须是有用的,三是使用者知道如何去使用被复用的对象-软件复用还包括两个相关的过程,即可复用软件的开发和可复用软件的应用系统的构造-解决好这几方面的问题,才能实现 真正意义上的软件复用[!] -软件复用通常可分为两类:产品复用和过程 复用-产品复用指对软件开发过程中生成的各种产品(需求规约、设计、程序、测试计划和数据等)构件的复用,涉及可复用构件的建造及可复用构件的使用两个方面,通过专业性的构件开发和基于构件复用的系统集成实现软件的工业化生产-过程复用指通过采用自动化技术,通过生成或变换,自动生成最终所需的系统,完全通用的过程复用意味着软件生产的自动化,当前过程复用的实践大多和领域相关,如特定领域的应用生成器等-过程复用是非常理想的软件复用方式,成为主要 的研究课题[!]- !""#年)月第!%卷第#期郑州大学学报(工学版) C695JBK (LAGJA669JAG MNJ6AN6)M6@*!""# O

软件复用课后题

1软件复用与传统软件开发的重用的差异? 软件复用是指重复使用“为了复用目的而设计的软件”的过程。相应地,可复用软件是指为了复用目的而设计的软件.与软件复用的概念相关,重复使用软件的行为还可能是重复使用“并非为了复用目的而设计的软件”的过程,或在一个应用系统的不同版本间重复使用代码的过程,这两类行为都不属于严格意义上的软件复用 1 分析传统产业的发展,其基本模式均是符合标准的零部件(构件)生产以及基于标准构件的产品生产(组装) ,其中,构件是核心和基础,“复用”是必需的手段. 2软件产业要发展并形成规模经济,标准构件的生产和构件的复用是关键因素.这正是软件复用受到高度重视的根本原因 2影响软件可复用性的因素 软件构件技术(Software component technology) 领域工程(Domain Engineering) 软件构架(Software Architecture) 软件再工程(Software Reengineering) 开放系统(Open system) 软件过程(Software Process) CASE技术等以及各种非技术因素。 3、什么是领域工程?领域工程对软件复用的影响表现在那些方面? 领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的过程,它覆盖了建立可复用软件构件的所有活动.领域是指一组具有相似或相近软件需求的应用系统所覆盖的功能区域领域工程包括三个主要的阶段. (1)领域分析 (2)领域设计 (3)领域实现 领域工程作为软件复用的核心技术之一 其主要目的是实现对特定领域中可复用成分的分析、生产和管理。领域工程的萌芽最早可以追溯到帕尔纳斯 Parnas 在1976年提出的“程序家族 Program Family ”的概念[12]。其基本思想是把一组具有显著共性的程序作为一个整体/家族并对其共性进行分析 其动机则是为了简化一组相似程序的开发和维护。后来提出出了“领域分析”的概念[11] 用来指代“识别特定问题域中一组相似系统所包含的对象和操作的活动”。他还对领域分析和 软件 系统分析这两种活动进行了对比 提出了“领域分析员”的概念 并分析了在软件复用活动中领域分析的必要性和可行性。 或者通过领域工程获得软件构件/构架面向领域的构件数目大面向领域的构架更具体面向领域的复用复用程度高因此:领域工程是获取构件/构架的主要途径。 4、你认为软件复用成功的因素都包括那些方面? 1软件越来越多地渗透到生活的各个方面,对于许多工业和商业企业来说,他们的目标有多种:是顾客满意、提供及时的产品和服务、降低成本等。提高业务能力通常意味者他们必须提高他们的软件开发能力。在这种情况下,成功意味着他们的软件必须:Faster BetterCheaper “Reuse”。The “Holy Grail”of today’s IT environment 2如何达到这个目标?两条途径:1提高软件产品的生产效率2软件复用许多公司都在试图提高他们的软件开发能力,对象和构件的复用成为他们软件工程的策略 3构件系统的思想也从简单的代码扩展到需求、分析模型、设计和测试。所有这些软件开发过程的步骤都围绕着 4复用的成功例子1984-Hewlett-Packard achieved 25% to 50% reuse levels in firmware(固件,

软件复用技术

面向对象方法中的软件复用技术探讨 摘要:软件复用(SoftWare Reuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。本文介绍了软件复用的基本概念和关键技术,并阐述了面向对象方法中的软件复用技术。 关键词:软件复用;软件工程;面向对象 1.引言 近年来,随着计算机硬件的成本的不断下降,软件的生产规模日益增大,计算机的应用范围也得到了很大程度的普及,人们对软件系统的需求急剧上升,随之而来的软件规模越来越大,开发费用越来越高,开发的质量和效率不断降低的问题日益严重。造成这种现象的一个主要原因就是软件开发组织对相同或相似系统做着大量的重复性工作。要改变这种状况,软件复用是一条现实可行的途径。 2.软件复用概述 2.1软件复用概念 软件复用是一种计算机软件工程方法和理论,是指重复使用"为了复用目的而设计的软件"的过程。它是一种系统化的方法,为了复用而进行设计,为了复用而开发,并且要有效地组织和管理这些复用产品,方便人们查找和使用,基于复用产品进行开发。软件复用一定要有积累,首先要为了复用目的设计很多的复用产品,有了一定的积累后才能进行软件复用。 软件复用的主要思想是,将软件看成是由不同功能部分的"组件"所组成的有机体,每一个组件在设计编写时可以被设计成完成同类工作的通用工具,这样,如果完成各种工作的组件被建立起来以后,编写一特定软件的工作就变成了将各种不同组件组织连接体来的简单问题,这对于软件产品的最终质量和维护工作都有本质性的改变。 2.2软件复用意义 通常情况下,应用软件系统的开发过程包含以下几个阶段:需求分析,设计,编码,测试,维护等。当每个应用系统的开发都是从头开始时,在系统开发过程中就必然存在大量的重复劳动,如:用户需求获取的重复,需求分析和设计的重复,编码的重复,测试的重复和文档工作的重复等。 软件复用是在软件开发中避免重复劳动的解决方案,其出发点是应用系统的开发不再采用一切"从零开始"的模式,而是以已有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,如:需求分析结果,设计方案,源代码,测试计划及测试案例等,从而将开发的重点集中于应用的特有构成成分。 通过软件复用,在应用系统开发中可以充分地利用已有的开发成果,消除了包括分析,设计,编码,测试等在内的许多重复劳动,从而提高了软件开发的效率,同时,通过复用高质量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量。 2.3软件复用对象 软件复用不仅仅涉及源代码,复用对象主要有以下几个部分: (1)代码的复用 包括目标代码和源代码的复用。其中目标代码的复用级别最低,历史也最久,当前大部分编程语言的运行支持系统都提供了连接(Link)、绑定(Binding)等功能来支持这种复用。

基于软件复用技术的C语言题库系统的设计【文献综述】

文献综述 计算机科学与技术 基于软件复用技术的C语言题库系统的设计一.软件复用 软件重用[1-3]是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需要分析文档甚至领域知识。对于新的软件开发项目而言,它们或者是构成整个目标软件系统的部件,或者在软件开发过程中发挥某种作用。通常将这些软件元素称为软部件。 软件成分的重用可以进一步划分成以下 3 个级别: (1) 代码重用 人们谈论得最多的是代码重用,通常把它理解为调用库中的模块。实际上,代码重用也可以采用下列几种形式中的任何一种: 源代码剪贴:这是最原始的重用形式。这种重用方式的缺点,是复制或修改原有代码时可能出错,更糟糕的是,存在严重的配置管理问题,人们几乎无法跟踪原始代码块多次修改重用的过程。 源代码包含:许多程序设计语言都提供包含库中源代码的机制。使用这种重用形式时,配置管理问题有所缓解,因为修改了库中源代码之后,所有包含它的程序自然都必须重新编译。 继承:利用继承机制重用类库中的类时,无须修改已有的代码,就可以扩充或具体化在库中找出的类,因此,基本上不存在配置管理问题。 (2) 设计结果重用 设计结果重用指的是,重用某个软件系统的设计模型 ( 即求解域模型 ) 。这个级别的重用有助于把一个应用系统移植到完全不同的软硬件平台上。 (3) 分析结果重用 这是一种更高级别的重用,即重用某个系统的分析模型。这种重用特别适用于用户需求未改变,但系统体系结构发生了根本变化的场。 更具体地说,可能被重用的软件成分主要有以下10 种: (1)项目计划。 软件项目计划的基本结构和许多内容(例如,软件质量保证计划)都是可以跨项目重用的。这样做减少了用于制定计划的时间,也降低了与建立进度表和进行风险分析等活动相关联的不确定性。

软件复用技术概述

软件复用技术概述 软件复用是将已有的软件及其有效成分用于构造新的软件或系统。它不仅是对软件程序的复用,还包括对软件生产过程中其它劳动成果的复用,如项目计划书、可行性报告、需求分析、概要设计、详细设计、编码(源程序)、测试用例、文档与使用手册等等。因此,软件复用包括软件产品复用和软件过程复用两部分的内容。 软件复用不同于软件移植。软件移植是指对软件进行修改和扩充,使之在保留原有功能、适应原有平台的基础上,可以运行于新的软硬件平台。而复用则指在多个系统中,尤其是在新系统中使用已有的软件成分。 从对复用产品的了解程度和复用方式看,也可分为白盒复用与黑盒复用。黑盒复用指对已有产品或构件不需作任何修改,直接进行复用,这是理想的复用方式。它主要基于二进制代码的复用,包括可执行程序的复用和基于库(包括动态链接库和静态库)的复用。白盒复用指根据用户需求对已有产品进行适应性修改后才可使用。白盒复用一般为源代码一级的复用,以及相应的测试用例、文档等的复用。 无论白盒复用还是黑盒复用,都需要花费一定的代价熟悉和掌握被复用的软件系统。作为经济上的考虑,要求复用的代价必须大大小于重新开发的代价,否则就不应该考虑。 软件复用的一个关键因素是抽象。抽象是对软件可复用对象的提炼和概括,即将可复用对象的基本属性和相应的操作,从具体的语言、环境和其他细节中提炼出来。软件的复用性很大程度上取决于对可复用对象的认识深度或者说可复用对象的抽象层次。抽象层次越高、与具体环境和特定细节越无关,则它被未来系统复用的可能性也越大。领域分析则是进行抽象的有力工具。领域分析借助特定领域、特定行业的专业知识与技能,对软件系统对象进行抽象和分类,提炼认知的对象及其相互关系,获得系统整体结构,从而生成可复用的软件构件。 通过软件复用,在应用系统开发中可以充分地利用已有的开发成果,减少了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率,同时,通过复用高质量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量。 软件复用有三个基本原则,一是必须有可以复用的对象;二是所复用的对象必须是有用的,三是复用者需要知道如何去使用被复用的对象。软件复用包括两个相关过程:可复用软

软件复用、软件合成与软件集成

软件复用、软件合成与软件集成 黄靖,赵海光 (华中科技大学计算机学院,湖北武汉430074) 摘要:软件复用被视为解决软件危机的一条现实可行的途径。在软件复用的科学研究与实践活动中,针对不同的应用领域,结合相关的计算机新兴技术,出现了许多解决软件危机的方法与途径,软件合成、软件集成就是软件复用的成功实践扩展和技术应用之一。简要地介绍了软件复用,分别给出了软件合成、软件集成的概念,归纳总结了二者实现所涉及的关键技术、适用领域和应用目的,详尽地对比了软件合成、软件集成的区别。 关键词:软件复用;软件合成;软件集成;软件构件;中间件 中图法分类号:TP311.5文献标识码:A文章编号:1001-3695(2004)09-0118-03 Softw a re Reu se,Softw are Com posit ion and S oft w ar e Int egrat ion HU ANG J ing,ZHAO Hai-gua ng (School of Comp uter S cience,H uazhong Univer sity of S cience&Technology,Wuhan Hubei430074,China) Abst ract:S oft ware Reuse is to be considered a s t he feasible w ay to solve t he problem of soft wa re crisis.In t he resea rch and practice of the S oftw are Reuse,com posing the rela tive adva nce com puter technology,people found m a ny solut ions of Soft wa re Reuse a im ing at different a pplia nce fields.S oft wa re C om pos it ion a nd Soft wa re Integrat ion are t he s uccessful exam ples of the ex-pa ns ion of the pra ct ice and t he applica tion of the t echnology of the S oft wa re Reuse.After a brief introduct ion of S oftw are Re-use,t his diss erta tion provides the accurat e concepts of S oftwa re C om pos it ion and Soft wa re Integrat ion and the distinct ion be-t ween the tw o.On t he bas is of that,t he critica l technology,t he sphere and purpose of applica tion involved in S oftw are Com posi-t ion a nd Soft wa re Int eg ra tion are dis cussed. Key wo rds:S oftw are Reuse;S oft wa re C om pos it ion;S oft wa re Integra tion;S oftwa re Com ponent;M iddleware 半个世纪以来,计算机软件作为一门学科得到了迅速发展,相关技术和方法层出不穷,研究领域不断深入与扩展。计算机的应用范围也得到了很大程度的普及,人们对软件系统的需求急剧上升,随之而来的软件规模越来越大,开发费用越来越高,开发的质量和效率不断降低的问题日益严重。如何解决这些日益复杂的矛盾,满足高质量、高效率地开发各种各样日趋复杂、大型的软件系统的需要,消除所谓的“软件危机”,使得软件工程作为一门独立的学科受到越来越多的关注,成为软件技术中发展较快的一个分支学科领域。近年来,尤其是20世纪90年代以后,面向对象方法与技术成为主流的软件开发技术,使得软件复用被视为解决软件危机的一条现实可行的途径[1]。与此同时,软件构件模型、计算机网络、分布式系统等相关技术的研究与发展,又为软件复用注入了新的活力,使得在软件复用的科学研究与实践活动中,针对不同的应用领域,结合一些相关技术,出现了许多解决软件危机的方法与途径,成为软件复用研究领域的一个实践扩展和技术应用。软件合成、软件集成正是这些成功方法之一。 1 软件复用 定义1 软件复用(Software Reuse)是指重复使用“为了复用目的而设计的软件”的过程[2]。 软件复用的概念是在1968年NATO软件工程会议上被第一次引入的,在其后的几十年中,进行了许多复用技术的研究和实践活动,但因技术和非技术方面的种种因素,造成复用技术在整体上对软件产业的影响不尽人意[3]。面向对象方法和技术的出现及成熟,为软件复用提供了强有力的技术支持,尤其是软件构件技术的发展为其注入了新的活力,使得软件复用研究重新成为热点,被视为解决软件危机,提高软件生产效率和质量的一个现实可行的途径,同时也成为了避免软件开发中重复劳动的解决方案,并在一定程度上降低了软件开发的费用。 软件复用可以从多个角度进行考察。根据复用的对象,可以分为产品复用和过程复用。其中基于构件的复用是产品复用的主要形式,也是当前复用研究的焦点。根据对可复用信息进行复用的方式,又可以分为黑盒复用和白盒复用[4]。软件复用作为软件工程中一个研究热点,其实现涉及的关键技术主要包括:软件构件技术(Software Component Technology)、领域工程(Domain Engineering)、软件架构(Software Architecture)、软件再工程(Software Reengineering)、开放系统(Open Sys-tem)、软件工程(Softw are Process)、CASE技术等。国内外对其成功的研究和实践活动有:卡内基梅隆大学的软件工程研究所(CMU/SEI)提出的面向特征领域分析方法(Feature-Oriented Domain Analysis Method,FODA方法)[5];瑞典CelsiusTech Sys-tem公司和美国空军电子系统中心(ESC)的产品线系统[6],产品线系统(Product Line System)是CMU/SEI提出的产品开发的组织方式[7];OMG组织的CORBA和微软公司的COM/ ? 8 1 1 ?计算机应用研究2004年 收稿日期:2003-09-26;修返日期:2003-12-05

相关主题