面向对象软件变更影响分析工具的研究及实现(可编辑)_第1页
面向对象软件变更影响分析工具的研究及实现(可编辑)_第2页
面向对象软件变更影响分析工具的研究及实现(可编辑)_第3页
面向对象软件变更影响分析工具的研究及实现(可编辑)_第4页
面向对象软件变更影响分析工具的研究及实现(可编辑)_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、 合肥工业大学硕士学位论文面向对象软件变更影响分析工具的研究及实现姓名:杨明申请学位级别:硕士专业:计算机软件与理论指导教师:李心科20090301面向对象软件变更影响分析王具的研究及实现摘要在软件开发豹整个生禽溺嬲墨,软件变更是不可避免的。懿西应对不断出现的燮更是人们一直关注的一个热点问题。由于分析、设计鞠实现阶段的侧重点各有不同,变更邀现的原嚣和表现形式也不尽穗藏。本文对这三个阶段出现豹变更进行了分祈研究,并重点研究了如何分析、追踪代码的变更。本文鲍主要工作包括:总结了面向对象软件歼发的需求分析阶段和设计阶段的变慝影响处理方法,提出了编码阶段酶变更影瞧处理方法。类成员依赖关系可分为类内依赖

2、和类间依赖,本文重点分析了继承依赖、关联依赖和多态依赖三种类间成员依赖关系的建立过程。提出了基于类成员依赖关系翦变更影响分析算法。算法的总体思路是:先扫播代羁,建立类或类成员之间的依赖关系;再确定变更影响源和变更类型;最后根据变更影响源、变更类型和依赖关系确定变更影响的范围。其体包括:类成员依赖关系算法、变更影响源和变更类型识别算法、变更影响追踪算法。提出了一个面向对象软件代码变更影响分析原型,并以此为基础实现了一个变更影响分辑工具。试验表鞠此工具是畜效麴,置对变更影螭对象酶追踪是毙较准确的。关键词:面向对象变更管理变更影响分析变更影响追踪一. . .,.:,. ,.:, ,.: , . ?,

3、 . , .:?, , ,。论文插图清单图.变更控制和变更请求流.图.三层体系结构图图关联依赖的例图图.多态依赖的例图图变更影响分析器原型图图.变更影响分析流程图?图.安徽省科学技术奖励网上申报评审管理系统主页面图.业务逻辑层的部分源码图.数据库连接层的部分源码?图实验结果截图论文表格清单表.可追踪性信息的类型?。表?可追踪性表?。表.可追踪性列表?.表原子变更分类表.独创性声明本久声甓所呈交的学位论文是本入在导师指导下进行觞研究工捺及取得的研究成暴。据我所知,除了文中特别加以标志和致谢的地方外,论文中不包含其他人已经发表或撰或其他教育机构的学位或证书瓶写过的研究成果,邀不包含为获得.金篷兰些

4、太堂使用过的材料。与我一同作的同志对本研究所傲的任何贡献均己在论文中作了明确的说明并表示谢意。 学位论文作者签字:铂蚪签字日期:夕年印月/厂园学位论文版权使用授权书本学位论文作者宪全了解 有关保留、使用学位论文的规定,有权佥筵王些态堂保留并向国家有关部门或机构送交论文的复印锌和磁盘,允许论文被查阅或借阅。本人授权 可以将学位论文的全部或部分论文内容编入有关数据库进行检佥旦墨王些盔堂索,可数采溺影印、缩印或扫描等复翎手段保存、汇编学位论文。保密的学位论文在解密质适用本授权书导师签名:学位论文者签名:孑矧签字眺如哆年乒月旷日签字聃:年月咖学位论文作者毕业后去向:工作单位:通讯地址:致谢首先在此特别

5、感谢我的导师李心科副教授,本论文从选题、研究到写作的整个过程都是在李老师的悉心指导和帮助下才得以圆满完成的。李老师知识丰富、治学严谨、平易近人,对学生要求严格,对论文质量严格把关。在李老师三年来的悉心指导之下,我在软件工程方向无论是在理论上还是在实践中都收获良多。在此,谨向敬爱的李老师致以崇高的敬意和衷心的感谢。感谢合肥工业大学研究生院和计算机与信息学院里的各位领导和老师,谢谢你们在这三年中对我的关心和教导。同时,也非常感谢各位同学对我的支持、关心和帮助。最后,感谢我的家人在这三年里对我的鼓励、支持和关爱。作者:杨明年月第一章绪论重。董弓言世纪年代,结构化程序设计几乎完全统治了第二次计算机浪潮

6、后的软件开发豹黄金时代。结构化编程给入粥集中于创造性思考翡同时,也带给程序员们松散凌乱的代码和难寻其宗的复杂流獠。软件变更对程序员来说往往需要付出极大的代价。直到面趣对象技术的出现,使得入们终于可以从尽可能自然的角度计算这个世界。然焉,随着软件开发技术的不断发展,软佟所能搐述的问题越来越多,范围越来越广,变更亦越来越频繁。可见,软件变更并没有随着软谗开发技术的发震两逐渐减少。究其原因,是因为软件开发所面对的问题域从不同的角度看会呈现不同的侧越,这是事物所固有的属性。然丽,人们对藤题的认识常常受限于各个方垂,不可能一下予就看到闯题豹全部。褥加上系统本来豹复杂性,使得各种阏题交叉在一起,软件出现变

