目录
开发模型
一、瀑布模型
1、开发流程
问题定义 => 可行性研究 => 需求分析 => 计划 => 设计 => 编码 => 测试 => 上线运维
2、开发特征:线性顺序开发。
3、优点:
- 通过早期计划及需求调查等工作,在每个开发阶段都有明确的阶段性目标。
4、缺点:
- 由于项目的测试在最后阶段,发现问题时项目已经基本完成,此时则需要重新回溯至问题阶段排查问题,这可能导致许多前期工作变成无用功,增加了开发风险。
- 需求明确后就不再更改,不能适应需求变化的情况。
- 由于是线性顺序开发,开发中获得的经验教训无法反哺本项目。
5、适用场景:小型项目开发。
二、螺旋模型
1、开发流程
-
循环执行如下步骤:
while (true){
客户需求沟通 => 方案计划及目标拟定 => 风险分析 => 计划实施、编码、测试 => 成果评估
}
2、开发特征:渐进式迭代开发。
3、优点:
- 全过程风险分析管理,每个阶段都进行质量及风险验证。
- 阶段性总结经验教训,可以反哺本项目。
- 阶段性对项目可行性进行评估,控制沉没成本。
4、缺点:
- 严格的计划和进度控制,风险的识别、分析、控制,这些都使得投入的人力财力大大增加,对管理水平提出了更高的要求。
5、适用场景:用于规模庞大、复杂度高、风险大的项目。
三、增量与迭代开发
1、增量开发:
- 增量开发是在项目基础上不断根据需求进行扩展,优点是显著降低项目风险,结合需求持续构建。
2、迭代开发:
- 迭代开发是指原项目满足基本需求后就上线,后续才在原基础上不断细化迭代,做到迅速投产,逐步优化。
四、敏捷开发
1、什么是敏捷开发四原则(敏捷宣言)?
- 个体与交互重于过程和工具
- 可用的软件重于完备的文档
- 客户协作重于合同谈判
- 响应变化重于遵循计划
2、什么是 scrum 框架?
- 敏捷开发是一种思想,而scrum框架就是这种思想的具体实现,是一种基于持续学习和需求多变的启发式框架。
3、scrum 框架中的三大角色分别是什么?
- product owner(产品经理人):简单理解,产品经理人面向需求,主要负责整合客户需求,并传达给项目经理。
- scrum master(项目经理):简单理解,项目经理面向行动,主要负责研发团队的调度安排,进度计划的把控。
- team(研发团队):简单理解,进行具体工作的一大帮人。
4、scrum 框架的基本工作流程
- product backlog/产品需求
- sprint backlog/计划安排
- Sprint/具体实施
- daily scrum meeting/每日例会
- Sprint Review/迭代评审
- Sprint Retrospective/迭代回顾总结
(2、3、4、5步骤不断循环)
测试模型
五、V 模型
1、测试流程
- 用户需求:产品经理将用户需求转变为软件需求
- 需求分析与系统设计:验证需求是否正确,确定编程语言和框架
- 概要设计:项目结构设计
- 详细设计:接口、数据库表、具体工作等
- 编码
- 单元测试:测试每个方法
- 集成测试:测试每个功能模块
- 系统测试:测试模块之间是否存在干扰
- 验收测试:测试整个项目,验收
2、特点:开发与测试分离。
3、优点:测试被划分为许多类型,更体系化。
4、缺点:测试人员介入太晚,问题发现时机太晚。
六、w 模型 / 双 v 模型
1、测试流程
开发与测试人员同步进行(开发 / 测试):
- 用户需求 <=> 了解用户需求 & 验收测试文档准备
- 需求分析与系统设计 <=> 参与分析与设计 & 系统测试文档准备
- 概要设计 <=> 了解概要设计 & 集成测试文档准备
- 详细设计 <=> 了解详细设计 & 单元测试文档准备
- 编码 <=> 单元测试
- 集成 <=> 集成测试
- 实施 <=> 系统测试
- 交付 <=> 验收测试
2、特点:开发与测试同步。
3、优点:测试人员介入时间早,可以尽早发现问题。
4、缺点:
- 测试和开发活动依然保持着一种线性的前后关系, 上一阶段完全结束,才可正式开始下一个阶段工作。
- 无法支持敏捷开发模式,面对复杂多变的开发情况时存在局限性。