`
talin2010
  • 浏览: 518612 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

软件开发项目中的需求变更分析和解决之道

阅读更多

需求变更:一旦提到软件开发项目进程中的需求变更,无论是项目经理还是程序开发人员都感觉到头疼。而且,在一些项目管理顾问的PPT课件中,以及一些软件项目管理的技术图书和教程中,也把“需求变更”作为单独的一项来研究。本文中,与您共同探讨软件开发项目中的需求变更发生的原因、需求变更控制,以及当发生需求变更的时候如何应对解决。

一、令人烦恼的需求变更

作为一个软件项目经理,在项目开发进行中,你是否遇到过这样的问题:客户的一个电话,就推翻了之前你与客户、与你自己的开发团队,经过再三讨论而确认定下来的需求。之后你就重新开始了和客户、和你的开发团队进入新一轮的需求谈论中,甚至是无休止的谈论。甚至要重新设计现有的架构。

而面对这种情况,作为项目经理的你是否会说:“我们无法拒绝客户,但也无法立即满足他的新需求,所以只好是推到以后再进行完善。”或者,更极端些的想法:客户总是在异想天开,客户的需求在技术上根本无法实现……

在与客户新的需求论证中,你是否会对需求确认的重要性产生怀疑。因为在一开始已经多次和客户沟通,也在没有任何异议的情况下得到了明确的答复,但当开发项目在不断演进,客户对系统的理解逐步加深之时,他们最终还是推翻以前自己想要的需求。而这时你会认为对于需求,只有获取,没有确认。

而因为需求变更的原因,致使项目多次的延期后,客户仍然说这不是他们想要的。你还是在抱怨客户的需求像天气一样一直变个不停,最终,无论是你的抱怨还是客户的需求变更只会令项目组中的开发人员疲于奔命,无所适从。


在你的软件项目进行开发之前,你和你的项目成员是否有过这样的想法,在这次软件项目开发中,一定要消除需求变更,不让谈论好的需求发生任何的变更?

首先,这种想法和认识是错误的,软件项目开发中的需求变更是不能被完全消除的。无论是项目经理还是项目开发人员,最好在项目开始之前就消除这种想法。需求变更是不可能被消除的,而“消除需求变更”的想法却需要被消除。消除需求变更的所有的努力和想法,在项目开发进行中通常都是费力不讨好。

项目开发过程中,需求的变更是不可避免的。

虽然一般情况下,项目经理花费了大量的心力和气力去避免需求变更,可最后需求变更总是会出现。但这并不意味着项目不应该做这方面的工作,无论是项目经理,还是开发人员对于需求变更的正确态度应该和对待软件测试的态度一样,在需求变更发生之前尽量减少需求变更发生的情况,以将需求变更带来的风险降到最低。

二、需求变更的产生原因

在软件开发项目中,需求变更可能来自方案服务商、客户或产品供应商等,当然,也可能来源于项目组内部。

对于需求变更发生的原因,细细追究起来无外乎以下几种原因:

1、范围没有圈定就开始细化

细化工作是由需求分析人员完成的,一般是根据用户提出的描述性的、总结性的短短几句话去细化的,提取其中的一个个功能,并给出描述(正常执行时的描述和意外发生时的描述)。
当细化到一定程度并开始系统设计时,范围会发生变化,那细节用例的描述可能就有很多要改动。如原来是人工手动添加的数据,要改成根据信息系统计算出来,而原来的一个属性的描述要变成描述一个实体等。

2、没有指定需求的基线

需求的基线是指是否容许需求变更的分界线。
随着项目的进展,需求的基线也在变化。是否容许变更的依据是合同以及对成本的影响,比如软件整体结构已经设计出来,是不容许改变需求范围的,因为整体结构会对整个项目的进度和成本有初步预算。随着项目的进展,基线将越定越高(容许的变更将越少)。

3、没有良好的软件结构适应变化

组件式的软件结构就是提供了快速适应需求变化的体系结构,数据层封装了数据访间逻辑,业务层封装了业务逻辑,表示层展现用户表示逻辑。
但适应变化必须遵循一些松耦合合原则,各层之间还是存在一些联系的,设计要力求减少会对接口入口参数产生变化。如果业务逻辑封装好了,则表示层界面上的一些排列或减少信息的要求是很容易适应的。如果接口定义得合理,那么即使业务流程有变化,也能够快速适应变化。因此,在成本影响的容许范围内可以降低需求的基线,提高客户的满意度。


三、需求变更控制

前面已经说过了,在软件开发项目开始之前,就要消除“绝不允许发生需求变更”的思想。在项目进行,一旦发生需求变更,更不要不一味的抱怨,也不要去一味地sp;前面已经说过了,在软件开发项目开始之前,就要消除“绝不允许发生需求变更”的思想。在项目进行,一旦发生需求变更,更不要不一味的抱怨,也不要去一味地迎合客户的“新需求”,而是要管理和控制需求变更。

>1、分级管理客户需求

软件开发项目中,“客户永远是对的”和“客户是上帝”并不完全的正确,因为在已经签定的项目合同中,任何新需求的变更和增加除了影响项目的正常进行以外,还影响到了客户的投入收益,所以有的时候项目经理反倒应该为客户着想。

对于项目中的需求,可以实行分级管理,以达到对需求变更的控制和管理。

•一级需求(或变更)是关键性的需求,这种需求如果不满足,意味着整个项目不能正常交付使用,前期工作也会被全部否定。这个级别的需求是必须满足的,否则就意味着否定自已的项目成员和成员的所有努力,所以定为“Urgent”。这通常是属于补救性的debug类型,要救火。

• 二级需求(或变更)是后续关键性需求,它不影响前面工作内容的交付,但不加以满足,新的项目内容无法提交或继续,所以是“Necessary”。一般新模块关键性的基础组件,属于这个级别。

•三级需求是后续重要的需求,如果不被满足会令整体项目工作的价值下降,为了体现项目价值,也是开发人员自已的技术价值的证明,所以定为“Needed”。一般性的重大的有价值的全新模块开发,属于这个级别。


以上三个等级是应该实施的,但时间性上可以作优先级的排列。

•四级需求是改良性需求,没有满足这类需求并不影响已有功能的使用,但如果实现了则会更好,定级为“Better”。界面和使用方式的需求,一般在这个档次。

•五级需求是可选性需求,更多的是偶是一种设想,以及一种可能,通常只是客户的的一种个人喜好而已,定级为“Maybe”。

  对于四级需求,如果时间和资源条件都允许的话,不妨做下去。对于五级需求,正如对它的描述一样,做与不做是“Maybe”。

2、全生命周期的需求变更管理

各种规模和类型的软件项目的生命周期大致可以分为三个阶段,即项目启动、项目实施、项目收尾。不要以为需求变更的管理和控制只是发生在项目实施阶段,而是要贯穿在整个项目生命周期的全过程中。

站在全局角度的需求变更管理,需要采用综合变更控制的方法。

(1)项目启动阶段的变更预防

正如前面强调的,对于任何软件项目,需求变更都无可避免,也无从逃避,无论是项目经理还是开发人员只能积极应对,而这个应对应该是从项目启动的需求分析阶段就开始了。
对一个需求分析做得很好的项目来说,基准文件定义的范围越详细清晰,用户跟项目经理提出需求变更的几率就越小。如果需求没做好,基准文件里的范围含糊不清,被客户发现还有很大的“新需求空间”,这时候项目组往往要付出许多无谓的牺牲。

如果需求分析做得好,文档清晰且又有客户签字,那么后期客户提出的变更就超出了合同范围,需要另外收费。这个时候,项目经理一定要据理力争,此时这并非要刻意赚取客户的钱财,而是不能让客户养成经常变更的习惯,否则后患无穷。

(2)项目实施阶段的需求变更

成功的软件项目和失败项目的区别就在于项目的整个过程是否是可控的。
项目经理应该树立一个理念,即“需求变更是必然的、可控的,并且是有益的”。项目实施阶段的变更控制需要做的是分析变更请求,评估变更可能带来的风险和修改基准文件。

控制需求渐变需要注意以下几点:

•需求一定要与投入有联系,如果需求变更的成本由开发方来承担,则项目需求的变更就成为必然了。所以,在项目的开始,无论是开发方还是出资方都要明确这一条:需求变,软件开发的投人也要变。
•需求的变更要经过出资者的认可,这样才会对需求的变更有成本的概念,能够慎重地对待需求的变更。
•小的需求变更也要经过正规的需求管理流程,否则会积少成多。
在实践中,人们往往不愿意为小的需求变更去执行正规的需求管理过程,认为降低了开发效率,浪费了时间。但正是由于这种观念才使需求逐渐变为不可控,最终 导致项目的失败。
•精确的需求与范围定义并不会阻止需求的变更。
并非对需求定义得越细,就越能 能避免需求的渐变,这是两个层面的问题。太细的需求定义对需求渐变没有任何效果。因为需求的变化是永恒的,并非需求写细了,它就不会变化了。
•注意沟通的技巧。
项目开发过程中的实际情况是用户、开发者都认识到了上面的几点间题,但是由于需求的变更可能来自客户方,也可能来自开发方,因此,作为需求管理者,项目经理需要采用各种沟通技巧来使项目的各方各得其所。

(3)、项目收尾阶段的总结

能力的提高往往不是从成功的经验中来,而是从失败的教训中得来。许多项目经理不注重经验教训总结和积累,即使在项目运作过程中碰得头破血流,也只是抱怨运气、环境和团队配合不好,很少系统地分析总结,或者不知道如何分析总结,以至于同样的问题反复出现。
事实上,项目总结工作应作为现有项目或将来项目持续改进工作的一项重要内容,同时也可以作为对项目合同、设计方案内容与目标的确认和验证。项目总结工作包括项目中事先识别的风险和没有预料到而发生的变更等风险的应对措施的分析和总结,也包括项目中发生的变更和项目中发生问题的分析统计的总结。

3、需求变更管理原则

虽然需求变更的内容和类型有各种各样,但需求变更管理的原则却是万变不离其宗。实施需求变更管理需要遵循如下原则:

(1)建立需求基线。需求基线是需求变更的依据。在开发过程中,需求确定并经过评审后(用户参与评审),可以建立第一个需求基线。此后每次变更并经过评审后,都要重新确定新的需求基线。
(2)制订简单、有效的变更控制流程,并形成文档。在建立了需求基线后提出的所有变更都必须遵循这个控制流程进行控制。同时,这个流程具有一定的普遍性,对以后的项目开发和其他项目都有借鉴作用。
(3)成立项目变更控制委员会(CCB)或相关职能的类似组织,负责裁定接受哪些变更。CCB由项目所涉及的多方人员共同组成,应该包括用户方和开发方的决策人员在内。
(4)需求变更一定要先申请然后再评估,最后经过与变更大小相当级别的评审确认。
(5)需求变更后,受影响的软件计划、产品、活动都要进行相应的变更,以保持和更新的需求一致。
(6)妥善保存变更产生的相关文档。


四、需求变更应对之道

需求变更控制一般要经过变更申请、变更评估、决策、回复这四大步骤。如果变更被接受,还要增加实施变更和验证两个步骤,有时还会有取消变更的步骤。针对变更控制流程,有几点应对之道。

•相互协作——很难想像遭到用户抵制的项目能够成功。在讨论需求时,开发人员与用户应该尽量采取相互理解、相互协作的态度,对能解决的问题尽量解决。即使用户提出了在开发人员看来"过分"的要求,也应该仔细分析原因,积极提出可行的替代方案。

•充分交流——需求变更管理的过程很大程度上就是用户与开发人员的交流过程。软件开发人员必须学会认真听取用户的要求、考虑和设想,并加以分析和整理。同时,软件开发人员应该向用户说明,进入设计阶段以后,再提出需求变更会给整个开发工作带来什么样的冲击和不良后果。

•安排专职人员负责需求变更管理——有时开发任务较重,开发人员容易陷入开发工作中而忽略了与用户的随时沟通,因此需要一名专职的需求变更管理人员负责与用户及时交流。

•合同约束——需求变更给软件开发带来的影响有目共睹,所以在与用户签订合同时,可以增加一些相关条款,如限定用户提出需求变更的时间,规定何种情况的变更可以接受、拒绝接受或部分接受,还可以规定发生需求变更时必须执行变更控制流程。

•区别对待——随着开发进展,有些用户会不断提出一些在项目组看来确实无法实现或工作量比较大、对项目进度有重大影响的需求。遇到这种情况,开发人员可以向用户说明,项目的启动是以最初的基本需求作为开发前提的,如果大量增加新的需求(虽然用户认为是细化需求,但实际上是增加了工作量的新需求),会使项目不能按时完成。如果用户坚持实施新需求,可以建议用户将新需求按重要和紧迫程度划分档次,作为需求变更评估的一项依据。同时,还要注意控制新需求提出的频率。

•选用适当的开发模型——采用建立原型 的开发模型比较适合需求不明确的开发项目。开发人员先根据用户对需求的说明建立一个系统原型,再与用户沟通。一般用户看到一些实际的东西后,对需求会有更为详细的解释,开发人员可根据用户的说明进一步完善系统原型。这个过程重复几次后,系统原型逐渐向最终

终的用户需求靠拢,从根本上减少需求变更的出现。目前业界较为流行的叠代式开发方法对工期紧迫的项目的需求变更控制很有成效。

•用户参与需求评审——作为需求的提出者,用户理所当然是最具权威的发言人之一。实际上,在需求评审过程中,用户往往能提出许多有价值的意见。同时,这也是由用户对需求进行最后确认的机会,可以有效减少需求变更的发生。

分享到:
评论

相关推荐

    软件开发项目中的需求变更分析和解决之道.pdf

    软件开发项目中的需求变更分析和解决之道.pdf

    软件开发项目中的需求变更分析和解决之道借鉴.pdf

    软件开发项目中的需求变更分析和解决之道借鉴.pdf

    项目管理-项目需求变更申请单

    在软件开发项目中,项目需求变更申请单尤其重要,因为软件开发项目中的变更请求非常常见,且对项目的影响非常大。因此,项目团队需要对变更请求进行深入的分析和评估,确定变更请求的可行性和必要性,并制定相应的...

    需求变更申请表需求变更过程中,需求变更表

    在软件开发过程中,需求变更是一项常见但至关重要的活动。需求变更申请表是管理这些变更的核心工具,确保项目团队和利益相关者对变更的理解一致,并能有效地执行和跟踪变更。以下是关于"需求变更申请表"及其在需求...

    软件开发项目需求分析研究.docx

    软件开发项目需求分析是软件开发过程中至关重要的环节。需求分析是软件开发过程中最关键的步骤之一,它能够帮助项目团队明确项目目标,确保项目成果符合客户期望。然而,需求分析并非易事,本文将探讨软件开发项目...

    软件项目的需求分析

    软件需求分析是软件开发过程中不可或缺的一环,它直接关系到软件产品的成功与否。需求分析的目标是准确理解和记录用户的需求,以便开发团队能够设计出符合用户期望的软件产品。本文将详细探讨软件需求分析的概念、...

    软件开发课程软件需求分析

    在软件开发过程中,软件需求分析是至关重要的第一步,它为整个项目奠定了坚实的基础。这个"软件开发课程软件需求分析"的教程无疑是学习如何有效进行需求分析的宝贵资源。以下是关于软件需求分析的一些核心知识点和...

    软件项目模板-qt - 软件需求变更单.zip

    总之,“软件项目模板-qt - 软件需求变更单.doc”文件是用于记录和管理Qt开发项目中需求变更的重要文档,它有助于团队有序地应对需求变化,保证项目的顺利进行和软件质量。通过遵循标准的变更控制流程,可以有效地...

    软件开发项目考核办法

    软件开发项目的考核办法是一个至关重要的环节,它涉及软件研发的各个阶段,包括需求分析、设计、编码、测试、部署和维护等。考核办法不仅关注项目的最终成果,还包括对项目管理和团队协作能力的评估。有效的项目考核...

    软件项目需求分析文档模板

    5. **候选方案**与**需求跟踪**:提供了软件开发过程中可能采用的不同方案的比较,以及需求变更的追踪机制,保证了项目的灵活性和透明度。 #### 二、深入理解需求分析过程 **需求分析**是软件开发的第一步,也是最...

    浅析软件开发项目中的需求分析

    【摘要】在软件开发项目中,需求分析是关乎软件项目开发成败的重要因素。现在的软件项目中返工开销占了总开销很大比例,而导致返工的主要原因是需求分析不明确。针对这一情况,文章阐述了软件开发中需求分析任务、...

    软件项目需求分析方法

    本书讲述了软件开发中一个至关...所以在开发周期早期提高项目需求分析的质量,减少重复劳动,通过控制项目范围的扩展及需求变更来达到按计划完成预定目标是当前我国软件业急需解决的问题—这也是本书讨论的主要内容。

    《软件需求分析法则》提高软件质量

    在软件开发过程中,需求分析被视为项目成功与否的基石。一个清晰且全面的需求分析不仅有助于开发团队明确目标,还能有效避免后期的返工和修改,确保项目的顺利进行。本文将基于“《软件需求分析法则》提高软件质量”...

    需求分析 开发项目计划书

    在IT行业中,需求分析是软件开发过程中的关键步骤,它为整个项目的成功奠定了基础。一个详尽的开发项目计划书则是确保团队沿着正确的路径前进的导航图。下面将详细阐述需求分析及其在开发项目计划书中的重要性。 ...

    软件需求分析及客户需求观

    本书讲述了软件开发中一个至关...所以在开发周期早期提高项目需求分析的质量,减少重复劳动,通过控制项目范围的扩展及需求变更来达到按计划完成预定目标是当前我国软件业急需解决的问题—这也是本书讨论的主要内容。

    软件开发案例分析.ppt

    软件工程是计算机科学的一个分支,它致力于解决软件开发过程中的复杂性和不可预测性问题,确保软件项目的高效、可控和质量保证。本讲座旨在探讨软件工程的产生背景、基本要素、方法学以及各种软件开发过程。 首先,...

    软件开发需求分析详解

    在软件开发过程中,需求分析是项目成功的关键步骤。它不仅为整个开发过程奠定了基础,而且...只有全面、深入地理解并处理好这些环节,才能确保软件开发项目沿着正确的方向前进,最终打造出满足用户需求的高质量产品。

    软件开发项目管理需求管理中的问题举例

    根据标题"软件开发项目管理需求管理中的问题举例"以及描述,本文将深入探讨软件需求定义、需求管理过程、需求建模的基本方法,并通过案例分析来具体阐述这些问题。 首先,软件需求定义是项目启动的基础,它明确了...

    软件的需求分析

    本书讲述了软件开发中... 所以在开发周期早期提高项目需求分析的质量,减少重复劳动,通过控制项目范围的扩展及需求变更来达到按计划完成预定目标是当前我国软件业急需解决的问题—这也是本书讨论的主要内容。

Global site tag (gtag.js) - Google Analytics