软件开发模型学习整理——瀑布模型

一 前言

       从参加工作至今也完整的跟随过一整个项目的流程了,从中也接触到了像瀑布模型,迭代模型,快速开发模型等。介于此,基于自己浅薄的知识对瀑布模型进行整理学习以及归纳。

二 瀑布模型简介

2.1 瀑布模型的定义和特点

定义:瀑布模型是一种软件开发过程模型,它将软件开发的过程划分为几个有序的阶段,每个阶段都有明确的输入和输出,以及质量保证的标准。

特点:1 严格的阶段划分和顺序性

           2 每个阶段的输出成果必须经过严格的审核和验证,才能进入下一个阶段

2.2 瀑布模型的发展历史和应用领域

瀑布模型(英语:Waterfall Model),亦称瀑布模式,是于1970年由温斯顿·W·罗伊斯等人所发展之系统发展生命周期的模型。该模型将系统发展的过程,大致区分为四个阶段:分析、设计、实现、测试,其并且明确的定义每一阶段中的工作。当完成一个阶段的工作以后,才会进入下一个阶段的工作。而依照该模型的系统发展的过程,即如同瀑布一般。(取自网络)

三 瀑布模型的各个阶段及其任务和文档

3.1 需求分析阶段

总所周知,业务是公司的命脉,只有满足了用户的需求,产品才会有更好的推广,换句话来说,公司的每一个齿轮都是为了业务(客户)服务的,只有满足了客户,公司才能发展前行。

需求分析阶段:这一部分需要完成产品需求规格书的编写:包括但不限于产品框图,产品交付信息,产品功能性需求,产品非功能需求,性能需求,以及风险等。

3.2 设计阶段

设计阶段:根据需求规格书,设计软件的结构和架构,编写软件方案规格书为后续开发做足准备

软件方案规格书应包含:系统设计的目标,关键的功能,关键性能,运行条件,系统总体架构,系统边界图,系统逻辑架构,子系统视图,系统功能划分,系统部署架构(数据架构,存储,接口等),非功能类的设计等

3.3 实现阶段

通俗来说,基于软件方案规格书,写代码,并进行自测。

3.4 测试阶段

测试阶段的任务:对软件进行集成,编写测试用例,系统测试,验收测试。检查软件的功能和性能,编写测试报告。

文档一般包括:测试计划,测试方案,测试数据,测试报告等。

测试通过后,进行再进行实机测试

注:分享一个测试的框架:unitytest

3.5 维护阶段

维护阶段:软件的运营和维护,修复错误以及缺陷,更新版本,编写维护文档等。

文档常见包括:维护计划,维护报告,版本控制等。

四 瀑布模型的优缺点以及客户需求

1、瀑布模型有以下优点:

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

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

  3)可在迭代模型中应用瀑布模型。

2、瀑布模型有以下缺点:

  1)在项目各个阶段之间反馈较少。

  2)项目周期的后期结果才会较明显。

  3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。

3、瀑布模型的客户需求:

       尽管瀑布模型招致了很多批评,但是它对很多类型的项目而言依然还是有效的,如果正确使用,可以节省大量的时间。对于项目而言,是否使用这一模型主要取决于是否能理解客户的需求以及在项目的进程中这些需求的变化程度,对于经常变化的项目而言,瀑布模型可能就会有些影响效率了,对于这种情况,可以考虑其他的架构来进行项目管理,比如螺旋模型。

五 瀑布模型与其他软件开发模型比较与选择

​​​​​瀑布模型是一种预见性的开发方法,假设需求在项目开始时就已经明确且不会有太大变化,因此可以按照固定的顺序进行各个阶段的工作,每个阶段都有明确的输入输出,以及质量保证的标准。 

其他软件开发模型,如:敏捷模型等,是一些适应性开发方法,他们认为需求是不断变化的,因此需要灵活调整开发过程,采用迭代,增量,反馈等机制,以适应需求的变化以及用户需求。

