一连集成(Continuous Integration),也就是我们常常说的 CI,是现代软件开拓技能的基本。本文阐述了当前软件开拓进程中存在的问题,讲授了一连集成、一连集成处事器的观念,最终探讨了为什么我们需要一连集成来办理这些问题。
当前软件开拓进程存在的问题
在没有应用一连集成之前,传统的开拓模式是这样的:
这个进程中大概会呈现如下问题:
1. Bug 老是在最后才发明
跟着软件技能的成长,软件局限也在扩大,软件需求越来越巨大,软件已经不能简朴地通过分别模块的方法来开拓,往往需要在项目内部相互相助,模块之间存在必然的依赖干系,那么早期就存在的 Bug 往往会在最后集成的时候才被发明。
2. 越到项目后期,问题越难办理
许多开拓者需要在集成阶段耗费大量的时间来寻找 Bug 的来源,加上软件的巨大性,问题的来源很难定位。并且我们都清楚,隔断的时间越久,Bug 修复的本钱越高,因为连开拓人员本身都忘了当初写得是什么鬼代码,从而不得不从新阅读代码、领略代码。
3. 软件交付机缘无法保障
正是因为我们无法实时修复 Bug,可能是没能在早期就修复 Bug,从而令整个修复 Bug 的周期拉长了。不管怎么样,我们不行能把明知存在 Bug 的软件交付给客户。
并且,大量没有在前期预估到的事情量发生了——开拓人员不得不耗费大把时间在查找 Bug 上;测试人员不绝的需要举办回归测试;项目司理不得不疲命于活该的代码的集成、陈设这些反复性事情——最终导致整个项目标周期拉长,交付时间点往后拖。
4. 措施常常需要改观
某些项目,措施会常常需要改观,出格是火速开拓的实践者。由于产物司理在与客户交换进程中,往往实际的软件就是最好的原型,所以软件会被看成原型作为跟客户交换的东西。虽然,客户最但愿的虽然是客户的想法可以或许顿时反应到原型上,这会导致措施会常常被修改的。那么也就意味着“分派 Bug -> 修改 Bug -> 集成代码 -> 陈设到测试处事器上 -> 集成测试”事情无形又爆增了。
5. 无效的期待变多
有大概开拓在等集成其他人的模块;测试人员在期待开拓人员修复 Bug;产物司理在期待新版本上线好给客户做演示;项目司理在期待其他人提交接码。不管怎么样,期待意味低效。
6. 用户的满意度低
这里的用户是广义的,可以指最终的客户,也可以是产物司理、公司率领、测试人员,甚至大概是开拓人员本身。你想想看,软件开发,原来三个月做完的项目被拉长到了九个月甚至一年,用户能满足吗!产物司理、公司率领常常需要拿项目作为演示的原型,功效汇报我在演示前一刻发明尚有许多 Bug 没有办理,项目启动不了无法会见,这叫人情何故堪。
一连集成、一连集成处事器的观念
那么好了,在上面阐述的这些问题中,我们发明有些事情是无法制止的,好比测试事情、修改措施、集成事情、陈设事情。但其实在整个事情流程上,是存在可以优化的空间的,好比,集成测试的事情是否可以提前做?能否有自动化的手段来取代测试、集成、陈设事情?环绕这些,软件行业的大家们提出“一连集成”标语。
1. 什么是一连集成、一连集成处事器
在软件工程中,一连集成(CI)是指将所有开拓者事情副本天天多次归并到骨干的做法。 Grady Booch 在1991年的 Booch method 中首次定名并提出了 CI 的观念,尽量在其时他并不主张天天多次集成。而 XP(Extreme programming,极限编程)回收了 CI 的观念,并倡导天天不止一次集成。