在软件开发过程中需求的变更会给开发带来不确定性,但只要把需求变更作为重点、难点小心加以控制,软件开发的进度、成本和质量也就有了"安全"的基础。变化并不是人们最害怕的,最怕的是跟不上变化的步伐。

1、需求变更管理的需求

需求变更是因为需求发生变化。根据软件工程思想,需求说明书一般要经过论证,如果在需求说明书经过论证以后,需要在原有需求基础上追加和补充新的需求或对原有需求进行修改和削减,均属于需求变更。需求变更的出现主要是因为在项目的需求确定阶段,用户往往不能确切地定义自己需要什么。用户常常以为自己清楚,但实际上他们提出的需求只是依据当前的工作所需,而采用的新设备、新技术通常会改变他们的工作方式;或者要开发的系统对用户来说也是个未知数,他们以前没有过相关的使用经验。

随着开发工作的不断进展,系统开始展现功能的雏形,用户对系统的了解也逐步深入。于是,他们可能会想到各种新的功能和特色,或对以前提出的要求进行改动。他们了解得越多,新的要求也就越多,需求变更因此不可避免地一次又一次出现。这时,如果开发团队缺少明确的需求变更控制过程或采用的变更控制机制无效,抑或不按变更控制流程来管理需求变更,那么很可能造成项目进度拖延、成本不足、人力紧缺,甚至导致整个项目失败。当然,即使按照需求变更控制流程进行管理,由于受进度、成本等因素的制约,软件质量还是会受到不同程度的影响。但实施严格的软件需求管理会最大限度地控制需求变更给软件质量造成的负面影响,这也正是我们进行需求变更管理的目的所在。

2、六大原则

实施需求变更管理需要遵循如下原则:

1)建立需求基线。需求基线是需求变更的依据。在开发过程中,需求确定并经过评审后(用户参与评审),可以建立第一个需求基线。此后每次变更并经过评审后,都要重新确定新的需求基线。

2)制订简单、有效的变更控制流程,并形成文档。在建立了需求基线后提出的所有变更都必须遵循这个控制流程进行控制。同时,这个流程具有一定的普遍性,对以后的项目开发和其他项目都有借鉴作用。

3)成立项目变更控制委员会(CCB)或相关职能的类似组织,负责裁定接受哪些变更。CCB 由项目所涉及的多方人员共同组成,应该包括用户方和开发方的决策人员在内。

4)需求变更一定要先申请然后再评估,最后经过与变更大小相当级别的评审确认。

5)需求变更后,受影响的软件计划、产品、活动都要进行相应的变更,以保持和更新的需求一致。

6)妥善保存变更产生的相关文档。

3、应对之道

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

变更控制流程如图所示。针对变更控制流程,笔者在实际工作中总结出了软件开发人员在需求变更管理实践中的几点对策:

1)相互协作

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

2)充分交流

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

3)安排专职人员负责需求变更管理

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

4)合同约束

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

5)区别对待

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

6)适当的开发模型

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

目前业界较为流行的叠代式开发方法对工期紧迫的项目的需求变更控制很有成效。

7)参与需求评审

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

更多内容请关注微信公众号:it_haha

转载于:https://blog.51cto.com/doujh/1834601

谈软件开发项目管理之需求变更相关推荐

  1. 谈谈软件开发项目管理的积分制

    1. 关于项目积分制 软件开发项目管理的积分制(以下简称积分制)是一种软件开发项目的绩效管理模式,以项目利润.客户满意度.项目质量.创新等为KPI指标,将积分与员工福利奖金.晋升.荣誉等捆绑以此来调动 ...

  2. 如何做好软件开发项目管理?

    软件越来越多地出现在我们的生活中.为了快速向大众提供这些产品,软件公司必须知道如何有效管理他们的软件项目. 本文将讨论软件项目管理的重要性,以及投资软件项目管理平台的一些好处. 什么是软件开发的项目管 ...

  3. 软件开发项目管理检查清单:天气晴雨表

    检查清单用于确认作业或工程是否存在遗漏,是反映项目管理是否存在问题的"天气晴雨表".下面是软件开发项目管理的一个检查清单,比本章中所言"软件开发项目管理过程中的祸根及其后 ...

  4. 谈谈我对软件开发项目管理的理解

     首先声明一下,我并不是一个PM,也从未做过与项目管理相关的工作.作为一个每天都偏安一角静静地写代码的程序猿,本不应该发表与项目管理相关的观点.无奈,以个人的角度和眼光,鉴于工作中出现的一些问题, ...

  5. 浅谈软件开发工具CASE在软件项目开发中发挥的作用认识

    浅谈软件开发工具CASE在软件项目开发中发挥的作用认识 内容摘要:阐述了CASE工具作为 一种开发环境在软件项目开发中所起到的开发及管理作用.CASE工具实际上是把原先由手工完成的开发过程转变为以自动 ...

  6. 软件开发项目管理的模式概述

    软件开发项目管理的模式概述 blueski推荐 [2006-6-22] 出处:CSDN 作者:不详 70年代基本上一个软件在项目规模上比较小,一两个人基本可以胜任一个软件的开发,这样的人被称为hero ...

  7. 软件开发项目管理(人员管理)

    软件开发项目管理中主要分为四部分(成本估算.风险分析.进度管理.人员管理)对于我们来说比较熟悉的应该是进度管理和人员管理,在提高班的第二个学年,每个人都要经历合作开发,而"合作开发" ...

  8. java学习方法-浅谈软件开发的神速进步

    中国人大都喜欢用武侠小说来比较软件开发,但是在实战武功中,只有葵花宝典才是最厉害的,也只有掌握了葵花宝典,才能称为"不败". 1浅谈软件开发的神速进步 1.1什么才是软件开发的葵花 ...

  9. 软件开发项目管理容易陷入哪些困局?

    本文主要是针对软件开发项目管理过程中难以解决的一些问题困局进行讨论分析,并就解决问题的对策进行综合分析讨论. 软件开发项目管理范围包括项目相关人员.开发成本.工作进度.风险及问题分析和管理,最终达到既 ...

最新文章

  1. Android Studio中RecycerView依赖库加载问题
  2. java update set_mybatis update set 多个字段实例
  3. 报表引擎API开发入门— EJB程序数据源
  4. UITextField常用属性
  5. Spring Boot集成Dubbo多模块项目创建与配置
  6. C#中图片.BYTE[]和base64string的转换
  7. Windows Hook(2)调用DLL函数
  8. java实现map和object互转
  9. Yii 2.0 GII 访问404错误
  10. c语言 一元二次函数,计算一元二次函数的根,大家看看那里有错了。。。。
  11. msdn系统镜像下载
  12. vc++播放wav声音
  13. MATLAB求解标准差
  14. linux-tar命令
  15. java ip地址定位,Java根据IP地址定位位置
  16. WIN10下装Ubuntu 18.04双系统
  17. python删除excel指定行_python实现Excel删除特定行、拷贝指定行操作
  18. 笔记本电脑蓝牙忽然消失,设备管理器有未知USB设备描述符请求失败
  19. Truncate Table用法
  20. 计算机图形学(三)-图形学中的基本变换(缩放、平移、旋转、剪切、镜像)

热门文章

  1. gatewayfilter详解_Spring Cloud Gateway 之 Filter
  2. calendar类_不要再自己写 Java 工具类了,这些开源的不香吗?
  3. andriod studio获取root_怎样获得root权限
  4. 80c51流水灯汇编语言,单片机AT89C51可控流水灯课程设计报告(汇编语言).docx
  5. 字体在ppt中可以整体替换吗_制作PPT必备的6个技巧,个个让人相见恨晚!你确定不来学一学?...
  6. iis7 下php 环境配置文件,IIS7.X配置PHP运行环境小结_php
  7. python批量音频转格式_GitHub - shede333/SWConvertVideoToAudio: Python批量转换 视频 为 音频MP3(即提取音频文件)...
  8. mysql check约束无效_mysql数据库 check约束无效
  9. 北大生物信息学公开课学习(1)
  10. python里数字怎么表示_Python 中的数字—Python 学习笔记