敏捷开发的一些思考--故事拆分

敏捷开发目前已成为互联网公司的首选方案,为应对市场的快速变化,我们公司也在大力推广敏捷,最近在读《用户故事与敏捷方法》一书,我想边读边做一些分享,传播知识的同时加强记忆。

1.      
基于用户建模是一个比较好的起点。

产品团队可以采用头脑风暴等形式,挖掘出产品实际存在或者潜在的用户或客户,给他们一些角色。

多种角色出现重叠时,再将重叠部分成立一个独立角色。

比如“运维角色”和“部署角色”都需要做一件事情:做数据修改,那么我们就考虑一个“数据修改角色”专门做这个事情,然后“运维角色”和“部署角色”就都不包含这个职能了。

再然后呢,给每个角色找一个生动的虚拟人物来代替,让团队熟悉这个人,就像身边的一个朋友一样了解。

例子:“借款人角色”,代表人物叫“张穷”,30岁,小餐馆经营者,这两年生意做得不错,想扩大店面,但是手头吃紧,正绞尽脑汁想找一笔贷款。

用户建模时,可以考虑一些特殊的人群,他们有助于发现一些细致的需求。比如老太太需要屏幕字体够大。

2.      
寻找用户。

最理想的方式是能够找到软件真实的使用者,了解他们的需求。

条件不成熟的情况下就只有寻找用户代理,不同的人群都可以担任用户代理,但是要注意不同的用户代理看待问题大多是从个人需要出发的,要摸清他们的一些小脾气。

实际用户的经理:他们对于产品细节的关注度可能不高,因为他很可能平时不做实际操作,对于群众疾苦了解得不够;他们可能会过分关注一些管理功能,比如任务调度、查看每个手下现在的任务完成情况等,而这些功能很可能不是产品核心的东西。

开发经理:他们通常缺少对软件的实际体验,其内心驱动因素很可能是业务压力或者成就感,这样的动机很容易背离产品核心业务价值。

销售人员:他们的核心价值观通常是尽量多的订单,为了不丢单,他们总会承诺“没问题”,各种稀奇古怪的东西都想丢进产品里面,使得产品没有规划、随遇而安。

领域专家:他们通常能够在产品设计上提供很大的帮助,但要小心他们弄出一个太“高大上”的东西,不接地气,让小白的用户觉得软件极其难用。

系统分析师:他们是很有想法的文艺青年,既懂技术又懂业务,是很好的用户代理。但要小心他们的空想症,他们有可能花上两天去精心设计一个业务流程,但根本没有做过任何调研。最坏的结果是最后不得不推翻一个精心雕琢的楼阁,浪费、肉疼。。

3.      
切割故事。

传统的切割方式大多是按实现层面或者技术栈来切割,比如一个功能别切割为前台、后台、数据库几个任务,或者按照技术栈切割为java相关、C#相关、移动端几个任务。

这样的切割方式最大的问题是:单个任务不能产生业务价值、相互依赖导致无法快速交付并得到反馈。

推荐做纵向的切割,每个故事尽量是一个功能闭包,一个故事完成意味着一个功能可交付。

以京东提交订单功能为例,其业务流程为:基于预先选好的商品信息,先选择支付方式、再选择配送方式,然后提交保存。

传统的切割方式可能为:

T1:
前台交互实现(选择支付方式、配送方式),形成可提交的订单数据后提交给servlet

T2:后台接收订单数据,保存到数据库,给成功提示。

考虑换一种切割方式:

S1:基于预先选好的商品信息,使用默认支付方式和配送方式,提交订单并保存。

S2:支持用户选择支付方式并保存订单。

S3:支持用户选择配送方式并保存订单。

我们不要写哪种大而全的故事,一个故事只为一种客户编写,只满足其一个小小的业务价值。

编写故事时尽量避免涉及界面的描述,这会诱导开发人员按照某人脑海中印象来实现功能,这实际是把设计意图强加到故事之中,更致命的是会隐含的扩大故事范围。

比如这样一个故事:

在首页的右上方,用户可以看到“注册”按钮并点击它,之后弹出一个对话框,用户录入注册信息后,点击提交按钮,若注册成功就回到首页,并发送激活邮件。

它的问题:

涉及太多的界面信息,它阻止了开发人员或者分析师跟客户做进一步沟通的欲望,也许这样的交互设计是蹩脚的呢?

考虑写成这样也许更好:

在首页醒目位置可以进行用户注册,注册成功需要发送激活邮件,注册失败需要失败提醒。

下期分享:故事估算和制定计划,谢谢围观~~

敏捷开发的一些思考--故事拆分

时间: 2024-08-27 21:38:40

敏捷开发的一些思考--故事拆分的相关文章

敏捷开发(四)- 故事验收测试

接着上篇 "估算故事"讲,故事估算完成以后就要开始考虑如何进行验收测试了,只有验收通过故事才算开发完成. 对于一个故事,开发人员和客户可能会讨论很多,讨论的内容可以以测试用例的形式记录下来,这样就为我们故事测试做了铺垫,目前敏捷开发中测试大约有如下2个步骤    1.将测试要点记录到敏捷的故事卡的背面,任何时候发现新的测试,都可以记录到故事卡背面     2.将测试要点变成全面测试,这些测试用来演示故事已正确.完整的实现 下面说一下什么时候写测试用例,以及测试的方法.  在编写代码之前

