[摘要] 极限编程是一种轻量级的、灵巧的、简单的软件工程方法。与传统的开发过程不同,极限编程的核心活动体现在需求→测试→编码→设计过程中。因此适用于规模小、进度紧、需求变化大、质量要求严的项目。它希望以最高的效率和质量来解决用户目前的问题,以最大的灵活性和最小的代价来满足用户未来的需求。

[关键词] 极限编程;概念;特点;应用

在传统的软件系统开发中,系统需求是在项目开发的开始阶段就确定下来,并在之后的开发过程中保持不变的,这就意味着从进入项目开发到之后的所有阶段所出现的所有需求变更(这样的需求变更在国内目前的商业软件系统开发中是不可避免的),将导致开发成本急速增加。极限编程是一种轻量级的、灵巧的、简单的软件工程方法,适合于12人以下的小型开发团队,它的主要目标在于面对商业软件系统环境做出了务实的选择,力求降低需求变更而带来的成本增加,进而提高软件的开发效率。

一、极限编程简介

极限编程(Extreme Programming,简称XP)是敏捷软件开发方法的代表。2000年,美国软件工程专家Kent Beck对极限编程这一创新软件过程方法论进行了解释:“XP是一种轻量、高效、低风险、柔性、可预测、科学而充满乐趣的软件开发方法。”Kent Beck建议XP应用于规模小、进度紧、需求变化大、质量要求严格的项目[1]。极限编程是价值而非实践驱动的高度迭代的开发过程。其价值体现在以下几个方面:第一,沟通(Communication):即追求有效的沟通。XP强调项目开发人员、设计人员、客户之间等有效地、及时地沟通,确保各种信息的畅通。第二,简单(Simplicity):即实现最简单的可行方案。XP认为应该尽量保持代码的简单,只要能够满足工作需要就行,这样有利于代码的重构和优化。第三,反馈(Feedback):即快速有效的反馈。要求不断对当前系统状态进行反馈,通过反馈,达到迅速沟通、编码、测试、发布的目的。第四,勇气(Courage):即勇于放弃和重构。对于用户的反馈,XP程序员要勇于对自己的代码进行修改,即使有些修改可能会使得原来已经通过的测试又出现错误,但是经过团队的共同攻关,最终必然会取得满意的效果。

二、极限编程的开发过程及特点

与传统的开发过程不同,极限编程的核心活动体现在需求→测试→编码→设计过程中,因此对工作环境、需求分析、设计、编程、测试、发布等提出了新的思路和要求。

1、工作环境:XP要求每个参加项目开发的人都担任一个角色(项目经理、项目监督人等),并履行相应的权利和义务。所有的人都在一个开放式的开发环境中工作,最好是在同一个大房间中工作,随时讨论问题,强调每周40小时工作制,不加班。

2、需求分析:客户被纳入开发队伍。由于客户不具备计算机专业知识,无法用专业语言明确描述需求,所以开发人员和客户一起,用讲故事的方式把需求表达出来,这种故事被称为user story,即用user story表示需求。开发人员根据经验将许多user story 组合起来,或将其进行分解,最终记录在story card的小卡片上,这些user story将陆续被程序员在各个小的周期内,按照商业价值、开发风险的优先顺序逐个开发。

3、设计:XP强调简单设计(simple design),即用最简单的办法实现每个小需求。在XP中,没有那种传统开发模式中一次性的、针对所有需求的总体设计,这些设计只要能够满足系统客户在当前的需求就可以了,不需要考虑将来可能的变化,整个设计过程包括在整个螺旋式发展的项目中。

4、编程:成对编程(pair programming)是极限编程的一大特色,即两个人一起使用同一个屏幕,同一个键盘,共同完成一段程序的编码。成对编程的好处是,可以提高纪律性,更容易写出优质的代码,同时保证编程的流畅进行,更重要的是,能够使得整个团队更方便地分享编程经验,有利于新手的快速成长。

5、测试:在极限编程中,测试是非常重要的一个环节,它首先要求在开始写程序之前先写好测试,其目的是为了提高软件的可测试性。XP要求开发人员经常把开发好的模块整合到一起,每次整合后都要运行单元测试;做任何的代码复核和修改,都要运行单元测试;发现了漏洞,就要增加相应的测试。除了单元测试之外,还要进行整合测试、功能测试、负荷测试和系统测试等。所有这些测试是极限编程开发过程中最重要的文档之一,也是最终交付给用户的内容之一。

