在软件项目中常见如下的现象:
用户提出了需求变更,市场人员答应了,开发人员认为工作量太大,不好实现;
软件项目签订了合同,规定了价格,在后期的开发过程中,需求变更很多,变更的成本都是乙方承担,项目结束后发现项目做亏了;
用户提出了需求的变更,开发人员直接修改软件,没有通知相关人员;
用户张三提出了需求变更,开发人员修改了软件后,张三又认为不妥当,需要修改回去;
用户张三提出了需求的变更,开发人员修改了软件,用户李四看到了,认为需求不妥,需要修改回去,张三与李四的意见没有统一;
用户提出了需求变更后,软件开发人员只是做了局部的修改,有的功能漏改了;
等等,上述的现象可以罗列出很多。
这些现象的原因都是由于缺少一个决策的机构对需求进行管理。在敏捷方法中是通过现场客户或product owner来实现需求的控制作用,但是这样的角色需要满足如下的要求:
Collaborative:易于协作
Representative:具有代表性
Authorized:得到了充分有授权
Committed:尽职尽责
Knowledgeable:熟悉需求
这种CRACK型客户是可遇不可求的,通常情况下,需要一个团队来实现上述的要求,这个团队一般称为需求控制组。需求控制组是需求决策的机构,他负责对需求进行拍板,确定需求做还是不做,做到什么程度,开发的顺序等。需求控制组可以有哪些人构成呢,可以参见下图:
成立需求控制组,再定义需求变更的管理流程,则可以实现了对需求变更管理的制度化建设。需求变更管理的目的不是为了不让需求变更,而是希望需求能够有序地、一致地变更。