在敏捷软件开发中,对需求的管理是至关重要的。目前,如何把需求在敏捷中深入推进,未见相关最佳实践。根据笔者长期观察,大部分敏捷团队,仅仅是基于市场需求说明中粗略的描述性文本,把这些文本转换成Product Backlog中的用户故事条目,这些用户故事条目基本具备故事的一般特点,但也存在不符合INVEST原则的大量案例。
除此之外,目前用户故事最大的一个问题是,开发人员拿到用户故事之后,并不知道一个个独立的用户故事是如何再串联起来,完成业务功能,解决用户实际问题的。也就是说,目前的用户故事往往存在以下问题:
1) 故事面向的用户说不清楚
2) 故事应用的场景说不清楚
3) 故事如何串联说不清楚
这一个个说不清楚,往往说明,从业务角度,无法清晰描述业务功能,从而很容易导致开发团队盲目实现需求,没有需求链上的倒逼机制,使得模糊的需求得到想当然的实现,最后却发现开发的很多功能根本没有使用场景,使得大量工作产生巨大浪费。
Mike Cohn在其经典著作《用户故事与敏捷方法》中,已经对上述问题进行了详细的理论和实践上的探索,也给出了虚拟人物的方式进行用户角色建模,但其中缺乏对虚拟场景的详细说明。
笔者借鉴了Mike Cohn的相关理论,以用户角色建模、用户故事收集为基础,增加通过虚拟人物执行虚拟动作的虚拟场景模式,来弥补整体功能设计的缺陷,从而为后续的功能设计是否合理、界面易用性设计、Product Backlog等做出前端的描述,以生动有趣的方式将用户故事活化,避免故事的枯燥,也避免了用户故事的条目化导致的对整体功能设计的分割。
以某项目的VIP用户分析为例,对上述做法进行详细描述。
1) 用户角色建模。
软件对应的用户是很多的,他们具备不同的背景,持有不用的使用目标,但仍然可以通过分类,将用户分成多种角色,从而给予一组人的特征,以及这组人与系统可能的交互来进行角色建模。
用户角色建模的步骤如下:
l 识别用户角色
l 整合角色
l 提炼角色
下面以某项目具体分析后结果为例:
2) 用户故事搜集
用户故事搜集的的常规方法主要有:用户访谈、问卷调查、观察、user story workshop。无论采用哪些方法,都应该在项目的早期尽可能编写可以编写的故事。但这种方法与传统的瀑布式需求管理还是有差别的。敏捷中用户故事没有要求必须是保证每个用户故事都是正确无误的,它比较强调的是故事的成长性,以及故事根据不同成长阶段可以采用不同粒度去描述。
user story workshop方式以深度优先为佳,即对某一用户角色,不断挖掘器可能存在的故事,直到结束,然后再换一种角色继续整个过程。最后,需要对所有故事进行整理,形成故事列表。下面是某项目采用user story workshop方式搜集到的故事列表(局部展示):
3) 虚拟场景串联各个故事
用户故事是一个个相对独立,符合INVEST原则的故事。单个用户有其存在的业务价值。但仅仅有这些独立的故事,往往不能很形象的展现出用户是如何使用这些故事的。虚拟场景就是一种有效串联故事的手段,通过形象化描述,使得用户故事的所有使用者,都能够明白为何有这些故事,这些故事是用来解决用户的什么问题的。
下面给出某项目设计的虚拟场景:
虚拟场景描述方式在某项目的某个模块易用性改进中得到了实际应用,得到了从需求提出人、BA、开发人员的一致称赞。
这种方式使得需求的所有干系人,都比较清楚需求为何是这样的,功能设计为何是这样的,整体操作为何是这样的,界面设计为何是这样的。围绕虚拟场景来进行需求开发,也是一种很好的市场需求反馈机制:如果我们没有办法说清楚用户如何使用这些功能,那为何要设计这些功能呢?