数字化 IT 从业者知识体系 | 软件开发方法 —— 瀑布篇

2022-01-21 19:49:08 浏览数 (1)

本文作者:何文强 — CODING 高级解决方案架构师 具有一线互联网、物联网独角兽、全国股份制银行、新型智慧交通等跨行业从业经历,历任Java 开发高级工程师、DevOps 技术专家、高级研发经理等职,对微服务、敏捷、DevOps、容器技术有深刻的理解和丰富的实践。

瀑布软件开发

20 世纪 70 年代 — 90 年代

软件危机诞生了软件工程,同时也产生了软件开发方法。第一个系统化的软件开发方法是瀑布软件开发。瀑布模型(Waterfall Model)是 Royce 在 1970 年提出的,他把大型软件开发分为:分析与编程,像工厂流水线一样把软件开发过程分成各种工序,并且每个工序可以根据软件产品的规模、参与人员的多少进一步细分成更细的工序。该模型非常符合软件工程学的分层设计思路,所以成为软件开发企业使用最多的开发模型。瀑布模型出道即巅峰,发展至今,仍然是主要的软件开发方法之一,深刻影响着软件开发协作方式。瀑布模型的出现让软件开发方法实现了从无序到有序的突破,极大缓解了当时的软件开发混乱程度和高失败率,成为当时软件工程的福音。

瀑布模型

伴随着软硬件的发展和商业市场的扩展,瀑布模型出现了在某些方面(例如质量、交付速度、需求变化、风险管理)上的不足,业界针对瀑布软件开发的这些不足进行改良和演进,产生了迭代模型、V 模型、增量模型、快速原型模型、螺旋模型的改良型瀑布。

瀑布模型改良之“迭代模型”

在交付速度方面,迭代模型以小批量快速交付为目标,将大的瀑布拆分成较小的可部署运行的软件,从而改善交付速度;

瀑布模型改良之“V 模型”

在交付质量方面,V 模型在软件开发生命周期(SDLC),即业务规划、需求分析、软件设计、程序编码、软件测试、运行维护的各个阶段引入测试,从而改善交付质量;

瀑布模型改良之“增量模型”

在增加并行度方面,系统经过统一的业务规划后,增量原型通过将大的软件系统拆分成多个独立的小的软件系统,各自同步进行需求分析、软件设计、程序编码和软件测试,同步进行,所有的软件系统都完成软件测试后,再进行统一的运行维护。

瀑布模型改良之“快速原型模型”

在增强客户参与体验和快速交付方面,快速原型模型的目的是在早期提供一个软件的可运行的原型,以此来反映最终系统的重要特性。快速原型模型目的是希望用户(客户)尽早的参与进来,缓解最终交付货不对版的矛盾,改善用户(客户)体验。

瀑布模型改良之“螺旋模型”

在风险管理方面,瀑布模型缺少风险管理和风险控制,螺旋模型通过引入风险的概念和能力让风险管理在瀑布模型中得到补充和扩展。螺旋模型的目的解决大型软件的风险管理。通过在项目中引入风险管理,风险风险、风险控制等手段,降低大型复杂项目的失败率。

总结

瀑布及其衍生出来的模型都具备瀑布模型的严格的顺序化、串行化的特点,并且与 PMI 项目管理知识体系相辅相成。目前国内大多数团队的软件项目管理者(特别是大型传统企业)具备的都是 PMI 的知识体系,随着软件工程的发展和商业市场的驱动,在乌卡(VUCA)时代的今天,瀑布模型的适用场景越来越受限,过时的知识体系(PMI)开始失灵,越来越多的问题开始暴露和显现,需要新的软件开发方法范式来满足现代软件工程的需要,精益和敏捷就是新时代的软件开发方法的新范式。

不忘昨日瀑布迭代,才能不负今天敏捷精益。回顾过去,才能更好的把握现在,引领未来。何文强将对瀑布及其衍生改良模型从模型产生背景、流程、特点、优势与不足、适用场景等方面进行简单阐述。

《数字化 IT 从业者知识体系》背景

数字化和可持续发展是中国企业未来发展的两大主题,掌握数字化知识,具备数字化能力,应用数字化技术是我们 IT 从业者未来核心竞争力所在。《数字化 IT 从业者知识体系》的初衷是为 IT 从业者提供的系统性的数字化知识体系,内容涵盖管理实践、工程实践、技术实践三个层次,涉及软件开发方法、应用技术架构、应用部署与管理、软件交付与协作四大方面。

在接下来的《数字化 IT 从业者知识体系》系列文章,何文强将从软件开发方法、应用技术架构、应用部署与管理、软件交付与协作四个方面,为大家进行逐一分享介绍:

1. 软件开发方法主要包括瀑布、敏捷、精益等;

2. 应用技术架构主要包括微服务架构、服务网格架构、无服务器架构、分布式多运行架构等;

3. 应用部署与管理主要包括但不限于虚拟化技术、容器技术与容器编排等;

4. 软件交付与协作主要包括但不限于 CMMI、ITIL、DevOps 等。

相信该知识体系有利于 IT 从业者构建丰富的技术体系、全面的技术视野和系统的能力建设。欢迎大家前往《数字化 IT 从业者知识体系》话题进行详细阅读。

0 人点赞