目录
前言
哈喽,今天一起来对常见的开发模型和测试模型进行一个简要归纳,在此之前呢,先一起回顾一个知识点哈,哪个知识点呢?就是咱们软件的生命周期:
软件生命周期是指从软件产品的设想开始到软件不再使用而结束的时间。 如果把软件看成是有生命的事物,那么软件的生命周期可以分成 6 个阶段,即需求分析、计划、设计、编码、测试、运行维护。
浅浅回忆起来后,可以进入正题了,那对于模型,我们需要重点掌握其特点、优点、缺点、适用场景;接下来,一起对常见的开发模型和测试模型进行梳理。
一、开发模型
1. 瀑布模型(Waterfall Model)
特点
- 是所有其他模型的基础框架
- 每一个阶段都只执行一次,是线性结构的
优点
- 强调开发的阶段性
- 强调早期计划及需求调查
- 强调产品测试
缺点
(1)测试后置
- 由于每一个阶段只执行一次,因此前面各阶段遗留的风险都推迟到测试阶段才发现,可能会导致项目大面积返工,失去了及早修复的机会
- 必须在代码完成后有足够的时间预留给测试活动,否则将导致测试不充分,从而把缺陷直接遗留给用户
(2)周期太长
- 可以运行的产品很迟才能被看到和使用,那就极有可能导致需求功能过时了,因为在这一功能上线前用户可能就已经找到了可替代产品
适用场景
- 需求固定的小项目
2. 螺旋模型(Spiral Model)
特点
- 增加了风险分析和原型
优点
- 强调严格的全过程风险管理
- 强调各开发阶段的质量
- 提供机会检讨项目是否有价值继续下去
缺点
引入非常严格的风险识别、风险分析和风险控制
- 这对风险管理的技能水平提出了很高的要求
- 这需要人员、资金和时间的投入,可能导致项目成本过高
适用场景
- 规模庞大、复杂度高、风险大的项目
3. 增量、迭代模型
3.1 增量模型(Incremental Model)
增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次的分析、设计、编码和测试这些增量组件。
特点
- 将待开发的软件系统模块化和组件化
优点
- 将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展
- 以组件为单位进行开发降低了软件开发的风险,因为这样一个开发周期内的错误不会影响到整个软件系统
- 开发顺序灵活。开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件,并且当组件的优先级发生变化时,可及时对实现顺序进行调整
缺点
- 要求待开发的软件系统可以被模块化。要是待开发的软件系统很难被模块化,就会给增量开发带来很多麻烦
- 在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力较好,但是很容易退化为边做边改模型,从而使得软件过程的控制失去整体性
适用场景
- 需求经常发生改变的软件开发过程
3.2 迭代模型(Iterative Model)
迭代模型是类似于小型的瀑布式项目,假定一个产品有 A,B,C,D,E,F 共 6 个功能,迭代模型就是会先完成这 6 个功能的基础版本,然后再一期一期的去迭代优化,直至这 6 个功能都非常成熟。
特点
- 一次迭代过程包括了所有软件开发流程
- 每一次迭代均产生一个可发布的产品
- 该产品为最终产品的一个子集
优点
- 降低了产品无法按照既定进度进入市场的风险
- 加快了整个开发工作的进度
- 迭代过程这种模式适应需求变化会更容易
缺点
- 风险管理成本较高
- 在风险分析、进度管理方面,对项目组成员的要求也非常高
适用场景
- 事先不能完整定义产品的所有需求,计划多期开发的项目
3.3 二者区别
- 增量是逐块建造的概念,例如画一幅人物画,我们可以先画人的头部,再画身体,再画手脚……
- 迭代是反复求精的概念,同样是画人物画,我们可以采用先画整体轮廓,再勾勒出基本雏形,再细化、着色。
4. 敏捷模型
在咱们敏捷模型里有一个《敏捷宣言》:我们通过身体力行和帮助他人来揭示更好的软件开发方式。经由这项工怍,我们形成了如下价值观:
- 个体与交互重于过程和工具
- 可用的软件重于完备的文档
- 客户协作重于合同谈判
- 响应变化重于遵循计划
特点
- 轻流程、轻文档、重目标、重产出
敏捷开发最流行的方式—— scrum
a. 三个角色
- product owner(产品经理)
- scrum master(项目经理)
- team(研发团队)
b. 五个重要会议
- 发布计划会议:确定本次迭代需要实现的需求
- 迭代计划会议:项目团队对每一个需求进行任务分解,每个任务都有明确的负责人,并完成工时的初估计
- 每日例会:每天 scrum master 召集站立会议,团队成员回答:昨天做了什么?今天计划做什么?有什么问题?
- 演示会议:迭代结束之后,召开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代取得的成果
- 回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,已达到持续改进的效果。
二、测试模型
1. V 模型
特点
- 测试过程中存在的不同类型的测试
- 测试阶段的参考标准以前面对应阶段为准
缺点
测试后置:
- 前面各阶段遗留的风险都推迟到测试阶段才发现,可能会导致项目大面积返工,失去了及早修复的机会
- 必须在代码完成后有足够的时间预留给测试活动,否则将导致测试不充分,从而把缺陷直接遗留给用户
2. W 模型
特点
- 测试的对象不仅是程序,需求、设计等同样要测试
- 测试与开发是同步进行的
缺点
- W 模型重流程,不能够迎接变化
- W 模型不适用于敏捷模型
概念性的多康几遍就可以了噻.