极限编程(图2-6)是敏捷方法的代表之一。极限编程是一种方法论,它解决软件开发方法中的约束问题,不解决项目投资管理、财务、执行、市场和销售的问题,可以对任何规模的团队都起作用,适合于模糊或者快速变化的需求。
图2-6 极限编程
作为一种方法论,极限编程的价值观体现在以下几方面:
·沟通:强调项目成员(包括设计人员、开发人员、客户)之间的有效沟通;
·简单:尽量保持简单,只要完成当前工作需要即可,而不需要去考虑为未来可能的扩展;
·反馈:不断地对已发布软件状态进行反馈,达到迅速沟通、编码、测试和发布的目的;
·勇气:勇于放弃和重构代码,敢于所有人拥有代码,敢于所有工作做到极致。
·尊重:可能存在岗位和职责的划分,但每个人对团队的贡献都应该得到尊重,不存在孰轻孰重的问题。
极限编程的实践准则在第二版中被分为基本实践和扩展实践,扩展实践是要求团队成员在有一定训练的基础上开展,比如共享代码(有的书上叫集体拥有代码),极限编程第二版的主要实践准则如下:
·坐在一起
在大到足够容纳整个团队的开放空间中开展工作,距离上的接近可以促进团队成员之间的沟通。
·完整团队
将拥有项目成功所必需的各种技能和视角的人都吸收进团队,完整团队的组成是动态的,如果一组技能或意见变得重要时,就将懂得那些技术的人吸收进团队,如果不再需要某个人,可以让他离开团队。这个和敏捷开发以人为核心的理念并不冲突。
·信息工作空间
让工作空间与工作相关,任何一个对项目感兴趣的观察者能够在走进团队工作区的短时间内就对项目运作有所了解,并能够通过近距离观察而获得更多的信息。
·充满活力的工作
只要在有效率的时间段内高效地工作就足够了,一周工作40小时。
·结对编程
所有产品程序的编写都由坐在同一台机器前面的两个人完成,通常一个人负责写编码,而另一个负责保证代码的正确性与可读性。结对编程是一种非正式的同级评审。它要求结对编程的两个开发人员在性格和技能上应该相互匹配。结对编程时需要注意每天结对的时间不超过6小时,并需要进行定期的轮换。(www.xing528.com)
·故事
使用客户可见的功能单元进行计划。第一版当中被称之为“隐喻”,非常的晦涩难懂。一个功能单元的描述不再使用“需求”来表达,而是用“故事”来讲述。
·周计划
一次计划一周的工作。在每周开始的时候开会,在会议中回顾迄今为止的发展,让客户挑选在这周内要完成的故事,把故事分解为任务并分配下去。
·季度循环
一次计划一个季度的工作。每个季度根据更大的目标对团队、项目、进度和安排做一次反省,并计划下一季度的工作。
·10分钟构建
在10分钟之内自动地构建整个系统和运行所有的测试。超过10分钟的构建,一般很少愿意使用,因此导致反馈机会的丧失。
·持续集成
不超过两个小时就对改变的地方进行一次集成和测试。等待越长时间的集成,花费越多,结果也越不可知。
·测试优先编程
在改变任何代码之前先编写一个自动化测试。测试优先编程的另一个精化是持续测试。持续测试缩短了发现错误的时间,从而缩短了改正错误的时间。
·共享代码
团队中的任何人可以在任何时候改善系统的任何部分。
·编程规范
通过指定严格的代码规范来进行沟通,尽可能减少不必要的文档。
·增量设计
利用软件重构不断淘汰原有架构中腐化的代码。所谓重构是指在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。