系统韧性研究(3)| 工程系统韧性要求
从最基本的层面上说,系统韧性指的是系统在逆境中继续执行其任务的程度。虽然对操作连续性至关重要,但系统的服务(能力)只是系统继续执行其任务所必须保护的一些资产。该系统必须检测不利因素,对其作出反应,并从它们对关键资产造成的损害中恢复过来。因此,更深层次的系统韧性是指系统快速有效地保护自身及其连续性相关资产免受不利事件和条件造成的损害的程度。
正如我在本系列的第一篇文章中提到的,系统韧性可以分解为两个子类型:主动韧性和被动韧性。主动系统韧性要求系统检测不利事件和条件,相应地做出反应,以防止或最大限度地减少任何由此产生的中断,并从这种中断中恢复。另一方面,如果系统被过度设计以被动避免中断(例如,通过具有足够的容量,过度负载不会导致性能损失或降级),则可以实现被动系统韧性。如本系列第一篇文章的初始图所示,系统韧性可以是被动的,也可以是主动的,即被动韧性被动地抵御逆境,而主动韧性主动地检测、应对逆境并从逆境中恢复。这种区别可以用于对规定阻力、检测、反应和恢复的韧性要求进行分类。
在本系列的第二篇文章中,我探索了系统韧性如何与其他质量属性密切相关,特别是鲁棒性、安全性、网络安全性、防篡改性、生存性、容量、寿命和互操作性。在第三篇文章中,我将阐述系统韧性需求,这些需求推动选择架构、设计和实现功能(例如,保障、安全控制和韧性相关的模式和习惯用法),以实现所需类型和级别的韧性。
01
系统韧性和次要质量属性要求
系统韧性要求规定了系统通过检测、响应和响应不利事件和条件,在面对不利情况时继续提供系统能力的程度。如下表所示,韧性系统必须克服的逆境类型根据其相关的从属质量属性进行分类。
鉴于系统韧性和上述从属质量属性之间的密切关系,一个自然的问题是,系统韧性要求与其他相关质量属性要求(如鲁棒性、安全性、网络安全和类似要求)有何不同?例如,以下是韧性要求还是鲁棒性(容错)要求:
当子系统Y中发生故障(不良事件)时,系统应继续提供服务X,可能处于降级模式。
以下是系统韧性要求还是安全要求:
汽车应检测到黑冰(即公路冰层,代指危险-不利条件),并通过修改牵引力控制来做出反应,以保持足够的牵引力,防止失去转向控制(服务)和由此产生的交通事故(对关键资产的伤害)。
同理,以下是韧性要求还是网络安全要求:
当威胁参与者在系统外部防火墙之外实现未经授权的访问(不良事件)时,系统应继续提供功能X。
关于与防篡改(例如,试图远程访问关键程序信息)、生存能力(例如,检测敌方雷达或导弹锁定等威胁)、容量(例如,系统接近或超过其最大容量)和寿命(例如,接近或超过设计寿命的系统组件)相关的不利因素,可以指定类似的要求。
02
都有哪些类型的要求?
关于韧性要求与其他质量属性要求的重叠,有三种学派:
方法1:无重叠
下图说明了系统韧性需求的MITRE方法。如果需求规定系统在面临特定逆境时应保持特定能力的特定水平,则该需求是系统韧性需求(由灰色框指示)。这些特定的逆境包括与质量属性相关的逆境:鲁棒性、安全性、网络安全等。系统韧性要求包括防止(也称为避免)逆境、被动抵抗逆境以及主动检测逆境的存在、对检测到的逆境做出反应以及从逆境造成的伤害中恢复的要求。系统韧性需求不包括与在逆境中维护特定能力无关的次要质量属性的需求(即下图的底行)。
方法1-系统韧性和次级需求之间没有重叠
第一种方法基本上表明,一些鲁棒性要求实际上是韧性要求,而不是鲁棒性要求,一些安全要求实际上是依赖性要求,而非安全要求,等等。除了造成混淆外,这种方法还使专业(如可靠性、安全性和安防)工程师更难找到与他们相关的所有需求,这些需求都放在需求规范的相关质量属性特定部分中。它还包括预防(也称为避免),这在逻辑上不属于恢复力的范围。
方法2:双重需求类型
第二种方法是使需求同时既是韧性需求又是从属质量属性需求。下图通过灰色框来说明这一点,灰色框表示韧性和次要质量属性需求。具体来说,由灰色框表示的每个阻力、检测、反应和恢复要求同时是系统韧性要求和从属质量属性(例如鲁棒性、安全性或网络安全)要求。
方法2-同时韧性和次要质量属性要求
这种重叠的方法可能会导致混淆。它还存在冗余规范的问题,这使得确保需求具有唯一的需求ID和将需求跟踪到测试(例如容量、鲁棒性、安全性、安全和互操作性测试)变得更加困难。然而,如果每个需求在需求数据库中仅存储一次,每个需求都用相关的质量属性进行注释,并且专业工程师可以根据其专业知识和职责领域过滤需求,则可以在一定程度上克服此问题。
方法3:衍生需求
下图说明了第三种方法,其中高级系统韧性需求(灰色框)与较低级别、衍生的次要质量属性需求(白色框)分开。这种需求分离将系统韧性需求保持在非常高的抽象级别,以至于它们忽略了质量属性特定的不利因素。例如,以下是这种系统韧性要求的示例:
系统应继续为任务关键能力C提供关键性能参数KPP,概率至少为P,尽管存在所有已识别的潜在不利因素。
一旦需求工程师指定了高级韧性需求,他们就会从这些韧性需求中衍生出多个次要质量属性需求。它们根据与鲁棒性、安全性、网络安全等相关的特定不良事件和条件来规定这些衍生要求。
方法3-衍生次要质量属性需求
第三种方法清楚地将韧性需求与其次要质量属性需求区分开来,将韧性需求保持在利益相关者关注的级别,并支持较低级别质量需求的衍生。请注意,与将性能需求分配给多个架构(architecture)组件一样,韧性KPP级别必须分解并分配给相关的派生次要质量属性需求。
03
需求工程(Engineering)过程
我建议使用以下过程(基于上述第三种方法),首先制定高水平的韧性要求,然后推导相应的低水平、特定于逆境的质量属性要求:
1.识别风险资产。在不利条件或事件发生时,哪些关键系统功能(即服务)必须继续提供?如果系统架构已知,则需要哪些关键系统组件(如子系统、硬件和软件)来提供这些功能和服务?类似地,在可用性、机密性和完整性方面必须保护哪些关键系统数据?系统服务是否依赖于任何系统外部资产,系统是否负责这些资产?
2.确定潜在危害。逆境会对这些关键资产造成何种危害,从而导致关键系统功能或服务的损失或降级?
3.确定最大可接受危害。逆境可能对维护关键能力和服务所需的资产造成的最大可接受伤害量是多少?对于功能和服务,请考虑设置以下类型的限制:
对服务/能力相关资产的最大可接受危害:
- 服务/功能降级的最大可接受水平·在逆境期间和恢复之前,服务/能力的最低可接受可用性
- 在逆境中和恢复之前,服务/能力的最低可接受可靠性
- 交付服务/能力所需的对资产的最大可接受损害
服务/能力相关资产的最大可接受损害持续时间(见下图):
- 可接受的最长不利条件/事件检测时间(检测逆境所需)
- 最大可接受反应开始时间(检测和反应之间的时间,以防止进一步伤害)
- 最大可接受反应持续时间(完成反应以阻止进一步伤害所需的时间)
- 最大可接受恢复持续时间(反应完成到恢复完成之间的时间)
- 服务/能力损失/降级的最大可接受持续时间
能力和服务降级可以根据性能下降来衡量,并可能取决于操作模式(例如操作、培训、演习、维护和更新)。
4.优先考虑资产和危害。在所有可信的情况下,很少有足够的资源来确保足够的复原力。因此,必须根据资产和相关损害的优先顺序来限制分析。
5.制定相关的韧性要求。基于对关键资产的最大可接受危害,开发高级别系统韧性需求。高水平韧性要求的示例模板(括号中包含可选条款)包括:
顶级韧性要求:
- 「当处于模式M」时,系统应在不利条件持续期间,以至少P的概率,继续提供可用性为a的能力C「最大降级为D」。
- 「当处于模式M」时,系统应在不良事件发生后,以至少P的概率继续提供可用性为a的能力C「最大降级为D」。
- 「当处于模式M」时,系统应在不利条件下以至少P的概率继续提供可靠性为R的能力C「最大降级为D」。
检测韧性要求:
- 「当处于模式M」时,系统应在S秒/毫秒内检测到不良事件和条件的P%。
- 「在模式M」下,系统应在S秒/毫秒内检测能力C的丢失/降级。
反应韧性要求:
- 在检测到不利条件「在模式M」时,系统应在S秒/毫秒内限制容量C的进一步损失或降级。
恢复韧性要求:
- 「当处于模式M」时,系统应在检测不良事件和条件的S秒/毫秒内恢复能力C,概率至少为P。
6.确定相关的不利因素。哪些类型的不利条件和事件会导致不可接受的关键服务和能力丢失或显著降级?对于每个次要质量属性,考虑可能损害韧性相关关键资产的不良事件和条件的相关类型。
7.优先考虑可信的逆境。由于在所有可信的情况下,很少有足够的资源来确保足够的韧性,因此,需求分析必须基于造成危害的逆境的优先顺序进行限制。
8.衍生相关的质量属性需求。使用优先化的逆境,从韧性要求中导出特定于逆境的下属质量属性要求,以达到适当的质量属性。
04
衍生需求
顶级系统韧性需求可用于导出组件级和数据级韧性需求,以及导出次要质量属性需求。以下是韧性要求和相关衍生要求的示例:
系统韧性要求:
- 检测要求:系统应在5秒内检测能力C的重大中断(即,超过30%的总损失或退化)。
- 反应要求:在检测到性能C下降超过15%时,系统应采取足够的步骤,确保性能C的下降不超过30%。
- 恢复要求:在检测到能力C的重大中断时,系统应在2分钟内自动恢复全部能力,概率为99.5%。
组件X韧性要求:
- 检测要求:系统应在500毫秒内检测子系统X的故障,该故障需要提供能力Y。
- 反应要求:在检测到子系统X的故障时,该故障会中断性能Y,系统应采取足够的步骤,以确保该故障不会使性能Y降低30%以上。
- 恢复要求:系统应在检测到导致性能Y严重中断的故障后1分钟内自主恢复子系统X。
次要质量要求:
- 反应能力要求:在检测到将事务T的吞吐量降低到每秒20000以下的过度负载时,系统应增加服务器数量,以确保吞吐量不低于每秒18000。
许多不同的可信不良事件和条件可能会破坏相同的关键系统能力。其中一些逆境彼此独立,概率很低,以至于人们可以合理地忽略这些逆境同时发生的可能性。另一方面,其他不利因素可能有共同的原因,或者有足够高的概率必须考虑同时发生。
05
总结与预告
本文阐述了不同类型的系统韧性需求,以及它们如何与派生的次要质量属性需求相关,并提供了一个通用过程,即系统韧性如何与其他密切相关的质量属性相关。下一篇亦即本系列的第四篇文章将介绍支持不良事件和条件的检测、反应和恢复的韧性功能(例如鲁棒性模式、保障和安全控制)。
敬请期待。
相关文章:

