用户故事的INVEST原则
对于敏捷开发来说,用于记录需求的载体被称为用户故事,而不是需求规格说明。
敏捷开发是拥抱变化的,所以用户故事不像需求规格说明那样正式、完备、厚重,用户故事比较简单、灵活。
敏捷宣言的签署人之一Ron Jeffries将用户故事的特征概括为“3个C”:卡片(Card)、对话(Conversation)和确认(Confirmation)。
卡片是早期记录需求的一种形式。虽然现在记录需求不一定非得使用纸质的卡片,但是原来使用卡片这种对需求描述要简短精益的意境仍在。对话和确认则体现了敏捷的特性:多与用户交流,从用户那里获得反馈。
用户故事的编写是有讲究的。高质量的用户故事编写应满足“INVEST”原则,即:
独立的(Independent)。独立原则要求编写的用户故事之间应当是相互独立而不是相互依赖的。用户故事的相互独立可以降低需求的优先级排序和迭代计划制定的难度;
可讨论的(Negotiable)。用户故事是可讨论的,意味着故事描述的需求不是巨细无遗的,它只是对需求的简短描述,更多的细节将在与用户的讨论中产生;
有价值的(Valuable)。用户故事必须体现出用户关心的价值;
可估计的(Estimable)。用户故事中的需求描述虽然不够具体详细,但是也必须能够让开发人员对故事的大小和开发的工作量作出估计,否则就无法制定迭代计划;
小的(Small)。用户故事应尽可能地避免史诗式的那种巨型的故事,小型故事既便于估计,便于制定迭代计划和跟踪监控;
可测试的(Testable)。用户故事必须是可测试的,这样才能方便验证故事是否完成。
从以上6个指导原则可以看到,不同于瀑布模型中使用的需求规格说明,用户故事并不要求对软件功能需求做完整的描述,而是在多次迭代中不断完善软件功能。瀑布模型中的需求规格说明描述的是需求开发完成时的结果状态,用户故事则描述了软件需求逐步迭代生长的过程。
这正是:
用户故事要精简,不同规格大而全
通过交流和迭代,可估可测有价值
参考书目:敏捷中国史话,作者:熊节,出版社:人民邮电出版社