已阅读5页,还剩74页未读, 继续免费阅读
(计算机应用技术专业论文)一种面向对象软件变更影响分析模型的研究与设计.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
江苏大学硕士研究生毕业论文 摘要 精确分析软件变更的影响是软件工程中极富挑战性的课题。随着软件规模和 复杂性的急剧增加,面向对象技术以其在处理客观世界复杂事务、提高软件可重 用性、以及增强软件应对变更能力等方面的优秀表现,已经成为软件行业事实上 的标准。但面向对象技术并未从根本上消除精确控制软件变更的难度。因而,面 向对象软件变更影响的分析也就越来越受到人们的关注。面向对象软件变更影响 分析模型的研究,对于定量的分析面向对象软件变更的影响范围,进而更准确地 对软件过程进行控制具有重要的理论意义和实用价值。 本文详细分析和总结了面向对象软件变更的特点,提出了一种基于代码视图 的软件变更正交分解方法,其思想是将原始的软件变更分解为独立的元变更,将 原始变更对软件所造成的影响视为其元变更影响的线性和。 通过对面向对象软件系统中依赖关系特性的定性分析,文中给出了对象依赖 关系传递性存在的条件以及具体的传递性质,阐述了变更影响在软件系统中的传 播规律。在结合变更传播规律和国内外既有研究成果的基础上,提出了一种改进 的面向对象软件变更影响分析模型。模型采用多边有向伪图来描述面向对象软件 系统中各模型元素间的依赖关系,并在有向伪图的结构中引入了可递归的节点定 义( 即图的节点可以是另一个图) ,用以描述面向对象软件系统中不同粒度的代 码单元间的关系。该模型的工作机制为:通过扫描面向对象软件源代码获取不同 粒度的代码模型问依赖关系,以正交分解的元变更为输入,利用预先分析得出的 依赖敏感变更及依赖传递性规则,计算出变更对软件系统的影响范围。 为了进一步更精确的描述变更影响的程度,本文还提出了一套变更影响量度 以及两组面向变更的软件设计量度,用以对变更的具体工作量以及设计变更的质 量做出基本的评判。 最后,针对面向对象软件变更影响分析模型,进行了自动化分析工具的设计 与原型系统实现。并从实验的角度验证了变更影响分析模型的有效性。 关键词:软件工程,面向对象,软件进化,变更影响分析,对象依赖,评估模型 江苏大学硕士研究生毕业论文 a b s t r a c t i ti s a l w a y sac h a l l e n g ei nt h es o f t w a r ei n d u s t r i e st h a th o wt oh a n d l e c h a n g ee x a c t l yi nt h es o f t w a r ed e v e l o p m e n tp r o c e s s o nt h ec o n t r a r y ,w i t ht h e r a p i dd e v e l o p m e n to fi t ,a n dt h ec o n t i n u o u s l ya c c e l e r a t i n gs o f t w a r ee v o l u t i o n , t h ec h a l l e n g ei sg r o w i n g t h eo b j e c t - o r i e n t e dt e c h n o l o g y ,w h i c hi m p r o v e dt h e e f f o r to fc o n s t r u c t i n gt h e l a r g e s c a l ea n dc o m p l i c a t e ds y s t e m ,d i dn o tm e e tt h e c h a l l e n g ee s s e n t i a l l y a tt h es a m et i m e ,t h ea d d i t i o n a lc o m p l e x i t y ,i n t r o d u c e d b ya p p l y i n g0 0 ,h e i g h t e n e dt h ec h a l l e n g eo fc h a n g ei m p a c ta n a l y s i sf o ro o s o f t w a r e ( c i af o ro o ) i nr e c e n ty e a r s 。a l t h o u g has e r i e so fa c h i e v e m e n t sh a db e e nd e l i v e r e di n t h ef i e l do fc i af o r0 0 ,m o s to ft h e ma r ed r a w nj nt h ev i e wo ft h e o r ya n d m e t h o d o l o g y t h e r ei ss t i l las h o r t a g eo fs u c ham o d e l ,w h i c hc o u l db ea p p l i e d t ob u s i n e s sn o to n l y ,b u tc o u l da n a l y z et h ei m p a c te x a c t l ya sw e l l a n dt h i s r e s e a r c hi saf u r t h e rs t u d ya l o n gt h em e n t i o n e d a b o v ed i r e c t i o n b a s e do nt h ed e t a i l e da n a l y s i so fo oc h a n g e ,a no r t h o g o n a ld i s a s s e m b l y a p p r o a c hi nt h ec o d ev i e wi sp r e s e n t e d ,w h i c hs p l i t st h eo d g i n a ls o f t w a r e c h a n g ei n t os e v e r a li n d e p e n d e n tm e t a - c h a n g e s ,a n dt h ei m p a c to fo n g i n a l c h a n g ei st h el i n e a rs u mo ft h ei m p a c t so fi t sm e t a - c h a n g e s m o r e o v e r ,a i m e do nt h ea n a l y s i so ff e a t u r e so fo od e p e n d e n c i e s e s p e c i a l l yt h ed e p e n d e n c y su n i v e r s a it r a n s i t i v i t yw h i c hb ec o n s i d e r e da sa d e f a u l ti a wi nt h ec u r r e n ta c a d e m i e s ,am o r eq u a l i t a t i v ea n a l y s i si sm a d e 。a n d t h ec o n d i t i o n so fd e p e n d e n c y s t r a n s i t i v i t y a r ed e f i n e d ,w h i c h u l t i m a t e l y d e s c r i b e st h el a wo fc h a n g ep r o p a g a t i o ni ns o f t w a r e a n dt h e n ,a ni m p r o v e d m o d e lo fc i af o ro oi s d e v e l o p e d ,i nw h i c had i r e c t e d ,m u l t i e d g e s p s e u d o g r a p hm o d e li s u s e dt od e s c r i b e t h e d e p e n d e n c i e sa m o n gt h e s o f t w a r es o u r c ec o d eu n i t s i nt h es t r u c t u r e ,i ti n t r o d u c e sar e c u r s i v ev e r t e x d e f i n i t i o n ,w h i c hm e a n sav e r t e xc o u l db eag r a p h ,t oi n d i c a t et h er e l a t i o n s h i p s a m o n gt h e0 0c o d eu n i t si nd i f f e r e n tg r a n u l a r i t i e s b yt r a v e r s i n gt h es o u r c e c o d eo fo os o f t w a r e ,a l it h er e l a t i o n s h i p sa r er e t r i e v e da n ds t o r e di n t ot h e m o d e l t h em o d e lt a k e st h em e t a c h a n g e sa si n p u t ,a n dc a l c u l a t e st h es e to f i m p a c t e du n i t s ,a c c o r d i n gt ot h er u l e so fp r e - d e f i n e dd e p e n d e n c y ss e n s i t i v e c h a n g ea n di t st r a n s i t i v i t y 江苏大学硕士研究生毕业论文 o nt h eo t h e rs i d e ,as e to fc h a n g ee f f o r tm e t r i c s ,u s e dt oq u a n t i f yt h e e x a c te f f o r ti n t r o d u c e db yc h a n g e ,a n das e to fc h a n g e - o r i e n t e dd e s i g n m e t r i c s ,u s e dt oe v a l u a t et h ed e s i g n ,a r ep r e s e n t e de v e n t u a l l y a na u t o m a t e dt o o io fc i af o ro oi sf i n a l l yd e s i g n e di nc o n c e p t ,a n da p r o t o t y p es y s t e mi si m p l e m e n t e da c c o r d i n g l y b ya p p l y i n gi tt oar e a l - w o r l d p r o j e c t ,t h em o d e i sd e m o n s t r a t e d k e yw o r d s :s o , w a r ee n g i n e e r i n g ,o b j e c t - o r i e n t e d ,o b j e c td e p e n d e n c y , c h a n g ei m p a c t a n a l y s i s ,s o f t w a r ee v a l u a t i o n 江苏大学硕士研究生毕业论文 图目录 图2 1 基本图分类1 2 图年1 两种不同的传递策略2 4 图4 2 设计模型到实现模型的n :m 对应关系2 5 图4 3 关联的u m l 模型:2 6 图4 - 4 类组合图一2 7 图4 5 继承的u m l 模型2 8 图年6 嵌套类的u m l 模型2 9 图4 - 7 多类关联2 9 图4 8 动态依赖关系图3 1 图5 1 变更传播和依赖的方向3 4 图5 2 类依赖图3 5 图5 3 嵌套类声明的代码示例3 6 图5 4 类依赖图中的嵌套类3 6 图5 5 嵌套类使用的代码示例3 6 图5 6 类依赖图的变更传播生成树算法4 0 图5 7 类依赖图的环判定算法。4 1 图6 1j r d 体系结构图。4 8 图6 2j r d 信息提取层主体结构图4 8 图6 3j r d 信息提取层可扩展框架5 0 图6 4j r d 信息提取层字节码分析模块结构图5 1 图6 5 核心模型元素关系图5 2 图6 6j a v a 模型元素关系图5 3 图6 7j a v a 依赖关系图一5 3 图6 8 类依赖图框架主体结构图5 4 图6 9 变更模型图5 6 江苏大学硕士研究生毕业论文 图6 10 变更影响分析核心结构图5 7 图6 - 1 1j r d 以图形化方式展现的变更影响结果5 8 图6 1 2j r d 中的各种量度分析值5 9 江苏大学硕士研究生论文 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文 的规定,同意学校保留并向国家有关部门或机构送交论文的 复印件和电子版,允许论文被查阅和借阅。本人授权江苏大 学可以将本学位论文的全部内容或部分内容编入有关数据 库进行检索,可以采用影印、缩印或扫描等复制手段保存和 汇编本学位论文。 保密口,在年解密后适用本授权书。 本学位论文属于 不保密团。 学位论文作者签名:夕3 志家指导教师签名:扫物 少口,7 年,z 月 曰 阴7 年,明,尹日 江苏大学硕士研究生论文 独创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指 导下,独立进行研究工作所取得的成果。除文中已注明引用 的内容以外,本论文不包含任何其他个人或集体已经发表或 撰写过的作品成果。对本文的研究做出重要贡献的个人和集 体,均已在文中以明确方式标明。本人完全意识到本声明的 法律结果由本人承担。 学位论文作者签名:夕- j 忌幺 日期:劬矿1 年弘月h 日 1 1 江苏大学硕士研究生毕业论文 1 1 研究背景 第一章绪论 软件开发过程中如何正确地处理软件需求的变更,一直是软件行业面临的巨 大挑战。一方面,软件开发过程中若不能实现关键需求无疑会直接影响产品本身 的价值【1 】;而另一方面,若接受太多的变更又将导致软件产品的交付延期团。软 件工程领域的大师、图灵奖得主f r e db r o o k s 3 在谈到软件变化时曾引用了“唯 一不变的是变化”,并说:“( 软件) 项目在启动时建立的( 需求) 基准,肯定 会随着开发的进行而变得越来越高,甚至开发不出任何产品。”围绕着如何正确 处理软件需求及其变更的问题,甚至引发了一门新学科的出现需求工程嗍。 所以,合理地管理软件产品的需求一直是软件产品成功发布的关键【5 l 。而要对软 件开发项目进行切实有效的管理,则需要将一些能支持变更信息的方法引入软件 开发的过程控制。这些变更信息包括诸如变更是如何影响开发进度的,或者哪些 变更将对产品造成最大程度的影响等。有了这些变更信息,项目管理过程就能确 定是立即响应变更还是推迟响应,进而对开发计划做出做出相应的调整。获得上 述这类变更信息的方法,就是变更影响分析。 近年来,随着软件规模和复杂性的急剧增加,面向对象技术,以其在处理客 观世界复杂事务和提高软件可重用能力方面的优秀表现,已经成为软件行业事实 上的标准。面向对象技术无疑对提高软件应对变更的能力是有极大帮助的,通过 继承、封装和多态等特性,可以较好的降低软件模块间的耦合、提高软件系统的 灵活性和健壮性。在应用面向对象技术获得了前所未有的灵活性之后,软件行业 甚至提出了“拥抱变化” 8 1 的口号。 然而,面向对象技术也不是“银弹”。它在提高系统处理复杂事务能力的同 时也增加了系统本身的复杂性,各种用以分割耦合和封装变化的抽象层及动态绑 定方法使得程序的逻辑结构较之其原本要描述的客观事务更为复杂。也就是说, 面向对象技术虽然在一定程度上提高了软件应对变更的能力,但引入面向对象技 术本身所增加的系统复杂性又使得软件系统更难以理解。而随即出现的问题便 是:既然面向对象技术并未完全解决软件可变更性的问题,那么面向对象技术遗 留下来的变更问题该如何处理,面向对象引入的变更叉该如何处理? 于是,如何处理面向对象软件的变更影响分析成为了变更影响分析领域的研 究热点。 江苏大学硕士研究生毕业论文 1 2 研究现状 变更影响分析( c h a n g ei m p a c ta n a l y s i s ,简称c i a ) ,也称影响分析,就 是确定引入软件变更对目标系统所引起的各种潜在影响1 7 一。影响分析可用在对 变更规划、变更决策、处理具体类型的软件变更、以及跟踪变更的潜在影响等工 作中。影响分析能在变更真正实现之前就清晰的认识到变更可能造成的各种潜在 影响。这使得软件项目的变更管理更简单、更精确。 目前,国内外对于变更影响分析自动化的研究主要集中在如下几个方面: 1 依赖分析方法:对软件系统源代码进行依赖分析、进而创建形式化的展 现数据、控制、以及组件依赖1 9 】。编程语言的形式化定义提供了大量的结构来容 纳数据的定义和使用信息以及控制流信息。当软件发生变更时,软件开发人员通 常能够借助影响分析工具使用这类信息,以建立关于哪些声明、模块以及数据元 素将被影响的准确认识,进而做出合理的决策。 2 追踪方法:在不同类型的软件工件间建立追踪模型,例如需求和设计模 型间的信息,用以追踪软件变更的影响【1 0 1 。这类研究中大都是基于软件开发环 境和文档系统的追踪性的。追踪性关系通常都用图结构来表现,该图能检索超文 本系统。这些论文描述了如何从不同类型的系统工件中判定影响。近些年来知识 库技术的不断发展也使得这项技术得到了长足发展。 3 影响展现:变更影响能够以多种形式表现出来,从简单的标注程序中的 声明语句到复杂的程序维护规则。有效的分析需要对软件变更以及软件生命期中 不同对象间关系的深入理解是大有帮助的。这是- i - j 诠释变更和自动化支持的学 科,描述了软件对象间依赖的各种模型,这些模型中有形式化模型,也有定性的 模型。 4 影响判定技术:一种引入变更时自动化判定什么被影响的算法和方法。 这些技术在今天的影响分析工具中经常用到。影响判定技术帮助软件开发人员使 用依赖的形式化模型来处理变更影响。其中包括传递闭包、启发式搜索、以及基 于逻辑推导、类比推理、数据流分析和程序切片【”- 12 】的技术。 5 统计模型预测分析:通过对软件系统既往变更及影响的分析,预测未来 可能发生的变更【13 】及其影响【1 4 1 。 6 基于不同开发技术的变更影响:针对当前业界流行的几种不同开发技术 而衍生出相应技术下的特殊的变更影响分析,如面向方面编程( a o p ) 的变更影响 分析【1 5 1 ,基于组件( c o m p o n e n t b a s e d ) 编程的变更影响分析【1 6 】等。 国外对于面向对象变更影响分析的研究也开始较早,而上述的各项技术也均 可应用于面向对象的变更影响分析中。然而其中多是针对单项技术或手工解决方 2 江苏大学硕士研究生毕业论文 案的讨论,第一个真正系统化提出面向对象软件变更影响分析自动化解决方案的 是m i c h e l l el l e e 于19 9 8 年在他的博士论文1 1 刀中提出的以扫描源代码分析依赖 关系为基础的自动分析软件方案。该方案为后来同类课题的研究打下了坚实的基 础,甚至商业领域的很多软件变更管理软件在变更影响分析实现中也沿袭了该方 案中的很多方法和理论。 通常进行源代码分析时多是采用依赖图模型进行的,而运用程序依赖图来进 行程序分析的方法最早是由o t t e n s t e i n 在1 9 8 4 年提出的【1 8 1 。程序依赖图使用两 种类型的有向边控制依赖和数据依赖来表现过程型程序节点间的依赖 关系。控制依赖是从程序控制结构中提取出来的运行时序逻辑关系;而数据依赖 则是从数据声明中提取出来的数据使用关系。 使用这种程序依赖图可以很好的描述过程化程序中的程序逻辑,但对于面向 对象型的软件系统中以对象基础的程序逻辑,传统的程序依赖图就显得力不从心 了。毕竟,面向对象技术的封装和多态等特性已经从根本上改变了传统的过程化 编程范型的思维方式。当然也一直有人使用基于控制依赖和数据依赖的程序依赖 图来分析面向对象软件的程序逻辑【1 7 ,1 9 , 2 0 1 ,但这种做法中对于面向对象中因多 态技术而产生的间接依赖关系的处理结果总是差强人意【2 1 1 。 w a l k i n s h a w 提出了一个j a v a 系统依赖图( j s y s d g ) 1 2 2 】,该模型调整了传 统的依赖图使之能表现j a v a 系统的程序构造。基于该模型他们还开发了一种通 过用例场景提取方法调用信息的方法【z 3 】。d a v i d 也基于该模型提出了一套自动分 析程序信息的方法i z l l 。但以上均是基于控制依赖和数据依赖的依赖图模型进行 程序分析的方法,这种基于控制流和信息流的方法脱胎于传统的过程化程序开发 范型,虽然经过部分的改造和调整,但用它来描述面向对象程序在一定程度上仍 然有不完全兼容的情形存在。 1 3 研究内容 本课题的研究内容主要是在依赖模型和依赖关系传递性的判定上对面向对 象软件变更影响分析自动化分析模型的改进,其主要技术路线以及研究内容包括 以下几个方面: 1 面向对象程序依赖模型的改进。 当前对面向对象程序进行变更依赖分析的研究中,使用的基本都是以简单图 为基础模型的数据依赖及控制依赖图模型。这种模型在分析面向对象程序逻辑时 往往存在描述能力与目标逻辑不完全兼容的情形。本课题从面向对象技术出发, 提出了一套面向对象的程序依赖模型- 类依赖图模型,用以作为变更分析的基 础模型。该模型是一种递归的有向伪图模型,将顶点的逻辑模型抽象为对象,这 3 江苏大学硕士研究生毕业论文 个对象可以是传统图模型中的顶点,也可以是一个完整的有向伪图的抽象模型, 用这种抽象的多层次递归模型来表示面向对象程序中不同粒度的程序逻辑单元 ( 类、成员、方法) ;而模型中的边则是各项点间的依赖关系。不仅如此,类依 赖图模型还合并了控制依赖和数据依赖的逻辑模型,而代以具有更高抽象级别的 “使用”依赖。用这种递归的对象模型,从基础的程序开发思想层面与面向对象 软件开发范型相兼容。针对该模型还给出了两个关键算法的设计与实现。 2 研究面向对象程序中依赖关系的性质,尤其是依赖传递性的研究。 对面向对象程序中各种依赖关系进行定性讨论,重点讨论其传递性。传统的 面向对象影响分析研究中大多假定依赖均是可传递的,但实际情况并非如此。本 文认为依赖是与特定变更相关联的,并且不同的依赖关系针对不同的变更有不同 的传递特性。通过对面向对象技术中的常见依赖逐一讨论其敏感变更及传递特 性,并给出了两种不同的依赖判定策略。 3 面向对象软件的变更。 结合本文提出的依赖模型进行变更影响分析时,需要一种最小粒度的变更为 输入以适应模型的分析机制。本文在对面向对象软件变更进行不同层面的分类的 基础上,提出一种基于代码视图的面向对象软件变更正交分解方法,将原始变更 分解为依赖分析模型输入所需的元变更。原始变更的影响结果即为分解后所有元 变更影响结果的线性和。 4 原型系统的设计与实现。 结合本文研究内容,给出一个完整的面向对象软件变更影响分析工具的主体 设计以及原型实现。并将该原型系统应用于一个实际工程项目中,通过软件分析 结果与实际工程历史数据结果的对比,验证本课题研究内容的正确性。 影响分析中最为普遍的用途是确定变更发生后所产生的连锁反应【2 4 】。本文 通过讨论变更的分解、依赖的传递、变更的传播等影响分析中的主要环节中的客 观规律,通过应用自动化分析算法给出了面向对象软件系统中变更影响分析的完 整解决方案。这一解决方案是通过对面向对象软件组件关系的深入分析,并应用 软件算法技术来计算软件逻辑单元间特定关系的传递闭包来实现的。除了对连锁 反应( 即变更影响) 的深入分析,本课题还有助于评估变更的规模,对比不同的 变更方案,确定面向对象系统中对象间关系是如何影响变更传播的,同时还帮助 对引入的变更所产生的影响进行建模和度量。 1 4 结构组织 根据研究的主要内容,本文结构上做如下安排: 4 江苏大学硕士研究生毕业论文 第一章介绍课题的研究背景和研究意义,概述了变更影响分析在软件项目 中的重要意义,列举并对比了学术界和工业领域中对软件变更影响分析的主要方 法,分析了其中的不足,最终引入本文的研究目的和方向,以及主要研究内容。 第二章简要介绍了需求变更与软件项目的关系、变更产生原因与影响、需 求变更的控制、影响评估等相关知识,从软件变更的角度讨论了面向对象技术的 优缺点,最后简单介绍了变更影响分析中常用的程序依赖图模型的相关知识。 第三章通过从不同层面对面向对象软件变更进行分类,详细讨论了变更的 基本特性。提出了一种基于代码视图的变更正交分解方法,将原始的软件变更分 解为可作为本课题影响分析模型输入的元变更;对变更进行建模,给出了元变更 的数学模型;并定义了一种简单易行的评估变更工作量的基本度量。 第四章明确给出了依赖是软件逻辑单元间变更敏感的语义连接的定义,并 将之作为全文讨论变更传播的基础;详细分析了依赖在代码阶段的性质和分类; 提出了两种不同的依赖判定策略,着重分析了不同阶段依赖关系的传递性;最后 讨论了面向对象软件中因多态和动态绑定而出现的动态依赖关系及其判定。 第五章基于变更是沿着特定依赖链传播的思路,指出变更影响的蔓延实质 是变更在依赖链上的传递;提出了一种基于类依赖图的变更影响分析模型,并给 出了用以分析变更影响范围的算法设计与实现;结合类依赖图方法,从变更影响 范围和变更影响程度两个方面深入讨论了面向对象软件系统的变更影响分析,并 给出了一套用以评估变更影响程度的简单量度;最后,在传统面向对象设计量度 的基础上,提出了两组面向变更的设计量度,用以评估面向对象系统可变更性。 第六章基于本文所提出的变更影响分析模型,给出了一个面向对象软件变 更影响自动化分析工具j a v ar i p p l ed e t e c t o r 的主要设计与原型系统实现。并将 其应用于一个实际的软件工程项目中,从实验的验证了本文所提出的模型和方法 的正确性。 第七章对全文进行总结,并指出下一步研究需要开展的工作。 5 江苏大学硕士研究生毕业论文 第二章变更影响分析 本章主要介绍一些和本课题研究相关的背景知识,其中包括:需求变更与软 件项目的关系、变更产生原因与影响,面向对象技术与变更的相互关系,面向对 象软件的变更影响分析以及本文所用到的关于程序依赖图模型( p s e u d o - g r a p h ) 的相关知识。 2 1 需求变更 国内外对需求开发及相关问题有较多的研究 2 5 - 2 7 ,而对需求变更的研究则相 对较少。作为需求管理的一个极其重要组成部分,需求变更对整个软件项目的进 度、成本等方面产生了巨大的影响。本节从需求变更与软件项目关系,需求变更 的原因、影响和需求变更控制、影响评估等方面进行介绍。 2 1 1 需求变更与软件项目成败 美国专门从事跟踪i t 项目成功或失败的权威机构s t a n d i s hg r o u p 在它每年 的c h a o sr e p o r t 2 8 - - 侵告中给出了i t 项目相关调查数据结果。根据2 0 0 3 年 s t a n d i s hg r o u p 对当年美国项目的统计数字,在被调查的1 3 5 万个项目中,绝 对成功的项目比例大大低于5 0 ,仅为3 4 。彻底失败的项目为1 5 。受到质 疑的项目占所有i t 项目的5 1 。通过对s t a n d i s hg r o u p 自1 9 9 4 年以来发布的 一系列项目调查数据进行了汇总,可以看到三个现象: 5 1 项目的成功率在提高、失败率在下降。这显示出随着时间的推移,被调 查企业项目管理能力在上升。例如从19 9 4 年和2 0 0 4 年的数据看,取消项目的 比例从3 1 下降到2 3 :超期项目从18 9 下降到4 5 :超预算项目从2 2 2 下 降到6 3 。 2 从总体上看,目前项目的成功率仍低至3 4 。 3 有疑问项目的比例保持基本不变,而且占了被调查项目总数的一半左右。 另外,从历年的s t a n d i s hg r o u p 报告分析看,导致项目失败的最重要原因 与需求有关,其中提到最多的导致项目失败的原因就是“变更用户需求。该报 告进一步证实了与成功项目最密切的因素是良好的需求管理,也就是项目的范围 管理,特别是管理好项目的变更。 b c u r t i s 的研究也表明需求变更是软件开发中的三个重要问题之一【2 9 j ,这些 数据也进一步引证了r o b e r tg l a s s 在其著作 中的评述: 6 江苏大学硕士研究生毕业论文 “需求无疑是在软件项目前期造成麻烦的一个最大原因,大量实际证明,项目失 败时,需求问题常常是其中的核心问题 f 3 0 】。 2 1 2 需求变更指导思想 需求变更是软件产业面临的难题,也是无法回避的问题。需求变更给软件带 来的影响程度与应用系统的规模成正比。现在缺乏的是将需求变更对软件产生的 各方面影响的处理方式,以及那些能将相关问题的风险降低到最低的方法、工具 和途径,因此如果缺乏有效的处理机制来应对软件项目中的需求变更问题,那么 许多软件项目开发者难以对成本、进度等方面进行控制。随着人们对需求变更研 究的不断深入,其指导思想也发生了变化。 最初,需求变更被看作影响软件开发的消极因素,人们期望在需求开发阶段 借助各种需求获取方法、有效沟通技巧、强大的计算机辅助工具等获取准确、详 尽的软件需求。通常认为只要需求开发阶段的工作详尽,需求就可以被全部的获 取,需求变更的出现就往往被当作需求开发工作的失败,因此,在这一时期,软 件开发者往往在开发工作展开之前,将需求“冻结 。这样做法虽然能从一定程 度上避免随意需求变更对软件开发工作产生的影响,但是却无法适应快速变化的 实际需要,引发了软件开发者与客户之间矛盾,降低了市场竞争力,这种指导思 想的缺陷包括: ( 1 ) 将所有的需求变更都被视为妨碍软件开发的消极因素,势必会对那些有 利的需求变更视而不见,如功能增强,缺陷修正等,往往导致有积极影响的需求 变更被忽略。 ( 2 ) 采用需求“冻结”方法,这种暂时处理的方法所付出的代价可能会超过 其它的处理方法,当重新实施需求变更时,软件产品大部分工作已经完成,付出 的代价往往比提出“冻结 时高出许多。 实际表明,需求“冻结”方法也不是应对需求变更明智的做法,软件开发者 需要重新对需求变更的审视,采取更加积极主动的态度来应对这一在实践中无法 避免的难题。目前一种较有效的做法是在软件项目中设立变更控制委员会 ( c c b ) ,由c c b 对各种变更进行统一的处理,而且也只有c c b 对需求变更有 权处理。c c b 的工作是审核所提交的每个需求变更,分析需求变更所带来的影 响和相应的风险,依据有关章程对变更进行决策,将需求变更纳入到软件开发过 程中。 7 江苏大擘硕士研究生毕业论文 2 1 3 需求变更的原因 在整个软件生命周期中,需求变更是无法回避的,而且部分需求是必要的、 台理的,需求发生变更的原因主要有以下几方面: 需求开发中的固有难题 如果能够通过需求开发获取完整、无歧义、一致的需求,则在软件开发各个 过程中将软件人员、技术、方法等进行有机的融合,就能按照客户的要求如期、 顺利地提交软件产品。 然而实际的情况却并非如此,在软件项目生命周期中,需求变更始终存在。 究其原因,一方面是软件需求开发由软件工程师来完成,通常不是领域专家, 让他们理解应用领域的全部细节比较困难,与用户交流的不通畅。另一方面,现 有需求分析方法并不能捕获到所有完整的、准确的、一致的需求,形式化方法是 基于数学的规格说明语言,虽然能准确定义软件需求,在早期发现需求中隐含的 不一致性、不完整性,但是很抽象,通常很难被用户和软件开发所人员所领悟和 掌握。 ( 2 ) 随着软件项目的进展用户对需求有了更加清晰、深入的认识,需要对 前期提出的需求进行必要的变更处理。 ( 3 ) 新技术层出不穷,使得在开发软件过程中不断采用更加新颖、方便、 实用的技术,方便开发人员工作的同时,在客观上也促成了需求变更的可能。 ( 4 ) 业务发生了变化,最初的需求已经不能够适应实际的业务需要。进行 需求变更来保持软件的应用价值。 ( 5 ) 一部分软件项目人员往往对建议的软件变更成本或其他衍生结果不能 提供准确的评估。“变更是免费的”这种误解是造成变更在软件项目范围中蔓延 一个重要原因,人们往往只有知道需求变更带来的影响才能做出理智的选择。 ( 6 ) 信息技术发展迅猛,软件项目的市场竞争也日趋激烈,软件项目人员 往往考虑开发进度、利润率、市场占有率等重要因素而对前期的需求开发工作被 压缩,没有对需求工作做得很细,需求管理过程也缺乏严格保证,导致后期的需 球变更频频繁发生,会产生恶性循环。 2 1 4 需求变更的影响 需求变更控制仅是需求工程中一个组成部分,然而需求变更在软件开发过程 中所产生的影响却是远远超过了它所处的位置,究其原因可从以下几个方面来解 释: 8 江苏大学硕士研究生毕业论文 ( 1 ) 一般来讲,提出需求变更的动机是好的,都莽望软件产品更加符合用 户的需求或业务变化。但是对项目开发人员而言,需求变更对整个软件项目意味 着风险,需求变更很可能造成软件开发人员已完成工作的部分废除甚至是全部推 倒重来,因此从资金、进度、人员、时间上产生难以预测的风险。 ( 2 ) 普遍存在的需求之间依赖关系使得需求变更容易引发“影响蔓延”, 同时需求所处的状态与影响程度有着很大的关系,因而需要对需求变更作出快 速、准确的影响评估、控制等。把需求变更控制在一定范围很有必要,否则开发 小组为此付出较大的代价,更有甚者,因此失去对相当复杂的大型软件项目控制。 ( 3 ) 如果不能较好地评估需求变更带来潜在的影响,势必引发软件项目组 成员与客户之间的矛盾,影响到两者的协作关系,为软件项目的前景蒙上阴影。 2 。2 面向对象技术 面向对象技术自出现至今,经过2 0 多年的发展,已经取得了历史上任何一 种程序设计方法从未取得的成功。而当下,它仍然在继续发展着。 面向对象技术是以封装、继承和多态几个核心概念为基础构建起来的。 2 2 1 封装性 面向对象软件的一个重要特征就是封装性,把数据和对数据操作的方法封装 在一起形成类。且类的封装限制了对象属性对外的透明性和外界对它的操作权 限,这在一定程度上避免了不合理的操作并能有效地防止错误的扩散,从而改善 和提高了软件的可靠性。 封装是一种信息隐蔽技术。用户只能见到对象封装界面上的信息,对象内部 对用户是隐蔽的。其目的在于将对象的使用者和设计者分开,使用者不必了解对 象行为的具体实现,只需用设计者提供的消息来访问对象。 封装应具备如下几个条件: 具有一个清楚的边界,对象私有数据、内部程序( 成员函数) 细节都被 限定在这个边界内。 具有一个接口,这个接口描述了对象之间可以进行的相互作用、请求和 响应,即消息。 对象内部的实现细节受封装壳保护,其他对象不能直接修改对象所拥有 的数据和代码。 9 江苏大学硕士研究生毕业论文 2 2 2 继承性 继承是面向对象描述类之间相似性的一个重要机制。在现实世界中大量的实 体都仔在一定程度的相似性。这种相似性可能表现在实体的外形上,也可能表现 巧f 树内行为和内在特性上。人们总是希望能够最大程度地利用这种相似性,不 仅在管理系统的类的时候,在定义新的类的时候也希望通过利用这种相似性来简 化丁作,并重用以前的工作。面向对象利用继承来表达这种相似性,这使得可以 利用继承来管理类,同时也使得在定义一个与先前已经定义的类相似的类时能简 化类的定义工作。 继承也刻画了类的一般性和特殊性,被继承的类可称为父类或超类,继承的 类可称为子类。可以看出,继承这种机制使得类的描述具有了层次结构,处于同 一层次结构中的类共享顶层类所定义的属性和操作。因此继承机制使类从一开始 就具有j ,继承和被继承的能力。简而言之,就是具有了重用和被重用的能力。 2 2 3 多态性和动态绑定 影态性是指对象的某个行为具有多种形态的特性。行为的多种形态封装在对 象内部,外界并不知道。一个行为的多种形态从外界看来具有相同的行为名称( 也 l :! j i 棚州的消息名) ,因此外界看到的只是一种行为。具体应该执行那种形态由对 象自己根据接收到的相关参数决定。 2 2 4 面向对象与变更 促使面向对象成功的一个最大的因素就是面向对象技术在方法论上解决了 j 坩软件系统根本复杂性的主要方面变化的问题。在面向对象分析和设 计领域里有大量的原则是出于对变更的适应性要求而提出的。 面向对象对于变更的解决方案,可以归结为一句话“封装变化。即将 - 可能变化的内容单独封装起来,以避免变更的非受控型扩散。 下面列决了常见的11 种面向对象设计原则【3 1 】: s r p 单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。 o c p 开闭原则:软件实体( 类、模块、函数等) 应该对扩展开放,对修改 判闭, l s pl i s k o v 替换原则:子类型必须能够替换他们的基类型。 d i p 依赖倒置原n - 抽象不应依赖于具象;而具象应依赖于抽象。 i s p 接口隔离原则:不应该强迫客户依赖于他们不用的方法。接口属于客 户,不属于它所在的类层次接口。 1 0 江苏大学硕士研究生毕业论文 r e p 重用发布等价原则:重用的粒度就是发布的粒度。 c c p 共同封闭原则:包中的所有类对于同一类性质的变化应该是共同封闭 的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其 他的包不造成任何影响。 c r p 共同重用原则:一个包中的所有类应该是共同重用的。如果重用了包 中的一个类,那么就要重用包中的所有类。 a d p 无环依赖原则:在包的依赖关系图中不允许存在环。 s d p 稳定依赖原则;朝着稳定的方向进行依赖。 s a p 稳定抽象原则:包的抽象抽度应该和其稳定程度一致。 仅从这11 个原则的文字解释中可以发现:直接与变更或依赖相关的就有6 个( s r p 、o c p 、d i p 、l s p 、a d p 、s d p ) ,而剩余的5 个原则也几乎都是延 伸以适应变更或改善依赖的,由此可见面向对象技术对变更适应性的重视程度。 基于这些面向对象的设计原则,业界在长期工业实践过程中归纳和总结出了 一批基于特定问题域及其上下文语境的通用解决方案,这就是现在广为人知的设 计模式。设计模式在本质上是通过增强系统设计对变更的适应性来提高软件的可 重用性。模式在软件设计领域倍受推崇,因为它是一种成功应用面向对象设计原 则的既定解决方案,在相关问题域的应用较之抽象的设计原则更易于使用。 经实践证明,在面向对象设计阶段中,正确的贯彻面向对象设计原则或应用 设计模式,将会大副改善设计模型间的依赖关系,增强设计方案对变更的适应性, 最终提高其可重用性f 锄。 o o 的优势 分析复杂问题域的能力 良好的系统功能扩展能力 封装原则建议将不同类型的变更源封装起来,确保变更发生时不会产生 不受控的传播。 o o 的缺点 尽管面向对象技术有很多优点,但其在业界多年应用的结果仍反映出面向对 象技术并不能一定确保软件的质量,防止程序开发人员出现错误,也不能阻止程 序中出现错误。由于面向对象软件的复杂性,给面向对象的变更影响分析带来了 团难。对于面向对象软件系统,单个类的成员和方法的理解都相对容易,但集成 之后,尤其是在程序结构中加入了大量应对现实问题的设计模式之后,其结构上 以及逻辑上的语义和关系就会变得相当复杂,这给大型面向对象软件系统的变更 影响分析带来了极大的困难。 江苏犬学硕士研究生毕业论文 面向对象软件倾向于大幅增加类间关系的复杂性,但明确理解这些关系颇具 挑战性。类间的这种复杂关系使面向对象软件系统难以对变更所引起的连锁反应 进行准确的预测和识别删。类的实例有自己的状态和行为。数据依赖、控制依 赖、以及状态行为依赖都使它很难定义出一个经济测试和维护策略。狭义的看, 面向对象软件可以在结构和状态行为上复用,也就是说,类的数据成员,方法成 员以及状态依赖行为能被另一个类使用。在系统中类之间可以有数据依赖、控制 依赖和状态行为依赖。多态和动态绑定意味着对象引用将会指向不同类型的对 象,并且该类型是知道运行时才能明确下来的。 面向对象技术中类之间的复杂逻辑关系几乎是与生俱来的,但面向对象技术 虽然发展了近3 0 年,从本质上仍然缺乏一种严谨的科学理论支
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 放假调休协议书
- aptx协议书有几种
- 项目立项协议书
- 2025设备委托研发标准版合同
- 英朗导航 原车协议书
- 家居样板间协议书
- 意向性融资协议书
- 2025租赁合同生效条件
- 《2025年版股权质押贷款合同模板》
- 2025年顺丰快递快递员合同履行违约责任协议
- 事业编护士考试题库及答案
- 2025年中小学教师高级职称专业水平能力测试复习题库及答案
- 广东省餐饮食安员考试题库及答案
- 教科版科学三年级上册2.2 水珠从哪里来课件
- 化工前沿技术进展
- 2025年4月自考高级财务会计(000159)试卷及答案解释完整版
- 2025年教师职称-天津-天津教师职称(基础知识、综合素质、高中语文)历年参考题库含答案解析(5套)
- 2025年呼吸与睡眠医学考试试题及答案
- 2025年吉林省事业单位招聘考试公共基础知识考试试题库及答案详解
- 配件维修方案(3篇)
- 建筑工程竣工验收检查表模板大全
评论
0/150
提交评论