软件的生命周期:
需求分析——计划——设计——编码——测试——运行维护
常见的开发模型:
瀑布模型:
最基本的开发模型,绝大多数开发模型的基本框架。
特点:线性的开发流程
使用场景:需求固定,规模小不需要改动的项目
缺点:
1️⃣很多问题遗留到测试才被发现,有全面返工的风险
2️⃣需预留时间给测试人员,否则问题直接暴露在用户面前
螺旋模型:
在瀑布模型的每一个环节加上风险分析,每经过一次风险分析就作为一个原型
特点:引入原型和风险分析
优点:
能够及时发现问题,规避大部分返工的风险
缺点:
1️⃣需要招聘风险分析人才(这个不归测试人员管)
2️⃣是否有遗留风险和风险分析人才的能力挂钩
适用场景:需求复杂,规模大,风险大的项目
增量模型:
将一个大需求修改成多个小功能,每个功能独立开发上线
适用场景:需求明确,规模大的项目
迭代模型:
最初先上线一个基础版本,对基本版本进行更新维护然后再上线
适用场景:需求不明确,大型项目
敏捷模型:
Scrum模型:是一个迭代增量模型,根据客户需求,在现版本对功能进行增量式开发,然后再上线(大多数游戏都是这样子)
主要困难是客户的变更请求以及合并这些变更所需的成本和时间
特点:轻文档,轻流程,重目标,重产出
测试模型:
V模型:
优点:标识出测试过程中存在多种测试方式,清楚地描述了测试方式与开发阶段的对应关系
缺点:仅仅在编码后才开始作为测试阶段,无法介入编码之前的需求阶段,和瀑布模型一样有大量返工的风险
W模型:
优点:能够及时、全面地发现问题,能够有效地发现风险并进行提高测试速度
缺点:需求分析、编码、测试等工作是串行的,测试阶段和开发阶段呈线性关系,只有当前阶段的工作完全完成才会进入下一阶段,比较重流程,不适合敏捷模型