面试被问到了解哪些开发模型?看这一篇就够了

news2024/11/16 13:45:36

前言

软件开发模型是指软件开发全部过程、活动和任务的结构框架。一般包括需求、设计、编码和测试等阶段,甚至包括维护阶段。软件开发模型明确规定了软件开发过程中要完成的主要活动和任务,用来指导整个开发过程中的工作。对于不同的系统,可依据软件的特点、项目成员的参与方式选择不同的软件开发模型。作为测试工程师,测试的工作内容与软件开发模型紧密相关,不同的开发模型中,测试的任务和作用也会不同。以下,给大家介绍几种常见的开发模型。

1、瀑布模型

瀑布模型作为最早出现的软件开发模型,提供了软件开发的基本框架,为后续出现的开发模型奠定了基础。从1970年被温斯顿·罗伊斯(Winston Royce)提出后,直到80年代早期,一直是被广泛采用。

这种模式有明确的阶段活动,分为6个阶段:计划→需求分析→软件设计→编码→测试→运行维护。阶段顺序固定,自上而下、相互衔接,形如瀑布流水逐级下落。这也是瀑布模型名称的由来。

瀑布模型的本质是一次通过,即每个活动只执行一次,最后得到软件产品,也称为“线性顺序模型”或者“传统生命周期模型”。其过程是上一个阶段的工作完成输出结果并通过审核,才能“流动”到下一个阶段;否则返回前面,甚至更前的阶段活动。

缺点:

1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。

2)由于开发模型是线性的,单一流程,不可逆,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。

3)测试只是其中一个阶段,缺乏全过程测试思想。早期的错误可能要等到开发后期的测试阶段才能发现,发现问题越晚造成代价越高

4)在软件需求分析阶段,完全确定用户的所有需求是比较困难的,不能应对需求不断变更的项目。

优点:

1)为项目提供了按阶段划分的检查点。

2)当前一阶段完成后,您只需要去关注后续阶段。

适用项目范围:

1)需求很明确的软件开发项目;

2)在开发时间内需求没有或很少变化;

3)分析设计人员应对应用领域很熟悉;

4)低风险项目(对目标、环境很熟悉);

5)用户使用环境很稳定;

2、快速原型模型

快速原型模型与瀑布模型相反,项目初期根据用户的需求快速构建一个可以运行的系统原型,之后向用户展示,由用户进行审核,提出意见,然后逐步丰富项目需求。当需求真正确定后,才正式进行项目开发。

优点:

有助于满足用户的真实需求;原型系统已经通过与用户的交互而得到验证,据此产生的规格说明文档能够正确地描述用户需求。

缺点:

要求开发人员快速建立原型。

适用项目范围:

适用于需求不明确的软件项目。

3、增量模型

又称为迭代模型或演化模型,它将一个完整的软件拆分成不同的组件,然后逐个组件地开发测试,每完成一个组件就展现给客户,让客户确认这一部件功能和性能是否达到客户需求,最终确定无误,将组件集成到软件体系结构中。整个开发工作被组织为一系列短期、简单的小项目,称为一系列迭代,每一个迭代都需要经过需求分析→软件设计→编码→测试的过程。

优点:

1)第一个可交付版本的软件所需的成本与时间较小

2)能够适应客户的需求变更,当需求变化时,只需要修改某一个组件即可。

缺点:

1)如果对用户需求的变更没有整体的规划,可能会变化为"边做边开发"的模式。

2)最终集成各个组件时,可能会出现集成失败的风险。

适用项目范围:

适用于工期紧张、功能可以划分、比较复杂的软件项目。软件工程师必须有较高的技术水平,能够设计出开放的软件体系结构。

4、螺旋模型

该模型融合了瀑布模型、快速原型模型,由巴利·玻姆(Barry Boehm)于1988年提岀,该模型最大的特点就是引入了其他模型所没有的风险分析。螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合,在每个周期开始之前都会进行风险分析。在每个阶段,首先构建软件原型,根据快速原型模型完成这个迭代过程,产出最终完善的产品,然后进入下一个阶段,同样下一个阶段开始之前也要进行风险评估,这样循环往复直到完成所有阶段的任务。

该模型共有四个象限,每个象限的含义如下:

1、制订计划:确定软件目标,制订实施方案,并且列出项目开发的限制条件。

2、风险分析:评价所制订的实施方案,识别风险并消除风险。

3、实施工程:开发产品并进行验证。

4、客户评估:客户对产品进行审核评估,提出修正建议,制订下一步计划。

优点:

1)对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;

2)减少了过多测试或测试不足所带来的风险;

3)在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。

缺点:

螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这方面的专门知识

适用项目范围:

