📜  极限编程-价值观和原则

📅  最后修改于: 2021-01-07 06:07:07             🧑  作者: Mango


XP开始通过引入基本价值,原则和实践来降低变更成本。通过应用XP,系统开发项目在更改方面应该更加灵活。

极限编程价值

极限编程(XP)基于五个值-

  • 通讯

  • 简单

  • 反馈

  • 勇气

  • 尊重

通讯

沟通在项目成功中起着重要作用。由于缺乏沟通,项目经常会出现问题。许多情况下可能导致通信中断。一些常见的问题是-

  • 开发人员可能不会将设计中的重大更改告知他人。

  • 开发人员可能不会向客户提出正确的问题,因此做出了关键的领域决定。

  • 经理可能没有向开发人员提出正确的问题,并且错误报告了项目进度。

  • 开发人员可能会忽略客户传达的重要信息。

极限编程强调团队成员,经理和客户之间持续不断的沟通。极端编程实践,例如单元测试,结对编程,简单设计,常见隐喻,集体所有权和客户反馈,着重于沟通的价值。

XP雇用了一位教练,他的工作是在人们不交流时通知他们,并重新介绍他们。首选面对面交流,并通过结对编程实现,并且始终有客户代表在现场。

简单

极限编程认为,“今天做一件简单的事情,明天再付一点钱来改变它,比“今天做一件更复杂的事情反而永远不会使用”要好。

  • 做需要和要求做的事,但再也不要做。

    • “做可能可行的最简单的事情” DTSTTCPW原理。

    • 以最简单的方式实施新功能。也称为KISS原则“保持简单,愚蠢!”。

    • 当教练看到极限编程开发人员做不必要的复杂工作时,他可能会说DTSTTCPW。

    • 使用当前功能部件将系统重构为最简单的代码。这将使迄今为止的投资创造的价值最大化。

  • 采取简单的小步骤即可实现目标,并在故障发生时减轻故障。

  • 创建您引以为傲的东西,并以合理的成本长期维护它。

  • 永远不要实现您现在不需要的功能,即“您不需要它”(YAGNI)原则。

沟通和简单性相互支持。

交流得越多,您就能清楚地看到需要完成的工作,并且对真正不需要做的事情更有信心。

系统越简单,就需要的开发人员越少,您进行的交流就越少。这导致更好的沟通。

反馈

交付有效的软件会认真对待每个迭代承诺。该软件会尽早交付给客户,并会提供反馈,以便可以根据需要进行必要的更改。有关系统当前状态的具体反馈是无价的。反馈的价值是一个连续运行的系统,该系统以可靠的方式传递有关其自身的信息。

在极限编程中,确保在不同时间范围内的各个级别提供反馈-

  • 客户告诉开发人员他们感兴趣的功能,以便开发人员只能专注于这些功能。

  • 单元测试告诉开发人员系统的状态。

  • 该系统和代码向管理人员,利益相关者和客户提供有关开发状态的反馈。

  • 频繁的发布使客户能够执行验收测试并提供反馈,并且开发人员可以基于该反馈进行工作。

  • 当客户编写新功能/用户故事时,开发人员会估计交付更改所需的时间,以与客户和经理一起设定期望。

因此,在极限编程中,反馈-

  • 推动变革

  • 表示进度

  • 使开发人员确信他们走上了正确的道路

勇气

极限编程通过以下方式为开发人员提供了勇气-

  • 只专注于要求

  • 交流并接受反馈

  • 说实话进度和估计

  • 重构代码

  • 随时随地适应变化

  • 丢弃代码(原型)

这是可能的,因为没有人一个人工作,教练不断地指导团队。

尊重

尊重是一个很深的价值,一个价值位于其他四个价值的表面之下。在极限编程中

  • 每个人都相互尊重,成为有价值的团队成员。

  • 每个人都贡献着热情等价值。

  • 开发人员尊重客户的专业知识,反之亦然。

  • 管理层尊重开发人员对其工作承担责任和获得授权的权利。

结合沟通,简单和具体的反馈,勇气变得极为宝贵。

  • 交流支持勇气,因为它打开了进行更多高风险,高回报实验的可能性。

  • 简单性支持勇气,因为您可以通过简单的系统承担更大的勇气。您不太可能在不知不觉中打破它。

  • 勇气支持简单性,因为一旦您看到简化系统的可能性,便可以尝试一下。

  • 具体的反馈支持勇气,因为如果您看到测试最后变成绿色,则尝试对代码进行重大修改会更安全。如果任何测试都没有变为绿色,则说明您可以丢弃该代码。

极限编程原理

这些值很重要,但是它们含糊不清,因为可能无法确定某些东西是否有价值。例如,从别人的角度来看简单的事情可能在别人的角度来看很复杂。

因此,在极限编程中,基本原理是从值中派生的,因此可以对照这些原理检查开发实践。每个原则都体现了价值,更具体,即快速反馈-您是否拥有它或没有。

极限编程的基本原理是-

  • 快速反馈

  • 假设简单

  • 增量变化

  • 拥抱变化

  • 优质的工作

快速反馈

快速反馈是获取反馈,理解反馈并将学习成果尽快返回系统。

  • 开发人员设计,实施和测试系统,并在几秒钟或几分钟内使用该反馈,而不是几天,几周或几个月。

  • 客户检查系统以检查其可做出的最大贡献,并在几天或几周而不是几个月或几年内给出反馈。

假设简单

假设简单就是将每个问题都视为可以简单解决。

传统上,您会被告知要为将来做计划,为重复使用而设计。这种方法的结果可能会变成“今天客户的要求没有得到满足,最终交付的产品可能已过时且难以更改”。

“假设简单性”意味着“出色地完成今天的工作,并相信您有能力在将来需要的地方增加复杂性。”在“极限编程”中,您被要求出色地工作(测试,重构和交流),着重于当今重要的事情。

  • 通过良好的单元测试,您可以轻松地重构代码以进行其他测试。

  • 关注YAGNI(您将不需要它)。

  • 遵循DRY(请勿重复自己)原则。例如,

    • 没有相同(或非常相似)代码的多个副本。

    • 没有多余的信息副本。

    • 在不必要的情况下,不会浪费时间和资源。

增量变化

在任何情况下,一次完成的重大更改都是行不通的。一系列最小的改变可以解决任何问题。

在极限编程中,增量更改以多种方式应用。

  • 设计一次更改一些。

  • 计划一次更改一点。

  • 团队一次变化一点。

即使采用极限编程,也必须一步步采取。

拥抱变化

最好的策略是在实际解决最紧迫的问题时保留最多选项的策略。

质量工作

每个人都喜欢做好工作。他们试图生产出他们引以为傲的质量。团队

  • 效果很好

  • 喜欢工作

  • 善于生产有价值的产品