敏捷是一种指导思想、框架和开发方法,以人为核心,迭代,循序渐进的开发法
个体交互 > 过程与工具
可以工作的软件 > 详尽的文档
客户写作 > 合同谈判
相应变化 > 遵循计划
瀑布:以文档为驱动
敏捷:必要文档,面对面交流
迭代:把复杂且开发周期很长的任务,分解成很多小周期可完成的任务,一个周期就是一次迭代。每次迭代都有一个可交付的软件产品。
Scrum:偏重过程
XP:偏重实践
Scrum:橄榄球运动术语,“争球”,暗示开发团队像打橄榄球一样迅速,富有激情,人人你争我抢的完成它。
角色
Product Owner 产品负责人
负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付内容,有权利接受或拒绝开发团队的工作成果。
Scrum Master 流程管理员
负责整个Scrum流程在项目中的顺利实施和进行,清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。
Scrum Team 开发团队
5-10人,很强的自我管理能力,一定的表达能力。
Scrum 流程图
Product Backlog ->
sprint backlog ->
sprint ( daily meetings - sprint burn down) -> release (sprint review meeting)
Sprint: 短距离赛跑,此处指一次迭代过程,一次迭代的周期是4周,要把一次迭代的开发内容以最快的速度完成。
- 确定product backlog,按优先顺序排列的一个产品需求列表——PO
- Scrum Team 根据Product Backlog做工作量的预估和安排
*计划纸牌:DEV对某一任务认为的完成时间,一起摊牌,讨论差异原因 - 通过Sprint Planning Meeting,从Product Backlog中挑选出一个User Story 进行细化,形成一个Sprint Backlog
- Backlog由Scrum Team完成,每个成员根据Sprint Backlog再细化成更小的工作量在2天能能完成的任务
- Scrum Team需要进行Daily Scrum Meeting 每日站会,时间在15mins左右,每个人都必须发言,向所有成员当面汇报昨天完成了什么,承诺今天要完成什么,同时提出遇到什么不能解决的问题,发言后,走到任务看板前更新自己的Sprint burn down (Sprint 燃尽图)
*任务看板:移动任务卡片到相应区域
not checked out
checked out
Done
Burndown
Uplanned Items
Next - 做到每日集成,每天都要有一个可以成功编译,可以演示的版本。
*自动化集成,TFS,每次有成员进行签入操作的时候,在服务器上自动获取最新版本,然后再服务器中编译,若通过则马上执行单元测试代码,全部通过,发布该版本,这时一次正式的签入才进行保存。任何失败,都会邮件通知项目管理人员。 - 当一个Story——Sprint Backlog被完成,表示一次Sprint 完成,进行Sprint Review Meeting,评审会议,PO和客户都要参加,每个Scrum Team 成员要向他们演示自己完成的产品
- 最后就是Sprint Retrospective Meeting 回顾会议,总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中