瀑布模型与其他模型选择取决于项目的特点和环境,例如:环境规模,复杂度,风险,稳定性,可预见性等。

一般来说,瀑布模型适用于需求明确,稳定,低风险的项目。其他的开发模型一般适用于需求模糊,变化频繁,高风险的项目。

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

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

相关文章

这应该是最全的大模型训练与微调关键技术梳理

作为算法工程师的你是否对如何应用大型语言模型构建医学问答系统充满好奇?是否希望深入探索LLaMA、ChatGLM等模型的微调技术,进一步优化参数和使用不同微调方式?现在我带大家领略大模型训练与微调进阶之路,拓展您的技术边界&#…

动态规划习题

动态规划的核心思想是利用子问题的解来构建整个问题的解。为此&#xff0c;我们通常使用一个表格或数组来存储子问题的解&#xff0c;以便在需要时进行查找和使用。 1.最大字段和 #include <iostream> using namespace std; #define M 200000int main() {int n, a[M], d…

计算机网络高频判断题

&#xff08; 对&#xff09;1&#xff0e;目的地相同的数据报可以经过不同路线到目的地。 &#xff08; 错&#xff09;2&#xff0e;所有的帧都必须以标志字段开头和结尾。 &#xff08;错 &#xff09;3. 虚电路方式下每个分组要带目的站和发送站地址。 &#xff08;错 &…

死锁 + 条件变量 + 生产消费者模型

文章目录 死锁如何解决死锁问题呢&#xff1f;避免死锁 同步概念1.快速提出解决方案 --- 条件变量原理接口2. CP问题 --- 理论3. 快速实现CP 死锁 现象 &#xff1a; 代码不会继续往后推进了 问题 一把锁有没有可能产生死锁呢&#xff1f; 有可能 线程第一次申请锁成功&…

【node】使用 sdk 完成短信发送

实现效果 过程 流程比较复杂&#xff0c;加上需要实名认证&#xff0c;建议开发的时候先提前去认证号账号&#xff0c;然后申请模版也需要等认证。 源码 我看了新版的sdk用的代码有点长&#xff0c;感觉没必要&#xff0c;这边使用最简单的旧版的sdk。 https://github.com/…

智能优化算法应用:基于秃鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于秃鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于秃鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.秃鹰算法4.实验参数设定5.算法结果6.参考文献7.MA…

基于ssm电子资源管理系统源码和论文

idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 环境&#xff1a; jdk8 tomcat8.5 基于ssm电子资源管理系统源码和论文758 摘要 随着互联网技术的高速发展&#xff0c;人们生活的各方面都受到互联网技术的影响。现在人们可以通过互联网技术就能实现不出家门…

在 Linux 系统中安装并设置 kubectl

准备开始 kubectl 版本和集群版本之间的差异必须在一个小版本号内。 例如&#xff1a;v1.29 版本的客户端能与 v1.28、 v1.29 和 v1.30 版本的控制面通信。 用最新兼容版的 kubectl 有助于避免不可预见的问题。 在 Linux 系统中安装 kubectl 在 Linux 系统中安装 kubectl 有…

jmeter,http cookie管理器

Http Cookie管理器自动实现Cookie关联的原理&#xff1a; (默认:作用域在同级别的组件) 一:当Jmeter第1次请求服务器的时候,如果说服务器有通过响应头的Set-Cookie有返回Cookie,那么Http Cookie管理器就会自动的保存这些Cookie的值。 二&#xff1a;当Jmeter第2-N次请求服务器的…

Redis 过期删除策略、内存回收策略、单线程理解

不知从何开始Redis的内存淘汰策略也开始被人问及&#xff0c;卷&#xff01;真的是太卷了。难不成要我们去阅读Redis源码吗&#xff0c;其实问题的答案&#xff0c;在Redis中的配置文件中全有&#xff0c;不需要你阅读源码、这个东西就是个老八股&#xff0c;估计问这个东西是想…

Golang八股文面试题

