本文将学习软件开发过程模型和测试模型
软件开发过程模型
软件开发过程模型有瀑布模型、原型模型、螺旋模型、增量模型、喷泉模型、形式化方法、敏捷模型等很多种,本文主要介绍瀑布模型、原型模型、螺旋模型三种最常见的模型。
瀑布模型
将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,强调系统开发应有完整的周期,将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护六个基本活动,并规定他们自上而下、相互衔接的固定次序,如同瀑布,逐级下落。
其过程是从上一项活动接收该项活动的工作对象作为输入,用这个输入实施这项活动应完成的内容给出这项活动的工作成果,作为输出传给下一项。同时评审这项活动的实施,如果确认,则继续下一项活动,否则返回前面。
优点:
- 为项目提供了按阶段划分的检查点
- 当前一阶段完成后,只需要关注后续阶段
- 提供了一个模版
缺点:
- 不适应用户需求的变化(很重要)
- 各个阶段的划分完全固定,阶段之间产生大量文档
- 开发模型为线型,用户只有等到整个过程结束才能看到开发成果,增加开发风险(线性过程太理想化)
原型模型
通过向用户提供原型获取用户的反馈,使开发出的软件能真正反映用户的需求。逐步求精的完善原型,显然比瀑布模型能对用户的反馈最初更快的响应。
优点:
- 减少设计中的错误和开发过程中的风险
- 缩短开发周期,加快工程进度,更快
- 降低成本
缺点:
- 如果告诉用户重新开发该产品,这样就会很麻烦,不利于对工程的继续开展。
螺旋模型
周期性的进行系统开发,这个模型的每一个周期都包括制定计划、风险分析、实施工程和客户评估四个阶段,并且由这四个阶段进行迭代。软件开发每迭代一次,软件开发就会前进一个层次。
(图片来自网络)
优点:
- 设计更加灵活,可以在项目的各个阶段进行变更
- 以小的分段构建大型系统,成本计算更加简单
- 客户始终参与到每个阶段的开发,保证项目不偏离正确方向
- 随着项目的开发,客户始终掌握项目的最新信息
缺点:
- 需要相当丰富的风险评估和专门的知识,强调风险分析
- 过多的迭代次数会增加开发成本,延迟提交时间。
测试模型
下面是几种典型的软件测试模型,V模型、W模型和X模型,这些模型从不同程度反映了软件开发与测试的关系。
V模型
在软件测试中V模型是最广为人知的模型。如图所示。
V模型中的过程从左到右,描述了基本的开发过程和测试行为。V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。
- 单元测试的目的是根据详细设计说明书验证单元模块是否符合要求,发现代码编写过程中存在的问题。
- 集成测试的目的是根据概要设计说明书验证各个模块是否已经集成到一起,各个模块之间的接口是否存在问题。
- 系统测试的目的是根据需求说明书验证软件是否符合用户的需求,系统是否能够正常工作。
V模型的局限性是把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现缺陷。
W模型
w模型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题。
缺点:不能支持迭代、自发性以及变更调整。
如图所示:
(图片来自网络)
X模型
软件测试的X模型也是对V模型的改进,如图所示。
(图片来自网络)
软件测试的X模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终成为可执行的程序,然后再对这些可执行程序进行测试。已通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。但是对测试员的熟练程度要求比较高。