在做软件开发时,程序员们肯定接触过各式各样的软件开发模型,例如:写了再改模型、瀑布模型、增量模型等。其实,很多开发模型是在瀑布模型基础上衍生出来的。
然而,了解“V”模式开发模型的程序员应该不多。“V”模式开发模型是汽车电子行业在瀑布模型的基础上做了改进,以符合汽车ECU开发需要的模型。
今天来讲讲瀑布模型与“V”模式开发模型的异同。
瀑布模型
瀑布模型产生的历史背景是20世界70年代出现的软件危机,该模型将软件开发分为若干阶段,由于其类似于瀑布从上到下的过程,故称其为“瀑布模型”。
从图中可以看出,瀑布模型分为:项目提出及规划—需求分析—软件设计—软件编码实现—软件测试—上线运行等6个阶段。这几个阶段相互递进,也就是说本阶段完成后才能进行下一阶段的工作。
因此,瀑布模型在实践过程中具有以下局限性:
试图将各步骤分离,然而这样严格的分离无法实现
回溯修改几乎不可能,但软件开发需要时间回溯
最终产品直到最后一个步骤才出现,而软件客户无法在早期直到软件原型,可能会引发软件功能与客户需求不匹配的情况
在移动互联网时代,快速抢占市场才是王道,如果企业采用瀑布模型开发软件,根本就无法存活。瀑布模型的上述局限性导致其已经无法完全适用于互联网行业的发展。
在我看来,瀑布模型不太适用于开发针对用户也就是针对“人”的软件。
然而,作为软件工程最先出现的开发模型,瀑布模型还有适用范围吗?当然有,比如汽车电子行业所采用的“V”模式开发流程便是遵循瀑布模型进行软件开发。
"V"模式开发模型
“V”模式开发模型是在瀑布模型的基础上发展而来的,那么什么是“V”模式呢?
该开发模型由于形似字母“V”而得名,但如果只看“V”的左边便能够看出是瀑布模型。因此,“V”模式开发模型是将瀑布模型进一步细化。
解释一下为何用"V"模型来表示,该模型开发流程仍是:系统需求—软件需求—软件设计—软件编码—单元测试—软件测试—系统测试—实车测试等几个步骤。
但该模型的特点是:
系统需求确定后,系统测试工程师便开始写系统测试用例;
软件需求确定后,软件测试工程师便开始写软件测试用例;
软件设计确定后,软件工程师便开始写单元测试;
最底层才是软件编码的实现。
也即是说,在软件编码完成前,系统测试用例、软件测试用例以及单元测试用例已经完成。
“V”模式开发流程将代码实现放在最后一步,即使客户需求发生变更也能很快做出修改,相比瀑布模型减少了回溯的成本和时间,提高了开发效率、降低了开发成本。
软件测试的W模型
W模型是由两个V模型组成,一个是开发阶段,一个测试阶段
可以看出,在W模型中开发和测试是并行的关系
局限性:虽然开发与测试并行了,但是在整个开发阶段,仍然是串行的,上一阶段未完全完成无法进入下一阶段,不支持敏捷模式的开发。
总结
不论是何种开发模型,其最终目的均是为了保证软件的开发质量。至于项目中使用何种模型,这需要结合软件特点以及所在行业共同确定。