这是用户故事系列的第六篇。(之一,之二,之三,之四,之五,之六,之七,之八,之九)

一条需求敢跳出来,基本上就能被化成一条用户故事,看完一二三四五,上山打老虎都不怕,这个似乎已经不太难了。

难的是,项目或产品的第一天,给一张白纸:“请列出有哪些故事”。那个时候其实不是大脑空空,而是有千言万语就是说不出。

前年做另外一件事情的时候偶然得到一种方法,去年到今年用在一个敏捷项目上,果然很舒服地列出了大量故事,后来的开发过程证实它们都满足独立交付、可测试、耦合低等特点,属于好故事之列。

引子

这件事情其实在之前的博客中已经多次提到了,就是软件项目的造价管理。注意这里提到的是项目,而非产品研发。项目就是那种一手交钱一手交货的甲乙方项目。

之前曾经提到过:无论有多少种方法对优先级进行排序,作为产品而言,都永远应该把最体现差异化价值观的功能置于万事之前。

这里要说的则是:无论有多少管理方法,作为项目而言,都永远应该把造价估算置于万事之前。

这个前不是一般的前,最好能用几张A4纸的篇幅就搞定,因为一般老板刚去签订合同的时候,手里没有需求,没有设计,没有故事,就这么几张纸。当然另一个尴尬的事情则是:即使有很厚的需求文档了,也仍然没有方法知道要多久才能完成项目,真的很愁人。

其实这两件事说的是一件事:如何在早期列出具有某种表征意义的需求列表

甚早期的用户故事生成方法

在之前的博客详细描述过了,这里只从产生和组织用户故事的角度谈谈,详情请看文末的链接。

在我们的开发工作中一共有两类东西要开发,一种是数据,一种是操作。

所谓数据,就是比如要编写一个CRM,其中有“用户、角色、权限”这三种东西,就是要管理的数据,这里权且记下用户有“3个史诗故事”要管理。

所谓操作,就是对用户,应该有增、删、改、查、加入角色……这些称之为操作,这里权且记下对用户,用户会有“5个用户故事”。

下面是我们的实际项目的局部截图,课本是史诗,蓝色是故事带括号和加号的是两个合并的故事,箭头是增强请参考上篇故事分类:

史诗都是名词,都是要被管理的核心信息,而且是用户可以理解的信息;

故事都是动词,都是用户平日里使用软件产品所进行的业务操作;

最后一个小贴士是每个史诗故事平均有7个左右的故事,少于4个要怀疑是不是史诗,多于10个要怀疑是不是应该拆分新的史诗了。

最后这条是NESMA 20年来的经验数据,很值得参考但莫较真。比如上面例子分为用户/角色/权限3个史诗对19个故事(平均6.3个),你可以试试再拆拆或合合,效果肯定不如这三个干净。只能说他们20年真没白干。

这个方法听起来很水很模糊,但因为开过几次造价估算培训课,在我经手的3次培训中,通过短短1天培训后,4~5个小组的(最大-最小)/平均 误差只有正负12%,而误差的很大来源,是一个模拟问答环节总是比较嘈杂,很多团队没有注意听答案!@¥#…%!核对需求后,误差可迅速降低到大约一半。课堂练习只有一张A4纸,里边很模糊地隐含了多达90多个用户故事,练习时间只有1小时,能达到如此的一致性已经很满意了。

大尺度上用户故事的组织结构

最早我们在史诗之上,就是无意义的层级式目录结构了,但就像太阳系外有银河系,银河系外有超星系,超星系外有超星系团一样,事情还没有完。

本来以为在史诗之上没有有实际逻辑意义的结构了,但发现“用户角色权限”这三个故事的距离,远远近于其他故事,应该还有一种具有逻辑意义的东西来描述;其他一些史诗故事也发现了这种内聚性,但尚无合理的划分方法将其定义下来。

笔者暂时创造了“故事群”这个概念来描述他们,但没有找到合理的定义,让不同的人可以一致性地划分故事群。

之所以借用功能点分析的概念来产生和组织用户故事,是因为关于用户故事,一直没有非常标准的颗粒度和组织方法;而对于数据、操作,则在接近40年前就开始尝试标准化定义,当前有5个国际标准之多,中国的国家标准也马上出来了。在接受这些标准培训后,不同个体对数据和操作的计数差异,只有不到10%;尚没有任何用户故事的定义能达到如此一致性。

敏捷世界一向有封闭的特性,比如CMMI在尝试拥抱敏捷,但从来没听过敏捷拥抱CMMI的。

不否认创造和使用敏捷开发的一线员工在定义需求、制定计划、每日跟踪中的经验和权威性,但在大尺度上掌握用户故事的组织结构,以及在甚早期判断项目范围的方面,则正是这一人群的弱项。

敏捷方法需要借鉴已有的外界方法。

为什么不用UML方法?因为本人很不熟悉UML。UML比较适合在大尺度上组织用户故事,但很难在甚早期开展(一张A4,隐含90个故事,1小时估完)。

当然这不会抹杀UML在分析用户故事中的作用,日后或许会请另外一位老师写篇文章《用户故事与UML》,我转发过来作为其中一篇,以求完整。

早期功能点估算1:http://blog.csdn.net/cheny_com/article/details/6723708

早期功能点估算2:http://blog.csdn.net/cheny_com/article/details/6723715

