在软件工程这样一个快节奏的环境中,传统的项目管理方法不再可行。这意味着IT从业者必须找到新的方法来处理经常变化的开发任务。
2001年,17位软件专家都认为必须找到新的方法来应对不断变化的开发任务,他们着眼于现有的增量式开发技术,提出了”敏捷项目管理”的概念。《敏捷宣言》中概述了灵活、快速和以协作为中心的软件开发原则。
极限编程(XP)是IT公司应用的众多敏捷框架之一。但它着重于软件开发的技术方面,这一关键特征将XP与其他敏捷方法论区别开来。
软件工程师Ken Beck在90年代引入XP,其目的是找到快速编写高质量软件的方法,并能够适应客户不断变化的需求。1999年,他在《解析极限编程:拥抱变化》一书中对XP方法进行了完善。
XP是一组工程实践。开发人员在执行这些实践时必须超越自己的能力在执行这些实践时。这就是其名字中的“极限”的来源。为了更好地理解这些实践,我们将首先讨论XP的价值和原则。
XP有5个价值点。
这些价值观代表了积极进取的团队成员的一种特定心态:他们在实现共同目标的道路上竭尽全力。XP原则源自这些价值,并通过更具体的方式将它们反映出来。
大多数研究者将5条XP原则描述为:
现在是时候学习如何将软件开发团队转变为理想团队了。
XP建议在开发软件时使用12种实践。由于XP是由价值和原则定义的,所以它的实践也代表了这些价值和原则,实践可以分为四类。
是否可以快速编写清晰的代码?根据XP实践者的说法,答案是肯定的。软件的质量源于较短的开发周期,而开发周期反过来又允许接收频繁的反馈,有价值的反馈来自于良好的测试。XP团队采用测试驱动开发技术(TTD),该技术要求在代码完成之前编写一个自动的单元测试。根据这种方法,每一段代码都必须通过测试才能发布。因此,软件工程师只需要专注于编写能够完成所需功能的代码。这就是TDD允许程序员使用即时反馈来生成可靠软件的方式。
这是发生在迭代周期开始的会议。开发团队和客户聚在一起讨论并批准产品的特性。在计划游戏的最后,开发人员计划即将到来的迭代和发布,为每个迭代和发布分配任务。
根据XP的说法,客户应该参与进开发的全过程。客户应该不断地回答团队提出的问题,以便团队更好地设定任务的设定优先级,并在必要时解决争议。
这种做法需要两个程序员共同处理同一代码。当第一个开发人员专注于编写代码时,另一个则在整个过程中检查代码,提出改进建议并修正过程中的错误。这样的团队合作产生了高质量的软件,加快了知识共享,但使要多花费15%到60%的时间。在这方面,尝试对长期项目进行结对编程更合理。
为了在每个短迭代中使用精心设计的软件交付业务价值,XP团队还使用了重构。这种技术的目标是持续改进代码。重构就是消除冗余,消除不必要的函数,增加代码的一致性,同时解耦元素。保持代码简洁明了,以便任何XP团队成员都可以根据需要轻松理解的修改代码。
不同于开发人员始终保持系统完全集成的形式,XP团队将迭代开发提高到了另一个层次,他们每天会提交多次代码,因此这也被称为连续交付。XP实践者理解沟通的重要性,成员之间会相互讨论代码的哪些部分可以重用或共享。通过这种方式,他们能够明确地知道他们需要开发什么功能。共享代码的策略有助于消除集成问题,此外,自动化测试允许开发人员在部署之前及早发现并修复错误。
这种做法建议快速发布第一个版本,并通过进行小型增量更新来进一步开发产品。小版本迭代使开发人员可以经常收到反馈,能够及早发现错误,并监视产品在生产中的工作方式。实现这一点的方法之一是我们前面提到过的持续集成实践(CI)。
最好的软件设计就是最简单的可行的设计。如果发现任何复杂性,就应该删除它。正确的设计应该通过所有测试,没有重复的代码,并且包含尽可能少的方法和类。它还应该清楚地反映程序员的意图。
XP的实践者强调,在产品投入生产一段时间后,简化设计的机会会更高。Don Wells建议为那些你打算马上实现的特性编写代码,不要为其他未来的特性提前编写代码。最好的方法是,在搜索足够的知识来实现最简单的设计的同时,只为自己正在实现的特性创建代码,然后逐步重构以实现新的理解和设计。
团队必须有通用的编码实践集,并使用相同的格式和样式来编写代码。标准的应用允许所有团队成员轻松地阅读、共享和重构代码,跟踪某位成员在某些代码片段上所做的工作,以及能使其他程序员更快地学习这些代码。XP鼓励让按照相同规则编写的代码实现集体所有权。
这种做法表明了整个团队对系统设计的责任。每个团队成员都可以检查和更新代码。有权访问代码的开发人员不会陷入他们不知道在哪里添加新功能的情况,这种做法有助于避免代码重复。代码集体所有权的实现鼓励团队更多地合作,并随时提出新想法。
系统隐喻代表具有一组特定特性的简单设计。首先,一个设计和它的结构必须使新人们可以理解的。他们应该能够在不花费太多时间检查规范的情况下开始工作。其次,类和方法的命名应该一致。开发人员应该将对象命名为已经存在的对象,这样可以使整个系统设计易于理解。
每周工作40小时。XP项目要求开发人员快速、高效地工作,同时保持产品的质量。为了达到这些要求,他们应该自我调整并休息好。保持工作与生活的平衡可以防止职场人士过度劳累。在XP中,每周工作时间的最佳数量不得超过45小时。只有在下一周没有加班的情况下,每周才可能加班一次。
确保公司的规模、结构、专业知识以及员工的知识库能够应用XP实践非常重要,这些都是使用XP时需要考虑的因素。
极限编程是一种基于简单、沟通、反馈和勇气的价值观的软件开发方法。
在XP原则和价值观地基础上建立工作流程的公司能够在团队内部和团队之间创造出一种相互竞争而又激励人心的氛围。成员之间都投入到项目中,可以快速交付软件。这是因为他们可以将相关任务与不必要任务区分开。他们能够很快对反馈做出反应,使产品变得更好。
XP团队并不会将每一个技术挑战都看作一个问题,而是将其看作培养成员能力、技能的一种方式。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。