简单单谈谈极限编程(ExtremeProgramming,简称XP编程)

来源:互联网 发布:无主之地2年度版淘宝 编辑:程序博客网 时间:2024/06/05 09:19
 

基本概念   

 

    极限编程(ExtremeProgramming,简称XP)是由KentBeck1996年提出的。kent仔细的观察和分析了各种简化软件开发的前提条件、可行性以及面临的困难后,引入了这套新的软件开发观念。

 

极限编程诞生于一种加强开发者与用户的沟通需求,让客户全面参与软件的开发设计,保证变化的需求及时得到修正。要让客户能方便地与开发人员沟通,一定要用客户理解的语言,先测试再编码就是先给客户软件的外部轮廓,客户使用的功能展现,让客户感觉到未来软件的样子,先测试再编码与瀑布模型显然是背道而驰的。同时,极限编程注重用户反馈与让客户加入开发是一致的,让客户参与就是随时反馈软件是否符合客户的要求。有了反馈,开发子过程变短,迭代也就很自然出现了,快速迭代,小版本发布都让开发过程变成更多的自反馈过程,有些象更加细化的快速模型法。当然极限编程还加入了很多激励开发人员的“措施”,如结队编程、40小时工作等。

 

    极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。

 

四个核心价值

 

    1、沟通(Communication)在团队软件设计开发中最要紧的是沟通。沟通对于创造团队意识和高效合作意识是很重要的。虽然沟通并不能给你高校软件开发所需要的全部。

    2、简单(Simplicityxp建议您总是尽可能围绕过程和编写代码做最简单的事情,只要它能工作就可以。kentbeck指出与其实现一个复杂的系统,不如设计一个能够满足目前需要的、简单的系统,因为你所考虑的情况可能永远都不会发生。

    3、反馈(Feedback)令我们满意的是改进,而并不期望可以马上做到完美,我们使用反馈来一步步地接近我们的目标。反馈由多种形式。

你和你的队友关于某个想法的观点;当你实现想法时,代码会是怎样的;测试是否容易编写;测试能否运行;一旦该想法被部署,它运转的如何。

    4、勇气(Courage)仅仅只有勇气是危险地,与其他价值观相呼应的勇气才是有力的。表达愉快或不愉快真相的勇气会有助于沟通和信任度的建立;放弃失败的解决方案和寻求新的解决方案的勇气会有助于鼓励对“简单”这一价值观的追求;寻求真实具体答案的勇气会有助于增加反馈。

 

软件开发过程

 

    1、需求

    客户应该是项目开发队伍中的一员,而不是和开发人员分开的;因为从项目的计划到最后验收,客户一直起着很重要的作用。开发人员和客户一起,把各种需求变成一个个小的需求模块(UserStory)。每发布一次开发的软件(经过一个开发周期),用户都能得到一个可以开始使用的系统,这个系统全面实现了相应的计划中的所有需求。而在一些传统的开发模式中,无论什么功能,用户都要等到所有开发完成后才能开始使用。

    2、设计

    每个开发周期都有很多相应的单元测试(UnitTest)。刚开始,因为什么都没有实现,所以所有的单元测试都是失败的;随着一个个小的需求模块的完成,通过的单元测试也越来越多。通过这种方式,客户和开发人员都很容易检验,是否履行了对客户的承诺。

    3、编程

       XP提倡两个人一起写同一段程序(PairProgramming,结对编程),而且代码所有权是归于整个开发队伍(CollectiveCodeOwnership)。程序员在写程序和重整优化程序的时候,都要严格遵守编程规范。任何人都可以修改其他人写的程序,修改后要确定新程序能通过单元测试。

    4、测试

        XP提倡在开始写程序之前先写单元测试。开发人员应该经常把开发好的模块整合到一起(ContinuousIntegration),每次整合后都要运行单元测试;做任何的代码复核和修改,都要运行单元测试;发现了BUG,就要增加相应的测试(因此XP方法不需要BUG数据库)。除了单元测试之外,还有整合测试,功能测试、负荷测试和系统测试等。所有这些测试,是XP开发过程中最重要的文档之一,也是最终交付给用户的内容之一。

 

理解极限编程

 

    极限编程是一种开发管理模式,它强调的重点是:

 

          1、角色定位

    极限编程把客户非常明确地加入到开发的团队中,并参与日常开发与沟通会议。客户是软件的最终使用者,使用是否合意一定以客户的意见为准。不仅让客户参与设计讨论,而且让客户负责编写拥护故事(User Story),也就是功能需求,包括软件要实现的功能以及完成功能的业务操作过程。用户在软件开发过程中的责任被提到与开发者同样的重要程度。

 

          2、敏捷开发

    敏捷开发追求合作与响应变化。迭代就是缩短版本的发布周期,缩短到周、日,完成一个小的功能模块,可以快速测试、并及时展现给客户,以便及时反馈。小版本加快了客户沟通反馈的频率,功能简单,在设计、文挡环节大大简化。极限编程中文挡不再重要的原因就是因为每个版本功能简单,不需要复杂的设计过程。极限编程追求设计简单,实现客户要求即可,无需为扩展考虑太多,因为客户的新需求随时可以添加。

 

          3、追求价值

    极限编程把软件开发变成自我与管理的挑战,追求沟通、简单、反馈、勇气,体现开发团队的人员价值,激发参与者的情绪,最大限度地调动开发者的积极性,情绪高涨,认真投入,开发的软件质量就大大提高。结对编程就是激发队员才智的一种方式。

 

    极限编程把软件开发过程重新定义为聆听、测试、编码、设计的迭代循环过程,确立了测试->编码->重构(设计)的软件开发管理思路。

原创粉丝点击