什么是软件的生命周期,以及常见的开发测试模型

目录

一、软件的生命周期 

1、什么是生命周期?

2、每个阶段都要做些什么? 

二、常见的开发模型

1、瀑布模型

2、螺旋模型

3、增量模型、迭代模型 

4、敏捷模型

scrum模型

三个角色

五个会议


一、软件的生命周期 

1、什么是生命周期?

生命周期是指从生命的开始到结束的这一段时间,以人为例,就是生命从孕育开始,中间经历童年、少年、青年、中年、老年,最终到死亡;而软件、产品也是如此,软件的生命周期是从需求的产生,再经过需求的计划、设计,程序开发,程序测试等阶段,最终到软件不再维护时,软件的生命周期也就结束了。

那什么是需求呢?

首先需求分为用户需求软件需求

用户需求:可以理解为是甲方提出的要求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。其需求一般比较简略,往往是一句简单的话。

比如:实现⼀个软件的登录功能,或者你朋友说,帮我写一个作业。那么你朋友就是甲方(当然,作为你的甲方肯定要他给你工资哈)。

软件需求:或者叫功能需求,该需求会详细描述开发人员必须实现的软件功能。软件需求也是测试人员进行测试工作的基本依据。

那么软件需求与用户需求有什么区别?

用户需求:

帮我写一个作业。

软件需求:

需要你和他反复的沟通了解更加详细具体的需求,来制定解决方案

比如:

“什么作业”  “计算机作业”

“什么时候交”  “下周”

.........

最终理解清楚用户需求之后,知道朋友想要你帮他做python作业,那么再去研究其要求,怎么做等等的具体步骤,这就是软件需求

具体的软件测试会做成一份文档,提供给开发人员及测试人员。

了解了需求,我们现在来看一个案例

假如我想要建造⼀套房子,房子的⽣命周期(流程)是什么样的?

因此,我们就得到了软件(开发)的生命周期:

需求分析⸺⸺计划⸺⸺设计⸺⸺编码⸺⸺测试⸺⸺运行维护

2、每个阶段都要做些什么? 

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

计划:对成立的需求执行需求执行计划,比如,多长时间内完成该需求,每个时间段具体完成哪些功能,最后会输出计划等文档。

设计:将需求细化成一个个任务,团队成员各司其职领取任务并进行技术计划,最后输出技术等文档。

编码:开发人员参考需求文档、设计文档、交互图等文件进行代码的编写,最后输出代码等文档。

测试:测试人员需要介入到软件的测试中,参考测试用例对软件进行测试,最后输出测试用例、测试设计与计划、测试报告等文档。

运行维护:测试项目结束后,项目需要进行上线,并对产品进行线上的维护,线上维护主要分为三个方面:修护性维护、完善性维护和预防性维护。

二、常见的开发模型

1、瀑布模型

瀑布模型在软件工程中占有重要地位,是所有其他模型的基础框架。瀑布模型的每⼀个阶段都只执行一次,因此是线性顺序进行的软件开发模式。

而瀑布模型其缺陷也很明显,由于周期太长,产品很迟才能被看到和使用,可能会导致需求/功能过时。并且测试的后置,会使得前面各阶段遗留的风险推迟到测试阶段才被发现,导致项目大面积返工,失去及早修复的机会。而且必须留有足够的时间给测试人员,否则导致测试不充分,将缺陷直接暴露给用户。

因此,瀑布模型适用于需求固定的小项目

2、螺旋模型

螺旋模型在瀑布模型的基础上,每个阶段都引入了风险分析+原型

风险分析很好理解,就是对当前阶段可能存在的问题以及风险进行评估,并进行解决,重新输出文档。那么什么是原型?

原型就是一个需求在完成开发之后的一个模型,我们需要对这个模型来进行考核评估,如果该模型是合理的,那就进行下一阶段,如果不合理,那就回炉重造。

螺旋模型强调严格的全过程分险管控,强调各开发阶段的质量,解决了瀑布模型对许多些规模庞大、复杂度高、分险大的项目的无力问题。但是项目中可能存在的分险性与分险管理人员的技能水平有直接关系,同时也加大了需求人员、资金、时间的增加和投入,可能导致项目的成本过高。

 因此,螺旋模型适用于规模庞大,复杂度高、分险大的项目

3、增量模型、迭代模型 

 

增量开发模型,鼓励用户反馈,在每个迭代过程中,促使开发小组以一种循环的、可预测的方式驱动产品的开发。因此,在这种开发模式下,每一次的迭代都意味着可能有需求的更改、构建出新的可执行软件版本,意味着测试需要频繁进行,测试人员需要与开发人员更加紧密地协作。

