蔓字五行属什么| 2023年属兔的是什么命| azul是什么颜色| 为什么高血压| 宝齐莱算什么档次的表| 外阴溃烂用什么药| 上呼吸道感染吃什么消炎药| 出煞是什么意思| 周围神经病是什么症状| 屋尘螨和粉尘螨是什么| 哈哈是什么意思| 小孩发育迟缓是什么原因造成的| 身体安康什么意思| 赤藓糖醇是什么| 小孩口臭是什么原因| 吃什么可以补血| cm是什么| 五月十三号是什么日子| 凤凰花什么时候开| 如泰山前面一个字是什么啊| 梦见头上长虱子是什么意思| 习惯是什么意思| 颈椎做什么检查| 公元前3000年是什么朝代| 猫肉为什么不能吃| 为什么会低血糖| 喝绿豆汤有什么好处| 一如既往什么意思| 属羊女和什么属相最配| 安宫丸什么时候吃| 梅花手表属于什么档次| 芒果与什么食物相克| male是什么意思| 失败是成功之母是什么意思| 什么是员额制| 家有小女是什么生肖| 三伏天是什么时候开始| 今天是什么纪念日| 衣服为什么会发霉| 寅时属什么生肖| 川芎治什么病最好| 口腔溃疡可以吃什么药| 旖旎是什么意思| 点痣不能吃什么东西| 小狗起什么名字好听| 心脏逆钟向转位是什么意思| 知青为什么要下乡| 杨梅有什么好处| 扁豆长什么样子图片| 返现是什么意思| l是什么意思| 总有眼屎是什么原因| 检查阳性是什么意思| 苹果越狱是什么意思啊| 梦见狗吃屎是什么意思| XXJ什么意思| 中位数什么意思| 抗体和抗原有什么区别| po是什么的缩写| Mo什么元素| 985211是什么意思| 怄气是什么意思| 家里为什么会有蜘蛛| 橙色五行属什么| 咽炎吃什么消炎药| 迷你什么意思| 天生一对成伴侣是什么生肖| 35岁月经量少是什么原因| 什么时间吃苹果最好| 尾椎骨疼挂什么科| 农历五月初五是什么星座| 吃什么除湿气| ooc是什么| tp是什么| 枕大池增大什么意思| 石英岩玉是什么| 梦见毒蛇是什么预兆| 用白醋泡脚有什么好处| 施华洛世奇水晶是什么材质| 户口分户需要什么条件| 什么叫撤退性出血| 胃烧灼感是什么原因| 仙灵脾又叫什么| 耳蜗是什么东西| 减肥晚上适合吃什么水果| 什么颜什么色| 6月19什么星座| 中国什么武器世界第一| 鼻后滴漏吃什么药| 小乌龟吃什么| alexanderwang是什么牌子| 网线长什么样| 肺纤维灶是什么意思| 蚊子代表什么生肖| 排卵试纸什么时候测最准| 中筋面粉是什么粉| 什么风什么什么| 1943年属什么生肖| 有色眼镜是什么意思| 蛋白肉是什么东西做的| fzl什么意思| 早筛是检查什么项目| 儿童拉肚子挂什么科| 胆囊壁胆固醇结晶是什么意思| 泡脚出汗有什么好处| 素颜霜是什么| 夕阳红是什么意思| 阴虚火旺是什么症状| 心脏缺血吃什么补的快| 黄精和什么泡水喝最好| 心跳慢吃什么药| 避重就轻是什么意思| 宁夏有什么特产| 海带排骨汤海带什么时候放| 伏特加是用什么酿造的| 衾怎么读什么意思| 游戏是什么| 透析是什么意思| 做穿刺是什么意思| sneakers是什么意思| 月的偏旁有什么字| 夏天猪骨煲什么汤最好| 吃什么可以壮阳| 女生的名字叫什么好听| 18岁是什么生肖| 泰山石敢当是什么意思| 荷尔蒙是什么东西起什么作用| 脚肿是什么原因造成的| 收放自如是什么意思| 什么不什么身| 建档立卡是什么意思| 什么是临床医学| 一个山一个见读什么| 生僻字是什么意思| 梦见驴是什么意思| 黄辣丁吃什么| 虾皮是什么| 什么分明| 号召是什么意思| mastercard是什么意思| 百岁山和景田什么关系| 乔迁礼物应该送什么| 芒果什么季节成熟| 乳糜血是什么意思| 吃什么可以消除淋巴结| 顺时针是什么方向| 盐酸二甲双胍缓释片什么时候吃| 为什么手比脸白那么多| 翻毛皮是什么材质| 吃马齿苋有什么好处| 身体潮湿是什么原因| 牵牛花什么时候开| 九月23日是什么星座| 生存是什么意思| igg阳性是什么意思| 蚕蛹是什么| 肾虚吃什么食物| 婕妤是什么意思| 经常肚子疼拉肚子是什么原因| 什么酒适合女生喝| 温度计代表什么生肖| 严密是什么意思| sp是什么意思| 王昆念什么| 知足是什么意思| 11月15日什么星座| 轰20什么时候首飞| 可字属于五行属什么| bun是什么意思| 长沙开福寺求什么最灵| 经典什么意思| 骨折吃什么好的快| 今年26岁属什么生肖| 月经量少要吃什么调理| 神经性头痛吃什么药| 吃什么补肾最快最好| 牙齿出血是什么病表现出来的症状| 痔疮吃什么好| 甲状腺一般吃什么药| 鸡蛋为什么不能放冰箱| 黑匣子什么颜色| 血脂高吃什么水果最好| 晚上睡觉脚抽搐是什么原因| 福字挂在家里什么位置最合适| 鹞是什么意思| 吃什么能长胖| 扁桃体挂什么科| 尿酸高喝什么水最好| 冒是什么意思| 阳刚之气是什么意思| 小海绵的真名叫什么| 童瑶为什么要告黄定宇| 君子兰什么时候开花| 人参泡酒有什么功效| 女性生活疼痛什么原因| 口干是什么病的前兆| 办离婚证需要带什么证件| 黄飞鸿代表什么生肖| 宫颈萎缩意味着什么| 头抖动是什么病| hpv感染后有什么症状| 做小月子要注意什么| 化生是什么意思| 37属什么| esd是什么| 螃蟹代表什么生肖| 冠心吃什么药好| 机是什么生肖| 苦尽甘来是什么意思| 梦到上坟是什么意思| 听吧新征程号角吹响是什么歌| 紫色心情是什么意思| 尿液检查红细胞高是什么原因| 洗纹身去医院挂什么科| 正常的包皮什么样子| 什么面朝天| 立冬吃什么东西| 利是是什么意思| 小登科是什么意思| 二线用药是什么意思| 情愫是什么意思| 肺胃热盛吃什么中成药| 妇科清洁度3度用什么药治疗| 什么肉好吃| 嗝气是什么原因引起的| 心外科是看什么病的| 打破伤风针挂什么科| 掉以轻心是什么意思| 遗传代谢病是什么意思| 怼人是什么意思| 百日咳是什么| 北方五行属什么| 城镇户口是什么意思| 用什么可以解开所有的谜| 稼字五行属什么| 一个鱼一个台念什么| 农历5月25日是什么星座| 金钱能买来什么但买不来什么| 市政协主席是什么级别| 烟火气息是什么意思| 不动产是什么意思| 海员是干什么的| 老化是什么意思| 正月十八是什么日子| 世界大同是什么意思| 头孢治什么| 身体起水泡是什么病症| 蛇为什么怕雄黄| 鸡米头是什么| 膝盖擦伤用什么药| 白细胞低吃什么好| 血钾低会有什么症状| 为什么身份证后面有个x| 肿瘤标志物五项检测是什么| 出生日期查五行缺什么| 普洱在云南什么位置| 甘油三酯高吃什么降得快| 横死是什么意思| 52年属什么| 口干口渴是什么原因| 车船税是什么意思每年都交吗| 水蛭是什么动物| 尿素氮高什么原因| 焦虑挂什么科| 百度
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >敏捷开发-极限编程(XP)