在敏捷开发中成就训练有素

<从优秀到卓越>这本书中有一章专门提到了训练有素的文化,給我留下很深的印象:"每个人都想成为最好的,但大多数组织缺乏纪律,不了解自己,不清楚自己的最大优势是什么,凭借什么把潜力变成现实.他们缺乏严格的训练有素的文化规范自己."一个优秀的企业,一个优秀的团队的特质就是训练有素,一只训练有素的军队能打赢所有硬仗,一个训练有素的团队能创造出过硬的产品. 对于敏捷开发模式,我更愿意把它的贡献看作打造一支训练有素的团队,一个高效执行的团队.一个训练有素的团队,一个高效执行的团队有四个

项目管理(十二)- 敏捷开发之编写故事

在本章我们将关注故事编写,为了更好的构造故事,我们关注六个特性,一个好的故事应该具有如下6个方面的特点 故事的6个特征 1.独立的 避免故事之间的相互依赖,在对故事排列优先级时,或者使用故事做计划时,故事间的相互依赖会导致一些问题 2.可讨论的 故事是可讨论的,他们不是签署好的合同或者软件中必须实现的需求,敏捷故事是功能的简短描述,细节将在客户团队和开发团队中讨论中产生,故事是提醒客户团队和开发团队以后要进行关于需求的对话,它并不是具体的需求本身,因而它不需要包含具体的细节.这些细节可以在后期例

一步步学敏捷开发:3、如何写用户故事

本文是今年1月份参加Agile1001公开课后,并参考<用户故事与敏捷方法>这本书整理,阅读全文 一.什么是用户故事 用户故事是描述对用户有价值的功能,好的用户故事应该包括角色.功能和商业价值三个要素. 用户故事通常的格式为:作为一个<角色>, 我想要<功能>, 以便于<商业价值>.一个好的用户故事包括三个要素: 1.角色:谁要使用这个功能. 2.功能:需要完成什么样的功能. 3.价值:为什么需要这个功能,这个功能带来什么样的价值. 用户故事通常按照如下的格

用户故事与敏捷开发方法笔记06

用户故事得到这么多人的肯定,是因为它自身的优势有很多:1.用户故事强调口头沟通,因为传统的通过各种文档进行表达,每个人对于文字的含义的理解都不同,所以在阅读文档的过程中可能会因为理解的不同对项目的完成造成影响:2.人人都可以理解用户故事,并且用户故事可以增强人们对各种事件的记忆:3.用户故事的大小适合做发布规划以及进行编程和测试:4.用户故事适合于迭代开发,项目过程中可以写出一部分故事然后就进行编码和测试5.用户故事鼓励延迟细节:6.用户故事支持随机应变的开发,因为用户故事注重口头交流,而且很容

《用户故事与敏捷开发》阅读笔记02

 <用户故事与敏捷开发>阅读笔记02       这周读了<用户故事与敏捷开发>的第四至七章,第四章讲述的是如何搜集故事,也就是如何正确的去找到用户需求.作者明确指出"引用"和"捕捉"是不合用的.所谓"引用"和"捕捉",我想是通过用户对功能的表述,开发人员从中获取需求信息吧.如果是这种方法来获取需求,正如作者所说,用户不会知道所有的需求,所以只靠着这方法是远远不够的.对于故事编写的数量以及程度,作者认为

使用.NET进行高效率互联网敏捷开发的思考和探索【一、概述】

不知从什么时候开始,创业变得很廉价,谈什么都是互联网,动辄融资千万.这阵风好像也刮向了程序员中,有那么一大批开发者,数据结构不好好学习.数据库原理不扎实掌握,在github上发布几个项目,用nodejs创建一些服务,再用H5写出APP,就自以为迈入了高级程序员的队伍,能够运筹帷幄互联网项目,难道学习新技术.新理念就是快速成长吗,显然不完全是,在这浮躁的氛围中,各种粗制滥造的互联网网站.APP接踵而至,很多看似漂亮的APP,连简单的http接口安全都没有措施应对,很多美丽的响应式网站,目录结构随意

用户故事驱动的敏捷开发 – 2. 创建backlog

本系列的第一篇[用户故事驱动的敏捷开发 – 1. 规划篇]跟大家分享了如何使用用户故事来帮助团队创建需求的过程,在这一篇中,我们来看看如何使用这些用户故事和功能点形成产品backlog.产品backlog是敏捷开发中用来管理需求列表,排定优先级,形成迭代计划,组织开发/测试和交付过程的工具.可以说,产品backlog是一个敏捷团队管理开发过程的核心,所有的活动和交付物都围绕backlog来进行.一旦需求明确,我们就必须在开发过程中持续的跟踪backlog内容的实现和交付过程,确保我们的想法可以按

《用户故事与敏捷开发》阅读笔记04

  <用户故事与敏捷开发>阅读笔记04 今天抽出了两个小时读了<用户故事与敏捷开发>的第十二.十三.十四以及十五章并写了这篇阅读笔记.第十二章标题为"故事不是什么".IEEE 830是一本关于如何编写软件需求规格的指南,最突出的特征是使用短语"系统应该.....",但作者认为以这种方式编写系统的所有需求实际是一个不可能的任务.因为用户看到正在开发的软件时总会有有效和重要的反馈循环.他们会改变之前的想法,而且每个需求的成本是不可见的,会造成分析