宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

1 .什么是极限编程

极限编程外文名为(ExtremePrograming,简称XP,KentBeck于1996年提出的软件工程方法学,是敏捷开发中最有效的几种方法论之一。 (PS )敏捷开发以用户需求的演化为核心,采用迭代、循序渐进的方法进行软件开发。 极限编程和传统方法论的本质不同于它们更加强调适应性和面对困难的随机应变能力。 当然,极限编程也有自己的缺点,并不是所有的软件开发过程都可以采用极限编程。 本文主要阐述极限编程的优点。

2 .为什么会发生极限编程?

在传统的软件工程中,方法文档的量“重”且繁琐,因此需要寻找相对轻量的方法论。 但当时敏捷方法论还没有出现,人们对轻量级方法论的观念只有“主观臆断”阶段,认为制作一个完善的软件一定要有绝对的前期准备工作。 思想是正确的,但实际的开发过程不太令人满意。 由此,从1993年到1999年,在Kent团队的项目中以极限编程的思想诞生了。 随后,2001年2月11日至13日,成立了划时代的联盟,敏捷联盟。 它是软件工程界最具影响力的非营利组织之一。

3 .极限编程包含什么内容?

价值观

沟通(Communication )

软件工程开发过程基本上是团队的工作,极限编程非常强调团队之间要以恰当的方式进行面对面的交流。 例如,白板和其他可以表达想法的绘图工具。

简单)。

软件开发人员有时会“眼不见心不烦”。 在进行需求工程时做得不够,在编码过程中试图在系统中设置很多功能,导致了非常复杂的情况,有时会导致后期软件交付时顾客的反感、维护费用的高涨,甚至导致项目的废弃。 因此,设计的时候不要在天上飞,只设计满足你需求的功能就可以了。

反馈(FeedBack )

通过不断的反馈,团队可以知道并修复软件问题,并不断调整团队的最终产品。

勇气(Courage )

这里所说的勇气是指团队的每一个成员在软件开发过程中都会遇到各种各样的问题。 我们应该有勇气用自己的判断解决遇到的问题。 例如,需要提出管理层不足的勇气,以及停止认为错误的开发的勇气等。 不仅仅是“码农”,而是有判断力的程序员。

尊重(Respect ) ) )。

团队成员之间需要相互尊重和理解,以便在项目开发过程中更有效地解决项目问题

实践

XP的核心是下面列出的一组相互关联的协同开发实践,每个实践本身可以单独执行,但在实际开发过程中发现这些实践之间存在相互促进的效果,所以优选集中在一起进行。

面对面)。

“交流”是极限编程的五大价值观之一,因此很多人同意面对面交流是最好的交流方式之一,进行无障碍的交流。

团队意识(Whole Team ) )。

要让对产品有必要作用的多位职能人员组成团队,每个人在一个团队中发挥自己的作用,实现共同的目标,团队意识是很重要的。

信息岗位(Informative Workplace )

我们团队所做的每一步都要对团队相关人员透明,设置信息辐射墙更新实时信息。

精力充沛的工作(能源世界)。

精力充沛地工作意味着你可以在工作的时候完全埋头苦干。 相反,你不应该过度工作自己,也不应该让别人过度工作,应该保证自己健康的身体和精神状态,保持积极乐观的生活态度。

联合工作(Pair Programming ) ) ) ) ) )。

一直以来我都不明白,一个工作,在一个旁边看,这种联合优点不太公平,但实际上这种组合的工作可以大大提高工作效率,大大减少后期调试的过程。

测试驱动开发(Test-Driven Development ) )。

测试是开发过程的中心,在编写产品代码之前,必须先编写测试以定义产品代码的行为,所编写的产品代码的目标是通过测试。 测试驱动开发作为极限编程思想的主要实践之一可以有效地使程序开发人员开发出更高质量、经过完整测试的程序。

(“每周周期”) ) )。

在极限编程中,小组将在一周的第一天召开会议,反映迄今为止的进展情况。 选择客户希望在该周交付的级别,然后团队决定如何处理这些流程。 到本周结束时,团队的目标是实现客户选定软件阶段的测试。

季度周期)

季度的目的是在整个项目的背景下保持每周周期的详细工作。 客户可以根据特定季度所需的功能来规划整个团队,以扩展团队的视野,并与其他需要知道功能何时可用的利益相关方合作。

懒惰(Slack ) ) )。

“懒惰”意味着团队每周的开发工作很简单,需要投入低水平的工作量,也就是“休息”。 如果队伍更重要的任务时间延误了,就要跳过这些低级任务,转到重要的工作上去。

10分钟建设(Ten-Minute Build ) )。

10分钟组件的目标是在10分钟内自动构建整个系统并执行所有测试。 XP创始人提出了10分钟的时间框架。 如果一个团队比这个更现实

践更长的构建,那么它就不太可能被频繁的运行,从而引入了更长的错误间隔时间。通过这种鉴别方法,贯彻到整个开发过程中,就可以为开发任务节省很多宝贵的时间。

持续集成(Continuous Integration)
持续集成就是当代码更改或者添加到更大的代码库中,立即对其进行测试,如果出了问题,那么问题可以很快锁定到新的代码块中,使得测试任务更加高效,通过这种持续集成的手段可以更快更准确的发现并修改Bug。

增量设计(Incremental Design)
增量设计就是在做一个项目之前预先做一点工作,以此来大概了解整个项目的基本情况,然后在交付特定功能时深入了解项目的各个细节。就好像我们学一门新课,上课之前先做好预习工作,对下节课需要学的内容做一个展望,那么我们在听课的时候就能更直接的学习到我们想学的内容,减少了钻牛角尖的可能,节省了很多时间。

4.个人学习心得。

总的来说,经历过过上学期《软件工程导论》的学习,对软件工程这个概念我也有了更深入的理解。之前以为的软件工程就是有个人有想法,然后这个人就开发了自己的软件。现在看来,我当时的想法也是很天真。通过撰写这篇博客,我学习了”极限编程“这种软件开发的方法,增加了我对软件过程每个环节的细节的理解,客户需求是什么,公司环境是什么,个人素质有哪些等等。希望在这学期的《软件开发与创新》和《软件工程Ⅰ》这些课中学习到更多的软件开发的流程细节,提高自己软件开发的素质。