金银花不能和什么一起吃

原创
作者头像
学习中心
发布于 2025-08-08 11:04:57
发布于 2025-08-08 11:04:57
百度   过去3年间,550多名专家对全球4个主要地区——美洲地区、亚太地区、非洲地区及欧洲和中亚地区进行了生物多样性调查。 2K0
举报

本文作者:何文强 — CODING 高级解决方案架构师 具有一线互联网、物联网独角兽、全国股份制银行、新型智慧交通等跨行业从业经历,历任 Java 开发高级工程师、DevOps 技术专家、高级研发经理等职,对微服务、敏捷、DevOps、容器技术有深刻的理解和丰富的实践。

定义

极限编程是一种软件开发框架,旨在生产出高质量的软件同时保证开发团队有高质量的生活状态,更强调可适应性而不是可预测性。极限编程的支持者认为软件需求的不断变化是很自然的现象,是软件项目开发中不可避免的、也是应该欣然接受的现象;他们相信,和传统的在项目起始阶段定义好所有需求再费尽心思的控制变化的方法相比,有能力在项目周期的任何阶段去适应变化,将是更加现实更加有效的方法。

  • 目标

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

哲学思想:

  • 一种社会性的变化机制
  • 一种开发模式
  • 一种改进方法
  • 一种协调生产率和人性的尝试
  • 一种软件开发方法

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

