软件开发的各类模型

news2024/12/24 3:47:01

目录

软件的生命周期

常见开发模型

瀑布模型

螺旋模型

增量模型、迭代模型

敏捷模型

Scrum模型

常见测试模型

V模型

W模型(双V模型)


软件的生命周期

  软件的生命周期包括需求分析,计划,设计,编码,测试,运行维护等阶段。

需求分析:分析用户需求是否合理,分别从市场需求,技术等方面进行分析。该阶段会输出需求文档。

计划:对成立的需求进行具体分析,包括多长时间完成,每一阶段需要完成哪些功能等。给阶段会输出计划文档。

设计:将需求细化成一个个任务,团队成员各司其职领取任务并进行技术设计,包括进行架构设计,接口设计,采用的技术等。该阶段会输出技术文档。

编码:即开发人员参考文档,设计文档,交互图等文件进行代码编写。

测试:测试人员参考测试用例对软件进行测试。会输出测试用例,测试报告等文档。

运行维护:项目测试结束后,进行上线,并对产品进行线上的维护。包括修复性维护,完善性维护,预防性维护等。

    修复性维护:对项目中未发现的问题进行修复。

    完善性维护:对功能进行完善。

    预防性维护:为了避免产品在线上出现一些不可预料的问题,进行一些防护的手段。


常见开发模型

瀑布模型

瀑布模型的每一个阶段都只执行一次,因此是线性顺序进行的软件开发模式。

  瀑布模型的风险在于在需求引入的一个缺陷要到测试阶段甚至更后的阶段才发现,通常会导致前面的工作大面积返工。前期阶段未发现的错误会扩散到后面的阶段,而在后面阶段发现这些错误时,可能已经很难回头修正,从而导致项目的失败。但目前很多企业还是沿用了瀑布模型的思想,并在这个基础上做出自己的修改。

优点:强调开发的阶段性。线性结构,每个阶段只执行一次。是其他框架的基础。

缺点

      测试后置:1、前面的风险推迟到测试阶段才被发现,导致大面积返工,失去了及早修复的机会。                2、必须留有足够的时间给测试活动,否则测试不充分会将缺陷直接暴漏给用户。

周期太长,产品很迟才能被看到和使用,可能会导致需求/功能过时。

适用场景:需求固定的小项目。

螺旋模型

  一般在软件开发初期阶段需求不是很明确时,采用渐进式的开发模式。螺旋模型是渐进式开发模型的代表之一。螺旋模型中各个阶段都引入了风险分析 + 原型。引入的目的是减少各阶段遗留的风险问题,避免把问题留到后面的阶段。

这种模式不允许有一段独立的测试时间和阶段,测试必须跟随开发的迭代而迭代。

优点:强调严格的全过程风险管理。强调各开发阶段的质量。增加风险分析和原型。

缺点:项目中可能存在的风险性与管理人员的技能水平有直接关系。

           需求人员,资金,时间的增加和投入,可能会导致项目的成本太高。

适用场景:规模庞大,复杂度高,风险大的项目。

增量模型、迭代模型

  

增量模型强调将一个大的需求转变成一个个小需求。对于每个不同的小需求叫做增量。对于每个增量分别进行编码,测试,发布等流程,独立开发上线。在这个过程中不断完善功能。

迭代模型强调先上线一个基础版本,后期再继续迭代优化上线。如先发布基础版本,在此基础上发布优化版本1,再发布优化版本2....

迭代模型和增量模型现在已经不会单独去使用,而是配合着去使用。

适⽤场景:⼤型项⽬,需求不明确

敏捷模型

若在项目开发阶段用户变更了需求我们该怎们办呢?

敏捷模型可以帮我们解决这个问题。敏捷模型中需求可以被分为许多可以增量开发的小部分。每个增量部分都是在迭代中开发的。所以敏捷模型又称为增量迭代开发模型

敏捷模型有一个《敏捷宣言》:

1、个体与交互重于过程与工具:不要让流程过于复杂。强调高效的沟通

2、可用的软件重于完备的文档:强调轻文档,文档不应该作为工作验收的标准

3、客户协作重于合同谈判:主动及时了解当下需求

4、响应变化重于遵循计划:能够主动迎接变化

总结出敏捷模型的四个特点:轻文档,轻流程,重目标,重产出

Scrum模型

   Scrum模型是敏捷模型中的一种,在scrum模型中,主要有三个角色五个重要会议

三个角色:product owner (产品经理): 负责整理收集用户的需求,定义商业价值,指定计划,对产品负责。产出软件需求文档。

scrum master(项目经理):负责召开各种会议,协调项目,为研发团队服务。

team(研发团队):由不同技能的成员组成,包括前后端开发,测试,交互等人员。完成每一次迭代的目标,交付产品。

五个重要会议

产品负责人负责整理用户需求(user story),形成需求列表(product backlog)。

