很多企业由于不具备自建软件研发团队的能力,或者预见当前项目无需长期持续运维,于是采用外包的方式完成特定需求的软件定制开发。
软件项目的需求通常是会持续发生变化的。原因包括甲乙双方对需求理解存在的分歧需要时间才能暴露、需求方对需求的表达从碎片化到完整需要时间、外部业务环境发生变化或甲乙双方对客观环境的认知发生变化,等等。
软件需求的变化会引发项目工作内容变化,成本、预算和工期也往往随即改变。在商务上,甲乙双方要共同认可这些改变需要花时间协商和谈判,然后技术团队才能执行需求变更的实施。技术团队在遇到影响工作量、工期的需求变更情况的时候往往只能先暂停实施,等待项目经理甚至商务主管介入并协商成功之后才能继续推进项目。
实践中,需求变化引起工作量变化并不是导致外包项目工期延长的唯一原因;更多时候,成本和预算变化涉及商务条款变更所需要的协商和谈判才是外包项目按时验收的主要障碍。
有什么方法能在外包项目中快速响应需求变化,尽量不耽误工期?
拆成两个外包项目
很多企业在招投标的时候都会提供一份详细的软件需求说明书,方便投标方评估和报价。这些软件需求说明书有的长达数十页甚至数百页,非常具体和清晰。这样的项目执行起来通常偏差会比较小,相对容易掌控进度。
事实上,招标使用的软件需求说明书是需要时间和成本梳理和编写的。大企业通常会聘请专业的咨询顾问公司负责编制软件需求,这就是独立于执行具体程序开发工作的另外一个项目了。
在软件需求编制项目中,整理出来的需求包括流程图、业务过程说明、系统原型、数据接口规范等多个方面,需要客户反复确认、修订并最终签字,其过程已经处理了大量的“需求变更”。由于需求编制阶段并未开展软件设计和编码,大部分都是文档性工作,需求反复细化和调整并不存在障碍,因此可以快速迭代。
2. 项目开发分期报价分期实施
把大项目拆分为几个小项目分期签约实施,这样可以降低系统的复杂度,把一些并不紧急的需求变更放到下一期项目再实施,从而不构成对当期项目的影响。
从响应需求的角度来说,对需求变更的理解能快速达成一致,并且放入了下一期的计划。虽然这些计划变更的需求尚未实现,但纳入计划本身就完成了对需求的“响应”了,实现了对需求和预期的管理。