软件开发生命周期的四种模型

1、大爆炸模型

大爆炸模型计划、进度安排和正规开发过程几乎没有,所有精力都花在开发软件和编写代码上。假如产品需求无须很好理解,而且最终发布日期可以随便更改,这样的开发过程当然很理想。此外,还要有聪慧过人的客户,因为他们直到最后才知道自己会拿到什么样的软件。

多数情况下,大爆炸模式几乎没有什么测试。假如有的话,也要挤在产品发布前进行。

这种模型尽量不要选择。

2、边写边改模型

边写边改模型通常最初只有粗略的想法,接着进行一些简单的设计,然后开始来回编写、测试和修改缺陷的漫长过程。等到觉得足够了,就发布产品。

由于开头几乎没有计划和文档编制,项目小组得以迅速展现成果。因此,边写边改模式极其适合意在快速制作而且用完就扔的小项目,例如原型范例和演示程序。即便如此,许多著名的软件仍然采用了边写边改模式。

3、瀑布模型

采用瀑布模式的项目从最初的构思到最终产品要经过一系列步骤。每一个步骤结束时,项目小组组织审查,并决定是否进入下一步。如果项目未准备好进入下一步,就停滞下来,直到准备好。

关于瀑布模式有三点需要强调:

(1)瀑布模式非常强调产品的定义。注意,开发或者代码编制阶段只是其中单独的一块。

(2)瀑布模式各步骤是分立的,没有交叉

(3)瀑布模式无法回溯。一旦进入某个步骤,就要完成该步骤的任务,然后才能向下继续下去,无法回溯。

看起来似乎限制太多,实际上也是如此。但是,对于拥有明确清晰的产品定义和训练有素的开发人员的项目而言,该模式的效果很好。该模式的目标是在编写代码之前解决所

有的未知问题并明确所有细节。缺点是,在这个变化迅速、在互联网上开发产品的时代,当软件产品还在细细考虑和定义时,当初制造它的理由可能变了。

4、螺旋模型

螺旋模式于1986年由Barry Boehm在美国计算机协会(Association for Computing Machinery,ACM)的论文"一种软件开发的螺旋模式和加强"中引入。目前使用相当广泛,并被证实是开发软件的有效手段。

螺旋模式的总体思想是一开始不必详细定义所有细节。从小开始,定义重要功能,努力实现这些功能,接受客户反馈,然后进入下一阶段。重复上述过程,直至得到最终产品。

螺旋模式每一次循环包括6个步骤:

(1)确定目标、可选方案和限制条件。

(2)明确并化解风险。

(3)评估可选方案。

(4)当前阶段开发和测试。

(5)计划下一阶段。

(6)确定进入下一阶段的方法。

螺旋模式中包含了一点瀑布模式(分析、设计、开发和测试的步骤)、一点边写边改模式(螺旋模式的每一次)和一点大爆炸模式(从外界观察)。加上该模式发现问题早、成本低的特点,可以算作相当好的开发模式。

5、总结

螺旋模型和编写边改模型有点类似,螺旋模型从刚开始就定义了重要功能,相当于有主线任务,按照主线任务去开发,但是编写边改模型开始时只有粗略的想法,然后才逐步去完善。所以可以依据开始条件的不同选择不同的模型,有主线任务的就选螺旋模型,没有主线任务的就选编写边改模型。

螺旋模型、编写边改模型和瀑布模型的区别在于,瀑布模型迭代不够快,每个环节开始时必须等待上一个环节完全结束,最后才进行整体测试,效率比较低。而螺旋模型和边写边改模型在研发的各个阶段都会进行测试,迭代速度更快。

螺旋模型、编写边改模型和大爆炸模型的区别在于,大爆炸模型没有规范的文件,不受各种约束,可能比较难成功,项目容易失败,尽量避免使用。要在开发过程中将关键的部分文档化,形成约束,尽量向编写边改模型靠拢,推动项目成功。

相关推荐
极小狐16 小时前
MR 里测试摘要空白、覆盖率不显示?JUnit 与覆盖率配置 9 步排查
数据库·ci/cd·junit·单元测试·mr·devops·代码覆盖率
toooooop819 小时前
FastAdmin(ThinkPHP 5.0)单元测试实践:从零到跑通
单元测试·fastadmin
silvamux_19 小时前
大模型 API 单元测试怎么 mock 不误伤
单元测试·log4j·php
Helix25021 小时前
Python单元测试实战:pytest框架从入门到企业级测试体系搭建指南
python·单元测试·实战·mock·pytest·测试覆盖率·fixture
2302_805771072 天前
Day24:DDT+EXCEL数据驱动
功能测试·单元测试·自动化·测试用例·需求分析·web自动化
孟陬3 天前
不用盲调性能参数 Vitest 5.0 新推出 `vitest doctor` 一键诊断测试慢卡点,自动给出最优提速配置
性能优化·单元测试·vite
网络毒刘7 天前
端到端:用 Cursor Agent 完成「小功能 + 单测 + PR 描述」并附人工验收清单
单元测试·agent·ai编程·cursor·工具实践
mont evergreen7 天前
RTMP 连接单元测试之旅
单元测试·音视频·源码解读
我就是不信8 天前
CuTest:轻量级 C 语言单元测试框架实战指南
c语言·单元测试·log4j
虫无涯12 天前
Coverity 如何结合 GJB8114-2013使用?
git·单元测试·嵌入式测试·coverity·静态扫描