发布计划会议:产品负责人讲解用户需求,对其进行估算和排序,发布计划会议的产出就是指定出这一期迭代要完成的story列表。

迭代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,每个任务都有明确的负责人,并完成工时的初估计。

每日例会:每天scrum master 召集站立会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。

演示会议:迭代结束后,召开演示会议,相关人员都参加,团队负责向大家展示本次迭代取得的成果。期间大家的反馈记录下来,形成新的story。

回顾会议:项目团队对本期迭代进行总结,制定改进计划,下一次迭代继续改进,以达到持续改进的效果。


常见测试模型

V模型

V模型中强调测试过程中存在不同类型的测试。

优点:明确的标注了测试过程中存在不同类型的测试,并且清楚地描述了这些测试阶段和开发过程中期间各阶段的对应关系,有效提升测试的质量和效率。

V模型指出:

   1、单元和集成测试应检测程序的执行是否满足软件设计的要求。

   2、系统测试应检测系统功能、性能的质量是否达到系统要求的指标。

   3、验收测试确定软件的实现是否满足用户需要。

缺点:仅仅把测试作为在编码后的一个阶段,未在需求阶段就接入测试。缺点如瀑布模型。

W模型(双V模型)

W模型增加了软件各开发阶段中应同步进⾏的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表⽰出了测试与开发的并⾏关系。

特点:测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进⾏的。

优点
• 有利于尽早地全⾯的发现问题。例如,需求分析完成后,测试⼈员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项⽬难度和测试⻛险,及早制定应对措施,显著减少总体测试时间,加快项⽬进度。

缺点
• 需求、设计、编码等活动被视为串⾏的;
• 测试和开发活动也保持着⼀种线性的前后关系,上⼀阶段完全结束,才可正式开始下⼀个阶段⼯
作。
• 重流程,⽆法⽀持敏捷开发模式。对于当前软件开发复杂多变的情况,W模型并不能解除。

以上,关于软件开发的各类模型,希望对你有所帮助。

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

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

相关文章

ElasticSearch学习笔记一:简单使用

一、前言 该系列的文章用于记录本人从0学习ES的过程,首先会对基本的使用进行讲解。本文默认已经安装了ES单机版本(当然后续也会有对应的笔记),且对ES已经有了相对的了解,闲话少叙,书开正文。 二、ES简介 …

C++笔记---异常

1. 异常的概念 1.1 异常和错误 异常通常是指在程序运行中动态出现的非正常情况,这些情况往往是可以预见并可以在不停止程序的情况下动态地进行处理的。 错误通常是指那些会导致程序终止的,无法动态处理的非正常情况。例如,越界访问、栈溢出…

python opencv3

三、图像预处理2 1、图像滤波 为图像滤波通过滤波器得到另一个图像。也就是加深图像之间的间隙,增强视觉效果;也可以模糊化间隙,造成图像的噪点被抹平。 2、卷积核 在深度学习中,卷积核越大,看到的信息越多&#xff0…

ENSP作业——小型园区网

题目 根据上图,可得需求为: 1.配置交换机上的VLAN及IP地址。 2.设置SW1为VLAN 2/3的主根桥,设置SW2为VLAN 20/30的主根桥,且两台交换机互为主备。 3.可以使用super vlan。(本次实验中未使用) 4.上层通过静…

解决 Vue3、Vite 和 TypeScript 开发环境下跨域的问题,实现前后端数据传递

引言 本文介绍如何在开发环境下解决 Vite 前端(端口 3000)和后端(端口 80)之间的跨域问题: 在开发环境中,前端使用的 Vite 端口与后端端口不一致,会产生跨域错误提示: Access to X…

Windows系统中Oracle VM VirtualBox的安装

一.背景 公司安排了师带徒,环境搭建问题一直是初级程序员头疼的事情,我记录一下这些基础的内容,方便初学者。大部分开发者的机器还是windows系统,所以写了怎么安装。 二.版本信息及 操作系统:windows11 家庭版…

uniapp 集成 uview

注意:HBuildX新建项目时必须选择vue2版本,vue3会不支持uview 下载安装方式: uview安装网站:uView2.0重磅发布,利剑出鞘,一统江湖 - DCloud 插件市场 配置: 1.安装sass插件 // 安装sass npm i …

24.11.12 JavaScript2

prompt() confirm() 这些函数 会阻止js解析器(js解析器执行引擎 读取运行js) 执行 不要使用 2history对象 历史记录对象 对应浏览器前进后退按钮 history 在历史记录里 back 前进 forward 后退go 0当前文档 负数 后退n个文档 正数 前进n个文档<!…

STM32cubemx+Proteus仿真和keil5联合调试

前面两步 STM32cubemx生成代码 https://blog.csdn.net/weixin_52733843/article/details/143637304 Proteus新建工程 https://blog.csdn.net/weixin_52733843/article/details/143578853 1 *Proteus仿真联合调试* 在Proteus中&#xff0c;双击STM32F103C6芯片&#xff0c…