迭代模型与增量模型是有区别的,就如下图所示:

增量是逐块建造的概念。先完成一部分功能,发布后,再根据需求增加新的功能再发布,就比如抖音,最开始只有刷视频的功能,再后面就上线了商城购物功能。

迭代是反复求精的概念。把所有功能都进行简化,保留最基础的功能进行上线发布,然后再对已有的功能进行优化完善,是一个不断优化的过程。

这两个模型通常被混合使用,适用于大型的、需求不明确的项目

4、敏捷模型

敏捷模型主要旨在帮助项目快速适应变更请求。因此,敏捷模型的主要目的是促进项目的快速完成。

敏捷模型中有⼀个重要的《敏捷宣言》,宣言内容:

个体与交互重于过程和工具

可用的软件重于完备的文档

客户协作重于合同谈判

响应变化重于遵循计划

简单来说,这几句话的意思就是要注重实在的交流,随机应变,不用循规蹈矩。

敏捷开发有很多种方式,其中scrum是比较流行的一种。

scrum模型

scrum模型是敏捷模型中的一种,又称为迭代式软件增量开发模型。

在scrum模型中主要有三个角色五个重要会议

三个角色

scrum由product owner(产品经理)、scrum master(项⽬经理)和team(研发团队)组成

product owner负责整理user story(用户故事,也就是需求),定义其商业价值,对其进行排序,制定发布计划,对产品负责。

scrummaster负责召开各种会议,协调项目,为研发团队服务。

研发团队则由不同技能的成员组成,通过紧密协同,完成每⼀次迭代的目标,交付产品。 

五个会议

发布计划会议:product owner负责讲解user story,对其进行估算和排序,发布计划会议的产出就是制定出这⼀期迭代要完成的story列表,sprint backlog。

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

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

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

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

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

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

相关文章

JWT安全:弱签名测试.【实现越权绕过.】

JWT安全:假密钥【签名随便写实现越权绕过.】 JSON Web 令牌 (JWT)是一种在系统之间发送加密签名 JSON 数据的标准化格式。理论上,它们可以包含任何类型的数据,但最常用于在身份验证、会话处理和访问控制机制中发送有关用户的信息(“声明”)。…

数据分析与应用-----使用scikit-learn构建模型

目录 一、使用sklearn转换器处理数据 (一)、加载datasets模块中的数据集 (二)、将数据集划分为训练集和测试集 ​编辑 train_test_spli (三)、使用sklearn转换器进行数据预处理与降维 PCA 二、 构…

【Tomcat】Tomcat端口仅允许本地访问设置方法

要设置Tomcat端口仅允许本地访问&#xff0c;可以通过以下两种主要方式实现&#xff1a; 方法一&#xff1a;修改Tomcat配置文件&#xff08;推荐&#xff09; 修改 server.xml 文件 打开Tomcat的配置文件 conf/server.xml&#xff0c;找到 <Connector> 标签&#xff08;…

arcgis字段计算器中计算矢量面的每个点坐标

python脚本 函数 def ExportCoordinates(feat):coors = []partnum = 0partcount = feat.partCountwhile partnum < partcount:part = feat.getPart(partnum)pnt = part.next()while pnt:coors.append("({}, {})".format(pnt.X,pnt.Y))pnt = part.next()if not p…

企业级AI开启落地战,得场景者得天下

文&#xff5c;白 鸽 编&#xff5c;王一粟 这两周&#xff0c;企业级智能体开发平台颇有你方唱罢我方登台的架势。 微软、腾讯、网易等国内外巨头&#xff0c;近期都相继宣布推出了新一代智能体开发平台。相比于两年前&#xff0c;智能体开发的产品逻辑已经有了翻天覆地的变…

探索C++标准模板库(STL):String接口实践+底层的模拟实现(中篇)

前引&#xff1a;上一篇文章小编已经整理出了String的常用接口&#xff0c;梳理了各个接口的功能、参数&#xff0c;如何使用等各种实例。本篇文章将带大家看看String这些接口的实践使用&#xff0c;探索这些接口的实用性&#xff0c;是如何增加代码效率的。在本篇文章的末尾&a…

【模型显著性分析】配对样本 t 检验

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 前言 t t t 检验配对样本 t t t 检验&#xff08;适用于相关组&#xff09;代码论文描…

商旅平台排名:十大商旅服务平台解析

商旅平台排名&#xff1a;十大商旅服务平台解析 在企业降本增效的关键转型期&#xff0c;商旅管理正成为优化运营成本与提升管理效能的核心场景。如何在保障出行体验的同时实现差旅成本精细化管控、管理流程智能化&#xff0c;成为越来越多企业的战略焦点。随着AI技术在数据洞…