系统韧性研究(3)| 工程系统韧性要求
从最基本的层面上说,系统韧性指的是系统在逆境中继续执行其任务的程度。虽然对操作连续性至关重要,但系统的服务(能力)只是系统继续执行其任务所必须保护的一些资产。该系统必须检测不利因素,对其作出反应,…...

.net 5 发布后swagger页面不显示问题
1:项目右键属性-》生成xml--用于swagger文件读取 2:开启文件配饰swagger读取指定文件...

Spring Boot 3 整合 xxl-job 实现分布式定时任务调度,结合 Docker 容器化部署(图文指南)
目录 前言初始化数据库Docker 部署 xxl-job下载镜像创建容器并运行访问调度中心 SpringBoot 整合 xxl-jobpom.xmlapplication.ymlXxlJobConfig.java执行器注册查看 定时任务测试添加测试任务配置定时任务测试结果 结语附录xxl-job 官方文档xxl-job 源码测试项目源码 前言 xxl-…...

1985-2020年我国30m土地利用覆盖数据介绍
土地覆盖(LC)决定了地球各圈层之间的能量交换、水和碳循环。准确的 LC 信息是环境和气候研究的基本参数。考虑到在过去几十年中,随着经济建设的发展,中国发生了巨大的变化,连续和精细的 LC 监测是迫切需要的。然而,目前࿰…...