7、更也就在所难免了。在软件开发的过程中,往往一次小小豹变动,就会零起整个软件系统熬轩然大波。在交菱出现之蜃再虻予应付危局已经晚了。那么,我们如何面对这些变更呢实践证明,对变更置之不理或祈望通过某种方式“冻结变更都是不切实际的。在没有工具辅助的情况下,仪靠程序员人为地应对变更,那是场灾难。然磁,紧盯糟代码,一味对细节刨根问底地追寻,只会使人迷失方向。必须从细节中瓣脱出来,对变蔓进行全面、有效的管理和控制。然丽,要想对软件开发全过程进行全方位的综合治理不是一件容易的事情。匿囱对象软件开发过程大致可以分为嚣个阶段:需求分析、设计、编码、测试,而软件变更可能出现在各个阶段中,且各个阶段出现变更的原因及应

8、对变更的办法各有不感。随着软件开发方法学的发展,对变更影响的处理方法也在不断翡发震之中。重。变更影响分板磷究现状在不同的时期,入们对变更影响的研究侧重点有所不同。有通过对控制流的追踪从函数层来分析变更影响的传播范围?;有通过对矩阵进行运算从构件层对需求变更影嗡的进行分析瞎】;有依据对变更嚣分类姨语言酶语法特点来圈定变更影响的范围【】等等。下面就从面向过程和面向对象这两个不同时期来总结一下人锏对变更影确辩题的分桥方法。.面向过程的变更影响分析在以面淘过程为主要开发方法的畦裁,人霰就已经注意到了变更影嚷薛润题。年,文献】提出了种关于模型的变更影响分析技术,主要观点是使用数据流图来鉴别受影响鲍定义。

9、使用毪对和予路径。文献【提滋了种控制流图分析方法,以此来鉴别模型中受影响的控制路径。此后,.。.和.提出了一种防火墙技术,防火墙的作用是将程序变更所受影响的模块与其他模块分割开来】瓦引。防火墙内的模块可以是与变更模块交互的模块,也可以是变更模块的直接祖先或子孙。文献】利用一种程序切片技术定义了一个选择重测的集会,对每一个测试用例毫,采用不同的重测技术创建不同的切片。并把切片技术分为四种不同的类型:执行切片、动态切片、相关切片和近似相关切片。利用这四种切片技术中的任何一种,为测试用例创建切片,如果包含一个交受的状态,那么就选择测试用倒菱测。年,文献【 提出了基于状态模型的切片技术,其研究侧重于系

10、统测试,利用形式化语言基于模型测试来测试软件系统,利用模型进行依赖性分析,得出的测试组件可以减少回归测试用例。.。面向对象软件的变更影响分析随着面向对象语言的快速发展,人们对变更影响问题又有了新的认识。文献【】将变更影响分析技术运用于面向对象的环境中,所提出的类依赖图、程序依赖图分别表示数据依赖和控制依赖。这里强调当一个类发生变化,通过图确定类与类之间的继承、多态、动态绑定和封装等关系。年,文献将以前震予过程语言软件中的防火墙概念扩展到了面向对象的软件中。该方法把变更后的类或对象以及与它们交互的类或对象圈到防火墙内。依据类之间和对象之间的不网关系,分别构造了类放火墙和对象防火墙。文献【】提出了

11、一种类层次上的变更影响分析方法。该方法基于类防火墙,使用成员函数作为测试单元,处理与各种面向对象特征相关的变更影响。采用了成员依赖图来描述类中成员的依赖关系,进面对变更影响做出分析。文献【】提出了一种基于控制依赖图变更影响追踪方法,它可以追踪各相关元素的调用控制,并生成不阕的程序控制路径。这种方法可以用来预测变更秘筛选回归测试的测试用例。文献提出了一种软件需求变化追踪方法,分别从基于需求信息传播与建横、需求变化信崽传播路径和需求变纯信息跟踪方法三个层面,阐述了软件变化跟踪的整体过程框架。通过构建各种变化跟踪矩阵和可达矩阵,并对这些矩阵进行运算,给爨了实旄变化所付懑代价高低的初步判定方法。文献【

12、】通过对原子变更的定义和对面向对象各种语法特点的分析,针对语言实现了一个变更影响的追踪工具。最后,利用此工具对回归测试的测试用饲进行了筛选。总之,研究者们从不同的侧面对变更类型进行了分类,对变更影响的追踪、控制进行了分析研究。本文立足于面向对象软件开发的整个过程,系统地分析了各个阶段对变更的管理、追踪方法,并在代码层次上实现了对代码变更影响的分析跟踪。.本文的主要研究内容及意义本文的主要工作包括四个部分,首先介绍了面向对象的一些基本概念和面蠢对象软件酶特点,分析了霹向对象软件的特点对测试产生的影响,讨论了瑟向对象软件的需求变更管理和追踪方法,并定义了变更影响分析相关基本概念。然后,分别从类内和

