当前位置:网站首页>面试官:你都了解哪些开发模型?
面试官:你都了解哪些开发模型?
2022-07-07 03:36:00 【二 黑】
前言
软件开发模型是指软件开发全部过程、活动和任务的结构框架。一般包括需求、设计、编码和测试等阶段,甚至包括维护阶段。软件开发模型明确规定了软件开发过程中要完成的主要活动和任务,用来指导整个开发过程中的工作。对于不同的系统,可依据软件的特点、项目成员的参与方式选择不同的软件开发模型。
作为测试工程师,测试的工作内容与软件开发模型紧密相关,不同的开发模型中,测试的任务和作用也会不同。以下,给大家介绍几种常见的开发模型。
01、瀑布模型
瀑布模型作为最早出现的软件开发模型,提供了软件开发的基本框架,为后续出现的开发模型奠定了基础。从1970年被温斯顿·罗伊斯(Winston Royce)提出后,直到80年代早期,一直是被广泛采用。
这种模式有明确的阶段活动,分为6个阶段:计划→需求分析→软件设计→编码→测试→运行维护。阶段顺序固定,自上而下、相互衔接,形如瀑布流水逐级下落。这也是瀑布模型名称的由来。
瀑布模型的本质是一次通过,即每个活动只执行一次,最后得到软件产品,也称为“线性顺序模型”或者“传统生命周期模型”。其过程是上一个阶段的工作完成输出结果并通过审核,才能“流动”到下一个阶段;否则返回前面,甚至更前的阶段活动。
缺点:
1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
2)由于开发模型是线性的,单一流程,不可逆,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
3)测试只是其中一个阶段,缺乏全过程测试思想。早期的错误可能要等到开发后期的测试阶段才能发现,发现问题越晚造成代价越高
4)在软件需求分析阶段,完全确定用户的所有需求是比较困难的,不能应对需求不断变更的项目。
优点:
1)为项目提供了按阶段划分的检查点。
2)当前一阶段完成后,您只需要去关注后续阶段。
适用项目范围:
1)需求很明确的软件开发项目;
2)在开发时间内需求没有或很少变化;
3)分析设计人员应对应用领域很熟悉;
4)低风险项目(对目标、环境很熟悉);
5)用户使用环境很稳定;
02、快速原型模型
快速原型模型与瀑布模型相反,项目初期根据用户的需求快速构建一个可以运行的系统原型,之后向用户展示,由用户进行审核,提出意见,然后逐步丰富项目需求。当需求真正确定后,才正式进行项目开发。
优点:
有助于满足用户的真实需求;原型系统已经通过与用户的交互而得到验证,据此产生的规格说明文档能够正确地描述用户需求。
缺点:
要求开发人员快速建立原型。
适用项目范围:
适用于需求不明确的软件项目。
03、增量模型
又称为迭代模型或演化模型,它将一个完整的软件拆分成不同的组件,然后逐个组件地开发测试,每完成一个组件就展现给客户,让客户确认这一部件功能和性能是否达到客户需求,最终确定无误,将组件集成到软件体系结构中。整个开发工作被组织为一系列短期、简单的小项目,称为一系列迭代,每一个迭代都需要经过需求分析→软件设计→编码→测试的过程。
优点:
1)第一个可交付版本的软件所需的成本与时间较小
2)能够适应客户的需求变更,当需求变化时,只需要修改某一个组件即可。
缺点:
1)如果对用户需求的变更没有整体的规划,可能会变化为"边做边开发"的模式。
2)最终集成各个组件时,可能会出现集成失败的风险。
适用项目范围:
适用于工期紧张、功能可以划分、比较复杂的软件项目。软件工程师必须有较高的技术水平,能够设计出开放的软件体系结构。
04、螺旋模型
该模型融合了瀑布模型、快速原型模型,由巴利·玻姆(Barry Boehm)于1988年提岀,该模型最大的特点就是引入了其他模型所没有的风险分析。
螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合,在每个周期开始之前都会进行风险分析。在每个阶段,首先构建软件原型,根据快速原型模型完成这个迭代过程,产出最终完善的产品,然后进入下一个阶段,同样下一个阶段开始之前也要进行风险评估,这样循环往复直到完成所有阶段的任务。
该模型共有四个象限,每个象限的含义如下:
1、制订计划:确定软件目标,制订实施方案,并且列出项目开发的限制条件。
2、风险分析:评价所制订的实施方案,识别风险并消除风险。
3、实施工程:开发产品并进行验证。
4、客户评估:客户对产品进行审核评估,提出修正建议,制订下一步计划。
优点:
1)对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;
2)减少了过多测试或测试不足所带来的风险;
3)在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。
缺点:
螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这方面的专门知识。
适用项目范围:
适用于内部开发的大型软件(开发周期长、比较容易受到社会因素影响的软件项目),软件开发人员具有丰富的风险评估知识和经验。
05、V模型
V模型也叫RAD(Rapid Application Development,快速应用开发)模型,是软件开发过程中的一个重要模型,由于其模型构图形似字母V,所以称为软件测试的V模型。V模型大体可以划分为以下几个不同的阶段步骤:客户需求分析、软件需求分析、概要设计、详细设计、软件编码、单元测试、集成测试、系统测试、验收测试。
优点:
开发阶段包含了底层测试(单元测试)和高层测试(系统测试);清楚的标识了开发和测试的各个阶段;每个阶段分工明确,便于整体项目的把控。
缺点:
自上而下的顺序导致了,测试工作要在编码之后进行,就导致错误不可以及时进行修改;实际工作中,经常变更需求,导致v模型步骤反复执行,返工量大,灵活度低。
适用项目范围:
一般适用于一些传统信息系统应用的开发,而一些高性能高风险的系统、互联网软件,或一个系统难以被具体模块化的时候,就比较难做成V模式所需的各种构件,需要更强调迭代的开发模型或者敏捷开发模型。
06、敏捷模型
敏捷模型是20世纪90年代兴起的一种软件开发模型。在现代社会的开发中,由于业务会经常快速的变化,因此会导致在软件开发之前经常是无法得到详细完整的开发需求,没有完整的开发需求,传统的软件开发模型也就无法适用。敏捷开发模型的提出就是为了解决该问题。该模型以客户的需求为核心,采用迭代,循序渐进的方法进行开发。
软件项目在构建初期会被拆分为多个相互联系而又独立运行的子项目,然后迭代完成各个子项目。当客户有需求变更时,敏捷模型能够迅速地对某个子项目做出修改以满足客户的需求。在这个过程中,软件一直处于可使用状态。
优点:
1、用户很快可以看到一个基线架构版的产品
2、敏捷注重市场快速反应能力,与客户面对面的交流
3、随时可以接受更改
缺点:
1、注重人员的沟通,需要较好的团队协作
2、忽略文档的重要性,需要项目中存在经验较强的人
3、如果项目人员流动大太,会增加项目维护难度
适用项目范围:
适用于产品复杂,需求多变,难预测、实现周期长的产品
学习资源分享
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….
加入下方我的交流群免费获取!
边栏推荐
- Lvs+kept (DR mode) learning notes
- 详解机器翻译任务中的BLEU
- Circulating tumor cells - here comes abnova's solution
- Esxi attaching mobile (Mechanical) hard disk detailed tutorial
- Use of completable future
- Precise space-time travel flow regulation system - ultra-high precision positioning system based on UWB
- toRefs API 与 toRef Api
- Détailler le bleu dans les tâches de traduction automatique
- Advanced level of C language (high level) pointer
- Procedure in PostgreSQL supports transaction syntax (instance & Analysis)
猜你喜欢
非父子组件的通信
组件的嵌套和拆分
JDBC database connection pool usage problem
Tujia, muniao, meituan... Home stay summer war will start
Unity3d learning notes
Precise space-time travel flow regulation system - ultra-high precision positioning system based on UWB
Abnova immunohistochemical service solution
Introduction to abnova's in vitro mRNA transcription workflow and capping method
关于二进制无法精确表示小数
From zero to one, I will teach you to build the "clip search by text" search service (2): 5 minutes to realize the prototype
随机推荐
MySQL binlog related commands
$refs: get the element object or sub component instance in the component:
Abnova circulating tumor DNA whole blood isolation, genomic DNA extraction and analysis
子组件传递给父组件
Détailler le bleu dans les tâches de traduction automatique
Project practice five fitting straight lines to obtain the center line
How can gyms improve their competitiveness?
Chinese and English instructions prosci LAG-3 recombinant protein
About binary cannot express decimals accurately
toRefs API 与 toRef Api
Four goals for the construction of intelligent safety risk management and control platform for hazardous chemical enterprises in Chemical Industry Park
.net 5 FluentFTP连接FTP失败问题:This operation is only allowed using a successfully authenticated context
【JDBC以及内部类的讲解】
Algorithm --- bit count (kotlin)
Abnova membrane protein lipoprotein technology and category display
【mysqld】Can't create/write to file
Tujia, muniao, meituan... Home stay summer war will start
软件验收测试
Hidden Markov model (HMM) learning notes
Can 7-day zero foundation prove HCIA? Huawei certification system learning path sharing