极限编程(XP)起源始于1990年代。当时肯特·布莱克(Kent Black)在戴姆勒克莱斯勒(DaimlerChrysler)处理项目时,试图寻找一种更好的软件开发方法。他的创立新方法后来被称为极限编程方法论,并被证明是一种成功的方法。
作为对旧方法的一种反应而创建的方法,XP使用了与瀑布模型不同的不同方法。它的方法的一个重要区别是它关注于适应性而不是可预测性。这种方法背后的原因是,软件开发是一个非常不稳定的过程,其中从一开始就无法完全预测需求,但是随着项目的进行,需求将始终发生变化。因此,软件开发需要一种方法,该方法应能够在项目生命周期中的任何时候适应不断变化的需求。
在戴姆勒克莱斯勒项目的实验中 肯特 发现了四个维度,这些维度后来成为XP的哲学。这些做法,如果正确实施,将改善任何软件开发项目。具体做法为:
1. 您需要改善沟通。
2. 您需要寻求简单性。
3. 您需要获得有关您的表现的反馈。
4. 您需要始终勇往直前。
“每种做法仍然具有与以前相同的弱点,但是如果现在这些弱点被其他做法的强项所弥补,该怎么办呢?我们也许可以简单地做事。” –肯特·贝克(Kent Beck)
极限编程的白板视图
它可能看起来像这样……
我将这种观点组合在一起,以帮助一些人了解“系统”的外观。它并不一定是完美的,但他们至少需要一个基本的构想或框架,以便他们可以更好地理解各种实践如何结合在一起。
使白板视图能够帮助人更快地入手极限编程
一张图片-价值1,000个字!
这样做的好处是,一旦您在白板上放置了一张简单的图片,便可以与团队进行真正的讨论,以讨论可以改进的地方。这里的主要思想是使您脑海中得到简单的视觉效果,以便您可以轻松地在白板上绘画,并知道各种活动和工件的名称。
如果您对此有所保留,则可以帮助您建立简单的词汇表。
该词汇表将帮助您更快地加入其他人,并且将帮助您快速扩展自己的工具箱,并且很快您将发现自己正在撰写新方法并在流程中进行有趣的创新,这将帮助您做得更好,更快,更便宜…在云时间上。
什么是极限编程
极限编程(XP)是一种基于简单,沟通,反馈和勇气原则的轻量级软件开发方法。
我希望能够扫描方法以比较方法。
为此,我创建了活动,工件,原理和实践的框架。
这是我在XP上的注意事项:
活动项目 (Activities)
- 编码
- 测试中
- 倾听
- 设计中
制品 (Artifacts)
- 验收测试
- 码
- 迭代计划
- 发布和迭代计划
- 故事
- 故事卡
- 有关测试数量,每次迭代的故事等的统计信息
- 单元测试
- 每次迭代都工作代码
12种做法 (Best Practices)
这是12种XP做法:
在XP中,这四项基本活动是通过使用实践来实现的,这些实践是传统的软件工程实践,但被提升为体现和鼓励XP价值观。尽管完全有28条极限编程的规则和实践[9],但它们可以压缩为十二个简单规则:
- 用户案例(planning ):用户案例可以视为用例的较小版本。这样,客户可以尽可能简短地定义新应用程序的规范(功能,价值,优先级)。这些故事将成为项目团队进行项目成本估算和管理的基础。
- 小型发行版(Buidling Block): XP强调对应用程序进行小型,简单但频繁的版本更新。每个新添加的要求将立即合并,并重新发布系统。
- 隐喻(System Metaphor):开发人员和程序员必须遵守名称,类名和方法的标准。
- 集体所有权 (collective Ownership):在XP方法论中,所有代码均被视为由整个团队拥有,而不是单个财产。因此,所有代码都将由所有人审查和更新。
- 编码标准 (Coding standard):编码的样式和格式必须相同,以确保团队成员之间的兼容性。这种方法可以加快协作速度。
- 简单的设计 (Simple Design):始终寻找尽可能简单的系统实现但又满足所有必需功能的系统实现。
- 重构 (Refactoring):所有团队成员应不断调整和改进应用程序。这要求成员之间进行非常良好的沟通,以避免重复工作。
- 测试 (Testing):每个小的发行版(称为构建块)都必须通过测试,然后才能发行。XP在这方面的独特之处在于测试首先创建,然后应用程序代码的开发,以满足并通过cahllenges那些预笔试。
- 对编程 (Pair Programming): XP程序员可以成对工作。所有代码都是由在同一台计算机上一起工作的两个程序员开发的。期望结对编程以相同或更少的成本生成更高质量的代码。
- 持续集成 (Continuous Integration):软件构建一天完成几次。这样,所有开发人员都可以避免工作分散,因为他们不断地将代码发布和集成在一起。
- 每周工作40个小时 (40-hour workweek):通过不超过身体可以承受的工作量,保持身心健康。
- 现场客户 (On-site customer):必须将客户视为项目的组成部分。必须安排客户随时可用,以确保项目步入正轨。
XP过程可以通过下图表示:
要了解XP的实践,请参阅XP的实践和主要周期的图片。
极端编程: 5个价值
- 通讯
- 勇气
- 反馈
- 尊重
- 简单
相数
以下是XP项目生命周期的各个阶段。
- 探索阶段
- 规划阶段
- 迭代到发布阶段
- 生产阶段
- 维护阶段
有关可视化概述,请参阅《 XP生命周期中的敏捷建模》。
12条原则(敏捷宣言)
根据敏捷宣言,以下是12条敏捷原则 :
- 我们的首要任务是通过尽早并持续交付有价值的软件来满足客户。
- 即使在开发后期,也欢迎不断变化的需求。敏捷流程利用变更来获得客户的竞争优势。
- 频繁交付工作软件,从几周到几个月不等,而更倾向于缩短时间范围。
- 在整个项目中,业务人员和开发人员必须每天一起工作。
- 围绕有积极性的人建立项目。给他们提供所需的环境和支持,并信任他们来完成工作。
- 向开发团队内部和内部传达信息的最有效方法是面对面的对话。
- 工作软件是进度的主要衡量标准。
- 敏捷过程促进可持续发展。赞助者,开发者和用户应该能够无限期地保持恒定的步伐。
- 持续关注技术卓越和良好的设计可提高敏捷性。
- 简洁性(最大化未完成工作量的艺术)至关重要。
- 最好的体系结构,需求和设计来自自组织团队。
- 团队定期检查如何提高效率,然后相应地调整和调整其行为
4个价值观(敏捷宣言)
根据敏捷宣言,这些是四个敏捷值:
- 个人与流程和工具之间的互动
- 通过全面的文档工作软件
- 客户合作而非合同谈判
- 响应计划变更
其他资源
- 在离岸开发中使用敏捷软件流程(Martin Fowler)
- 极限编程(Ward Cunningham的Wiki)
- XProgramming.com(Ron Jeffries)
- 敏捷宣言
- 极限编程(维基百科)
- XP的实践和主要周期(Ron Jeffries)
- 极限编程核心实践(Ward Cunningham的Wiki)
你可能还喜欢
- Comparison of Scaling Agile Frameworks
- What are the 10 Principles of LeSS Framework?
- Extreme Programming (XP) vs Scrum