13、类间两个层次,对变更影响的传播机制进行了分析,提出了类内变更向外传播的充要条件。接着,基于类成员图提出了变更影响的分析算法。最后,提出了一个面向对象软件变更影响分析模型,并结合群语言实现之。其具体的研究工作阐述如下:阐述了面向对象软件在需求、设计、编码阶段的变更处理方法。分析了需求变曼的原因,介绍了一种有效进行变更管理的五步过程启发式和追踪需求变更的方法。分别阐述了分层思想和设计模式所能应对的变更类型和处理变更的方法。提出了一种编码阶段处理变更的方法。分柝了类成员之闻依赖关系,给出了基于类成员依赖关系的交更影响分析算法。根据不同类型的类成员依赖关系,分析了相应的依赖关系建立过程。在此基础上,进

14、一步提出了确定类成员依赖关系的算法、变更影响源和变更类型识别算法、变更影响追踪算法。构造了一个面向对象软件变更影响分析模型,并结合撵语言的特点,实现了一个变更影响分析工具。本文的研究意义:分析清楚了编码阶段的变更影响、较准确地追踪到了变有影响的对象,就打遥了需求分析的变更影响追踪和测试用铡的筛选的关键环节,为最终评估需求变更的代价和回归测试的成本铺平了道路。保存软件的每次变更影响分析结果,可以为软件演化提供支持。.论文的组织结构本文从面向对象软件开发的整个过程出发,分析了各个阶段对软俸变更的处理方法,并着重研究了编码阶段的变更影响分析技术。第一章绪论介绍了面向对象软件的基本概念,讨论了国内终对

15、变更影响的研究成栗,分析了论文的研究意义。.第二章面向对象软件的变受影响分析介绍了面向对象软件的基本概念和特点,以及面向对象软件在需求、设计、编码阶段的变更处理方法。第三章基于类成员依赖关系的变更影响分析算法分析了类成员之间的依赖关系,提出了基于类成员依赖关系的变更影响分析算法。算法总的来说分为王步。第一步,季叠攒代码,建立类或类成员之间的依赖关系。第二步,确定变更类型和变更影响源。第三部,根据变更影响源、变更类型和依赖关系确定变更影响的范围。第圜章面向对象软件变更影晌分析原垄系统构造了一个面向对象软件代码变更影响分析原型,并以此为基础实现了一个变更影响分析工具。通过把该工具应用于“安徽省科学

16、技术奖励网上申报评审管理系统,证明该工具是有效的,对变更影响的追踪是比较准确的。第五章总结与展望总结了本文的研究内容,并对未来的工作进行了展望。第二章面向对象软件的变更影响分析传统的计算机编程方法将数据和过程分离开,但是许多分析员发现,这种分离是不自然的。一个现实世赛中的对象,无论是天然的还是人造的,都有特性类似于数据和行为类似于过程,这二者是结合在一起的。从这个角度看,在计算机编程中也将数据和过程结合起来似乎是符合逻辑的。这种方法就是西向对象软件开发方法。廉于面向对象软件具有封装、继承、多态等良好的特性,面向对象的软件开发方法得以迅速普及。.面向对象的基本概念面向对象系统利用抽象来降低软件的

17、复杂度,抽象让人们从细节中解脱出来。蔼向对象系统把过程抽象与数据抽象结合在一起。在早期的程序设计中,软件是围绕着过程有些语境称之为函数或例程概念组织的。当使用某个过程时,程序员无需关心过程内部执行计算的细节,瑟只需知道怎么样调用该过程以及该过程完成什么样的计算即可。在所谓过程式范型中,整个系统由一组过程组成。一个主过程调用若干其他过程,这些过程再调用其他过程。当程序敕主要目的是使用相对简单的数据完成计算时,过程式范型的效果菲常好。但是,如果许多不同的过程需要操作各自类型的数据,或是每个过程都需要操作多种类型的数据,使用过程式范型编写的系统就交褥毒鎏常复杂了。数据抽象有助于降低系统的复杂性。记录

18、和结构是引入的第一级数据抽象。从年代后期开始,程序员看到了围绕数据抽象组织程序的优点。如果把所有访问与修改某对象类的过程都集中在一个地方,而不是让这些过程散步在整个系统中,就会使系统简单得多。这种思想是面向对象范型的根源,到了年代,它邑经被认为是组织大多数系统的最佳方法了。面向对象范型是一种解决问题的方法,其中所有的计算都是针对对象进行的。对象是通常被称为类的程序设计结构的实例。类是一种数据抽象,它包含着作用于对象上的过程抽象。在面向对象范型中,运行中的程序可以看成是一组对象相互协作,共同完成指定的任务。对象是在运季亍静软件系统中的一缀结构化数据。它可以描述任何可以将属性和行为关联起来的事物。

19、属性是对象的特征,描述对象的当前状态。行为是对象动作与反应的方式,它有可能改变对象的状态。类是面向对象程序中数据抽象的单元。特别是,类是一个软件模块,它描述并定义了一组相似的对象。所有具有相同属性与行为的对象是同一个类的实例。作为软件模块,类包含了与它的对象相关的所有代码,包括:描述类的对象如何组织的代码,即每个对象内部实现属性的数据。过程,也称为方法,它稍实现对象的行为。变量是可以存放数据的地方。每个类声明了一个变量列表,其中的变量对应予出现在每个实例中的数据,这样的变量称作实铡变量。属性是用来表示对象特征的简单的数据项。关联表示一个类的实例与其他实例的关系。实例变量可用于实现属性或用于实现

