极限编程

极限编程

(ExtremeProgramming,简称XP)

由KentBeck在1996年提出的,适用于小团队开发。

是一个轻量级的、灵巧的软件开发方法;

基础和价值观:沟通(Communication)、简单(Simplicity)、反馈(Feedback)、勇气(Courage);即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。此外还扩展了第五个价值观:谦逊(Modesty)。

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



13个核心实践

团队协作(Whole Team)或现场客户 ( On-site Customer )

XP项目的所有参与者(开发人员、客户、测试人员等)一起工作在一个开放的场所中,他们是同一个团队的成员。这个场所的墙壁上随意悬挂着大幅的、显著的图表以及其他一些显示他们进度的东西。


规划策略(The Planning Game);

计划是持续的、循序渐进的。每2周,开发人员就为下2周估算候选特性的成本,而客户则根据成本和商务价值来选择要实现的特性。


结对编程(Pair programming)

由两个开发人员在同一台电脑上共同编写解决同一问题的代码,通常一个人负责写编码,而另一个负责保证代码的正确性与可读性。


测试驱动开发(Testing-Driven Development)

强调”测试先行”。在编码开始之前,首先将测试写好,而后再进行编码,直至所有的测试都得以通过。


重构(Refactoring)

重构的使用确保程序员加入新的功能后代码仍保持简单, 从而保证简单的代码仍然能够运行所有的测试。


简单设计(Simple Design)

团队保持设计恰好和当前的系统功能相匹配。它通过了所有的测试,不包含任何重复,表达出了编写者想表达的所有东西,并且包含尽可能少的代码。


代码集体所有权(Collective Code Ownership)

任何结对的程序员都可以在任何时候改进任何代码。没有程序员对任何一个特定的模块或技术单独负责,每个人都可以参与任何其它方面的开发。


持续集成(Continuous Integration)

把代码持续集成到一个主干可以避免重复和不匹配的代码。


客户测试——(Customer Tests)

客户对每个需求都定义了一些验收测试。通过运行验收测试,开发人员和客户可以知道开发出来的软件是否符合要求。极限编程开发人员把这些验收测试看得和单元测试一样重要。为了提高效率,最好能将这些测试过程自动化。


小型发布(Small Release)

强调在非常短的周期内以递增的方式发布新版本,从而可以很容易地估计每个迭代周期的进度,便于控制工作量和风险;同时,也可以及时处理用户的反馈。


每周40小时工作制(40-hour Week)

XP过程通过使用一些形象的比喻让所有人对系统有个共同的、简洁的认识。XP认为加班是不正常的,因为这说明关于项目进度的估计和安排有问题。


编码规范(Code Standards)

XP开发小组中的所有人都遵循一个统一的编程标准,因此,所有的代码看起来好像是一个人写的。因为有了统一的编程规范,每个程序员更加容易读懂其他人写的代码。


系统隐喻(System Metaphor)

为了帮助每个人一致清楚地理解要完成的客户需求、要开发的系统功能,XP开发小组用很多形象的比喻来描述系统或功能模块是怎样工作的。比如,对于一个搜索引擎,它的Metaphor可能就是“一大群蜘蛛,在网上四处寻找要捕捉的东西,然后把东西带回巢穴。”

时间: 2024-11-05 18:54:00

极限编程的相关文章

敏捷开发和极限编程

敏捷软件开发(Agile software development): 它是一种用来应对软件需求的不断变更的新的软件开发技术. 强调整个开发过程中业务人员和开发人员紧密协作在一起,面对面交流,频繁性的交付软件,随时应对需求的变更.追求在尽可能短的时间内交付较小的可用的功能,并在整个项目周期中持续改善和增强. 极限编程(Extreme programming,简XP): 极限编程是敏捷开发中最富有成效的几种方法学之一. XP是一种近螺旋式开发方法,它将复杂的开发过程分解成一个个小的开发周期,对需求

RUP、极限编程、敏捷过程

RUP统一过程(Rational Unified Process)是一款完美的软件过程,总结了许多的经验,这些经验被称为"最佳实践".它可以为所有方面和层次的程序开发提供指导方针,模版以及事例支持.RUP和类似的产品--例如面向对象的软件过程(OOSP),以及OPEN Process都是理解性的软件工程工具--把开发中面向过程的方面(例如定义的阶段,技术和实践)和其他开发的组件(例如文档,模型,手册以及代码等等)整合在一个统一的框架内 "最佳实践"包含六条最有效的软