点击下载免费的敏捷开发教材:《火星人敏捷开发手册》

转载于:https://www.cnblogs.com/JPAORM/archive/2011/10/10/2510426.html

敏捷开发用户故事系列之六:用户故事的产生与组织结构相关推荐

  1. 敏捷开发日常跟进系列之三:故事板,看板

    这是敏捷开发日常跟进系列的第三篇. (栏目目录) 故事板和看板其实不是一个东西,前者是最初的敏捷开发里边的东西,受到了后者的启发产生的:而后者是制造业的东西,具体内容请参考末尾的百度百科.但是在敏捷开 ...

  2. 敏捷开发产品管理系列之六:Product Servant

    本文是敏捷开发产品管理系列的第六篇.(序言及设立迭代目标,产品版本规划,产品用户群规划,新产品研发,预估会议,Product Servant,Product Owner团队,产品线管理) 马与马车夫的 ...

  3. 敏捷开发产品管理系列之三:产品用户群规划

    本文是敏捷开发产品管理系列的第三篇.(序言及设立迭代目标,产品版本规划,产品用户群规划,新产品研发,预估会议,Product Servant,Product Owner团队,产品线管理) 上周在培训做 ...

  4. 敏捷开发日常跟进系列之二:燃尽图(中)

    这是敏捷开发日常跟进系列的第二篇(栏目目录). 迭代及燃尽图的目标 燃尽图的目标是完成迭代的目标,迭代的目标是什么呢? 1. 按产品经理的要求,交付计划会中计划的用户故事 2. 尽量完成1 之后还会看 ...

  5. 敏捷开发日常跟进系列之一:燃尽图(上)

    这是敏捷开发日常跟进系列的第一篇(栏目目录). 这个系列将涉及燃尽图(Burndown Chart).故事板(看板).每日立会等内容,描述在计划会之后,评审会之前,敏捷开发团队内部产出与产品经理和项目 ...

  6. 敏捷开发产品管理系列之二:产品版本规划

    本文是敏捷开发产品管理系列的第二篇.(序言及设立迭代目标,产品版本规划,产品用户群规划,新产品研发,预估会议,Product Servant,Product Owner团队,产品线管理) 本文是一篇旧 ...

  7. 敏捷开发产品管理系列之四:新产品研发

    本文是敏捷开发产品管理系列的第一篇.(序言及设立迭代目标,产品版本规划,产品用户群规划,新产品研发,预估会议,Product Servant,Product Owner团队,产品线管理) 这里所指的新 ...

  8. 敏捷开发团队管理系列之三:程序与测试团队II

    这是敏捷开发团队管理系列的第三篇.(之一,之二,之三,之四) 测试团队的价值 这样看来,敏捷开发的质量保证问题,都被发开团队解决了,测试团队的价值何在? 这个可以从第一个项目组后来的发展来分析. 在整 ...

  9. 敏捷开发团队管理系列之二:程序与测试团队I

    这是敏捷开发团队管理系列的第二篇.(之一,之二,之三,之四) 几个真实案例 这几个团队都是我自己亲身经历的团队,从质量的角度来分析敏捷团队的工作方式. 第一个是一个较为大型的团队,约有25-30人,研 ...

  10. 敏捷开发团队管理系列之一:序言与出发点

    这是敏捷开发团队管理系列的第二篇.(之一,之二,之三,之四) 之前的各个系列中,已经涉及了很多团队管理相关的内容,比如松结对编程系列中提到过大型团队分拆为微观开发团队的管理,产品管理系列中提到过Pro ...

最新文章

  1. 深度学习框架Caffe源码解析
  2. Singleton Pattern(单例模式)
  3. python定义一个dog类 类属性有名字毛色体重_面向对象实践,练习,Python
  4. ToPILImage
  5. Java 并发编程之 volatile
  6. 22.doublewrite/ChangeBuffer/AHI/FNP
  7. 心得2-类图、关联关系介绍.doc
  8. Oracle 数据库管理脚本 命名规范
  9. php7与mysql相关配置_PHP7连接mysql,文件配置问题
  10. 如何学习数据可视化技术
  11. 《数学之美》—自然语言处理
  12. 凸优化学习笔记(五):凸优化算法、无约束优化算法、有约束优化算法
  13. mapinfo在线地图插件_官方插件“战争游戏”使用指南 公测同步开启
  14. python时间格式转换为美式日期_python中有关时间日期格式转换问题
  15. STM32——LCD液晶显示
  16. 闪讯 padavan 配置
  17. 1--request模块
  18. Impala 4.0 启用 LZO
  19. Pandownload 之后,非它莫属
  20. elastic-php实现多个OR并列查询的优化

热门文章

  1. ASIHTTPRequest开源类项目导入问题及解决方法
  2. APP下载页面(支持微信扫一扫)
  3. 个人git指令成长史
  4. java编码规范日常积累(持续更新)
  5. ERP财务报表快消失了?用它做财务系统根本不够用
  6. 中小企业如何建立商业智能
  7. 化工企业数据分析平台项目之应收款分析
  8. c++ post请求_Golang GinWeb框架5绑定请求字符串/URI/请求头/复选框/表单类型
  9. Java中用三种方法输出字符串_java中两个字符串连接的三种方法
  10. python时间格式化