极限编程(XP)核心实践

极限编程一共包含 12 个核心实践,分为持续程序、细微反馈、共识、程序员利益四个方

持续程序

1 持续集成

集成软件的过程不是新问题,如果项目开发的规模比较小,比如一个人的项目,如果它对外部系统的依赖很小,那么软件集成不是问题,但是随着软件项目复杂度的增加(即使增加一个人),就会对集成和确保软件组件能够在一起工作提出了更多的要求-要早集成,常集成。早集成,频繁的集成帮助项目在早期发现项目风险和质量问题,如果到后期才发现这些问题,解决问题代价很大,很有可能导致项目延期或者项目失败。持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

2 软件重构

由于极限编程教条提倡编辑程序时只满足目前的需求,并且以尽可能简单的方式实现。有时会碰上一套僵硬的系统,所谓僵硬的系统,表现之一是需要双重(或多重)维护:功能变化需要对多份同样(或类似)的代码进行修改;另一种表现是对代码的一部分进行修改时会影响其它很多部分。XP 教条认为当这种情况发生时,意味着系统正告诉你通过改变系统架构以重构代码,使它更简单、更泛用。

3 短周期交付

极限编程和 Scrum 一样采用迭代的交付方式,每个迭代 1-3 周时间。在每个迭代结束的时候,团队交付可运行的,经过测试的功能,这些功能可以马上投入使用。

细微反馈

4 结对程序设计

结对程序设计的意思是所有的代码都是由两个人坐在一台电脑前一起完成的。一个程序员控制电脑并且主要考虑编码细节。另外一个人主要关注整体结构,不断的对第一个程序员写的代码进行评审。结对不是固定的:我们甚至建议程序员尽量交叉结对。这样,每个人都可以知道其它人的工作,每个人都对整个系统熟悉,结对程序设计加强了团队内的沟通。

5 策划游戏

XP 的计划过程主要针对软件开发中的两个问题:预测在交付日期前可以完成多少工作;现在和下一步该做些什么。针对这两个问题,XP 中又两个主要的相应过程:

  • 软件发布计划(ReleasePlanning)

客户阐述需求,开发人员估算开发成本和风险。客户根据开发成本、风险和每个需求的重要性,制订一个大致的项目计划。最初的项目计划没有必要(也没有可能)非常准确,因为每个需求的开发成本、风险及其重要性都不是一成不变的。而且,这个计划会在实施过程中被不断地调整以趋精确。

  • 周期开发计划(IterationPlanning)

在开发过程中,将一个长周期的大型的软件拆分成多个开发计划,每个计划都产生经过测试的能够独立交付的软件。每经过一个周期,客户就会再提出确定下一个周期要完成的需求。在每个开发周期中,开发人员会把需求分解成一个个很小的任务,然后估计每个任务的开发成本和风险。XP 的这种做法是为了及早发现问题、解决问题。

6 测试驱动开发

测试驱动开发的基本思想就是在开发功能代码之前,先编写测试代码,然后只编写使测试通过的功能代码,从而以测试来驱动整个开发过程的进行。这有助于编写简洁可用和高质量的代码,有很高的灵活性和健壮性,能快速响应变化,并加速开发过程。

测试驱动开发的基本过程如下:

  1. 快速新增一个测试;
  2. 运行所有的测试(有时候只需要运行一个或一部分),发现新增的测试不能通过;
  3. 做一些小小的改动,尽快地让测试程序可运行,为此可以在程序中使用一些不合情理的方法;
  4. 运行所有的测试,并且全部通过;
  5. 重构代码,以消除重复设计,优化设计结构。
7 全队(在场客户)

在极限编程中,“客户”并不是为系统付账的人,而是真正使用该系统的人。极限编程认为客户应该时刻在现场解决问题。例如:在团队开发一个财务管理系统时,开发小组内应包含一位财务管理人员。

共识

8 编码标准

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