20、关联。变量与对象是完全不同的实体。在任意时刻,变量可以指向一个特定的对象,也可以根本不指向任何对象。指向对象的变量称为引用。在程序执行过程中,一个给定的变量可以指向不同的对象,或者说,一个对象可以同时被若于不同的变量引用。类所具有的变量称为属性。面向对象程序中的“方法”一词与其他程序中的过程、函数或例程相对应。方法是实现类的行为的过程抽象。操作是更高层的过程抽象,它用于描述和确定一种类型的行为,并独立于任何实现该行为的代码。不同的类可以有同名豹方法以各自的方式实现抽象操作。之所以使用“方法”一词,是因为在英文中它的含义是“执行一个操作的方式”。操作有时被称为方法,虽然严格来说,方法被限定为操作

21、的实现,并且不包括操作的特征。一个操佟的特征提供了名字、参数和返圈类型。操彳乍在某种意义上是特征加上方法,其中,方法是代码部分,它描述达成操作期望的行为所需要的逻辑。如果运行中的程序在每次调焉操作时都要确定究竟调用哪一个同名方法,就说该操作是多态的。多态是面向对象范型的一个基本特征。.谣南对象软件的特征面向对象语言有以下特征:标识。标识对象唯一性的符号。类。程序员能够将代码组织成类,每个类描述一组对象的结构与功能。继承。这种机制能将这些类构造成继承层次结构,子类可以从超类继承特征。多态。通过这种机制,与类相关的几个方法可以同名并实现同一个抽象操作。这就是最终的动态绑定机制,即允许程序在执行的过

22、程中决定调用哪个方法。抽象。建立一个抽象意味着建立对某个事物的简化表示,可以使用这种简纯表示来代替原有的事物。抽象有助子处理复杂性。面向对象程序中有许多抽象内容,如:对象、类、超类等。模块化。面向对象系统可以完全蔫一系列类来构造,每个类负责特定的功能子集与特定数据类型相关联的功能,而不是将这些功能散步于系统的许多部件之中。封装。类就像一个容器,其中包含着它的特征变量和方法,它还定义了接口,使得只有一部分特征对外部可见。这就产生了信息隐藏。使用类的程序员不需要了解类的所有细节。德佛只需知道该类的用户可以访问的特征。这简化了整个系统,因为设计者和程序员需要了解的细节比使用其他方法少得多。.封装性封

23、装性就是将对象内部的属性或方法封装在自己的对象内部,在对象内部可以被使用或访问,但在对象的外部或者其它对象里不能使用封装的成员。一般认为对数据和过程的隐藏就是封装。把数据和对数据操作的方法封装在一起形成类。且类的封装限制了对象属性对外的透明性和辨赛对它的操作权限,这在一定程度上避免了不合理的操作并能有效地防止错误的扩散,从而改善和提高了软件的可靠性。封装是一种信息隐蔽技术。用户只能见到对象封装界面上的信息,对象内部对用户是隐蔽的。其目的在于将对象的使用者与设计者分开,使用者不必了解对象行为的具体实现,只需用设计者提供的消息来访闯该对象。封装应该具有如下几个条件:具有一个清楚的边界,对象私有数据

24、、内部程序成员函数豫节都被限定在这个边界内。具有一个接髓,这个接口描述对象和其它对象之间的相互作用、请求和响应,即消息。对象内部的实现细节受边界保护,其它对象不能直接修改对象所拥有的数据和代码。另一方面,面向对象软件系统运行时由一组协调工作的对象组成,对象具有一定的状态,测试应涉及对象的初态、输入、输出、对象的终态,信息隐蔽机制给对象状态的观察、测试用例的生成、测试点的选取等带来了障碍,测试者往往要添加一些表明对象内部状态的函数。因此,信息隐蔽和封装加大了测试瀚难度。.。继承性在面向对象的程序中,继承性是一种概括对象共性和组织结构的机制,使得面向对象设计更具自然性和直观性,是一种有效的重用手段

25、。继承是予类对超类特征的隐式占有。壶于继系的作焉,一个丞数可麓被越装在多个类幸,子类不但具有父类中的特征数据与方法,还可以对其进行重定义。在面向对象系统中,良好的类层次结构有助于提高软件的可重用性。但多,一个子类有多个父类时和重复继承重继承,类层次图中一个子类能通过多条路径继承同一父类的特征虽然使软件的共享程度有所增加,德也显著增加了予类的复杂性,并且会导致一些从功能角度很难发现的隐含错误。总之,继承性使测试更加复杂。继承是逝向对象描述类之间相似性的一个重要机制。在现实世界中大量的实体都存在一定程度的相似性。这种相似性可能表现在实体的外形上,也可能表现在实体的行为和内在特性上。人们总是希望能够

26、最大程度地利用种种相似性,不仅在管理系统的类的时候,在定义新熬类的时候也希望透过利用这种相似性来简化工作,并重用以前的工作。面向对象利用继承来表达这种相似性,这使得可以剥用继承来管理类,同时也使褥在定义一个与先前已经定义的类相似的类时能简化类的定义工作。继承也刻画了类的一般性和特殊性,被继承的类可称为父类或超类,继承的类可称为子类。可以看出,继承这种机制使得类的接述具有了层次结构,处于同一层次结构中的类共享顶层类所定义的属性和操作。因此继承机制使类从一开始就具有了继承和被继承的能力,简丽言之,就是具有了重月和被重用的能力。与继承相对应的是泛化这一概念。泛化是一个一般的事物称为超类或父类和一种更

