极限编程(eXtreme Programming XP)是敏捷方法中最著名的一个。它是由一系列简单却互相依赖的实践组成。这些实践结合在一起形成了一个胜于部分结合的整体。
下面是极限编程的有效实践:
客户作为开发团队成员
XP项目的所有参与者(开发人员、客户、测试人员等)一起工作在一个开放的场所中,他们是同一个团队的成员。
使用用户素材
用户素材就是跟用户谈话的主要内容。
短交付周期 计划是持续的、循序渐进的
每2周,开发人员就为下2周估算候选特性的成本,而客户则根据成本和商务价值来选择要实现的特性。
客户测试
客户测试作为选择每个所期望的特性的一部分。
简单设计
团队保持设计恰好和当前的系统功能相匹配。它通过了所有的测试,不包含任何重复,表达出了编写者想表达的所有东西,并且包含尽可能少的代码。
结对编程
结对编程所有的产品软件都是由两个程序员、并排坐在一起在同一台机器上构建的。
测试驱动开发
编写单元测试是一个验证行为,更是一个设计行为。同样,它更是一种编写文档的行为。编写单元测试避免了相当数量的反馈循环,尤其是功能验证方面的反馈循环。
重构---改进设计
随时利用重构方法改进已经腐化的代码,保持代码尽可能的干净、具有表达力。
持续集成
团队总是使系统完整地被集成。一个人上传代码(Check in)后,其它所有人的责任代码要Check out集成。
代码集体所有
任何结对的程序员都可以在任何时候改进任何代码。没有程序员对任何一个特定的模块或技术单独负责,每个人都可以参与任何其它方面的开发。
编码标准
系统中所有的代码看起来就好像是被单独一人编写的。
使用隐喻
将整个系统联系在一起的全局视图,它是系统的未来影像,是它使得所有单独模块的位置和外观变得明显直观。如果模块的外观与整个隐喻不符,那么你就知道该模块是错误的。
可持续的速度
团队只有持久才有获胜的希望。他们以能够长期维持的速度努力工作,他们保存精力,他们把项目看作是马拉松长跑,而不是全速短跑。
及时调整计划
计划应该是灵活,循序渐进的。制定的计划应根据项目的进展及时调整。
极限编程是一组简单、具体的实践,这些实践结合形成了一个敏捷开发过程。极限编程是一种优良的、通用的软件开发方法,项目团队可以拿来直接采用,也可以增加一些实践,或者对其中的一些实践进行修改后再采用。
敏捷开发过程
人与人之间的交互是复杂的,并且其效果从来都是难以预期的,但却是工作中最重要的方面。 -- Tom DeMacro和Timothy Lister
敏捷软件开发宣言:
个体和交互 胜过 过程和工具
可以工作的软件 胜过 面面俱到的文档
客户合作 胜过 合同谈判
响应变化 胜过 遵循计划
虽然右项也有价值,但是我们认为左项具有更大的价值。
敏捷设计是一个过程,不是一个事件。它是一个以持续的应用原则、模式以及实践来改进软件结构和可读性的过程。它致力于保持系统设计在任何时间都尽可能得简单、干净和富有表现力。
参考来源:
清华大学 《软件工程》 张海潘
http://www.vckbase.com/document/viewdoc/?id=1027((作者:徐景周))