标签:
敏捷开发现在已经不是新鲜事物了,我们都从各种渠道听到过不同的团队实施敏捷的胜果,听的时候觉得很美,回到家就发现那都是别人家的团队,结合自己的情况一看就发现问题一大堆。就算是最终打算一试,也经常会不知如何开始。这就是我希望编写这份文档的原因,能够找到一个遵循的敏捷项目管理模型,虽然我们都知道没有一个放之四海而皆准的方法,但在更高的层面上我觉得这仍然是可行的。也就是说,管理模型是一致的,但是其中采用的方法可能各有不同,最终目标是唯一的:打造一支可以快速适应变化的高质量团队,并输出高质量的产品!
今天想跟大家分享的是用户故事的规划过程,对于如何使用用户故事驱动团队的开发过程,后续会有更新。
用户故事可以帮助开发团队从用户的角度来理解需求,同时在交付的过程中按照用户可用的场景进行交付,确保了开发团队可以持续的交付用户关心的功能。但是在实际开发中,团队往往不知道如何入手。
如何用好用户故事需要解决几个关键问题:
用户故事的需求整理方式与传统需求的整理方式有很大的不同,传统软件开发中我们依赖用户需求,技术需求,规格说明书等工具试图使用规范的文档来解决需求收集和传递的问题。在这个过程中,我们将用户的需求转换成技术可以理解并可实施的规格。对于已经习惯了这种方式的人来说,要转换成使用用户故事的方式需要比较大的思维方式转变,大家往往遇到的疑问也是,难道使用用户故事就不需要规格了吗?其实不然,首先我们要了解用户故事到底是什么。
大家可能觉得既然我们使用用户故事来替代传统需求,那么用户故事就是记录需求的方式了。其实,用户故事不是用来编写的,而是用来讨论和跟踪的。
通过以上分析,我们可以看到用户故事如何编写并不重要,重要的是它所驱动的过程,通过这个过程,我们可以把用户和技术团队紧密结合,并让大家产生对交付内容的统一认识。所以,用户故事是一种沟通工具,而不是编写工具或者需求模板!
在真正开始将故事之前,我们首先要确保正确人都参与进来。对于规划一款产品来说,你至少需要:最终用户代表,产品经理(或类似Scrum中的PO),项目经理(或类似Scrum中的ScrumMaster),团队中的技术骨干(那些对实现的业务很熟悉,对所要使用的技术或者系统很熟悉的技术人员),技术骨干又可以分成架构,开发和测试三个不同技能的人。这样看来,你至少需要6个人参与这个讲故事的过程(除非有些人可以互相替代)。
你的故事是讲给这里面每个人听的,同时也希望每个人都能够在讲故事的时候有所输入,不仅仅是在听。
讲故事的过程我们通过3个步骤进行:找线索 -> 画主线 -> 规格化
用户不知道从哪里开始讲故事,这是我们会遇到的第一个问题。其实这时候用户的内心感觉就如同看完一部电影以后走出电影院,试图给没有看过这个电影的朋友讲述。想一想在这个场景下你会如何开始?比如,大话西游大家都看过吧;那么讲故事的方式是,孙悟空在500年前如何如何….,然后紫霞仙子如何如何… 你会发现,你永远都会从某个角色开始讲述。其实让用户讲故事的方式也一样,我们首先要引导用户说出这个故事里都有谁。一部电影是多个角色的故事线交织的结果,一个产品也是一样。有了这些角色,我们就有了可以抽取故事的线索。
这里我们可以借助2个工具来协助找线索:影响地图和用户画像
关于影响地图:【Impact Mapping 影响地图 读书与演练心得】
TODO: 完善使用影响地图找出故事主角的过程
关于用户画像
http://www.zhihu.com/topic/19647591
http://cdc.tencent.com/?p=4898
你会发现,当团队开始整理不同的类型的用户的时候,他们已经开始自然的讲述故事,因为要把一个角色说清楚,你就必须考虑他要做的事情,故事自然就出来了。但是在这个阶段,我们切记不要过于发散,明确我们的目的是整理用户画像,只要不同用户类型间的边界清晰了,就可以结束,不要为细节纠缠。另外,在后续的过程中我们也会发现可能有些角色还需要添加进去,那么就到时候说。
最终将我们整理出的每个用户类型用一张即时贴粘在白板的最左侧,如下图:
一般我会按照距离最终用户的远近来摆放这些即时贴,同时对每个角色进行编号,以便后续可以很容易的进行引用。
有了故事的主角,讲故事就相对容易了。在这个阶段,我们希望能够帮助团队尽量将故事的每一个步骤的都想清楚,通过在看板上进行可视化,我们就可以达到这个目的。这里, 我们可以使用简化版的影响地图,如下图:
标准的影响地图上有4个列,分别是WHY WHO HOW和WHAT,这种结构在进行比较大和模糊的目标讨论的时候,如:战略规划,会很好用,因为HOW和WHAT比较容易区分;但是用在讨论用户故事的步骤时候,其实HOW和WHAT区别不大,如果坚持使用规范的影响地图会让团队感到迷惑。所以,我建议将HOW/WHAT合并。具体来说:
请参考:【影响地图中HOW的理解与对比】
如上图:是一个标准的“新用户注册”的用户故事,大家一定都非常熟悉。基本上这个故事就是浏览者通过 登录->注册->填写信息->验证邮件提交注册,管理员审核,成为已注册用户后首次登录->完善资料。但通过卡片的方式将每个步骤放入白板后你会发现,整个团队可以很好的聚焦到很细节的问题上,同时又对整个故事具备全局观。如果不借助这种可视化方式,那么团队可能很容易丢失当前讨论的主线,从一个细节延展开到其他的部分去了。
注意这里对每个用户故事进行了ID标注,同样也是为了后续可以容易进行引用。
你可能会问,那我用个思维导图一类的工具不是更好么?电子化工具的好处是对信息的保存和分享方便,但是在团队讨论中,我们更加重视团队讨论的氛围,聚焦和整体效率,如果使用电子化工具,就无法让每个人都可以同时对这张图进行操作,而必须由一个人操作,其他人很容易走神,如果工具不熟练还会耽误时间。所以看上白板是个很Low的工具,其实对于团队讨论来说,它的效率高于任何的电子化工具。
如上图:这是我作为敏捷教练参与的一次用户故事讨论,你可以看到大家都聚集在白板周围,整个讨论都是站立进行,任何人都可以随时发表意见,用手指着某个即时贴就可以开始说:“这个”步骤怎样怎样。如果没有可视化工具,或者使用电子化工具,希望每个人都可以用“这个”来聚焦所有人的注意力是很困难的,你可能需要解释“这个”到底是什么,又或者需要在电子工具中鼠标来点,如果操作者不是讲解者,那会更加麻烦。细节决定效率!
有了故事主线,我们就可以进行下一步的功能细化。这一步所产出的其实就是传统软件开发过程中的软件规格说明书。软件规格说明书对于开发人员实现产品功能非常重要,是软件开发中不可缺少的部分。很多人认为敏捷开发不需要文档,其实这是个巨大的误解。但是敏捷开发中的文档确实和传统的需求文档有很多区别:
规格化的过程中我们可以使用用户故事地图的方式来进行,团队一起根据故事主线中的每个步骤进行讨论,分析出在产品的特定区域(模块)中的功能点,并使用技术人员容易理解的方式来描述这部分的功能。这整个过程就是从将需求从用户角度的描述转换到技术实现角度描述的过程。在这个过程中你会发现一些在故事主线中看不到的技术细节。
这个过程中,我们希望综合考虑架构和测试的输入,这两个角色需要从自己的角度确保每个故事的分解都满足架构的要求,并且是可以进行测试的。由于每个用户故事都会穿越多个功能区域,架构师必须协助团队确保架构的扩展性,复用性以及性能等要求。对于测试来说,要确保每个用户故事都是可测试的才能确保后续的测试计划和用例可以配合团队的开发过程,并按照故事逐个交付给用户。
如上图,将以上用户登录这个故事分解为功能点,展示在用户故事地图上,这是标准的用户故事地图格式:
关于用户故事地图:【用户故事地图(User Story Mapping)之初体验】
注:这篇文章对于地图顶层的解释稍有不同,这是我当时对用户故事地图的理解还不深入造成的。
讲故事的过程我们一般通过需求讨论会的形式来进行,确保以上应该参与的人员都到场。既然是个会议,我们就必须确保会议的高效,这里可以参考三星高效会议的8点原则:
(1)凡是会议,必有主题;
(2)凡是主题,必有议程;
(3)凡是议程,必有决议;
(4)凡是决议,必有跟踪;
(5)凡是追踪,必有结果;
(6)凡是结果,必有责任;
(7)凡是责任,必有奖罚;
(8)凡是奖罚,必须透明。
针对需求讨论会,我们至少需要有以下安排
需求讨论会的过程就是按照以上3个步骤讨论故事和分析故事的过程,我们可以按照以下流程进行
以上是如何使用用户故事来驱动产品规划和设计的过程,后续我会对如何再借助kanban和Scrum来驱动开发和交付过程。
请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息
标签:
原文地址:http://blog.csdn.net/ups216/article/details/51549776