上一篇《用户故事的前世今生》,和大家聊了用户故事的由来。那么,大家可能会问,敏捷开发方法中有那么多的技巧经验,为什么你要把用户故事作为一个独立的敏捷实践来定义呢?今天在这里,就和大家一起探讨一下,为什么用户故事可以被称为一个“敏捷实践”。
大家知道,一个独立的实践方法必然有其独特的价值和与众不同之处。那么对于用户故事来说也是如此。首先,我们来看一下用户故事的独特的价值。 用户故事的独特价值之一在于它的出现使敏捷开发方法覆盖了软件研发中的“需求”环节。敏捷方法诞生十余年到现在我们知道,一个研发团队要想实现完全的敏捷转型光是实现迭代开发过程的敏捷化是不够的,SCRUM和Kanban都无法解决产品需求敏捷化的问题。而用户故事的诞生,就是为了实现需求的敏捷化。虽然用户故事实践本身还存在一些不足,但是至少到现在我们知道,用户故事是需求敏捷化的基石之一。
用户故事的独特价值之二在于它不仅实现了需求敏捷化的表述,还有效的将软件研发过程中的需求环节、开发环节和测试环节有效的连接起来。通过经典的“三段论“描述和渐进的细节探索,用户故事实现了需求描述的敏捷化;通过优先级排序和故事点的有效应用,用户故事实现了需求到开发的连接;通过验收标准的渐进明确,用户故事实现了需求与测试的连接。可以说,正是有了用户故事这根线,才把软件研发团队的主要的工作环节:需求、开发、测试都有机的串联起来。
用户故事的独特价值之三在于它的特有的度量概念:故事点。我一直认为,故事点的发明,是用户故事实践里面最成功处之一。如果你真实的实践了故事点,你才会发现,故事点巧妙地将需求与研发计划有效地融合起来,并且很好地支撑了团队的持续改进。具体细节,请见本系列其他文章详述。 以上,就是我目前梳理的用户故事的独特价值,我觉得,这些独特价值是其他敏捷实践所不具备的,所以,做敏捷你一定要实践用户故事。
上面说了用户故事的独特价值,下面我们说一下用户故事的与众不同之处。所谓与众不同之处就是独有的。用户故事的独有之处是什么?就是它的INVEST特点。 2004年,敏捷大师Mike Cohn在他的用户故事经典之作《User Stories Applied For Agile Software Development》中详细阐述了用户故事的INVEST特点。所谓INVEST, 是指一个好的用户故事应该具有六大特点:Idependent(独立的);Negotiable(可协商的);Valuable to users or customers(对用户或者客户是有价值的);Estimatable(可估算的);Small(小的);Testable(可测试的)。
Idependent(独立的)是指用户故事和用户故事之间应该尽量避免相互依赖。为什么呢?因为传统的需求描述方式(功能模块、用例等等)由于个体较大,彼此之间依赖较多,导致输入到开发阶段时开发工程师不太容易计划他们的工作,从而导致的开发延期的现象就变成大家习以为常了。而独立性较好的故事能够独立交付,从这一点,用户故事就充分的考虑到了需求与开发的敏捷化连接问题。
Negotiable(可协商的)这一特点在六个特点里面一直是较难理解的,有些资料将这一点翻译成“可讨论的”、“可沟通的”,个人认为“可协商的”较好。为什么呢?首先,一个用户故事描述了一个需求条目,在进入开发前,需求、开发、测试大家对用户故事的描述和验收标准已经达成了一致。但是不管在开发前达成怎样的一致,在开发过程中必然会发生需求细节的进一步细化,这是因为随着软件开发的进展,系统的未知性由模糊而渐进清晰必然导致的结果,这是自然规律,任何人都无法避免。而我们能做的,就是运用敏捷方法适应各种变化。用户故事的“可协商性”就是指大家对所有之前达成的一致在新的变化发生情况下,协商后达成新的一致,从而推动系统的研发进展。从这个角度而言,“可讨论”、“可沟通”只是“协商”的方式,所以我认为这个特点应该是“可协商的”。
Valuable to users or customers(对用户或者客户是有价值的),用户故事的经典三段论描述把故事的价值可视化的描述出来。这个特点促进团队的开发和测试成员由传统的指令式工作方式向自驱动的价值导向工作方式转变,使团队中的每个人知道自己每天做的工作价值。所以说,如果你使用了用户故事但是没有使用经典的三段论描述,我觉得你并没有领会用户故事的真正价值,你用的方法也并不是用户故事。
Estimatable(可估算的),这一特点就是上文中描述的独特价值之三,会另文与大家探讨,在此不多赘述。
Small(小的),因为用户故事是敏捷实践,而敏捷方法追求的是快速交付,那么作为源头,我们输入的需求也应该是面向交付的,所以,好的用户故事必须足够小。
Testable(可测试的),所有合格的需求必须是可测试的,用户故事也不例外。用户故事的验收标准正是体现了这一点。 以上就是用户故事的独特价值和INVEST特点,这是因为具有这些,用户故事才可以当之无愧的成为一个独立的敏捷实践。那么,下一篇再见!