在传统的waterfall开发模式中,一般公司都有专门的需求分析团队,作为研发和客户之间的桥梁。需求分析团队会有需求规格说明书和需求用例说明书两个标准文档,其中需求用例说明书详细的描述了事件流、页面流、前置条件、后置条件、约束、非功能需求。特点是:花费的时间较长,需求变更导致的影响大(修改测试用例、代码等)
敏捷开发获得需求的步骤为:
1. 客户会提出一些story,重点是站在商务的角度提出功能。story的要点分为Who,What和Why。其中Why就是这个功能的商业原因
2. 客户和Team一起讨论example或者是Scenario,这个是test-driven的基础
3. 讨论细节,包括验证标准...
敏捷开发和waterfall开发在需求层面最大的区别在于:
1. 更彻底以business value为出发点
2. 需求颗粒更小
3. 以working system和用户沟通,更加有效
4. 用户可以随时调整需求(当然以iteration为周期),需求变更对系统的影响小
5. 对自动化要求高,无论是编码还是测试,要求timely的反馈
对于很多外包公司的项目,waterfall或者RUP还是用的比较多。外包公司希望需求明确,因为需求变更可以作为后期的业务,给公司带来持续的收入。