27、特殊的该类事物称为予类或孩子之闻的关系。泛化一般用“是一种或“是一类规则来验证。当一个子类多于一个类继承时,泛化关系会导致多继承。.多态性多态性是指对象的某个行为具有多种形态的特性。或者说,囝一消息可以根据发送消息对象的不同采用多种不同的行为方式,就是多态的概念。运行时系统能量动必给定消息选择合适的实现代码,这给程序员提供了很多好处,如:柔性代码、便于问题抽象等。它的突出优点是使程序具有良好的扩展性。行为的多种形态封装在对象内部,外界并不知道。一个行为的多种形态从外界看来具有相同的行为名称也繇相同的消息名,因此外界看到的只是一种行为。其体应该执行哪种形态由对象自己根据接收到消息里的相关参数决定

28、。僵多态性和动态绑定所带来麴不确定性,使褥传统测试实践中静静态分析方法遇到了很大的障碍。而且它们也增加了系统运行中的执行路经,加大了测试用例的选取难度和数量。多态性可以靠动态绑定技术实现。当试图调用变量的操作时,程序“即时地”决定运行哪个方法,这个决定做出的过程称为动态绑定,或晚绑定。可以假定动态绑定是按照以下过程完成豹:程序查看实际存储在变量中的对象的类,如果该类含有操作的具体方法,则程序运行这个方法。否则,它在直接超类中查看是否有方法存在。如果有,则运行这个方法。程序重复第步,在相继的高层超类中查找,鱼到找到一个具体方法,并运行它为止。如果没有找到方法,则产生一个错误。.关联性关联是类的实

29、例或对象之间的一种关系,它可以是同一个类的对象之闻酶一种关系。尽管关联是在对象酶层次上被认知静,但抽象表示将它显示势类之间的个链接。当一个对象通过对另个对象的引用去使用另一个对象的服务戴操侔对,两个对象之阕便产生了关联。关联的一种更强的形式是聚合,也被称为整体.部分关系。在聚合中,没有部分整体就没有意义,但是没有整体时,部分可能存在,也可能不存在。例如汽车与轮胎麴关系就是聚合关系。一种更强的聚合情况被称为组合。在组合中,没有部分时整体就没有意义,没有整体时部分也没有意义。铡魏久巍入鲢心脏就是缀合关系。.两向对象软件需求分析阶段的变更处理需求分析是面向对象软髂开发最早开始熬一个阶段,其毯的是定义

30、清楚所要解决的问题。因此这一阶段与问题域邻接最紧,在这一阶段出现的变更也最复杂。.需求变更的原因需求发生变更酶原因是多方匿的,有属于开发过程可激攘裁的范黧之肉熬内部原因,也有超出需求相关者所能控制的范围的外部原因。需求变更可能的外部骚霸包攒:首先,外部原因可能使闷题本身发生了变化。饪何软件系统的开发和部署都是有目的的,即期望它能解决软件加强型系统中的某个或某些问题。如果解决煞闻题发生了交傀,也就是系统熬雾的发生了变化,当然需求提供者的期鋈也必然发生变化。问题的变化可能是由于社会经济情况发生了变化,也可能是出于玻惑规章发生了变化,还霹能惠予市场情况和客户壤好发生了交纯,等等。其次,需求提供者的意

31、图可能发生了变化。即关于待开发系统要做什么,需求提供者改变了原来的想法。发生这种情况,可能是因为需求本身就是需求提供者的想法,丽想法总是易变的,也可能燕嚣隽箍稍的观念会随着社会经济情况、政府规章、或者市场情况等的改变而改变。同时,随着对系统意图的变能,霹畿涉及戆需求穗关者也发生了变能,嚣来的需求提供者不褥是现在的需求相关者。而原来不属于需求相关者范围的人进入了需求相关者的行列,前一组人和羼一组人很可能有截然不嘲的想法。第三,外部环境的变化绘待开发系统带来了新酶约束或新的视会。比如,环境变化的一个最明显的例子就是硬件或软件系统的升级。如果以后的计算机比如量子计算祝要远远超越现在计算视的计算筏力,

32、很多现在不能实现的算法或许就变得容易实现,因此对什么是可满足的需求就有另外的说法。第四,在当蓠系统的周圈鲞现了新的系统。因为弓入一个新系统,会弓起对当前系统本身的需求发生变化,这是因为于新系统的引入引起了组织行为的变化,旧的工作方式已经不再适合,出现对新的信息类型的需要,因此对系统的新的需求不可避免地会出现。当然,除了这些外部因素导致的需求变化之外,还有很多一些变化来源予系统开发小组内部和系统开发过程之中。比如,在初始需求采集的过程中,没有在正确的时间找到正确的人问正确的问题,因而导致需求描述本身禽有这样那样的问题。例如,需求抽取时没有囊括所有的需求相关者,提的问题不全或者不正确,等等。这些问

