# 敏捷开发模式
本文档介绍敏捷开发模式,适用于需求变化频繁、需要快速迭代的项目。
# 📋 什么是敏捷开发
敏捷开发(Agile Development) 是一种以人为核心、迭代、循序渐进的开发方法。它强调快速响应变化,持续交付有价值的软件。
# 敏捷宣言
个体和互动 > 流程和工具
工作的软件 > 详尽的文档
客户合作 > 合同谈判
响应变化 > 遵循计划
1
2
3
4
2
3
4
# 🔄 Scrum 框架
# 核心流程
graph LR
A[产品 Backlog] --> B[Sprint 计划]
B --> C[Sprint 开发]
C --> D[Sprint 评审]
D --> E[Sprint 回顾]
E --> A
1
2
3
4
5
6
2
3
4
5
6
# 迭代周期
| 活动 | 频率 | 时长 | 参与者 |
|---|---|---|---|
| Sprint 计划会 | 每迭代 1 次 | 2-4 小时 | PO+ 团队 |
| 每日站会 | 每天 | 15 分钟 | 团队 |
| Sprint 评审会 | 每迭代 1 次 | 1-2 小时 | PO+ 团队 + 利益相关者 |
| Sprint 回顾会 | 每迭代 1 次 | 1 小时 | 团队 |
# 👥 核心角色
# 产品负责人 (Product Owner)
职责:
- 管理产品 Backlog
- 确定需求优先级
- 定义验收标准
- 验收完成的功能
关键活动:
- 需求收集和整理
- 用户故事编写
- 优先级排序
- 迭代验收
# Scrum Master
职责:
- 确保 Scrum 流程执行
- 清除团队障碍
- 保护团队免受干扰
- 促进团队持续改进
关键活动:
- 组织敏捷会议
- 识别和清除障碍
- 团队辅导和培训
- 促进持续改进
# 开发团队
特点:
- 跨职能(开发 + 测试 + 设计)
- 自组织
- 5-9 人为宜
- 共同对迭代目标负责
职责:
- 估算工作量
- 承诺迭代目标
- 完成开发任务
- 保证交付质量
# 📝 核心工件
# 产品 Backlog
定义: 按优先级排序的需求列表
内容:
- 功能需求
- 缺陷修复
- 技术债务
- 改进建议
示例:
## 用户故事格式
作为 [角色]
我想要 [功能]
以便于 [价值]
验收标准:
1. [标准 1]
2. [标准 2]
3. [标准 3]
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# Sprint Backlog
定义: 当前迭代承诺完成的任务列表
内容:
- 从产品 Backlog 选择的用户故事
- 任务分解
- 工作量估算
- 负责人分配
# 增量 (Increment)
定义: 迭代结束时完成的可交付功能
要求:
- 完成定义(DoD)达标
- 可演示
- 可发布(如果需要)
# 📊 敏捷实践
# 用户故事
# 用户故事示例
## 故事标题:批量导入用户
### 故事描述
作为 系统管理员
我想要 批量导入用户功能
以便于 快速初始化用户数据
### 验收标准
- [ ] 支持 Excel 格式导入
- [ ] 单次最多导入 1000 条
- [ ] 导入失败显示详细错误信息
- [ ] 导入完成发送通知
### 估算点数:5
### 优先级:P1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 任务看板
┌──────────┬──────────┬──────────┬──────────┬──────────┐
│ 待办 │ 进行中 │ 代码审查 │ 测试中 │ 已完成 │
│ (WIP=5) │ (WIP=3) │ (WIP=2) │ (WIP=3) │ │
├──────────┼──────────┼──────────┼──────────┼──────────┤
│ 用户登录 │ 用户注册 │ 订单管理 │ 支付功能 │ 商品列表 │
│ 商品搜索 │ 购物车 │ │ 短信通知 │ 用户信息 │
│ 订单列表 │ │ │ │ │
└──────────┴──────────┴──────────┴──────────┴──────────┘
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 燃尽图
剩余工作量
│
20│●
│ ●
15│ ●
│ ●
10│ ●
│ ●
5│ ●
│ ●
0└───────────────────────→ 时间
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# ✅ 优点
| 优点 | 说明 |
|---|---|
| 快速交付 | 每 2-4 周交付可用功能 |
| 灵活应变 | 欢迎需求变更 |
| 客户参与 | 客户全程参与,及时反馈 |
| 风险可控 | 早期暴露风险,快速调整 |
| 质量内建 | 持续测试,持续集成 |
# ❌ 缺点
| 缺点 | 说明 |
|---|---|
| 文档较少 | 可能影响知识传承 |
| 对团队要求高 | 需要自律和协作 |
| 客户参与度要求高 | 需要客户代表全程参与 |
| 范围不易控制 | 可能导致范围蔓延 |
| 不适合所有项目 | 安全关键系统需谨慎 |
# 📊 适用场景
| 场景 | 原因 |
|---|---|
| 需求不明确 | 如互联网产品、创新项目 |
| 快速市场响应 | 需要快速试错和迭代 |
| 客户可全程参与 | 客户代表可参与每个迭代评审 |
| 中小型项目 | 团队规模 5-15 人 |
| SaaS/互联网产品 | 需要持续迭代优化 |
# 📝 最佳实践
# 1. 迭代计划
- ✅ 选择合理数量的用户故事
- ✅ 任务分解到 1-2 天
- ✅ 团队共同承诺
# 2. 每日站会
- ✅ 固定时间和地点
- ✅ 控制在 15 分钟内
- ✅ 聚焦三件事:昨天、今天、障碍
# 3. 持续集成
- ✅ 每日多次提交代码
- ✅ 自动化构建和测试
- ✅ 快速反馈
# 4. 代码审查
- ✅ 小批量审查
- ✅ 及时反馈
- ✅ 知识共享
# 5. 回顾改进
- ✅ 坦诚开放
- ✅ 聚焦改进
- ✅ 落实行动项
# 🔗 相关文档
最后更新: 2022-12-15