您现在所在的位置是:首页 > 业界新闻

服装管理软件复用概述

在现实世界中,许多软件产品之间存在着相当大的共性,特别是在同一个应用领域的软件更是如此。显然对相同或相似的软件产品进行重复的开发会造成人力、财力巨大浪费,所以在软件开发过程中使用现成的可以重复使用的软件产品是非常明智的做法,这就是软件复用思想。本书第五章至第八章从软件复用的角度介绍了现代软件工程领域最活跃的几个课题。其中:第五章重点介绍软件复用理论基础,选取了国内在此领域做出杰出成就的杨芙清院士及其团队的研究成果重点介绍;第六章介绍了程序代码及可执行文件级别的软件复用技术,即组件技术和WebService技术;第七章介绍了设计级别的软件复用技术一设计模式;第八章介绍了系统分析级别的软件复用技术一软件体系结构。

服装管理软件复用概述
应用系统的本质通常包含三类成分:①通用基本构件,是特定于计算机系统的构成成分,如基本的数据结构、用户界面元素等,可以存在于各种应用系统中;②领域共性构件,是应用系统所属领域的共性构成成分,存在于该领域的各个应用系统中;③应用专用构件,是每个应用系统的特有构成成分。其中的重复劳动主要存在于前两类构成成分的重复开发。
软件复用是在软件开发中避免重复劳动的解决方案,出发点是应用系统的开发不再采用“一切从零开始”的模式,而是以已有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,如需求分析结果、设计方案、源代码、测试计划及测试案例等,从而将开发的重点集中于应用的特有构成成分。
通过软件复用,在应用系统开发中可充分地利用已有的开发成果,消除了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件生产率,同时,通过复用高质量的已有成果,避免了重新开发可能引入的错误和不当,从而提高了软件的质量。

5.1。1软件复用的基本概念
软件复用概念的第一次引入是在1968年NAT()软件工程会议上,D.Mcllroy发表了题为Mass-ProducedSoftwareComponent的论文,提出了建立生产软件构件的工厂,以重复使用软件构件构造复杂系统的建议。在此以前,子程序的概念也体现了复用的思想。但其目的是为了节省当时昂贵的机器内存资源,并不是为了节省开发软件所需的人力资源。
然而子程序的概念可以用于节省人力资源的目的,从而出现了通用子程序库,供程序员在编程时使用。例如,数学程序库就是非常成功的子程序复用的例子。

服装管理软件复用是指重复使用已有的软件产品用于开发新的软件系统,以达到提高软件系统的开发质量与效率、降低开发成本的目的。在软件复用中重复使用的软件产品不仅仅局限于程序代码,而是包含在软件生产的各个阶段所得到的各种软件产品,这些软件产品包括:
领域知识、体系结构、需求分析、设计文档、程序代码、测试用例和测试数据等。将这些已有的软件产品在软件系统开发的各个阶段重复使用,这就是软件复用的原理。
以下的类比有助于进一步说明软件复用的概念。在软件演化的过程中,重复使用的行为可能发生在三个维度上:
(1)时间维:使用以前的软件版本作为新版本的基础,加入新功能,适应新需求,即软件维护(适应性维护)。
(2)平台维:以某平台上的软件为基础,修改其和运行平台相关的部分,使其运行于新平台,即软件移植。
(3)应用维:将某软件(或某种构件)用于其他应用系统中,新系统具有不同功能和用途,即真正的软件复用。
这三种行为中都重复使用了现有的软件。但是,真正的复用是为了支持软件在应用维的演化。使用“为复用而开发的软件(构件)”来更快、更好地开发新的应用系统。

