网络知识 娱乐 敏捷开发介绍

敏捷开发介绍

敏捷开发介绍

敏捷是一个术语,用于描述软件开发,强调增量交付团队协作持续规划持续学习

敏捷(框架)是一种全面的方法,DevOps生命周期的阶段:规划、开发、交付和运营。他们以明确的指南和原则指定完成任务的方法。

什么是敏捷开发?

敏捷开发是一个术语,用于描述迭代软件开发。迭代软件开发以执行小增量的方式缩短DevOps的生命周期,这种方式通常被称为冲刺(sprints)。冲刺通常持续1-4周。敏捷开发通常和传统/瀑布模式开发不同,后者提前列出计划并严格按照其进行。

再每一次冲刺中交付产品级别的代码,需要敏捷开发小组考虑加速的步伐,所有编码、测试、质量确认都需要在每一轮冲刺中完成。除非敏捷开发小组被正确设置,否则结果会达不到预期。

下面我们将介绍敏捷开发组需要达到的三点关键因素:

  • 积压工作的尽量优化
  • 尽早、更多地进行集成
  • 最大限度减少技术债务

积压工作的尽量优化

敏捷开发小组集中于一系列需求,通常被成为用户情景(user stories)。积压工作具有优先级,最重要的用户情景在最上方。产品拥有者负责根据客户需求对积压工作进行添加、变更和优先度的调整。

如果积压工作定义不善,会拖累整个小组的生产性。只有在定义清晰的需求基础上,才能让小组在每一轮冲刺中持续产出高质量的软件。

产品所有者的工作是确保每个冲刺阶段,软件工程师都有明确定义的用户情景。处于最上端(最优先)的用户情景时刻准备好供小组执行。这被称为挤压工作优化。维持积压工作的可执行性需要努力和规范。

在优化积压工作时,下面有几个核心的概念需要牢记:

  1. 优化用户情景是一个长线活动。一个优雅的用户接口、漂亮的屏幕设计以及客户满意的解决方案都需要时间和能量去创造。积极的产品拥有者会将用户情景提前2-3个冲刺阶段优化。他们负责设计迭代以及客户评审。他们确保了每一个用户情景都是敏捷开发小组最乐意为客户提供的。
  2. 用户情景只有在小组承认的情况下才能被优化。小组需要查看用户情景并一致同意已经可以对其进行工作。如果一个小组在一轮冲刺的第一天还没有看到用户情景,则这是个非常危险的标志。
  3. 优先度不高的用户情景可以保持模糊。不要浪费时间优化低优先度的项目。对高优先级项目保持专注。

尽早、更多地进行集成

持续集成和持续交付(CI/CD)使团队可以获得更快的敏捷开发。尽可能快,自动化构建、测试以及部署管道。这些应该成为一个小组在开始新项目前的首要目标。

借助自动化,小组将避免缓慢、轻易出错以及时间密集的人工部署过程。因为每一轮冲刺都会有一次发发布,所以手动进行发布是不合适的。

CI/CD也会影响你的软件架构。它保证了你交付可构建、可发布的软件。当实现一个难以部署的功能时,小组会通过构建、发布失败来迅速意识到。CI/CD强调一个小组在部署错误发生时就去着手解决,保证产品总是能够被交付。

下面是几个对敏捷开发有关键作用的核心CI/CD活动:

  1. **单元测试。**单元测试是对人为错误的第一道屏障。单元测试应该被认为是编码的一部分。执行单元测试必须被包含在每一次构建过程中,单元测试的失败意味着构建的失败。
  2. 自动化构建。构建系统需要从版本控制系统中自动拉取代码和测试并且执行。
  3. 分支及构建政策。配置分支以及构建政策,以进行自动化构建,小组能够在特定的分支中检查代码。
  4. 部署到一个环境。设置一个发布管道,该管道自动将构建的项目部署到模拟生产的环境。

最大限度减少技术债务

技术债务包含任何小组部署产品、保障产品运行所必须执行的操作。例如bug、性能问题、操作问题、兼容性等等。

保持对技术债务的关注需要勇气。延迟修复bug面临很大压力。只关心功能而忽略债务通常更轻松,但是债务迟早需要面对。技术债务持续时间越长,解决的代价就越高。

始终保持敏捷

保持敏捷意味着从经验中学习并且持续进步。敏捷开发提供了传统项目更多的学习周期,每一次冲刺都需要小组面对新事物。

  • 小组向客户交付价值并得到反馈,根据反馈修改积压工作。
  • 他们发现自动化构建缺少了关键测试,并把这些测试包含在下一轮冲刺中。
  • 他们发现一些功能实现欠佳,并有计划改进。
  • 一些人接触到了新做法,小组决定在一些冲刺中尝试它们。

在敏捷开发时,会有更多的学习机会。 它们是该模式特有的有价值的部分,因为它们可带来增长和进步。