第五章:软件工程(5.5部署交付--5.7软件过程能力成熟度)

embedded/2024/10/9 6:27:35/

5.5 部署交付

5.5.1 软件部署

软件部署过程的主要特征有:过程覆盖度、过程可变更性、过程间协调和模型抽象。
已经提出一些抽象的软件部署模型,用于有效地指导部署过程,包括应用模型、组织模型、站点模型、产品模型、策略模型和部署模型。

软件部署模式分为面向单机软件的部署模式、集中式服务器应用部署和基于微服务的分布式部署

5.5.2 软件交付

传统的软件交付过程是指在编程序改代码之后,直到将软件发布给用户使用之前的一系列活动,如提交、集成、构建、部署、测试等。

5.5.3 持续交付

持续交付是一系列开发实践方法,用来确保代码能够快速、安全地部署到生产环境中。持续交付是一个完全自动化的过程,当业务开发完成的时候可以做到一键部署。

5.5.4 持续部署

1.持续部署方案

容器技术目前是部署中最流行的技术,常用的持续部署方案有Kubernetes+Docker和Matrix系统两种。

2.部署原则

a. 部署包全部来自统一的存储库;

b. 所有的环境使用相同的部署方式:

c. 所有的环境使用相同的部署脚本;

d. 部署流程编排阶梯式晋级,即在部署过程中需要设置多个检查点,一旦发生问题可以有序地进行回滚操作;

e. 整体部署由运维人员执行;

f. 仅通过流水线改变生产环境,防止配置漂移:

g. 不可变服务器;

h. 部署方式采用蓝绿部署或金丝雀部署

3.部署层次

完整的镜像部署包括3个环节:Build-Ship-Run

Build: 跟传统的编译类似,将软件编译形成 RPM包或者Jar 包:

Ship: 将所需的第三方依赖和第三方插件安装到环境中:

Run: 就是在不同的地方启动整套环境

4.不可变服务器

现阶段使用容器部署不但继承和优化了虚拟机部署的优点,而且很好地解决了第三方依赖库的重构问题,容器部署就像一个集装箱,直接把所有需要的内容全部打包进行复制和部署。

5.蓝绿部署和金丝雀部署

蓝绿部署 是指在部署的时候准备新旧日两个部署版本,通过域名解析切
换的方式将用户使用环境切换到新版本中,当出现问题的时候,可以快速地
将用户环境切回旧版本,并对新版本进行修复和调整。

金丝雀部署 是指当有新版本发布的时候,先让少量用户使用新版本
并且观察新版本是否存在问题。如果出现问题,就及时处理并重新发布;如
果一切正常,就稳步地将新版本适配给所有的用户。

5.5.5 部署和交付的新趋势(了解为主,这里不提供)

5.6 软件质量管理

软件质量就是软件与明确地和隐含地定义的需求相一致的程度

文档中明确描述的开发标准以及所有专业开发的软件都应具有的隐含特征的程度

从管理角度出发,可以将影响软件质量的因素划分为3组,分别反映用户在使用软件产品时的3种不同倾向和观点。这3组分别是产品运行、产品修改和产品转移

软件质量保证的关注点集中在一开始就避免缺陷的产生

软件质量保证的目标 是以独立审查的方式,从第三方的角度监控软件开发任务的执行

软件质量保证的主要作用 给管理者提供预定义的软件过程的保证

软件质量保证的主要任务 包括:SQA审计与评审、SQA报告、处理不合格问题

5.7 软件过程能力成熟度

成熟度等级::-》

等级结果特征
1级:初始级软件过程和结果具有不确定性
2级:项目规范级项目基本可按计划实现预期的结果
3级:组织改进级在组织范围内能够稳定地实现预期的项目目标
4级:量化提升级在组织范围内能够量化地管理和实现预期的组织和项目目标
5级:创新引领级通过技术和管理的创新,实现组织业务目标的持续提升引领行业发展

PS: 更多关于系统集成项目管理工程师笔记 点击专栏订阅(持续更新~~~)


http://www.ppmy.cn/embedded/124920.html

相关文章

网站开发的发展(后端路由/前后端分离/前端路由)

1.后端路由阶段 在早期的网站开发中 网页的渲染工作其实是交由服务器完成的 所以该渲染也被称之为后端渲染 具体的过程就是:浏览器发送url给服务器 服务器解析该url 使用后端路由(在服务器中 用于储存url和页面映射关系的路由)获取指定url对应的页面 然后交由jsp去…

精品WordPress主题/响应式个人博客主题Kratos

Kratos 是一款专注于用户阅读体验的响应式 WordPress 主题,整体布局简洁大方,针对资源加载进行了优化。 Kratos主题基于Bootstrap和Font Awesome的WordPress一个干净,简单且响应迅速的博客主题,Vtrois创建和维护, 主…

代码随想录算法训练营| 669. 修剪二叉搜索树 、 108.将有序数组转换为二叉搜索树 、 538.把二叉搜索树转换为累加树

669. 修剪二叉搜索树 题目 参考文章 思路:这题其实就是删除不符合上下边界的节点。注意:这里删除不符合上下边界节点时,这个不符合上下边界的节点的左或右子树可能存在符合上下边界的节点,所i有每次比较完之后,要继…

自动驾驶系列—线控系统:驱动自动驾驶的核心技术解读与应用指南

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

项目-坦克大战学习-游戏结束

当boos受到伤害时游戏结束,游戏结束时我们需要将窗体全部绘制从别的画面,这样我们可以在游戏运行类中的update设置条件,在游戏运行类thread创建一个枚举类型定义是否游戏结束 public enum Game { play, over };//定义现在游戏运行状态 如果…

爱心曲线公式大全

local r a*((math.sin(angle) * math.sqrt(math.abs(math.cos(angle)))) / (math.sin(angle) 1.4142) - 2 * math.sin(angle) 2) local x r * math.cos(angle) -- 计算对应的x值 local z r * math.sin(angle) 1.5*a - --曲线公式绘画 local function generateParabola()…

Vulkan进阶系列0 - Raytracing 基础

一:概述 Vulkan 的光线追踪是一种现代图形技术,用于实现更加逼真的高质量渲染效果。通过使用Vulkan的光线追踪扩展:VK_KHR_ray_tracing_pipeline 和 VK_KHR_acceleration_structure, 程序员可以更加高效的模拟光线的传播,反射和折射,并能够跟踪光线在场景中的传播路径,计…

PHP数组

一.定义数组 通过在方括号内指定键名来给数组赋值,其代码格式如下: $arr[$key] value 其中,$arr为数组名;$key为键名,其类型为整型或字符串;value为值,可以为任意数据类型。 1.索引数组:定义…