虽然目前有许多复用技术的研究成果和成功的复用实践活动,但复用技术在整体上对软件行业的影响却不尽如人意。这是由于技术方面和非技术方面的种种因素造成的,而技术的不成熟是主要原因。近年来,面向对象技术出现并逐步成为主流技术,为软件复用提供了基本的技术支持。软件复用研究重新成为热点,被视为解决软件危机、提高软件生产效率和质量的现实可行的途径。分析传统产业的发展,其基本模式均是符合标准的零部件(构件)生产以及基于标准构件的产品生产(组装),其中,构件是核心和基础4“复用”是必需的手段。实践表明,这种模式是产业_T程化、工业化的必由之路。标准零部件生产业的独立存在和发展是产业形成规模经济的前提。机械、建筑等传统行业以及年轻的计算机硬件产业的成功发展均是基于这种模式并充分证明了这种模式的可行性和正确性。这种模式是软件产业发展的良好借鉴,软件产业要发展并形成规模经济,标准构件的生产和构件的复用是关键因素。这正是软件复用受到高度重视的根本原因。
软件复用可以从多个角度进行考察。依据复用的对象,可以将软件复用分为产品复用和过程复用。产品复用指复用已有的软件构件,通过构件集成(组装)得到新系统。过程复用指复用已有的软件开发过程,使用可复用的应用生成器来自动或半自动地生成所需系统。
过程复用依赖于软件自动化技术的发展。目前其适用于一些特殊的应用领域。产品复用是目前现实的、主流的途径。
按照重用活动所跨越的应用领域的类型,可以把软件的复用形式分为横向和纵向复用。

横向复用(HorizontalReuse)也称水平复用,是指复用活动的范围跨越了几个不同的应用领域,复用的软件产品主要包括数据结构、通用算法、人机界面等软件元素。例如,编程工具中提供的标准函数库或者类库就是一种典型的横向复用的例子。由于在不同领域内应用的差异较大、共性较少,要提取出可以在不同领域内都可以复用的软件元素难度较大,因此横向复用的应用相对较少。
纵向复用(VerticalReuse)也称为垂直复用,是指复用活动的范围限制在同一个应用领域或者是一类具有较多共性的应用领域内。由于纵向复用所应用的领域具有较多的共性和相似性,有助于提取出系统的通用模型,因此复用的程度较高,所以目前大多数软件复用技术都把重点放在了纵向复用上。

从基于软件复用的软件开发过程的角度,可以把软件复用分为:生产者复用(ProductReuse)和消费者复用(ConsumerReuse)。
生产者复用是指建立、获取或者重新设计可复用构件的活动。生产者复用中涉及的活动包括:复用的规划、领域分析、构件的开发、构件库的组织和管理。消费者复用是指使用可复用的构件建立新的软件系统的活动。消费者复用中涉及的活动包括:应用系统的规划、构件的检索和选择、应用系统中非复用部分的开发、应用系统的组装。

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

5.1.2可供复用的软件要素
服装管理软件复用的一个关键因素是抽象。抽象是对软件可复用对象的提炼和概括,即将可复用对象的基本属性和相应的操作,从具体的语言、环境和其他细节中提炼出来。软件的复用性很大程度上取决于对可复用对象的认识深度或者说可复用对象的抽象层次。抽象层次越高、与具体环境和特定细节越无关,则它被未来系统复用的可能性也越大。领域分析则是进行抽象的有力工具。领域分析借助特定领域、特定行业的专业知识与技能,对软件系统对象进行抽象和分类,提炼认知的对象及其相互关系,获得系统整体结构,从而生成可复用的软件构件。可以用于软件复用的软件产品,按照其抽象程度的高低,可以划分为如下的复用级别:

(1)代码的复用。
这里的代码既包括二进制形式的经过编译产生的目标代码,也包括文本形式的源代码。其中目标代码的复用的抽象程度是最低的。目前大多数高级程序设计语言的开发环境都以库文件的形式向编程人员提供了对许多基本功能的支持,例如输入输出、文件访问等功能。
编程人员可以通过链接(Link)将库文件和自己编写的代码合并成为一个可执行的文件,通过这一方式实现了对库文件中的目标代码的复用,避免了编程人员重复地开发一些会被反复使用的程序代码。随着软件技术的发展,出现了许多目标代码一级的复用技术。例如Microsoft公司的cOM技术,它通过使用COM对象的包容和聚合,使得一个COM对象可以重用另外一个COM对象的所有功能。目前目标代码的复用技术甚至可以实现跨语言的复用,一个Java程序的目标代码可以复用另一个C+十程序的目标代码。源代码的复用级别略高于目标代码的复用,程序员在编程时可以把一些希望被复用的代码段复制到自己的程序中,这种源代码的直接复制是非常原始的复用形式。目前许多编程语言已经可以支持诸如模板、宏等更为高效和方便的复用技术。源代码复用一般要求被复制重用的源代码和新开发的程序采用的是同一种编程语言。另外,源代码的复用往往会产生一些代码兼容方面的问题,例如C++语言,它有着许多不同版本的编译器,这其中包括了VC++、BorlandC++、c++Builder等开发工具。这种情况可能会导致同一段C++源代码采用不同的编译器进行编译时产生不同的结果。因此在源代码复用时,需要认真考虑代码的兼容问题。在编写希望被重用的源代码时应尽可能地采用标准编译器的语言。例如针对C++语言,就应该采用由ISO批准的标准C++(ISOl/IEC14882)的语法。

(2)设计结果的复用。
设计结果比源程序的抽象级别更高,因为它的复用受实现环境的影响较小,从而使可复用构件被复用的机会更多,并且所需的修改更少。这种复用有三种途径:第一种途径是从现有系统的设计结果中提取一些可复用的设计构件,并把这些构件应用于新系统的设计中;第二种途径是把一个现有系统的全部设计文档在新的软硬件平台上重新实现,也就是把一个设计运用于多个具体的实现;第三种途径是独立于任何具体的应用,有计划地开发一些可复用的设计构件。

(3)分析结果的复用。
这是比设计结果的复用抽象程度更高的复用,可被复用的分析结果是针对问题域的某些事物或某些问题的抽象程度更高的解法,受设计技术及实现条件的影响非常小,所以可复用的机会更大。复用的途径也有三种:从现有系统的分析结果中提取可复用构件用于新系统的分析;用一份完整的分析文档作为输入产生针对不同软硬件平台和其他实现条件的多项设计;独立于具体应用,专门开发一些可复用的分析构件。

(4)测试信息的复用。
主要包括测试用例(TestCase)的复用和测试过程信息的复用。测试用例的复用是在多次的软件系统的测试过程中重复使用同一测试用例,以降低测试工作的成本,提高软件测试的效率。测试过程信息是在测试过程中记录的测试人员的操作信息,软件系统的输人输出信息,软件系统的运行环境信息等与测试工作有关的信息。这些信息可以在对同一软件进行修改后的后续测试工作中重复使用。

5.2.1支持复用的软件工程要素
实现软件复用的因素包括技术因素和非技术因素两方面。技术因素主要包括:软件构件技术(SoftwareComponentTechnology)、领域工程(DomainEngineering)、软件构架(SoftwareArchitecture)、软件再工程(SoftwareReengineering)、开放系统(OpenSystem)、软件过程(SoftwareProcess)、Case技术等。除了上述的技术因素以外,软件复用还涉及众多的非技术因素,如机构组织如何适应复用的需求;管理方法如何适应复用的需求;开发人员知识的更新;创造性和工程化的关系;开发人员的心理障碍;知识产权问题;保守商业秘密的问题;复用前期投入的经济考虑;标准化问题等。实现软件复用的各种技术因素和非技术因素是互相联系的,它们结合在一起,共同影响软件复用的实现,如图5.1所示。