33、题都可以归结为没有理解关于系统的真正需求。要避免这种情况引起的需求变化,需要有一个合理的需求理解过程。又如,没有采取有效的过程来帮助管理不断增加的需求变化。铡如,曾经试图“冻结摊需求,即不允许改,从而使得需求变化越积越多,直到给需求工程师和需求提供者带来无法避免的需求崩溃的压力,导致返工。即使一切都没有问题,设计的时候也会弓入新的需求,从而带来需求的必要的变化。这对软件开发系统来说是好的变化。避免这种变化的发生可能会丧失设计过程中由设计决策或技术变化带来昀创新能力。.需求变更管理及追踪实际项舀实施中一般有两种常用的方法来管理变更。第一种方法包含一些变更管理的基本原则和策略,实施过程中则主要基于

34、需求工程师在需求管理中的经验。第二种方法提供一定的手段来帮助需求工程师实施变更的管理。关于变更管理,中给出了有效进行变更管理的过程启发式,主要包括如下个步骤:步骤:认识到特定需求的改变是不可避免的,为这个改变制定计划。当改变需求的请求出现时,需求工程师必须首先站在改变是不可避免而且是必要的这个立场上来认识这个改变,并置割定褶应的汁划来准备管理这个改变。关于改变的合理性问题,也要首先承认任何来囱需求相关者的现实和潜在需要都是合理的,除毒有明显和充分的否定理由。步骤:为需求文档制定基线。在需求文档的每次迭代周期中,都要为需求文档建立基线,也就是说,固化需求文档的版本,然后利用需求文档版本控制手段去

35、管理需求文档的发布及需求文档中需求条款的增加、删除和更新等。建立需求文档的基线,使得更容易识别和管理新需求,对新需求的请求可以与现有的基线版本进行琵较,从蒸找到新需求的位置,以及它可能弓起冲突的地方,这样可以更好地帮助需求工程师判断目前是否可以接受这个变更。这样,可以使变更管理以一种有序、有效和及时响应的方式进行,让需求提供者更愿意合作。当然,能够有序有效地进行需求改变并不意味着我们可以随意地接受任何的交曼请求。对饪俺项霹来说,需求赫变更数超过了一定盼限度,都会导致当前系统开发的失败。步骤:建立单一的渠遭来控制需求舱变位。任簿对鬟求变更的请求都通过网一个渠道提交,经过两样的影响分析,并统一做出

36、是否采纳这个变化的决定。在任何情况下,系统需求的变更都要等到这个变更被变更管理机制确定为“富方静的才起馋震。步骤:使用变更控制系统来捕捉变蔓。在某种意义上,外部的和客户请隶的变更更容易获褥,因为这种变傀毙较容易判别,黑顼墨警理或变更控铡麓方法也比较好找到这些变更将影响的地方。僵在软件开发过程中,变更的类型是多种多样的,有与需求相关的,也有针对代码和设计方案的,很难制定统一的标准来判断哪些变更需要考虑,哪些变更必绥忽略。步骤曾指密褥一个通道来接纳变更将能更好地支持变更的管理,为了管理和捕获这些变更,在这个通道上设置了一个交受控制系统来识捌、评佶翻决定最终需要采纳的变曼,将是一种有效途径。图.示意

37、了这个变更控制系统的作用。被批图变更控制和变更请求流变更控剿系统的功能包括:评吉变更对系统开发酶开销积系统功麓性静影响;分析变更对客户和其他外部需求相关者的影响;研究变更对破坏系统的稳定性的可能。步骤:层次讹遮管理变更。没经过分挺和管理麴变更可靛会带寒阏题,因为如果需求是相互关联的话,需求的变更会引起连锁反应。层次化地管理需求变更,批臻变曼也需要扶最底层的需求变更开始,将这些变更带来戆对上一层的需求的影响结合到上一层的需求变化一起进行分析和影响评估,直到所有的变更都考虑到。下面介绍的需求追踪链可以用来支持这种层次的变更管理。必须说明的是,需求翡变更开销是很大,焉且开发越往前走,变更的开锩越大。

38、因而在实际项目管理中,对每个变更请求都需要慎重对待,必须从技术可行性、对其他部分的影响以及开销上进行综合考虑。另外,变更管理涉及需要跟踪大量跨越较长时闻段的相互联系的信息,没有工具的支持,变更管理可能很难成功。这就需要对需求进行跟踪。让需求之闻、需求和设计之闯具有可追踪关系有两个方面的含义:第一,开发过程中的两个或多个制晶之间能够建立某种程度上的关系,特别是前件.后件关系、主.从关系等,从褥发现制品变更的影响;第二,可以建立软件制品中各个元素与其存在理由之闻的关系。其中,第一方面定义是关于项目元素的后续关系,第二方面定义希望保证没有多余的项誉元素存在。为了将这些元素关联起来,必须零入第三个元素

39、,用于将上述两个元素关联起来,这个元素就是可追踪关系,也就是说,可追踪关系是两个元素之闻的关系。值得声唆的是,这里元素鲍说法比较笼统,它可以是软件开发过程中的中间制品,也可以是这些中间制品中的一部分或者一个条目。关系也有不同的类型,如由?满足、是?部分、从?导出等。这些关系隐含了一种依赖关系,这个依赖关系说明一个元素的变更可能会影响另一个元素。这种项霹元素之间的依赖关系有缀多种,表.绘出了常见的六种。表.可追踪性信息的类型可追踪性类型 描述需求.源可追踪性 把需求和说明需求入或文档链接起来,记录需求源需求.理由可追踪性把需求和为骨么说骥该需求的描述链接起来,记录需求理由需求.需求可追踪性 把需

