极限编程 - 活动和工件

在本章中,我们将了解极限编程活动和工件。

XP - 活动

在极限编程中,四个基本活动是 −

  • 编码

  • 测试

  • 聆听

  • 设计

编码

在结对编程中,编码被视为开发的核心。您编写代码是因为如果您不编写代码,到头来您什么也没做。

测试

在结对编程中,需要进行测试以确保编码已完成。如果不进行测试,您就不知道何时完成编码。

倾听

在结对编程中,您需要倾听才能知道要编码什么或要测试什么。如果您不倾听,您就不知道要编写什么代码或测试什么。

设计

在结对编程中,您的设计可以无限期地进行编码、测试和倾听,因为良好的设计允许扩展系统,而仅在一个地方进行更改。

这些活动在 −

  • 发布计划

  • 迭代计划

  • 实施

发布计划

在发布计划中,客户和开发人员共同制定下一个版本的计划,就发布的用户故事和下一个发布日期达成一致。

发布计划有三个阶段 −

  • 探索阶段

  • 承诺阶段

  • 指导阶段

发布计划 - 探索阶段

在探索阶段 −

  • 客户提供系统的高价值需求的简短列表。

  • 开发人员收集需求并估计每个需求的工作影响。

需求写在用户故事卡上。为了编写故事,客户将在与开发人员的会议中提出问题。开发人员将尝试定义此问题并获得需求。基于此讨论,客户将编写一个故事,指出他们希望系统的一部分做什么。重要的是,开发人员不能对这个故事产生影响。

在这个阶段,积极倾听非常重要,因为

  • 开发人员需要了解"客户要求什么"和"哪些要求具有高价值"。

  • 客户需要与开发人员一起了解哪些场景有助于编写故事,从而实现这些价值。

虽然客户在用户故事卡上写下了需求,但您需要倾听

  • 获得清晰度

  • 避免歧义

  • 如果理解上可能存在差距,请表达自己

这只有通过口头交流才有可能。

发布计划 - 承诺阶段

在承诺阶段,客户和开发人员将承诺将包含的功能和下次发布的日期。

此阶段涉及确定成本、收益和进度影响。在此阶段,

  • 客户按业务价值对用户故事进行排序。

  • 开发人员按风险对故事进行排序。

  • 开发人员确定实施故事所需的工作量和持续时间(估计值)。

  • 将选择将在下一个版本中完成的用户故事。

  • 根据用户故事和估计值,确定发布日期。

在此阶段,积极倾听非常重要,因为−

  • 开发人员需要了解他们需要为当前版本编写哪些功能以及交付此功能所需的工作量和持续时间(估计值)。

  • 客户和开发人员需要了解在下一个版本日期做出承诺的可行性发布。

发布规划 - 指导阶段

在指导阶段,客户和开发人员"指导"−

  • 对单个用户故事和不同用户故事的相对优先级进行更改。

  • 调整计划。

  • 如果估计被证明是错误的。

  • 适应变化。

在这个阶段,积极倾听非常重要,

  • 了解−

    • 要添加的新要求。

    • 需要对现有要求进行哪些更改。

    • 如果任何现有要求被添加,对现有系统的影响删除。

  • 考虑到调整计划所需的估计

    • 迄今为止完成的工作。

    • 要添加的新需求。

    • 必须更改或删除的现有需求。

迭代规划

在迭代规划中,开发人员参与规划迭代的活动和任务。在此过程中,客户不参与。

迭代规划有三个阶段 −

  • 探索阶段。

  • 承诺阶段。

  • 指导阶段。

迭代规划 - 探索阶段

在探索阶段,

  • 需求将转化为不同的任务。

  • 任务记录在任务卡上。

  • 开发人员估计执行每个任务所需的时间。

  • 如果开发人员无法估计任务,因为它太小或太大,他们需要合并或拆分任务。

迭代规划 - 承诺阶段

在承诺阶段,

  • 任务分配给开发人员。

  • 开发人员接受他或她负责的任务。

  • 开发人员估计完成任务所需的时间,因为开发人员现在负责该任务,他或她应该给出任务的最终估计。

  • 在团队中的所有开发人员都分配了任务后,进行负载平衡。

  • 将任务的估计时间与负载因子进行比较。

  • 负载因子表示假设每周 40 小时,每个开发人员在一次迭代中理想的动手开发时间。

  • 然后在开发人员之间平衡任务。如果开发人员承诺过多,其他开发人员必须接管其部分任务,反之亦然。

迭代规划 - 指导阶段

在指导阶段,

  • 开发人员获得其已承诺的任务之一的任务卡。

  • 开发人员将按照结对编程实践与另一位开发人员一起实施此任务。

实施

任务实施已完成。实施包括设计、编写单元测试、编码、单元测试、重构、持续集成到代码库、基于任务卡和用户故事卡的集成测试和验收测试。

极限编程工件

极限编程不是反对文档,而是鼓励做真正需要的最少工作。需要分布式共享、历史需求、总结等的文档。

极限编程的必备工件有 −

  • 用户故事卡

  • 验收测试

  • 估算

  • 发布计划

  • 迭代计划

  • 任务卡

  • 设计

  • 单元测试用例

  • 客户和开发人员的沟通记录

用户故事卡

用户故事卡具有以下功能 −

  • 用户故事卡 −

    • 包含从客户角度对系统行为的简短描述。

    • 必须由客户编写,而不是由开发人员编写。

    • 使用客户术语,不带技术术语。

    • 应仅提供足够的细节来估计故事需要多长时间才能实现。

  • 系统中的每个主要功能一个。

  • 用于创建发布计划的时间估计。

  • 推动验收测试的创建。

验收测试

验收测试必须是一个或多个测试,以验证故事是否已正确实施。

估计 - 发布规划

发布规划中将使用的故事的工作量和持续时间估计 −

  • 在探索阶段到达目标发布日期。

  • 在指导阶段计划调整。

发布计划

发布计划包含 −

  • 为发布选择的用户故事。

  • 工作量和持续时间估计。

  • 承诺的目标发布日期。

任务卡

任务卡 −

  • 包含实现用户所需的任务故事。

  • 每个用户故事一张任务卡。

  • 形成任务估算和任务分配的基础。

估算 - 迭代规划

评估基于用户故事的任务的工作量和持续时间估算,这些估算将用于迭代规划中的任务分配和承诺阶段的负载平衡。

迭代计划

迭代计划包含 −

  • 为迭代选择的用户故事

  • 任务分配

  • 任务估算

设计

设计包含一个简单的设计,足以实现用户故事。

单元测试案例

这包含驱动编码和单元测试的单元测试案例。

客户和开发人员沟通记录

客户和开发人员讨论故事以详细说明。尽可能口头进行,但必要时进行记录。