6、发布:XP要求按照开发计划,每经过一个开发周期,软件就发布一次,而不是像传统的开发方法那样,整个软件开发完成后才发布。在一个开发周期内,开发人员要求客户选择最有价值的user story作为未来一两个星期的开发内容,一个开发周期完成后,提交给客户的系统虽然不是最终的产品,但它已经实现了几个客户认为是最重要的story,开发人员将逐步在其基础上增加新的模块,而且在发布前软件都经过单元测试和集成测试,因此,虽然软件并不完备,但是,发布的软件客户还是可以真正使用的。

三、极限编程的优缺点

1、极限编程的优点

与传统的软件工程方法相比较,极限编程具有以下优点:(1)重视客户的参与;(2)重视团队合作和沟通;(3)制定计划前做出合理预测;(4)让编程人员参与软件功能的管理;(5)重视质量;(6)简单设计;(7)高频率的重新设计和重构;(8)高频率及全面的测试;(9)递增开发;(10)连续的过程评估;(11)对过去的工作持续不断的检查。

2、极限编程的缺点

其缺点主要表现为:(1)以代码为中心,忽略了设计;(2)缺乏设计文档,局限于小规模项目;(3)对已完成工作的检查步骤缺乏清晰的结构;(4)质量保证依赖于测试;(5)缺乏质量规划;(6)没有提供数据的收集和使用的指导;(7)开发过程不详细;(8)全新的管理手法带来的认同度问题;(9)缺乏过渡时的必要支持。

四、极限编程的应用

XP适用于规模小、进度紧、需求变化大、质量要求严的项目。它希望以最高的效率和质量来解决用户目前的问题,以最大的灵活性和最小的代价来满足用户未来的需求,XP在平衡短期和长期之间做了巧妙的安排[2]。

我国的软件开发过程经常存在一些问题,如:客户需求变化频繁、系统支付时间一推再推、交付系统错误层出不穷、因程序员半途跳槽而导致工作不能顺利完成、需求估计不足、因程序员之间交流少而导致代码重复开发、文档不能真实地反映实际情况等等。为了有效地克服上述问题,软件机构在项目开发时,有意识地采用XP方法,并且取得了一定效果。通过对这些应用的总结,可以概括出,XP应用确实具有一定的适用范围,而应用成功的关键在于,充分认识XP应用过程中的优缺点,在保持组织既有的开发过程和生命周期模型的前提下,结合应用类型、项目特点和组织文化,借鉴、汲取个别对项目有效的XP方法,在领会其精神实质的基础上灵活运用,而不是全部照搬硬套。另外以下几个问题也是在应用中需要注意的:

1、不同方法的目标对象和适用环境各不相同,学习和运用流行的过程方法论是实施过程改进的好办法,但在具体应用过程中,应整合其最佳元素,设计出适合具体实际项目的过程体系。

2、在软件工程实践中要充分把握好开发技能、软件过程和组织管理各个要素的平衡,不能偏重某一方面,轻视另一方面;

3、在应用XP时,应该首先从基本实践入手,逐渐深入到扩展性实践,因为基本实践彼此独立,互不影响,而扩展性实践则是建立在某些基本实践的基础上的,而且要采取循序渐进、迂回反复(迭代)的策略,而不是一步到位,这样容易取得成功。

我国目前许多开发机构中已经使用了XP方法,但是,由于XP理论本身仍然处于不断完善和改进阶段,另外具体的开发项目也有各自的特点,因此,如何更好地将其应用到实际的项目开发过程中还需要进一步深入研究。

[参考文献]

[1]谷秀岩,“关于极限编程的理论研究”,《计算机与网络》[J],2004年第12期,P93-95

[2]王卫民,何晓韬,“极限编程理论浅析”,《安阳工学院学报》[J],2006年第6期,P45-47

[3]方志刚,《软件工程原理与应用》(第二版)[M],北京,科学出版社,2003.8

[4]张惠彦,廉保旺,逯野,“极限编程的研究和应用”,《科学技术与工程》[J],第7卷第12期,P2997-3000

[5]杜荣华,龚德俊,刘好德,谌海军,“极限编程在大型项目开发中的应用”,《交通与计算机》[J],2004年第6期,P110-112

转载自:http://www.uml.org.cn/UMLForum/200906103.asp

