(计算机软件与理论专业论文)基于uml的组件软件集成测试的研究与应用.pdf_第1页
(计算机软件与理论专业论文)基于uml的组件软件集成测试的研究与应用.pdf_第2页
(计算机软件与理论专业论文)基于uml的组件软件集成测试的研究与应用.pdf_第3页
(计算机软件与理论专业论文)基于uml的组件软件集成测试的研究与应用.pdf_第4页
(计算机软件与理论专业论文)基于uml的组件软件集成测试的研究与应用.pdf_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

太原理工大学硕士研究生学位论文 基于u m l 的组件软件集成测试的研究与应用 摘要 基于组件的软件开发是近几年来软件工程中一种新兴的方法。软件 组件技术是解决软件复用、缩短软件编写时间、降低维护成本和实现程 序动态升级的最新和强有力的方案。对基于组件的软件进行集成测试是 一个新的研究方向。 本文首先对组件技术的产生、定义及特点进行深入讨论,接着分析 并比较了目前流行的三种主要组件模型,并对组件的各类形态进行比较。 u m l 是软件建模的一种工具,使用它的各种模型图可以实现对基于组件 的软件从不同角度进行描述。 软件测试是软件开发的重要环节,它是软件质量保证的重要因素。 对先后出现的三种软件开发方法与软件测试的关系论述后,定义了基于 u m l 测试充分性原则及标准。 本文对目前常用的两种基于组件的软件集成测试技术进行了研究, 这两种技术分别是: ( 1 )基于状态的测试技术。每个组件的状态用有限状态自动机表 示,采用合成全局状态机的方法以实现对组件间的接口进行测试,合成 过程利用j e a nh a r t m a n n 等人提出的决策表来消除产生的中间结果,用一 个实例说明这种方法并模拟出它的执行过程。 ( 2 )基于事件信息流的测试技术。该方法对协作图中参与协作的 太原理工大学硕士研究生学位论文 对象之间通过消息的交互进行处理以得到测试用例,并设计了根据协作 图中信息对相应生成的程序进行插装的算法。 通过分析这两种技术的利弊,在定义基于组件的软件测试模型的基 础上,提出一套从获取协作图消息信息到寻找测试路径的方案。首先用 建模工具做出系统的协作图,再从生成的相应文件中提取消息的相关信 息,按照组件间消息传递的依赖关系产成测试路径。测试者根据这些路 径进行相应的操作,从而测试该系统是否能对各种情况做出正确响应。 本文的主要工作是设计了从u m l 协作图中提取消息的过程及定义了组 件问传递的消息及其依赖关系的数据结构,并根据依赖关系设计遍历算 法,用j a 、,a 语言实现。 最后,用a t m 机中确认p i n 的实例执行该程序,执行结果与分析 出的应寻找到的路径一致,证明了该程序的可执行性与正确性。这项确 定测试用例的工作可从概要设计阶段开始,它对于软件测试方法的改进 以及软件测试自动化具有一定的理论和实践意义。 关键词:组件,基于组件的软件,集成测试,依赖关系,u m l 太原理工大学硕士研究生学位论文 t h er e s e a r c ha n da p p l i c a r i o no f u m l b a s e di n t e g r a t i o nt e s t e n gf o r c o m 【p o n e n t - b a s e ds o f r 後r e a b s t r a c t t h ec o m p o n e n t - b a s e ds o f t w a r ed e v e l o p m e n ti san e ww a yt od e v e l o p s o f t w a r ei nr e c e n ty e a r s t h ec o m p o n e n tt e c h n o l o g yi st h en e w e s ta n d s t r o n g e s tb l u ep r i n tt os o l v et h ep r o b l e m so fs o f t w a r er e u s e ,s h o r t e n i n gt h e t i m eo fp r o g r a m m i n g ,r e d u c i n gt h ec o s to fm a i n t e n a n c ea n dr e a l i z i n gt h e u p g r a d i n gd y n a m i c a l l y t h ei n t e g r a t i o nt e s t i n go fc o m p o n e n t - b a s e ds o f t w a r e i san e wr e s e a r c ha s p e c t t h i sp a p e rf i r s td i s c u s s e st h ea p p e a r a n c e ,d e f i n i t i o n ,a n dc h a r a c t e r so f c o m p o n e n tt e c h n o l o g y , t h e na n a l y s e s a n d c o m p a r e st h ep o p u l a r t h r e e c o m p o n e n tm o d e l s ,a n dt h e nc o m p a r e st h ed i f f e r e n tf o r m so fc o m p o n e n t u m li sam o d e l i n gt o o lo fc o n s t r u c t i n gs o f t w a r es y s t e m i tc a l ld e s c r i b et h e c o m p o n e n t - b a s e d s o f t w a r ef r o md i f f e r e n t a s p e c t su s i n g v a r i o u sm o d e l d i a g r a m s s o f t w a r et e s t i n gi sa l li m p o r t a n tl i n ko fs o f t w a r ed e v e l o p m e n t i ti st h e i m p o r t a n t f a c t o ro fs o f t w a r e q u a l i t y a s s u r a n c e a f t e r d i s c u s s i n g t h e r e l a t i o n s h i p so ft h r e ek i n d so fs o f t w a r ed e v e l o p m e n ta n dt e s t i n g ,w ed e f i n e t h et e s t i n gs u f f i c i e n tp r i n c i p l e sa n ds t a n d a r d t h i sp a p e rs t u d i e st h et w oc o m p o n e n t b a s e ds o f t w a r ei n t e g r a t i o nt e s t i n g t e c h n o l o g i e s ,t h et w oa r e : ( 1 ) s t a t e - b a s e dd i a g r a mt e s t i n gt e c h n o l o g y w eu s ef i n i t es t a t em a c h i n e t oe x p r e s s + t h es t a t eo fc o m p o n e n t ,a n dc o m p o s eag l o b a ls t a t em a c h i n ew i t h i 工i 太原理工大学硕士研究生学位论文 t w of i n i t es t a t em a c h i n et oc o n s t r u c tg l o b a lb e h a v i o r a lm o d e lt ot e s ti n t e r f a c e s , w ec a n u s et h ed e c i s i o nt a b l eo fj e a nh a r t m a n nt od i s p e lt h em i d d l er e s u l t , a n dd e s c r i b et h em e t h o dw i t ha ne x a m p l ea n ds t i m u l a t ei t s i m p l e m e n t i n g p r o c e s s ( 2 ) i n f o r m a t i o nf l o w b a s e dt e c h n o l o g y t h i sw a yc a nt e s tt h ec o o p e r a t i o n o fc o l l a b o r a t i o nd i a g r a mb ya l t e r n a t i o no fm e s s a g e s ,c o m p l e t et h ep r o c e s s f r o mb e g i nt oe n dt og e tt h et e s tc a s e s ,a n dd e s i g nt h ei n s t r u m e n t a t i o n a l g o r i t h m b a s e do nt h em e s s a g eo fc o o p e r a t i o nd i a g r a m b ya n a l y z i n gt h ea d v a n t a g ea n dd i s a d v a n t a g eo ft h et w ot e c h n o l o g i e s ,i p r o p o s eab l u ep r i n tw h i c hi sf r o mc a p t u r i n gt h em e s s a g eo fc o l l a b o r a t i o n d i a g r a mt of m d i n gt h et e s t i n gp a t h so nt h eb a s e so fs o f t w a r et e s t i n gm o d e l f i r s t l y , w ed r a wt h ec o l l a b o r a t i o nd i a g r a mo ft h es y s t e mu s i n gm o d e l i n gt o o l , t h e nd i s t i l lt h e m e s s a g ea n dg e n e r a t et e s t i n gp a t h so nt h ed e p e n d e n t r e l a t i o n s h i po fm e s s a g et r a n s f e r t e s t e r sc a nc o m p l e t eo p e r a t i o n sb a s e do n t h e s ep a t h st ot e s ti ft h es y s t e mc a na c tc o r r e c t l yt od i f f e r e n tc o n d i t i o n s t h e m a i nt a s k so ft h i sp a p e ra r ed e s i g n i n gt h ep r o c e s so f p i c k i n gu pt h ed a t af r o m u m lc o h a b o r a t i o nd i a g r a m ,d e f i n i n gt h ed a t as t r u c t u r eo fm e s s a g ea n di t s d e p e n d e n tr e l a t i o n s h i p ,d e s i g n i n gt h et r a v e r s i n ga l g o r i t h m , a n dr e a l i z i n gi t u s i n gj a v a a tl a s t ,it a k ea ne x a m p l eo fa t mt oi m p l e m e n tt h i sp r o g r a m t h er e s u l t i sc o n s i s t e n tw i t ht h ea n a l y s i s r e s u l t ,s ot h ep r o g r a mi se x e c u t a b l ea n d c o r r e c t a b l e t h i sw o r kc a nb eb e g i n n i n gf r o ms u m m a r y d e s i g n i th a st h e o r y a n dp r a c t i c a lm e a n i n gt ot e s t i n gm e t h o di m p r o v e da n dt e s t i n ga u t o m a t i o n k e yw o r d s :c o m p o n e n t ,c o m p o n e n t - b a s e ds o f t w a r e ,i n t e g r a t i o nt e s t i n g , d e p e n d e n tr e l a t i o n s h i p ,u m l i v 声明 本人郑重声明:所呈交的学位论文,是本人在指导教师的指导下, 独立进行研究所取得的成果。除文中已经注明引用的内容外,本论文 不包含其他个人或集体已经发表或撰写过的科研成果。对本文的研究 做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的 法律责任由本人承担。 论文作者签名: l 丑验日期:麴厶坚复目碰旦 关于学位论文使用权的说明 本人完全了解太原理工大学有关保管、使用学位论文的规定,其 中包括:学校有权保管、并向有关部门送交学位论文的原件与复印 件;学校可以采用影印、缩印或其它复制手段复制并保存学位论文; 学校可允许学位论文被查阅或借阅;学校可以学术交流为目的, 复制赠送和交换学位论文;学校可以公布学位论文的全部或部分内 i 、容保密学位论文在解密后遵守此规定) 。 签名: 日期:独缝明缒臼 导师签名:二包牡日期:j 竺堑二_ 止 太原理工大学硕士研究生学位论文 第一章绪论 1 1 选题目的和意义 基于组件的软件开发是继面向对象软件设计方法之后软件工程中一种新兴的方 法,近年来,在软件开发过程中得到了广泛应用,并且受到了学术界及工业界的关注。 基于组件的软件开发的魅力在于极大地降低了软件开发的成本,其特点是能够实现软 件的大粒度复用,缩短软件开发周期,降低维护成本。基于组件的软件开发模拟了硬件 的设计思想,它将组件作为系统设计的基本单元,通过组合多个可重用的组件来构造 软件系统。每一个组件都可以被描述为一个黑盒,它的内部对于组件使用者来说是 不可见的,组件的使用者通过组件的接口来实现组件的调用和集成,因此一旦重复使 用软件长期持续的开发将成为可能。采用基于组件的方法的主要障碍不在于技术,而 在于过程。在传统的开发中,开发过程在一个组织的控制下并延伸到一个定义好的生 命周期中,与此相反,基于组件的软件开发过程的生产是跨越几个组织的非确定性的 分布式的过程,这些组织之间不必要彼此同步或相互交流,而且生命周期相应地分散 在几个不同的时间段内“1 。 自1 9 6 8 年n a t o 会议首次提出“软件危机”以来,软件工程已经取得了很大的 进展,然而随着计算机应用领域的迅速扩大,软件规模复杂性的不断提高,这一危机 不但没有消失,却愈加明地显暴露出来,提高软件质量成为软件产业的当务之急。质 量不过关的软件产品在使用中可能出现各种意想不到的问题,不但影响正常的操作, 增加使用成本,甚至会产生严重的或灾难性的后果,给用户造成极大困扰;而且软件 的质量问题也会增加软件开发商的维护费用,影响其信誉和形象,甚至导致经济或法 律纠纷,因此不论软件用户还是开发商都希望尽可能提高软件的可靠性,得到优质的 软件。软件测试( s o f t w a r et e s t i n g ) 是为发现错误而执行代码的过程,是整个软件生 命周期中非常重要的一环,它是保证软件达到高质量和高可靠性的重要方面,它代表 了对规约、设计和编码的最终审查。统计表明,在典型的软件开发项目中,软件测试 太原理:i :大学硕士研究生学位论文 的工作量往往占软件开发工作总量的4 0 9 6 ,并因此而开销3 0 - 5 0 的总成本,其重要性 不言而喻”1 。 对于组件软件系统,在组件被集成之前,组件的开发者已对组件内部完成了测 试。因此可能每一个组件在单元测试中表现正常,但是与其他组件集成并不一定能正 常工作。组件集成测试的目标是保证组件间能够正确地交互,从而整个软件系统可以 正常运行。国内外对此研究时间还不长,因此具有极大的迫切性。本文主要对系统测 试路径产生方法做一研究,目的在于依照组件间依赖关系来产生测试路径。 1 2 国内外研究动态 从国内公开发表的论文来看,在这方面研究的不多。国外有一部分学者对基于组 件的软件系统的测试进行了研究,并从组件和基于组件的系统从不同方面提出了许多 测试方法,但和其它发展很快的技术相比,这方面的成果还不算丰富。本文主要参考 了国内外的一些文献资料。 国内方面。苏荟“3 等研究设计了一个基于u m l 顺序图的簇级测试的模型,以 u m l 顺序图为软件测试的重要依据,通过对u m l 文档信息提取的同时对源代码插 装,以提取程序运行时类间实际的交互信息。谢棠棠。3 等利用建模工具的扩展接1 :3 实 现了一个从u m l 动态模型中自动提取测试场景的测试工具基于u m l 动态模型 图的测试场景提取工具。王凯”1 在已有的一些测试方法的基础上,提出一种基于组件 规格说明的测试模型。在此基础上进行组件集成测试时,进一步研究了组件内置约束 测试和提高组件可测试性的问题,并提出一种新的扩展组件测试接口的方法用以提高 组件的可观测性。白晓清”3 等对基于u m l 的软件测试技术进行了详细的比较和研究。 分别对类图、序列图、协作图、交互图及状态图的混合及用例图在集成测试中的作用 进行了研究。林宏。1 等提出个基于u m l 的面向对象软件测试框架,该框架有效地 结合了u m l 和统一软件开发过程,提出的测试框架将软件测试分为系统测试、类簇 测试和类测试。 国外方面。u m l 的各种模型图都可以作为测试的基础,在这方面的研究现在比 较多。针对u m l 没有提供相应的测试模型,h o i j i ny o o n 。等提出了一个基于u m l 的 测试模型,并将它应用到基于u m l 的组件系统中的集成测试。l i o n e lb r i a n d 和y v a n 2 太原理:l :大学硕士研究生学位论文 l a b i c h e “”提出利用类图、协作图或o c l 来获得测试需求。o f f u t t 和a b d u r a z i k 1 首先 提出了一种机制,这种机制采用基于详细描述的状态产生测试数据策略来从u m l 状 态图中产生测试用例,接下来又通过u m l 协作图扩展了他们的工作,其中最新颖的 地方在于测试用例可以自动从软件设计中提取,而不必要从源代码中提取。s u p a p o r n “” 等提出了使用u m l 状态图方法来自动产生测试用例。s a m ib e y d e d a “”等针对基于组 件的软件提出了一种集成测试技术,这种方法是在基于组件状态的转移图的同时借鉴 了h a r o l d 的基于程序分析的方法发展而来的。j e a n “”等提出的基于状态图的集成测试 方法比较典型。具体方法是先从各u m l 状态图产生一个系统级的全局组合状态图, 之后根据自底向上的集成策略对各部分集成,然后分别测试,以发现软件各部分( 包 括接口部分) 合作是否会产生故障。这种基于状态机的集成测试技术同样存在状态爆 炸问题,其研究重点也是如何减少测试用例的产生数量和优化测试过程。a y n u r a b d u r a z i k 和j e f fo f f u t t “”分析了u m l 规约级和实例级协作图所能表示的信息,将信 息进行分类,有些信息可用于对最终程序的检查,有些信息可用于动态测试,并设计 了一个根据协作图中信息对相应生成的程序进行插装的方法。y ew u “”等提出了一种 基于组件交互图的组件软件测试方法,这种方法基于组件的接口调用关系,具有一定 的通用性,可用于各种基于组件的系统。y ew u “1 还提出一种基于u m l 的组件系统 的集成测试方法,这种方法通过分析u m l 各种图形而得到组件间各种依赖关系,进 而得出测试序列。 1 3 本文的结构 本文首先介绍了基于组件的软件和有关软件测试的内容,接着研究在集成测试 方面的两种有代表性的方法,静态方面基于状态机,动态方面基于u m l 协 作图。通过比较两者的利弊,在前人的基础上提出一套从获取协作图消息信息到寻找 测试路径的方案,设计出一个根据依赖关系找出测试路径的程序,它可用于在概要设 计阶段设计测试用例。最后将其用于个具体的实例中。 3 太原理工大学硕士研究生学位论文 第二章基于组件的软件 2 1 组件技术概述 a l l e n “”的调查表明,到2 0 0 3 年,超过7 0 f l 软件系统大部分依赖于基于组件的 软件。一个基于组件的软件系统通常由一系列独立的组件集成,其中,有些由组织内 部开发,有些可能是由第三方来开发,此时源代码可能对开发者来说是不可见的。组 件可以用不同的编程语言所编写,在不同的操作平台上运行,同时分散在不同的地理 位置上。基于组件的软件的这些特征可使得软件升级速度加快,同时最终产品的质量 提高。 2 1 1 组件的产生 在计算机软件发展的早期,一个应用系统往往是一个单独的应用程序,应用越 复杂,程序就越庞大,系统开发的难度也就越大,而且,一旦系统的某个版本完成以 后,在下一个版本出来之前,应用程序不会再有所改变。但对于庞大的程序来讲,更 新版本的周期很长,在两个版本之间,如果由于操作系统发生了变化,或者硬件平台 有了变化,则应用系统就很难适应这样的变化,所以这类单体应用程序已经不能满足 计算机软件的发展需要。 从软件模型角度来考虑,一个很自然的想法就是把一个庞大的应用程序分成很 多个模块,每一个模块保持一定的功能独立性,在协同工作时,通过相互之间接口调 用来完成实际的任务。我们把每一个这样的模块称为组件,一个设计良好的应用系统 往往被划分为许多组件,这些组件可以单独开发,单独编译,甚至单独调试和测试, 以获取更好的维护性能和代码复用率。如果有必要,还可以从第三方购买你所需要的 商业组件( c o t s 组件) 。当所有的组件都已经完成后,把它们组合在一起便得到了 一个完整的应用系统。当系统外界的软硬件环境发生变化或者用户的需求有所更改 时,并不需要对系统中所有的组件修改,只需要完善受影响的组件,然后重新组合得 4 太原理工大学硕士研究生学位论文 到升级软件。 21 2 组件的定义 组件技术是近年来发展起来的一种优秀的软件重用技术。基于组件的软件工程 ( c o m p o n e n t b a s e ds o f t w a r ee n g i n e e r i n g ,简称c b s e ) 是一种软件开发新范型,它是 在一定的组件模型的支持下,复用组件库中的一个或多个组件软件,通过组合手段高 效率、高质量地构造应用软件系统的过程。关于什么是组件目前还没有统一的说法, 有几种关于组件的定义。s z y p e r s k i 和p f i s t e r “”从一个结构化观点来提出组件的本质: 组件是“用规定接口及清晰环境依赖的组合体单元”。组件可以独立地开发并且从属 于第三方的组合。b r o w n 从更广泛的方面定义了组件:一个组件是“一个可独立发 布的功能模块,它通过接口提供对组件服务访问”。a l a n 。”等提到“组件是系统中一 个有价值的、近乎独立的可替换部分,在这个系统的上下文环境中实现清晰的功能。 系统应该具有良好定义的结构,要符合一组接口标准,并提供接c i 的物理实现”。 由于软件由不同的组件构成,组件间联系是通过接口的消息传递来实现,因此 接口是组件的核心部分,它只描述对象所提供的公共服务,而对象的内部状态不应该 通过公共接口看到。接c i 本身没有任何功能,它仅仅是指向实现,接口可以跨组件复 用和升级,可以增加新的方法。实际上,组件对外表现出来就是一个黑盒,对它的任 何操作只能通过公共方法和属性组成的接口进行。理想的情况下,组件接口的规格说 明告诉组件的使用者组件可以做什么,而不必关心组件是怎样做的。一旦组件确定好 以后,就要创建这个组件与其他组件之间的公共接口。在基于组件的软件系统中,对 象是按照规范设计的模块,这些定义好的软件模块在系统中共存,并相互作用。组件 系统的关键在于各模块的组合。每一个组件都有一个接1 2 1 定义其属性及约束条件,因 此各模块间接口的测试是整个软件系统性能的保证。 2 13 组件的特点 1 组件是一个包容的、可替换的软件单元,它封装了设计策略,并能与其他组 件组合成更大的组件; 5 太原理工大学硕士研究生学位论文 2 组件实现了对所提供服务的黑盒封装,其具体实现对外是透明的: 3 组件提供了一个或多个接口,并实现了这些接口。组件必须通过文档化的接 口进行访问,接口是组件与用户和其他组件之间发生交互的连接渠道,第三方只能通 过组件的规格说明理解和重用组件; 4 组件可以独立地被调用,并易于被第三方所组合o ”o ”; 5 组件位置透明性。组件以及使用它的程序能够在不同的进程或不同的机器上 运行。组件对远程组件的处理方式应和对本地组件的处理方式是一样的; 6 与语言无关性的组件,必须以二进制的形式发布,这样就将其实现所用的编 程语言封装起来,做到与语言、开发环境无关; 7 很好的可扩充性。由于每个组件都是自主的,只能通过接口和外界通信,当 一个组件需要提供新的服务时,可通过增加新的接口来完成,不会影响到使用原接口 的客户,而新的用户可以重新选择新的接口来获得服务; 8 实现不同厂商的软件间的真正的互操作。组件可以来自不同的组件开放商, 独立地被生产、获得和配置,不同的组件可以方便地搭建应用程序。“。 2 2 组件的三个流派 这在组件模型方面,已形成三个主要流派,即对象管理组织( o m g ) 的c o r b a 、 微软公司的c o m d c o m 、s u n 公司的e j b 。以下分别从c o r b a 、c o m d c o m 和 e j b 三个方面来介绍当前软件组件技术的一些基本概念和内容。 为了协调和制定分布式异构环境下应用软件开发的统一标准,1 9 8 9 年成立了一 个国际组织对象管理联盟( o m g ) 。加盟此组织的单位越来越多,现已有7 5 0 多个 单位,其中包括软件的开发供应商,软件用户和软件技术的研究院所等。经过多年的 努力,已制定了一系列的标准规约,称为c o r b a ( 公共对象请求中介结构、。 c o r b a 的核心是对象请求中介( o r b ) ,是分布式对象借以相互操作的中介通 道。c o r b a 的核心o r b 的作用是将客户对象( c l i e n t ) 的请求发送给目标对象( 在 c o r b a 中称为对象实现o b j e c ti m p l e m e n t a t i o n ) ,并将相应的回应返回至发出请求的 客户对象。o r b 的关键特征是客户与目标对象之间通信的透明性。c o r b a 。”模型架 构成熟,但它太复杂,未能被广大软件人员所接受,所以目前企业应用系统的核心平 6 太原理:l = 大学硕士研究生学位论文 台基本上都是选用j 2 e e 和n e t 。几大基础架构平台的代表是:基于c o m c o m + 的n e t 平台,基于e j b 的w e b s p h e r e 平台和w e b l o g i c 平台。基础架构平台已超越中 间件,成为实现企业应用软件开发、部署、运行、管理、集成和安全的一体化开放平 台,可满足各种应用软件所要求的可靠性、可伸缩性和安全性的需要。 c o m 是个开放的组件标准,有很强的扩充和扩展能力。c o m 规定了对象模型 和编程要求,使c o m 对象可以与其他对象相互操作。这些对象可以用不同的语言实 现,其结构也可以不同。c o m 规范包括c o m 核,i i , 、结构化存储、统一数据传输、 智能命名和系统级的实现( c o m 库) 。c o m 核心规定了组件对象与客户通过二进制 接口标准进行交互的原则,结构化存储定义了复合文档的存储格式以及创建文档的接 口,统一数据传输约定了组件之间数据交换的标准接1 :3 ,智能命名给予对象一个系统 可识别的唯一标识。统一数据传输建立在结构化存储的基础上,包括两方面的内容: 首先是数据格式的统一,其次是传输协议的建立。d c o m 是微软与其他业界厂商合 作提出的一种分布组件对象模型,它是c o m 在分布计算方面的自然延续,为分布在 网络不同节点的两个c o m 组件提供了互操作的基础结构。d c o m 增强了c o m 的分 布处理性能,支持多种通信协议,也加强了组件通信的安全保障。 1 9 9 8 年s u n 公司联合i b m 、o r a c l e 、b e a 等大型企业应用系统开发商共同制订 了一个基于j a v a 组件技术的企业应用系统开发规范,该规范定义了一个多层企业信 息系统的标准平台,这一规范和其定义的平台就构成了j 2 e e 。e i b ( e n t e r p r i s e j a v a b e a n s ) 便是建立在j 2 e e 平台基础上的企业级组件体系结构模型,是j 2 e e 平台 的核心,j 2 e e 的一个主要目的就是简化企业应用系统的开发,使程序员将主要精力 放在商业逻辑的开发上。e j b 正是基于这种思想的服务器端技术,它本身也是一种规 范,该规范定义了一个可重用的组件框架来实现分布式的、面向对象的商业逻辑。e j b 的核心思想是将商业逻辑与底层的系统逻辑分开,使开发者只需关一1 1 , 商业逻辑,而由 e j b 窗口实现目录服务、事务处理、持久性、安全性等底层系统逻辑。 表2 1 对这三种规范作了比较。 7 太原理工大学硕士研究生学位论文 袁2 - 1 三种规范的比较 t a b l e 2 1c o m p a r e ro f t h r e ec r i t e r i a c o r b ae j bc o m d c o m 开发环境 开发中 有 多 二进制接口二进制接口标准是 非二进制的基于c o m ,j a v a 标准c o m 构件的核心 与标准化语言有很强基于j a v a 语言规范,完全没有源代码级 兼容性、可移 的结合,可移植性不太可移植性好,兼容性 的标准化语言绑定 植性 好略差概念 使用c o r b a d l 定义不包含 d l 文件,在 使用m i c r o s o f ti d l 修改和维护构件接口,需要额外的容器与构件之间定义定义构件接口,需 修改和维护 接口,易于修改维护 要额外的修改维护 提供一整套标准化服既不标准又缺乏实际己被一些关键服务 提供的服务 务,但是缺乏实际应用应用所支持 平台依赖性无无有 语言依赖性 无有 无 善于传统的企业级运善于传统的桌面应 应用善于一般的w e b 处理 算用 2 3 组件的形态 组件的构成有不同的形态,从组件的结构组织方式和依赖的方法学范型的差异上 分可如下几种形态。”: ( 1 ) 类( c l a s s ) :以类为单位进行封装而得到的组件,这是最基本的组件单元。 ( 2 ) 类树( c l a s st r e e ) :以一个抽象类为根,若干继承该抽象类的具体子类( 也 可能有抽象子类) 为节点。将这样的类树封装为组件,抽象根类提供了该类树 的对外接口,对具体子类的操作( 删除或增加) 以及子类对象的创建均由抽象 类控制,实现了具体子类的隐蔽。 8 太原理工大学硕士研究生学位论文 类树作为组件的优点在于: 类树比类具有更多的独立性,对外界依赖少,更易于复用; 类树封装使得用户只需关心所需功能的抽象和规约而忽略具体子类细节; 类树封装后其结构变化和具体子类的增删对客户不会产生影响。 ( 3 ) 框架( f r a m e w o r k ) :一个框架由一组协作组件组成。表明整个设计、组件间依 赖及成员组件的功能分布,这些成员组件通常是子框架、类树或类,大多以抽象的 形式出现,实现细节放在具体子类中,构成了一个抽象设计,不同的具体子类可产 生对设计的不同实现。框架作为组件使得用户可以复用设计,用户通过具体子类的 嵌入而在框架中加入特殊功能。 ( 4 ) 设计模式( d e s i g np a t t e r n ) :是对经验的显式表示,每个设计模式描述了一个反 复出现的问题以及该问题解法的核心内容,它命名、抽象并标识了一个通用设计 结构的关键部分,使得它可以用来创建一个可复用的面向对象的设计。设计模式 作为可复用组件体现了较高层次的设计思想复用。 ( 5 ) 构架( a r c h i t e c t u r e ) :应用系统体系结构的显式表示。构架具有领域相关性, 组件根据构架进行复合而生成可运行的系统。构架是一类特殊的组件,可视为框 架用于描述一个应用系统时的极限状态。 上述各类形态组件间具有密切关系。通常,一个构架由若干框架所构成,框架 又可包含子框架、类树、抽象类和具体类,类树由抽象类和具体子类构成,类是最基 本的构件单元。在这个意义上,组件的形态体现了组件粒度上的差异。一个框架通常 含有多个设计模式的采用,每个设计模式都有若干个框架作为它在不同领域的具体实 现。 2 4u m l 概述 b o o c h ,r u m b a u g h ,j a c o b s o n 三位大师提出统一建模语言( u n i f i e dm o d e l i n g l a n g u a g e ,u m l ) 。1 9 9 7 年,由多家软件公司组成的u m l 联合组织正式成立,制定 u m l 第l 版,并呈交对象管理组( o b j e c tm a n a g e m e n tg r o u p ) 通过,成为公开标准。 u m l 是使用面向对象概念进行软件系统建模的一组表示法,它已被国际标准化组织 吸收为软件建模领域的国际标准。基于u m l 的设计和开发过程越来越受到广泛的关 9 太原理工大学硕士研究生学位论文 注,这也不断地增强和扩展了u m l 的设计和开发过程。 2 4 1 组件软件与u m l u m l 是一个能够对软件系统详细说明、构建并且形象化系统的建模语言。采用 u m l 描述组件软件有以下优点: 1 u m l 提供了刻画组件间行为的高层信息,在测试过程中可以高效地处理及有 效地使用: 2 u m l 已作为软件建模符号统一的工业标准,可以很方便地从组件的提供者那 里得到不同的视图: 3 u m l 包含了一系列模型,它们提供不同层次容量及精确性的组件建模,在实 际中可满足不同需求。 2 4 2u m l 模型基本元素 u m l 利用若干视图从不同角度来说明一个系统,每种视图由若干幅模型图描述, 每幅模型图由若干个模型图标元素来组成。模型图标元素表示图中的概念,如类、对 象、用例、结点、状态、接口、包( 子系统) 、注解、组件等都是模型图标元素。 用于表示模型图标元素之间相互连接的关系也是模型图标元素,如关联、继承、 从属、聚集等。这些关系含义如下: 关联:连接模型图标元素及连接实例: 继承:表示一般与特殊关系,即“特殊”图标元素继承“一般”元素的特性; 依赖:表示一个图标元素以某种方式依赖于另一个图标元素; 聚集:表示整体与部分关系,即“部分”图标元素是“整体”图标元素的一部 分。 2 4 3u m l 模型图 越来越多的软件开发者使用u m l 及可视化的建模工具作为设计和执行分布式、 1 0 太原理:1 :大学硕士研究生学位论文 基于组件的应用系统的基础。与此同时,有必要对这些组件,特别是在集成测试中进 行测试。u m l 的基本构成部分是各种模型图,它包括: 1 用例图( u s ec a s ed i a g r a m ) 描述了系统外部的各类执行者与系统提供的各种用例之间的连接; 2 静态结构模型图 ( 1 ) 类图( c l a s sd i a g r a m ) :展示系统中类的静态结构和类与类之间的相互联系, 表示一个系统的逻辑结构,类之间有多种联系方式。 ( 2 ) 对象图( o b j e c td i a g r a m ) :是类的实例化对象的图,它展示了系统执行在 某一时间点上发生的同步事件。 ( 3 ) 组件图( c o m p o n e n td i a g r a m ) :展示程序代码的物理结构。组件是一个可 完某一独立功能的完整软件,具有自己完整的边界和接口。在一个系统中,组件图以 软件组件为单位展示了软件的体系结构。u m l 中的组件可以是源代码组件、二进制 组件或可执行组件。组件图中用箭头显示组件之间的依赖关系,用来分析当一个组件 变化时如何影响其他组件。 ( 4 ) 配置图( d e p l o y m e n td i a g r a m ) :又称部署图,展示软件在硬件环境中( 特 别是在分布式及网络环境中) 的配置关系。 3 动态行为模型图 ( 1 ) 交互图( i n t e r a c t i v ed i a g r a m ) :描述对象间的交互关系,包括序列图和协作 图。 序列图( s e q u e n c ed i a g r a m ) 描述在用例图中,对象之间的消息交换,即系 统执行的某一特定时间点所发生的事件。序列图展示了几个对象间的动作协作关系, 它主要是用来显示对象之间发送消息的时间顺序,接收消息的对象调用适当的操作, 并把返回值送回原来发送消息的对象,显示对象之间的动态合作关系,强调对象之间 消息发送的时间顺序。 协作图( c o l l a b o r a t i o nd i a g r a m ) :描述系统的行为是如何由系统的组成成分 之间相互协作来实现,描绘了在特定上下文中一组相关对象之间的合作,以及这组对 象为产生所要求的操作结果而进行合作时所交换的一组消息。在一条连接上,可以给 太原理工大学硕十研究生学位论文 消息加一个消息标签,用来说明发送的消息、消息的参数、消息的返回值以及消息的 序列号等信息。与序列图一样,协作图也展示了对象间的动态协作关系。它除了说明 消息的交换外,还显示对象之间的连接关系,描述信息在连接的对象之间的传递。一 般可在序列图或协作图中选择一个来表示对象间的协作关系:如果强调时间顺序,使 用序列图;如果强调对象问的相互关系,则选择协作图。协作图也显示对象之间的动 态合作关系,它与序列图不同的是,它强调的是交互对象之间的连接关系而不表示时 间关系。 ( 2 ) 行为图( b e h a v i o r d i a g r a m ) :描述系统的动态模型和组成对象间的交互关系, 包括状态图和活动图。 状态图( s t a t ed i a g r a m ) :用来展示一个系统或对象的生命周期。一个系统或 对象从产生到结束或从构造到清除,可以处于一系列不同的状态中。这些状态的数目 有限时,可以由状态图来表示。状态图通常是对行为描述的补充,它说明该类的对象 所有可能的状态以及哪些事件导致状态的改变。状态图有起点( 初始态) 和终点( 终 态) ,状态之间为状态转移,用一条带箭头的线表示,引起状态转移的事件可以用状 态转移线旁边的标签来表示,一般包含状态名称、状态变量和活动表。状态图包含下 列元素:事件、状态迁移、迁移动作。通过状态图可以了解到一个对象所能达到的所 有状态以及受到的事件( 受到消息、超时、错误、条件满足) 对对象的影响等。状态 图指定对象的行为以及根据不同的当前状态描述行为之间的差别,同时,它还能说明 事件如何改变对象的状态。 活动图( a c t i v i t yd i a g r a m ) :展示系统间各种活动的执行流程。一个连续活 动的进行序列,表现的是从一个活动到另一个活动的控制流程,包含方案的执行和对 象的工作情况。活动图通常用来描述完成一个操作所需要的活动,并且支持带条件的 行为和并发行为的表达。活动图由动作状态组成,它包含完成一个动作的活动规约( 即 规格说明) ,当一个动作完成后,就离开该动作状态。动作部分还可包括消息的发送 和接收规约。主要的图标元素有:活动状态、活动状态转变、条件判定。 1 2 太原理工大学硕士研究生学位论文 第三章软件测试 3 1 软件测试概述 大量统计资料表明,软件测试的工作量往往占软件开发总工作量的4 0 以上, 在极端情况,测试那种关系人的生命安全的软件所花费的成本,可能相当于软件工程 其他开发步骤总成本的3 倍到5 倍。因此,必须高度重视软件测试工作,绝不要以为 写出程序之后软件开发工作就接近完成了。仅就测试而言,它的目标是发现软件中的 错误,但是,发现错误并不是最终目的,软件工程的根本目标是开发出高质量的完全 符合用户需要的软件。 1 软件测试的定义 软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最 终复审,是软件质量保证的关键步骤。如果给软件测试下定义,可以这样讲:软件测 试是为了发现错误而执行程序的过程。 q j m y e r s 给出了关于测试的一些规则,这些规则也可以看作是测试的目标或定 义。 ( 1 ) 测试是为了发现程序中的错误而执行程序的过程; ( 2 ) 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案; ( 3 ) 成功的测试发现了至今为止尚未发现的错误的测

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论