1.软件构件技术
构件(Component)是指应用系统中可以明确辨识的构成成分,而可复用构件(ReusableComponent)是指可以在多个软件系统的开发过程中被重复使用的软件产品。它可以是需求分析、系统设计、程序代码、测试用例、测试数据、软件文档以及软件开发过程中产生的其他软件产品。可复用构件是一种特殊的软件产品,它与只在一个软件系统中使用的软件产品相比具有较大的差异。为了使可复用构件在软件开发过程中能被高效、方便地重复使用,以达到提高软件开发的效率和质量、降低开发成本的目的,对可复用构件一般有以下要求:
(1)可复用构件应该具有功能上的独立性与完整性。
一个可复用构件应该具有相对独立的完整功能,构件与构件之间的联系应该尽可能少,彼此之间应该具有较为松散的耦合度,并且构件与构件之间的交互应该通过良好定义的接口进行。一个功能不完整,与其他构件耦合紧密的构件对于复用是非常不利的。
(2)可复用构件应该具有较高的通用性。
可复用构件的通用性的高低在很大程度上决定着它的适用范围。如果一个构件只能在一个很特殊的环境或者条件下使用,那么它的复用程度是很低的,这也就失去了开发可复用构件的意义。一般来说,构件的通用性(一般性)越高,它的适用范围就越广,可复用程度就越高,也就越能充分发挥软件复用的优势。所以在开发构件时,应该尽量提高构件的通用性(一般性),使其可以在更多的软件系统的开发中被重复使用。
(3)可复用构件应该具有较高的灵活性。
虽然可复用构件一般都具有较高的通用性,但是由于可复用构件被复用的软硬件环境可能差异极大,要开发出一个不需要做出任何调整或修改就可以直接适用于许多不同环境的构件是不现实的。所以可复用构件应该允许构件的用户根据具体情况对构件进行适当的调整,以适应不同用户和环境的具体要求。因此在开发可复用构件时,应该提供灵活的构件调整机制,以方便构件的重复使用,扩大构件的适用范围。
(4)可复用构件应该具有严格的质量保证。
由于可复用构件是组装软件系统的“零部件”,如果构件的质量都无法保证,那么使用构件组装的软件系统的质量保证也就无从谈起,也就更谈不上提高软件开发的质量。因此构件的质量是软件系统质量的一个基本保证。所以在一个可复用构件被提供给用户使用以前,必须对构件进行充分的测试,尽可能多地发现并纠正构件中的错误,同时在复用构件的过程中,如果发现构件潜藏的错误,要及时加以修改。可复用构件的可靠质量是其被复用的基础。因为可复用构件会在不同的软件系统中被重复使用,因此在对构件进行测试时,需要考虑该构件在不同的软硬件环境中,构件是否是健壮和可靠的,是否会出现与兼容性有关的错误。所以对于构件的测试工作应该在不同的软件和硬件环境中进行。
(5)可复用构件应该具有较高的标准化程度。
用于组装一个软件系统的可复用构件可能是由不同的组织或个人开发的,甚至可能是采用不同编程语言编写的,这些存在很大差异的构件要在一个软件系统中和谐共存,并且进行有效的交互(例如数据通信和功能调用),以构成一个完整的应用。这要求这些异质的构件具有定义良好的接口,使构件之间的交互能够通过标准化的接口进行,使得不同构件的组装变得容易。可见一个构件的标准化对构件的重用是至关重要的。所以许多公司和学术组织正在积极地进行构件标准化的研究和实践,例如微软公司的COM和OMG的CORBA就是这方面的典型代表。
随着对软件复用理解的深入,构件的概念已不再局限于源代码构件。而是延伸到需求、系统和软件的需求规则、系统和软件的构架、文档、测试计划、测试案例和数据以及其他对开发活动有用的信息等都可以称为可复用软件构件。
软件构件技术是支持软件复用的核心技术,是近几年来迅速发展并受到高度重视的一个学科分支,其主要研究内容包括:
(1)构件获取:有目的的构件生产和从已有系统中挖掘提取构件。
(2)构件模型:研究构件的本质特征及构件间的关系。
(3)构件描述语言:以构件模型为基础,解决构件的精确描述、理解及组装问题。
(4)构件分类与检索:研究构件分类策略、组织模式及检索策略,建立构件库系统。支持构件的有效管理。
(5)构件复合组装:在构件模型的基础上研究构件组装机制,包括源代码级的组装和基于构件对象互操作性的运行级组装。
(6)标准化:构件模型的标准化和构件库系统的标准化。

