1 确定主题的优先级
由于很少会有足够的时间来完成所有的事,因此需要通过优先级来确定首先处理哪些工作。确定优先级时需要考虑4个主要因素。
(1)获得这些功能带来的经济价值
(2)开发(可能还包含支持)新功能所需的成本
(3)开发新功能所产生的学习和知识的量及重要性:包括对产品的知识(做什么)和对过程的知识(怎么做)
(4)开发这些功能所减少的风险
需要综合考虑这些因素,首先是主题的价值和成本,这样做可以给主题排出初始的顺序,然后可以根据其他因素前后移动主题的顺序。
2 确定经济优先级
由于大多数公司的底线是赚到或者节省的金钱数目,所以对主题的经济分析可以帮助确定主题的优先级。通常,预测未来两年中收入和操作效率已经足够。不过,如果需要的话,也可以看得更远一些。
对于主题的收益进行建模的一个好方法是考虑它可以产生的收入,主要来自从新客户处(新收入),从现有客户购买更多的许可或额外的服务处(增量收入),从没有这些功能就可能转向竞争产品的客户处(留存收入),以及从它所能带来的操作效率提升上(操作效率)。
有4个可以用于对现金流进行评估的好方法,分别是净现值,内部收益率(投资收益率),回收期和贴现回收期。通过对每个主题计算这些指标,产品所有者和开发小组可以对主题的优先级做出明智的决策。
3 确定合意性优先级
在kano分析中,功能被区分成必要的功能、线性的功能和兴奋点。这一个工作是通过向潜在的用户问两个为完成的:如果有这个功能他们觉得如何,如果没有这个功能他们又会觉得如何。
相对权重方法提供了一种使用一个值来对实现一个功能所带来的收益、不实现它所带来的惩罚和实现它的成本进行评估的方法,这个值就代表了这个功能的优先级。
4 分割用户故事
无论是一个用户故事相对迭代周期太大还是一次迭代的时间不够,分割这个用户故事都是有益的。如果需要提供比单个大故事更准确的估计,分割大型用户故事也是有益的。
缩小用户故事的方式包括:
1)按照用户故事所支持的数据类型来分割
2)根据故事中固有的操作来进行分割
3)按照常用的CRUD操作(创建,读取,更新和删除)进行分割
4)把横切考虑,如安全处理,日志处理和错误处理等,隔离出去使用户故事更小
5)在实现用户故事功能的迭代中忽略性能要求来使它变小,性能要求可以形成独立的用户故事并在以后的迭代中得到满足
6)很多用户故事描述了两个以上的要求,如果这些要求具有不同的优先级,就可以根据它们进行分割
要避免把用户故事分割成实现该功能所必须完成的开发任务。还要避免在一个大型用户故事中增加对交付该故事并非必须的相关变动的诱惑,因为这样会使它变得更大。
最后,记住有些时候组合用户故事也是恰当的,尤其是在修复故障时,他们中的每个本身可能都太小。