本文章已收录于:
分类:
【研发总结】(73)
版权声明:本文为博主原创文章,未经博主允许不得转载。
上篇文章,我们探讨了什么是敏捷开发,以及敏捷开发的方法学。在这篇文章中,我们将继续讨论敏捷开发中的问题——XP极限编程。
在讨论之前,先让我们来了解一下XP极限编程产生的背景,软件业所具有的共同的问题。
背景
- 软件越来越复杂
- 需求越来越多变
- 过程越来越规范
了解了背景之后,那么就会想问,到底什么是极限编程呢?下面我们就做一个简单的介绍。
XP概述
极限编程(eXtreme Programming),是一种全新的、轻量级的、灵巧的软件开发方法,是一种软件工程方法学。它强调程序设计团队与业务专家之间的紧密协作、面对面的沟通(比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好的适应需求变化的代码编写和团队组织方法,更注重软件开发中人的作用。
核心价值观
- 沟通(Communication)
问题往往是由于开发人员与设计人员、设计人员与客户之间的沟通不畅造成的。XP认为项目成员之间的沟通是项目成功的关键,并把沟通看作项目中间协调与合作的主要推动因素。因此,项目相关人员之间进行充分、多渠道(最好面对面)的沟通是很有必要的。
- 简单(Simplicity)
XP假定未来不能可靠地预测,在现在考虑它从经济上是不明智的,所以不应该过多考虑未来的问题而是应该集中力量解决燃眉之急。 在系统可运转的前提下,做最简洁的工作,坚定的专注于最小化解决方案;在开发中不断的优化设计,时刻保持代码简洁、无冗余。需求尽量的简单,设计尽量的简单,代码尽量的简单,文档尽量的简单。
- 反馈(Feedback)
尽快获得用户的反馈,并且越详细越好,使得开发人员能够保证自己的成果符合用户的需要。强调各种形式的反馈:小交付、短迭代、测试先行等。XP认为系统本身及其代码是报告系统开发进度和状态的可靠依据。系统开发状态的反馈可以作为一种确定系统开发进度和决定系统下一步开发方向的手段。
- 勇气(Courage)
这是最重要的核心价值。因为XP强调要“拥抱变化”,因此对于用户的反馈,提倡积极面对现实和修改问题的勇气,如放弃已有代码,改进系统设计等;勇敢的重构;所有人拥有代码;敢于极限(把好的方法做到极致)。XP认为,软件开发中,人是最重要的一个方面。在一个软件产品的开发中,人的参与贯穿其整个生命周期,是人的勇气来排除困境,让团队把局部的最优抛之脑后,达到更重大的目标。
12个实践原则
- 规划策略(Planning Game)
以业务优先级和技术估计为基础,决定下一版本发布的范围。
- 结对编程(Pair Programming)
结对编程是一种编程模式。两个程序员并排坐在一台电脑前,面对同一个显示器,使用同一个键盘,同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起单元测试,一起整合测试(Integration Test),一起写文档等。基本上所有的开发环节都一齐肩并肩地,平等地,互补地进行开发工作。
结对编程是让两个人共同设计和开发代码的实践。结对者是全职合作者,轮流执行键入和监视;这提供了持续的设计和代码评审。不是两个人做一个人的事情。
- 测试(Testing)
测试驱动开发,是指在编码开始之前,首先将测试写好,而后再进行编码,直至所有的测试都得以通过。即所谓的先测试,再编码;代码未动,测试先行。 通常包括,Unit Test、Acceptance Test( Functional Test )、Nightly Test、Stress Test等。
- 重构(Refactoring)
重构是XP的一个重要组成部分。所谓重构是指在不改变代码外在行为的前提下对代码做出的修改,以改进代码的内部结构。重构是一种有纪律的、经过训练的、有条不紊的代码整理方法,可以将整理过程中不小心引入错误的可能性降到最低。改进软件的设计,Refactoring帮助重新组织代码,重新清晰地体现结构和进一步改进设计。
- 简单设计(Simple Design)
系统应设计得尽可能简单。
- 代码集体所有权(Collective Code Ownership)
代码集体所有权强调的是整个团队,而非个人,即“我们”的代码,而不是“我”的代码。 团队中的任何人都可以改动任何一段代码,但改动后的代码必须通过所有相关的测试。
- 持续集成(Continuous Integration)
持续集成的思想是任何时候只有一项任务完成,就集成新代码,构造系统并测试。持续集成是每日构建\每晚构建的一种极限形式,是XP的重要基础。
测试先行是持续集成的一个重要前提。持续集成指不断地把完成的功能模块整合在一起。目的在于不断获得客户反馈以及尽早发现BUG。随时整合,越频繁越好;集成及测试过程的自动化程度越高越好。每次只有一个PAIR在整合,而且必须运行功能测试。
需注意,持续集成需要良好的软件配置变更管理工具的有效支持。
- 现场客户(On-site Customer)
客户是Team成员,在开发现场和开发人员一起工作。传统的客户任务一般是讲解需求,运行验收测试,接收发布的系统。
- 小型发布(Small Release)
发布过程应该尽可能地自动化、规范化。不断地发布可用的系统可以告诉客户你在做正确的事情。客户使用发布的系统,可以保证频繁地反馈和交流。保证客户有足够的依据调控开发过程(增加、删除或改变User Story)。降低开发风险。随着开发的推进,发布越来越频繁。所有的发布都要经过功能测试。
- 每周40小时工作制(40-Hour Work)
“不加班,不熬夜”。XP要求项目团队人员每周工作时间不能超过40小时,加班不得连续超过两周,否则反而会影响生产率。
- 编码规范(Code Standards)
XP 强调通过指定严格的代码规范来进行沟通,尽可能减少不必要的文档。类型包括:格式、代码结构、命名约定、错误处理、注释等。
- 系统隐喻(System Metaphor)
XP通过隐喻来描述系统如何运作、新的功能以何种方式加入到系统。它通常包含了一些可以参照和比较的类和设计模式。XP不需要事先进行详细的架构设计。
开发过程
用户代表提出用户故事,项目组据此进行讨论、提出隐喻,在此活动中有可能要进行系统结构的Spike。在隐喻和用户故事的基础上,根据用户设定的优先级制订交付计划,然后开始多个迭代过程,在迭代期内产生的新用户故事不在本迭代内解决,以保证开发不受干扰。经验收测试通过后交付使用。
相关推荐
### 敏捷开发与极限编程的关键知识点 #### 一、敏捷开发概述 ##### 1. 敏捷开发的定义及兴起原因 - **定义**:敏捷开发是一种以人为本、迭代、循序渐进的开发方法论,旨在通过快速适应变化、及时交付有价值的产品...
敏捷过程与极限编程,极限编程的有效实践 敏捷软件开发宣言
对比十几种软件开发模型 瀑布模型 演化模型 螺旋模型 喷泉模型 快速原型模型 智能模型 混合模型 敏捷开发 极限编程XP
极限编程(Extreme Programming, XP)是一种敏捷软件开发方法,由Kent Beck在1996年提出。XP旨在通过简单、高效且灵活的实践来改进软件开发过程,增强团队之间的沟通与协作,提高软件质量和响应变化的能力。 #### XP...
**XP极限编程** XP(Extreme Programming)是一种敏捷开发方法论,由肯特·贝克(Kent Beck)在1990年代末提出。它强调快速响应变化,通过一系列实践来提高软件开发的质量和效率。本套课程围绕XP的核心原则和实践,...
作者回溯到2002年,描述了敏捷开发思想在中国的早期传播,尤其是极限编程(XP)理念的引入。虽然当时敏捷开发的相关书籍和资料多以抽象和理论化为主,但这并不妨碍敏捷开发理念在作者心中的震撼效应。作者在亲身经历...
5. **敏捷开发实践**:介绍敏捷开发的方法和工具,如Scrum和XP(极限编程),并提供团队协作和项目管理的建议。 通过阅读这本书,开发者不仅可以掌握Ruby on Rails的使用,还能深入理解敏捷开发的理念,从而提高...
《Ruby.on.Rails.Web开发之旅》,作者:【德】Patrick Lenz,翻译:王德民、刘昕、裴立秋,出版社:人民邮电出版社,ISBN:9787115188526,PDF 格式,大小 144 Mb,被压缩为 3 部分,本资源是第二部分;第一部分下载...
其中,极限编程(eXtreme Programming, XP)是敏捷方法的一种典型代表,由肯特·贝克(Kent Beck)提出。XP的核心理念是通过紧密的团队合作、频繁的反馈循环以及对变化的快速响应来提高软件质量和开发效率。 敏捷...
例如,1957年出现了增量开发方法,1970年瀑布式开发方式被正式提出,而到了1990年代,各种敏捷方法如Scrum、极限编程(XP)、水晶方法(Crystal)等开始逐步成熟并得到广泛应用。 七、敏捷开发常见方法 敏捷开发有...
《Java™ Extreme Programming Cookbook》是一本深入探讨Java与极限编程(XP)结合应用的专业书籍,由Eric M. Burke和Brian M. Coyner共同撰写,出版社为O'Reilly,出版日期为2003年3月,ISBN号为0-596-00387-0,...
极限编程(Extreme Programming, XP)是一种敏捷软件开发方法论,强调快速反馈、团队协作以及灵活应对需求变化。以下是基于这个主题的详细知识点: 1. **极限编程基础**:极限编程的核心理念是通过频繁的迭代、客户...
在这种背景下,敏捷开发方法应运而生,尤其是极限编程(XP),它倡导快速迭代、持续反馈和灵活调整,以更好地应对不确定性和变化。本文将深入探讨敏捷需求建模(Agile Requirements Modeling,ARM)的概念、架构及其...
Martin(也被称为“鲍勃叔叔”),作为软件开发和工程领域的大师,阐述了敏捷开发中的核心原则、设计模式和实践,尤其是在极限编程(Extreme Programming, 简称XP)方面的应用。XP是一种敏捷软件开发方法,它在预算...
【极限编程(Extreme Programming, XP)】是一种敏捷开发方法论,由肯特·贝克(Kent Beck)在1999年提出。XP的核心理念是通过频繁迭代、客户参与和团队协作来提高软件开发的质量和响应能力。在2014年的IEEE极限编程...