测试基础02:软件开发流程及模型、敏捷开发

1、软件开发流程

        包括:项目开发目的分析与确定、需求分析、设计、编程、软件测试、软件交付、验收和维护。

2、软件开发模型

2.1 定义

        软件开发模型(Software Development Model)是软件开发全过程的框架,规定了软件开发过程中各项活动的基本步骤、任务和流程,决定了项目的组织、管理和执行方式。

        软件开发模型能清晰、直观地表达软件开发全过程,是对软件开发过程的建模,即用一定的流程将各个环节连接起来,并可用规范的方式操作全过程,好比工厂的生产线。

2.2 分类

  1. 边做边改模型(Build-and-Fix Model):没有章法

  2. 瀑布模型(Waterfall Model):比较经典的模型

  3. 快速原型模型(Rapid Prototype Model):1、2的整合优化

  4. 螺旋模型(Spiral Model)

  5. 演化模型(迭代模型/渐增模型/增量模型,Incremental Model):项目拆解,逐步交付

  6. 喷泉模型(fountain model)

  7. 混合模型(hybrid model)

  8. 敏捷开发模型(Agile Development):5的极速版

  9. 智能模型(四代技术(4GL))

  10. RUP模型(Rational Unified Process)

  11. IPD模型(Integrated Product Development)

(以下介绍上方划线的几种常见模型)

1、边做边改模型(Build-and-Fix Model)

        开发拿到项目需求,立刻直接代码实现,调试后生成软件版本提供给用户。用户使用后出现程序问题或者新需求,开发人员修改、重新发版。循环往复,直至项目结束。

图片

图片

(图2来源于网络)

优点:快。

缺点:

        1、无需求环节,很可能有开发风险。

        2、无规划、无设计、无文档,逻辑不严谨,可读性差。软件结构会随不断修改而混乱,最终无法修改、维护、扩展。

适用场景:

        作坊式,常见于小公司、小项目,如小程序开发、个人开发或承接的项目。

2、瀑布模型(Waterfall Model)

        传统的计算机软件开发方法,形状像瀑布。

图片

         瀑布模型将软件生命周期划分为六个阶段:计划制定、需求分析、软件设计、程序编写、软件测试和运行维护。这些阶段自上而下、相互衔接,像瀑布流水一样向前推进。

        模型要求严格按照线性方式进行软件开发的各个活动,每一项活动的工作内容都必须依据上一项活动的成果来实施完成。完成当前活动的工作内容后,需要对结果进行验证,若验证通过,则将工作结果输入到下一项活动中,继续进行下一项活动的工作内容。如未通过验证,则要重新修改。

优点:

        软件开发过程严格遵循预先计划,需求明确,工作量可控。

缺点:

        1、不灵活:阶段划分完全固定,用户见成果需等到过程末期。

        2、工作量大:强调文档,每个阶段会产生大量文档;每个阶段都要仔细验证,极大增加工作量。

        3、过于理想化,实际操作风险高:线性流程,早期问题可能等到后期测试阶段才被发现,问题修复成本随着阶段向后发展呈指数升高,可能导致严重后果。

适用场景:

        一直使用到八十年代。

3、快速原型模型(Rapid Prototype Model)

        快速原型开发模式把"边做边改模式"和"瀑布式开发模式"的一些特点整合在了一起:加入模拟成品的“原型”设计环节(所见即所得),(产品经理)边做边改原型;确定原型后,瀑布流顺序开发产品。

图片

        第一步:建造一个快速原型,实现客户或未来用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型,使其满足客户的要求,使开发人员确定客户的真正需求。(“边做边改”需求原型,不着急开发)

        第二步:在第一步的基础上开发客户满意的软件产品。(确定需求,进行开发)

        快速原型的关键是尽快建立出软件模型(原型),而原型系统的内部架构并不是最重要的。一旦客户需求明确,即确定产品原型,产品经理据此书写规格说明文档(需求文档),根据这份文档开发出的软件可以满足用户的真实需求。

        从上图中可以看出,快速原型模型的各阶段之间是不带反馈环的,这正是这种过程模型的主要优点:软件产品的开发基本上做到线性顺序(同瀑布模型)进行的。

