敏捷估算与规划—问题与目标

1 规划的目的

估算和规划是重要的,但也是困难的和容易出错的。我们不能仅仅由于它们很困难就不去做这些事。项目早期给出的估计没有项目晚期给出的估计准确。不确定性锥形像是了这一逐渐细化的过程。

  

  规划的目的是找到一个最佳答案,用于回答“要构建什么”这一产品开发的总体问题。这一答案综合了功能、资源和进度。一个可以减少的风险、降低不确定性、为可靠的决策提供支持、建立信任和传递信息的规划过程为解答这个问题提供了支持。

  优秀计划应该足够可靠,可以用作对该产品和项目进行决策的基础。敏捷规划更关注规划过程而不只是建立一个计划。它鼓励修改、产生易于修改的计划,并延续到整个项目过程。

2 规划失败的原因

  基于活动的规划分散了我们对功能的注意力,而功能才是衡量客户价值的单元。采用基于活动的计划所得到的进度表时,许多问题都可能导致延迟交付。项目的参与者本来是满怀好意的把多任务处理当做一个可以解决延误的办法,但由于多任务处理背后隐藏的代价,实际上会导致更长的延误。当进度表上剩余时间不够时,不可避免地要放弃一些功能。由于是按照开发人员认为的最有效的顺序来对功能进行开发,因此被放弃的功能对用户来说不一定是价值最低的。

  忽视关于用户最终需求的不确定性,会导致虽然按时完成了项目,却没有包含在制定计划以后发现的那些重要功能。而忽视关于开发产品过程的不确定性,则会导致在项目计划中漏掉一些活动,从而增大了项目被延迟、最终放弃部分功能、或者不适当的降低质量的可能性。

  很多公司混淆了估算和承诺,只要开发小组做出一个估计,他们就必须对它做出承诺。

3 敏捷方法

  敏捷开发小组作为一个整体一起工作,但包含了特定人员担任的不同角色。首先是产品所有者,负责确定产品前景和功能优先级。然后是客户,他们为项目提供资金或者在软件完成后购买它。敏捷开发项目中的其他角色还包括用户、开发人员和项目经理。

  敏捷开发小组按照短的,有时间限制的迭代周期进行工作,在每次迭代结束的时候交付一个可用的产品。在这些迭代中开发的功能是根据它们的业务重要性选择出来的。这保证了最重要的功能将首先被开发。用户故事敏捷开发小组用于表示用户需求的一种常见方式。敏捷开发小组认识到一个几乎可能很快会过时,因此他们会根据需要调整计划。

  项目被看做是迅速、可靠的产生有用的新功能和新知识的流程,而不只是对一系列步骤的执行。项目会产生两类新知识:关于产品的知识和关于项目本身的知识。每类知识在使计划更精细,从而为机构获取更多价值上都是有益的。

  敏捷开发小组使用3个层次上的规划:发布规划、迭代规划和每日规划。发布规划展望一次发布的整个时间范围(通常是3~6个月);迭代计划值考虑一次迭代的持续范围(通常是2~4周);每日计划则由小组成员在每日例会上向其他人做出的承诺组成。

  理解产品所有者的满意条件对发布规划和迭代规划都是至关重要。在发布规划中,整个开发小组会确定一个方法来满足本次发布在范围、进度和资源方面的满意条件。为此,产品所有者可能需要放宽一个或者几个满意条件。进行迭代规划时也会经历类似的过程,只是此时的满意条件是将要实现的新功能和用于演示这些功能被正确实现的高级测试用例。

原文地址:https://www.cnblogs.com/angela217/p/10638453.html