2.软件架构
软件构架是对系统整体结构设计的刻画,包括全局组织与控制结枸,构件间通信、同步和数据访问的协议,设计元素问的功能分配,物理分布,设计元素集成,伸缩性和性能,设计选择等。研究软件构架对于进行高效的软件工程具有非常重要的意义:通过对软件构架的研究,有利于发现不同系统在较高级别上的共同特性;获得正确的构架对于进行正确的系统设计非常关键;对各种软件构架的深入了解,使得软件工程师可以根据一些原则在不同的软件构架之间做出选择;从构架的层次上表示系统,有利于系统较高级别性质的描述和分析,特别重要的是,在基于复用的软件开发中,为复用而开发的软件构架可以作为一种大粒度的、抽象级别较高的软件构件进行复用,而且软件构架还为构件的组装提供了基础和上下文,对于成功的复用具有非常重要的意义。
软件构架研究如何快速、可靠地从可复用构件构造系统的方式,着重于软件系统自身的整体结构和构件间的互连。其中主要包括:软件构架原理和风格,软件构架的描述和规约,特定领域软件架构,构件向软件架构的集成机制等。

3.领域工程
领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的过程,它覆盖了建立可复用软件构件的所有活动。领域是指一组具有相似或相近软件需求的应用系统所覆盖的功能区域。领域工程包括三个主要阶段:
(1)领域分析:这个阶段的主要目标是获得领域模型(DomainModel)。领域模型描述领域中系统之间的共同需求。这个阶段的主要活动包括确定领域边界,识别信息源,分析领域中系统需求,确定哪些需求是被领域中的系统广泛共享的,哪些是可变的,从而建立领域模型。
(2)领域设计:这个阶段的目标是获得领域构架(Domain-SpecificSoftwareArchitecture,DSSA)。DSSA描述在领域模型中表示的需求的解决方案,它不是单个系统的表示,而是能够适应领域中多个系统需求的一个高层次的设计。建立了领域模型之后,就可以派生出满足这些被建模的领域需求的DSSA。由于领域模型中的领域需求具有一定的变化性,DSSA也要相应地具有变化性。
(3)领域实现:这个阶段的主要行为是定义将需求翻译到由可复用构件创建系统的机制。根据所采用的复用策略和领域的成熟和稳定程度,这种机制可能是一组与领域模型和DSSA相联系的可复用构件,也可能是应用系统的生成器。
这些活动的产品(可复用的软件构件)包括:领域模型、领域构架、领域特定的语言、代码生成器和代码构件等。在领域T程的实施过程中,可能涉及的人员包括:
(1)最终用户:使用某领域中具体系统的人员。
(2)领域专家:提供关于领域中系统信息的人员,他应该熟悉该领域中系统的软件设计和实现、硬件限制、未来的用户需求及技术走向。
(3)领域分析员:收集领域信息、完成领域分析并提炼出领域产品(可复用软件构件)的人员,他应该具有完备的关于复用的知识,并对分析的领域有一定程度的了解。
(4)领域分析产品(构件、构架)的使用者:包括最终用户、应用系统的需求分析员和软件设计者。

4.软件再工程
服装管理软件复用中的一些问题是与现有系统密切相关的,例如,现有软件系统如何适应当前技术的发展及需求的变化,采用更易于理解的、适应变化的、可复用的系统软件构架并提炼出可复用的软件构件?现存大量的遗产软件系统(LegacySoftware)由于技术的发展,正逐渐退出使用,如何对这些系统进行挖掘、整理,得到有用的软件构件?已有的软件构件随着时间的流逝会逐渐变得不可使用,如何对它们进行维护,以延长其生命期,充分利用这些可复用构件?等等。软件再工程(SoftwareReengineering)正是解决这些问题的主要技术手段。
软件再工程是一个工程过程,它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式。再工程的基础是系统理解,包括对运行系统、源代码、设计、分析、文档等的全面理解。但在很多情况下,由于各类文档的丢失,只能对源代码进行理解,即程序理解。再工程的主要行为如图5.2所示。

