常见软件开发模型

常见软件开发模型

瀑布模型

瀑布模型是最早出现的软件开发模型,它规定了各项软件工程活动,以及它们自上而下,互相衔接的固定次序,如同瀑布流水逐级下落。是一种广泛使用,以文档为驱动的模型。
其过程是从上一项活动接受该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容给出该项活动的工作成果,并作为输出传给下一项活动。同时评审该项活动的实施,若确认,则继续下一项活动;否则返回前面,甚至更前面的活动。对于经常变化的项目而言,瀑布模型毫无价值。

流程图
常见软件开发模型

优点:

  1. 为项目提供了按阶段划分的检查点,严格规定了每一阶段必须提交的文档
  2. 当前一阶段完成后,只需要去关注后续阶段

缺点:

  1. 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量
  2. 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成功,从而增加了开发风险
  3. 通过过多的强制完成日期和里程碑来跟踪各个项目阶段
  4. 早期的错误可能要等到开发后期测试阶段才能发现,进而带来了严重的后果
  5. 瀑布模型的突出特点是不适应用户需求的变化

敏捷开发模型

敏捷开发是针对传统的瀑布开发模式的弊端而产生的一种新的开发模式,目标是提高开发效率和相应能力。敏捷开发以用户的需求进化为核心,采用迭代,循序渐进的方法进行软件开发。
由于版本节奏比较快,开发与测试几乎并行,一个版本周期会有两版在推动,也就是下图中提到的波次发布,波次发布用于尝试新加入的功能,做小范围快速的开发,验证和发布,为下个大版本的功能做实验和调研。快速发版的需求要求测试快速响应,敏捷测试模式适应项目需求

流程图
常见软件开发模型
优点:

  1. 工作任务划分清晰,工作效率较高
  2. 与开发和产品沟通紧密,团队协作性强
  3. 测试介入到整个项目的所有会议中,对整体版本信息情况把控全面

缺点:

  1. 模块提交较快,测试时较有压迫感
  2. 项目规划要合理,不然测试时会出现复测的现象,加大工作量

螺旋开发模型

  1. 软件分多个版本开发,每个版本就是一次螺旋
  2. 每个版本按照这样的顺序进行: a. 确定软件目标,选取定实施方案,弄清项目开发的限制条件(图中左上象限)b. 分析所选取方案,考虑如何识别和消除风险(图中右上象限)c. 实施软件开发(图中右下象限)d. 评价开发工作,提出修正建议,调整计划
  3. 需求不是一次获取和实现的,通过多个螺旋来完善
  4. 计划也不是一次成型的,每次螺旋都需要调整

流程图
常见软件开发模型

V模型

V模型的左边下降的是开发过程各阶段,与此相对应的是右边上升的部分,即各测试过程中的各个阶段。
常见软件开发模型
优点:明确的标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发各阶段的对应关系。

缺点:V模型仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析,系统设计的验证,需求的满足情况一致到后期的验收测试才被验证。
解决的思路是:当一个软件开发的时候,研发人员和测试人员需要同时工作,测试在软件做需求分析的同时就会有测试用例的跟踪,这样,可以尽快找出程序错误和需求偏离,从而高效的提高程序质量,最大可能的减少成本,同时满足用户的实际软件需求。

W模型

相对于V模型,W模型更科学。W模型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试和开发是同步进行的,从而有利于尽早地发现问题。

流程图
常见软件开发模型