技术开发 频道

什么是极端编程

【IT168 技术文章】

    极端编程(eXtreme Programming)是一种开发纪律,以简单性、交流、反馈和勇气为基本宗旨。它的做法是以有效的实践规则将整个团队紧密联系起来,通过充分的反馈使团队能随时知道自己目前的状况和恰当的调节规则以适应自己的特殊情况。

    在极端编程中,每一个项目贡献者都是“团队”完整的一部分。这个队伍是围绕着一个每天和队伍坐在一起共同工作的商业代表——“客户”建立起来的。

    核心实践:整体团队

    极端编程的队伍采用一种简单的方式来进行规划和跟踪,以决定下一步要做什么和预知项目什么时候会完成。聚焦于商业价值,团队通过一系列的通过了客户定义的测试和完全集成的小的发布来创作软件系统。

    核心实践:规划策略,小发行版,客户测试

    极端编程者通过成对和小组的方式共同工作,通过简单设计和强制测试的代码,不断的提升设计以保证设计总是适合当前的需求。

    核心实践:简单设计,成对编程,测试优先开发,设计改进

    极端编程队伍会总是保持系统能够集成并且在所有的时间运行。程序员以成对的方式编写所有的产品代码,并且在所有时间内都共同工作。他们以相似的形式编码以保证所有成员都可以按需要理解和改进所有的代码。

    核心实践:持续集成,集体代码所有权,编码标准

    极端编程队伍分享一个公共并且简单的系统蓝图。所有成员可以按照一种不时保持同步的节奏进行工作。

    核心实践:系统比喻,可接受的步伐

    团队整体

    一个XP项目的所有参与者都作为一个团队的成员坐在一起。这个团队必须包括一个业务的代表——“客户”,他提供需求,设置优先度,并掌管整个项目的方向。最好这个客户或者他的助手是一个最终用户,了解该领域,知道什么是所需要的。团队当然还要有程序员。团队可能会包含测试员,他帮助客户定义客户验收测试。分析员可以作为客户的助手,帮助客户定义需求。通常还会有一个指导,他帮助整个团队跟踪、推动开发进程。也可能会有一个管理者,他提供资源、处理对外交流和分工协作。这些职责中没有任何一个是必须某个个人独有的:每一个XP团队的成员都以任何他们所能做到的方式参与,最好的团队没有专家,只有一些有着特殊的技能的一般的参与者。

    规划策略

    XP的计划解决软件开发中的两个关键问题:预知在责任期内哪些东西将被完成,并且确定下一步需要做什么。重点是把握项目的正确轨道——这是相当简单明了的——更胜于希望精确预知哪些东西将会需要以及可能花费多少时间——这是相当困难的。在XP这里有两个关键的规划步骤,用来解决这两个问题:

    发布计划是一个实践让客户向程序员们演示所希望获得的特性,然后程序员们评估它们的难度。当手中有了代价的评估和这些特性的重要程序的认知之后,客户安排一个项目计划。最初的发布计划需要留有足够的余地:优先级以及评估都不是真实可靠的,并且知道团队开始工作以前,我们都无法确切地了解队伍的开发进度。甚至最初的发布计划也不是足够精确能进行决断,所以XP队伍通常会不时地校正发布计划。

    迭代计划是一个实践籍此可以为团队提供每几个开发周的导向。XP队伍通过两周的“迭代”来建立软件系统,在每一个迭代结束时提供可以运行的有实际用途的软件系统。在进行迭代计划时,客户演示下两周内希望完成的特性。程序员们将它们分割成若干个任务,并且评估它们的成本(比发布计划要细致一些)。基于在之前的迭代中完成的工作,团队签定当前迭代中将要承担的工作。

    这些计划十分的简单,然而他们为客户提供了非常好的信息和极好的操纵控制。每隔几周,多少进展都可以一目了然。在XP中没有“百分之九十完成”:一个特性故事要么完成了,要么没有完成。关注可视结果方法在于一个很好的小的对立论点:一方面来说,非常直观地,如果进度不能令人满意,客户可以在某一个位置取消项目。从另一方面说,进度是显而易见地,并且判断哪些东西将会完成的能力是很完善的,因此XP项目往往可以在较少的压力下完成更多的需要的东西。

    客户测试

    作为每一个所要求特性的演示的一部分,XP客户定义一个或者多个自动进行的接受测试来表明特性已经能够实现。团队实现这些测试并且用它们来向自己和客户证明特性已经被正确的实现了。由于时间的压力,自动化是很重要的,手工测试将被跳过。这就像当黑夜来临的时候,就可以关掉你的灯一样。

    最好的XP团队会将他们的客户测试当作程序员的测试一样对待:一旦测试运行了,从此之后团队会保持它能够一直正确运行。这意味着系统只能够被改进,总是向前的,从不会倒退。

    小发行版本

    XP团队通过两个重要的方式实践小发行版本:

    第一,团队在每一个迭代发布可以运行的,测试过的软件系统,提供客户选择的商业价值。客户可以为任何目的使用这个软件系统,无论是评估还是发布给最终用户(强烈推荐)。最重要的方式是在每一个迭代结束的时候软件系统是可见的,并且提交给了客户。这保证了任何事情都是公开和真实的。

    第二,XP团队尽可能频繁地发布给他们的最终用户。XP网站项目每天都进行发布,居家项目则每月或者更频繁地发布。甚至可以简包装的产品可以每季度地发运。

    这么频繁地创建好的版本也许显得不太可能,但是XP团队每时每刻都在进行着发布。更多信息可以参看持续集成,并请注意这些频繁的发布通过XP中随处可见的测试(如同客户测试和测试优先开发中所描述的)变得现实了。

0
相关文章