本节书摘来自华章出版社《SAFe 4.0参考指南:精益软件与系统工程的规模化敏捷框架》一书中的第3章,第3.8节 作者[美]迪恩·莱芬(DeanLeffingwell),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3.8 迭代
我平生从来没有做过一次偶然的发明。我的一切发明都是经过深思熟虑,严格试验的结果。
——托马斯·爱迪生
摘要
迭代是敏捷开发的基本组成单元,每个迭代都是一个固定的时间盒,团队在这个固定时间内构建一个商业价值或产品功能的增量。SAFe的迭代长度是2周,这为团队提供了一个开发产品特性和组件的基本开发节奏。在这个短周期之内,团队需要完成迭代待办事项列表中用户故事的开发,与其他团队的输出结果进行集成,以及准备整个系统的演示等一系列工作。迭代是连续的,一个接着一个进行,以稳定的速度提供持续的商业价值交付。
迭代的节奏是SAFe提到的第一个节奏,SAFe项目群增量的时间盒更长,由一组和谐的短迭代组成。PI时间盒为敏捷发布火车上所有的团队提供了一个外部节奏,团队在这个时间盒里共同计划、共同集成和演示、共同学习成长。
详述
由于快速学习是SAFe学习环的关键目标,所以敏捷团队需要尽可能快地执行PDCA (Plan-Do-Check-Adjust)循环,包括计划、执行、检查、调整四个步骤,如图3.8-1所示。
每个PDCA循环就是一个迭代,每个迭代以固定的、可预测的开发节奏产生新的价值增量,同时也优化以前迭代产生的价值增量。在两周时间内,每个团队通过计划、构建、测试、集成和演示等一系列工作完成系统增量的输出。在短暂的迭代时间内,团队、产品负责人、产品经理(PM)和其他利益相关者能够通过可工作的系统完成技术和业务假设条件的验证。每个迭代都会触发一次“集成点”,就是所谓的“拉动事件”,通过团队成员的一致努力把系统的不同方面进行集成,集成包括功能、质量、校准和可用性等。
计划迭代
迭代计划会议是PDCA循环中的“计划”步骤。所有团队成员在会议中对团队目标达成一致,此目标在团队PI目标中描述,在团队和系统演示中展示最终结果。
尽管团队使用ScrumXP或看板会带来一些计划活动上的不同,但是在计划会议中,团队会检查待办事项列表来设定迭代目标,并从系统角度明确需要在迭代结束时进行集成和演示的详细内容。
执行迭代
迭代执行对应PDCA循环中的“执行”步骤,它描述了开展工作的过程。团队在迭代执行中,开发和测试新功能,以增量的方式交付用户故事,当用户故事完成后尽快向产品负责人进行演示,并且通过演示来显示团队的工作进展情况。
在执行阶段还包含一个更小的PDCA循环,即每日站会。团队成员每天都面对面地评估迭代目标的进展情况,更新自己的工作进度。每日站会就是一个以天为单位的PDCA循环,它允许团队每天计划、检查,以及调整他们的迭代计划。
团队演示
团队演示对应PDCA循环中的“检查”步骤。在演示会议上,团队向产品负责人演示经过充分测试的价值增量,并且获得产品负责人的反馈。团队也会根据演示的结果来调整下一个迭代的团队待办事项列表。在演示会上某些用户故事会被产品负责人接收,另外一些会根据迭代中所收集到的反馈进行改进。
团队演示后,团队成员紧接着会参与整个系统的演示。在敏捷发布火车中,系统演示是一个必需的、正式的“集成点”,也是一个“拉动事件”,它会对多个团队的成果进行集成,确保在项目群层级进行尽早的集成和验证。在迭代中,每个团队都可以站在系统的角度,对自己的工作进行持续集成和评估,从而满足整个系统的要求。
改进流程
迭代回顾会“检查”整个迭代的工作,对应PDCA循环中的“调整”步骤。在迭代回顾会议中,团队成员一起评估开发流程和上一个迭代中改进故事的执行情况,识别问题及其发生的根本原因,当然也会回顾工作中做得好的地方,团队把识别出的改进故事放到待办事项列表中,放入下一个迭代中实现。迭代回顾是团队进行持续改进(SAFe精益–敏捷思想的支柱之一)的关键方式之一。不论是立刻进行,还是在检视和调整工作坊时进行,迭代回顾都可以驱动项目群层的流程改进。
在下个迭代计划会议开始前,待办事项列表会根据演示会议和回顾会议的决策重新进行调整。产品负责人根据需要,对新的和原有的待办事项进行重构或重新排序。
参考资料
[1] Cockburn, Alistair. “Using Both Incremental and Iterative Development.” STSC CrossTalk 21 (2008): 27 – 30.
[2] Maurya, Ash. Running Lean: Iterate from Plan A to a Plan That Works. O’Reilly Media, 2012.