9 代码集体所有

集体所有制意味着每个人都对所有的代码负责;这一点,反过来又意味着每个人都可以更改代码的任意部分。结队程序设计对这一实践贡献良多:借由在不同的结队中工作,所有的程序员都能看到完全的代码。集体所有制的一个主要优势是提升了开发程序的速度,因为一旦代码中出现错误,任何程序员都能修正它。

10 简单设计

XP 要求用最简单的办法实现每个小需求,前提是按照这些简单设计开发出来的软件必须通过测试。这些设计只要能满足系统和客户在当下的需求就可以了,不需要任何画蛇添足的设计,而且所有这些设计都将在后续的开发过程中就被不断地重整和优化。在 XP 中,没有那种传统开发模式中一次性的、针对所有需求的总体设计。在 XP 中,设计过程几乎一直贯穿着整个项目开发:从制订项目的计划,到制订每个开发周期(Iteration)的计划,到针对每个需求模块的简捷设计,到设计的复核,以及一直不间断的设计重整和优化。整个设计过程是个螺旋式的、不断前进和发展的过程。从这个角度看,XP 是把设计做到了极致。

11 系统隐喻

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

程序员利益

12 可持续发展

团队只有持久才有获胜的希望。他们以能够长期维持的速度努力工作,他们保存精力,他们把项目看作是马拉松长跑,而不是全速短跑。

极限编程价值

  • 沟通

极限编程技术可以被看成是在开发小组的成员之间迅速构建与传播制度上的认识的一种方法。

  • 简单

极限编程鼓励从最简单的解决方式入手再通过不断重构达到更好的结果。

  • 反馈
  1. 来自系统的反馈

通过编写单元测试,程序员能够很直观的得到经过修改后系统的状态。

  1. 来自客户的反馈

功能性测试是由客户还有测试人员来编写的。他们能由此得知当前系统的状态。

  1. 来自小组的反馈

当客户带着新需求来参加项目计划会议时,小组可以直接对于实现新需求所需要的时间进行评估然后反馈给客户。

  • 勇气

只为目前的需求设计以及编码,别为不可预期的未来做太多考虑”这条戒律。这是努力避免陷入设计的泥潭、而在其他问题上花费了太多不必要的精力。

  • 尊重

在极限编程中,团队成员间的互相尊重体现在每个人保证提交的任何改变不会导致编译无法通过、或者导致现有的测试案例失败、或者以其他方式导致工作延期。

极限编程规则

计划

  • 编写用户故事。
  • 根据发布计划制定发布时间表。
  • 进行频繁的小规模发布。
  • 将项目分解成迭代。
  • 用迭代计划驱动每个迭代。

管理

  • 为团队提供专注开放型办公空间。
  • 可持续的节奏。
  • 以站会开始每一天。
  • 团队开发速度可度量。
  • 让团队坐在一起。
  • 调整有缺陷的规则。

设计

  • 简单原则。
  • 设定一个系统隐喻。
  • 在设计交流中使用 CRC 卡。
  • 使用 Spike 方法降低风险。
  • 不要过度设计或过早添加不必要的功能。
  • 尽可能地重构代码。

编程

  • 客户紧密参与团队协作。
  • 遵循编码规范。
  • 优先编写测试。
  • 通过结对编程构建生产代码。
  • 一次仅限一对程序员集成代码。
  • 持续集成。
  • 选一台机器专用于代码集成。
  • 代码集体所有。

测试

  • 所有代码都必须有单元测试。
  • 发布前必须跑通所有单元测试。
  • 发现一个 Bug 要增加一个单元测试。
  • 经常性进行验收测试并公布测试结果。

极限编程原则

组成极限编程基础的原则,正是基于上面描述的那几条价值。在系统开发项目中,这些原则被用来为决策做出指导。与价值相比,原则被描述的更加具体化,以便在实际应用中更为简单的转变为具体的指导意见。

  • 快速反馈

当反馈能做到及时、迅速,将发挥极大的作用。一个事件和对这一事件做出反馈之间的时间,一般被用来掌握新情况以及做出修改。

  • 假设简单

假设简单认为任何问题都可以“极度简单”地解决。传统的系统开发方法要考虑未来的变化,要考虑代码的可重用性。极限编程拒绝这样做。

  • 包容变化

“包容变化”这一原则就是强调不要对变化采取反抗的态度,而应该包容它们。

  • 增量变化