40、求和其他要依赖于该需求的需求链接起来,记录需求之间的依赖关系需求.体系结构可追踪 把需求和实现该需求的子系统链接起来,这对子性系统由不同的开发奎组开发来说特别重要需求.设计可追踪性 把需求和用来实现该需求的系统中的特定组件链接起来,这些组件可熊是软件或者硬牛组件,对于关键系统来说维护这种类型的信息特别重要需求.界面可追踪性 把需求和用于提供该需求的外部系统界面链接起来,应该维护对其他系统有很高依赖性的信息鼙前有三种基本的技术,可以用予维护可追踪性信息,它们是可追踪性表、可追踪性列表和自动化可追踪性链接。可追踪性是一个顼量元素前后参照的矩阵,表中的条基表示在行项基和列项目之间的某种可追踪性的链接

41、。可追踪性表格显示了需求之间或者需求和设计组件之间的关系,需求在水平和垂直轴上列如,需求之间的关系标在表格的单元中。例如,如栗行所代表的需求依赖予到、和所代表的需求,则应该在表的,和,单元格上标记记号。这样顺着一列读,可以看到依赖于这一列所代表的需求的所有需求,顺着一行读,可以看翻这一行所代表的需求依赖的所有需求。表.显示了一个简单的含六个需求的系统的可追踪性表格的例子。表。可追踪性表幸 臻幸 幸臻 毒木可追踪性列表是可追踪性表的简化形式,对每个需求描述来说,维护一个或多个相关霈求的标示符的捌表。表.给出了表示表.中的依赖性的哥追踪性列表。表可追踪性列表需求 依赖, 自动化可追踪性链接指相应的

42、数据库来包含可追踪性信息,可追踪性链接在数据库记录中作为一个字段。这样可以管理大量的需求之闻的依赖关系,并可以利用数据库系统来维护和操作这样的需求依赖关系库,如快速查询、提取相关的需求和需求依赖关系,自动生成可追踪性表和列表等。.面向对象软件设计阶段的变更处理如果说需求分析是与决定需要做什么相关的,那么设计就是与如何实现穗关。在软件设计阶段的变更主要包括:软件运行环境的变更、开发工具的变更、要勰决的闻题的变更。这一阶段应对变受的焦度有两种,即:利焉分层思想在体系结构上隔离、封装变更;利用设计模式对某一领域的具体问题进行设计。下西分别论述之。.分层体系结构在一个分层或层次体系结构中,系统被分为层

43、,这样每个层执行特定的一种功能并通过接口与和它邻接的层通信。给定的一个层只需要关心它自己的实现,其他层的接口保证了它们的功能。常见的层次体系结构有:两层系统结构、三层体系结构和层体系结构。两层体系结构,或客户一一服务器系统结构,包括两个层:应用层也称前端和数据层也称后端。应用层有一个图形纯用户界面和应用逻辑,它篇本地驱动程序或支持数据访问的中间件和一个数据库通信。数据库安装在服务器上,而且是被共享的。但是,应用程序需要被单独安装在客户机上。这秭体系结构对简单应用程序是足够的,但是对复杂的应用程序,有以下问题:客户端厚重。对应用程序的任何修改都需要在各个客户端重掰安装。两层应蔫程序通常用专有的技

44、术实现,丽专有的技术不能缀好的集成。两层体系结构只适合比较稳定的系统,不适合经常变化的系统。三层体系结构把两层体系结构的应用层细分为表示层和业务规则层。表示层处理用户界面,表示层可以用各种程序设计语言开发,如、等。业务规则层不仅包含业务逻辑,还包含与一端的表示层和另一端的数据库层交互的类和构件。褥这些类和构俘可以采用一种非专有的标准,毙如基于/的体系结构。在三层体系结构中,一些嵌入在存储过程中的逻辑可以被转移到中闻层并仍被共享,丽且可以用一种菲专有的语言编写,以便最小化对一种特定技术的依赖。三层体系结构具体以下优点:该体系结构是松散耦含的。可以对一个层进行修改,只要接口结构不变,变更就应该引起

45、对系统中其它层的最少修改。该体系结构导致的不仅是数据的复用,而且是业务规则的复用。处理负载遍布在多个计算机上,因此,系统更加可伸缩。三层体系结构可以很好的应对软件环境的变更、舞发工具的变曼和数据库的变更。下图所示的应用三层体系结构就可以很好的处理这些变更。代码数据库图三层体系结构图这里的表现层、业务逻辑层和数据连接层最终都会用代码表示。每层都是独立的,只要不改变接口,对某一层的改变不会影响到其他层。例如这里的表现层就可以用、.组合或、的组合来实现,所要改变的只是表现层,而不会改变业务逻辑层,从而可以很好的应对开发工具的变更。如果把数据库调整为数据库,那么,只要改变数据连接层,而不用改变业务逻辑

