上篇分析了我作过的一个真实的项目的研发过程当中的种种问题,那么这篇就来说解一下咱们如何针对这些问题作敏捷改造。git
小瀑布模式的缺点在于它的沟通成本、等待成本、返工成本依然很高,所以咱们能够考虑从这3个角度出发去作改进。后端
我画了一个图来展现小瀑布模式和敏捷开发的详细对比。工具
图中紫色管道是小瀑布模式,蓝色管道是敏捷开发,两个管道是相同的团队管道容量,换句话说,两种模式的工做载量是相等的。单元测试
横向是时间线,从左到右,按需求提出开始直到此需求上线,即为此需求的生命周期。测试
首先,先说一下为何这3个成本很高。spa
沟通成本设计
产品经理一般须要1-2小时来与业务方进行需求沟通,沟通完了以后,产品经理会有一个初步方案,而后会与团队内部的技术人员,测试人员等,一块儿评审这个需求,若是这中间有任何疑问,产品经理就须要不停的反复在业务方与技术人员中间进行沟通。所以沟通成本是比较高的。生命周期
产品经理一般也须要1-2小时来与技术人员一块儿作技术评审,时间比较长,不少问题细节须要来回反复确认,沟通成本很高。资源
总结一下就是,因为需求粒度比较大,每一个环节都比较重,有大量的细节须要讨论和确认,所以带来了较高的沟通成本。开发
等待成本
开发只有等产品文档彻底设计好了,才能开始开发,因为需求粒度过大,此设计过程相对过长,所以开发的等待时间也长,没有充分利用开发资源。
同理,测试也是,只有等开发提测了才能作测试。但测试在此以前,会先写测试用例,所以测试资源浪费还算较小。
但另一个问题是,测试一次性要写很是多的用例测试,一次性测那么多用例,测试的完整性彻底依赖于测试人员的耐心。
返工成本
测试若是发现问题,会让开发返工,因为需求粒度比较大,常常出现测试发现多个问题的状况,那么就会来回的屡次返工与测试。
甚至有时候返工会直接返到业务方去从新确认需求的细节。
那么敏捷是如何改进这个过程的呢?
首先敏捷是提倡小步快跑,拥抱变化。目前因为需求粒度比较大,没法小步快跑,同时开发到中间的时候的,需求忽然变化,应对起来也比较慢。
那咱们就能够根据下图来进行改造。
上图中最大的变化就是把原来的需求A拆解成了3个story。
敏捷提倡小步快跑,那么管理需求也同样,只有需求足够小,才更利于咱们快速理解和分析。而user story(用户故事)则是敏捷里面的一个能够工做的最小单位。
用户故事在软件开发过程当中被做为描述需求的一种表达形式;为了规范用户故事的表达,便于沟通;包含角色、活动、价值三个要素。
瀑布式的需求管理和敏捷需求管理的区别在于:
拆解成小的用户故事以后有以下一些好处:
从下图就能够看出,每一个环节相比以前都是提早的。敏捷的目的是可以让团队拥抱变化,快速响应。
原来的分支管理比较混乱,可能形成的问题已经在前面分析过了。
这里就说说分支管理的最佳实践是什么。
每次git的commit message的推荐格式:Card ID: message
每完成一张故事卡,理论上均可以持续部署到生产环境。而不该该等待全部需求都完成了,或者等先后端都完成了,再作上线部署。
图里的敏捷开发必定比上面的小瀑布快吗?不必定,这里还有几个因素是须要考虑的。
总结起来,敏捷是经过小步快跑的方式,提高了响应变化的速度,以达到提高总体交付速度与质量的目的。
本文只是经过一个真实的客户案例,来分析如何基于当前现状作敏捷改造,本文并无写彻底部敏捷改造的内容,由于敏捷包含的内容实在太多了,若是你们感兴趣能够给我留言,后面我会继续分享这个案例中涉及到的其余敏捷改造。