1.1前言
软件中的很多问题大多数来源于人们了解、记录、协商和修改产品需求的方法不当。现实生产环境中的软件产品发现的缺陷有40%~50%是在需求阶段埋下的“祸根”(Davis 2005)。在具体说明客户需求和管理客户需求过程中用户输入不足和有误,是造成项目失败的罪魁祸首。在软件项目中,所有干系人的利益交接点主要集中在需求方面。(更多干系人方面的内容参考本栏目后面章节)这些干系人主要包括客户、用户、业务分析人员和开发人员等。若处理得当,这种交接既让客户满意,又能鼓舞开发团队。若处理不当。则会引发误解和摩擦,最终降低产品质量和业务价值。
本章将学习:
- 理解软件需求领域所用的一些关键术语;
- 区分船票需求和项目需求;
- 区分需求开发和需求管理;
- 警惕可能出现的与需求相关的一些问题。
给自己的需求把把脉:
- 从来没有清晰制定过项目的业务目标、愿景和范围。
- 客户太忙,没有时间与分析师或开发人员共同处理需求。
- 团队无法与用户代表直接互动,不理解他们的具体需要。
- 客户认为所有的需求都很关键,因此没有对需求排定优先级。
- 开发人员在写代码时遇到了模棱两可或者遗漏的信息,所以只能靠猜。
- 开发人员与干系人沟通的重点集中于用户界面展示或者特性,并没有关注用户要使用软件完成的具体任务。
- 需求从来没得到过客户的认可。
- 客户认可了某个发布或者迭代的需求,但事后不断更改。
- 不断接受客户的需求变更请求,项目范围随之扩大,由于没有增加资源或者删减功能,进度最后完全被打乱。
- 有人提出了变更请求,但被忽略,没人知道特定变更请求的具体状态。
- 客户提出特定的功能要求,而且开发人员也建好了,但就是没有人使用过。
- 在项目接近尾声时,虽然满足规范说明,却不满足客户或业务的目标。