• 1.摘要
  • 2.基本信息
  • 3.简介
  • 4.极限编程的目标
  • 5.极限编程的特征
  • 6.相关概念
  • 6.1.软件开发过程
  • 6.2.权利和义务
  • 6.3.开发人员
  • 6.4.其他问题
  • 7.核心价值
  • 7.1.价值
  • 7.2.沟通
  • 7.3.简单
  • 7.4.反馈
  • 7.5.勇气
  • 8.开发
  • 8.1.工作环境
  • 8.2.需求
  • 8.3.设计
  • 8.4.编程
  • 8.5.测试
  • 9.方法
  • 10.规则
  • 10.1.项目开发小组
  • 10.2.过程
  • 11.计划项目
  • 12.验收测试
  • 13.简单设计
  • 14.测试驱动
  • 14.1.重构
  • 14.2.频繁地整合
  • 14.3.集体拥有代码
  • 15.编程规范
  • 16.其他相关
  • 17.影响
  • 18.使用
  • 19.实践
  • 20.小结

极限编程

极限编程(ExtremeProgramming,简称XP)是由KentBeck在1996年提出的,是一种软件工程方法学,是敏捷软件开发中可能是最富有成效的几种方法学之一。如同其他敏捷方法学,极限编程和传统方法学的本质不同在于它更强调可适应性而不是可预测性。

KentBeck在九十年代初期与WardCunningham共事时,就一直共同探索着新的软件开发方法,希望能使软件开发更加简单而有效。Kent仔细地观察和分析了各种简化软件开发的前提条件、可能性以及面临的困难。1996年三月,Kent终于在为DaimlerChrysler所做的一个项目中引入了新的软件开发观念——XP。适用于小团队开发。

基本信息

  • 中文名称

    极限编程

  • 外文名称

    ExtremeProgramming

  • 简称

    XP

  • 提出时间

    1996年

  • 提出人

    KentBeck

  • 应用领域

    软件开发

简介

极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。

XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。

极限编程的目标

极限编程的主要目标在于降低因需求变更而带来的成本。在传统系统开发方法中,系统需求是在项目开发的开始阶段就确定下来,并在之后的开发过程中保持不变的。这意味着项目开发进入到之后的阶段时出现的需求变更(而这样的需求变更在一些发展极快的领域中是不可避免的)将导致开发成本急速增加。

极限编程透过引入基本价值、原则、方法等概念来达到降低变更成本的目的。一个应用了极限编程方法的系统开发项目在应对需求变更时将显得更为灵活。

极限编程的特征

极限编程方法的基本特征是:

  • 增量和反复式的开发----一次小的改进跟着一个小的改进。

  • 反复性,通常是自动重复的单元测试,回归测试。参见JUnit。

  • 结对程序设计

  • 在程序设计团队中的用户交互(在场的客户)

  • 软件重构

  • 共享的代码所有权

  • 简单

  • 反馈

  • 用隐喻来组织系统

  • 可以忍受的速度

相关概念

软件开发过程

软件开发的过程是:需求分析、设计、编码和测试。

需求分析:不仅仅是用户需求,应该是开发中遇到的所有的需求。比如,你首先要知道做这个项目是为了解决什么问题;测试案例中应该输入什么数据……为了清楚地知道这些需求,你经常要和客户、项目经理等交流。

设计:编码前,肯定有个计划告诉你要做什么,结构是怎样等等。你一定要按照这个来做,否则可能会一团糟。

编码:如果在项目截止日,你的程序不能跑起来或达不到客户的要求,你就拿不到钱。

测试:目的是让你知道,什么时候算是完成了。如果你聪明,你就应该先写测试,这样可以及时知道你是否真地完成了。否则,你经常会不知道,到底有哪些功能是真正完成了,离预期目标还差多远。

权利和义务

定义每个用户需求的商业优先级;

制订总体计划,包括用多少投资、经过多长时间、达到什么目的;