5.开放系统技术
开放系统技术的基本原则是在系统的开发中使用接口标准,同时使用符合接口标准的实现。这些为系统开发中的设计决策,特别是对于系统的演化,提供了一个稳定的基础,同时,也为系统(子系统)间的互操作提供了保证。开发系统技术具有在保持(甚至是提高)系统效率的前提下降低开发成本、缩短开发周期的可能。对于稳定的接口标准的依赖,使得开发系统更容易适应技术的进步。当前,以解决异构环境中的互操作为目标的分布对象技术是开放系统技术中新的主流技术。
开放系统技术为软件复用提供了良好的支持。特别是分布对象技术使得符合接口标准的构件可以方便地以“即插即用”的方式组装到系统中,实现黑盒复用。这样,在符合接口标准的前提下,构件就可以独立地进行开发,从而形成独立的构件制造业。

6.软件过程
软件过程又称软件生存周期过程,是软件生存周期内为达到一定目标而必须实施的一系列相关过程的集合。一个良好定义的软件过程对软件开发的质量和效率有着重要影响。当前,软件过程研究以及企业的软件过程改善已成为软件工程界的热点,并已出现了一些实用的过程模型标准,如CMM、ISO9001/TickIT等。
然而,基于构件复用的软件开发过程和传统的一切从头开始的软件开发过程有着实质性的不同,探讨适应于软件复用的软件过程自然就成为一个迫切的问题。

7.CASE技术
随着软件工程思想日益深入人心,以计算机辅助开发软件为目标的CASE(ComputerAidedSoftwareEngineering)技术越来越为众多的软件开发人员所接受,CASE工具和CASE环境得到越来越广泛的应用。CASE技术对软件工程的很多方面,例如分析、设计、代码生成、测试、版本控制和配置管理、再工程、软件过程、项目管理等,都可以提供有力的自动或半自动支持。CASE技术的应用,可以帮助软件开发人员控制软件开发中的复杂性,有利于提高软件开发的效率和质量。
软件复用同样需要CASE技术的支持。CASE技术中与软件复用相关的主要研究内容包括:在面向复用的软件开发中,可复用构件的抽取、描述、分类和存储;在基于复用的软件开发中,可复用构件的检索、提取和组装;可复用构件的度量等。

5.2.2面向软件复用的软件工程
面向软件复用的软件工程与传统的或面向对象的软件工程相比,有着显著的差异。在软件开发的各个阶段,开发人员应不断地考虑需要完成的这部分工作是否可以通过使用现成的可复用构件组装完成,而无须从头开始构造,以此达到提高效率和质量、降低成本的目的。例如在系统编码阶段,开发人员应考虑是否可以复用已有的源代码或目标代码;在系统测试阶段,应考虑是否有可供重复使用的测试用例和测试数据。通过在软件开发的各个阶段,充分考虑重复使用已有软件产品,达到软件复用的目的,避免人力和财力不必要的浪费和重复建设。
开发人员在选用可复用构件时,需要考虑:①是否存在企业组织内部开发的构件可以满足需要?②是否存在第三方的商业构件可供使用?③选用的构件是否与系统的其他部分和运行环境兼容?同时,开发人员需要对不能由现成的可复用构件满足的需求,使用传统的或面向对象的软件工程进行开发。对选用的可复用构件需要进行的开发活动包括:构件合格性认证,构件适应性的修改,构件组装,构件更新。

5.2.3基于构件的软件开发
基于构件的软件开发过程包括两个并发的子过程:一个是领域工程,另一个是基于构件的开发。领域工程完成一组可复用构件的标示、构造、分类和传播;基于构件的开发完成使用可复用构件构造新的软件系统的工作。