IEEEXtreme极限编程大赛题解

这是 meelo 原创的 IEEEXtreme极限编程大赛题解 IEEEXtreme全球极限编程挑战赛,是由IEEE主办,IEEE学生分会组织承办.IEEE会员参与指导和监督的.IEEE学生会员以团队为单位参与的全球性竞赛,参赛者要在24小时内完成一系列程序设计问题.竞赛自2007年起每年10月份举办一次,迄今为止已经举办9届,参赛规模不断扩大,去年已吸引全球2400多支队伍参赛. 参赛者必须是IEEE学生会员,参赛者以队为单位参加,每个队至多包含3名IEEE学生会员,其中最多有2名研究生.每支

软件工程---极限编程

在软件工程课上第一次听到极限编程,对此产生了些兴趣,于是想多了解一些这方面的知识. 首先介绍一下什么是极限编程(XP):首先它是使用最广泛的的敏捷过程(是以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发的过程,在此不进行赘述.有兴趣请看http://baike.baidu.com/link?url=qdZuN4jyDa7tubVVS9ca7VQQepL9f-Yw3BcEYOEr3Apd9IhKunE3AqeaI-nutX879RlDiP5KDgwKPL8g56zSEK)其次极限编程是

极限编程XP(Extreme Programming)

极限编程简介       极限编程(Extreme Programming,简称XP)是敏捷软件开发方法的代表.2000年,美国软件工程专家Kent Beck对极限编程这一创新软件过程方法论进行了解释:"XP是一种轻量.高效.低风险.柔性.可预测.科学而充满乐趣的软件开发方法."Kent Beck建议XP应用于规模小.进度紧.需求变化大.质量要求严格的项目.它是价值而非实践驱动的高度迭代的开发过程,其价值体现在以下几个方面: 第一,沟通(Communication):即追求有效的沟通.

敏捷软件开发:原则、模式与实践——第2章 极限编程概述

第2章 极限编程概述 作为开发人员,我们应该记住,XP并非唯一选择.--Pete McBreen,软件技术专家 在第1章中,我们概述了有关敏捷软件开发方法方面的内容,但它没有确切地告诉我们去做些什么:其中给出了一些泛泛的陈述和目标,却没有给出实际的指导方法.本章要改变这种状况. 2.1  极限编程实践 2.1.1  完整团队 我们希望客户.管理者和开发人员紧密地工作在一起,以便于彼此知晓对方所面临的问题,并共同去解决这些问题.谁是客户?XP团队中的客户是指定义产品的特性并排列这些特性优先级的人或

敏捷软件开发和极限编程介绍

转自:http://www.uml.org.cn/SoftWareProcess/201108154.asp 0. 软件开发的本质 先让我们看看一般的产品生产: 例一,汽车生产.原材料.配件等采购完毕(我这里说到了采购配件,这相当于把部分功能的生产转交给其他职能公司.对应到软件生产的(子)项目外包.这个话题在本文就不扩展了),进入生产.组装.测试车间,进行一系列规定的工作流程.正常情况下,如果不发生不可抗拒的事件,那么可以按时完成合同规定的交付.这中间不会有什么变动性和不可预测性. 例二,再来看

极限编程介绍

http://zh.wikipedia.org/wiki/%E6%9E%81%E9%99%90%E7%BC%96%E7%A8%8B 极限编程(英语:Extreme programming,缩写为XP),是一种软件工程方法学,是敏捷软件开发中最富有成效的几种方法学之一.如同其他敏捷方法学,极限编程和传统方法学的本质不同在于它更强调可适应性而不是可预测性.XP的支持者认为软件需求的不断变化是很自然的现象,是软件项目开发中不可避免的.也是应该欣然接受的现象:他们相信,和传统的在项目起始阶段定义好所有需

软考复习之路—从瀑布模型到极限编程,敏捷开发

软件开发是一门技术,也是一门艺术. 瀑布模型.极限编程.敏捷开发是有代表性的开发模式,在对开发者.客户.最终的产品的关注上的变化,体现了软件开发管理者在管理模式上的变化. 瀑布模型 是一种理想化的开发模型,要求有明确的需求分析,无法解决软件需求不明确或不准确的问题. 瀑布模型像工厂流水线一样把软件开发过程分成各种工序,并且每个工序可以根据软件产品的规模.参与 人员的多少进一步细分成更细的工序.更符合分层的设计思想,比较适合于大型软件的开发.也因此瀑布模型 是使用最多的开发模型. 瀑布模型将复杂的