前言
今天是2022年8月26日,距离软考高级《系统架构设计师》考试还有72天。继续加油。
今天复习的内容是软件开模型
依次来说明每个软件开发模型的特点以及使用场景。
瀑布模型
瀑布模型就如同瀑布一样,从一个特定的阶段,流向下一个阶段。
核心思想
瀑布模型认为,软件开发过程是一个阶段化的,精确的过程。就如同造船一样,首先需要知道航母的精确参数,还要知道每个零件的精确参数,零件造出来以后,还要一个个拼装起来。这前后步骤之间,每一步都设计的非常精确,一旦有一个步骤不清楚,后面的流程就容易混乱。
在瀑布模型中,软件开发要经过以下几个步骤:
- 需求分析
- 需求设计
- 详细设计
- 编码
- 调试
- 集成测试
- 系统测试
特点
- 阶段划分明确,每个阶段有明确的分界线
- 每个阶段结束都有固定的文档流入下一个步骤
适用场景
软件需求非常明确
一旦需求不明确,后续步骤就会极大的放大之前的缺陷,修改代价非常大,难以控制开发风险。
模型变体 瀑布V模型
更强调“测试”,每一个步骤都有一个与之对应的测试环境。
瀑布模型的缺点
- 一旦需求分析不清楚,就容易造成后续活动的极大偏差
- 难以适应变化,如果前面的步骤,例如需求发生变化,很难适应调整
- 每个步骤都会产生大量文档,增加维护成本
演化模型
在应用软件开发过程中,人们发现很难一次完全理解用户的需求,设计出完美的架构,开发出可用的系统。这由于人的认知本来就是一个循序渐进的过程。
演化模型正式基于这个观点提出的,一个演化模型可以看成若干个瀑布模型的迭代,当完成一个完整的瀑布模型后,重新进入下一个迭代周期,软件在迭代过程中加以演化、完善。
演化模型可以分为以下几类:
螺旋模型
螺旋模型的每个周期都包含4个阶段:
- 需求定义 *风险分析
- 工程实现
- 评审
如下:
螺旋模型的做法,就是在瀑布模型的每一个开发阶段前,引入一个非常严格的风险识别、风险分析和风险控制。 螺旋模型强调“风险分析”。
与瀑布模型相比,螺旋模型支持用户需求的动态变化。
缺点
- 采用螺旋模型,需要具有相当丰富的风险评估经验和专业知识。在风险较大的开发中,如果未能及时识别风险,势必造成重大损失。
- 过多的迭代次数,会增加开发成本,延迟交付时间
增量模型
在软件技术架构成熟,风险较大的时候,可以采用增量的方式进行系统开发。这样可以提前进行集成测试和系统测试,缩短初始版本的发布周期,渐进交付,提高用户对系统的可见度。
应用增量模型需要注意:
- 每一个版本都是完整版本,虽然最初的几个增量模型不能完全实现用户需求,但是这些版本是完整的、连续的。
- 版本间的增量要均匀。
原型法
原型法的每一次迭代都会经过一个完整的生命周期。
在用户需求非常不明确,或者架构中存在很多不可知因素的情况下,可以采用原型法。在初始原型中,快速实现,并不考虑系统的合理性和稳定性。在这个原型的主要目的是获取用户的精确需求,或者验证架构的可行性。
适用场景
需求很不明确
总结
模型 | 适用场景 | 强调 | 特点 |
---|---|---|---|
瀑布模型 | 需求精确定义 | ||
瀑布V模型 | 测试 | ||
螺旋模型 | 风险 | ||
增量模型-增量法 | 每一个版本都是完整版本,需求渐近增加 | ||
增量模型-原型法 | 需求非常不明确,不确定性非常大 |