网上有很多文章都在比较软件研发的瀑布模式、迭代模式和敏捷模式的区别,然而,敏捷其实不是一个技术,一个固化的模式,而是一种思想,一种宣言。敏捷软件开发关注保持简洁的代码,经常性测试以及及时地交付应用的功能模块。敏捷宣言的创建是为了替代文档驱动的繁重的软件开发流程,例如瀑布式方法。下面是我的理解。
一、概念
敏捷,把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
敏捷是应对快速变化的需求的一种软件开发能力,以用户的需求进化为核心,关注互动沟通,强调最简方案,能尽量早的将尽量小的可用的功能交付使用,并在整个项目周期中持续改善和增强。敏捷思想可在SDLC 中的各环节体现出来,如下图是一个敏捷化的IPD模式。
在迭代内每个build的敏捷工作模式如下:
二、敏捷宣言
敏捷宣言,也叫做敏捷软件开发宣言,包括四种核心价值和十二条原则。
(一)敏捷的四种核心价值:
1.个体和交互胜于流程和工具
2.工作软件胜于理解文档
3.客户协作胜于合同协商
4.响应变化 胜过 遵循计划
(二)敏捷宣言遵循的十二条原则:
敏捷选择提出的12条原则已经应用于管理大量的业务以及与IT相关项目中,包括商业智能(BI)。12原则包括:
1.通过早期和连续型的高价值工作交付满足“客户”。
2.大工作分成可以迅速完成的较小组成部门。
3.识别最好的工作是从自我组织的团队中出现的,
4.为积极员工提供他们需要的环境和支持,并相信他们可以完成工作。
5.创建可以改善可持续工作的流程。
6.维持完整工作的不变的步调。
7.欢迎改变的需求,即时是在项目后期。
8.在项目期间每天与项目团队和业务所有者开会。
9.在定期修正期,让团队反映如何能高效,然后进行相应地行为调整。
10.通过完车的工作量计量工作进度。
11.不断地追求完善。
12.利用调整获得竞争优势。
三、典型的敏捷事件
1.Kanban:相当于板报,上边按照to do /doing/done划分成三部分,每个人将写有自己名字以及任务的便利贴贴在相应的区域,以便小组之间互相了解彼此的工作进度,便于上级督查是敏捷的一种落地体现。
2.Pair work:结对编程、结对测试。结对工作体现了合作精神,针对有难度需要汇集各方才智的工作会事半功倍,避免闭门造车,提高工作效率。
3.Cross action:交叉设计、交叉评审、交叉执行,有助于发现自己发现不了的缺陷。
4.Daily scrum meeting:每日例会。主要总结昨日完成了什么,遇到什么问题,怎么解决的,今日计划是什么。
5.SOS meeting:Scrum of Scrums,大规模敏捷模型。当多个scrum team工作在同一个产品上的时候,虽然我们努力想做到全功能的特性团队,希望能在一个团队里做完所有的事情,而不需要依赖其他的团队,但这明显只是一个非常理想的状态;团队之间不可避免会有依赖,需要协同。Scrum of scrums的做法就是每个scrum团队选出1-2个代表,团队的代表聚在一起分享进度和协同解决依赖。如果组织很大,scrum团队太多,也会出现先按部门的划分在不同的部门里做SoS,然后不同部门的代表再聚在一起做“Scrum of Scrum of Scrums”。也就是分层次的SoS。