快速原型所需语言:

        UNIX Shell和超文本都是广泛使用的快速原型语言,最近的趋势是,广泛地使用第四代语言(4GL)构建快速原型。

优点:

        1、快:生命周期较短。

        2、客户体验好:原型所见即所得,客户项目初期即可看到成品效果,及时确认需求。

        3、需求真实、明确:降低了瀑布模型中可能的风险。

        4、生成的原型是最终产品的一部分,如:原型界面即产品界面。

缺点:

        这种模式可能会带来系统设计上的不足和难以维护等问题。(我没太懂)

5、演化模型(迭代模型/渐增模型/增量模型,Incremental Model)

(有理论将演化和增量分开,演化:事先不能定义完整需求。增量:已有完整需求。此处不做区分。)

        将完整产品拆分,每次交付满足用户一个需求子集的可运行产品,逐步交付产品。

        在使用迭代模型时,第一个迭代往往是实现基本需求的核心产品。核心产品交付用户使用后,经过评价形成下一个迭代的开发计划,包括对核心产品的修改和一些新功能的发布。

        这个过程在每个迭代发布后不断重复,直到产生最终的完善产品。

图片

优点:

        1、快速高效:能够弥补瀑布模型的缺点,具有更高的生产力和成功率。软件项目可以在确定客户需求之前启动,每次迭代中完成一部分。随后,根据客户反馈的需求再进一步细化,开始新一轮的迭代过程。

        2、客户体验好:客户可以不断地看到所开发的软件。

        3、灵活:可以较好地适应变化。

缺点:

        1、对项目有可扩展性要求:需要软件具备开放式的体系结构。

        2、有失控风险:容易退化为边做边改模型,使软件过程的控制失去整体性。

8、敏捷开发模型(Agile Development)

        以人为核心、快速迭代、循序渐进的开发模式。

        强调以人为本,专注于“尽早地、持续性地”交付对客户有价值的软件。

        用于开发和维持复杂产品,把一个大项目分为多个相互联系但也可独立运行的小项目,分别完成,在此过程中软件一直处于可使用状态。

图片

(图片来自网络)

敏捷开发团队三个主要工作方法:

        ① 将所有个体作为一个整体进行工作

        ② 工作以短迭代周期的方式进行

        ③ 每一次迭代完成都交付结果,并关注业务优先级。

敏捷开发模式的四个基本核心思想:

        1. 重视面对面的沟通,人与人实际交流胜过任何网络工具

        2. 将时间精力花费在可运行的程序上, 能执行的产品胜过编译全面的文档,它强调了原型和demonstration等的重要性。

        3. 鼓励团队合作,提升工作激情,敏捷开发可以把需求、开发、测试等团队成员整合为一个整体。

        4. 团队适应能力强,适应环境变化,拒绝按部就班。

优点:

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

        2、敏捷注重市场快速反应能力,也即具体应对能力,客户前期满意度高。

缺点:

        1、敏捷注重人员的沟通,忽略文档的重要性,若项目人员流动太大,维护难度增加,特别项目存在新手比较多时,老员工比较累。

        2、需要项目中存在经验较强的人,否则大项目中容易遇到瓶颈问题。

