W模型和瀑布模型与“V”模式开发模型有何异同?

简介: W模型和瀑布模型与“V”模式开发模型有何异同?

在做软件开发时,程序员们肯定接触过各式各样的软件开发模型,例如:写了再改模型、瀑布模型、增量模型等。其实,很多开发模型是在瀑布模型基础上衍生出来的。


然而,了解“V”模式开发模型的程序员应该不多。“V”模式开发模型是汽车电子行业在瀑布模型的基础上做了改进,以符合汽车ECU开发需要的模型。

今天来讲讲瀑布模型与“V”模式开发模型的异同。

瀑布模型

瀑布模型产生的历史背景是20世界70年代出现的软件危机,该模型将软件开发分为若干阶段,由于其类似于瀑布从上到下的过程,故称其为“瀑布模型”。

 


从图中可以看出,瀑布模型分为:项目提出及规划—需求分析—软件设计—软件编码实现—软件测试—上线运行等6个阶段。这几个阶段相互递进,也就是说本阶段完成后才能进行下一阶段的工作。


因此,瀑布模型在实践过程中具有以下局限性:


试图将各步骤分离,然而这样严格的分离无法实现


回溯修改几乎不可能,但软件开发需要时间回溯


最终产品直到最后一个步骤才出现,而软件客户无法在早期直到软件原型,可能会引发软件功能与客户需求不匹配的情况


在移动互联网时代,快速抢占市场才是王道,如果企业采用瀑布模型开发软件,根本就无法存活。瀑布模型的上述局限性导致其已经无法完全适用于互联网行业的发展。


在我看来,瀑布模型不太适用于开发针对用户也就是针对“人”的软件。


然而,作为软件工程最先出现的开发模型,瀑布模型还有适用范围吗?当然有,比如汽车电子行业所采用的“V”模式开发流程便是遵循瀑布模型进行软件开发。

"V"模式开发模型

“V”模式开发模型是在瀑布模型的基础上发展而来的,那么什么是“V”模式呢?

 

该开发模型由于形似字母“V”而得名,但如果只看“V”的左边便能够看出是瀑布模型。因此,“V”模式开发模型是将瀑布模型进一步细化。


解释一下为何用"V"模型来表示,该模型开发流程仍是:系统需求—软件需求—软件设计—软件编码—单元测试—软件测试—系统测试—实车测试等几个步骤。


但该模型的特点是:


系统需求确定后,系统测试工程师便开始写系统测试用例;

软件需求确定后,软件测试工程师便开始写软件测试用例;

软件设计确定后,软件工程师便开始写单元测试;

最底层才是软件编码的实现。

也即是说,在软件编码完成前,系统测试用例、软件测试用例以及单元测试用例已经完成。


“V”模式开发流程将代码实现放在最后一步,即使客户需求发生变更也能很快做出修改,相比瀑布模型减少了回溯的成本和时间,提高了开发效率、降低了开发成本。

软件测试的W模型

W模型是由两个V模型组成,一个是开发阶段,一个测试阶段

可以看出,在W模型中开发和测试是并行的关系

局限性:虽然开发与测试并行了,但是在整个开发阶段,仍然是串行的,上一阶段未完全完成无法进入下一阶段,不支持敏捷模式的开发。

总结

不论是何种开发模型,其最终目的均是为了保证软件的开发质量。至于项目中使用何种模型,这需要结合软件特点以及所在行业共同确定。

相关文章
|
设计模式 算法 Java
设计模式第十五讲:重构 - 改善既有代码的设计(下)
设计模式第十五讲:重构 - 改善既有代码的设计
341 0
|
6月前
|
监控 安全 项目管理
『软件工程3』你应该知道的三种原型实现模型:抛弃式、演化式、增量式
该文章详细解释了三种原型实现模型——抛弃式、演化式、增量式模型的特点、流程、优缺点及适用场景。
『软件工程3』你应该知道的三种原型实现模型:抛弃式、演化式、增量式
|
10月前
|
SQL 机器学习/深度学习 存储
数据库设计革命:逻辑模型的演变与面向对象的突破
数据库设计革命:逻辑模型的演变与面向对象的突破
106 1
|
10月前
逻辑模型—第一性原理
逻辑模型—第一性原理
116 0
|
设计模式 Java 测试技术
设计模式第十五讲:重构 - 改善既有代码的设计(上)
设计模式第十五讲:重构 - 改善既有代码的设计
359 0
|
PyTorch 算法框架/工具
pytorch诞生逻辑和演化过程
pytorch诞生逻辑和演化过程
99 0
|
程序员 测试技术
《重构2》第十章-简化条件逻辑
《重构2》第十章-简化条件逻辑
354 0
|
SQL 缓存 JSON
任务分解与函数拆分以及面向未来编程的思想分享
任务分解与函数拆分以及面向未来编程的思想分享
280 0
任务分解与函数拆分以及面向未来编程的思想分享
|
SQL 存储 分布式计算
从方法到思维:什么是应用逻辑架构的正确姿势?(上)
本文分享阿里资深技术专家六铢的架构方法论,这套方法论中包含了详细的架构推导逻辑,希望能够帮助大家在工作中从各个粒度、各个层次来做好架构工作。较长,同学们可先收藏再看。
2207 2
从方法到思维:什么是应用逻辑架构的正确姿势?(上)
|
架构师 人工智能 中间件
如何自底向上推导应用逻辑架构?+如何自顶向下构建架构?(节选)
如何自底向上推导应用逻辑架构? 一、什么是架构? 大概是在11年前左右,在土豆网做广告平台,同时也做视频CDN的相关事情,当时做一个服务,基础架构是lighttpd + squid + tomcat,将静态资源分离到httpd,get请求使用squid缓存,智能路由使用HTTP post请求,并让tomcat提供服务,当时就觉得这就是架构。
11457 0