敏捷开发除了要有基本理念之外,日常迭代中更需要结合你选用的具体工具,进行深入思考,才能深谙协同之道。本系列就是我对应用禅道进行敏捷开发的理解。
禅道中,有如下几个概念:
- 产品
- 需求
- 计划
- 模块
产品
在内容上划分为若干需求;
在时间上划分为若干计划;
在结构上划分为若干模块;
需求
需求划分的原则是 INVEST,就是:
- Independent
- Negotiable
- Valuable
- Estimable
- Small
- Testable
我们常用故事来叙述需求,当然也不是都得用故事来叙述。
计划
产品计划,要指明本次计划希望在哪个时间段完成哪些功能特性、实现哪些性能改善等。
- 计划关联需求
如果你习惯经常收集需求,则通常你会先有需求,做计划时,你在计划中关联上你先前整理的若干需求,这就OK了。 - 需求指定所属计划
如果你习惯先搞一个计划,那么在创建需求时指定所属计划(或者修改需求时指定所属计划)即可。 - 计划关联BUG
当然,一个计划可能不仅仅实现需求,可能还需要解决一些之前版本遗留的BUG,那么你就关联即可。或者你把BUG指定在哪个计划去解决。
模块
产品在结构上划分为若干模块/子模块;
模块相当于对需求的一个分类,通过组织模块,可以让大家对产品有一个宏观的把握和认识,也方便对需求进行分类和整理。
需求通常归类到一个模块/子模块。
产品结构是否清晰主要体现在模块划分是否清晰上。模块的划分是一个很重要的基础工作。
需求模块在任务管理和BUG管理上都会得到体现,请务必重视。
小结
在禅道中,产品这一大块里面,核心是需求,而计划和模块都是对需求的组织。
需求,我们常常将其讲述为一个个故事,这一个个故事的实现就意味着我们生产了相应的价值,因此要获得最大的价值,经常要调整故事或需求的优先级,以期实现价值最大化,化解风险。
注意:
产品计划关联的BUG不是在实现这个计划所关联的需求时所引入的BUG。也就是说,某个产品计划所关联的BUG只应当是在本计划之前所产生的BUG。