什么是敏捷开发
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。
怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发,而这种开发方式的主要驱动核心是人,它采用的是迭代式开发。
为什么说是以人为核心
我们大部分人都学过瀑布开发模型,它是以文档为驱动的,为什么呢?因为在瀑布的整个开发过程中,要写大量的文档,把需求文档写出来后,开发员都是根据文档进行开发的,一切以文档为依据,开发完成后将进行测试,评审,最终部署到正式环境。瀑布流模式每一步往往依赖前一环节的结果,一旦某个环节搁置了,有可能会影响整个软件开发进度。瀑布流模型如下所示:
而敏捷开发它只写有必要的文档,或尽量少写文档,敏捷开发注重的是人与人之间,面对面的交流,所以它强调以人为核心。同时,敏捷开发以冲刺(Sprint)的形式在最短的时间里完成一次计划的迭代,包括计划,实施,测试,评审,
什么是Scrum
Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2到4周(互联网产品研发可以使用1周的Sprint)。在Scrum中,使用产品Backlog来管理产品的需求,产品Backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。Scrum团队总是先开发对客户具有较高价值的需求。在Sprint中,Scrum团队从产品Backlog中挑选最高优先级的需求进行开发。挑选的需求在Sprint计划会议上经过讨论、分析和估算得到相应的任务列表,我们称它为Sprint Backlog。在每个迭代结束时,Scrum团队将递交潜在可交付的产品增量。 Scrum起源于软件开发项目,但它适用于任何复杂的或是创新性的项目,Scrum的流程图如下所示:
什么是Sprint
正如上述那样,Scrum是一种迭代和增量式的产品开发方法。Scrum通过Sprint来实现迭代,Sprint是短距离赛跑的意思,这里面指的是一次迭代。一个Sprint是指一个1周-4周的迭代,它是一个时间盒。Sprint的长度一旦确定,保持不变。Sprint的产出是“完成”的、可用 的、潜在可发布的产品增量。Sprint 在整个开发过程中的周期一致。新的 Sprint 在上一 个 Sprint 完成之后立即开始。 Sprint 包含并由 Sprint 计划会议、每日站会、开发工作、Sprint 评审会议和 Sprint 回顾会议构成。
Scrum开发流程中的三大角色
Scrum团队中包括三个角色,他们分别是产品负责人(Product Owner)、Scrum Master和开发团队。
1.产品负责人
产品负责人是管理产品待办事项列表(Product Backlog)的唯一责任人。产品待办事项列表的管理包括:
清晰地表达产品代办事项列表条目(语法:作为..想..以便于)
对产品代办事项列表中的条目进行排序,最好地实现目标和使命
确保产品代办事项列表对所有人可见、透明、清晰,并且显示 Scrum 团队的下一步工作
确保开发团队对产品代办事项列表中的条目达到一定程度的理解
为保证产品负责人的工作取得成功,组织中的所有人员都必须尊重他的决定。产品负 责人所作的决定在产品待办事项列表的内容和排序中要清晰可见。任何人都不得要求开发 团队按照另一套需求开展工作,开发团队也不允许听从任何其他人的指令。
2.Scrum Master
Scrum Master 负责确保 Scrum 被理解并实施。为了达到这个目的,Scrum Master要确保 Scrum 团队遵循 Scrum 的理论、实践和规则。Scrum Master是Scrum团队中的服务式领导。
Scrum Master 帮助 Scrum 团队外的人员了解他们如何与 Scrum 团队交互是有益的。 Scrum Master 通过改变这些交互来最大化 Scrum 团队所创造的价值。
3.开发团队
开发团队包含了专业人员,负责在每个 Sprint 的结尾交付潜在可发布的“完成”产 品增量。只有开发团队的成员才能创造增量。
用户故事描述
用户故事是从用户的角度来描述用户渴望得到的功能。一个好的用户故事包括三个要素:
角色:谁要使用这个功能。
活动:需要完成什么样的功能。
商业价值:为什么需要这个功能,这个功能带来什么样的价值。
用户故事通常按照如下的格式来表达:
英文:As a , I want to , so that .
中文:作为一个<角色>, 我想要<活动>, 以便于<商业价值>
举例:作为一个“网站管理员”,我想要“统计每天有多少人访问了我的网站”,以便于“我的赞助商了解我的网站会给他们带来什么收益。”
需要注意的是用户故事不能够使用技术语言来描述,要使用用户可以理解的业务语言来描述。
如何进行Scrum开发
我们首先需要确定一个Product Backlog(按优先顺序排列的一个产品需求列表),这个是由Product Owner 负责的
Scrum Team根据Product Backlog列表,做工作量的预估和安排;有了Product Backlog列表,我们需要通过 Sprint Planning Meeting(Sprint计划会议) 来从中挑选出若干个User Story作为本次迭代完成的目标,这个目标的时间周期是1~4个星期,然后把这个Story进行细化成Task,形成一个Sprint Backlog
Sprint Backlog是由Scrum Team去完成的,每个成员根据Sprint Backlog再细化成更小的Task(对应于Worktile上称为检查项),当团队成员完成任务时,务必需要在Worktile和敏捷白板上同步更新状态
在Scrum Team完成计划会议上选出的Sprint Backlog过程中,需要进行 Daily Scrum Meeting(每日站立会议),每次会议控制在15分钟左右,每个人都必须发言,并且要向所有成员当面汇报你昨天完成了什么,并且向所有成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出,每个人回答完成后,要走到黑板前更新自己的 Sprint burn down(Sprint燃尽图);
做到每日集成,也就是每天都要有一个可以成功编译、并且可以演示的版本;
当User Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,这时,我们要进行 Sprint Review Meeting(演示会议),也称为评审会议,产品负责人和客户都要参加(最好本公司老板也参加),每一个Scrum Team的成员都要向他们演示自己完成的软件产品(这个会议非常重要,一定不能取消);
最后就是 Sprint Retrospective Meeting(回顾会议),也称为总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中
了解了Scrum开发流程之后,我们使用Worktile 和敏捷白板这两个工具来进行敏捷管理,使用Worktile 可以进行任务的分配、归档,如下所示:
使用敏捷白板来跟踪任务,如下所示:
值得注意的是,当完成任务时,务必要及时更新状态,以便于团队了解整体进度。