软件工程

敏捷开发

敏捷框架比较

https://www.toutiao.com/a6491064662996566542/

1. Scrum

Scrum是一个管理框架。

核心概念

  • User Story

  • Task。它可以与用户故事相关或不相关。

  • Backlog。用户故事和未来Sprint任务的列表。

  • Sprint backlog。从Backlog的当前Sprint中挑选用户故事和任务列表(又名”工作项目”)。

  • Product increment。在Sprint结束时交付的一种潜在可交付功能块。

  • Extensions。像Burndown Chart、Velocity等的报告,用于跟踪团队的进展。

角色

  • 开发团队。包括开发人员、QA工程师、UI/UX设计师、业务分析师以及其他需要的人员。Scrum团队通常有3到9名成员。当9个人还不够时,团队就一分为二了。

  • Scrum Master。主持每日Scrum会议、策划/更新/回顾会议,并帮助团队成员解决沟通问题。Scrum Master不是团队成员,所以他们可以同时与多个团队合作。

  • 产品所有者。利益相关者的代表,将Scrum团队的愿景(作为用户故事的基础)传达给Scrum团队,在每个Sprint结束时优先考虑用户故事,并接受或拒绝他们。

2. Kanban

Kanban框架是由丰田工程师Taiichi Ohno发明的。

原则

  1. 专注—减少多任务;

  2. 减少浪费;

  3. 客户的需求放在第一位(即他们的业务需求-ROI);

Kanban和Scrum的关键区别

  • Kanban是连续的,而Scrum是迭代的。
  • Kanban更适合在Sprint期间有大量计划外工作(支持问题;紧急修复;紧急功能请求)的团队。
  • 通过这种方式,团队可以随时重新排序任务,不再需要等待Sprint结束。

3. Lean

Lean大量借用了Kanban

Lean尽量避免浪费,最大限度地为客户带来价值。

与Kanban不同的是,Lean有一些关于工程实践的规定(例如TDD)。与此同时,Lean对交付时间的要求不那么严格,团队可能随时准备部署。

4. XP - 极限编程

XP不只是简单的平等配对编程,XP还提供了一个流程管理算法

实践

  1. 计划游戏;

  2. 测试驱动开发(“先写单元测试”);

  3. 配对编程;

  4. 团队(客户/程序的实际用户可用于反馈);

  5. 持续集成;

  6. 重构设计改进;

  7. 小版本;

  8. 编码标准;

  9. 集体代码所有权;

  10. 设计简单;

  11. 系统隐喻(以程序员,客户和其他人理解的方式命名事物);

  12. 可持续性。