:::tip 遇到关于软件开发过程模型的题,老是分不清它们各自的特点,加深一下记忆。 :::
# vuepress自定义容器
输入
|
|
输出
::: 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增量4Viewer 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
- 模型特点
以需求为动力,以对象作为驱动的模型,适合面向对象开发方式,开发过程具有迭代性,无间隙性,迭代意味着开发活动(分析,设计,编码,测试)常需要重复多次,无间隙指不存在明显分界。(一个人完成?)
- 模型优点
各个阶段没有明显界限,开发人员可以同步进行,提高开发效率,节省开发时间。(我觉得不太中)
- 适用场景
面向对象开发过程。
# 敏捷开发模型
敏捷开发模型,使产品尽早的可以进入市场,到达用户手中,例如一个微信,起初只支持聊天功能,后续增加了视频,语音,支付功能,是现在常用的开发模型。
- 模型特点
把一个大项目分为多个互相联系,但是也可独立运行的小项目,分别完成,在此过程中软件一直处于可用状态。文档少。
- 模型优点
产品可以尽早让用户使用,功能逐步完善。
- 适用场景
适合小型项目
不太专业,演化模型包括了螺旋模型和快速开发模型等包含关系都给隔开了,它们两个都是不断重复原型,最终得到较完善产品,后来才知道^_^