46、层。如果所要解决的问题很复杂,本身就需要分层隔离变化,那么,可以把三层的原理扩展到一种更松散耦合的层体系结构的应用中。这在现在更适宜,因为浏览器通常是第一层,而这个薄层的广泛的可获得性能够提供在任何时候从任何地点对一个系统的访问。一般而言,更多的层将提供一种更可伸缩的应用并最小化修改系统的一部分的所产生的涟漪效应。.设计模式应对变更的处理方法设计模式是在年代,由 等人,从建筑设计领域引入到计算机科学里去的。是对软件设计中普遍存在的各种问题所提的解决方案。设计模式并不是直接用来完成代码编写的,而是描述在各种不同情况下,解决问题的一种方案。模式是在特定上下文中遇到的一般性问题的可重用解决方案的概要

47、。设计的许多部分在许多不同的系统或子系统中重复出现,只是有些小的改动,设计的这些熏现方面称为设计模式。表述一个软件设计模式的格式各有不同,常用的描述模式的格式大致包含竣下部分;模式名:每一个模式都有自融的名字,模式的名字使得我们可以方便地讨论设计。阊题:解释耍克服主要困难的两旬话。上下文:模式应用的般环境。约束;解决阍题对要考虑豹关系或影响。其中毽括评嵇好熬解决方案熬标准。解决方案:在给定上下文串,建议使髑的解决溺题豹方法。解决方案被豫海“平衡约束拜。换旬话说,解决方案具有良好的优势组合,同时很少有缺点。别名:一个模式可以有超过一个以上的名称。动撬;一个模式应该应震在哪些场合下的描述。参与者:

48、一个模式用到的类溅物件的清单和它们在设计中扮演的角色。合作:攒述一个模式里类与物释阉鹣互动。相关模式:与本模式相似的解决方案。它们可能表示变异、扩展或特殊情况。反模式:在此上下文孛很差或根本不起作蔫的模式。纛该解释它被拒绝鼗原因。反模式在其他关联环境中可能是有效的解决方案,也可能是永远无效的。驽的模式应该尽可麓通耀,包含那些已经被证黉夔够有效察决指定上下文中问题的解决方案。模式必须用易于理解的方式来描述,这样人们能够确定在什么时候使用以及如何使用它。模式通常应该用麓单的图来描述,并且使用叙述性的文字来书写。研究模式就是学习稳入经验昀一种有效途径。设计模式主要思想是:使不稳定依赖于相对稳定、具体

49、依赖予相对抽鼠,避免紧藕合,以增强较彳孛设计应对变更熬能力。设计模式处理变更的基本方法是:哪里有变化就在哪里隔离、封装变化。.面向对象软襻编码除段的交受处理编码是对设计的实现。由于设计阶段已经对可能出现的变更进行了封装、隔离,所瑷,对编码阶段出现的变更愁理主要集中在变更影嗡夔追踪上。这也是本文的重点。这里先介绍一些基本概念和分析变更影响的基本方法,详细内容在爱藉的章节再介绍。.变熙影响的基本概念及意义影响是一个事物对另一事物懿效果或者痍迹,影响可以被看作是一个变更结果。影响分析是用来确定变更范围,它是制定进度计划和成本估算一个基础。软件变更影响分析是评估如果做了一个指定的变更,此变更将在软件中

50、产生什么样影嫡。软搏交更影响分橱瞧就是评徐一个变更黯系统箕德部箨熬影璃过程。它能确定变更的范围和复杂性。对变更在系统中产生影响进行定量和定性分析是变更影响分橱涉及熬主要滤客。变蔓影响的概念提掇了很多年,值没有形成一个统一的定义。关于变更影响分析有多种定义:“评估涉及变燮的多种风险,包括资源,成本和进度。、“评价一个攮凌孛添栈蕊蕊交更霹系统中另一个摸块翁影璃,它麓确定交嚣蕊范围和提供变更复杂性的度量。、“鉴别一个变更潜在的逻辑关系,或者评砉一个变更完成蘑还有哪些嚣要变更。辨,毽馔都强谰薄影确的浮癸。变更对系统带来的影响结采是多种的,它们可以分类成逻辑影响和执行影响。变更影响分析也能用来鉴别程序代

51、码的质量。如果一个过程或这个类巾毒大量戆丞数被系统麓英毽大部分雩瘸,毽虢是谖系统萁毽鹩缀多部分依赖予它,那么它的变更就很可能影响到与它相关所有其他部分。这从一个层面反应了模块之闻煞褒仑毪霰强,代羁震量并不好。变更影响分析的结果能用来做变疆计划,变更执行,确定软件变更类型,跟踪变更产生浆影嚷。在变更执行翦,那些受到闻接影响的变更部分,使鼐燮更执行惹来会更精确些。这样一束,秃论是在较襻开发阶段或者燕软件维护酚段,都能圈定变更影响的范豳。.原予变更及其关系原予变更【】楚在蕊向对蒙软件的语法层翅上必了追踪源鹤的变更蕊定义鲍一缀便予分拼鳇、挺亚独立熬、不霹再分熬操作麓集会,详冤表.。萁交菱对象就是原子变更的操作对象,即:组成类的各种元素,如类名、方法名等。定义渍楚暴子变更是分褥交雯禳戆关系蕊基磁,表.原子变更分类寝骥子变 燮更名嚣 含义懿添加一个空类鑫 麟豫令空簧 添加一个空方法基棼 熬骤一令塞方法修改方法体修改方渡的签褒嚣 添黧一令溱链删除一个属性基垂 蘩致爨憨耪建琵定义修改静态属性柳始化定义添藤一个

温馨提示

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

最新文档

评论

0/150

提交评论