Django 社区志愿者管理系统
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 社区志愿者服务管理系统,主要的模块包括查看首页、个人中心、通知公告管理、志愿者管理、普通管理员管理、志愿活动管理、活动宣…...
wordpress如何修改数据库里用户ID下一个自增值的开始数字
有时候我们为了让别人认为网站有很多注册用户,会想把网站用户ID的起始数改大一点,因为WP默认的用户ID是从1开始,注册一个就加1,这样别人就很容易知道网站的用户量。 那么如何改呢?首先进phpmyadmin,找到wp…...
利用chatgpt大语言模型来做数据预处理
数据预处理是机器学习中的一个重要步骤,包括数据清洗、数据转换、特征选择等。这些步骤通常需要人工进行,或者使用专门的数据预处理工具和库,如Python的Pandas库、Scikit-learn库等。 今天我们将利用chatgpt(国内版本-小策智能问答)的辅助帮…...

【机器学习】五、贝叶斯分类
我想说:“任何事件都是条件概率。”为什么呢?因为我认为,任何事件的发生都不是完全偶然的,它都会以其他事件的发生为基础。换句话说,条件概率就是在其他事件发生的基础上,某事件发生的概率。 条件概率是朴…...
k8s 资源管理方式
k8s中资源管理方式可以划分为下面的几种:命令式对象管理、命令式对象配置、声明式对象配置。 命令式对象管理 命令式对象管理:直接使用命令的方式来操作k8s资源, 这种方式操作简单,但是无法审计和追踪。 kubectl run nginx-pod --imagengi…...