1.领域分析
领域分析是对特定应用领域中共同的特征、知识、需求的标示、分析和规约。领域分析是特定领域内软件重用的基础,它的目标就是发现和挖掘在特定领域内可以被复用的构件。
领域分析与一个具体的应用系统的需求分析有显著的差异,它不是针对某个特定的软件系统,而是针对某一类软件系统的共同特征、知识和需求,也就是要提取一个特定的应用领域中所有的应用系统具有的共性,并以此作为开发适用于该领域的可复用构件的基础。总之,领域分析具有比需求分析更一般、更抽象、更广泛的特征。

2.构件的开发
领域分析的结果为构件的选取和开发提供了指导性的原则。除了有领域分析作为其基础,构件开发还需要遵循一定的设计概念和原则。在构件的编码阶段,需要充分地考虑到可复用构件与一般应用程序的显著区别。为了使构件能够被较为广泛的复用,构件应该具有较强的通用性和灵活性。构件应该具有相当的一般性和抽象性,能够用于满足某一类相似的需求,一个过于特殊的构件是很难被重复使用的。即使一个通用性很高的构件也不可能完全适应用户的需求和运行环境,所以在一个构件被不同的应用复用时,对它的某些部分进行修改是不可避免的。所以构件开发时,需要为用户对构件的调整和修改留出余地。例如继承、参数化、模板和宏都是典型的提高构件灵活性和可调整性的机制。同时为了保证不同的构件能够被正确地组装和交互,构件与外界之间的联系应该通过标准化的定义良好的接口进行,而将构件的实现和内部数据结构加以隐藏,构件的封装性和彼此之间松散的耦合性对于降低构件系统开发难度和提高开发效率起着关键的作用。

进人测试阶段的构件应该经历比普通应用更为严格和充分的测试。同时,在测试过程中,要考虑可复用构件可能被应用到不同的运行环境中,所以在不同的软硬件环境中对构件进行多次测试对于保证构件的质量和可靠性是非常必要的。通过测试的构件就可以被提交到构件库中,由后者对其进行存储和管理,以备开发人员选用。除了构件本身需要被提交,对构件的特征和属性进行描述的文档也需要一并提交,以保证对该构件能够进行科学的管瑚和高效的检索.

要在软件系统的开发过程中有效地实现复用,必须要求复用达到一定的规模,必须有大量的可供开发人员选择的可复用构件。构件的数量越多,找到合适构件的可能性也就越大,应用系统的复用程度也就越高。但是随着构件数量的增加,如何有效地对这些构件进行组织和管理成为构件复用技术成败的关键。如果大量的构件没有被有效地组织和管理起来,那么要在一堆没有任何结构、散乱的构件中,找到满足特定需求的构件是一件十分困难的事情。因此,当构件的数量达到一定规模时,采用构件库对其进行组织和管理是十分必要的,构件库的组织和管理水平直接决定着构件复用的效率。构件库是用于存储、检索、浏览和管理可复用构件的基础设施,构件库的组织和管理形式要有利于构件的存储和检索,其最关键的目标是支持构件的使用者可以高效而准确地发现满足其需要的可复用构件。为了达到有效地进行软件复用的目的,构件库一般应具备以下功能:①支持对构件库的各种基本的维护操作,例如在构件库中增加、删除、更新构件;②支持对构件的分类存储,根据构件的分类标准和模型将构件置于合适的构件类型中;③支持对构件的高效检索,可以根据用户的需求从构件库中发现合适的构件,在这里对用户需求的匹配,既包括精确匹配,也包括模糊或者近似的匹配;④支持方便的、友好的用户管理和使用界面。

3.基于构件的开发
基于构件的开发是指使用可复用构件组装开发新的应用系统,它由构件的鉴定、构件的调整和构件的组装组成。
(1)构件的鉴定。
构件的鉴定是对打算用于软件开发的构件能否满足应用的需要,能否达到应用所需要的性能、可靠性、质量的要求而进行的相应考察和鉴别工作。
(2)构件的调整。
通常在将构件复用到应用中时,构件都需要进行必要的调整和修改才能满足软件、硬件环境和具体应用的需要。
(3)构件的组装。
构件的组装是指将经过鉴定和调整的构件集成到应用系统中去。通常为了达到此目的,还必须构建一个基础设施提供构件协同的模型和使构件能够交互并完成共同任务的特定服务。

