1.瀑布模型
瀑布模型:是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。
特点:
- 阶段性强,每个阶段比较独立
- 看重前期的需求分析和后期的测试
缺点:
- 测试在编码后才开始介入,导致前期的问题后期才发现,会错失补救的时机
2.螺旋模型
螺旋模型:是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的软件应用。
螺旋模型的每一个周期都包括需求定义、风险分析、工程实现和评审4个阶段,由这4个阶段进行迭代。软件开发过程每迭代一次,软件开发又前进一个层次。
- 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件
- 风险分析:分析评估所选方案,考虑如何识别和消除风险
- 实施工程:实施软件开发和验证
- 客户评估:评价开发工作,提出修正建议,制定下一步计划
特点:
- 适合大型的项目
- 强调每一个迭代的测试质量和风险分析
缺点:
- 引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平提出了很高的要求。需要大量人力物力投入,成本比较大
3.增量模型
增量模型:是把待开发的软件系统 模块化 ,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以 分批次 进行提交。
特点:
- 将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展
- 以组件为单位进行开发降低了软件开发的风险。
缺点
- 如果待开发的软件系统很难被模块化,那么将会给增量开发带来很多麻烦
- 可能退化为边做边改模型
4.敏捷模型
敏捷过程模型:是指基于迭代开发的软件开发方法。敏捷方法将任务分解为较小的迭代,或者部分不直接涉及长期计划。在开发过程的开始就确定了项目范围和要求。事先明确定义了有关迭代次数,每次迭代的持续时间和范围的计划。
每次迭代都被视为敏捷流程模型中的短时间”框架”,通常持续一到四个星期。将整个项目分成较小的部分有助于最大程度地降低项目风险,并减少总体项目交付时间要求。每次迭代都涉及一个团队,在整个软件开发生命周期中进行工作,包括计划,需求分析,设计, 编码和测试,然后再向客户展示有效产品。
特点:
- 轻文档,轻流程,重目标,重产出
4.1 Scrum
SCRUM 是一个敏捷开发过程, 主要关注在基于团队的开发条件下管理任务的方式。
其中有三个角色, 它们的职责是:
- Scrum Master:Scrum可以组建Master团队, 安排会议并消除流程中的障碍
- 产品负责人:产品负责人进行产品积压, 确定延迟的优先级, 并负责每次重复的功能分配。
- Scrum团队:该团队管理其工作并组织工作以完成冲刺或周期。
5.V模型
V模型大体可以划分为以下几个不同的阶段步骤:客户需求分析、软件需求分析、概要设计、详细设计、软件编码、单元测试、集成测试、系统测试、验收测试。
特点:
- 每一个阶段独立性强
- 左边每一个阶段是右边测试阶段的依据
缺点:
- 编码后才进行测试
- 前期的错误后期才会发现,会错失补救机会
6.W模型
相对于V模型,W模型增加了软件开发各阶段中同步进行的验证和确认活动。
由两个V字型模型组成,分别代表测试与开发过程,明确表示出了测试与开发的并行关系。
特点:
- 每一个阶段独立性强
- 测试一开始就介入
- 可以保证前期的问题及时发现和纠正
- 测试和开发并行
缺点:
- 每一个阶段的都是串行的过程
- 一个阶段完了之后就进入下一阶段
- 不支持敏捷开发,不能解除测试管理面临着困惑