`
fangang
  • 浏览: 877651 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
311c4c32-b171-3767-b974-d26acf661fb2
谈谈用例模型的那些事儿
浏览量:38688
767c50c5-189c-3525-a93f-5884d146ee78
一次迭代式开发的研究
浏览量:68838
03a3e133-6080-3bc8-a960-9d915ed9eabc
我们应当怎样做需求分析
浏览量:410102
753f3c56-c831-3add-ba41-b3b70d6d913f
重构,是这样干的
浏览量:91840
社区版块
存档分类
最新评论

一次迭代式开发的研究:从容应对需求变更

阅读更多
前面我们已经详细描述了一次迭代式开发的完整过程,首先是项目计划的前期分析——工作量评估和优先级评估,然后是制订迭代式的项目计划,最后是按照项目计划执行项目。每天,运用Burn-Down Table监控项目进程,随时掌握项目进度的偏差(是滞后还是超前),然后制订相应的应对方案予以调整,直到最后的项目结束,一切似乎进行得比较顺利。但真实的情况往往不是这样,这里忽略了一个最重要的因素,那就是需求变更。

如果没有需求变更,我们就不需要采用迭代式开发了,瀑布模型足矣。正如我在第一章谈到的,我们的软件开发存在着风险,这个风险就是需求变更。需求变更无处不在,就如同我们人类面对的浩瀚无垠的宇宙,必须得有防护措施应对可能的风险。需求变更的防护措施是什么呢?那就是采用迭代式开发。那么,迭代式开发是怎样防护来自用户的需求变更呢?我们用一个情景剧来详细解读。

A先生是一个项目经理,他准备开始一个新的软件开发项目。他首先组织需求人员与客户一起进行了深入的需求调研,进行了详细的需求分析,最后制定出一份需求规格说明书,与客户进行签字确认。同时,他又组织了设计人员,与需求人员进行讨论,将所有的需求进行任务分解、工作量评估,以及优先级评估。随后与公司领导讨论,与客户领导协商,确定项目需要配备的人员、花费的资金,以及所需的时间。最后,一个迭代式的项目计划制订出来。

万事俱备之后,项目开始进入执行阶段。A先生制作了一个Burn-Down Table监控项目进度,开始了第一个迭代期。一切进行得比较顺利,项目顺利地完成了第一个迭代期的所有任务,顺利提交第一份交付物。正当大家认为项目会一直这样顺利地进行而喜笑颜开时,事情发生了——客户看到第一份交付物时,对一些功能不太满意,对这样那样的功能提出了修改意见,甚至还提出了新的功能——需求变更发生了。

当客户对需求提出变更时,我们往往第一反应就是记录,然后回去照着做,但很多经验证明这样是不对的。不加分析而草率地修改客户提出的变更需求,是造成客户频繁变更需求的根本原因。我们前面提过,客户提出需求的一个重要特点就是,当软件没有真正设计出来时,客户往往是说不清楚自己的真正需求的。因此,当他再次看到上次提出变更以后修改的内容,很有可能还不满意,这就意味着还要继续改,直到他满意为止。这样,反复修改是再所难免。

当客户提出需求变更时,我们首先应当弄明白的是客户为什么要提出这样的需求。这时候,需求分析员应当站在使用者角度,站在业务角度,去理解这样的需求,理解其提出来的动机。也许客户在做这个操作时要查看一些相关信息,也许这个数据和那个数据有逻辑关系,甚至其原因就是一个非计算机专业的人看到这个界面不容易理解、有误解,或者操作就有困难。

当理解了用户提出变更的真实动机以后,随后分析的就是这样的变更有没有必要,可不可实现,或者是否有更合理的解决方案。每次我们都会将一些客户提出的不合理的,或者无法实现的需求变更退回去,并且提出我们的理由。只要遣词得当、理由充分,客户往往能接受我们的建议而取消这些需求(多用建议的语气,少用命令的口吻)。而另一些变更需求,我们常常从用户表面的语言中分析出他们真实的需求,并提出一个更加合理的建议。这样做,客户不仅会欣然接收你的建议,而且会有一种你就是他肚里的蛔虫那种感觉,对你更加信任,你在客户心里的威信也就随之增加。

当客户提出变更需求,并且经过分析已经确定出修改方案以后,A先生就马上回去组织人员进行设计和开发了,殊不知这将是项目后期出现巨大隐患的重要原因。迭代式开发的正确做法应当是怎样呢?这个问题我们下回详细分解吧。

一次迭代式开发的研究:软件开发的风险
一次迭代式开发的研究:什么是迭代式开发
一次迭代式开发的研究:怎样进行迭代式开发
一次迭代式开发的研究:迭代开发从这里开始
一次迭代式开发的研究:准确的工作量评估
一次迭代式开发的研究:功能的优先级评估
一次迭代式开发的研究:一个迭代式项目计划
一次迭代式开发的研究:开始真正的工作
一次迭代式开发的研究:从容应对需求变更
一次迭代式开发的研究:需求变更的关键步骤
一次迭代式开发的研究:Where you are
(续)
分享到:
评论
2 楼 fangang 2011-12-27  
按照一个比较正规的流程应当是,用户首先提出一个原始的业务需求,然后是业务调研、需求分析,完了以后才编写需求规格说明书、签订合同、制订项目计划。但是,如果项目需要招投标,那么在没有进行业务调研、需求分析的情况下,开发公司就必须要核算成本、报价、签订合同、制订项目计划。在这种情况下只能凭经验估了,这也是没有办法的事情。事实上,很多情况下,第一次投标,开发公司的目标就是拿下这个标,开价常常比成本低。

按照规定,合同一旦签订,需求就不能再变,但实际情况并非如此。在软件开发过程中,不论客户还是开发方,都有变更需求的需要,关键是变更的幅度有多大。大范围的、结构性的变更是开发方所承受不起的。但在局部的、细节上的变更是允许的,甚至是合理的。现在,一个项目下来,总是或多或少也一些需求变更。

但是,开发公司最头痛的是客户对需求总是变来变去,出现反复。出现这种情况的最重要的原因之一是客户对需求的变更考虑的不周全。当客户发现了一个需求上的问题,然后草草提出一个变更意见,过几天发现这个变更意见存在其它的问题,需求的反复变更就出现了。避免这种情况最有效的办法就是让客户对问题经过深思熟虑以后再提出来,也就是抑制客户随意提出变更。因此,一开始一定要客户在需求规格说明书上签字,之后每一次变更都要让客户走一个变更流程、签字确认,加大客户提出需求和变更的代价,可以使客户对其更加慎重,有效避免这种随意性。

项目计划也是同样的道理。如果在投标阶段没有准确把握某些需求,到需求分析阶段才发现问题并非如此简单,这时候怎么办呢?客户是人而不是机器,当你使客户意识到实际的需求比他当初提出的原始需求复杂很多时,客户更在意的是项目的成功而非那一点点时间。因此,客户会理性地调整项目计划,以保证项目最终成功。这里面的关键就是你如何与客户沟通。
1 楼 ylyxf 2011-12-27  
按照文章的解释,应该先有需求规格说明书,然后才有估算和计划。
但是前几篇文章中,博主说道需求是逐步明确的,那么在项目开始阶段的需求规格说明是不详细的,如何拿给客户签字?估算值会不会偏差过大?用户或者我们的老板往往在合同一签订以后就要计划,我还没明确做什么,也只能胡乱写计划,到时候完不成,又陷入水深火热中了。

还有,如果需求分析人员已经进厂调研,说明项目合同已经签订了,那么在签订合同前的报价是不是只能依据经验估算,而不能参考通过需求规格说明书确定以后的估算工作量?

这里的这些矛盾点我总也想不明白,希望指点一二。

相关推荐

    迭代软件开发流程参考.pdf

    迭代软件开发流程是一种应对传统瀑布模型中问题的现代软件开发策略。传统的瀑布模型强调文档驱动,按照需求分析、设计、编码、测试和维护等顺序进行,这种线性方式容易导致需求变化带来的返工,项目延期和成本超支,...

    如何应对需求的频繁变更_V4.pdf

    3. **准备切换到敏捷式开发**:敏捷方法如Scrum能够更好地适应需求变化,通过短迭代和持续反馈,迅速调整项目方向。 4. **采用适应型生命周期**:与固定总价合同相比,适应型生命周期允许在项目进程中根据需求变化...

    软件开发项目需求变更管理及应对之道研究归纳.pdf

    在应对需求变更时,开发人员需要采取以下策略:一是与用户建立良好的协作关系,充分交流,理解并尊重用户的需求,即使面对看似“过分”的要求,也应积极寻求解决方案。二是安排专职人员负责需求变更管理,确保及时...

    RUP迭代式开发全中文资料

    RUP迭代式开发全中文资料---强烈推荐

    迭代软件开发作业流程.doc

    7. 迭代步骤本身可在进行过程中得到改善和精炼:一次迭代结束时评定不仅要从产品和进度角度来考察项目标情况,而且还要分析组织和步骤本身有什么待改善之处,方便在下次迭代中愈加好地完成任务。 迭代软件开发作业...

    迭代软件开发流程.doc

    迭代软件开发流程 ...8. 迭代流程自身可在进行过程中得到改进和精炼:一次迭代结束时的评估不仅要从产品和进度的角度来考察项目的情况,而且还要分析组织和流程本身有什么待改进之处,以便在下次迭代中更好地完成。

    迭代软件开发流程.pdf

    整个迭代过程包含了需求、设计、实施(编码)、部署、测试等各种类型的开发活动,迭代完成之后需要对迭代完成的结果进行评估,并以此为依据来制定下一次迭代的目标。 迭代软件开发流程具有以下特点: 首先,迭代...

    迭代化软件开发

    每个阶段性目标(即一次迭代)都包含了一系列开发活动,如需求分析、设计、编码、测试等。每个迭代结束后都会对完成的结果进行评估,以便为下一次迭代提供反馈和调整方向。 迭代化开发的主要特点包括: 1. **允许...

    产品需求文档:如何撰写一份适合敏捷迭代开发的PRD文档?.docx

    软件开发方式有瀑布模式、迭代增量式、螺旋模式、敏捷开发等。敏捷开发相比其他模式,它的优点是开发周期短(一至两周为一个周期)、更强调队伍的高度协作、更迅速的响应。在互联网时代,时间就是金钱,多花一天时间...

    平台建设项目设计开发一体化-版本迭代需求清单模板.docx

    总结来说,平台建设项目设计开发一体化中的版本迭代需求清单是一个详细的指导文档,它涵盖了迭代的所有关键要素,从需求提出到测试验证,再到部门间的沟通与协作。有效管理和执行这个清单能够确保项目的顺利进行,...

    Rational迭代化软件开发

    - **适应变化**:随着项目的发展,需求可能会发生变化,迭代开发允许团队在每个迭代中调整计划,以应对这些变化。 - **风险管理**:通过频繁的检查和反馈,可以尽早发现并解决潜在问题,降低项目风险。 - **早期...

    需求变更文档对需求过程中的变更进行进行描述

    需求变更文档是软件开发过程中不可或缺的一部分,它详细记录了在项目进行中,需求出现变动时的具体情况,确保团队成员、利益相关者以及客户都对需求的更改有清晰的理解。本篇文档主要关注的是一个功能需求的变更,即...

    软件工程中的迭代开发方法.pptx

    - **Scrum**:一种常用的敏捷开发方法,强调短周期的冲刺和定期回顾。 - **极限编程(XP)**:注重开发质量,采用如结对编程、持续集成等实践。 - **Kanban**:基于看板的方法,强调流动和限制在制品数量。 - **...

    软件工程中的迭代与增量开发模型.pptx

    软件工程中的迭代与增量开发模型知识点总结 ...迭代与增量开发模型在软件工程中起着重要作用,能够灵活应对需求变化,提高软件质量和用户满意度。通过迭代的方式逐步完善系统,增量的添加新功能,减少风险成本。

    需求驱动的迭代开发过程

    需求驱动的迭代开发过程 需求驱动的迭代开发过程

    迭代与增量开发实践技巧.pptx

    - **迭代开发**:一种将大型项目分解为一系列小规模且易于管理的部分的过程。每一部分(迭代)都包含了完整的设计、编码、测试等阶段,通过反复循环这些步骤来逐步构建最终的产品。 - **增量开发**:指将产品的...

Global site tag (gtag.js) - Google Analytics