基于构件的服装管理软件开发的一个明显的优点就是提高了软件的质量。可复用的构件相对于在单一应用中使用的模块来说,一般都更为成熟并具有较高的质量保证,这主要是因为:
(1)可复用的构件在开发过程中,都经过严格的测试。构件的开发者一般都是在该构件的使用领域具有丰富经验、对该领域具有深入研究的开发团体,他们能从以往的用户和开发项目那里得到许多宝贵的经验,因而更容易开发出高质量的构件“精品”。在构件的开发过程中,为了保证它广泛的适应性和在频繁使用过程中的正确性,一般对其有更高的质量要求,并且在构件正式发布以前,都要进行更为严格的测试。因而可复用构件的质量会得到更好的保证。

(2)可复用的构件在不断复用过程中,其中的错误和缺陷会被陆续发现,并得到及时的排除。所以随着一个可复用构件复用次数的不断增加,其中的错误会逐渐减少,软件的质量也随之改善。在软件开发中使用的一个可复用构件通常都是经过许多其他用户的频繁使用,因此可复用的构件相对于新开发的模块更为成熟。

基于可复用构件的软件开发对于提高软件开发的效率也有着显著的作用。软件复用已经渗透到了软件开发的各个阶段,在开发的各个阶段都有可以被重复使用的软件产品。在分析和设计阶段可以复用的构件包括:应用框架、用例、分析和设计模型等产品。在编码阶段可以复用的构件包括:函数库、子程序库、类库、二进制构件库等产品。在测试阶段复用的构件包括测试用例和测试数据等产品。显然,使用现成可用的可复用构件比从头开始进行开发在开发效率上大为提高。在软件开发的各个阶段使用相应的可复用构件对于提高软件产品的生产效率具有重大的意义。然而使用可复用的构件对开发效率的影响受到多方面因素的影响,这些因素包括:应用领域、问题的复杂度、开发队伍的结构和规模、项目开发的周期、被应用的技术等。由于在不同的应用中影响其开发效率的因素有所不同,所以可复用构件对开发效率的提高程度也是不同的,一般30%~50%的复用可以使开发效率提高25%~40%。

使用可复用的现成构件进行软件开发比一切都重新开发,其成本大为节省。它避免了不必要的重复劳动和人力财力的浪费。同时也必须意识到基于构件的软件开发也是有一定成本和代价的。首先是开发可复用的构件的成本。通常开发、测试、维护一个可复用的构件的成本是一个具有相同功能非复用构件的1.5~3倍。因为可复用的构件需要有更强的适应性和更高的质量保证。其次是建立和维护构件库的成本。对构件库的管理、维护、检索和修改也需要投入相当的时间和金钱。另外,在开发软件中复用一个构件时,也是需要一定成本的。虽然复用一个现成的构件的成本比重新开发的成本要低得多,只有后者的1/4左右,但是复用的开销不会降到零。

在意识到基于可复用的构件进行软件开发在开发成本、开发效率和开发质量方面带来的巨大效益的同时,开发人员也必须清楚地意识到使用可复用的构件进行软件开发所面临的风险和困难。这包括使用的构件不能完全适应应用的需要,构件的适应性很差或根本不能对其进行调整。另外在进行基于构件的软件开发时,很多情况下需要使用的可复用构件需要向第三方的构件开发商进行购买,这会带来更大的风险:①在同一系统中采用多个开发商提供的构件,它们之间的兼容性可能是开发过程中所要面对的一个严峻的问题;②采用随处可以购买到的构件可能会使开发出来的软件产品丧失技术上的独创性和市场上的竞争力;③第三方的构件开发商可能歇业,这会使购买的构件失去维护服务。这些都是在购买第三方构件进行软件开发时无法回避的问题,因此需要对这些风险进行充分的估计。

文章来源:秘奥软件网,中小企业信息化领跑者!全国咨询热线:400-9908-527_www.misall.com

最新新闻: