变化并不是人们最害怕的,最怕的是跟不上变化的步伐。同样,在软件研发过程中需求的变更会给研发带来不确定性,但只要把需求变更作为重点、难点小心加以控制,软件研发的进度、成本和质量也就有了"安全"的基础。
需求变更管理的需求
需求变更是因为需求发生变化。根据软件工程思想,需求说明书一般要经过论证,如果在需求说明书经过论证以后,需要在原有需求基础上追加和补充新的需求或对原有需求进行修改和削减,均属于需求变更。
需求变更的出现主要是因为在项目的需求确定阶段,用户往往不能确切地定义自己需要什么。用户常常以为自己清晰,但实际上他们提出的需求只是依据当前的工作所需,而采用的新设备、新技术通常会改动他们的工作方式;或要研发的系统对用户来说也是个未知数,他们以前没有过相关的使用经验。随着研发工作的不断进展,系统开始展现功能的雏形,用户对系统的了解也逐步深入。于是,他们可能会想到各种新的功能和特色,或对以前提出的需求进行改动。他们了解得越多,新的需求也就越多,需求变更因此不可避免地一次又一次出现。
这时,如果研发团队缺少明确的需求变更控制过程或采用的变更控制机制无效,抑或不按变更控制流程来管理需求变更,那么非常可能造成项目进度拖延、成本不足、人力紧缺,甚至导致整个项目失败。当然,即使按照需求变更控制流程进行管理,由于受进度、成本等因素的制约,软件质量还是会受到不同程度的影响。但实施严格的软件需求管理会最大限度地控制需求变更给软件质量造成的负面影响,这也正是我们进行需求变更管理的目的所在。
六大原则
实施需求变更管理需要遵循如下原则:
1.建立需求基线。需求基线是需求变更的依据。在研发过程中,需求确定并经过评审后(用户参和评审),能建立第一个需求基线。此后每次变更并经过评审后,都要重新确定新的需求基线。
2.制订简单、有效的变更控制流程,并形成文件。在建立了需求基线后提出的所有变更都必须遵循这个控制流程进行控制。同时,这个流程具有一定的普遍性,对以后的项目研发和其他项目都有借鉴作用。
3.成立项目变更控制委员会(CCB)或相关职能的类似组织,负责裁定接受哪些变更。CCB由项目所涉及的多方人员一起组成,应该包括用户方和研发方的决策人员在内。
4.需求变更一定要先申请然后再评估,最后经过和变更大小相当级别的评审确认。
5.需求变更后,受影响的软件计划、产品、活动都要进行相应的变更,以保持和更新的需求一致。
6.妥善保存变更产生的相关文件。
应对之道
需求变更控制一般要经过变更申请、变更评估、决策、回复这四大步骤。如果变更被接受,还要增加实施变更和验证两个步骤,有时还会有取消变更的步骤。变更控制流程如图所示。针对变更控制流程,笔者在实际工作中总结出了软件研发人员在需求变更管理实践中的几点对策:
相互协作 非常难想像遭到用户抵制的项目能够成功。在讨论需求时,研发人员和用户应该尽量采取相互理解、相互协作的态度,对能解决的问题尽量解决。即使用户提出了在研发人员看来"过分"的需求,也应该仔细分析原因,积极提出可行的替代方案。
充分交流 需求变更管理的过程非常大程度上就是用户和研发人员的交流过程。软件研发人员必须学会认真听取用户的需求、考虑和设想,并加以分析和整理。同时,软件研发人员应该向用户说明,进入设计阶段以后,再提出需求变更会给整个研发工作带来什么样的冲击和不良后果。
安排专职人员负责需求变更管理 有时研发任务较重,研发人员容易陷入研发工作中而忽略了和用户的随时沟通,因此需要一名专职的需求变更管理人员负责和用户及时交流。
&nbs