1、golang 中 make 和 new 的区别&#xff1f;&#xff08;基本必问&#xff09; 1.make和new都是golang用来分配内存的內建函 数&#xff0c;且在堆上分配内存&#xff0c; 2.make 即分配内存&#xff0c;也初始化内存。 3.new只是将内存清零&#xff0c;并没有初始化内存。 …

HNU-计算机网络-实验3-应用层和传输层协议分析(PacketTracer)

计算机网络 课程基础实验三应用层和传输层协议分析&#xff08;PacketTracer&#xff09; 计科210X 甘晴void 202108010XXX 【给助教的验收建议】 如果是助教&#xff0c;比起听同学读报告&#xff0c;更好的验收方式是随机抽取一个场景&#xff08;URL/HTTPS/FTP&#xff09…

Vue3-12- 【v-for】循环一个整数

说明 v-for 这个东西就很神奇&#xff0c;可以直接循环一个整数&#xff0c;而且循环的初始值是从1 开始。使用案例 <template><div v-for"(num,indexB) in 6" :key"indexB">【索引 {{ indexB }}】 - 【数字 {{ num }}】 </div></t…

直播传媒公司网站搭建作用如何

直播已然成为抖快等平台的主要生态之一&#xff0c;近些年主播也成为了一种新行业&#xff0c;相关的mcn机构直播传播公司等也时有开业&#xff0c;以旗下主播带来高盈利&#xff0c;而在实际运作中也有一些痛点难题&#xff1a; 1、机构宣传展示难 不少散主播往往会选择合作…

湖农大邀请赛shell_rce漏洞复现

湖农大邀请赛 shell_rce 复现 在 2023 年湖南农业大学邀请赛的线上初赛中&#xff0c;有一道 shell_rce 题&#xff0c;本文将复现该题。 题目内容&#xff0c;打开即是代码&#xff1a; <?phpclass shell{public $exp;public function __destruct(){$str preg_replace…

Vue中this.$nextTick的执行时机

一、Vue中this.$nextTick的执行时机&#xff0c;整体可分为两种情况&#xff1a; 第一种&#xff1a;下一次 Dom 更新之后执行&#xff08;即等待DOM更新结束之后&#xff0c;执行nextTick的延迟回调函数&#xff09;&#xff1b; 第二种&#xff1a;页面挂载后 &#xff08;m…

KaiwuDB × 国网山东综能 | 分布式储能云边端一体化项目建设

项目背景 济南韩家峪村首个高光伏渗透率台区示范项目因其所处地理位置拥有丰富的光照资源&#xff0c;该区域住户 80% 以上的屋顶都安装了光伏板。仅 2022 年全年&#xff0c;光伏发电总量达到了百万千瓦时。 大量分布式光伏并网&#xff0c;在输出清洁电力的同时&#xff0c…

强化学习中训练阶段和测试阶段的区别,在代码上是怎么体现的

强化学习中训练阶段和测试阶段的区别&#xff0c;在代码上是怎么体现的 在强化学习中&#xff0c;训练阶段和测试阶段有一些关键的区别。这主要涉及到探索与利用的平衡、环境交互、以及模型参数更新等方面。以下是训练阶段和测试阶段的主要区别以及在代码中可能如何体现&#…

LeetCode 2454. 下一个更大元素 IV:双单调栈

【LetMeFly】2454.下一个更大元素 IV&#xff1a;双单调栈 力扣题目链接&#xff1a;https://leetcode.cn/problems/next-greater-element-iv/ 给你一个下标从 0 开始的非负整数数组 nums 。对于 nums 中每一个整数&#xff0c;你必须找到对应元素的 第二大 整数。 如果 num…

什么是PHP的反射(Reflection)?

PHP的反射&#xff08;Reflection&#xff09;是一组用于在运行时获取和操作PHP代码结构信息的特性和类。反射API允许您分析和操作类、方法、属性、参数等元素&#xff0c;使您能够在运行时检查和修改PHP代码的结构。反射通常用于以下一些情况&#xff1a; 自动化工具&#xff…