极限编程的提倡者总是说:罗马不是一天建成的。一次就想进行一个大的改造是不可能的。极限编程采用增量变化的原则。比如说,可能每三个星期发布一个包含小变化的新版本。这样一小步一小步前进的方式,使得整个开发进度以及正在开发的系统对于用户来说变得更为可控。

  • 高质量工作

没人喜欢拖泥带水,每个人都期望出色的完成工作。极限编程的提倡者认为范围、时间、成本和质量这个四个软件开发的变量,只有质量不可妥协的。

总结

XP 是一个实践性非常强的框架,非常注重软件工程和软件质量,认同需求的快速变化,强调适应性。XP 的核心实践成为众多团队开发人员的行动指南和行为准则,是指导开发人员的日常实践的良方,例如持续集成、结对编程、测试驱动开发、重构、单元测试、编码规范、代码集体所有等被广泛接受和实践。

《数字化 IT 从业者知识体系》背景 数字化和可持续发展是中国企业未来发展的两大主题,掌握数字化知识,具备数字化能力,应用数字化技术是我们 IT 从业者未来核心竞争力所在。《数字化 IT 从业者知识体系》的初衷是为IT从业者提供的系统性的数字化知识体系,内容涵盖管理实践、工程实践、技术实践三个层次,涉及软件开发方法、应用技术架构、应用部署与管理、软件交付与协作四大方面。 在接下来的《数字化 IT 从业者知识体系》系列文章,何文强将从软件开发方法、应用技术架构、应用部署与管理、软件交付与协作四个方面,为大家进行逐一分享介绍:

  1. 软件开发方法主要包括瀑布、敏捷、精益等;
  2. 应用技术架构主要包括微服务架构、服务网格架构、无服务器架构、分布式多运行架构等;
  3. 应用部署与管理主要包括但不限于虚拟化技术、容器技术与容器编排等;
  4. 软件交付与协作主要包括但不限于CMMI、ITIL、DevOps等。

相信该知识体系有利于 IT 从业者构建丰富的技术体系、全面的技术视野和系统的能力建设。欢迎大家前往《数字化 IT 从业者知识体系》话题进行详细阅读。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义
  • 极限编程(XP)核心实践
    • 持续程序
      • 1 持续集成
      • 2 软件重构
      • 3 短周期交付
    • 细微反馈
      • 4 结对程序设计
      • 5 策划游戏
      • 6 测试驱动开发
      • 7 全队(在场客户)
    • 共识
      • 8 编码标准
      • 9 代码集体所有
      • 10 简单设计
      • 11 系统隐喻
    • 程序员利益
      • 12 可持续发展
  • 极限编程价值
  • 极限编程规则
  • 极限编程原则
  • 总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
100年前是什么朝代 嘴唇上有痣代表什么 3月份出生是什么星座 智商130算什么水平 益母草有什么作用
躯体化是什么意思 流清水鼻涕吃什么药 2月2是什么星座 深海鱼油有什么功效 这个故事告诉我们什么道理
孩子为什么长不高 李子吃了有什么好处 9月29是什么星座 雪梨百合炖冰糖有什么功效 精益求精下一句是什么
环移位了有什么症状 湿疹是长什么样的 虚妄是什么意思 手指发麻什么原因 属狗的和什么属相最配
张的五行属性是什么hcv7jop9ns9r.cn 香精是什么东西hcv8jop9ns8r.cn 血压低压高是什么原因hcv7jop6ns9r.cn 胃烧心吃什么药效果好hcv9jop7ns9r.cn e大饼是什么牌子shenchushe.com
做肠胃镜挂什么科hcv9jop1ns3r.cn 晚上九点半是什么时辰hcv9jop4ns6r.cn 淋巴发炎挂什么科hcv9jop1ns7r.cn 牙齿什么颜色最健康hcv8jop1ns3r.cn 结膜充血用什么眼药水hcv8jop8ns5r.cn
什么的蜡烛hcv8jop3ns4r.cn 鸭子喜欢吃什么hcv8jop9ns8r.cn 炸东西用什么淀粉hcv8jop0ns2r.cn 世界上最大的湖是什么湖baiqunet.com 吃什么补胰腺最好hcv8jop8ns0r.cn
梦见生姜是什么意思hcv9jop7ns0r.cn 堆堆袜是什么wuhaiwuya.com 女人手心热吃什么调理hcv8jop0ns6r.cn 二聚体偏高是什么原因hcv9jop1ns4r.cn 输血前四项检查是什么hcv8jop0ns1r.cn
百度