Golang Gin 接口返回 Excel 文件
文章目录 1.Web 页面导出数据到文件由后台实现还是前端实现?2.Golang Excel 库选型3.后台实现示例4.xlsx 库的问题5.小结参考文献 1.Web 页面导出数据到文件由后台实现还是前端实现? Web 页面导出表数据到 Excel(或其他格式)可以…...

实战之巧用header头
案例: 遇到过三次 一次是更改accept,获取到tomcat的绝对路径,结合其他漏洞获取到shell。 一次是更改accept,越权获取到管理员的MD5加密,最后接管超管权限。 一次是更改accept,结合参数获取到key。 这里以越…...
[AUTOSAR][诊断管理][ECU][$36] 数据传输
文章目录 一、简介二、服务请求报文定义三、服务请求报文中参数定义(1)blockSequenceCounter(2)transferRequestParameterRecord三、肯定响应(1)blockSequenceCounter(2)transferResponseParameterRecord四、支持的NRC五、示例代码36_transfer_data.c一、简介 这个服务…...

sw 怎么装新版本
我们在安装solidworks时,有时候会提示A newer version of this applic ation is already installed. Installation stopped.如下图所示 这时候需要点继续安装 然后会出现下图所示情况,vba7.1安装未成功 这是因为我们电脑中以前安装过更高版本的solidw…...

正点原子嵌入式linux驱动开发——Linux 音频驱动
音频是最常用到的功能,音频也是linux和安卓的重点应用场合。STM32MP1带有SAI接口,正点原子的STM32MP1开发板通过此接口外接了一个CS42L51音频DAC芯片,本章就来学习一下如何使能CS42L51驱动,并且CS42L51通过芯片来完成音乐播放与录…...
conda相关的命令操作
准备切换conda环境 cd C:\ProgramData\Anaconda3\Scripts查看所有环境 conda info --envs选择环境 activate pytorch安装torch pip install D:\installPackage\torch-1.2.0-cp36-cp36m-win_amd64.whl安装torchvision pip install D:\installPackage\torchvision-0.4.0-cp3…...
如何快速使用Vue3在electron项目开发chrome Devtools插件
1、建立Vue项目 为了方便快速建立项目,我已经写好脚手架,直接clone项目,快速开发 点击快速进入源代码 拉取代码 git clone https://github.com/xygengcn/electron-devtool.git安装依赖 yarn运行项目 yarn dev打包项目 yarn build2、安装…...

