软考高级《系统架构设计师》--软件开发模型 复习笔记

2,073 阅读4分钟

前言

今天是2022年8月26日,距离软考高级《系统架构设计师》考试还有72天。继续加油。 今天复习的内容是软件开模型

依次来说明每个软件开发模型的特点以及使用场景。

瀑布模型

瀑布模型就如同瀑布一样,从一个特定的阶段,流向下一个阶段。

核心思想

瀑布模型认为,软件开发过程是一个阶段化的,精确的过程。就如同造船一样,首先需要知道航母的精确参数,还要知道每个零件的精确参数,零件造出来以后,还要一个个拼装起来。这前后步骤之间,每一步都设计的非常精确,一旦有一个步骤不清楚,后面的流程就容易混乱。

在瀑布模型中,软件开发要经过以下几个步骤:

  • 需求分析
  • 需求设计
  • 详细设计
  • 编码
  • 调试
  • 集成测试
  • 系统测试

image.png

特点

  • 阶段划分明确,每个阶段有明确的分界线
  • 每个阶段结束都有固定的文档流入下一个步骤

适用场景

软件需求非常明确

一旦需求不明确,后续步骤就会极大的放大之前的缺陷,修改代价非常大,难以控制开发风险。

模型变体 瀑布V模型

更强调“测试”,每一个步骤都有一个与之对应的测试环境。

image.png

瀑布模型的缺点

  • 一旦需求分析不清楚,就容易造成后续活动的极大偏差
  • 难以适应变化,如果前面的步骤,例如需求发生变化,很难适应调整
  • 每个步骤都会产生大量文档,增加维护成本

演化模型

在应用软件开发过程中,人们发现很难一次完全理解用户的需求,设计出完美的架构,开发出可用的系统。这由于人的认知本来就是一个循序渐进的过程。

演化模型正式基于这个观点提出的,一个演化模型可以看成若干个瀑布模型的迭代,当完成一个完整的瀑布模型后,重新进入下一个迭代周期,软件在迭代过程中加以演化、完善。

演化模型可以分为以下几类:

螺旋模型

螺旋模型的每个周期都包含4个阶段:

  • 需求定义 *风险分析
  • 工程实现
  • 评审

如下:

image.png

螺旋模型的做法,就是在瀑布模型的每一个开发阶段前,引入一个非常严格的风险识别、风险分析和风险控制。 螺旋模型强调“风险分析”。

与瀑布模型相比,螺旋模型支持用户需求的动态变化。

缺点
  • 采用螺旋模型,需要具有相当丰富的风险评估经验和专业知识。在风险较大的开发中,如果未能及时识别风险,势必造成重大损失。
  • 过多的迭代次数,会增加开发成本,延迟交付时间

增量模型

在软件技术架构成熟,风险较大的时候,可以采用增量的方式进行系统开发。这样可以提前进行集成测试和系统测试,缩短初始版本的发布周期,渐进交付,提高用户对系统的可见度。

应用增量模型需要注意:

  • 每一个版本都是完整版本,虽然最初的几个增量模型不能完全实现用户需求,但是这些版本是完整的、连续的。
  • 版本间的增量要均匀。

原型法

原型法的每一次迭代都会经过一个完整的生命周期。

在用户需求非常不明确,或者架构中存在很多不可知因素的情况下,可以采用原型法。在初始原型中,快速实现,并不考虑系统的合理性和稳定性。在这个原型的主要目的是获取用户的精确需求,或者验证架构的可行性。

适用场景

需求很不明确

总结

模型适用场景强调特点
瀑布模型需求精确定义
瀑布V模型测试
螺旋模型风险
增量模型-增量法每一个版本都是完整版本,需求渐近增加
增量模型-原型法需求非常不明确,不确定性非常大