(Source: XP – Iteration Planning)
在每次迭代开始时调用迭代计划会议,以生成该迭代的编程任务计划。每次迭代为 1 到 3 周。客户从发布计划中按照对客户最有价值的顺序选择用户故事进行此次迭代。还选择了要修复的失败验收测试。客户选择的用户故事的估计总计达到上次迭代的项目速度。
用户故事和失败的测试被分解为支持它们的编程任务。任务记录在索引卡上,如用户故事。虽然用户故事是客户的语言,但任务是使用开发人员的语言。可以删除重复的任务。这些任务卡将是迭代的详细计划。
开发人员注册执行任务,然后估计他们自己的任务需要多长时间才能完成。对于接受任务的开发人员而言,重要的是估计完成任务所需的时间。人们不可互换,而且要完成任务的人必须估计需要多长时间。
每项任务应估计为 1,2 或 3(如果需要,添加 1 /2)持续时间的理想编程天数。如果没有干扰,理想的编程日期是完成任务需要多长时间。短于 1 天的任务可以组合在一起。超过 3 天的任务应该进一步细分。
现在再次使用项目速度来确定迭代是否超过预定。在任务的理想编程天中总计时间估计值,这不得超过上一次迭代的项目速度。如果迭代次数太多,那么客户必须选择要推迟的用户故事,直到稍后的迭代(也叫雪耕 – Snow Plowing)。
如果迭代太少,则可以接受另一个故事。任务天的速度(迭代计划)会覆盖故事周的速度(发布计划)因为它更准确。
看到用户故事被雪覆盖通常令人震惊。不要惊慌。记住单元测试和重构的重要性。任何一个领域的债务都会让你失望。在安排之前避免添加任何功能。只需添加您今天所需的内容。添加额外的东西会减慢你的速度。
不要试图改变你的任务和故事估计。规划过程依赖于一致估计的冷现实,将它们勉强降低会产生更多问题。
密切关注您的项目速度和积雪。您可能需要重新估算所有故事并每三到五次迭代重新协商发布计划,这是正常的。只要您始终首先实施最有价值的故事,您将始终尽可能为您的客户和管理层做好准备。
迭代开发风格可以为您的开发过程增加灵活性。通过不比当前迭代更远地规划特定的编程任务来尝试及时规划。