什么是敏捷开发
敏捷开发(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 可以进行任务的分配、归档,如下所示:
使用敏捷白板来跟踪任务,如下所示:
值得注意的是,当完成任务时,务必要及时更新状态,以便于团队了解整体进度。