,单击此处编辑母版标题样式,*,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,软件开发之需求变更,需求变更的管理,2015-5-20,软件开发之需求变更需求变更的管理,1,何为软件需求,2,为什么会产生需求变更,3,需求变更的影响,4,如何管理需求变更,主要内容,1何为软件需求2为什么会产生需求变更3需求变更的影响4如何管,何为软件需求,何为软件需求,何为软件需求,用户解决问题或达到目标所需条件或权能,(Capability),。,系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。,一种反映上面,(1),或,(2),所述条件或权能的,文档,说明。它包括功能性需求及,非功能性需求,,非功能性需求对设计和实现提出了限制,比如性能要求,,质量,标准,或者设计限制。,何为需求变更,何为软件需求何为需求变更,需求包含哪些内容,业务需求(,Business Requirement,)反映了组织机构或,客户,对系统、产品高层次的目标要求,,用户需求(,User Requirement,)描述了,用户,使用产品必须完成的任务,,功能需求(,Functional Requirement,)定义了开发人员必须实现的软件功能。,注:用户是,user,,有时也叫做终端用户,,End User,,是使用产品的人;而客户是,Customer,是购买产品的人,为产品付钱的人。,何为软件需求,需求包含哪些内容何为软件需求,为什么会产生需求变更,为什么会产生需求变更,需求变更的出现主要是因为在项目的需求确定阶段,用户往往不能确切地定义自己需要什么。用户常常以为自己清楚,但实际上他们提出的需求只是依据当前的工作所需,而采用的新设备、新技术通常会改变他们的工作方式,;,或者要开发的系统对用户来说也是个未知数,他们以前没有过相关的使用经验。随着开发工作的不断进展,系统开始展现功能的雏形,用户对系统的了解也逐步深入。于是,他们可能会想到各种新的功能和特色,或对以前提出的要求进行改动。他们了解得越多,新的要求也就越多,需求变更因此不可避免地一次又一次出现。,为什么会产生需求变更,需求变更的出现主要是因为在项目的需求确定阶段,,需求变更,需求理解分歧,系统开发实施周期过长,客户业务需求改变,国家政策改变,需求有缺陷,为什么会产生需求变更,需求变更需求理解分歧系统开发实施周期过长客户业务需求改变国家,需求理解分歧,当客户向需求分析人员提出需求的时候往往是通过自己的想法用自然语言来表达的,这样的表达结果对于真实的需求来说是一种描述(甚至只是某个角度的描述),远远不能保证这样的描述可以得到百分之百的正确理解,也许在同客户交流的第一时刻就埋下了理解分歧的种子,打一个比方说客户说我要的是大象,身子象一堵墙,耳朵象扇子,四条腿象四根柱子,尾巴象绳子,分析人员想,哦,墙、扇子、柱子、绳子这些我都知道,但是真的画出来的时候客户当然会跳起来了!这是理解分歧的问题,一般跟分析员的知识、背景,还有客户表述的标准程度、双方的交流情况有关。,为什么会产生需求变更,需求理解分歧为什么会产生需求变更,需求理解分歧,为什么会产生需求变更,需求理解分歧为什么会产生需求变更,系统开发实施周期过长,一个大中型系统的建设可能要延续一段时间,当客户提出要求之后,他当时并不能看到系统的运行情况,当双方认为理解大概没有分歧的时候(事实上还会有个,Deadline,),开发方就开始工作了。当客户拿到差不多可以试用的产品时他可以实际操作,这时候他就会对系统的界面、操作、功能、性能等有一些切身的体会,有可能提出需求变更要求。,周期过程客户可能在过程中期望发生变更。,为什么会产生需求变更,系统开发实施周期过长为什么会产生需求变更,系统开发实施周期过长,为什么会产生需求变更,系统开发实施周期过长为什么会产生需求变更,客户业务需求改变,由于社会在发展,人的观念也在不断更新,可以说,客户提出变更也是可以理解的。项目组基于变更评估与客户沟通。,当前客户的运营情况不确定,有可能客户行业的竞争度高,需要随时作出调整和反应,那么他们自然会经常提出需求变更的要求;也有可能客户所在的行业操作不规范,本身存在很多人为因素。,为什么会产生需求变更,客户业务需求改变为什么会产生需求变更,国家政策改变,国家政策变化属于强制的变更,这时候客户为了完成政治任务,变更是一定要发生的,为什么会产生需求变更,国家政策改变为什么会产生需求变更,为什么会产生需求变更,为什么会产生需求变更,需求有缺陷,需求或者程序设计本身就有问题。,比如会员年龄信息,如果在设计阶段将会员该信息设置成一个数据库字段进行保存的话,后期可能就需要对这个字段进行单独处理,因为会员的年龄是随着时间不停的变化,而用户不可能去单独维护所有会员的年龄信息,所以这个信息一开始设置成固定字段本身就是有问题的。,为什么会产生需求变更,需求有缺陷为什么会产生需求变更,需求变更的影响,需求变更的影响,需求变更,项目成本,项目进度,(,质量,),客户关系,人员工作状态,文档代码一致性,需求变更的影响,需求变更项目成本项目进度(质量)客户关系人员工作状态文档代码,需求变更的影响,项目成本,如果项目有需求变更,那么就需要安排专门的人员进行开发、测试、部署等工作,这样就增加了项目的成本。,需求变更的影响项目成本,影响软件质量及开发进度,在一个复杂的软件系统中,需求之间具有一定的联系,而相关的需求则构成需求链,如果评估变更影响时遗漏了需求链中的某些环节,就可能在实施变更过程中引入一些难易察觉的错误,这些错误将会影响系统的质量,严重时可导致系统崩溃。,需求变更的影响,影响软件质量及开发进度需求变更的影响,影响人员的工作状态,如果需求变更频繁或者需求变更对系统影响比较大,会导致开发、测试人员在心理上产生抵触信息,从而影响其工作状态。严重时可能会导致人员的流失。,需求变更的影响,影响人员的工作状态需求变更的影响,影响文档和代码的一致性,文档是软件系统的一个重要组成部分,也是维护系统的重要依据。在处理需求变更的过程中,如果没有采用规范的流程保证需求变更的评估与实施,会造成文档跟所开发的软件系统不一致,系统维护困难。,需求变更的影响,影响文档和代码的一致性需求变更的影响,影响开发者与用户的合作关系,需求变更的实施时用户和开发者相互协作的过程。开发者和用户在是否采用变更问题上常常产生分歧,如果没有恰当的处理,相互之间的信任关系变得越来越差,甚至有合作关系转变为一种对抗关系,影响项目开发进度。,需求变更的影响,影响开发者与用户的合作关系需求变更的影响,如何管理需求变更,如何管理需求变更,如果开发团队缺少明确的需求变更控制过程或采用的变更控制机制无效,抑或不按变更控制流程来管理需求变更,那么很可能造成项目进度拖延、成本不足、人力紧缺,甚至导致整个项目失败。当然,即使按照需求变更控制流程进行管理,由于受进度、成本等因素的制约,软件质量还是会受到不同程度的影响。但实施严格的软件需求管理会最大限度地控制需求变更给软件质量造成的负面影响,这也正是我们进行需求变更管理的目的所在。,如何管理需求变更,如果开发团队缺少明确的需求变更控制过程或采用的变更控制机制无,如何管理需求变更,需求变更原则,建立需求基线,变更流程,变更委员会,变更评审,影响评估,变更相关文档,如何管理需求变更需求变更原则建立需求基线变更流程变更委员会变,建立需求基线,需求基线是需求变更的依据,在开发过程中,需求确定并经过评审后(用户参与评审),可以建立第一个需求基线。此后每次变更并经过评审后,都要重新确定新的需求基线。,制订简单、有效的变更控制流程,并形成文档,在建立了需求基线后提出的所有变更都必须遵循这个控制流程进行控制。同时,这个流程具有一定的普遍性,对以后的项目开发和其他项目都有借鉴作用。,如何管理需求变更,建立需求基线,需求基线是需求变更的依据如何管理需求变更,成立项目变更控制委员会(,CCB,),成立项目变更控制委员会(,CCB,)或相关职能的类似组织,负责裁定接受哪些变更。,CCB,由项目所涉及的多方人员共同组成,应该包括用户方和开发方的决策人员在内。,需求变更一定要先申请然后再评估,最后经过与变更大小相当级别的评审确认。,需求变更后,受影响的软件计划、产品、活动都要进行相应的变更,以保持和更新的需求一致。,妥善保存变更产生的相关文档。,如何管理需求变更,成立项目变更控制委员会(CCB)如何管理需求变更,Thank you,Thank you,软件开发之需求变更管理课件,