软件开发流程的演变:敏捷开发(XP、SCRUM)、DevOps(CI/CD)的概念

news2024/11/24 22:25:10

一、软件开发流程的演变

在这里插入图片描述

二、传统瀑布模型

1.瀑布模型特点

软件开发的各项活动严格按照线性方式进行
当前活动接受上一项活动的工作结果
当前活动的工作结果需要进行验证

2.瀑布模型优缺点

优点
开发的各个阶段比较清晰
强调早期计划及需求调查
适合需求稳定的产品开发
缺点
由于开发模型是线性的,增加了开发的风险
早期的错误可能要等到开发后期的阶段才能发现
在这里插入图片描述

三、敏捷开发模型

(一)XP - 极限编程(开发测试的要求很高,才能实施)

在这里插入图片描述

1.编程方法维度:简单设计、结对编程、测试驱动开发、重构

简单设计:只要满足用户当下的需求,不需要太过高深完美的设计,
结对编程:两个人一起编程。同事A关注代码的细节,同事B关注整体的结构,且同事B对同事A进行代码的评审
测试驱动开发:先写好测试用例代码,再编写程序代码,使程序代码在测试代码里测试通过
重构:在“简单设计”上的优化。减少重复部分,增加可服用部分

2.小组实践维度:代码集体所有、编码标准、稳定高速的步伐、隐喻、持续集成

代码集体所有:所有人都可以访问修改代码
持续集成:“集成”的意思是指把多个人的代码合在一起。每次集成都需要进行一个自动化的构建来进行验证,其中包含自动化的测试(构建:把当前阶段的代码变成一个用户可使用的产品,如用户可安装的app文件)
隐喻:以一个比喻的手法形象的描述需求,尽可能让团队的每个人都听懂。

3.交付和管理维度:小规模发布、计划游戏、完整的团队、现场客户

小规模发布:一般1~3周(最常见的是2周)发布一个用户可以使用的版本
计划游戏:计划现在要做哪些工作,之后要做哪些工作
完整的团队、现场客户:开发和客户占据主要地位,测试主要通过自动化来实现

(二)SCRUM

在这里插入图片描述
SPRINT:冲刺,一个迭代的周期,一般为2~4周(2周最常见),期间会进行每日站会
产品BACKLOG:以列表的形式展示项目所有需求的概要,并按照优先级排序
SPRINT计划会议:计划实现哪些优先级最高的需求
SPRINT BACKLOG:最后决定的这个迭代里要实现的需求
潜在可交付产品增量:一个迭代完成了,会提交出一个完成了在这个迭代里需要完成的需求的产品,即包含了此次迭代的需求增量

注:
1.在每一次迭代周期结束后,还会有一个SPRINT评审会议,该会议展示此次迭代完成的功能
2.在评审会议之后,在下一个SPRINT计划会议之前,还会再开一个SPRINT的回顾会议,对一整个迭代周期去进行复盘,哪些地方执行的好,哪些地方执行的不好,后面如何改进
3.第1个迭代周期的测试阶段,可能会与第2个迭代周期的需求分析阶段重合

(三)敏捷模型总结

增量迭代
小步快跑(一般2周一个迭代)

四、DevOps开发模型

开发、测试、运维需要紧密的合作,才能真正的做到DevOps
在这里插入图片描述

1.DevOps 生命周期

持续开发
持续测试
持续集成
持续部署
持续监控
在这里插入图片描述

2.DevOps 对发布的影响

减少变更范围
加强发布协调
自动化

3.CI/CD

持续集成(Continuous integration,缩写为CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
持续交付(Continuous delivery,缩写为 CD),是一种软件工程手法,让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以发布的状况。它的目标在于让软件的构建、测试与发布变得更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。

4.CD 与 DevOps 的关系

DevOps的范围更广,是软件交付过程所涉及的多个团队之间的合作,并且将软件交付的过程自动化。
持续交付是一种自动化交付的手段,关注点在于将不同的过程集中起来,并且更快、更频繁地执行这些过程。
DevOps可以是持续交付下的一个产物,持续交付的成果直接汇入 DevOps模型。

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

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

相关文章

权限获得第一步

根据题目提示flag就是某个密码,并且flag不是常规形式 打开文件后看起来是一个linux的用户密码段 反正最后两个最可疑了,linux中密码的存储形式是MD5加密 第一个数据解码失败 第二个密文解密成功 果然不是常规形式,常规的flag一本都是是英文加…

在Linux系统下使用Ventoy制作Windows安装U盘

文章目录 介绍Ventoy 简介PE 简介 制作 Ventoy U 盘安装 Ventoy将 Ventoy 安装到 U 盘 制作 PE 辅助系统下载优启通下载操作系统 ISO 镜像 安装操作系统准备工作安装系统 介绍 Ventoy 简介 Ventoy 是一个制作可启动 U 盘的开源工具。有了 Ventoy ,就无需反复地格式…

IDE/记录VS2015WinSDK安装过程中增删的系统组件和环境变量

文章目录 概述看看"干净OS环境"安装VS软件后系统目录变化环境变量变化新增的组件程序 Qt及其VS插件安装后安装WinSDK后安装Win10SDK前安装WinSDK后 卸载VS2015其他软件的影响 概述 本文旨在,通过记录干净OS环境下 VS2015、Qt、WinSDK 软件安装前后&#…

使用mount临时挂载出现mount error(13): Permission denied

问题报错 mount error(13): Permission denied Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) //报错信息,提示账号密码错误,其实并不是 添加secntlmssp参数即可;中途可能需要等一些时间 mount -t cifs -o usernamelisi,p…

在低配Windows上部署原版llama.cpp

