一文读懂软件开发流程的演变过程(软件开发经历的三个演变过程)

自20世纪70年代开始,随着信息技术的迅速发展,以及人们对于软件的需求变大,软件生产走向规模化,“工程化”思维开始进入软件开发流程。相继出现Waterfall(瀑布式)、Agile(敏捷)以及DevOps开发流程模式。

Waterfall(瀑布式)开发的优势是什么?为什么很多传统企业还在选择Waterfall(瀑布式)开发?而互联网公司为什么会采用敏捷(Agile)的开发模式?DevOps开发的理念又是怎样的?本文将为各位读者梳理关于软件开发流程的“前世今生”。

一、Waterfall开发模式

Waterfall开发模式,在国内一般称为瀑布式开发模式,是一种属于预测型生命周期的传统开发方法。它开始流行于20世纪70年代,是由软件开发大师W.Royce最初提出的软件开发模型。该开发方法属于研发项目管理的预测型生命周期的情况,是最典型的预见性的开发方法,严格遵循从需求分析、架构设计、编码、测试和维护等可预见性的步骤按顺序进行。

(一)瀑布式开发的基本准则

(1)通常采用分阶段的开发实践,即软件开发过程中分为固定的几个阶段,具体的阶段名称可以参考上图所示的内容;

(2)采用阶段式评审方式,即每个阶段结束时由上到下进行相应地评审,评审通过后方可进入下一阶段。典型的评审有需求评审和架构设计评审等。

(二)瀑布式开发的优势

(1)在理论上只要在产品评审阶段前将所有产品细节确认并完善,且后期很少或不再更改需求,更加方便研发团队为超大型及复杂项目制定相应地开发计划;

(2)在理论上瀑布式开发的每个阶段都会由对应的负责人员提供相对完善翔实的文档及其它书面材料,这会让项目在开发过程中保持很强的安全感,项目的每个阶段都经过了所有人的深思熟虑才会进行相应的推进。

(三)瀑布式开发的劣势

(1)产品验证滞后 。是瀑布式开发过程中最让使用软件的需求部门头疼的部分,需求部门的人员必须等到项目进入收尾阶段的时候才可以对软件产品的功能性需求与非功能性需求进行验证。验证滞后导致在整个开发生命周期积压了大量的风险和不确定性,这就意味着在研发生命周期中所有阶段都不能出现任何纰漏,否则将导致整体项目变得不可控。

(2)需求变更困难。在瀑布式开发过程中,任何对之前阶段的重大决策的修改与调整都将打乱原本的开发流程,大量已完成的工作需要重新评估,此间过程的推进将严重耗费整个团队的精力。

(3)难以适应变化的市场。瀑布式开发过程中的所有工作都严重依赖于阶段的交付物和文档,比如架构设计阶段就严重依赖需求分析阶段针对需求的评审结果。每个阶段的任何一点改动都会牵一发而动全身,这大大降低了产品能够快速适应市场变化的适应力。

终上所述,采用瀑布式开发是有前提条件的,那就是瀑布式开发适合在软件开发项目中需求比较确定并且技术解决方向比较确定的情况,瀑布式开发过于理想化,需要产品研发团队在开始的时候就预见到所有的问题,全面地把握需求,这往往是不可能实现的。所以Agile开发模式就应运而生。

二、Agile(敏捷)开发模式

从21世纪初, Agile(敏捷)开发方法逐步走到了历史舞台的中央。尤其是在2001年很多不同流派的创始人或业界大咖共同组建敏捷联盟后,敏捷联盟所一致推崇的敏捷宣言、敏捷原则和敏捷价值观更加深入人心,大有成为业界目前主流开发理论和方法实践之势。目前Agile(敏捷)开发的门派很多,但是他们都共同遵循敏捷宣言、敏捷原则和敏捷价值观。

敏捷遵循的原则共十二条及关键要点如下:

1、我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。

关键要点:交付价值

2、欣然面对需求变化,即使在开发后期也一样。善于掌控变化,帮助客户获得竞争优势。

关键要点:拥抱变化

3、经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。

关键要点:持续交付

4、业务人员和开发人员必须相互合作,项目中的每一天都不例外。

关键要点:合作

5、激发个体的斗志,以他们为核心搭建项目。提供他们所需的环境和支持,相信他们能够达成目标。

关键要点:人本思想

6、不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。

关键要点:面对面沟通

7、可工作的软件是进度的首要度量标准。

关键要点:可工作软件

8、敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。

关键要点:节奏

9、对技术精益求精,对设计不断完善,将提高敏捷能力。

关键要点:精益

10、以简洁为本,极力减少不必要工作量。

关键要点:简洁

11、最好的架构、需求和设计出自于自组织的团队。

关键要点:自组织

12、团队定期地反思如何能提高成效,并依此调整团队的行为。

关键要点:自省

总之,敏捷开发方法是传统瀑布式开发方法的合理补充,是应对未来市场或需求多变场景的良好实践。敏捷开发方法仍然可以借鉴瀑布式开发关于需求管理和架构设计的一些实践,比如界面原型的设计与评审,针对关键的问题的架构决策等内容。

三、DevOps开发模式

当下开发运维一体化的实践DevOps进一步继承Agile开发模式的良好实践,确保每次迭代的可工作软件能够快速而成功的发布到生产环境,进而快速获得客户关于软件新特性的价值反馈。

《阿里巴巴 DevOps 实践》认为,从价值的角度,开发加运维才构成相对完整的 IT 价值链。而 DevOps 的诞生,正是为了解决 IT 价值链的最突出问题 —— 开发和运维之间的问题。根据微软云计算 Azure,DevOps 的独特之处在于开发、IT 运营、质量工程和安全团队协同工作,在发布新产品、版本或更新所涉及的所有任务中创造效率。其中,DevOps 的主要表现形式包括持续集成、持续交付和连续部署。

在现实操作中,DevOps 也不乏实现工具。比如中国原创的SoFlu 软件机器人,其出发点是想让 DevOps 真正的落地,而实现 “落地”,首先重点要解决的就是开发的问题, 包括开发的品质、安全和效率等,再逐步解决测试和运维问题。SoFlu 软件机器人通过可视化拖拽方式以及参数配置实现等同于编写复杂代码的业务逻辑,在设计业务逻辑时就完成了微服务应用开发,做到“业务即图,图即代码”,极大降低软件开发门槛,实现软件开发,十倍效能的提升,从而全面提升企业科技生产力。除了SoFlu 软件机器人,帮助 DevOps 实现组织落地的工具不在少数,其中还包括开源的 CI/CD 服务器 Jenkins、容器平台 Docker 等等。

相关新闻

联系我们
联系我们
在线咨询
分享本页
返回顶部