XP--极限编程

极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。特性:敏捷,测试驱动,持续集成。

  •  四个核心价值
  • 沟通(Communication)、简单(Simplicity)、反馈(Feedback)和勇气(Courage)。
  •  XP用“沟通、简单、反馈和勇气”来减轻开发压力和包袱;无论是术语命名、专著叙述内容和方式、过程要求,都可以从中感受到轻松愉快和主动奋发的态度和气氛。这是一种帮助理解和更容易激发人的潜力的手段。XP用自己的实践,在一定范围内成功地打破了软件工程“必须重量”才能成功的传统观念。 XP精神可以启发我们如何学习和对待快速变化、多样的开发技术。成功学习XP的关键,是用“沟通、简单、反馈和勇气”的态度来对待XP;轻松愉快地来感受XP的实践思想;自己认真实践后,通过对真实反馈的分析,来决定XP对自己的价值;有勇气接受它,或改进它。

十二个最佳实践:

  •  现场客户(On-site Customer)     
  • 规划策略(The Planning Game)
  • 小型发布(Small Release)
  • 每周40小时工作制(40-hour Week)
  • 简单设计(Simple Design)
  •  测试(Testing)
  •  重构(Refractoring)
  •  持续集成(Continuous Integration)
  •  结对编程(Pair programming)
  • 代码集体所有权(Collective Code Ownership)
  •  编码规范(Code Standards)
  •  系统隐喻(System Metaphor)
  • 上述12种方法可以分为三大类:
  • 一、让用户尽早的看到开发成果,尽早发现问题和尽早的处理问题:
  • 这部分涉及以下4种方法
  • 现场客户(On-site Customer):让客户随时参与,与客户商定开发目标和开发优先顺序,让客户参与测试,对客户提出的问题进行及时的处理。
  • 规划策略(The Planning Game):将整个项目规划为一个个小的故事,确定每个故事都要做些什么才能实现,与客户一起确定每个故事的重要程度和优先顺序,以及每个开发周期(一般建议是3周)要实现哪些故事、解决哪些问题、最终给用户提供哪些体验。
    小型发布(Small Release):确定了规划策略后就可以在每个开发周期发布一个小型的发布版本让用户尽早的体验到开发成果,尽早的提出问题,以便将解决问题的计划纳入下一个开发周期。
  • 每周40小时工作制(40-hour Week):这是对上述开发周期计划的验证,一旦出现加班加点的现象,就说明开发计划需要调整了。

  • 二、实现上述目标的技术保证:
  • 这部分涉及以下4种方法
  • 简单设计(Simple Design):简单设计、迭代开发是实现小版本发行的技术保障。
  • 测试(Testing):先测试后编码,让测试融于开发之中。
  • 重构(Refractoring):对不合理、不适应、无管开发目标的代码要敢于重构,只提供需求相关的代码。
    持续集成(Continuous Integration):对开发项目要随时集成、自动测试、自动给出开发报告,一般是每天晚上集成一次,早上可以让开发人员看到昨天开发都有哪些问题需要解决。
  • 三、让开发组所有人都能知道
  • 这部分涉及以下4种方法
  • 编码规范(Code Standards):有了统一的编码规范大家编写出来的代码才能易于阅读和理解。
  • 系统隐喻(System Metaphor):对业务逻辑用开发组都认可的形象方式来描述,让大家都能理解这些逻辑。
  • 结对编程(Pair programming):通过结对编程实现代码和逻辑共享,不要因为个别组员离开团队而影响的正在开发的项目。
    代码集体所有权(Collective Code Ownership):实现代码的版本管理,保证大家都能看到和共享这些代码。
  • 与上述12种方法有关的技术基础有:
    编码规范:对项目组种的每一种编码语言和脚本都建立编码规范,如果能够实现编程工具自动化的按编程规范排查的话就尽量实现。
    版本管理:实现版本管理,不但代码要进行版本管理和共享,业务逻辑也要做到版本管理和共享。
    测试驱动开发:对每一种编程语言和脚本都实现测试驱动开发,让测试先于编码的实现。
    持续集成:利用持续集成工具实现持续集成的自动化。

posted on 2011-04-24 19:16  小夏2011  阅读(378)  评论(0编辑  收藏  举报

导航