(对于敏捷开发具体的细分模型,可参考:《软件开发(过程)模型—5种敏捷开发模型(Agile Development)》https://blog.csdn.net/sinat_27382047/article/details/127686920)

参考文章:

1、《软件开发最热门的5种模式》https://zhuanlan.zhihu.com/p/633710872

2、《软件开发常见模型汇总》https://blog.csdn.net/qq_41854911/article/details/131367786

3、《软件开发模型》https://wenku.baidu.com/view/5788db79168884868762d697.html?fr=aladdin664466&ind=1&aigcsid=0&qtype=0&lcid=1&queryKey=%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E6%A8%A1%E5%9E%8B&_wkts_=1716097143310&bdQuery=%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E6%A8%A1%E5%9E%8B&needWelcomeRecommand=1

4、《软件工程--快速原型模型详解》https://blog.csdn.net/cold___play/article/details/103010882

土小帽

七宝七喜睡觉写散文诗,铲屎官土小帽教你软件测试。

B站:【土小帽软件测试(行入门到高级)-哔哩哔哩】 https://b23.tv/1c2U5fN

测试资源(百度网盘):

https://pan.baidu.com/s/1Ypm8-VKuPurLtu0bCJovnA?pwd=5eji 提取码: 5eji

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

InteractiveGraph图谱中vue项目中如何使用

InteractiveGraph图谱中vue项目中如何使用 一、下载js和css和字体二、vue2.0项目中引用三、grap组件 一、下载js和css和字体 //在这里面找 https://github.com/grapheco/InteractiveGraph/blob/master/dist/examples/example1.html二、vue2.0项目中引用 //main.js中全局引入$ …

驱动开发中引入私有数据的原因

系列文章目录 驱动开发中引入私有数据的原因 驱动开发中引入私有数据的原因 系列文章目录驱动开发中引入私有数据的原因 驱动开发中引入私有数据的原因 驱动开发中引入私有数据(Private Data)概念主要是为了解决以下几个关键问题: 1.多设备支…

Docker环境安装并使用Elasticsearch

1、拉取es docker pull elasticsearch:7.10.12、查看镜像 docker images3、启动es docker run -d --name esearch -p 9200:9200 -p 9300:9300 elasticsearch:7.10.14、如果启动ES时出现一下问题 Unable to find image docker.elastic.co/elasticsearch/elasticsearch:7.10.…

从Python代码到pip包:打包Python项目

大家好,在软件开发的世界中,共享和重用代码是至关重要的。Python社区为我们提供了丰富的资源,使得我们能够轻松地与他人分享我们的工作,并从他人的工作中受益。将代码打包成pip包(Python包管理器)是一种常见…

SpringCloudAlibaba:6.2RocketMQ的普通消息的使用

简介 普通消息也叫并发消息&#xff0c;是发送效率最高&#xff0c;使用最多的一种 依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSch…

Web上机:JSP+Servlet+JDBC的交互流程

目录 需求与设计 基础需求&#xff1a; 项目结构&#xff1a; 项目逻辑&#xff1a; 运行图示&#xff1a; 代码实现 Login.jsp InsertServlet SelectServlet Table.jsp user mysql表结构 Web开发技术迭代速度日新月异&#xff0c;对于技术的更新往往是基于底层一…

Kubernetes核心组件Ingress详解

1.1 Ingress介绍 Kubernetes 集群中&#xff0c;服务&#xff08;Service&#xff09;是一种抽象&#xff0c;它定义了一种访问 Pod 的方式&#xff0c;无论这些 Pod 如何变化&#xff0c;服务都保持不变。服务可以被映射到一个静态的 IP 地址&#xff08;ClusterIP&#xff09…

element ui 的el-input输入一个字后失去焦点,需重新点击输入框才能再次输入!

解决方案&#xff1a; 我是form表单嵌套表格&#xff0c;里面的el-input输入框&#xff0c;输入第一个值的时候会突然失去焦点&#xff0c;需要再次点击输入框才能正常输入&#xff0c;原因是table的key值&#xff0c;需要改成正常的index即可&#xff0c;如果你是循环的&…

精益生产培训公司:为企业量身定制的精益解决方案——张驰咨询

在当今竞争激烈的市场环境下&#xff0c;企业要想持续发展&#xff0c;就必须不断寻求转型升级的途径。精益生产作为一种高效的生产管理方式&#xff0c;已经成为众多企业追求的目标。而精益生产培训公司&#xff0c;正是帮助企业实现这一目标的重要力量。 一、精益生产培训的…

Kubernetes可视化界面之DashBoard

1.1 DashBoard Kubernetes Dashboard 是 Kubernetes 集群的一个开箱即用的 Web UI&#xff0c;提供了一种图形化的方式来管理和监视 Kubernetes 集群中的资源。它允许用户直接在浏览器中执行许多常见的 Kubernetes 管理任务&#xff0c;如部署应用、监控应用状态、执行故障排查…

WPF中CommandParameter用法

1. 界面样式 2. XAML中代码部分 <ButtonGrid.Row"0"Grid.Column"1"Command"{Binding BtnClick_Number}"CommandParameter"7"Content"7"Style"{StaticResource BtnStyle_Num}" /> <ButtonGrid.Row"…

产品经理-需求收集(二)

1. 什么是需求 指在一定的时期中&#xff0c;一定场景中&#xff0c;无论是心理上还是生理上的&#xff0c;用户有着某种“需要”&#xff0c;这种“需要”用户自己不一定知道的&#xff0c;有了这种“需要”后用户就有做某件事情的动机并促使达到其某种目的&#xff0c;这也就…

最新dofm飞行棋高阶版,分享情侣版飞行棋高级版和终极版

阿星今天要给大家带来一款甜蜜蜜的小游戏——情侣飞行棋。这不是普通的飞行棋&#xff0c;而是专为情侣设计的&#xff0c;让你们的感情在游戏中升温&#xff0c;擦出更多爱的火花。 准备好了吗&#xff1f;跟着阿星一起&#xff0c;咱们来看看这款软件的魅力所在&#xff01;…

设置虚拟机为静态IP

为什么需要设置静态IP&#xff1a;有时候我们在练习项目的时候&#xff0c;明明已经连接好了虚拟机的ip&#xff0c;某一天突然连接不上了&#xff0c;通过ifconfig命令查看发现虚拟机的ip发生了变化&#xff0c;导致之前做的内容都需要重新布置&#xff0c; 一、设置静态IP …

Python 全栈体系【四阶】(五十三)

第五章 深度学习 十二、光学字符识别&#xff08;OCR&#xff09; 2. 文字检测技术 2.3 DB&#xff08;2020&#xff09; DB全称是Differentiable Binarization&#xff08;可微分二值化&#xff09;&#xff0c;是近年提出的利用图像分割方法进行文字检测的模型。前文所提…

分布式理论--BASE

目录 是什么BASE 与 CAP&#xff0c;ACID 的区别BASE 和 Paxos 类共识算法的区别相关问题 是什么 BASE 理论是对 CAP 理论的进一步扩展主要强调在分布式系统中&#xff0c;为了获得更高的可用性和性能&#xff0c;可以放宽对一致性的要求&#xff0c;是对 CAP 中 AP 方案的一个…

QT 掩码 InputMask

字符规则 如IP输入框可以简单设置为 IP->setInputMask("000.000.000.000");就会有80%的相似度 另外设置掩码用 ui.edtIP->setInputMask(“这里面是字符格式”); ★消除已有的掩码用 ui.edtIP->setInputMask(""); 双引号之间没有空…

数据挖掘实战-基于余弦相似度的印度美食推荐系统

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

Three.js——二维平面、二维圆、自定义二维图形、立方体、球体、圆柱体、圆环、扭结、多面体、文字

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

外汇天眼:野村证券和Laser Digital与GMO互联网集团合作发行日元和美元稳定币

野村控股和Laser Digital将与GMO互联网集团合作&#xff0c;在日本探索发行日元和美元稳定币。GMO互联网集团的美国子公司GMO-Z.com Trust Company, Inc. 在纽约州金融服务部的监管框架下&#xff0c;在以太坊、恒星币和Solana等主要区块链上发行稳定币。GMO-Z.com Trust Compa…