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

1、大爆炸模型

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

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

这种模型尽量不要选择。

2、边写边改模型

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

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

3、瀑布模型

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

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

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

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

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

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

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

4、螺旋模型

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

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

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

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

(2)明确并化解风险。

(3)评估可选方案。

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

(5)计划下一阶段。

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

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

5、总结

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

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

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

相关推荐
程序员二黑1 天前
Web UI自动化王者:Selenium WebDriver 核心原理与API详解
单元测试·测试·ab测试
健康平安的活着2 天前
java之 junit4单元测试Mockito的使用
java·开发语言·单元测试
程序员二黑2 天前
Pytest为何成为Python测试王者?Fixtures/Parametrize/Plugins三神器揭秘
单元测试·测试·ab测试
zru_96023 天前
Spring Boot 单元测试:@SpyBean 使用教程
spring boot·单元测试·log4j
程序员二黑3 天前
单元测试三大神器:unittest vs JUnit vs Jest 终极对决
单元测试·测试·ab测试
用户84913717547164 天前
JustAuth实战系列(第11期):测试驱动开发 - 质量保证与重构实践
java·设计模式·单元测试
川石课堂软件测试5 天前
JMeter并发测试与多进程测试
功能测试·jmeter·docker·容器·kubernetes·单元测试·prometheus
程序员二黑6 天前
(Python) vs (Java) vs(javaScript) 谁才是自动化测试的最佳拍档
单元测试·测试·ab测试
孟陬7 天前
HTML 处理以及性能对比 - Bun 单元测试系列
react.js·单元测试·bun
@Aurora.8 天前
【接口自动化测试】---YAML、JSON Schema
selenium·单元测试·测试用例·压力测试·postman·ab测试·测试覆盖率