前面我们提到了需求变更。当客户提出了需求变更,经过与我们的需求人员的详细讨论与分析,最后确定下来了变更内容和修改方案。但这时草率地开始进行设计和开发是不正确的,它将成为项目后期的一个巨大的风险,一颗定时zhadan,为什么呢?我们来详细分析分析。
每当发生需求变更的时候,不管是大是小,项目的许多因素都会相应地发生变化。首先发生变化的是工作量。每次的变更必然造成工作量的增加,到底增加了多少呢?我们需要对其进行评估。同时,我们还要对增加的工作进行优先级评估。一般来说,新增加的工作往往优先级都是最高的,是客户急切想看到结果的部分,那么其它的工作的优先级就会收到影响,优先级就会有所下降。当工作量的增加与优先级的调整完成后,随后的工作就是项目计划的调整。
前面我们说过,迭代式开发的项目计划与传统的项目计划是存在巨大差异的。迭代式开发的项目计划其核心,就是如何将各项任务合理分配到各个迭代期中去。任务就像一个个大小不一的石子,迭代期就如同一个个网格,项目计划就是将石子分发到各个网格中,虽然有一些空隙,但大体是满的。现在新任务来了,就如同要将新的石子放到已满的网格中,有几种可能:石子很小,利用网格的空隙就可以填满了;石子太大了,如果要把这个石子放进这个网格中,就必须将里面的某个石子取出来,放到别的网格里。现在项目计划的变更就是这样。
如果新的工作量很小,往下一个迭代期挤一挤,即使超了1、2天也能挤下,那就挤挤吧,但这个迭代期可能会延期,后面工作的时间节点也必然随之调整;如果新的工作量还不小,优先级还比较高,那么只能将下一个迭代期中已有的任务取出,调整到其它迭代期中,这可能会导致后面整个的工作计划都将调整。不论怎样调整,我们都应当将调整后的工作计划告知客户。
不论业务需求怎样变更,不论项目计划怎样调整,通知客户,让客户理解,并与我们共同承担项目延期的风险,这是从无数失败的项目中总结出来的血的教训。一定要让客户明白,你们可以改需求,可以提出修改意见,但必须与我们一同承担风险。当客户意识到这一点时,也许他们就会慎重考虑了,甚至一下变更需求就会被取消。
在变更项目计划的同时,另一项重要的工作就是变更我们的产品需求说明书。在项目管理中,需求文档往往分为两个:原始需求和产品需求说明书。原始需求是客户编写的,站在客户角度描述的业务需求,而产品需求说明书是我们在对原始需求分析、理解、调研以后,剔除那些技术无法实现的内容,最后形成的文档,是我们的软件最终做成什么样的依据性文档(需求文档其实很多,如需求规格说明书、产品规格说明书等等,但都大同小异)。产品需求说明书是程序开发的依据,软件测试的依据,用户验收的依据,贯穿整个软件开发的核心。因此,当业务需求发生变更之后,产品需求说明书一定要进行相应的变更,并做好变更的记录,与客户签字确认。这样做的另一个好处就是防止客户随意变更需求,使客户对变更的提出更加慎重。
另外一个需求变更中常常出现的尴尬局面就是,当所有情况都清楚告诉客户以后,客户提出需求必须要变更,但最终交付时间却不能改变。这着实是一个相当矛盾的问题,变更必然造成工作量增加,工作量增加必然影响最终交付时间,但交付时间又不能变,这听起来既不合情又不合理,但在现实的项目中经常发生,而且各有个的充分理由,我们这怎么办呢?其实解决这种情况的办法就是在制订项目计划之初就提前考虑到。记得我们前面提到,我们在制订项目计划时应当在时间上留有一定的富余。如何制订项目计划,《越狱》这部电影给了我们很多的启示。如何成功越狱,主人公在越狱过程中的每个风险点都制订了风险规避和补救的办法,项目计划也是这样。项目需求变更就是一个风险点,因此项目经理应当在制订计划之初就应当做好准备,并提前预留出相应的时间,当项目进行过程中风险出现时才能从容应对。
总之,需求变更不是什么洪水猛兽,也不是一个项目可以完全规避得了的。我们提前准备好,从容应对之,就不是什么大不了的事情。
- 浏览: 146268 次
- 性别:
- 来自: 广州
最新评论
-
lvliang169:
码农通常会被亲戚、家人、朋友认为是修电脑的
深有同感啊、、、、 ...
关于程序猿,你不知道的15件事
相关推荐
根据提供的文件信息,我们可以深入探讨软件开发模式...然而,在需求不确定或经常变化的情况下,敏捷开发模式则更加合适,因为它能够快速响应变化并迭代开发。无论采用哪种开发模式,关键是要选择最适合项目需求的方法。
"Go-darwin-Go的数据库模式演变库"是一个专门针对Go语言开发的数据库模式演化工具,它旨在帮助开发者管理数据库模式的变更,确保在应用的开发过程中数据库结构能够随着需求的变化而同步更新。这个库的出现,为Go语言...
综上所述,软件工程的实践涵盖了软件从无到有的整个过程,其中软件需求分析、设计与架构是确保软件质量和成功的关键步骤。通过合理的需求管理、设计模式的应用以及有效的架构设计,可以显著提高软件产品的质量,减少...
例如,在软件需求分析阶段,如何准确地捕捉到用户的真实需求是非常关键的一步,这直接影响到后续的设计和开发工作。而在软件设计阶段,选择合适的设计方法和模式可以极大地提高软件的可维护性和可扩展性,从而减少...
- **敏捷开发**:强调快速响应变化,通过短周期迭代开发,持续交付可用软件。 - **增量模型**:逐步增加软件的功能和特性,每次迭代都发布一个可工作的版本。 - **喷泉模型**:适用于面向对象的开发,强调并行而非...
通过以上内容的学习,读者可以深入了解软件工程的基本概念、需求分析的关键步骤以及软件设计的核心原则和方法。这对于初学者来说是非常宝贵的资源,能够帮助他们建立起扎实的软件工程基础知识,并为未来的职业发展...
- 迭代开发:采用敏捷开发模式,分阶段进行,每个迭代结束后进行评审,及时调整方向。 - 质量控制:设置明确的质量标准和测试策略,确保产品功能的稳定性和可靠性。 - 风险管理:识别潜在风险,制定预防和应对措施,...
良好的编程实践中,设计模式的应用不仅能提高代码的可读性和可维护性,还能增强代码的灵活性,使得在需求变更时,可以通过调整模式的使用来适应变化,而不是大规模修改代码。因此,理解和熟练运用设计模式是成为优秀...
与传统开发模式相比,敏捷开发具有许多优点,例如降低风险、得到早期用户反馈、持续的测试和集成、使用变更、提高复用性等。敏捷开发小组的工作方式可以归纳为:作为一个整体工作;按短迭代周期工作;每次迭代交付...
### 软件工程入门指南知识点汇总 #### 第1章 软件工程概述 ...以上内容概述了软件工程的基础概念、需求分析的关键步骤以及软件设计的基本原则和方法。对于初学者来说,这些都是非常重要的基础知识。
- **软件需求分析**:关键步骤,直接影响软件质量和进度。 #### 第3章 软件设计 - **软件设计原则**: - **单一职责原则**:每个模块只负责一个功能。 - **开闭原则**:对扩展开放,对修改关闭。 - **里氏替换...
- **敏捷方法:** 强调快速响应变化,通过迭代开发逐步完善需求。 - **精益方法:** 减少浪费,追求高效率和高价值。 - **传统方法:** 按照严格的计划和流程进行需求管理。 #### 第3章 软件工程的软件设计 **软件...
需求获取是软件开发过程中的关键步骤之一,主要通过需求访谈、需求调查等方式进行。这一过程旨在全面了解用户的实际需求,为后续的需求规格说明书和系统设计奠定坚实的基础。 **需求规格说明书** - 明确需求的重要...
- **敏捷方法**:采用迭代开发,快速响应需求变化。 - **原型方法**:快速构建原型来验证需求。 - **结构化方法**:强调程序的模块化和结构化设计。 #### 第二章:软件需求分析 ##### 软件需求定义 软件需求是关于...
需求工程是软件开发过程中的关键步骤,主要包括需求定义、需求分类和需求获取。其核心目标是确保开发团队准确理解并实现用户的需求。 **需求分析过程:** - **收集用户需求**:通过访谈、问卷调查等方式了解用户的...
敏捷模式强调灵活性、迭代开发和持续的客户反馈,旨在提高效率和响应能力。以下将详细阐述敏捷模式在软件开发项目管理中的关键知识点: 1. **商业远景与产品开发战略**:在敏捷模式下,商业远景需转化为可操作的...
在软件开发领域,需求分析作为项目启动的关键步骤,为后续的设计、开发和测试工作奠定了基础。2021年,为了应对日益复杂的软件开发挑战,业界发布了一系列最新的产品需求模板,其中《软件开发过程文档规范》成为了...