适用于内部开发的大型软件(开发周期长、比较容易受到社会因素影响的软件项目),软件开发人员具有丰富的风险评估知识和经验。

5、V模型

V模型也叫RAD(Rapid Application Development,快速应用开发)模型,是软件开发过程中的一个重要模型,由于其模型构图形似字母V,所以称为软件测试的V模型。V模型大体可以划分为以下几个不同的阶段步骤:客户需求分析、软件需求分析、概要设计、详细设计、软件编码、单元测试、集成测试、系统测试、验收测试。

优点:

开发阶段包含了底层测试(单元测试)和高层测试(系统测试);清楚的标识了开发和测试的各个阶段;每个阶段分工明确,便于整体项目的把控。

缺点:

自上而下的顺序导致了,测试工作要在编码之后进行,就导致错误不可以及时进行修改;实际工作中,经常变更需求,导致v模型步骤反复执行,返工量大,灵活度低。

适用 项目范围:

一般适用于一些传统信息系统应用的开发,而一些高性能高风险的系统、互联网软件,或一个系统难以被具体模块化的时候,就比较难做成V模式所需的各种构件,需要更强调迭代的开发模型或者敏捷开发模型。

6、敏捷模型

敏捷模型是20世纪90年代兴起的一种软件开发模型。在现代社会的开发中,由于业务会经常快速的变化,因此会导致在软件开发之前经常是无法得到详细完整的开发需求,没有完整的开发需求,传统的软件开发模型也就无法适用。敏捷开发模型的提出就是为了解决该问题。该模型以客户的需求为核心,采用迭代,循序渐进的方法进行开发。

软件项目在构建初期会被拆分为多个相互联系而又独立运行的子项目,然后迭代完成各个子项目。当客户有需求变更时,敏捷模型能够迅速地对某个子项目做出修改以满足客户的需求。在这个过程中,软件一直处于可使用状态。

优点:

1、用户很快可以看到一个基线架构版的产品

2、敏捷注重市场快速反应能力,与客户面对面的交流

3、随时可以接受更改

缺点:

1、注重人员的沟通,需要较好的团队协作

2、忽略文档的重要性,需要项目中存在经验较强的人

3、如果项目人员流动大太,会增加项目维护难度

适用项目范围:

适用于产品复杂,需求多变,难预测、实现周期长的产品。


 

你们公司一般用什么模型呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/509810.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SSD系列2——PriorBox

SSD系列: SSD系列1——网络结构 SSD系列2——PriorBox SSD系列3——损失计算 PriorBox SSD采用PriorBox来进行区域生成,其思想与Faster RCNN的Anchor类似。PriorBox的本质是在原图上的一系列矩形框,即特征图上的一个点根据下采样率可以得到在…

创新驱动 共建生态|鲲鹏开发者峰会2023·GBASE南大通用技术论坛成功举办

5月7日,鲲鹏开发者峰会2023 GBASE南大通用技术论坛如约而至,吸引了数十位数据库技术专家、开发者参与讨论。本次论坛是GBASE南大通用联合openGauss社区、行业用户和生态伙伴共同举办的交流分享活动,邀请到包括鲲鹏计算产品部部长颜叶、四川信…

【Linux Network】序列化和反序列化

目录 1. 序列化和反序列化的简单介绍 2. 使用 json 组件完成数据的序列化和反序列化 1. 安装 jsoncpp 组件 2. 序列化 3. 反序列化 Linux网络编程✨ 1. 序列化和反序列化的简单介绍 序列化:将一个结构体数据转化为字符串数据; 反序列化:将…

Mysql 学习(十)基于成本的优化 一

什么是成本 执行一个查询可以有不同的执行方案,优化器会选择一个成本比较低的方案去执行,但是现在有个疑问,MySQL的查询执行成本是哪些呢?主要有两方面组成: I/O成本:myisam和innodb存储引擎将数据和索引存…

盘点慢查询原因及优化方法

目录 一,前言二,准备type重点看 三,慢查询原因和解决1,sql未加索引2,索引失效3,limit深分页问题(1)limit深分页为什么会慢(2)深分页优化 4,in元素…

网安笔记 09 PKI PMI

PKI PMI PKI 公钥基础设施 public key infrastructure 遵循标准的,利用公钥理论和技术建立的提供安全服务的基础设施 **目的:**身份认证,点滴信息不完整,不可抵赖,提供可靠安全服务 **任务:**可信任数字…

【发表案例】智能传感类、持续学习模型、计算建模、边缘计算等领域SCI,最快仅1个月14天录用

3区智能传感类SCI&EI 【期刊简介】IF:1.5-2.0,JCR3区,中科院4区 【检索情况】SCI&EI 双检,正刊 【征稿领域】智能信号处理技术在基于机器学习中遥感相关的应用研究 录用案例:2个月零5天录用 2023.04.28 | Accept 20…