信号的解析

信号 1.概念2.接口3.信号产生的过程1.信号的产生1.1信号的产生方式 2.信号的处理3.信号的保存阻塞信号 4.信号集操作函数 1.概念 信号量&#xff08;Semaphore&#xff09;是一个用于多线程或多进程同步的变量。它是操作系统提供的一种同步机制&#xff0c;用于控制多个线程或…

linux-c 使用c语言操作sqlite3数据库-1

一、练习目标 1、目标 1、使用sqlite3_exec执行查询语句&#xff0c;并将查询结果insert到链表中&#xff0c;最后打印链表的内容&#xff1b; 2、使用sqlite3_get_table执行查询语句&#xff0c;并以key&#xff1a;value的方式&#xff0c;打印查询结果。 2、环境准备 2.1、…

软件需求规格书评审报告,系统需求设计申评审,代码和测试过程评审报告,软件各类资质评审资料(word原件)

1.需求规格说明评审报告 2.系统设计评审报告 3.编码与测试评审报告 软件全套资料部分文档清单&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产品需求规格说明书&#xff0c;需求调研计划&#xff0c;用户需求调查单&#xff0…

flink sql同步mysql数据表到mysql

1. 关闭防火墙和selinux systemctl stop firewalld systemctl disable firewalld systemctl status firewalld2.安装java8 yum list java-1.8* yum install java-1.8.0-openjdk* -yjava -version3.下载和部署mysql yum -y install wget wget https://dev.mysql.com/get/Down…

【分布式事务】二、NET8分布式事务实践: DotNetCore.CAP 框架 、 消息队列(RabbitMQ)、 多类型数据库(MySql、MongoDB)

介绍 DotNetCore.CAP简称CAP, [CAP]是一个用来解决微服务或者分布式系统中分布式事务问题的一个开源项目解决方案, 同样可以用来作为 EventBus 使用,CAP 拥有自己的特色,它不要求使用者发送消息或者处理消息的时候实现或者继承任何接口,拥有非常高的灵活性。我们一直坚信…

vue3项目中内嵌vuepress工程两种实现方式

目录 一、示例二、创建vuepress工程三、配置vue项目的打包命令四、 通过iframe嵌套实现过程五、 将vue项目打包&#xff0c;启本地服务运行index.html 一、示例 vue项目&#xff0c;点击用户手册按钮&#xff0c;通过a标签跳转到vuepress框架搭建的页面。点击后者通过路由跳转…

智能座舱多屏项目,中控屏切换语言,后排屏闪黑屏问题

1. 背景 智能座舱多屏项目&#xff0c;中控屏切换语言&#xff0c;后排屏闪黑屏问题 2. 详细分析过程 通过events log查看activity的生命周期&#xff1a;adb shell logcat -b events com.android.rwhvac.view.behind.BehindActivity2 : displayId 2 副屏app com.android.…

多商户中英双语电商系统设计与开发 PHP+mysql

随着全球电商市场的扩展&#xff0c;多商户平台成为了越来越多商家参与全球贸易的重要方式。为了适应不同语言用户的需求&#xff0c;尤其是中英双语用户的需求&#xff0c;设计一个支持中英双语的电商系统显得尤为重要。本文将重点探讨如何设计一个多商户中英双语电商系统&…

Ansys Zemax | 手机镜头设计 - 第 4 部分:用LS-DYNA进行冲击性能分析

该系列文章将讨论智能手机镜头模组设计的挑战&#xff0c;从概念和设计到制造和结构变形分析。本文是四部分系列中的第四部分&#xff0c;它涵盖了相机镜头的显式动态模拟&#xff0c;以及对光学性能的影响。使用Ansys Mechanical和LS-DYNA对相机在地板上的一系列冲击和弹跳过程…

【JavaEE初阶】多线程上部

文章目录 本篇目标&#xff1a;一、认识线程&#xff08;Thread&#xff09;1.概念&#xff1a;2.创建线程 二、Thread 类及常见方法2.1 Thread 的常见构造方法2.2 Thread 的几个常见属性2.3 启动⼀个线程 - start()2.4 中断⼀个线程2.5 等待⼀个线程 - join()2.6 获取当前线程…

丹摩征文活动|智谱AI引领是实现文本可视化 - CogVideoX-2b 部署与使用

文章目录 前言一、DAMODEL平台特性二、创建CPU云实例三、CogVedioX介绍四、DAMODEL一键部署CogVideoX1. 创建丹摩实例(参考上述介绍)2. 配置环境和依赖3. 模拟与配置文件4. 开始运行4.1 调试4.2 webUI4.3 端口映射 前言 DAMODEL&#xff08;丹摩智算&#xff09;是一款专为满足…