引言
之前的博客中涉及原理和技术方面的内容较多,本篇博客主要谈一谈经常提到的敏捷开发和 scrum。
敏捷开发
相信大部分人都学过瀑布开发模型,它是以文档为驱动的,在瀑布的整个开发过程中,要写大量的文档,把需求文档写出来后,开发人员都是根据文档进行开发的,一切以文档为依据;而敏捷开发它只写有必要的文档,或尽量少写文档,敏捷开发注重的是人与人之间,面对面的交流,所以它强调以人为核心。
定义:敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
核心原则:
- 主张简单
- 拥抱变化
- 第二个目标是可持续性
- 递增的变化
- 令投资最大化
- 有目的的建模
- 多种模型
- 高质量的工作
- 快速反馈
- 软件是主要目标
- 轻装前进
常用工具:
- Visual Studio Team Foundation Server
- Atlassian Jira
- Axosoft
- LeanKit
- Planbox
scrum
Scrum是一个偏重于过程的敏捷开发的具体方式。
Scrum开发流程中的三大角色:
- 产品负责人(Product Owner)
主要负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工作成果。
- 流程管理员(Scrum Master)
主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。
- 开发团队(Scrum Team)
主要负责软件产品在Scrum规定流程下进行开发工作,人数控制在5~10人左右,每个成员可能负责不同的技术方面,但要求每成员必须要有很强的自我管理能力,同时具有一定的表达能力;成员可以采用任何工作方式,只要能达到Sprint的目标。
Scrum的开发流程:
- 首先需要有一个 Vision ,就是所做的产品或者所做项目的愿景。这个需要所有 Team Members,包括 Product Owner 一起确定,然后大家朝着同样的目标前进。
- 维护 BacklogVision 出现后,Product Owner 会维护一个 Scrum 中我们提到的第一个文档,即 Backlog。它可以理解成从产品当中,从各个角度收集的需求, Product Owner 要做的事情就是维护 Product Backlog,并且将 Backlog 一条一条的按照优先级排好顺序。Product Owner 是唯一有权利维护这个列表的人。这个时候合理利用工具,就能免去写文档的的这一步,可以直接将需求通过任务的方式收集,每个需求就是一条任务,Product Owner 可以给任务打标签来标示优先级。
- 拆分 Sprint ,随后团队成员会针对这个 Scrum 把它拆分成一个个的 Sprint ,就是开发周期。然后将 Backlog 里面的项目添加到 Sprint 中去,成为 Sprint Backlog。每一个 Sprint 开始的时候,需要进行一个Sprint Plan。
- 运行 Sprint Plan,Sprint Plan 就是整个团队一起,通过 Backlog 从优先级最高的这个item 开始挑,挑出 ProductOwner 对Backlog 进行介绍。紧接着的是,大家将 Backlog 拆分成单个的Task,每一个成员在每一天的工作当中领 Task,完成 Task。
- 在 Scrum run 起来之后,还有一件事情是 Daily Scrum 。在 Daily Scrum 中,每个成员只需三件事情:我今天做了什么,明天要做什么,有什么是我搞不定的。Daily Scrum 一般来说会控制在15分钟之内,而且所有的成员必须要站着开会。
- 当 Scrum 结束后,每个成员会产出一个产出物。这个产出物在 Scrum 里面,可以是一个可以运行的软件,也可以是一个可展示的功能。之所以这么说是因为有一个Sprint Rview 的阶段,需要通过 Demo 在 Product Owner 以及其他的 Stake Holders 面前,现场演示你做好的东西。
- 在 Sprint Review 结束之后就是 Retrospective。整个团队的人都要坐下来聊一聊,Sprint 做得好不好,有哪些地方需要修改。
参考
https://baike.baidu.com/item/敏捷开发
https://www.zhihu.com/question/19638322/answer/107371902