OpenPCDet系列 | 7.PointPillars模型测试KITTI数据集流程解析

文章目录 模型的测试流程1. AnchorHeadTemplate.generate_predicted_boxes部分2. Detector3DTemplate.post_processing部分3. KittiDataset.generate_prediction_dicts部分4. KittiDataset.evaluation部分模型的测试流程 对于模型来说,训练过程是为了计算构建损失训练模型的参…

小程序安全架构分析

小程序大家已经再熟悉不过了,就是一种在移动操作系统中运行的轻量级应用程序,小程序发展这么多年来,是中国 IT 行业里为数不多的能够真正影响到普通程序员的创新成果。 当然随着小程序的流行,小程序的各个方面都是开发者讨论的热…

20230503 - 二叉树2 | 二叉树的层序遍历、226. 翻转二叉树、101. 对称二叉树

1、二叉树的层序遍历 二叉树的层序遍历,就是图论中的广度优先搜索在二叉树中的应用,需要借助队列来实现(此时又发现队列的一个应用了)。 来吧,一口气打十个: 102.二叉树的层序遍历 class Solution {pub…

一心报国的西工大网安人走出新手村

大二下学期5月5日晚上,西工大长安校区教学西楼,作为一名网安专业本科生,从大一便立志学好网安知识,报效祖国,却苦于没有优秀学习资源,就把这事儿拖到了大二,最近上了一门专业课,如同…

Wireshark抓包:详解TCP四次挥手报文内容

一、详解tcp四次挥手 刚才用图解释了tcp四次挥手的过程。用wireshark抓一个包,进行详细的分析。 1.客户端发的第一个释放连接的请求 这是抓的包,然后过滤出来的,看下最后的阶段,是要开始释放一个链接了。这里是第一个fin&#…

PSP - 适配不同来源的 AlphaFold2 MSA 接口

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/130594303 MSA (Multiple Sequence Alignment) 在 AlphaFold2 中的工作方式如下: 使用搜索工具 (hhblits/hhsearch/jackhmmer),从大型数据库中,搜索与目标…

如何快速构建 Zabbix 原生高可用?

Zabbix Meetup成都站议程 14:30 《如何快速构建 Zabbix 原生高可用》 周松,Zabbix 大中华区培训师,架构师 15:00 《基于 Zabbix 开发的拨测平台–OneMonitor》 唐荣,社区用户 15:30 《Zabbix 与信创生态的融合》 侯健,上海宏…

VS安装项目生成错误提示:SQL Server 2008 R2 SP2 Management Studio

错误提示内容: 原因是在Visual Studio XXXX中创建设置时遇到错误。 提示错误信息: 0:Watson 1:1304 2:StreamSupportFiles 3:streamBinaryToDisk 4:5 5.e:lsql10 main tlsgllsetupidarwinsglcastublstreamca.cpp 6:238 7:sglcastub.dll 8:sglrun.msi 点…

Python每日一练(20230510) 石子游戏 VII\VIII\IX

目录 1. 石子游戏 Stone Game VII 2. 石子游戏 Stone Game VIII 3. 石子游戏 Stone Game IX 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 石子游戏 Stone Game VII 石子游戏中&…

Android音视频开发之音频录制和播放

1.封装音频录制工具类: public class RecorderAudioManagerUtils {private static volatile RecorderAudioManagerUtils mInstance;public static RecorderAudioManagerUtils getInstance() {if (mInstance null) {synchronized (RecorderAudioManagerUtils.class…

【连续介质力学】简介

什么是连续介质力学 连续介质力学的假设 连续介质力学的流体性质:质量密度,压强和速度假设为连续函数 将原子系统看作是连续 分子的平均自由程: Λ \Lambda Λ 物理特征长度: l c l_c lc​ 克劳森数(Knudsen number…

数字城市发展,哪些技术可以深度应用

说到数字城市、智慧城市大家都会觉得经常在耳边听到,但是要确切的说出具体的概念还是有一些难度的。具体来讲:数字城市是一个集合多种技术的系统,以计算机技术、多媒体技术和大规模存储技术为基础,以宽带网络为纽带,运…

Grafana 系列-统一展示-5-AWS Cloudwatch 仪表板

系列文章 Grafana 系列文章 👍️强烈推荐 强烈推荐使用 GitHub 上的 monitoringartist/grafana-aws-cloudwatch-dashboards 仪表板。该 repo 有一系列 AWS 资源的仪表板,包括但不限于: EC2EBSAPI GWAutoscalingBillingEKSLambdaLogsRDSS3…