敏捷开发(Agile Development)
敏捷开发基本概念
什么是敏捷开发?
- 敏捷开发是一种以
人为核心
、迭代式
(循序渐进)的开发方法,也就是一种软件开发流程
;
- 敏捷开发是一种以
为什么说是以人为核心?
- 相对于瀑布开发模型,它是以文档为驱动
- 敏捷开发只写有必要的文档,或尽量少写文档,敏捷开发注重的是
人与人之间,面对面的交流
,所以它强调以人为核心;
什么是迭代?
- 指把
一个开发周期很长且复杂
的开发任务,分解成多个开发周期短且可完成
的任务,其中每一个短周期就是称为一次迭代(一般为两周); - 同时保证每一次迭代结束后有一个
可交付
的软件演示产品;
- 指把
关于Scrum和XP
- 前面说的敏捷开发是一种
指导思想或开发方式
,它没有明确告诉我们到底怎么做,而Scrum和XP就是敏捷开发的具体方式
; - Scrum:一种
迭代式增量
软件开发过程 - XP(极限编程):任何一个软件项目都可以从四个方面入手进行改善:加强
交流
、从简单
做起、寻求反馈
、勇于实事求是
- Scrum偏重于
过程
,XP则偏重于实践
, 实际开发中两者结合使用,这里主要讲Scrum;
Scrum
Scrum开发流程中的三大角色
- 产品负责人(Product Owner)
- 主要负责
确定产品的功能
,指定软件的发布日期和交付的内容
,同时有权力接受或拒绝开发团队的工作成果
- 主要负责
- 流程管理员(Scrum Master)
- 主要负责整个Scrum流程在项目中的顺利实施和进行,
清除
挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发
;
- 主要负责整个Scrum流程在项目中的顺利实施和进行,
- 开发团队(Scrum Team)
- 负责开发工作,
保质
(可交付性)的完成每个迭代(Sprint)的任务;
- 负责开发工作,
如何进行Scrum开发?
- 首先由产品负责人确定一个Product Backlog(按
优先顺序
排列的一个产品需求列表) - Scrum Team根据Product Backlog列表,做工作量的预估和安排
- 下面就是开
迭代会议
,从中挑选出一个Story(可交付的任务)作为本次迭代完成的目标,这个Story一般控制在两周
(我上家公司是这么执行) - 开发团队成员从Story中认领自己的任务(
认领任务过程中有一个纸牌游戏
) 将自己这个迭代的任务再细分,拆分成多个小任务,一般精确到
每人天
,将自己分类的这些小任务贴到任务墙上,任务墙分三栏:未完成的任务、正在进行的任务、已完成的任务
在迭代过程成要进行
每日站立会议
,一般控制在15分钟以内
,会上主要汇报你昨天完成了什么,并且向所有成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出,会议结束后到任务墙上更新自己的任务进度板- 做到
每日集成
,至少保证单元测试
通过;(单元测试很重要,主要保证一些可预知的bug不会发生) - 每个迭代任务完后要进行一次
交付演示会议
,也称为评审会议,会上产品负责人和客户都要参加 - 演示会议后团队内部还要针对这次迭代开一次
总结会议
,说说这次迭代中遇到的问题,以及在下面的迭代中避免类似的问题再次发生