TIP

遇到关于软件开发过程模型的题,老是分不清它们各自的特点,加深一下记忆。

# vuepress自定义容器

输入


::: tip
这是一个提示
:::
::: warning
这是一个警告
:::
::: danger
这是一个危险警告
:::

输出

TIP

这是一个提示

WARNING

这是一个警告

DANGER

这是一个危险警告

自定义容器块的标题


::: tip 这是提示
这是一个提示
:::

这是提示

这是一个提示

# 瀑布模型(Waterfall Model)

瀑布模型规定了它们自上而下、相互衔接的固定次序,如同瀑布的流水一样,顺流而下,自然就有一定的顺序性,是一种比较经典的模型,1970年就提出了。

可行性分析
可行性分析
项目计划
项目计划
需求分析
需求分析
设计
设计
编码
编码
测试
测试
运行维护
运行维护
Viewer does not support full SVG 1.1

  • 模型特点

各个阶段具有顺序性,必须等上一个阶段完成才能进行下一阶段,每一阶段都有文档生成,下一阶段要依赖上一阶段,每个阶段规定文档需进行评审,但是缺点是,测试进行的太晚,基本上软件都要上线的时候才进行测试,并且,发现某一错误需要往上一层迭代寻找错误原因。

  • 模型优点

是一种线性模型,必须严格按照规划推进,很安全,对于需求明确,无大的需求变更很适合。

  • 适用场景

适用于需求明确,无大的需求变更。

# RAD模型(Rap Application Development)

RAD模型使针对瀑布模型测试介入太晚而做的改进。又叫做V模型,通过开发和测试同时进行的方式缩短开发周期。

用户需求
用户需求
需求分析
需求分析
概要设计
概要设计
详细设计
详细设计
编码和实现
编码和实现
单元测试
单元测试
验收测试
验收测试
集成测试
集成测试
系统测试
系统测试
Viewer does not support full SVG 1.1

  • 模型特点

强调极短的开发周期,测试和开发同时进行,克服了瀑布模型测试介入过晚。

  • 模型优点

是瀑布模型的一个改进,但是改进并不明显。

  • 适用场景

适用于一些传统信息系统应用的开发。

# 快速原型模型(RapidPrototype Model)

快速原型模型又叫做原型模型。原型是指模拟魔种产品的原始模型,例如做一个聊天软件,可以先做一个大致雏形,能实现基本功能。

  • 模型特点

快速原型模型的第一步是建造一个快速原型,尽早的与用户进行交互,得到的反馈,再进一步细化待开发软件的需求。逐步调整原型,达到客户的要求。

  • 模型优点

减少了软件需求不明确带来的风险,对于一些需求不明确的软件开发很适合。

  • 适用场景

适用于需求不明确、小型或是交互型的系统、大型系统的某些部分。

# 增量模型(Incremental Model)

增量模型是把代开大软件系统模块化,将每个模块作为一个增量组件,从而可以分批次地分析,设计,编码,测试。

分析
分析
设计
设计
编码
编码
测试
测试
分析
分析
设计
设计
分析
分析
设计
设计
编码
编码
测试
测试
编码
编码
测试
测试
测试
测试
分析
分析
设计
设计
编码
编码
增量1
增量1
增量2
增量2
增量3
增量3
增量4
增量4
Viewer does not support full SVG 1.1

  • 模型特点

整个产品划分为一个个增量组件,每个增量组件又是使用瀑布模型开发。

  • 模型优点

可以分批次地提交软件产品,使用户及时了解软件项目的进展,一个模块的错误,不会影响到整个软件开发系统,开发顺序灵活,各个模块之间不分先后关系。(技术风险比较大,要是事先没约定好,搞不好就组装不到一起)

  • 适用场景

已有产品升级或者新版本开发,对完成期限严格要求,对开发领域比较熟悉而且已有原型系统。

# 演化模型(Evolution Model)

通常软件开发需求不会一次性就确定好,所以软件就很难一次做成功。

