一文读懂软件开发从瀑布模型到DevOps的三大阶段

发布时间 2023-03-22 21:17:27作者: 智能新论

DevOps这个热门概念,近年来频频出现在各大技术社区。目前,DevOps处于高速增长的阶段,尤其在大企业中,DevOps受到了广泛的欢迎。随着信息技术的迅速发展,人们对于软件的需求变大以及需求产生了变化,软件开发流程也在不断迭代更替。软件开发流程经历了瀑布式开发到DevOps的三个阶段,本文就来揭开关于软件开发流程的“前世今生”。

一、软件开发第一阶段:瀑布式开发模式

早期所采用的软件交付模型,称之为“瀑布(Waterfall)模型”,在国外称为Waterfall,是较古老的软件开发方式。瀑布模型,简而言之,就是等一个阶段所有工作完成之后,再进入下一个阶段。这种模型适合条件比较理想化的项目,即用户需求非常明确,开发时间非常充足。此时,开发人员按部就班,轮流执行自己的职责即可。

瀑布式开发模式流行于20世纪70年代,是由软件开发大师温斯顿·罗伊斯(Winston Royce)最初提出的软件开发模型,该开发方法是较典型的预见性开发方法,其遵循的是线性执行顺序,严格遵循从需求分析、架构设计、编码、测试和维护等可预见性的步骤按顺序进行。

瀑布式开发模式,虽然拥有众多优势,但其同样存在产品验证滞后、整体项目时间不可控以及所有工作严重依赖于阶段的交付物和文档等缺陷。因此,每个阶段的任何一点改动都会牵一发而动全身,这大大降低了产品能够快速适应市场变化的适应力。对于不断变化的市场需求而言,瀑布式开发过于理想化,需要产品研发团队在项目开始之前就预见所有的问题,这往往是不可能实现的,因此瀑布式开发模式注定被迭代。

二、软件开发第二阶段:Agile(敏捷)开发模式

随着时间推移,用户对系统的需求不断增加且项目的时间周期越来越短,笨重迟缓的瀑布式开发已经显得相当不合时宜。于是,软件开发团队引入了一个新的概念,那就是大名鼎鼎的——“敏捷开发(Agile Development)”。

2000年左右,敏捷开发开始逐步走到了历史舞台的中央,敏捷意味着效率的提升,相比于传统的瀑布开发,敏捷开发实行的是一种更加快捷的做法。当收集到足够一次迭代开发的需求时,即可以向下一个步骤前进,尽量缩短在每个阶段的停留时间。敏捷的目标在于快速地将需求上线,使其呈现到用户面前,并获取到来自用户的反馈进行功能的迭代。

“敏捷开发”可以简单理解为,把原有模式下的大需求拆分成多个小需求,并采用小步快跑的方式进行开发与迭代,原来的一个大环改为一个个小的闭环。在新迭代开始前,产品经理会将需求拆分成具体的开发任务,研发人员进行任务认领,每日站会进行任务的review,直到开发完成,发布新的可用版本。

 敏捷开发可以更快地发现问题,从而进行更快地响应。可以说,敏捷开发方法是传统瀑布式开发方法的合理补充,是应对未来市场或需求多变场景的良好实践。尽管敏捷开发(Agile Development)提升了开发的效率,但它的范围仅限于开发和测试阶段,并没有覆盖到部署端,因此运维部门并没有在这其中得到受益,往往会出现运维与开发互相指责的情况。为化解这个矛盾,就出现了Devops这种开发模式。

三、软件开发第三阶段:DevOps开发模式

DevOps的出现正是为了打破开发和运维人员之间的壁垒,让两者得以更加通畅的沟通,以清除部门间存在的对立。从功能上来说,DevOps完善了敏捷开发存在的短板,实现沟通顺畅的整个链路。在 DevOps 的模式下,开发和运维都不再是“孤立”的团队,两者都需要在软件的整个生命周期内相互协作及紧密配合。

 

  在DevOps的流程下,运维人员需要在项目开发期间就介入到开发过程中,了解开发人员使用的系统架构和技术路线,从而制定适当的运维方案。开发人员也会在运维的初期参与到系统部署中,并提供系统部署的优化建议。DevOps的实施,促进了开发和运维人员的沟通,增进了彼此的理解,避免了更多沟通上的冲突。所以,可以将DevOps理解为一种思想、一个方法论。

目前,DevOps处于高速增长的阶段。尤其是在大企业中,DevOps受到了广泛的欢迎。在业务快速开发的生态构建过程中,IT行业“内卷”时代悄然来临。在激烈的市场竞争中,企业需要一步一步构建以DevOps为核心的数字化生态体系,才能不断适应快速发展变更的时代。