(系统分析与集成专业论文)软件复用技术在net平台下的应用.pdf_第1页
(系统分析与集成专业论文)软件复用技术在net平台下的应用.pdf_第2页
(系统分析与集成专业论文)软件复用技术在net平台下的应用.pdf_第3页
(系统分析与集成专业论文)软件复用技术在net平台下的应用.pdf_第4页
(系统分析与集成专业论文)软件复用技术在net平台下的应用.pdf_第5页
已阅读5页,还剩47页未读 继续免费阅读

(系统分析与集成专业论文)软件复用技术在net平台下的应用.pdf.pdf 免费下载

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

文档简介

摘要 当前,随着软件规模及复杂度日渐庞大,开发周期增长,软件复用技术日益得到广 泛应用。软件复用技术的目的是为了减少重复劳动、降低被开发软件出错概率、提高软 件系统的可靠性和可维护性、增强软件质量。从而,软件复用研究重新成为热点,与其 相关的技术也迅速地发展起来。所以,对于如何用软件复用及其相关技术进行软件设计, 以有效的设计来应对用户不同的需求,并提高软件质量,成为人们不断关注的问题。 本文就软件复用的过程模型、基于构件的软件开发与软件复用技术和设计模式在实 际中的应用进行详细探讨,并将三大主流构件技术:o m g ( 对象管理集团) 的组件模 型c o r b a 、微软的c o m 以及s u n 公司组件模型e j b 做了深入的对比,并重点分析了 c o m 的运行机制,c o m 组件与n e t 组件的区别以及c o m 组件技术中的复用问题。 结合参与贵州省地方税务局税收管理员平台实践经验,作者对如何利用软件复用技 术及其设计模式进行设计,以及现有的部分设计模式的特点及适用范围进行详细研究, 总结了成功采用设计模式应当采取的具体步骤,给出了f a c t o r y 设计模式在作者所负责 的该税收管理员平台的系统维护模块中进行设计的过程,并根据在实际设计过程中遇到 的问题及其解决办法进行经验总结,提出了应用设计模式时应当注意的问题。 关键词:软件复用;构件模型;设计模式;f a c t o r y 设计模式;对象 a b s t r a c t a tp r e s e n t ,w i t ht h es c a l ea n dc o m p l e x i t yo fs o f t w a r ee x p a n dg r a d u a l l ya n dt h ec y c l eo f s o f t w a r ed e v e l o p m e n ti n c r e a s e d ,s o f t w a r er e u s ei n c r e a s i n g l yw i d e l yu s e d s o f t w a r er e u s ei s u s e dt or e d u c et h ed u p l i c a t i o no fw o r k ,r e d u c et h ep r o b a b i l i t yo fe r r o rw h i c hb e l o n g st o s o f t w a r ed e v e l o p m e n t ,e n h a n c et h er e l i a b i l i t ya n dm a i n t a i n a b i l i t yo fs o f t w a r es y s t e m s ,a n d e n h a n c et h eq u a l i t yo fs o f t w a r e t h e ns o f t w a r er e u s eh a sg o t t e nm o r ea n dm o r ea t t e n t i o n ,a n d s o m er e l a t e dt e c h n o l o g yh a sg o i n ga l o n gw i t hi tt h a tr a p i d l yd e v e l o p e d s oh o wt ou s e s o f t w a r er e u s ea n dr e l a t e dt e c h n o l o g yf o rs o f t w a r ed e s i g n ,a n du s et h ee f f e c t i v ed e s i g nd e a l w i t hd i f f e r e n tn e e d so fu s e r s ,s oa st oi m p r o v es o f t w a r eq u a l i t y ,t h a th a sb e c o m et h ec o n c e r n o fp e o p l e i nt h i sp a p e r , a u t h o rh a sad e t a i ls t u d ya b o u tp r o c e s sm o d e l so fp r o c e s sm o d e l s , c 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 ta n ds o f t w a r er e u s e ,a n dt h ed e s i g n i n p r a c t i c a l a p p l i c a t i o n t h e na u t h o rd oa ni n - d e p t hc o m p a r i s o na m o n gt h r e em a i n s t r e a mc o m p o n e n t t e c h n o l o g i e s :o m g ( 0 b j e c tm a n a g e m e n tg r o u p ) i sc o m p o n e n tm o d e lc o r b a ,m i c r o s o f t s c o ma n ds u n sc o m p o n e n tm o d e le j b a f t e rt h i s ,t h ea n a l y s i sf o c u s e do nt h eo p e r a t i n g m e c h a n i s mo fc o m p o n e n to b j e c tm o d e l ,t h ed i f f e r e n c eb e t w e e nc o m c o m p o n e n t sa n d n e t c o m p o n e n t s ,a n dr e u s e i nt h et e c h n o l o g yo fc o m c o m p o n e n t s w i t ht h ep r a c t i c a le x p e r i e n c ei ng u i z h o up r o v i n c el o c a lt a xa d m i n i s t r a t o rp l a t f o r m , a u t h o rm a k e sad e t a i l e da n a l y s i sa b o u th o wt ou s ed e s i g na n dd e s i g np a t t e r n sf o rd e s i g n i n g , t h ee x i s t i n gp a r to ft h ed e s i g nc h a r a c t e r i s t i c sa n dt h e y r es c o p eo fa p p l i c a t i o n ,a n dt h e n s u m m a r i z et h em a t e r i a ls t e p si nt h es u c c e s s f u lu s eo fd e s i g np a t t e r n s a f t e r w a r d ,ac o u r s eh a s b e e ng i v e nt h a t c o n c e r n i n gf a c t o r yd e s i g n e du s i n gi nd e s i g n i n g t h em o d u l eo fs y s t e m m a i n t e n a n c ew h i c hb e l o n g st og u i z h o up r o v i n c el o c a lt a xa d m i n i s t r a t o rp l a t f o r m a c c o r d i n g t ot h ep r o b l e m sa n di t ss o l u t i o n sw h i c he n c o u n t e r e di na c t u a ld e s i g n ,a u t h o rs u mu pm a n y p r a c t i c a le x p e r i e n c e s ,p u tf o r w a r ds o m eo b s e r v i n gp o i n t sf o ru s i n gd e s i g np a t t e r n k e yw o r d s :s o f t w a r er e u s e ;c o m p o n e n tm o d e l ;d e s i g np a t t e r n ;f a c t o r yd e s i g np a t t e r n ; o b j e c t i i 湖北大学学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所 取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任 何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡 献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的 法律后果由本人承担。 论文作者签名:腙损 日期:加3 年多月弓日 学位论文使用授权说明 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即: 按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位 论文的印刷本和电子版,并提供目录检索与阅览服务;学校可以允许采用 影印、缩印、数字化或其它复制手段保存学位论文;在不以赢利为目的的 前提下,学校可以公开学位论文的部分或全部内容。( 保密论文在解密后遵 守此规定) 作者签名: 指导教师签名: 虫怜 日期:册子6 弓 日期:狮;亨 1绪论 1 1 本论文选题背景 1绪论 当前,随着以计算机软件为核心的信息时代的来临,软件开发技术受到了越来越多 的关注。由于人们对软件需求的不断增加,软件的功能、可操作性、智能化程度也迅速 发展。软件技术的高速发展为人们提供了技术先进、功能强大的软件。同时,新的问题 也随着出现了:软件规模庞大,开发周期长,投资大;软件系统大多数功能不能灵活地 装卸、单独升级或重复利用;软件不易移植或集成,即使用相同语言编写的并且运行于 相同平台的应用程序也无法与其他应用程序共享等等。 为了解决人们所面临的问题,减少重复劳动,降低被开发软件出错的概率,软件复 用技术也就应运而生,与其相关的技术也迅速地发展起来。 软件复用是指在两次或多次不同的软件开发过程中重复使用相同或相似元素的过 程【1 】。软件复用有助于提高软件开发的劳动生产力,提高软件系统的可靠性,减少维护 负担,增强软件的质量。因而,从一开始,软件复用就被认为是摆脱软件危机的一种手 段,并受到广泛的重视,也正因此,在随后的几十年里,软件复用在各个方面影响着整 个软件行业的发展过程。 1 2 国内外研究现状 软件复用思想最早是在1 9 6 8 年n a t o 软件工程会议上提出的。在此以前,子程序的 概念也体现了复用的思想。但其目的是为了节省当时昂贵的机器内存资源,并不是为了 节省开发软件所需的人力资源。然而子程序的概念可以用于节省人力资源的目的,从而 出现了通用子程序库,供程序员在编程时使用。例如,数学程序库就是非常成功的子程 序复用的例子。在其后的发展过程中,有许多复用技术的研究成果和成功的复用实践活 动。但是,复用技术在整体上对软件产业的影响却并不尽如人意。这是由于技术方面和 非技术方面的种种因素造成的,其中技术上的不成熟是一个主要原因。 近十几年来,面向对象技术出现并逐步成为主流技术,为软件复用提供了基本的技 术支持。软件复用研究重新成为热点,被视为解决软件危机,提高软件生产效率和质量 的现实可行的途径,软件复用得到了越来越广泛的应用。 湖北人学硕十论文 1 3 本论文组织和结构 本论文共计七个部分,分别讨论了论文的选题背景,软件复用技术的基本概念和特 点,构件技术在软件复用中的地位与作用,设计模式的概念,然后结合贵阳地税管理员 平台项目介绍了f a c t o r y 设计模式及其特点,最后对文中提到的技术进行展望并给出了 参考文献,详细说明如下: 第一章绪论。论文选题背景,研究的主要内容及组织结构。 第二章软件复用概述。软件复用的概念、特点及其在软件产业中的优势。给出了 软件复用的过程模型,并总结了软件复用的关键技术。 第三章软件构建模型及规范。基于组件的软件开发与软件复用技术,以及常见的 组件模型,重点研究组件对象模型( c o m ) 的运行机制,及c o m 组件技术中的复用问题。 第四章可复用面向对象软件基础设计模式。设计模式的基本概念、框架、基 本要素和设计原则。重点介绍了现有的部分设计模式以及成功采用设计模式的步骤。 第五章设计模式在贵阳地税管理员平台中的应用。重点介绍了f a c t o r y 设计模式 在贵阳地税管理员平台的系统维护模块中的应用,以及应用设计模式时应注意的问题。 最后,对本论文进行总结和未来发展进行展望。 2 2 软什复州技术介绍 2 1 软件复用的产生 2 软件复尉技术介绍 软件技术的高速发展为人们提供了技术先进、功能强大的软件,同时,新的问题也 随着出现了:软件规模庞大,开发周期长,投资大;软件系统大多数功能不能灵活地装 卸、单独升级或重复利用;软件不易移植或集成,即使用相同语言编写的并且运行于相 同平台的应用程序也无法与其他应用程序共享等等【5 l 。为了解决人们所面临的问题,近 十几年来,面向对象技术出现并逐步成为主流技术,为软件复用提供了基本的技术支持。 软件复用研究重新成为热点,被视为解决软件危机,提高软件生产效率和质量的现实可 行的途径。软件复用技术的广泛应用将促进软件产业的变革,使其重组分工,软件构件 生产必将成为独立的行业而存在。 2 2 软件复用的特点和现状 软件复用就是将已有的软件成分用于构造新的软件系统。可以被复用的软件成分一 般称作可复用构件,无论对可复用构件原封不动地使用还是作适当的修改后再使用,只 要是用来构造新软件,则都可称作复用【1 1 。软件复用不仅仅是对程序的复用,它还包括 对软件生产过程中任何活动所产生的制成品的复用,如项目计划、可行性报告、需求定 义、分析模型、设计模型、详细说明、源程序、测试用例等等。如果是在一个系统中多 次使用一个相同的软件成分,则不称作复用,而称作共享;对一个软件进行修改,使它 运行于新的软硬件平台也不称作复用,而称作软件移值。目前及近期的未来最有可能 产生显著效益的复用是对软件生命周期中一些主要开发阶段的软件制品的复用,按抽象 程度的高低,可以划分为如下的复用级别: 级别一:代码的复用 包括目标代码和源代码的复用。其中目标代码的复用级别最低,历史也最久,当前 大部分编程语言的运行支持系统都提供了连接( l i n k ) 、绑定( b i n d i n g ) 等功能来支持这种 复用。源代码的复用级别略高于目标代码的复用,程序员在编程时把一些想复用的代码 段复制到自己的程序中,但这样往往会产生一些新旧代码不匹配的错误。想大规模的实 现源程序的复用只有依靠含有大量可复用构件的构件库。如“对象链接及嵌入”( o l e ) 技术,既支持在源程序级定义构件并用以构造新的系统,又使这些构件在目标代码的级 3 湖北人学硕士论文 别上仍然是一些独立的可复甩构件,能够在运行时被灵活的得新组合为各种不厨韵应 用。 级;l l l - - - 设计的复用 设计结果比源程序的抽象级别更高,因此它的复用受实现环境的影响较少,从而使 可复用构件被复用的机会更多,并且所需的修改更少。这种复用有三种途径,第一种途 径是从现有系统的设计结果中提取一些可复用的设计构件,并把这些构件应用于新系统 的设计;第二种途径是把一个现有系统的全部设计文档在新的软硬件平台上重新实现, 也就是把一个设计运用于多个具体的实现;第三种途径是独立于任何具体的应用,有计 划地开发一些可复用的设计构件。 设计的复用有三种途径,第一种途径是从现有系统的设计结果中提取一些可复用的 设计组件,并把这些组件应用于新系统的设计;第二种途径是把一个现有系统的全部设 计文档在新的软硬件平台上重新实现,也就是把一个设计运用于多个具体的实现;第三 种途径是独立于任何具体的应用,有计划地开发一些可复用的设计组件。一般情况下抽 象级别越高,它的复用受实现环境的影响较少,从而使可复用组件被复用的机会更多, 且所需的修改越少。 级别三:分析的复用 这是比设计结果更高级别的复用,可复用的分析构件是针对问题域的某些事物或某 些问题的抽象程度更高的解法,受设计技术及实现条件的影响很少,所以可复用的机会 更大。复用的途径也有三种,即从现有系统的分析结果中提取可复用构件用于新系统的 分析;用一份完整的分析文档作输入产生针对不同软硬件平台和其它实现条件的多项设 计;独立于具体应用,专门开发一些可复用的分析构件。 级别四:测试信息的复用 主要包括测试用例的复用和测试过程信息的复用。前者是把一个软件的测试用例在 新的软件测试中使用,或者在软件作出修改时在新的一轮测试中使用。后者是在测试过 程中通过软件工具自动地记录测试的过程信息,包括测试员的每一个操作、输入参数、 测试用例及运行环境等一切信息。这种复用的级别,不便和分析、设计、编程的复用级 别作准确的比较,因为被复用的不是同一事物的不同抽象层次,而是另一种信息,但从 这些信息的形态看,大体处于与程序代码相当的级别。 由于软件生产过程主要是正向过程,即大部分软件的生产过程是使软件产品从抽象 级别较高的形态向抽象级别较低的形态演化,所以较高级别的复用容易带动较低级别的 4 2 软件复川技术介绍 复用,因而复用的级别越高,可得到的回报也越大,因此分析结果和设计结果在目前很 受重视。 2 3 软件复用的优势 通常情况下,应用软件系统的开发过程包含以下几个阶段:需求分析、设计、编码、 测试、维护等。当每个应用系统的开发都是从头开始时,在系统开发过程中就必然存在 大量的重复劳动,如用户需求获取的重复、需求分析和设计的重复、编码的重复、测试 的重复和文档工作的重复等。探讨应用系统的本质,可以发现其中通常包含三类成分: ( 1 ) 通用基本构件:是特定于计算机系统的构成成分,如基本的数据结构、用户 界面元素等,它们可以存在于各种应用系统中; ( 2 ) 领域共性构件:是应用系统所属领域的共性构成成分,它们存在于该领域的 各个应用系统中; ( 3 ) 应用专用构件:是每个应用系统的特有构成成分。应用系统开发中的重复劳 动主要在于前两类构成成分的重复开发。 软件复用是在软件开发中避免重复劳动的解决方案,其出发点是应用系统的开发不 再采用一切“从零开始 的模式,而是以已有的工作为基础,充分利用过去应用系统开 发中积累的知识和经验,如:需求分析结果、设计方案、源代码、测试计划及测试案例 等,从而将开发的重点集中于应用的特有构成成分。通过软件复用,在应用系统开发中 可以充分地利用已有的开发成果,消除了包括分析、设计、编码、测试等在内的许多 重复劳动,从而提高了软件开发的效率,同时,通过复用高质量的已有开发成果,避免 了重新开发可能引入的错误,从而提高了软件的质量【2 1 。 总结起来,复用的优势可归结为:提高生产率、减少维护代价、提高互操作性、支 持快速原型、减少培训开销。分析传统产业的发展,其基本模式均是符合标准的零部件 ( 构件) 生产以及基于标准构件的产品生产( 组装) ,其中,构件是核心和基础,“复用 是必需的手段。实践表明,这种模式是产业工程化、工业化的必由之路。标准零部件生 产业的独立存在和发展是产业形成规模经济的前提。机械、建筑等传统行业以及年轻的 计算机硬件产业的成功发展均是基于这种模式并充分证明了这种模式的可行性和正确 性。这种模式是软件产业发展的良好借鉴,软件产业要发展并形成规模经济,标准构件 的生产和构件的复用是关键因素。这正是软件复用受到高度重视的根本原因。 5 湖北人学硕十论文 2 4 软件复用的过程模型 软件复用的三个基本要素是复用成分的获取、管理和利用【1 j 。复用成分的获取包括 将现有的软件成分抽象成可复用的,以便构成新的软件系统,以及从复用成分库中选取 某个具体问题的可复用成分;复用成分的管理完成对复用成分库的组织,以便有效地组 织、管理和扩充软件复用成分;复用成分的利用是获取和管理的目的所在,包括根据需 要选择抽象的可复用成分,并对其进行适应性修改,以将其集成到现行开发的软件系统 中1 2 1 。软件复用过程一般分为以下几步:识别可复用元素;分解、抽象;分类并 建立构件库;检索与选定构件;对复用构件具体化;构造、组装。如图2 - 1 所示。 图2 1 软件复用过程模型 2 4 1 软件复用技术大体上分为组装技术和生产技术两种 2 4 1 1 组装技术 这是最简易的一种方式,它直接对软件构件进行合成。这种做法从某种意义上看, 与计算机硬件组装本质相同,可将构件看成是“软零件,通过对具备不同功能的“软 零件”进行装配,最终形成一个完整的系统。实际上用得较多的是各种函数库和子程序。 2 4 1 2 生产技术 生产技术也称为软件生成。它是通过程序生成器产生新的程序来达到复用模式的目 的。生成技术可以进一步分为3 种情形:面向问题的编程,即用第4 代语言4 g l 来 编写程序,4 g l 程序其实是对问题的一种高级描述,通过编译可以自动得到各种不同 高级语言的机器实现;程序变换技术,即设计一种源码变换系统,通过一系列变换将 6 2 软什复j 【f j 技术介绍 高级语言书写的规范说明换为可执行语言的程序,或将一种高级语言程序转换为另一种 高级语言程序;应用程序生成器,即通过将某些具有相同结构模式的不同软件系统的 共同结构抽象出来,构造生成器,给定一些特定的说明和要求,这样的系统就能生产出 特定的软件来。通常所说的许多程序自动生成系统就是这种情形的软件复用例子。这两 种复用技术十分重要,可根据所要开发的软件的特性,选择采用组装技术或生产技术, 对于大型系统而言,通常都是两者结合使用,以发挥各自的技术优点,以达到最优复用。 2 4 2 软件复用的粒度按复用规模大小分类 软件复用的粒度按复用规模大小来分,软件复用可分为小粒度、中粒度和大粒度三 种复用类型。小粒度复用即小规模复用,例如程序代码的复用,主要表现为函数、子程 序、面向对象中的类、方法的复用等;中粒度复用即中等规模复用,例如需求分析、软 件总体设计以及软件项目计划的复用等;大粒度复用即大规模复用,例如应用子程序或 子系统、软件体系结构的复用等。软件复用的粒度是衡量复用是否取得成功的重要指标。 当然,不应该只是为了复用而复用,而应该是按需复用。开发高“性价比”的软件始终 是人们追求的目标,假如高粒度复用带来的是增加冗余功能,使系统更加复杂和“臃肿”, 那就等于失去了复用的意义。 2 5 软件复用的关键技术 软件复用有三个基本问题,一是必须有可以复用的对象,二是所复用的对象必须是 有用的,三是复用者需要知道如何去使用被复用的对象。软件复用包括两个相关的过程: 可复用软件( 构件) 的开发和基于可复用软件( 构件) 的应用系统构造( 集成和组装) 阴。解 决好这几个方面的问题才能实现真正成功的软件复用。与以上几个方面的问题相联系, 实现软件复用的关键因素( 技术和非技术因素) ,主要包括:软件构件技术、领域工程、 软件构架、软件再工程、开放系统、软件过程、技术等以及各种非技术因素。实现软件 复用的各种技术因素和非技术因素是互相联系的。它们结合在一起,共同影响软件复用 的实现。 2 5 1 软件构件技术 构件( c o m p o n e n t ) 是指应用系统中可以明确辨识的构成成分【1 2 】。而可复用构件是指 具有相对独立的功能和可复用价值的构件。随着对软件复用理解的深入,构件的概念已 7 湖北人学硕十论文 不再局限于源代码构件,而是延伸到需求、系统和软件的需求规约、系统和软件的构架、 文档、测试计划、测试案例和数据以及其他对开发活动有用的信息。这些信息都可以称 为可复用软件构件。软件构件技术是支持软件复用的核心技术,是近几年来迅速发展并 受到高度重视的一个学科分支。其主要研究内容包括: ( 1 ) 构件获取:有目的的构件生产和从已有系统中挖掘提取构件; ( 2 ) 构件模型:研究构件的本质特征及构件间的关系; ( 3 ) 构件描述语言:以构件模型为基础,解决构件的精确描述、理解及组装问题; ( 4 ) 构件分类与检索:研究构件分类策略、组织模式及检索策略,建立构件库系 统,支持构件的有效管理; ( 5 ) 构件复合组装:在构件模型的基础上研究构件组装机制,包括源代码级的组 装和基于构件对象互操作性的运行级组装; ( 6 ) 标准化:构件模型的标准化和构件库系统的标准化。 构件复用是目前研究的主要复用技术,它考虑的是特定的可复用构件的构造与使 用,还未涉及到如何将构件组装为一个可执行的有效的应用系统。因此,运用构件技术 只是在某一局部的功能代码这一层面上获得了复用性,并无法复用系统结构( 将各组件 有机组织为一个完整的软件系统的组件间的连接关系) 。因此在构造新的软件系统时, 虽然某些构件可以复用,但仍然需要重新建立和确定系统体系结构,即无法获得更高层 面系统级的复用性。尤其是对于复杂应用系统来说,代码或构件级的低层次复用难 以大幅度提高软件的生产率,尤其当开发具有相似结构或处理模式的多个应用系统时, 能否提高复用程度,对降低开发周期与成本极为关键。事实上,复用对象不仅可以是代 码片段,还可以是软件开发过程中形成的所有中间产品,包括需求文档、设计规范与系 统结构等。 在同一专业领域的应用系统软件中,不仅可以找到共同的软件构件,而且可以发现 共同或相似的软件体系结构。在特定领域的软件复用中,不仅可以复用实现局部功能的 软件构件,而且可以将系统的总体结构作为被复用的对象。因此,可以充分利用同一领 域应用系统在总体构造上的共性或相似性,从其软件体系结构中提取出软件构造的框 架。这个框架不解决软件中的某个局部具体问题,不涉及构件的具体细节,只描述组成 软件总体结构的主要构件以及各构件之间的关系。框架是一种基于体系结构的软件复用 技术,它定义了应用程序的骨架,并提供了用于实现的标准用户界面。框架利用一系列 的对象和它们之间的接口来对应静态和具有固定结构的端口,并能通过框架提供的界面 8 2 软件复用技术介绍 使用庄能够很容易地完成变化的剩余部分的设计而得到二坌新应用系统。框架的直接目 的是被复用,以减小建立同类型新的应用系统时的工作量。建立特定领域应用系统软件 框架时,必须考虑其适应性和可扩展性。一旦建好该领域应用系统软件的框架,应该是 只需经过必要的修改和扩充,就可以应用到相同或相似领域新的应用系统的开发过程 中。 由此可见,为了提高软件生产过程的复用力度,最好在软件开发的早期就考虑其设 计的通用性,以便将软件体系结构与设计模型作为一个整体进行复用,从而降低构造新 软件系统的代价,提高软件的可靠性,实现生产力的飞跃。 2 5 2 软件构架 软件构架是对系统整体结构设计的刻画,包括全局组织与控制结构,构件间通讯、 同步和数据访问的协议,设计元素间的功能分配,物理分布,设计元素集成,伸缩性和 性能,设计选择等。软件构架研究如何快速、可靠地从可复用构件构造系统的方式,着 重于软件系统自身的整体结构和构件间的互联。其中主要包括:软件构架原理和风格, 软件构架的描述和规约,特定领域软件构架,构件向软件构架的集成机制等。 2 5 3 领域工程 领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的过程,它 覆盖了建立可复用软件构件的所有活动。领域是指一组具有相似或相近软件需求的应用 系统所覆盖的功能区域。 领域工程包括三个主要的阶段: ( 1 ) 领域分析:这个阶段的主要目标是获得领域模型; ( 2 ) 领域设计:这个阶段的目标是获得领域构架; ( 3 ) 领域实现:这个阶段的主要行为是定义将需求翻译到由可复用构件创建的系 统的机制。这些活动的产品( 可复用的软件构件) 包括:领域模型、领域构架、领域特定 的语言、代码生成器和代码构件等。 2 5 4 软件再工程 软件复用中的一些问题是与现有系统密切相关的,如:现有软件系统如何适应当前 技术的发展及需求的变化,采用更易于理解的、适应变化的、可复用的系统软件构架并 9 湖北大学硕士论文 提炼出可复用的软件构件? 现存大量的遗产软件系统,由于技术的发展,正逐渐退出使 用,如何对这些系统进行挖掘、整理,得到有用的软件构件? 已有的软件构件随着时间 的流逝会逐渐变得不可使用,如何对它们进行维护,以延长其生命期,充分利用这些可 复用构件。软件再工程正是解决这些问题的主要技术手段。 软件再工程是一个工程过程,它将逆向工程、重构和j 下向工程组合起来,将现存系 统重新构造为新的形式【引。再工程的基础是系统理解,包括对运行系统、源代码、设计、 分析、文档等的全面理解。但在很多情况下,由于各类文档的丢失,只能对源代码进行 理解,即程序理解。 2 5 5 开放系统技术 开放系统技术的基本原则是在系统的开发中使用接口标准,同时使用符合接口标准 的实现。这些为系统开发中的设计决策,特别是对于系统的演化,提供了一个稳定的基 础,同时,也为系统( 子系统) 间的互操作提供了保证。开发系统技术具有在保持( 甚 至是提高) 系统效率的前提下降低开发成本、缩短开发周期的可能。对于稳定的接口标 准的依赖,使得开发系统更容易适应技术的进步。当前,以解决异构环境中的互操作为 目标的分布对象技术是开放系统技术中新的主流技术。开放系统技术为软件复用提供了 良好的支持。特别是分布对象技术使得符合接口标准的构件可以方便地以“即插即用 的方式组装到系统中,实现黑盒复用。这样,在符合接口标准的前提下,构件就可以独 立地进行开发,从而形成独立的构件制造业。 2 5 6 软件过程 软件过程又称软件生存周期过程,是软件生存周期内为达到一定目标而必须实施的 一系列相关过程的集合。一个良好定义的软件过程对软件开发的质量和效率有着重要影 响。当前,软件过程研究以及企业的软件过程改善已成为软件工程界的热点,并已出现 了一些实用的过程模型标准,如c m m 、i s o9 0 0 1 等。然而,基于构件复用的软件开发 过程和传统的一切从头开始的软件开发过程有着实质性的不同,探讨适应于软件复用的 软件过程自然就成为一个迫切的问题。 2 5 7c a s e 技术 随着软件工程思想的日益深入人心,以计算机辅助开发软件为目标的c a s e 技术越 1 0 2 软件复用技术介绍 来越为众垒的软件开发人员所接受,c a s e 工具和c a s e 环境徂到越来越广泛的应用。 c a s e 技术对软件工程的很多方面,例如分析、设计、代码生成、测试、版本控制和配 置管理、再工程、软件过程、项目管理等等,都可以提供有力的自动或半自动支持。c a s e 技术的应用,可以帮助软件开发人员控制软件开发中的复杂性,有利于提高软件开发的 效率和质量。软件复用同样需要c a s e 技术的支持。c a s e 技术中与软件复用相关的主要 研究内容包括:在面向复用的软件丌发中,可复用构件的抽取、描述、分类和存储;在 基于复用的软件开发中,可复用构件的检索、提取和组装;可复用构件的度量等等。 2 5 8 非技术因素 除了上述的技术因素以外,软件复用还涉及众多的非技术因素,如:机构组织如何 适应复用的需求;管理方法如何适应复用的需求;开发人员知识的更新;创造性和工 程化的关系;开发人员的心理障碍;知识产权问题;保守商业秘密的问题;复用前期投 入的经济考虑;标准化问题等等。 2 6 软件测试与测试中的复用技术 2 6 1 软件测试技术简介 2 6 1 1 软件测试 软件开发的目的是开发出实现用户需求的高质量、高性能的软件产品。软件测试是 为了发现错误而执行程序的过程,它是发现软件中错误和缺陷的主要手段,是软件质量 保证的关键步骤,也是成功实现软件开发目标的重要保障。统计表明,在典型的软件开 发项目中,软件测试工作量和成本往往占软件开发总工作量和成本的一半。 2 6 1 2 软件测试中的不确定性 软件测试是一项繁琐而复杂的工作。由于在软件测试中往往“重操作、轻管理,重 结果、轻过程,使软件测试的质量得不到保证。测试结果往往存在很多不确定性。软 件测试不确定性,主要是指由于软件测试人员的能力达不到规定的要求,软件测试的过 程失去控制,从而导致软件测试结果的重现性差,不同的测试人员对同一个软件的测试 结果经常是不同的。 2 6 1 3 解决方法 针对当前软件测试过程中存在的不确定性问题,解决的途径有两方面,一方面使软 11 湖北大学硕十论文 件测试工程化,在软件测试过程中建立模型,建立软件测试的流程,并对流程中的每个 过程规定其相应的活动,使软件的测试活动由个人的不确定活动转向软件测试的工程 化;另一方面,从软件测试的复用解决测试人员经验不足的问题,从而比较全面地解决 了软件测试的不确定性问题。 2 6 1 4 软件测试工程化 软件测试工程化的主要思想是要求建立正式的测试组织、明确测试的目标和流程、 确定测试的活动、对测试的过程和活动进行监控,从而保证软件测试的质量。 2 6 2 软件测试中的复用技术 2 6 2 1 软件测试中的可复用资源 随着软件测试项目的日益积累,会产生大量的测试资源,这些测试资源如果得到很 好的管理,在很多近似的项目进行测试的时,都可以重复利用。测试过程中存在丰富的 可复用资源,如测试策略、测试工具、测试指南、测试数据、测试结果、测试用例、测 试生成器、测试框架,测试过程信息等等。传统上,软件测试复用比较广泛的应用在同 一个测试项目的不同测试阶段和回归测试中,低层被测对象的测试用例或其部分内容常 常被复用在高层被测对象的测试中,它们包括: ( 1 ) 单元测试的功能确认类用例可以在模块集成测试阶段复用; ( 2 ) 模块确认测试的测试用例可以在单元配置组装测试和确认测试中复用; ( 3 ) 配置项确认测试的测试用例在系统综合测试和系统验收测试中的复用。事实 上,在不同的测试项目之间也存在可复用的机会按可复用测试资源的粒度划分,这些资 源可以分为以下三个方面: 测试过程的复用,就是测试流程的复用,针对具体被测项目的需求,进行剪裁, 使测试的流程规范化。 测试方法的复用,主要指测试计划的设计、测试策略的采用、测试项细则的编 写、测试记录的方式、软件缺陷的分析和测试报告的撰写等方面的复用。 测试技巧的复用,主要指测试用例的复用。测试用例的选择是发现软件问题的 关键,而测试用例的设计与测试人员对被测软件的了解以及经验的积累密切相关。如果 将大量的测试用例收集到测试用例库中,经过合理的分类,供测试人员选择使用,将极 大地提高软件问题的发现率。 1 2 2 软件复用技术介绍 m 2 面向复用的软件测试模型 这个测试模型中描述了可复用测试构件的生成过程和基于复用的测试构件生成过 程。首先,对被测软件进行分析,挖掘测试复用的机会,然后在测试构件库查找可以复 用的测试构件,复用软件测试构件库中的测试构件生成对该软件的测试方法,根据该方 法对软件进行测试,生成测试结果。最后,对一个项目的测试产生的测试资源要作为可 复用的测试构件,必须对其进行抽象,使其与被测项目的相关度降到最低,在这个模型 中对测试过程中生成的测试方法和测试结果进行抽象,产生新的可复用的构件存入测试 构件库中。 2 6 2 3 软件测试中测试用例的复用 软件测试的核心任务是生成和执行软件测试用例,以验证软件的质量。测试用例 的选择是测试工作的关键所在。一个好的软件测试包能够体现软件测试思想、技巧,同 时还保存有大量的测试数据,结果以及测试过程纪录。如果能有效地将这些资源复用, 将极大地提高软件测试的效率。 ( 1 ) 生成可复用测试用例的过程 由于软件的多样性和复杂性,测试用例的复用会有不同程度的风险。为了实现测试 用例的复用,需要有一个系统化的方法和实现策略,下面给出生成可复用测试用例的过 程。该模型中对于被测试软件经过测试层次划分、分析公共需求、测试用例设计和评审 四个阶段后,将测试用例存入测试用例库中,为以后的测试项目提供可复用的测试用例。 ( 2 ) 基于复用的测试用例生成 基于复用的测试用例生成过程,是在传统的测用例生成过程基础之上,充分利用可 复用测试用例库生成新的测试用例,提高了测试用例的生成效率,节省了测试用例的生 成时间。下图给出了基于复用的测试用例生成过程。 1 3 湖北大学硕+ 论文 图2 2 基于复用的测试用例生成过程 在图2 2 中,基于复用的测试用例生成过程经历了系统分析、提取查询信息、查询、 复用四个阶段。在系统分析阶段,分析被测系统的各种类型需求,挖掘可以复用的公 共模块。系统提取分析的查询的信息,然后在测试用例库中进行查询,最后复用查询 结果中满足要求的测试用例,对其进行适当修改以满足被测系统的要求。 2 7 软件复用的困难 软件复用各方面的困难,无论是技术问题还是非技术问题,都影响着软件复用的广 泛实行。 2 7 1 技术因素 构件与应用系统之间的差异。一些开发者开发的构件,要做到在被另一些人开发的 系统中使用时正好合适,从内容到对外接口都恰好相符,或者作很少的修改,这不是一 件简单的事;构件要达到一定的数量,才能支持有效的复用,而大量构件的获得需要有 很高的投入和长期的积累;发现合用构件的困难,当构件达到较大的数量时,使用者要 从中找到一个自己想要的构件,并断定它确实是自己需要的,不是一件轻而易举的事; 基于复用的软件开发方法和软件过程是一个新的研究实践领域,需要一些新的理论、技 术及支持环境,目前这方面的研究成果和实践经验都不够充分。 1 4 2 软1 i , :复j j 技术介绍 2 7 2 人的因素 软件开发是一种创造性工作,长期从事这个行业的人们形成了一种职业习惯:喜欢 自己创造而不喜欢使用别人的东西,特别是当要对别人开发的软件作一些修改再使用 时,常常喜欢自己另写一个。 2 7 3 管理因素 在软件生产的管理中,从以往沿习了一些与复用的目标很不协调的制度与政策,如 计算工作量时,对复用的部分打很大的折扣,甚至不算工作量;另外,不是在项目开始 时自觉地向着造就可复用构件的方向努力,而是在它完成之后,看看是否能从中找到一 些可复用构件。这些弊端妨碍了复用水平的提高和复用规模的扩大,甚至会挫伤致力于 复用的人员的积极性。 2 7 4 教育因素 在软件科学技术的教育与培训中,缺乏关于软件复用的内容,很少有这方面的专门 教材及课程,即使在其它教材及课程中提到软件复用,其篇幅及内容也相当薄弱。 2 7 5 法律因素 在法律上还存在一些问题,例如一个可复用构件在某个应用系统中出现了错误,而 构件的开发者和应用系统的开发者不是一个厂商,那么责任应该由谁负? 此外,在版权、 政府政策等方面也存在一些悬而未决的问题。 另外,物质产品的生产受到人类制造能力的限制,现有的一切物质产品的复杂性都 没有超过这种限度,软件却没有这种限制,只要人的大脑能想到的问题,都可能要求软 件去解决,人脑所能思考的问题的复杂性,远远超出了人类能制造的物质产品的复杂性, 因而使软件的复用更为困难。 1 5 湖北大学硕十论文 3 软件构件模型及规范 3 1 面向对象的软件开发与软件复用 面向对象软件开发方法对软件的重用主要体现为类库,由于采用了面向对象技术的 三大特性:封装、继承、多态,它与函数库有如下本质区别: ( 1 ) 在结构化程序设计中,数据结构是问题求解的中心环节,许多重要的函数和 过程的实现严格依赖于某些关键数据结构。如果这些关键数据结构中的一个或几个有所 改变,则这一变化可能扩散到很大的范围甚至于扩散到整个软件系统,以至于许多函数 和过程都必须重写。在面向对象程序设计中,类的封装性使得数据和操纵数据的算法( 函 数或过程) 紧密地捆绑在一起,这样就可以使得操纵数据的函数或过程的作用域和可视 性限制在软件系统的局部区域内。同时使得类的实现对类的用户隐藏起来了,增强了类 之间的独立性。 ( 2 ) 在面向对象程序设计中,由于继承和多态机制的存在,类比函数部件更容易 重用。假如同时有一个类和一个函数不能精确匹配某个重用需求,重用类比重用函数更 容易,因为对部分匹配的类来说,可能通过重用共同特征、利用多态机制覆盖不完全符 合要求的方法和增加适应特殊需求的数据项和方法达到精确匹配新需求的目标。而对于 函数就需要在源代码层上修改模块,这不但在很大程度上抵消了重用的收益,而且可能 引入新的错误。面向对象软件开发在软件重用上仍然存在一些限制,首先,它支持的软 件重用是源代码级的,某一面向对象语言的类只能用于同一语言中,不同软件开发商所 提供的对象不易交互合作,难以支持系统的集成;其次,在开发大型软件系统时,它的 粒度粗细难以有效控制。 3 2 基于组件的软件开发与软件复用 3 2 1 组件的定义及优点 组件( 又称为部件或构件) 是一种具有某种特定功能的软件模块。基于组件的软件 开发继承并发展了面向对象程序设计方法,它将对象技术应用于系统设计,对面向对象 程序设计的实现过程作了进一步抽象。结构化方法能够实现代码级重用,包括源代码和 目标代码;面向对象方法由于类库具有继承、封装、多态、重载等机制,能够通过类实 1 6 3 软什结构模型及规范 现较高层次的代码复用;而组件丌发技术支持二进制重用,侧重于组件的可插入性,它 将接口与实现分离开来,将封装运用到了极限,对外只暴露公用接口,组件的实际实现 被隐藏起来。基于组件的软件开发具有以下优点: ( 1 ) 语言的独立性。组件复用基于二进制一级的标准,与面向对象类库复用方式 相比,不受编程语言和开发环境( 编译程序) 的限制,因此复用的范围更广泛。 ( 2 ) 位置透明性。基于组件的软件开发支持分布式应用,客户不会感觉到所使用 的组件是运行在相同的进程中,还是运行在不同的进程中,甚至是位于不同的机器上使 用。 ( 3 ) 组件的可互换性。支持相同接口的不同组件可以

温馨提示

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

评论

0/150

提交评论