极限编程(XP):概念、特点和应用相关推荐

  1. 【中级软考】什么是“敏捷过程的开发方法(敏捷方法agile)“(极限编程XP、特征驱动开发FDD、并列争球法Scrum、水晶法Crystal、开放源码法、自适应软件开发 ASD方法)

    文章目录 敏捷方法 1 极限编程 XP 1.四大价值观 2.十二个最佳实践 2 特征驱动开发 FDD 1.FDD 角色定义 2.核心过程 3.最佳实践 3 并列争球法 Scrum 1.Scrum 的五 ...

  2. 【敏捷2.3】极限编程XP的关键实践(一)

    极限编程XP的关键实践(一) 提到 XP 的关键实践,就不得不拿出下面这张图. 看着眼熟不?是不是很多内容我们在上篇文章中其实都已经讲过了.没错,可能有些概念你很清楚,但有些概念你就完全没听说过了.今 ...

  3. 软件开发过程--极限编程(XP)

    ExtremeProgramming(极限 编程,简称XP)是由KentBeck在1996年提出的.KentBeck在九十年代初期与WardCunningham共事时,就一直共同探索着新的软件开发方法 ...

  4. 敏捷开发之道(二)极限编程XP

           上次的博文敏捷开发之道(一)敏捷开发宣言中,我们介绍了一下敏捷开发宣言,在其中,我们了解到了关于敏捷开发的几个重要的价值观.今天我们来了解一个敏捷开发的方法--极限编程XP 1.介绍 极 ...

  5. XP框架开启debug模式_敏捷方法之极限编程(XP)和 Scrum

    敏捷软件开发(Agile software development),又叫敏捷开发,是一种应对开发过程中需求快速频繁变更的软件开发能力.敏捷开发强调开发团队与业务专家之间的紧密协作.面对面的沟通.频繁 ...

  6. 极限编程(xp编程)总结

    转自http://rayzhl25.iteye.com/blog/422604 作者rayzhl25 1.什么是xp编程(极限编程): XP是勇气,交流,反馈和简单. XP是软件开发过程中的纪律,它规 ...

  7. 极限编程(XP)的12个实践原则

    1.计划的制定 制定计划的目的是确定本次迭代的范围. 本步骤的重心应该放在决定什么是对客户来说最重要的任务和如何首先完成这些任务. 计划的制定包括客户选择的项目大小.程序功能的优先级.各个版本的合成和 ...

  8. 极限编程XP的核心实践是什么?

    XP的核心实践:整个团队.规划游戏.小规模发布.客户测试.收集代码所有权.编码标准.一致的节奏.隐喻.持续集成.测试驱动开发.重构.简单设计.结对编程. 转载于:https://blog.51cto. ...

  9. 敏捷方法中极限编程(XP)和Scrum区别

    敏捷开发的实践有XP 和 Scrum,似乎很少有文章介绍这两者的区别 \ XP Scrum 迭代周期 1-2周 2-4周 是否允许修改需求 在一个需要没有实现的时候可以使用其他的需求将其替换,但是实现 ...

最新文章

  1. WinDbg用法详解
  2. istringstream ostringstream stringstream
  3. 一个可供中小团队参考的微服务架构技术栈
  4. DL之YoloV3:Yolo V3算法的简介(论文介绍)、各种DL框架代码复现、架构详解、案例应用等配图集合之详细攻略
  5. netbeans连接数据库_NetBeans Java EE技巧#1 –数据库中的实体类
  6. View,SurfaceView,SurfaceHolder
  7. java安卓浏览器下载文件,JAVA实现文件下载,浏览器端得到数据没反应解决方案
  8. 第一次大作业总结——四则运算程序
  9. 大数据分析平台由哪些部分构成
  10. GRE阅读-GRE佛脚备考系列之阅读分册volume 2-机经练习(1)
  11. 股票什么时候买入什么时候卖出适合?
  12. 乐观锁 optimistic 和 悲观锁 pessimistic lock
  13. Kaldi的关键词搜索(Keyword Search,KWS)
  14. 更方便!微信小程序任务栏功能升级:增加「我的小程序」
  15. ORACLE创建一个‘数据库’
  16. javax.servlet.ServletException: Could not resolve view with name ‘***‘ in servlet
  17. Taro小程序组件传值
  18. PmxEditor制作mmd表情
  19. 生产者与消费者问题------legend050709
  20. java判断是否已数字结尾,正则表达式测试字符串是否以数字结尾

热门文章

  1. C++使用socket的api创建简单服务器
  2. 微服务领域是不是要变天了?Spring Cloud Alibaba正式入驻Spring Cloud官方孵化器!
  3. Firefox 火狐浏览器升级版本后鼠标右键复制链接对应键盘快捷键的更换插件
  4. java游戏项目分享,适合的零基础java项目,提高你的代码能力
  5. 阿里云快速网站搭建详解
  6. MYC归来(2)第三次测试
  7. 长长见识,编程语言大赏
  8. MacOS 安装Hadoop3.1.1教程
  9. ssm高校就业宣讲会系统计算机毕业设计
  10. 为什么要设置内链,它对SEO有什么影响?