现在大语言模型的部署,通常都需要大的GPU才能实现,如果是仅仅想研究一下,大语言模型的算法,我们是很想能够直接在我们的工作电脑上就能直接运行的,llama.cpp就是很好的实现。 LLaMa.cpp使用int4这种数值格式&#xff…

【js步骤引导】基于jquery实现步骤引导进度条效果(附源码)

【写在前面】 步骤引导条这个功能其实在我们很多业务系统中是最常见的,尤其是快递订单、审批流程、上传资源等涉及步骤操作的业务中广泛应用,因此今天我也详细的和大家讲讲如何基于jquery去实现步骤引导效果,支持上一步下一步的切换。 【涉…

【云计算】HBase表操作

文章目录 前言一、shell创建二、操作 前言 HBase是一个分布式、可扩展的、非关系型的NoSQL数据库。它是建立在Hadoop HDFS上的一个开源的数据库管理系统。HBase的设计目标是提供高可靠性、高可扩展性、高性能、高延迟、高容错性和高可用性。 HBase是一种面向列的数据库&#…

【多智能体合作】Self-Organized Group for Cooperative Multi-agent Reinforcement Learning

【多智能体合作】Self-Organized Group for Cooperative Multi-agent Reinforcement Learning 本文提出了一个自主分组机制,这种机制具有 选举指挥官(CE) 和 消息总结(MS) 的功能。 在 CE 中,每隔 T个时间步…

【无标题】机器学习——朴素贝叶斯

朴素贝叶斯(Naive Bayesian algorithm)是有监督学习的一种分类算法,它基于“贝叶斯定理”实现,该原理的提出人是英国著名数学家托马斯贝叶斯。 一、贝叶斯定理 P(A) 这是概率中最基本的符号,表示 A 出现的概率。比如在…

Spark 4/5

4. 启动Spark Shell编程 4.1 什么是Spark Shell spark shell是spark中的交互式命令行客户端,可以在spark shell中使用scala编写spark程序,启动后默认已经创建了SparkContext,别名为sc 4.2 启动Spark Shell Shell /opt/apps/spark-3.2.3-bi…

实战深入了解redis+消息队列如何实现秒杀

SpringBoot Redis RabbitMQ 实现高并发限时秒杀 所谓秒杀,从业务角度看,是短时间内多个用户“争抢”资源,这里的资源在大部分秒杀场景里是商品;将业务抽象,技术角度看,秒杀就是多个线程对资源进行操作&…

配置NIS服务器及客户端

在服务端安装所需软件包 设置主机名和NIS域名 编辑 NIS服务器主配置文件 最下面编辑访问控制 建立测试用户 配置NFS,否则客户端切换用户时,用户没有家目录 安装NFS所需软件包 Nfs-utils 给两个共享目录权限,编辑NFS配制文件 共享两个目录 重…

12.JavaWeb-Spring Boot + 物业管理项目

1.Spring Boot 概念 自动处理应用程序幕后的各种杂事(Spring框架的应用程序的配置和部署过程),让你专注于做那些使应用程序独特的工作 1.1 Spring Boot的核心功能 1.1.1 自动配置 Spring Boot根据应用程序的依赖和配置信息&#xff0…

计算机网络——自顶向下方法(第二章学习记录)

本章学习应用层 网络应用是计算机网络存在的理由。 网络应用程序体系结构 现代网络应用程序有两种主流体系结构:客户—服务器体系结构和对等(P2P)体系结构 客户—服务器体系结构(client-server ),在这个结构中,有一个总是打开的…

SAP CAP篇五:为CAP添加Fiori Elements程序(2)

本文目录 本系列之前的文章新建Fiori Elements Application选择Application TypeData SourceEntity SelectionProject InformationLaunchpad Setting 修改manage-books文件夹子文件夹 webapp重命名 annotations.cds更新fiori-service.cdsmanifest.json 添加services.cds到app文…

哈工大计算机网络课程传输层协议之:拥塞控制原理剖析

哈工大计算机网络课程传输层协议之:拥塞控制原理剖析 文章目录 哈工大计算机网络课程传输层协议之:拥塞控制原理剖析拥塞成因和代价:场景1拥塞成因和代价:场景2拥塞成因和代价:场景3如何进行拥塞控制拥塞控制的方法TCP…

哈工大计算机网络课程网络层协议之:网络层服务概述

哈工大计算机网络课程网络层协议之:网络层服务概述 文章目录 哈工大计算机网络课程网络层协议之:网络层服务概述网络层概述网络层核心功能—转发与路由网络层核心功能—连接建立网络层服务模型虚电路网络与数据报网络虚电路网络虚电路(VC)的具体实现VC转…

Web 渗透测试攻防之浅述信息收集

前言 众所周知渗透测试的本质是信息收集,在渗透测试中信息收集的质量直接关系到渗透测试成果的与否。在对系统进行渗透测试前的信息收集是通过各种方式获取所需要的信息,收集的信息越多对目标进行渗透的优势越有利。通过利用获取到的信息对系统进行渗透…

【前端布局篇】响应式布局 Bootstrap 移动端布局

前言 1. 布局介绍 布局:layout 对事物的全面规划和安排 页面布局:对页面的文字、图形或表格进行格式设置。包括字体、字号、颜色纸张大小和方向以及页边距等。 网页布局:利用html搭建结构与内容,使用CSS添加装饰 网页布局有很多种方式&a…

Flink 学习七 Flink 状态(flink state)

Flink 学习七 Flink 状态(flink state) 1.状态简介 流式计算逻辑中,比如sum,max; 需要记录和后面计算使用到一些历史的累计数据, 状态就是:用户在程序逻辑中用于记录信息的变量 在Flink 中 ,状态state 不仅仅是要记录状态;在程序运行中如果失败,是需要重新恢复,所以这个状态…