题海拾贝:P1208 [USACO1.3] 混合牛奶 Mixing Milk

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞&#xff0c;关注&am…

每天掌握一个Linux命令 - ab(Apache Benchmark)

Linux 命令工具 ab 使用指南 一、工具概述 ab&#xff08;Apache Benchmark&#xff09; 是 Apache 官方提供的开源压力测试工具&#xff0c;用于衡量 Web 服务器的性能。它通过模拟多并发请求&#xff0c;测试服务器在高负载下的响应速度、吞吐量和稳定性&#xff0c;常用于…

AI的“空间盲症“

<------最重要的是订阅“鲁班模锤”------> 当我们看到一张照片时&#xff0c;大脑会自动分析其中的空间关系——哪个物体在前&#xff0c;哪个在后&#xff0c;左边是什么&#xff0c;右边是什么。但对于当今最先进的AI系统来说&#xff0c;这种看似简单的空间理解却是…

数据拟合实验

实验类型&#xff1a;●验证性实验 ○综合性实验 ○设计性实验 实验目的: 进一步熟练掌握最小二乘多项式拟合算法&#xff0c;提高编程能力和解决拟合问题的实践技能。 实验内容&#xff1a; 1 对下列数据&#xff0c;求解最小二乘抛物线f(x)Ax2BxC x -3 -1 1 3 y 15 5 …

系统思考:心智模式与业务创新

在最近的项目交付讨论中&#xff0c;我频繁听到一个词&#xff1a;“缺合适的人”。这让我陷入了深思&#xff1a;我们是否还在传统的生产力概念&#xff1f;纳瓦尔提出的三种杠杆&#xff1a;劳动力、资本、零边际成本产品。在当今这个信息化、全球化的商业世界中&#xff0c;…

python分步合并处理excel数据

文章目录 概要整体架构流程技术名词解释技术细节小结概要 客户需求 1. 背景与目标 用户需要将三个包含农业实验数据的Excel表格(AK、AN、AP)合并为一个结构化数据集,用于后续分析。每个表格包含相同类型的字段(如对照组与PSB处理组的样本数、均值、标准差),但需通过字…

Python爬虫实战:研究PyQuery库相关技术

1. 引言 1.1 研究背景与意义 随着互联网的快速发展,网络上的数据量呈爆炸式增长。如何高效地从海量的网页数据中提取有价值的信息,成为当前信息技术领域的一个重要研究方向。网络爬虫作为一种自动获取网页内容的程序,能够按照一定的规则,自动地抓取万维网信息,在搜索引擎…

深度学习---注意力机制(Attention Mechanism)

一、核心概念与发展背景 注意力机制是深度学习中模拟人类注意力选择能力的关键技术&#xff0c;旨在从海量信息中筛选关键特征&#xff0c;解决长序列信息处理中的瓶颈问题&#xff08;如RNN的梯度消失&#xff09;。其核心思想是&#xff1a;对输入序列的不同部分分配不同权重…

Jenkins分配对应项目权限与用户管理

在日常开发过程中经常会出现用户和权限管理问题&#xff0c;没有配置trigger时&#xff0c;通常需要我们手动构建&#xff0c;但此时前端和后端的朋友没有build权限&#xff0c;导致每次dev环境测试都需要麻烦我们手动去构建&#xff0c;消息传达不及时则会降低开发效率。 现有…

XCTF-web-file_include

解析 <?php highlight_file(__FILE__); // 高亮显示当前PHP文件源代码 include("./check.php"); // 包含检查文件&#xff08;可能包含安全过滤逻辑&#xff09;if(isset($_GET[filename])) { // 检查是否传入filename参数$filename $_GET[f…

matlab全息技术中的菲涅尔仿真成像

matlab全息技术中的菲涅尔仿真成像程序。 傅里叶法&#xff08;重建距离得大&#xff09;/Fresnel.m , 545 傅里叶法&#xff08;重建距离得大&#xff09;/FresnelB.m , 548 傅里叶法&#xff08;重建距离得大&#xff09;/Fresnel_solution.m , 1643 傅里叶法&#xff08;重…

CS144 - LAB0

CS144 - Lab 0 telnet 发送请求 如图&#xff0c;很简单&#xff0c;但是注意输入时间太久会超时 发邮箱 首先我们需要用命令行去发邮箱&#xff0c;这里我用企业微信邮箱给自己的 qq 邮箱发送~ 整个命令如下&#xff01; 对于其中的参数&#xff0c;其实从英文就可以看出来…