极限编程的特点:
多次迭代,并持续集成;短交付周期;对测试的极端重视;结对编程。
一个项目周期包括多个交付周期,一个交付周期又包括多个迭代周期, 一个迭代周期包括多个集成,如下所示:
每一个迭代周期在2到4个星期不等。
每一个迭代过程如下:
过程说明:
1. 迭代计划,确定本次迭代要实现的功能
召开迭代计划会议,参与人员包括团队全体人员。策划确定需要实现的功能,并对需要实现的功能进行优先级排列,挑选出本次迭代要实现的功能,由开发人员来确定功能的实现顺序,随后,将功能分解成若干个小的任务(可以在一到两天内完成的小 功能),让所有的开发人员签订各自的任务,估算任务完成所需的点数,并利用功能卡片在功能卡片上记录相对完成时间,为了估算的准确,可将大的功能分解成更小的任务。
迭代计划会议结束,应该得出如下结果:本次迭代要完成什么;需要完成功能的优先级列表;评估任务并安排任务。
;>
2. 开发阶段:
在开发阶段是个不断重复的一个开发过程,以每天为单位,它包括:每日站立会议, 采用结对编程的方式,并采用测试驱动开发(TDD)来实现要完成的任务。当开发人员所有待测试清单(to do list)里要测试的任务100%通过的时候,将代码提交到版本控制系统(SVN),这时自动构建系统(CruiseControl)来编译整个项目,运行所有的测试并将测试结果反馈给开发人员,如果有新的集成,测试人员会进行测试并向开发人员反馈bug,,开发人员修正bug。此过程循环往复,直到完成所有功能或到达迭代日期为止。
3. 本次迭代结束:
对本次迭代工作进行验收。演示已完成的功能,并获得反馈。将已完成的任务
在迭代指定的日期到来之时,即使没有完成所有的功能,也要结束这次迭代。统计这次迭代完成的功能的估算值,来得出本次迭代的开发速度,这个开发速度会被用于下一次迭代作参考,这样,根据估算值对下一次迭代所需的完成的任务数就会更准确。
花上半个小时到一个小时的时间进行反思与改进,列举哪些工作方法是行之有效的,哪些是无效的,以在下一次迭代中改进。
4. 下一次迭代的开始:
对上一次迭代开发出来的可运行的软件进行评估,并确定新的需求(除了新的需求外,可能还有就是系统架构的改进等),然后从1开始继续以上的过程,直到整个项目完成为止。
注:在项目最开始时,会对在需求会议上确定所有要实现的功能,并粗略地估计整个项目完成的时间,这个时间可能是不准确的(原因有团队在专业技能与经验上的不断增强, 需求的变化等),不过在几次迭代后, 对于时间的把握会更精确。
以迭代为单元持续集成,较短的发布周期,整个软件系统都在不断地改进,由于是持续地小步地改进,使软件的BUG都会及时发现并由于有测试代码的存在,使得BUG的修复也是在开发者的掌控之中,项目质量得到了提高。
原文链接:https://www.f2er.com/javaschema/287770.html