软件看板之父David Anderson:使用看板方法进行项目管理3

2017-12-22 10:10:00
David Anderson
转贴:
CSDN
813
摘要:本文是软件看板之父David Anderson 博客文章,项目管理系列集锦,包含四个方面的内容:使用看板方法管理项目、使用排序规则制订计划、项目预测、风险审查与阻碍集群。

本文是软件看板之父David Anderson  博客文章,项目管理系列集锦,由Agilean学院陈玉毅、张明翻译,侯伯薇审校。

以下为翻译正文:

三、项目预测

2008年,看板方法第一次震惊了整个敏捷社区:它不必使用敏捷专家们大力推崇的一些实践,包括带有时限的迭代、优先级的概念,甚至可以不使用估算!问题来了,如何才能借助一种不使用估算的模型来做项目计划呢?答案是:使用历史数据或者具有预测能力的模型构建针对项目产出的概率预测。以下简要介绍一种简便而常用的模型,可用于对项目交付进度作出预测。

项目预测的统计学支柱

使用看板时,我们可使用两个关键的理念进行项目预测,一是看板系统所拉动工作的前置时间分布,二是源自排队论的利特尔法则(Little's Law)。

前置时间分布

图1 前置时间分布

图1展示了针对在看板系统中流动的工作项(通常指项目的功能或需求)的前置时间分布。使用类似图中的历史前置时间分布前,我们有必要理解几个假设,以确保选择了正确的数据。此外,还必须相信,将来观测到的表现与过去的相似。对于流动效率低下的工作环境来说,这一点尤其重要。这样的环境中,个体技能和所采用的技术实践对前置时间有重大影响,而需求的规模或者复杂度没有那么大的影响。因此,对于流动效率低下的环境,可以在更换人员、大幅改变需求捕获方式和变更技术工作实践的同时,保持观察到的前置时间分布不会受到重大影响。在流动效率较高的环境下,我们要注意保持个体的技能和经验与采集历史数据时的高度相似,保持工作实践与分析和需求开发方法高度相似。这就可以保证我们可以预期将来的前置时间分布会与现有的数据充分一致,从而使用历史数据进行可靠的预测。

其次,要作出准确的预测,需要单一模态的数据。要获得这样的数据用于前置时间分布,对于不同种类的工作或不同级别的风险,需要有各自的分布曲线。因此,对需求进行风险评估,根据风险类型对历史数据进行聚类和过滤,是作出准确预测的关键所在。

再次,要创建最适合自己的分布曲线,要知道应该从过去多久开始对前置时间直方图进行采样。这时候前置时间趋势图就派上用场了。我们可以观察趋势图中系统设计的变化,关注平均时间和数据点变差的分散程度。不连续的点通常反映了系统设计的变更(有望是改进),如果找到这样的点,只需采集到均值和变差分散程度发生改变的点即可。换句话说,我们需要一张能够反映当前状况且不混有早期数据点的数据直方图。还有一种找到这一时间点的方法,就是监控看板系统的流动性,寻找流动性水平发生较大变化的日期。这样的日期可作为制作直方图时数据采样的历史时间起点。

只要有了针对项目范围内各类风险(服务级别)或各类工作的直方图,并假设项目范围和需求由工作或者风险的类型表示(本系列文章的第二部分已有讨论),我们就能应用利特尔法则对项目进度作出预测。

图2 利特尔法则

利特尔法则应用于看板时,可表述为:离开看板系统(所有工作完成后被存档)的工作项的平均交付速度等于系统中看板的数量(即WIP限制)除以平均前置时间。因此,只要我们知道看板系统的WIP限制以及前置时间的均值,就能计算出已完成的工作交付所需时间。

建立进度预测

图3展示了在大、中型规模项目中常用的一种简单的三阶段模型。该模型在为期短至六周、长至数年的项目中已验证有效。模型中的参数是笔者所选,读者可更换成适合自己的,不过三个阶段应该足够。假定时间轴的前20%为第一阶段,流动效率相对较低。接下来的60%为第二阶段,流动效率高,一些敏捷专家称这种效率为“超生产力”。在时间轴上剩下的20%的时间里,流动效率降低。笔者2003年出版的《软件工程的敏捷管理(Agile Management for Software Engineering)》一书中首次阐述了该模型。虽然这里描述的概率预测方法早于看板方法,但在看板系统的使用过程中,前置时间的稳定性得以不断提升,从而提高了预测的精准度。

图3 三阶段项目进度预测

图3假设项目中的需求是同质需求。换句话说,这些需求属于相同类型,具有相同的风险级别。具体什么意思呢?如果多种需求都通过同样的方式(如用户故事)获取,则这些需求可视为同质需求如果一些需求依赖于供应商,而其他的没有,那么前置时间分布中会有多个模态的数据,因为供应商依赖将会导致某种延迟,从而影响交付时间。在这种情况下就不应对所有需求一视同仁,而要对需求是否具有供应商依赖进行区分。所以,我们要从有无供应商依赖的角度,对需求进行标记。如此一来,需求就不再同质,而是分为两种不同的类别,需要分别进行估算。

使用产能分配管理需求风险

我们会按照类型将需求划分为多个批次,并针对各个批次构建模拟仿真。例如,对于如本系列文章第二部分中所描述的调控性需求,我们将其与项目中非调控性需求分开预测。正如第二部分所讨论的,调控性需求一般具有固定的交付日期,并且项目交付日期通常具有法规效力。一批调控性需求需要在项目结束前交付,如此一来,我们可以在看板系统中引入产能分配,在整个项目的生命周期中以稳定的速度拉动调控性需求。

知道了调控性需求的规模、交付日期和当前的日期,我们就可以计算出需求平均交付速度。通过看板系统可以得出拉动调控性需求的前置时间分布。有了这些参数,就可以计算出调控性需求的在制品(WIP)限制数量。这将成为在整个看板系统中的产能分配。我们在可视化看板上设计一个泳道或者使用不同颜色的卡片用来标记调控性需求。至此,我们已卓有成效地建立了看板子系统,用以按照需要的节奏来拉动调试性需求。从现在开始,可以确保所有的调控性需求在交付项目的截止日期之前完成。

是否应该对法规变更(Regulatory Changes)需求进行排序?由第二部分讨论可知,这取决于某些这类需求是否仍可能发生变化——原因可能包括游说、管理者决策多变或者是政治领导层的变化。如果需求没有变化,则从业务风险角度来看,调控性需求是同质的,可以按自己喜欢的顺序进行拉动,而不需要对它们进行排序。如果部分调控性需求仍然有可能改变,则这些需求应该推迟到项目的后期。在项目开始和早期阶段,应该对需求进行排序,并且选择那些已知的比较稳定的调控性需求,而推迟不稳定的需求,直到所有不确定因素被消除。

总结

尽管使用历史数据构建前置时间直方图、绘制最合适的分布曲线、预测项目完成进度、建立WIP数量限制、构造产能分配并将分配策略付诸实践听起来都比较复杂,而且需要对统计学有基本的了解,但这样进行项目计划实际上却非常高效、简便。由于已对需求进行评估并就风险类别进行了标记,数小时之内便可建立项目预测模型。即便对于周期超过1年、成本超过1000万美元的重大项目,几个人花上不到一天的时间对必要的数据进行收集和分析,就能构建出可靠、高质的预测模型。

传统的决定性的计划方式中,需要对项目中的工作项逐一评估。相比之下,用本文所介绍的方式做出的概率预测,通常要准确得多(与实际结果更加接近),同时构建起来也快得多,成本也大幅减少。概率预测的一大好处是,不需要让专注于客户所关心的工作的员工停下来,对未来的(经常是带推断意味的)工作进行估算。打断工作是对资源的浪费。许多看板案例研究都显示,消除这种打扰之后,项目的交付速度、前置时间、可预测性和质量等方面都有大幅改观。

本文介绍了具有三个阶段的预测模型(所谓“Z型曲线”模型)。如果使用LeanKit或者Swift Kanban产品,还可借助蒙特卡罗模拟功能,对项目的结果做出更加靠谱的预测。预测效率更高、成本更低,结果通常也较传统的估算、计划方法准确得多。看板系统让预测能更广泛地用于项目风险管理,同时也让进度管理和产能分配相关的策略更加清晰,从而确保能较好地把控项目。

文章分类
联系我们
联系人: 阿道
电话: 17762006160
地址: 青岛市黄岛区长江西路118号青铁广场18楼