什么是极限编程:极限编程的12个开发实践

在敏捷的所有方法中,极限编程(eXtreme Programming,XP)是最负盛名的一个,其名称中“极限”二字的含义是指把好的开发实践运用到极致,它消除了大多数重量型过程中过于繁琐和僵化的内容,建立了一个渐进的开发过程,使软件能以尽可能快的速度开发出来,向客户提供最高的效益。目前,极限编程已经成为一个典型的开发方法,广泛应用于需求模糊且经常改变的场合。

图2-12描述了极限编程的整体开发过程。首先,项目组针对客户代表提出的“用户故事”(用户故事类似于功能用例,但比用例更简单,仅描述功能需求)进行讨论,提出隐喻,在此项活动中可能需要对体系结构进行“试探”,即提出相关技术难点的试探性解决方案;然后,项目组在隐喻和用户故事的基础上,根据客户的要求,设定优先级,制定交付计划,这一过程中为保证交付计划的可行性,需要对某些技术难点进行试探;接下来开始多个迭代开发过程,根据交付计划制定每次的迭代计划,以结对编程的方式完成每次迭代开发任务,通过“站立会议”解决遇到的问题、调整迭代计划等;最后将开发出的软件经过验收测试后交付用户使用。

图2-12 极限编程的整体开发过程

极限编程在很多方面都和传统意义上的软件过程不同,具体执行时,它有12个有效的开发实践,只有完全引用了以下12个实践,才是真正使用了极限编程,只引用部分并不代表使用了极限编程。下面简述极限编程的12个开发实践。

(1)完整的团队

所有的小组成员应在同一个工作地点工作,成员中必须有一个现场用户,由他提出需求,确定开发优先级,通常还设一个“教练”角色,教练指导极限编程方法的实施,以及与外部的沟通和协调。

(2)滚动计划

计划是持续的、循序渐进的。一般每隔两周,开发人员就为下一个两周修订滚动计划。开发人员针对一些候选特性估算成本,客户则根据成本和应用价值来选择要求实现的特性,最终形成下一个两周计划。

(3)客户测试

针对每个所期望的特性,按客户的要求使用脚本语言,定义出验收测试方案,以通过验收测试来表明该特性可以工作。

(4)简单设计

保持设计内容恰好和当前的系统功能相匹配,并能通过所有的测试,不包含任何重复,能表达出编写者想表达的所有东西,并且包含尽可能少的代码,避免过度设计。

(5)结对编程

所有的产品软件都是由两个程序员,并排坐在一起在同一台机器上构建。

(6)测试驱动

在实施设计和编程之前,先拟定一个测试目标,然后以通过测试作为设计和编码的目标,通过之后再考虑重构和优化。

(7)改进设计

随时利用重构方法改进已经腐化的代码,保持代码尽可能的干净、具有表达力。

(8)持续集成

总是使系统完整地被集成。

(9)代码集体所有

任何结对的程序员都可以在任何时候改进任何代码,没有程序员对任何一个特定的模块或技术单独负责,每个人都可以参与任何其他方面的开发。

(10)编码标准

系统开发人员遵守共同的编码标准,代码看起来就好像是被单独一人编写的。

(11)隐喻

隐喻是整个系统的全局视图,它是系统的未来影像,它使得所有单独模块的位置和外观变得明显直观。如果模块的外观与整个隐喻不符,那么就知道该模块是错误的。

(12)可持续的开发速度

只有持久才有获胜的希望。他们以能够长期维持的速度努力工作,他们保存精力,把项目看作是马拉松长跑,而不是全速短跑。

版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。http://www.apmygs.com/457.html
返回顶部