需求分析
需求分析
软件设计
软件设计
软件测试
软件测试
软件实现
软件实现
软件部署
软件部署
第一次试验开发
第一次试验开发
需求分析
需求分析
软件设计
软件设计
软件测试
软件测试
软件实现
软件实现
软件部署
软件部署
第二次试验开发
第二次试验开发
用户试用原型,进行评价和反馈,对需求进行修订和增补
用户试用原型,进行评价和反馈,对需求进行修订和增补
Viewer does not support full SVG 1.1

  • 模型特点

提倡两次开发,第一次是试验开发,得到试验性的原型产品,探索可行性,明确需求。第二次在此基础上获得较为满意的产品。

  • 模型优点

明确用户需求,提高系统质量,降低开发风险。

  • 适用场景

需求不清楚,小型或中型系统,开发周期短。

# 螺旋模型(Spiral Model)

大型软件开发一个原型可能会达不到要求,螺旋模型将瀑布模型和演化模型结合起来,加入了两种模型均忽略风险的分析。

原型1
原型1
原型2
原型2
原型3
原型3
可运行原型
可运行原型
风险分析
风险分析
风险分析
风险分析
风险分析
风险分析
软件需求
软件需求
需求确认
需求确认
开发计划
开发计划
生存期计划
生存期计划
需求计划
需求计划
软件产品设计
软件产品设计
设计确认与验证
设计确认与验证
组装与测试
组装与测试
详细设计
详细设计
编码
编码
单元测试
单元测试
组装与测试
组装与测试
验收测试
验收测试
实现
实现
实施工程
开发验证下一产品
实施工程 开发验证下一产品
风险分析
评价方案
识别风险
清除风险
风险分析评价方案识别风险清除风险...
制定计划
决定目标
方案和限制
制定计划决定目标方案和限制...
客户评估
客户评估
Viewer does not support full SVG 1.1

  • 模型特点

与瀑布模型相比,螺旋模型支持用户需求的动态变化,使用此模型需要开发者具有相当丰富的风险评估经验和专门知识(经验丰富的大牛)

  • 模型优点

关注软件的重用,错误及时消除,质量放在首位,将开发阶段和维护阶段放到一起。

  • 适用场景

螺旋模型墙掉风险分析,适用于庞大、复杂并且具有高风险的系统。

# 喷泉模型(Fountion Model)

喷泉模型是专门针对面向对象软件开发方法而提出的。在面向对象方法中,对象既是对现实问题中实体的抽象,也是构造软件系统的基本元素,总体来说就是将现实问题抽象为一个对象。基于面向对象方法所带来的便利,对软件的分析、设计和实现按照迭代的方式交替进行,通过进化方式,使软件分阶段逐渐完整。

集成与测试阶段
集成与测试阶段
编码阶段
编码阶段
设计阶段
设计阶段
规格与说明阶段
规格与说明阶段
需求阶段
需求阶段
上线
上线
Viewer does not support full SVG 1.1

  • 模型特点

以需求为动力,以对象作为驱动的模型,适合面向对象开发方式,开发过程具有迭代性,无间隙性,迭代意味着开发活动(分析,设计,编码,测试)常需要重复多次,无间隙指不存在明显分界。(一个人完成?)

  • 模型优点

各个阶段没有明显界限,开发人员可以同步进行,提高开发效率,节省开发时间。(我觉得不太中)

  • 适用场景

面向对象开发过程。

# 敏捷开发模型

敏捷开发模型,使产品尽早的可以进入市场,到达用户手中,例如一个微信,起初只支持聊天功能,后续增加了视频,语音,支付功能,是现在常用的开发模型。

  • 模型特点

把一个大项目分为多个互相联系,但是也可独立运行的小项目,分别完成,在此过程中软件一直处于可用状态。文档少。

  • 模型优点

产品可以尽早让用户使用,功能逐步完善。

  • 适用场景

适合小型项目

不太专业,演化模型包括了螺旋模型和快速开发模型等包含关系都给隔开了,它们两个都是不断重复原型,最终得到较完善产品,后来才知道^_^

# 参考链接:

软件工程中开发模型的优缺点及适用场合 (opens new window)

几种常见软件过程模型的比较 (opens new window)

软件开发模型之一个声音很好听的小姐姐^_^ (opens new window)