软件测试复用范文(精选9篇)
软件测试复用 第1篇
软件复用是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。
目前及近期的未来最有可能产生显著效益的复用是对软件生命周期中一些主要开发阶段的软件制品的复用,按抽象程度的高低,可以划分为如下的复用级别:
1 代码的复用
包括目标代码和源代码的复用。其中目标代码的复用级别最低,历史也最久,当前大部分编程语言的运行支持系统都提供了连接(Link)、绑定(Binding)等功能来支持这种复用。源代码的复用级别略高于目标代码的复用,程序员在编程时把一些想复用的代码段复制到自己的程序中,但这样往往会产生一些新旧代码不匹配的错误。想大规模的实现源程序的复用只有依靠含有大量可复用构件的构件库。如”对象链接及嵌入”(OLE)技术,既支持在源程序级定义构件并用以构造新的系统,又使这些构件在目标代码的级别上仍然是一些独立的可复用构件,能够在运行时被灵活的得新组合为各种不同的应用。
2 设计的复用
设计结果比源程序的抽象级别更高,因此它的复用受实现环境的影响较少,从而使可复用构件被复用的机会更多,并且所需的修改更少。这种复用有三种途径,第一种途径是从现有系统的设计结果中提取一些可复用的设计构件,并把这些构件应用于新系统的设计;第二种途径是把一个现有系统的全部设计文档在新的软硬件平台上重新实现,也就是把一个设计运用于多个具体的实现;第三种途径是独立于任何具体的应用,有计划地开发一些可复用的设计构件。
3 分析的复用
这是比设计结果更高级别的复用,可复用的分析构件是针对问题域的某些事物或某些问题的抽象程度更高的解法,受设计技术及实现条件的影响很少,所以可复用的机会更大。复用的途径也有三种,即从现有系统的分析结果中提取可复用构件用于新系统的分析;用一份完整的分析文档作输入产生针对不同软硬件平台和其它实现条件的多项设计;独立于具体应用,专门开发一些可复用的分析构件。
4 测试信息的复用
主要包括测试用例的复用和测试过程信息的复用。前者是把一个软件的测试用例在新的软件测试中使用,或者在软件作出修改时在新的一轮测试中使用。后者是在测试过程中通过软件工具自动地记录测试的过程信息,包括测试员的每一个操作、输入参数、测试用例及运行环境等一切信息。这种复用的级别,不便和分析、设计、编程的复用级别作准确的比较,因为被复用的不是同一事物的不同抽象层次,而是另一种信息,但从这些信息的形态看,大体处于与程序代码相当的级别。
由于软件生产过程主要是正向过程,即大部分软件的生产过程是使软件产品从抽象级别较高的形态向抽象级别较低的形态演化,所以较高级别的复用容易带动较低级别的复用,因而复用的级别越高,可得到的回报也越大,因此分析结果和设计结果在目前很受重视。用户可购买生产商的分析件和设计件,自己设计或编程,掌握系统的剪裁、扩充、维护、演化等活动。
5 组件复用技术
组件指应用系统中可明确分辨的相对独立并具有复用价值的构成成分。基于组件的软件复用是迄今为止最优秀的软件复用手段,是支持软件复用的核心技术,并在近几年迅速发展成为受到高度重视的一门学科分支。组件技术的应用必须遵循一些共同的规范,目前分别有OMG(Object Management Group)提出的CORBA(Common Object Request Breaker Architecture)和Microsoft提出的COM/COM+(Component Object Model)技术标准,其中CORBA主要应用于UNIX操作系统平台,而COM/COM+则主要应用于Microsoft windows操作系统。本文主要对基于COM组件的软件复用方法进行研究。
微软的OLE/COM是基于分布式对象模型的开放标准,得到许多系统软件开发商、独立软件开发商(ISV)和用户的支持。OLE实际上是建立在组件对象模型(COM)基础上的一组高层次技术。从基本中间件功能视图的角度来说,COM支持对象的定义、创建、调度、引用及对象之间的通讯,提供接口定义语言(IDL)。
COM支持由不同程序设计语言或不同编译器实现的对象之间的二进制兼容。OLE/COM结构的另一要素是Automation,允许客户程序动态构造请求(包括方法名、相关参数的类型和取值等),并将请求发送到远端对象,任何符合OLE/COM规范的对象都能自动提供其所能支持的接口信息。
软件复用有三个基本原则,一是必须有可以复用的对象;二是所复用的对象必须是有用的,三是复用者需要知道如何去使用被复用的对象。软件复用包括两个相关过程:可复用软件(构件)的开发(Development for Reuse)和基于可复用软件(构件)的应用系统构造(集成和组装)(Development with Reuse)。解决好这几个方面的问题才能实现真正成功的软件复用。
可复用软件(构件)的开发是实现软件复用的基本条件,对象技术的广泛使用,提供了建造和使用构件的概念基础和实用工具,有了可复用软件,基于可复用软件(构件)的应用系统构造(集成和组装)才能得以实现。软件的生产也可以象硬件的生产一样,在设计好框架后通过标准的构件组装而成。一般认为构件是具有一定功能、能够独立工作或同其他构件组合起来协调工作的程序体,一经产生,就与它的具体实现语言无关,可以认为是一段二进制码和数据段,其内部具体实现是无法看到的,可将成熟的构件当作商品出售,在保证开发者的利益同时最大地满足社会需求。采用构件来开发软件可以更有效地重用他人已有的劳动成果。
软件复用各方面的困难,无论是技术问题还是非技术问题,都影响着软件复用的广泛实行。
1)技术因素
构件与应用系统之间的差异。一些开发者开发的构件,要做到在被另一些人开发的系统中使用时正好合适,从内容到对外接口都恰好相符,或者作很少的修改,这不是一件简单的事;构件要达到一定的数量,才能支持有效的复用,而大量构件的获得需要有很高的投入和长期的积累;发现合用构件的困难,当构件达到较大的数量时,使用者要从中找到一个自己想要的构件,并断定它确实是自己需要的,不是一件轻而易举的事;基于复用的软件开发方法和软件过程是一个新的研究实践领域,需要一些新的理论、技术及支持环境,目前这方面的研究成果和实践经验都不够充分。
2)人的因素
软件开发是一种创造性工作,长期从事这个行业的人们形成了一种职业习惯:喜欢自己创造而不喜欢使用别人的东西,特别是当要对别人开发的软件作一些修改再使用时,他们常常喜欢自己另写一个。
3)管理因素
在软件生产的管理中,从以往沿习了一些与复用的目标很不协调的制度与政策,如计算工作量时,对复用的部分打很大的折扣,甚至不算工作量;另外,不是在项目开始时自觉地向着造就可复用构件的方向努力,而是在它完成之后,看看是否能从中找到一些可复用构件。这些弊端妨碍了复用水平的提高和复用规模的扩大,甚至会挫伤致力于复用的人员的积极性。
4)教育因素
在软件科学技术的教育与培训中,缺乏关于软件复用的内容,很少有这方面的专门教材及课程,即使在其它教材及课程中提到软件复用,其篇幅及内容也相当薄弱。
5)法律因素
在法律上还存在一些问题,例如,一个可复用构件在某个应用系统中出现了错误,而构件的开发者和应用系统的开发者不是一个厂商,那么责任应该由谁负?此外,在版权、政府政策等方面也存在一些悬而未决的问题。
另外,软件产品是一种精神产品,它的产生几乎完全是人脑思维的结果,它的价值,也几乎完全在于其中所凝结的思想;它的物质载体的制造过程与价值含量都是微不足道的。物质产品的生产受到人类制造能力的限制,现有的一却物质产品的复杂性都没有超过这种限度,软件却没有这种限制,只要人的大脑能想到的问题,都可能要求软件去解决,人脑所能思考的问题的复杂性,远远超出了人类能制造的物质产品的复杂性,因而使软件的复用更为困难
摘要:随着软件技术的发展,软件复用技术也在发展,该文从软件复用的级别、原则以及软件复用技术应用存在的困难等几个方面进行了探讨。
关键词:软件复用,级别,技术,难度
参考文献
[1]百度百科.软件复用[EB/OL].http://baike.baidu.com/view/600112.htm.
[2]游新娥.软件复用技术研究[J].中国西部科技,2004(5).
[3]孙琪.软件复用技术概述[J].东方通科技,2003(6):30.
[4]李志毅,赵政.软件复用与COM及.NET组件技术[J].微处理机,2006(12).
浅谈软件复用技术的研究论文 第2篇
关键词:软件复用;内容;优势;技术
软件复用就是利用现有的软件成分构造出高质量、高效率的新的软件系统。软件复用不仅仅只是包括程序的复用,而且还包括每个活动所产生的制成品的复用。随着软件复用技术的快速发展,人们发现了软件资产的一些问题。为了能够有效地解决此类问题,必须将软件复用技术能够准确地、合理地运用到软件开发中,将软件复用技术的优势充分发挥出来,其实这也正是软件复用技术的难点所在。
1.软件复用内容
应用软件系统的开发过程包含以下几个阶段:领域和需求分析、设计、编码、测试以及维护等,各个阶段的工作中均存在重复,而这些重复都可以作为软件复用的内容。一般可以分四个层次:第一,领域和需求分析阶段的复用。这个层主要包括对领域知识、软件总体框架结构、项目计划、成本估计等的复用;第二,设计阶段的复用。这个层主要包括对分析建模方法、领域模型、软件功能模型等的复用;第三,编码阶段的复用。这个层主要包括对功能模块、用户和技术文档、用户界面风格等的复用;第四,测试阶段的复用。这个层主要包括对测试方法、测试用例等的复用。
2.软件复用的优势
软件复用的优势主要表现在以下几个方面:第一,软件复用使软件生产率得以提高,并且也使开发代价因此而少。由于可复用构建经过了高度优化和考验,其构造的系统更加可靠、性能更加强大;第二,软件复用也使系统的.维护代价得以减少。用可复用的构件构建系统减少了错误的发生,也就是减少了维护频率;第三,软件复用使系统间的互操作性得以提高。系统由于使用了统一的接口,使其与其他系统之间的互操作性得以实现;第四,软件复用对快速原型设计有一定的支持效果,那么快速有效地构造出应用程序的原型可以充分利用可复用构件和构架,从而获得用户对系统功能的反馈;第五,培训成本的减少也可以通过软件复用来实现。总而言之,采用软件复用技术提高了软件质量。
3.软件复用的关键技术
3.1软件构件技术
软件构件技术是软件复用的核心。构件是系统中可以明确辨识的构成成分;而软件构件则是软件系统中具有一定意义的相对独立的构成成分;可复用构件是指在具有独立功能的基础上,实现复用功能的构件。随着人们对软件复用技术研究越来越深入,构件的概念也得到了延伸。它们应用于各个不同的开发过程,目前,主要关注的构件是代码级构件,它可以直接由工具进行支持。代码级构件主要分为源代码和二进制代码构件两种,其源代码所采用的复用方式也有两种,即黑盒复用和白盒复用两种方式;而二进制代码构件的复用方式主要就是一种,即黑盒复用方式,通常也只能对构件的接口和属性等信息进行了解。软件构件技术的研究内容主要包括:
(1)构件获取。构件生产是有目的的,其构件是从已有的系统中挖掘出来的;
(2)构件模型。在对构件本质特征研究的基础上,充分认识构件间的关系;
(3)构件描述语言。此目的就是为了使构件的精确描述、理解和组装问题进行解决;
(4)构件分类和检索。对构件分类和检索策略进行研究,为构件库系统的构建创造良好的条件;
(5)构件复合组装。对构件组装机制进行研究且在构件模型的基础上进行;
(6)标准化。这里的标准化主要是构件模型和构件库系统的标准化。
3.2构件构架
对于软件架构,目前还没有一个统一的定义。一个典型的定义是:一个程序或计算系统的软件构架是系统的一个或多个结构,包含软件构件、这些构件的对外可见的性质以及它们之间的关系。体系结构描绘的是系统的蓝图,是沟通软件需求与软件设计的一座桥梁。体系结构的研究,使软件复用从代码复用发展到设计复用和过程复用。在基于构件和体系结构的软件开发方法下,程序开发模式也相应地发生了根本变化。软件开发不再是“算法+数据结构”,而是“构件开发+基于体系结构的构件组装”。软件构架包括全局组织与控制结构,构件间通讯、同步和数据访问的协议,设计元素间的功能分配,物理分布,设计元素集成,伸缩性和性能,设计选择等。软件构架研究如何快速、可靠地从可复用构件构造系统的方式,着重于软件系统自身的整体结构和构件间的互联。其中主要包括:软件构架原理和风格、软件构架的描述和规约、特定领域软件构架、构件向软件构架的集成机制等。
3.3领域工程
领域工程是针对一组相似或相近应用的共同领域及用户需求进行分析,识别这些应用的共同特征和可变特征,进行面向复用的开发,产生出特定领域的构件和构架。它覆盖了建立可重用构件的所有活动;主要过程分为领域分析(定义“问题空间”)、领域设计(提出“解决问题的框架”)和领域实现(实现所提出的“解决空间”)三个阶段。它以领域分析为出发点,对领域中的系统进行分析,包括识别、搜集、组织、分析和表示领域中相关的共性和个性信息,形成领域定义和领域模型。其中领域模型确定了该领域系统的公共功能和数据;依据领域模型,设计面向特定领域的软件构架DSSA,包括系统中各种构件间交互关系的共性和差异,并以此领域构架为中心,识别、开发和组织可重用构件,供应用工程师使用。这样,当开发同一领域中新的应用时,可以根据领域分析模型,确定新应用的需求规约;根据特定领域的软件构架形成新应用的设计,并以此为基础选择可复用构件进行组装,从而形成新系统。
3.4软件再工程
随着软件技术的不断开发,一些遗产软件系统已经不能在满足现今的要求,慢慢地退出软件舞台,如果能够从这些系统中获取有用的软件构件,再对它们进行维护,使其系统软件生命周期得以延长,而这个过程就是软件再工程所要解决的问题,从而构造出新的系统来。如果没有对其进行维护,即使获取了有用的软件构件,那么这些软件构件随着技术的发展最终还是被淘汰。
3.5开放系统技术
使用接口标准是开放系统技术的基本原则。开放系统技术能够为系统开发的决策设计提供良好的依据,尤其是为系统的演化提供了稳定的基础,同时也进一步保证了各子系统间的互操作。开放系统技术不仅能够确保系统效率的稳定进行,而且在此基础上,能够使开发成本得以降低以及开发周期得以缩短。系统依赖稳定的接口标准促进了开发系统更容易适应技术。
3.6软件过程
软件过程就是从软件需求定义开始,直至软件使用后废弃为止,针对系统开发、运作和维护所实施的全部过程、活动和任务的结构。随着软件工程的快速发展,软件过程也发生了一些变化。软件过程又称软件生存周期过程,软件生存周期主要可划分为三个时期,第一时期就是计划、分析时期,第二时期就是设计、实现时期,第三时期就是运行、维护时期。当前,软件工程研究的热点就是软件过程及其完善。
3.7CASE技术
软件工程思想已经在人们心中有了更深入的渗透,其已经越来越受到广大软件开发者的欢迎,CASE工具和CASE环境得到越来越广泛的应用。对于软件工程而言,CASE技术是非常重要的,它能够支持软件工程,并且使软件开发的复杂性有所降低,也就是说,能够促使软件开发人员有效控制软件开发的复杂性,进而使软件开发的效率和质量得以提高。同理,CASE技术也能够有效地支持软件复用。其主要内容包括:在面向复用的软件开发中,可复用构件的抽取、描述、分类和存储;在基于复用的软件开发中,可复用构件的检索、提取和组装;可复用构件的度量等。
4.结语
面对软件危机的发生,软件复用技术起到了非常重要的作用。软件复用技术是缓解软件危机的重要手段,它不仅能够提高软件开发效率,而且还能够提高软件的可靠性,以及能够降低软件开发成本,在软件测试和维护方面也有一定的优势。因此,软件复用技术已经成为现在软件工程方面的研究热点。
参考文献:
[1]朱俊波,史素娟.浅议软件开发中的复用技术[J].福建电脑,,(02).
[2]杨敬君.基于构件的软件复用技术研究与应用实践[D].大连海事大学,.
[3]仉新刚.浅谈软件复用的理论与技术[J].科技信息(学术研究),2008,(13).
[4]吴树德,曾庆弘,左壮.软件复用技术在管理信息系统设计中的应用[J].通化师范学院学报,,(06).
浅议计算机软件的复用 第3篇
关键词:软件复用;范式抽象;智能学习;范式库
一、软件复用
软件复用是为了缩减软件开发和维护的花费,将已有软件的各种有关知识用于建立新的软件技术。它是提高软件的生产力和质量的一项重要技术。早在1968年NATO软件工程会议上就第一次引入软件复用的概念,随后我们又对软件复用技术进行了无数次的研究和实践,可是因为技术的不健全以及其他的各种因素,软件复用技术对软件产业的影响并没有达到预期的效果。近年来随着面向对象方法和技术的出现和不断成熟,软件复用也就有了更有力的技术支持,使得它能够更好地解决软件危机,从而提高软件的生产效率和质量,同时还避免软件开发中的重复劳动,有利于降低软件的开发费用。软件复用技术主要从产品复用和过程复用两个方面来考虑。复用已有的软件产品就是我们所说的产品复用。目前基于构件的、面向服务的软件开发模式就是以这种软件复用为基础建立起来的。这两种开发模式正是通过对现有的构件和服务进行合成或集成才生成了所需要的软件。目前软件复用技术研究的焦点就是产品的复用,而构件技术和软件架构技术是它所涉及的关键技术,只有在成熟的构件和架构的技术上,才可能达到产品复用的良好效果。
二、面向对象系统分析(OOA)阶段软件复用模型
(一)OOA阶段可重用性的本质
OOA阶段可重用性的深度是不同的,编程阶段不同类型的编程软件有高深度、中深度、低深度三种不同深度的可重用性。我们直接使用重用产品的重用而不进行任何改变的这种重用性就是高深度重用,这是复用性最好的一种复用软件,现在在市场上面向服务的软件开发技术中对服务的重用也是一种高深度的复用技术。还有一种复用可重用性较好的重用,那就是中深度的重用,它就是指程序员在自己平时的工作经验的指导下开发出比较通用的组件,当要真正具体使用时,只要对这些组件稍作修改就可以使用的一种重用。最后一种重用就是低深度的可重用性,这种可重用性仅仅局限于特定的项目,它的可用性是最差的。通过上面三种重用性的比较,我们知道可重用性与业务逻辑的相关性是相反的,也就是说重用性好的一般是与业务逻辑无关。
(二)OOA阶段软件复用模型研究
OOA阶段的软件复用,是以许多的优秀系统分析员在不断实践中积累的经验为基础的,它可以被称之为思想上的复用。通用性和重用性是这个阶段中软件复用的一个重要特征,因此为了使软件复用的效果更为明显,我们就要抓住这个特征来构造这个阶段的软件复用模型。
(三)范式抽象
范式抽象就是对抽象的解决方案模板的一种设计方法。为了使范式的设计达到更好的重用性,我们就要具体问题具体分析,从而也就产生了针对不同问题的多种范式抽象方法,主要的方法有下面三种。
1.关系抽象
在OOA阶段,由于具体项目的类型是多样的,因此我们也就要研究出多种关系模型,我们现在就用学校排课表系统和网上购物系统来对关系抽象进行说明。在学校排课表系统中,首先需要定义的就是教师类,它包括了教师的基本信息,如姓名,同时只有再定义一个与此对应的教师课表类用于显示教师课程的安排情况,教师才会很快地得出自己的上课表。同样,在网上购物系统中,我们也需要定义一个购物者类和购物车类,这样才能使得购物者与所购买的物品相对应起来。通过对这两个系统的分析,我们知道所谓的关系抽样就是一个实体对另一个实体的拥有关系,只要我们把这种关系以范式的形式保存起来,我们就可以在不同的项目中重用这种范式,并且我们还可以在此基础上抽象出许多其他的关系范式,比如“实体—内容关系”“上级下级关系”等都是在此基础上抽象出来的。
2.相似对象抽象
相似对象抽象的产生是因为在不同项目的OOA阶段中,我们会分析出大量的相似对象或类,这些相似性大的对象具有相对的独立性,当我们把这些对象模型以范式的形式保存起来的时候就会使得分析结果的重用性大大提高。到此我们就知道了所谓的形似对象抽象就是指按照上述思想进行的范式抽象,它是以分析阶段的对象模型为依据的,并且这种对象模型具有独立的、高度的相似性,因此我们抽象出来的范式可以被称为对象范式,而它与具体的项目之间的那种相似就可以被称作表面相似性。当表面相似越相似时,范式的重用性也就会越大。
3.领域抽象
领域抽象就是指对于某一领域的抽象问题运用的一种解决方案。再进一步的解释就是说在同一个领域的项目开发过程中我们总是能够总结出更多的相似性,包括关系相似性和表面相似性,将它们结合起来,就可以产生与行业有关的构件。这种构件是建立在具体领域上的一种抽象,我们称之为领域抽象。在OOA阶段我们主要就是运用到了领域分析的方法,被称为领域工程更大的学科中的第一项技术活动就是我们所说的领域分析。
目前为了更好地发展计算机软件技术,我们就必须加大对软件复用技术的分析,并提出面向对象系统分析阶段软件复用的模型,提高项目完成的速度。
参考文献:
[1]黄靖,赵海光.软件复用,软件合成与软件集成.计算机应用研究,2004.
[2]王丽娟.软件复用技术及其在软件开发中的应用.中山大学学报论丛,2004(1).
[3]段小君,高金环.软件复用与面向对象技术.西安邮电学院学报,2004(02).
软件测试用例的复用技术研究 第4篇
关键词:测试用例复用,软件测试,软件测试复用,复用模型
随着软件规模化和产业化发展, 软件的复杂程度越来越高, 软件的功能变得也越来越强大。与此同时, 软件产品渗透到国民经济生活的各个领域, 其质量也自然受到前所未有的关注。长期以来, 我国软件企业一直被软件质量问题所困扰。其中一个重要因素是对软件测试的忽视。
在软件测试过程中, 测试用例的选择对软件测试的成败起着至关重要的作用, 测试用例设计的基本目的是确定一组最有可能发现某个错误或某类错误的测试数据, 最终实现系统对某个功能的测试。测试用例设计过程约占整个测试过程的60%。故测试用例设计人员必须用最少量的测试用例, 来发现最大量的可能性错误, 所以其测试用例的优劣将直接影响测试的质量和效果。因时间和费用的问题不可能进行穷举测试。提高测试效率、降低测试成本, 是测试用例的设计者的目标或努力方向[1]。
1 软件测试的相关概念
1.1 软件测试的测试过程
软件测试是发现并指出软件 (包含软件经过建模、需求、设计等阶段所产生的大量输出工作及程序代码) 中存在的缺陷的过程, 该过程指明和标注问题存在的正确位置, 详细记录导致问题出现的操作步骤, 即存储当时的错误状态以便测试后问题能够准确再现, 并跟踪软件开发人员对软件缺陷修复的进展情况[2]图1给出了软件测试的四个步骤, 即单元测试、集成测试、确认测试和系统测试[3]。
1.2 软件和软件测试复用的概念
软件复用是指“为了复用目的而设计的软件”的过程[4]。软件复用强调复用的目的, 它是一种系统化的方法, 为了复用而进行设计, 为了复用而开发, 并且要高效地组织和管理这些复用的软件产品, 方便人们检索和使用。
软件测试复用指在两次或多次不同的软件测试过程中反复使用相同或相似的测试思想来组织和跟踪测试的过程。它的宗旨是保证对测试对象的测试不再采用一切“从原点开始”的模式, 而是在已有的测试工作的基础上, 充分利用过去软件测试过程中积累的测试策略、测试思想和测试经验等, 最终实现对软件测试过程中可复用成分最大程度的复用。
软件测试的复用主要包括测试策略、测试工具、测试流程、测试数据、测试结果和测试用例等复用。其中, 测试用例作为软件测试的核心内容, 它的复用也就成为整个软件测试复用工作的关键环节。表1列出了软件复用可能的资源并作简要说明, 其中所列出的可复用项目不是完整的, 需要一定的补充[5]。
2 软件测试用例的复用
2.1 测试用例复用的概念
测试用例的复用就是指测试工程师在执行一项新的测试工作时, 通过直接调用或修改现有的、适合此项测试的测试用例, 并将它们运用其中的过程。即测试用例要实现复用必须具备三个条件, (1) 必须存在可复用的测试用例; (2) 所复用的用例必须有用; (3) 测试工程师必须知道如何去复用测试用例。测试用例是测试工作的指导, 是软件测试必须遵守的准则, 更是软件测试质量稳定的根本保障。
2.2 提高测试用例复用的途径
2.2.1 组织和编写具有很强可复用性的测试用例
在软件测试中用到的任何一个测试用例, 只要它的开发不涉及已有的用例, 就将它作为一个新的基类似的测试用例。在上述情况下, 我们可以建立两种用例类:一种是基于基类的抽象型用例类, 它提炼了将要表达的概念;另一种是抽象型类的派生类即具体型用例类, 它具体去实现基类的思想。在不同的软件应用系统的开发过程中, 根据不同的场景去应用抽象型用例类, 从而提高了测试用例的复用度。
2.2.2 可适应性测试用例
开发一个软件产品, 一般会发布多个版本, 伴随着测试用例的不断维护, 测试用例也需要不断完善并与产品功能、特性的变化保持一致, 最终使测试用例和产品版本相关联, 这时需要对以前的测试用例做适应性修改。具体的操作如下:测试人员可以在已有的复用测试用例库中寻找具有类似功能的用例, 通过对其进行继承和修改, 渐进式地设计出新的测试用例。如果新用例将要成为已有用例的子用例, 那么它应当继承了这个已有用例的所有属性和方法。同时, 新的用例还可以对需要追加的属性以及必需的方法作局部的定义或者将几个现存用例的特性组合起来开发出另一个新用例。
2.2.3 复制式的引用测试用例
在以往的软件开发中, 已经将大量的测试用例收集到测试用例库中, 并且根据测试用例的类类型进行了合理的分类, 这时测试工程师可以根据需要到测试用例共享库中进行检索。这种方法最快捷和高效。
2.3 测试用例的复用策略
为了实现测试用例的复用, 就必须对测试用例的设计进行统一的规范, 进行行之有效的用例创建管理。在用例的创建过程中, 测试经理对用例设计做出统一的建模组织, 使所有的测试用例具备统一的结构、统一的输入、输出接口, 这样即使以后软件运行环境发生变化, 对原有用例稍作修改就可以再次利用, 这些具有统一结构的用例就是可复用的测试用例。要实现用例的复用, 可采取以下策略:
首先, 基于复用的目的, 对所使用的测试用例进行统一的建模组织, 。有效地将测试用例收集到测试用例库中, 并按照用例各自的属性特点进行多级合理的分类、组织、存储。那些采用不同方式描述的测试用例, 将会各自实现不同程度的复用。
其次, 对共享测试用例库中的测试用例实行有效管理。通过提供有助于复用的多种查询方式, 确保测试用例的复用程度。对不同类别的测试用例进行复用频率统计, 为测试人员提供有效的复用信息, 在保证软件测试质量的前提下提高效率。
最后, 对共享测试用例库中的测试用例具体实现复用。通过检索出所需的测试用例, 得到测试用例的信息, 针对不同用途的测试用例采用不同的复用方式进行复用[6]。
3 测试用例的复用模型
从图2可以看出, 测试用例的复用有三条路径, 待测软件、已测软件和复用式测试软件, 恰恰对应了上文所讲的三种提高测试用例复用的途径。首先, 对待测软件进行分析, 接着开始用例的设计并注入测试复用的思路;其次产生相应的测试方法, 根据该测试方法进行软件测试, 生成测试结果。对一个软件的测试所产生的各种测试资源要作为可复用的素材, 必须进行对其提炼和抽象, 使其与被测项目的相关程度降到最低, 在待测软件路径上所生成的测试方法和测试结果数据要进行抽象, 产生可复用的测试用例要存入共享测试用例库中。其次, 对已测软件进行分析, 深度挖掘各种可能的复用机会并开始用例的提取;接着对测试用例进行可复用性的修改, 然后交由测试组长进行审核验证并进行类型划分, 最终添加至共享测试用例库中。最后, 复用式测试软件指当测试工程师进行软件测试时, 到测试用例共享库中查找具有类似功能的测试用例的过程;当我们找到功能类似的测试用例时, 结合目前的测试项目对测试用例进行剖析, 如果完全能胜任目前的测试任务就直接用到测试中去, 否则进行相应的适应性修改, 直至满足要求并应用到测试中去, 最后对经过适应性修改的测试用例进行入库。
4 测试用例复用的优点和难点
通过大量的工程实践, 不难发现测试用例的复用具有以下优点和难点。其优点如下: (1) 提高软件测试的效率; (2) 缩短软件测试的周期; (3) 提高软件测试的可靠性; (4) 降低软件测试的费用; (5) 部分解决测试人员的经验欠缺。但是要真正实现测试用例复用的困难也是不可忽视的, 若不能较好地解决以下问题, 必将使得软件测试工作事倍功半。其难点如下: (1) 测试用例数据库的维护问题; (2) 测试用例划分的标准; (3) 测试用例的版本管理问题; (4) 测试用例可复用度量问题; (5) 被测软件之间的差异; (6) 管理因素、法律因素、人的因素和教育因素等。
5 结论
本文介绍了涉及软件测试用例复用的相关概念并给出了软件测试用例的复用模型。首先, 描述了软件测试的相关基本概念, 主要有软件、软件测试复用、测试用例复用;其次, 说明了提高测试用例复用的途径、测试用例的复用策略和给出了测试用例的复用模型;最后, 根据工程实践总结了测试用例复用的优点和难点。
参考文献
[1]胡正芳.测试用例复用技术研究:[硕士学位论文].哈尔滨:哈尔滨工程大学, 2009.
[2]张大方, 李玮。软件测试技术与管理[M].长沙:湖南大学出版社, 2007.
[3]柳纯录, 黄子河。软件评测师教程.清华大学出版社。2005:1-221页.
[4]Will T.Confessions of a used program sales-maninstitutionalizing software reuse[M].New York:Addisonwesley Publishing Co., 1995.
[5]邵正隆, 白晓颖, 赵冲冲.面向复用的测试设计模型的研究与实现.小型微型计算机系统.2006, 27 (11) :2150:2155页
浅析软件复用技术的应用 第5篇
1 软件复用技术
软件复用 (SoftWare Reuse) 是将已有软件的各种有关知识用于建立新的软件, 以缩减软件开发和维护的花费。其应用包括需求复用, 架构设计复用、模块化设计复用、代码复用、项目组织结构的复用及面向对象系统分析阶段的复用等。而在面向对象方法的开发过程中, 系统分析和设计阶段是难点, 这个阶段涉及到业务逻辑方面的要求很少, 主要从对象、模型、关系等方面考虑, 因此, 把软件复用技术应用于这个阶段效果将会非常不错。
2 软件复用模型在面向对象系统分析 (OOA) 阶段的应用
2.1 OOA阶段的软件复用及复用模型
OOA阶段的软件复用具有通用性和重用性, 构造这个阶段的软件复用模型, 可以使复用达到更好的效果。OOA阶段的软件复用模型及其主要的工作流程为:首先, 在OOA阶段, 构造出抽象的方法、对象、关系等模型。其次, 对分析出的方法、对象、关系等模型进行进一步的抽象, 构造出高度重用的、独立的范式, 它们将成为OOA阶段软件复用的主要研究对象。再次, 在范式库中引入智能学习系统, 以及如何对范式库进行检索, 也是OOA阶段软件复用的一方面。
2.2 范式抽象
范式是存在于某一科学论域内关于研究对象的基本意向。它可以用来界定什么应该被研究、什么问题应该被提出、如何对问题进行质疑以及在解释我们获得的答案时该遵循什么样的规则。因此可以说它就是抽象的解决方案模板, 可应用于不同的项目中。范式抽象就是在上述基础上所提出的对范式的一种设计方法。对于不同的问题域, 就应该有与之相对应的设计方法, 这样才可以使范式的设计达到高度重用。OOA阶段有三种范式抽象方法, 其应用主要有以下几个方面:
2.2.1 领域范式抽象及其应用
领域抽象是用于某一领域的抽象问题的解决方案。在同一个领域的项目开发过程中, 一般能够总结出更多的相似性, 包括关系相似性和表面相似性, 将二者相结合, 可构建出与行业有关的构件。这种构件是建立在具体领域上的一种抽象, 称为领域抽象, 所构建出来的范式称为领域范式。因为这些范式有特定领域的标识, 在同一领域的开发中将达到高度的重用性。比如在面向零售行业的POS系统的设计开发中, 根据零售行业的国家标准, 抽象出了在这个领域的一些范式, 从而在为不同规模的零售行业开发相同项目的过程达到了很好的规范性和可扩展性。像对于不同规模的零售行业, 销售及其金额的结算处理过程都是一样的, 因此我们就抽象出销售及其金额的结算的处理过程。
2.2.2 关系范式抽象及其应用
现实世界的实体以及实体间的各种联系均可用关系来表示。常用的关系操作包括查询操作和插入、删除、修改操作两大部分。其中查询操作的表达能力最重要, 包括:选择、投影、连接、除、并、交、差等。而在OOA阶段, 对某一具体的项目抽象出许多关系范式, 它们不依赖于具体的项目和业务, 都是可以重用的;而在针对具体的业务时, 使用者只需稍微修改一下相关属性和方法上就可以了。按照上述思想抽象出来的范式就是关系抽象, 而分析阶段的关系模型就是这种抽象的依据, 利用这种方法抽象出的范式可称为关系范式。以下就是关系抽象的在学校和网络两方面的简单应用:1) 在学校的学生选课系统中, 要定义一个学生类, 这个类包括学生的姓名、学号、所在班级等有关学生的基本信息。同时, 为了使学生能很快查出课表, 还要定义一个与学生对应的学生课表类, 该类显示学生的排课情况;2) 在网上书店系统中, 要定义一个买书者类, 该类包括买书者的相关信息。同时为了使买书者能够快速查询到自己所买的书本, 还需定义一个够书卡类, 该类描述了买书者与所买的书本的对应关系。在上述两个系统中, 它们的具体业务虽然不同, 但它们之间的关系却是基本相同的, 都是前一个实体对后面那个实体的拥有关系, 而且他们所进行的具体操作也基本相同, 都涉及到对所拥有实体的查询操作, 在实际应用中还有插入、修改、删除等操作也基本相同。因此可将这种关系抽象出来, 定义为拥有关系, 然后再定义与之对应的操作。最后把这种关系就可以以范式的形式保存起来, 在不同的项目中就可以重复使用, 以提高项目的开发速度。
2.2.3 相似对象范式抽象及其应用
前面分析的是同一项目所抽象出来的范式, 而在不同项目中, OOA阶段, 对于那些相似程度非常大的对象来说, 由于它们在项目开发过程中的相对独立性, 我们还会分析出大量的相似对象或者是类, 并且把这些对象模型以范式的形式保存起来, 分析的结果在其它相关项目中可以重复使用。按照上述思想进行的范式抽象称为相似对象抽象。例如在所有有关权限管理的系统中, 一般都会出现像用户组、管理员、普通用户、角色、用户权限等这类对象;又如在一些相同领域的具体项目中, 由于涉及到领域的标准化, 有些对象的相似性或者说相同性的机率会将会更大。对于这些对象模型, 我们就可以以范式的形式进行保存, 以后可重复使用。
以上通过对领域范式抽象、关系范式抽象、相似对象范式抽象几种范式抽象方式的探讨, 我们不难发现, OOA阶段的软件复用主要体现在对模型和思想上的复用, 是一种底层的复用, 这种复用技术不但可以提高软件的开发速度, 对于软件的规范化和标准化、行业的标准化也有着非常重要的意义。
2.3 智能学习的范式库系统及其应用
范式库可以说是所有计算机研究应用人员及相关人士实践和经验的总结, 是他们思想和智慧的结晶。范式库的构件就是我们主要的研究对象。如何保存这些范式以及构件, 将是一项非常重要的工作。因此, 本文用到了智能学习的范式库系统的概念。所谓智能学习的范式库系统, 就是针对处于OOA阶段的每一个项目, 直接对范式库进行查找, 可以获取通过范式抽象的范式, 如果在范式库中找到可以直接利用的有关此范式的所有信息, 就直接利用这些范式进行下一步的分析和设计;如果找不到, 系统分析人员就需要重新进行设计和规范, 同时利用智能学习系统把这些设计出的成果保存在范式库中, 以便以后使用。这个模型在通过多个项目的分析后, 可重用性将会大大提高, 从而达到提高设计效率的目的。
3 总结
文章通过探讨当今的软件复用技术, 并对其应用进行了简单分析;在此基础上又提出了面向对象系统分析阶段的软件复用模型, 对其所涉及到的范式抽象做了一些探讨, 并把它们应用到各种实际项目中去, 来提高项目的完成速度。另外, 对于范式库的深入研究, 将成为下一步的研究课题。
摘要:软件复用是将已有的软件及其有效成分用于构造新的软件或系统软件, 如何较好的应用软件复用技术, 成为软件工程研究中的一项重要课题。文章通过分析当今的软件复用技术, 并对其应用, 尤其是在面向对象系统分析阶段的应用进行了较详细的探讨。
关键词:软件复用,面向对象,构件技术,范式抽象
参考文献
[1]王丽娟.软件复用技术及其在软件开发中的应用[J].中山大学学报论坛, 2004, 24 (1) .
[2]王亚明, 郭峰, 向阳霞.软件复用模型[J].北京广播电视大学学报, 2007 (2) .
[3]刘春娟.浅析面向对象系统分析阶段软件复用模型[J].考试周刊, 2008 (24) .
软件测试复用 第6篇
在传统的基于组件开发的软件开发工作中,组件开发者只专注于生产和发布组件供使用者复用,而组件的复用者则集中精力去寻找能够复用的组件去开发自己的应用软件。在此过程中,组件的使用者对组件的可信赖上,组件的质量扮演着非常关键的角色。而保证组件质量的一个关键性因素与组件的测试有着密切的关系。"软件组件的测试(及基于组件的软件系统的测试)可能是对组件方面技术要求最高的。[1]"但测试组件并不是简单的执行测试然后改正错误,组件还应该能满足不同的环境。
本文提出了一个组件测试方法,该方法由组件开发者和组件复用者指导方针组成。组件开发者指导方针帮助开发者向组件第三方测试者提供测试信息;在组件复用者指导方针中,该方法协助组件复用者在使用组件之前对所选组件进行测试,以便理解该组件,使所选组件能够更好地集成到自己的应用程序中。另外,本文提出的组件测试方法通过一个集成到组件开发者和组件使用者双方的开发环境中的实例工具所支撑。
本文组织如下:第一部分介绍本文提出的指导组件开发者和组件复用者提高组件复用效率的组件测试方法;第二部分简介支持该测试方法的指导工具;第三部分说明相关的工作;第四部分对本文进行总结及对未来工作的定向。
1. 软件组件测试方法
这个测试方法试图解决软件组件开发者和组件复用者之间因为缺乏对组件的相关的信息传递而导致的组件使用效率降低的问题。组件开发者和组件复用者之间信息传递的缺乏是组件测试的一个主要障碍,因为组件复用者在使用某个组件之前对组件的测试与组件开发者对该组件的认识不在同一个层面上。因此,这里提出的测试方法的指导方针就包含了组件开发与组件使用者双方的测试。
1.1 组件开发者工作流
图1所示为组件开发者活动工作流。下面是每个活动的具体介绍:
收集信息活动本工作流的第一个活动是收集信息活动,相当于信息收集的阶段。这个活动的主要目标是指导组件开发者收集所有能够促进理解所开发组件的有效文档信息。当然这些信息提供的是理解组件功能、输入参数、输出数据类型等有效的信息,而不是包括组件开发的具体信息。来自不同开发阶段的文档放入文档库便于参与该项目的每一个人查阅。
显而易见的是这类文档非常依赖于组件开发所采用的开发过程。例如,那些更接近于敏捷方法的过程,如极限编程这类的开发过程就很难收集更多的有效的能促进对组件理解的信息,因为这类过程生成很少的描述性文档,在这类过程中主要的输出是代码。而像采用UML组件开发过程就会提供很多有效的细节描述,包括类图、接口规范等。
信息约束活动对于开放源码的组件来说,如果此中没有需要保密的信息的话,这个活动是可以跳过的。但是对于组件交易的商业性质来说,信息约束是很必要的。
通常情况下,组件生产商仅限于提供各种组件的升级版本、售后服务、用户手册和用户支持。鉴于此,这个活动指导组件开发者在开发过程的早期去收集各种版权和知识产权所规定的权责信息,从而指导开发者标识那些不能向组件使用者公开的信息----这是出于法律保护意识或经营策略的原因的一个活动。
虽然出于商业规则、算法知识产权的保护等原因对一些信息进行了分类和标记,从而限制组件用户对这些标记的信息内容细节的了解,但是这并不意味着这些相关的信息可以在后续的活动中被忽略或是屏蔽,相反,诸如源代码或是用例等可以被开发商用来构建支持组件使用者测试组件基础设施时使用的指导文档。
信息分析活动第三个活动是信息分析活动,这个活动对开发者来说需要花费最多的精力。在这个活动中,组件开发者利用前面活动中获得的信息产生可以指导组件使用者进行测试的相关信息。
有很多技术可以使用在这个活动中,我们可以考虑使用自动的手段去挖掘相关信息(如从源代码中),还可以使用一些工具帮助组件开发者生产测试相关的文档,如文献[2]中提到的Component Retrospectors方法就是一个从源代码片段中获取有用信息的一个方法。使用工具的一个好处是使组件开发人员在生产这些信息的过程中减少人力和时间的投入,另一个好处是,这些工具在特定的信息获取上有着各自的优势,能使开发者获得更全面的信息。组件开发者可以将所有有效的信息做成文本文档提供给组件使用者以支持他们的测试活动。在此,有一个需要重点考虑的问题是,开发者应该提供哪种类型的信息给组件用户。而且,根据分析国际标准ISO/IEC12119,及后来更新的标准ISO/IEC25051(它们都是关于商业软件产品质量的测试需求),同时根据IEEE Standard 829中关于软件测试文档的规定,我们建议一个提供给第三方测试用的软件测试文档至少应该包含以下几部分:
功能描述根据软件质量需求的国际标准,对组件的每个功能需要提供一个全面的描述。这个描述应该是用自然语言提供的准确的没有歧义的。
用法描述用法描述应该提供用户正确执行给定功能的描述,即怎样调用、使用条件、约束条件等。
数据描述数据描述与功能描述是相关的,它提供能够修改给定功能状态的输入值的描述,可能的输出结果、边界值、错误的输入等的描述。
虽然ISO12119提倡由开发者为使用者提供测试实例,但我们的方法却并不支持这么做。因为国际标准只是关注于组件本身的测试,而组件的使用者不仅关心组件本身还要考虑到组件在他们应用软件中的集成问题。因此,根据开发者的环境提供一些静态的测试实例还不如给使用者提供一些关于接口、方法调用、和用法的信息更有效。当然尽管不是细致到测试实例的层面上,但给用户的信息不能太抽象,至少应该描述到功能层面。
发布信息也就是将整理出来的信息附到组件上,或者将信息发布到第三方测试人员能够便利地找到这些信息的地方。
1.2 组件用户工作流
图2显示了组件用户工作流的各项活动。有些活动是可同时进行的(而不是只由测试者做的),有些活动可以完全由工具自动地或是有工具支持来完成的。这样可以减少用户测试的投入。下面是每个活动的具体描述:
标记复用点在这个阶段,组件测试者要标记被开发的系统在何处插入组件。例如,一个在线系统,在用户完成注册后,需要给用户发送一封电子邮件以确认他们注册的相关信息。这里就应该有一个标记的复用点,即在用户注册完成后,激活一个电子邮件发送组件给用户发送一封信息确认信。
将复用点映射到组件功能这个活动可以被认为是为策划组件测试实例而进行的准备。在系统标识了哪儿可以插入外来的组件后, 就需要导出所选组件功能的一个关联及复用点可能的位置。
这个活动是很重要的,因为通常并不是组件生产商提供的组件中的所有功能都是适用的,而仅是其中的某个子集对用户来说是有用的。映射的执行可以通过下面三条信息来指导:
·需要测试的是什么?
·不需要测试的是什么?
·交互在哪里发生?
理解组件并策划测试实例此活动是利用组件生产商提供的所有相关信息理解组件并且精心组织自己的测试实例。
为了有效的组织自己的测试实例,组件使用方应该理解所选的组件的是怎么工作的。使用者要注意所选组件的用法、正确的输入及方法调用,不能违背提供方提供的接口规范来操作。组件的使用者弃用某个组件的一个普遍的原因是对组件的误解。发生这种情况的原因是组件使用方没有按照组件提供方的要求来使用组件造成的。例如,有个组件C,在其main接口处包含两个方法a () 和b () ,在调用方法b () 时所读入的变量需要有方法a () 事先进行处理。这样方法a () 和b () 之间就存在这一种依赖关系。如果组件使用者没有注意这个依赖关系,会导致组件的使用错误。最后,组件使用者就可能弃用这个组件C。所以组件的提供方在提供给用户的信息中要尽量避免这种组件误用以及双方之间的这种信息缺乏。
执行和评估测试实例执行创建的测试实例,并对起产生的结果进行评估。
2. 工具介绍
此工具由由个模块组成,以Eclipse插件的方式执行。一个模块称为CPT (Component Producer Tool),此模块帮助组件开发者收集数据,分析信息,并将信息打包用来支持组件使用者测试组件。另外一个模块成为CCT (Component Consumer Tool),用来帮助组件使用者理解所选组件,构件测试实例并标识用户系统和组件之间的交互,以此来验证组件是否完全符合需要。
CPT以程序源码段作为输入,捕获组件的功能信息。CPT的策略是尽可能的捕获信息,让开发者能提供给使用者,并结合一个有开发者提供的算法分别捕获用法信息和功能描述。收集的信息建成一个标准XML格式的文件,该文件名称为COM-PUSAGE.xml, 在发布该组件之前,这个文件可以附着在组件上。
CCT在组件用户方的几个活动中使用。CCT可以记录复用点,检查一个正在构建中的测试实例是否包含了完成测试功能的命令,一个对用法文档中提供的功能的可视化描述等。具有能够提高组件测试者理解组件,还具有编码辅助支持功能。这些功能可以帮助组件使用者在测试和集成所选组件时对组件进行确认。例如,编码辅助支持功能在许多开发环境中都已采用。它通过显示下一步可能的要输入的命令减少程序员的击键等的劳动。
3. 相关工作
现有的很多方法都是考虑信息缺乏的原因,从而致力于让组件使用者在测试组件时降低对来自组件提供者信息的依赖。Harold等[3]提出利用工具在程序中获取程序的依赖信息,有些信息,比如程序的异常处理等,对组件使用者构建组件测试实例很有用,数据流信息可以度量测试套件测试的覆盖范围等。
也有些方法通过在构建组件时增加可测试实例的方式增加组件的可测试性,从而解决组件使用者信息缺乏的问题。或者是通过给组件设计一个具体的可测试构架让组件使用者能轻易地进行组件测试。潘丽丽等[4]提出了一个可复用组件的测试用例生产方法,该方法从需求规范中提取基于操作流程的功能组件,通过映射、重组测试脚本,导入测试数据,并自动生成测试用例。
分析现有的方法,我们可以注意到这些方法都只能解决诸如信息收集,测试实例的执行等具体活动,不是从组件开发者开始到组件测试者工作流结束时结束的一个完整过程。本文提出的方法在现有方法的基础上进一步发展了这些方法,将单个的解决办法集成到组件开发者和组件使用者双方的过程中来共同支持组件的测试。
4. 结语及工作展望
本文提出了一个高效测试复用组件的方法用来引导组件开发者和组件复用者测试组件,以此提高组件复用者对组件的理解和测试。该方法由两个工作流组成,一个工作流用来引导组件开发方收集组件测试信息,根据组件的知识产权及商业策略尽量在理解层面上给组件用户提供有效的测试信息,并制作规范的测试信息文档以引导使用者更好的测试组件。未来的工作中我们将会通过实验性研究进一步改善本方法以及其支持工具。交互度量及需求可跟踪性度量对于准确地获取待选组件与系统之间的交互信息有着很好的指导,这也是我们未来工作的一个方向。
参考文献
[1]Clemens Szyperski.Component Software:Beyond Object-OrientedProgramming[M].Addison-Wesley Professional, 2007.
[2]Liu, C., Richardson, D.Towards Discovery, Specification, and Verifi-cation of Component Usage[C].14th IEEE International Conference onAutomated Software Engineering.Florida, USA:1999, 331-334.
[3]Harrold, M.J., Liang, D., Sinha, S.An Approach to Analyzing andTesting Component-Based Systems[C].21st International Conference onSoftware Engineering.Los Angeles, USA:1999, 134-140.
基于功能构件的软件复用方法 第7篇
软件复用一直被视为改善软件工程的重要手段,人们期望通过复用以前的代码或组件,来提高生产率,改善产品的质量。近十几年来,软件复用研究重新成为热点,被视为解决软件危机,提高软件生产效率和质量的现实可行的途径[1]。
软件复用是指重复使用“为了复用目的而设计的软件”的过程。它不仅是对软件程序的复用,还包括对软件生产过程中其它劳动成果的复用,如项目计划书、可行性报告、需求分析、概要设计、详细设计、编码(源程序)、测试用例、文档与使用手册等等。软件复用分为产品复用和过程复用。
软件复用有三个基本问题,一是必须有可以复用的对象,二是所复用的对象必须是有用的,三是复用者需要知道如何去使用被复用的对象。软件复用包括两个相关的过程:可复用软件(构件)的开发和基于可复用软件(构件)的应用系统构造(集成和组装)。这是成功实现软件复用的关键。实现软件复用的关键因素(技术和非技术因素)主要包括:软件构件技术、领域工程、软件构架、软件再工程、开放系统、软件过程、CASE技术等以及各种非技术因素。
构件是指应用系统中可以明确辨识的构成成份,而可复用构件是指具有相对独立的功能和可复用价值的构件[2]。软件构件技术是支持软件复用的核心技术,基于构件的软件开发CBSD(Component Based Software Development)是指利用已完成的构件按应用需求组装成软件应用系统的软件开发方法[1,3],它包括构件的获取、构件模型、构件描述语言、构件的分类检索、构件的组装和标准化等内容[4]。
2 基于功能构件的软件开发方法
2.1 功能构件的提出
在许多系统的设计中,为了提高软件开发的效率和质量,采用COM/DCOM、程序设计语言的类库、OCX、ActiveX、用户界面构件等复用构件,但是对于不同的应用软件,利用这些构件,效率的提高是有限的。实际上,大量的同类应用系统的软件的差异主要体现在业务逻辑上,而其余部分的功能是相似的,只是存在软件规模、性能等方面的差异。因此可以对应用系统的共有功能需求进行抽象,在更高层次、更大范围实现软件复用。就数据库应用系统而言,不同的数据库应用系统的业务部分不可能实现复用,但是诸如用户管理、用户操作稽核、权限管理、数据录入、电子数据导入、数据库管理维护和监控、界面风格控制、静态参数维护、数据查询、数据统计、工作流管理等功能,在不同的系统中尽管操作的对象不同,但其功能需求却是一致的。如果将这些功能需求与具体系统、具体业务剥离,形成一个个与具体应用无关的功能构件,则它们可以作为一个通用业务架构平台,承担公共需求的功能,这将极大地提高系统的复用性。
2.2 功能构件的定义
所谓功能构件FC,是指在功能层次上实现的软件复用构件。以复用为宗旨的功能构件,是组建任何新的应用系统的基础平台。
2.3 功能构件的设计原则
具有良好复用性的功能构件,在设计时必须遵循以下设计原则:
1) 能够独立承担系统的某一主要功能,这是功能构件的主要特征之一。
2) 具有具体应用无关性,即在功能构件中不涉及具体的业务,而仅仅完成功能需求。
3) 功能构件必须具有良好的柔性和可扩充性,以适应不同规模的系统的需要。
4) 尽可能使用标准接口,以便于应用系统的集成和组装。
5) 各功能构件必须具有内部高聚合性,外部低耦合性,功能构件之间、功能构件与其它系统之间以统一的接口实现数据交换。这也是能进行工作流控制的前提。
6) 功能构件之间应该是平行的,不存在包含关系,不存在依赖关系。
2.4 软件构架的建立
软件构架SA是对系统整体结构设计的刻划,因此应该具有良好的稳定性、应用无关性。软件构架可以按照应用框架元模型来建立,如图1所示,是由若干个功能构件为支撑,每一个功能构件由构件、设计模式、约束、扩展点、业务过程模型五部分组成[4,5]。
2.5 功能构件的建立
2.5.1 功能构件的划分
从数据库应用系统的需求出发,通过分析进行共性需求识别、对象抽象和知识获取,建立概念级的构件模型,作为功能构件的功能定义、边界划分、构件之间的接口方式等的依据。在数据库应用系统中,需要建立的功能构件包括用户管理、用户操作稽核、权限管理、数据录入、电子数据导入、数据库管理维护和监控、界面风格控制、静态参数维护、数据查询、数据统计、工作流管理等。
2.5.2 构件的设计和实现
通过构件模型和代码级的构件两个阶段实现在功能构件划分中提出的功能构件。
用户管理主要是对用户的基本属性进行管理。用户操作稽核主要是对用户的登录、操作进行管理和后台稽核。权限管理主要是进行用户权限的分配、收回、检查管理。数据录入、电子数据导入主要是完成系统中所有需要手工录入或电子数据导入的数据输入输出、库存的数据维护工作。数据库管理维护和监控主要是进行数据库端的存储过程、触发器等维护和监控工作。界面风格控制主要是根据不同的应用系统的运行环境和界面风格的需要,完成界面风格的控制。静态参数维护主要是进行静态参数的类型、个数的控制和各类参数的维护工作。数据查询主要是完成各类数据的查询(包括对录入数据、参数、统计数据、中间数据的查询)及查询结果的输出和保存[6]。数据统计主要完成系统所需要的各种统计数据的汇总统计工作。统计报表分定制和用户自定义报表两种,可以满足用户当前和未来的数据统计需要。
2.5.3 功能构件的功能扩展
功能构件是面向所有应用的通用构件,不可能满足不同系统的特殊业务需求。为了支持领域内不同的应用变化,可以利用扩展点机制实现具体应用系统的不同特性。扩展点作为一类扩展机制,是应用框架能否支持大粒度复用和为用户提供足够灵活性的关键之处。如果某些系统必须要某一特殊功能,必须保证功能构件的完整性和稳定性,所需业务处理可通过继承、重载等方式在子孙类中解决。比如报表功能构件能够满足用户定制和自定义的报表需要,但其中并不包含报表的嵌套,实际上有些用户仍然需要嵌套的报表,这就需要通过构件的功能扩展来解决。如图2所示。
2.6 基于可复用功能构件的应用系统构造
由于所有功能构件都能够独立承担系统的某一主要功能,与具体应用无关,具有良好的伸缩性,可以适应不同系统的规模需要,使用标准接口,所以应用系统的集成和组装非常方便。比如,在一个新的应用系统,当数据库发生变化时,查询功能构件只需在组装时修改open()事件中所接受的参数,毋需再进行其他修改,即可作为新的应用系统的查询模块,从而实现代码的重复使用。用户管理功能构件只需在应用程序的open事件中用open函数打开登录窗口即可。登录工作完成后登录功能构件就会把对程序的控制交给系统架构。其他的功能构件只是以子菜单的方式挂接到系统架构的[系统]主菜单中,通过菜单启动,当调用结束后,返回时同样会把对程序的控制交给系统架构。程序如下:
启动:open(w_query) //调用某一功能构件
hide(w_main) //隐藏系统架构
返回:show(w_main) //显示系统架构
close(w_query) //关闭某一功能构件
3 基于可复用功能构件的应用系统开发实例
利用建立的通用业务架构平台,可以作为应用项目的开发平台。例如,某铁路局成本管理系统,包括权限管理、数据采集(计划数据、追加计划数据、大修预算审批数据、决算数据数据等)、字典维护、日志浏览、统计报表、数据备份、查询、成本核算(包括大修成本、直属单位成本、医药卫生成本、医疗器械成本、分局成本核算)等功能模块。在系统开发过程中,借助于通用业务架构平台,权限管理、数据采集、字典维护、统计报表、日志浏览、查询等功能模块分别复用功能构建库中的已有功能构件来承担,在该系统中,开发人员仅仅完成成本核算功能模块及其他业务模块的开发,系统模型如图3所示。
成本的核算和控制按照计划及追加计划数据采集、预算审批、招标、进度控制、年终决算、项目结束的成本核算、根据历史数据的计划调整等流程来实现,由工作流控制构件进行管理。由于需要在相关环节将数据提交主管领导审批,所以需要进行工作流管理构件的功能扩展,增加数据报批功能,该功能的扩展是在基本构件的子孙类中实现的。
4 结 论
本文提出了一种基于功能构件的软件设计方法,建立了搭建系统架构所需的各功能构件,解决了软件复用的三个基本问题,包括了软件复用的两个相关过程,具有良好的复用性。在许多新系统的组建过程中,利用该功能构件,其开发工作量大概能下降40%~60%(因新系统的复杂程度而异),明显具有缩短开发周期、降低开发强度的效果。
功能构件应该尽量避免对编程环境的依赖性,这需要在设计阶段充分考虑功能构件的标准化问题。例如,在早期利用powerbuilder建立的构件库中,查询构件的实现,主要是利用datawindow的功能,在保持查询框架不变的情况下,利用不同的查询入口参数(datawindow)来实现对不同数据源的查询。利用powerbuilder提供对 datawindow包括栏目、字段、记录的SQL语句等几乎所有属性的访问和修改功能,才可以根据不同的查询需要,实现对同一表中所有字段按各种子句进行查询[6]。离开datawindow这一powerbuilder特有的用户对象,就必须重新设计其实现方法。所以,在不同编程环境之间,需要保持构件良好的可移植性。
开发实践证明,采用功能构件的设计方法,是实现软件复用的一种非常有效的手段。
参考文献
[1]杨芙清,梅宏,李克勤.软件复用与软件构件技术[J].电子学报,1999,27(2):68 75.
[2]杨芙清,王千祥,梅宏.基于复用的软件生产技术[J].中国科学:E辑,2001,31(4):721 732.
[3]梅宏,陈锋,等.ABC:基于体系结构、面向构件的软件开发方法[J].软件学报,2003,14(4):1364 1367.
[4]Gancarski S,Naacke H,Pacitti E,et al.Parallel Processing with Auton-omous Databases in a Cluster System[C].Proc.of Int.Conf.on Coop-erative Information Systems,Los Angeles,California,2002.
[5]刘瑜,张世琨,等.基于构件的软件框架与角色扩展形态研究[J].软件学报,2003,14(8):1364 1367.
软件复用框架的单一对象模型设计 第8篇
关键词:单一对象模型,增删改模式,搜索翻页显示一体化模式
1 单一对象模型概况
在《软件复用框架的架构设计》一文中提到过基础类模型和特定类模型。其中基础类模型包括单一对象模型和关联对象模型。以学生选课信息系统为例, 基本功能为学生管理、课程管理、选课管理。其中, 学生管理、课程管理因为只和学生、课程相关, 所以属于单一对象模型。选课管理因为同时涉及学生和课程, 所以属于关联对象模型。从抽象层面可以认为, 单一对象模型强调业务的独立性, 关联对象模型强调业务之间的关联性。该例子非常具有普遍性, 现实世界的所有业务需求均能映射为计算机世界的这两种抽象模型。为充分体现软件复用框架的复用意义, 本文将特别对单一对象模型的界面设计、类设计、数据库设计等三方面进行分析, 将思路固化, 以便帮助开发人员理清思路, 提高开发速度, 降低逻辑错误。
2 单一对象模型定义
该模型强调业务至始至终只和一个对象的增加、修改、删除、搜索有关。其示例很多, 如学生管理模块允许增加特定学生信息、修改特定学生信息、删除特定学生信息以及根据相关条件搜索学生信息。
3 单一对象模型的界面通用性设计
就功能而言, 单一对象模型包括增删改查、搜索。为实现复用效果, 可将增删改归纳为对象的编辑模式, 用一个专门的编辑界面实现。将搜索归纳为对象的搜索模式, 用一个专门的搜素界面实现。其中, 一般搜索界面都允许用户先根据搜索条件进行搜索, 再将搜索结果显示出来。若搜索结果过多还支持翻页功能。所以, 此处又将搜索模式称为“搜索翻页显示一体化”模式。
3.1 增删改模式
对象的增删改等价于对象的编辑, 其界面设计归纳如图1所示。界面的前台由两部分组成。第一部分是具有各种编辑控件的表单, 用于输入对象的各项属性。第二部分是增删改三个按钮, 分别对应增删改三种模式。界面的后台按三个步骤呈现对象信息, 即首先从数据库中获取单一对象的信息并构造数据源, 然后将信息与界面前台的输入控件对应绑定, 最后将这些信息呈现在界面上。其中, 使用Session技术存储单个对象, 一方面是为了在Web开发中使用面向对象技术, 另一方面是发挥缓存的作用。
其中, 该界面具备四个特点。第一, 界面所有输入控件, 包括输入框、下拉框, 均为HTML控件。Html控件比Web控件性能高, 且易于美工自定义。第二, 使用XML和JavaScript技术实现下拉框绑定。一方面将下拉框的选项全部存储于XML文件中。这不但易于重用移植 (移植时只需拷贝XML文件即可) , 而且易于维护 (方便增加、修改、删除下拉框的选项, 当修改选项后, 所有用到该选项的下拉框全部生效, 亦可保持一致性) 。另一方面, 使用JavaScript技术从XML文件中加载下拉框选项, 这种纯粹的客户端技术性能非常高。第三, 使用JavaScript和CSS实现输入约束, 如输入身份证时只允许输入符合条件的身份证号。因为JavaScript和CSS都是纯粹的客户端技术, 所以性能非常高, 样式也非常丰富。第四, 在复用框架中开发专用的赋值组件ObjectHtmlDataBinder实现数据源自动绑定。这样, 开发人员只需手工指定, 不用逐一赋值, 从而加快开发速度。
3.2 搜索翻页显示一体化模式
对象的搜索界面设计归纳如图2所示。界面的前台由三部分组成。第一部分是具有各种筛选条件的搜索工具条, 用于输入各种搜索条件。第二部分是用于显示搜索结果的表格。第三部分是用于实现翻页效果的翻页工具条。界面的后台按三个步骤呈现对象信息, 即首先从数据库中获取多个单一对象的信息并构造数据源, 然后将信息与界面前台的表格绑定, 最后将这些信息呈现在界面上。不同的是, 这里的Session不是存储单个对象, 而是存储单个对象的集合, 因为搜索结果绝对不止一个。
其中, 该界面的搜索支持根据业务的各项指标进行组合式搜索。有三种输入搜索条件的方式, 分别是文本框、下拉框、时间框。有两种组合搜索条件的方式, 分别是并且、或者。有两种搜索方式, 分别是精确、模糊。就技术而言, 亦具备三个特点。第一, 使用XML和JavaScript技术实现下拉框绑定。一方面将下拉框的选项全部存储于XML文件中。这不但易于重用移植 (移植时只需拷贝XML文件即可) , 而且易于维护 (方便增加、修改、删除下拉框的选项, 当修改选项后, 所有用到该选项的下拉框全部生效, 亦可保持一致性) 。另一方面, 使用JavaScript技术从XML文件中加载下拉框选项, 这种纯粹的客户端技术性能非常高。第二, 输入搜索条件的文本框、下拉框、时间框均采用Web控件技术封装。开发人员通过拖拽即可实现, 加快了开发速度。第三, 在复用框架中开发专用的搜索条件生成器SearchCondition生成复杂的搜索语句, 提高了准确性, 避免逻辑错误。
该界面的翻页亦有两个特点。第一, 采用数据库翻页技术, 支持千万级数据, 性能高 (吞吐量高、可伸缩性) 。第二, 允许配置每页显示数目, 使其具备可配置性。
此外, 该界面的显示亦具备四个特点。第一, 界面采用HTML表格, 这比Web表格性能高, 且易于美工自定义, 甚至不用熟悉复杂的GridView、GridList、Repeater控件。第二, 使用Ajax技术实现无刷新数据显示, 增强用户体验, 避免浏览器假死。第三, 在复用框架中开发专用的表格按钮组件TableBtn, 允许定义行操作按钮的图标、文字、执行方式。第四, 在复用框架中开发专用的赋值组件ObjectsHtmlDataBinder实现数据源自动绑定。这样, 开发人员只需手工指定, 不用逐一赋值, 加快了开发速度。
4 结语
单一对象模型作为复用框架中极其重要的基础模型, 被完全统一规划成增删改、搜索翻页显示一体化等三种模式。这种模式化思想提高了开发速度, 降低了开发难度, 使开发人员不必了解单一对象模式复杂原理的情形下亦可按照客户需求完成业务开发。
参考文献
[1]温昱.软件架构设计[M], 北京:电子工业出版社, 2007.
基于Java的软件复用技术研究 第9篇
随着计算机软件技术的发展,软件开发和应用已逐渐实现工业化发展,为了提升软件开发的速度和质量,传统开发模式已经被打破,软件复用技术就是在软件开发技术不断发展中为了避免重复劳动而设计出来的。通过软件复用技术,软件开发人员可以通过对一些质量比较可靠的已开发软件的复用,避免重新设计和研发,一方面减少了重复劳动的时间,另一方面也减少了重新设计和研发的失误或者误差,极大地提升了计算机软件开发的速度和效率。下面主要介绍Java平台下的软件复用技术及其应用。
2. Java概述
Java主要是Sun Microsystems公司在一九九五年推出的一种程序设计语言及其平台,即Java ME、Java EE、Java SE三者的统称,通过它,可以撰写不同平台的应用软件的程序设计语言。Java平台主要是由Java API(应用程序接口)、虚拟机、文件格式、和JVM(编程语言)所构成。Java平台技术有着较强的平台移植性、高效和安全性、安全性等优点,能在互联网、移动电话、超级计算机、游戏控制台、数据中心和个人PC中得以广泛应用,拥有者世界上最大的软件开发社群。在Java平台技术下,软件复用技术也得到了一定的发展,此平台中的可复用软件的开发及应用系统都是基于JAVABEANS构件模型。目前对于JAVABEANS构件模型的应用已经进入到商业模式。随着JAVA复用技术的不断发展,JAVA软件复用技术越来越能面对应用对象,应用性愈发广泛。
3. 软件复用技术及其级别
软件复用技术主要是指为了软件复用而预先设计好的一种软件系统,其原理就是避免重新对软件进行设计和开发,而是通过对已开发的软件进行利用,通过公共的软件复用技术或者构建对新的系统进行组装,这些构建或者系统主要包括软件体系、框架、对象类等等。根据其抽象程度的低与高,可以将软件复用技术分为以下级别:
3.1 代码的复用
代码的复用主要包括源代码和目标代码的复用,主要是依靠构件库来进行源程序复用,其所进行的目标代码复用,级别也非常低,历史也非常悠久。其中属目标代码复用级别为最低的。目前许多编程语言运行的支持系统都存在了绑定和连接等功能,对代码的复用都是通过直接绑定和连接进行应用。
3.2 设计的复用
设计复用相对于源程序复用,其级别更高,所以,设计复用所受现实条件的影响相对较小,以致可复用构建能被复用的机会更大,发生的错误或者修改则更少。此复用技术一般通过三种途径进行,首先是通过目前现有的系统设计成果复制一些设计构件,将这些可复用的构件应用到新的软件系统之中;其次,将目前现有的所有设计文档都应用到新的软件和硬件之中,使其重新实现其功能,即将一个设计在多个新软件中得以应用;最后,有计划有目的地开发出一些可以进行复用的设计构件,并且这种设计构件可以独立使用,跟其他任何软件都彼此独立。
3.3 分析复用
分析复用相比于设计复用又表现得更为高级,进行复用的分析构件主要是对于问题域中的某些问题或者事件进行抽象的更为具体的解析方法,所受到的技术条件影响相对较少,因此,可以进行复用的机会相对来说比较大。分析的复用也可以通过以下三个途径进行:第一,从现有软件分析结果中复制可复用的构建分析,使其在新软件系统中进行重复应用;第二,用一份完整的分析文档作输入产生针对不同软硬件平台和其它实现条件的多项设计;第三,独立于具体应用,专门开发一些可复用的分析构件。
3.4 信息测试复用
信息测试复用主要是指测试过程中信息的复用和测试用例中信息的复用。测试用例复用主要是将一个软件的测试用例在新的软件测试中使用或在软件修改后在新一轮测试中使用。测试过程信息的复用是在测试过程中通过软件工具自动地记录测试的过程信的息,包括测试的操作输入参数、测试用例及运行环境等一切信息。此种级别的复用从信息的形态看大体与处于与程序代码相当的级别。
4. Java环境下的软件复用技术
4.1 JSP技术
随着软件复用技术的发展,为了快速和高效地开发出新的web应用软件和Java软件,JSP技术在软件复用中就得到了广泛应用。其在软件复用技术的作用主要表现在:第一,JSP页面能够快速和简便地将HTML、服务端处理过程、业务逻辑进行有效结合,并在JSP页面中同时显示,从而使流程控制和业务逻辑快速地实现开发和应用。第二,JSP页面能有效构成多种Web应用软件,这些应用软件的形成基础就是JSP页面的构件性能。在JAVA环境下的软件复用技术,其第一个主要技术就是JSP技术,其开发模式如图1所示:
此技术流程比较简单,一般对于小规模项目或者软件的开发比较实用。其主要的特色是:JSP页面具有Controller和View两种功能,将表现逻辑和控制逻辑相结合,虽然一定程度上限制了代码的重用性,但还是能够促进系统软件的复用,只是难度稍微增加了点。
4.2 基于MVC架构的软件复用
基于MVC架构的软件复用模型如图2所示:其中作为前端控制器的Servlet,主要负责对客户端请求的接收工作,并且在Servlet中进行简单的控制逻辑和前端处理;同时,在其后端,通过Java Bean进行实际的逻辑处理,最后,将相应的请求转发到JSP页面进行逻辑显示并处理。
在这种模式下,其JSP并不承担着控制器的责任,仅仅是表现层的某一角色,只是将表现的结果展现给客户端,并且在JSP页面上的请求跟控制器彼此交互,其中Servlet将负责对Java Bean的通信。MVC复用技术主要是模型.视图.控制器设计模式。通过数据业务处理、表现和控制三种功能来展现其优越性。此模式的主要目的就是扩展代码、设计和分析的复用性,尽可能地将应用操作和数据描述的耦合度减少,提升代码、分析和设计的可读性,使软件保持在可扩展性、可维护性、可修复性的状态,使系统软件能创造出可复用的软件。
Java平台下软件复用技术主要表现为以下三个部分:视图、模型和控制器。视图在应用程序中主要处于表现层,表示的是用户交互的界面。每个应用程序都对应着一个或者多个视图,软件复用技术对于视图的操作主要在于其对视图数据的处理和采集,以对客户端请求的应对处理。模型主要处于应用程序中的业务处理层,其负责对所有业务的流程进行处理以及对业务规则进行制定。其将控制器所发来的视图请求进行处理并返回于视图。控制器主要起着一个分发器的作用,主要负责对请求数据的分发,将数据分发给何种组件。以上三个部分共同影响着Java复用技术的形成。
5. 结束语
综上所述,通过Java软件复用技术的应用,可发现其具有以下几点优点:首先,Java软件复用技术能有效促进程序或应用软件的维护以及功能的拓展。其次,Java软件复用技术将能促进软件开发的分工。在Java软件复用技术应用过程中,由于其应用程序分为三层,使得各层形式各层的事务,彼此都比较独立。其网页制作者将对视图层进行开发,业务工作者将负责业务层的开发,其他则负责控制层的开发。最后,能有效促进各个组件的重用。Java软件复用技术的分层应用和开发的模式,将有助于各组件的重复使用。比如:业务层、表现层、控制层都能形成一个独立的组件、界面、模块而存在,以供新开发软件的重复使用。因此,Java软件复用技术将要广泛推广和应用。
参考文献
[1]张秀爱.软件复用技术研究[J].电脑知识与技术.2011,3(6):1214.1215.