1. Scrum 中的元素和概念
1.1 三种角色
- scrum team.
- 负责实现系统的技术负责人.
- 应该是自我管理的, 理想的规模是 5~9 人.
- 理想中的应该是全功能而非专业化分工的团队, 这样利于沟通和提高效率.
- 团队中的又分为三种人员: 设计人员, 实现人员, 管理人员.
- scrum master.
- 维护整个scrum 进度和�团队的整体状况.
- 负责排除在项目进度中遇到的各种障碍.
- 并非任务master, 没有分配任务的权利.
- 也并非团队的主管人, 因为scrum团队是自管理的.
- product owner
- 产品的负责人, 也就是需求的负责人.
- 领域专家, 需求决策人, 产品的测试者和验收者.
- 整体的流程
- product owner 定义了项目做什么, scrum master 从过程上保证了如何实现这个项目, scrum team 从技术上实现项目.
1.2 Sprint
- sprint 也就是scrum 中的一次迭代.
- 一个sprint 过程中, 会有三个关键性的会议
- plan 会议 -> review 会议 -> retrospective 会议.
1.3 五个仪式(Ceremony)
- backlog grooming(梳理)
- 按照需求,整理出产品的backlog.
- sprint planning
- 将产品backlog 分解为本次的sprint backlog.
- daily scrum
- 也就是每日站会.
- 站会的好处是保持会议简短和让与会者讲重点.
- 提出遇到的blocker(impediment), 并由scrum master 负责解决.
- sprint review
- sprint retrospective
- 获取本次sprint 的经验, 并采用feedback-loop-driven 式的学习.
1.4 看板方法(Kanban)
- 可视化
在制品(WIP)
的状态. - 与任务白板的区别是, 添加了对同一时刻允许的WIP(task/story)的数目的限制.
- 目的是减少瓶颈, 并增加吞吐量.
- scrum 在sprint 期间需要限制WIP.
2. XP Extreme Programming
推崇迭代式和增量式的开发.
- 目标是提高对客户需求变更的响应能力, 从而提高软件的质量.
推荐在短开发周期内频繁的发布.
- 主要由以下十二种实践构成
- 小规模发布.
易于根据反馈, 修改和矫正产品的方向.
- on-site 客户.
能够尽早得到产品的反馈.
- 可持续的开发节奏.
- 简单设计.
- 持续集成.
- 单元测试.
- 代码规范.
- 工程化下协作的必然要求.
- 重构.
-
在不改变软件外在的条件下,优化内在结构.
*重构减少了系统的技术debt.
- TDD.
- 系统metaphor (
命名要有意义
). - 代码集体所有.
- 全功能团队的体现.
- 结对编程.
- 小规模发布.
- 通常情况下, 会采用这些实践的子集, 并结合scrum 来进行敏捷开发.