Scrum敏捷开发模式

前言

我的个人博客

最近报名参加了微信小程序应用开发赛,也是作为走向职场前的一次锻炼,为了模拟企业开发的流程,我们团队决定使用敏捷开发模式来管理项目。这篇文章,是对在近些天来网上学习到的Scrum敏捷开发模式的总结。

软件开发过程

Scrum敏捷开发模式_第1张图片

一个完整的软件开发过程一般包括图中五个阶段,分为需求、设计、编码、测试、维护五个阶段。对于不同的软件系统,可以采用不同的开发模型,并由此产生了不同的。常见的软件开发模型,可以参考以下链接。

敏捷开发模型(Agile-Development-Model)

敏捷开发的概念

敏捷开发是一种以用户的需求进化为核心,采用迭代、循序渐进的方法开发的方法。
Scrum敏捷开发模式_第2张图片

敏捷开发的方法有很多,包括Scrum、极限编程、功能驱动开发以及统一过程(RUP)等,IT开发中,最常用的是Scrum(迭代式增量软件开发过程)。

Scrum(迭代式增量软件开发过程)

Scrum特点

  • 将一个大的项目分为多个互相联系或者独立运行的子项目,围绕最小化可行产品的特性进行产品规划,并且分别完成。每个子项目都经历规划(Plan)、开发(Build)、测试(Test)、评审(Revidw)四个阶段,这四个过程合称为一个迭代(Sprint),通常一个迭代需要一到三个星期。
    Scrum敏捷开发模式_第3张图片

  • 增量交付,迭代式开发,在一次次迭代汇中,完善产品的功能,并能够持续发布,强调适应性,并非瀑布模型中的预见性

  • 在此过程中,主体软件要处于随时可发布,可交付给用户的状态。

Scrum四元素

  • 迭代
  • 团队
  • 会议
  • 工件

一、迭代

将一个大的项目分为多个互相联系或者独立运行的子项目,围绕最小化可行产品的特性进行产品规划,并且分别完成。每个子项目都经历规划(Plan)、开发(Build)、测试(Test)、评审(Revidw)四个阶段,这四个过程合称为一个迭代(Sprint),通常一个迭代需要一到三个星期。

二、团队

1.PO——产品或业务负责人(Product Ower):

类似于产品 经理,确定产品的方向和愿景,发布和需求的优先级。

2.SM——敏捷教练(Scrum Master):

熟悉敏捷开发模式和流程,团队负责人

3.交付团队

设计、产品、开发、测试、运维人员

三、会议

1、迭代计划会(Sprint Planning Meeeting)

在迭代之初,由产品负责人(PO)讲解需求,并由开发团队进行估算的会议。

2、每日立会(Daily Scrum Meeeting)

团队每天进行沟通的内部短会,用于同步信息,尽早发现风险。

团队负责人发布任务。开发团队,可以通过类似以下的任务展板领取任务。
Scrum敏捷开发模式_第4张图片

从昨天的立会到现场,我完成什么?从现在到明天的立会,我计划完成什么。有什么阻碍我的进展。

3、迭代评审会(Sprint Review Meeeting)

向客户或者其他利益干系会展示,获取客户反馈

4、迭代回顾会(Sprint Retrospective Meeeting)

每个迭代后总结开发中经验和教训,进行持续改进。一般会进行定量和定性分析。

(1)定量分析:是否完成目标?

迭代速率、迭代燃起燃尽图、迭代计划故事和实际完成故事、计划发布日期与实际发布日期、客户满意度、团队满意度、生产环境Bug数、生成Bug解决时间、用户故事。

(2)定性分析

哪些做得好的保持,哪些坏的要丢弃

四、工件

  • 用户故事(User Stories):一种表达产品需求的语言格式。产品经理通过用户故事了解用户需求细节,为团队合理制定任务的优先级。

  • 产品需求列表(Prodcut Backlog):汇集用户需求的列表,产品经理会从众多用户故事中筛选出优先项,并把他们列入产品待办列表中。

  • 迭代需求列表(Sprint Backlog):单个迭代要做的需求列表,一次迭代中往往选取当前优先级最高并经过讨论的用户故事,剩下的继续评估,交给下次迭代。

  • 燃尽图(Burundown Chart):用以展示整个Sprint待办列表的进度。当燃尽图曲线接近于0时,也就意味着这次迭代即将完工。
    Scrum敏捷开发模式_第5张图片

Scrum具体开发流程

Scrum敏捷开发模式_第6张图片

文字描述

  • 第一阶段:首先产品经理(产品团队)把需要上线的产品特性做成产品需求列表(Prodcut Backlog),由产品经理(产品团队)基于产品整体战略、目标、业务价值、实现难度等因素甄选出优先级最高的项目,交个整个团队进行讨论。
  • 第二阶段:召开迭代规划会议,研发团队、产品经理和开发团队负责人(Scrum Master)讨论用户故事的优先项,且决定本次次迭代要研发的需求项。并由开发团队负责人开展可行性评估和工时评估,确定迭代的需求排期,形成迭代需求列表(Sprint Backlog)。
  • 第三阶段:会议结束后,团队中的每个成员需要对每个用户故事有深刻的理解。团队负责人根据需求拆分相应的子任务,分配相应的开发成员执行,并评估相应的工时。
  • 第四阶段:研发团队要在一到三周的时间里开发完成迭代需求列表中的需求,在迭代中,每日站会用于团队来交流他们做完了什么,正在做什么,以及遇到的问题,及早发现风险。
  • 第五阶段:每次迭代的产出都是一个可以发布的产品版本,在迭代结束前,会进行迭代评审会(Sprint Review Meeeting),由研发团队向产品经理做案例演示并接受评价。产研团队根据整个迭代需求的完成情况和缺陷处理情况,最终决定整个产品是否上线,也可以在发布前增加新功能。确认上线后,由运维进行上线环境部署,正式上线。
  • 第六阶段:在迭代结束时,产品和开发会举行迭代回顾会(Sprint Retrospective Meeeting),团队一起思考工作中可以改进的地方,制定改进措施。每次迭代都需要进行这样的会议,来不断改进产品的质量。
  • 最后,产品团队在产品功能上线后,持续收集用户的反馈,分析数据形成新的用户故事,进入下一次迭代。

总览图

Scrum敏捷开发模式_第7张图片

PS:平时写代码如何通过测试并入库?需求如何完成?

首先,测试团队会根据产品需求文档,进行进行测试用例撰写工作和开发工作同步进行。 开发人员开发完成自己的需求任务之后,使用测试团队写好的测试用例进行自测(跑各种静态检查、复杂度、测试用例、功能测试等),自测通过转移给测试,自测不通过,自行修复,直到通过再转给测试。

测试团队再次进行测试, 发现Bug则建立缺陷,将缺陷关联到相应的需求任务上,并指定个相应的开发者进行修复。

测试完成后,提交代码。触发CI(持续集成)流程。跑完流程后,进入代码评审,通过后,才能入库。

参考链接

teambition敏捷研发讲解。

你可能感兴趣的:(软件开发,敏捷开发)