干洗店服务预约小程序有什么作用
要说干洗店,近些年的需求度非常高,一方面是人们生活品质提升,另一方面则是各种服饰对洗涤要求提升等,很多人的衣服很多也会通过干洗店进行清洁。 而对从业商家来说,市场庞大一方面需要不断进行市场教育、品牌提升&…...
【跟小嘉学 Rust 编程】三十四、Rust的Web开发框架之一: Actix-Web的进阶
系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…...
软件安装(1)——Xshell安装
一、前言 本篇文章主要用于介绍Xshell破解版的安装 二、具体步骤 1. 下载Xshell7 链接:https://pan.baidu.com/s/1sFZz1uPb7yeDl6dlM4xtpg 提取码:a7m8 2. 安装Xshell7 选择文件安装目录后安装即可...

Kafka基本原理、生产问题总结及性能优化实践 | 京东云技术团队
Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景&a…...
STM32开发中,线程启动异常问题排查简述
1. 参数传递问题 错误类型:线程属性错误地使用。影响:线程属性(如堆栈大小、优先级)不匹配可能导致线程创建失败或行为异常。验证方法:检查 线程创建的返回值,若为 NULL 则表示线程创建失败。 2. 系统资源…...
前端工具:Webpack、Babel、Git与工程化流程
1. Webpack:资源打包优化工具 案例1:多入口文件打包 假设项目有多个页面(如首页index.js和登录页login.js),需要分别打包: ● 配置webpack.config.js: module.exports {entry: {index: ./sr…...
十一、【ESP32开发全栈指南: TCP通信服务端】
一、TCP与UDP协议对比 1.1 基本特性比较 TCP(传输控制协议)和UDP(用户数据报协议)是两种最常用的传输层协议,它们在ESP32网络编程中都有广泛应用: 连接方式 TCP是面向连接的协议,通信前需要先建立连接(三次握手)UDP是无连接的协议ÿ…...
Java Fork/Join框架:三大核心组件深度解析
ForkJoinTask、ForkJoinWorkerThread 和 ForkJoinPool 构成了 Java 中 Fork/Join 框架的三个核心组件,它们之间形成了紧密的协作关系,共同提供了高效的并行计算能力。 三者关系概述 ForkJoinPool:执行环境,管理工作线程和任务调…...
总结HTML中的文本标签
总结HTML中的文本标签 文章目录 总结HTML中的文本标签引言一、标题标签(h1 - h6)语法示例使用建议 二、段落标签(p)语法示例使用建议 三、文本节点标签(span)语法示例使用建议 四、粗体标签(b&a…...

Vue3 GSAP动画库绑定滚动条视差效果 绑定滚动条 滚动条动画 时间轴
介绍 GSAP 用于创建高性能、可控制的动画效果。由 GreenSock 团队开发,旨在提供流畅、快速、稳定的动画效果,并且兼容各种浏览器。 提供了多个插件,扩展了动画的功能,如 ScrollTrigger(滚动触发动画)、Dra…...

GIC700组件
GIC700包含了几个重要的组件,它们使用一个内部的GIC互联,用于在不同的组件之间使用AXI5-Stream接口进行路由。 1. Distributor(GICD) gicd是GIC700中所有组件之间的主要通信节点。它作为SPI的管理者以及维护LPI的cache,并且与其它chip上的GIC700组件进行通信。当支持GIC…...

中国移动6周年!
基站超过250万个 网络规模全球最大、质量最优 覆盖全国96%人口 在全国率先实现乡乡双千兆 服务用户超5.7亿 网络上下行均值接入速率均居行业首位 行业应用快速推广,数量超5万个 3CC、RedCap、通感一体、 无线AI改造等技术成熟商用 客户品牌持续升级&#x…...

基于JWT+SpringSecurity整合一个单点认证授权机制
基于 JWT Spring Security 的授权认证机制,在整体架构设计上体现了高度的安全性与灵活性。其在整合框架中的应用,充分展示了模块化、可扩展性和高效鉴权的设计理念,为开发者提供了一种值得借鉴的安全架构模式。 1.SpringSecurity概念理解 …...
46、web实验-遍历数据与页面bug修改
46、web实验-遍历数据与页面bug修改 在Web开发中,遍历数据和修改页面bug是常见的任务。以下是关于这两个主题的讲解: ### 一、遍历数据 **目的**:在页面上动态展示数据,例如用户列表、商品信息等。 **常用方法**: ####…...