[软件工程]十.可靠性工程(reliable engineering)
1.什么是可靠性工程
- 我们希望软件在给定的时间内,运行的时候不会崩溃或者发生失效,同时能保护我们的数据和个人信息。我们要能够信任我们所使用的软件,这意味着软件必须是可靠的。
- 可靠性(reliability):系统的可靠性是系统在给定的时段内能够正确提供用户希望的服务的可能性,且可以保护系统不崩溃或者失效,和我们的数据和个人信息
2.什么是错误,什么是失效
1)什么是错误(error)
通常指开发人员在软件开发过程中引入的缺陷或问题。错误是故障的根源,是软件系统中潜在的问题,可能在软件运行时导致失效。。
2)什么是失效(failure)
是指软件系统未能满足用户需求或预期行为的情况。失效是故障在软件运行时的表现,是用户直接体验到的问题。
3)什么是故障(fault)
是错误的直接结果,是软件系统中存在的一个具体问题,它可能导致软件在运行时出现异常行为或不正确的结果。
4) 故障(fault)-错误(error)-失效模型(failure Mode)
1>什么是故障-错误-失效模型(fault-error-failure Mode)
即人为故障导致系统故障,
系统故障导致系统错误,
系统错误导致系统失效。
2>图形表示

3.什么是可用性(availability),性能(performance),可依赖性(dependabilty),安全性(safety),信息安全性(security),韧性(resilence),防范性(Defensibility),可靠性(reliability)的定义和区别
1)可用性(Availability)
可用性是指系统在任何给定时间点上,能够正常运行并提供服务的能力。它通常用系统正常运行时间占总时间的比例来衡量。高可用性意味着系统很少或几乎不会出现故障,用户可以随时访问系统并获得服务。
2)性能(Performance)
性能是指系统在执行任务时的效率和响应速度。它包括响应时间、吞吐量、资源利用率等指标。性能好的系统能够快速响应用户请求,并高效地处理大量数据。
3)可依赖性(Dependability)
可依赖性是一个综合性的概念,它包括可用性,可靠性,安全性和信息安全性。(其目的是覆盖系统的可用性,可靠性,安全性和信息安全性。)可依赖性强调的是系统在规定条件下和规定时间内,能够持续提供服务的能力。
4)安全性(Safety)
安全性是指系统在运行过程中,不会对人、环境或财产造成损害的能力。安全性关注的是系统在正常运行和异常情况下的安全保护措施。
5)信息安全性(Security)
信息安全性是指系统保护信息不被未授权访问、泄露、篡改或破坏的能力。它包括数据加密、访问控制、身份验证等措施。是否能抵御意外或蓄意入侵的可能性(鲁棒性)(important)
6)韧性(Resilience)
韧性是指系统在面对干扰性事件(如硬件故障、网络攻击等)时,能够维持关键服务的能力。韧性强调的是系统在遭受攻击或故障后,能够迅速恢复并继续提供服务的能力。
7)防范性(Defensibility)
防范性是指在软件开发过程中,为了确保软件的质量和安全性,所采取的一系列措施和策略。这些措施包括但不限于代码审查、单元测试、集成测试、系统测试、压力测试、安全审计等。
8)可靠性(reliability)
可靠性(reliability):系统的可靠性是系统在给定的时段内能够正确提供用户希望的服务的可能性,且可以保护系统不崩溃或者失效,和我们的数据和个人信息。
9)可用性(Availablity)和可靠性(reliablity)的区别
可用性是指系统在任何给定时间点上,能够正常运行并提供服务的能力。
可靠性是指系统在指定的时间段内可以正常地提供服务,并且提供一些保护系统不崩溃和保护用户数据和信息的能力。
4.可靠性需求(Reliability Requirement)
1)功能性需求:(Functional Requirement)
定义了系统应该包含的检查和修复的手段和修复措施,以及防止系统失效和外部攻击的保护性特征。(提供一些保护系统不崩溃和保护用户数据和信息的能力。)
2)非功能性需求:(Non-functional Requirement)
非功能性需求是对系统的可靠性和可用性的要求做出的规格说明,使用前面描述的度量之一来描述,定义了系统需要的可靠性和可用性。(在任何给定时间点上,能够正常运行并提供服务的能力),多以来,定量的可靠性和可用性规格说明被用于安全关键的系统中,但是很少用在关键的业务流程中。
5.可靠性指标和度量
1)度量可靠性和可用性的指标

-
- 请求失败概率(Probability of Failure On Demand POFOD):(适合偶尔使用的系统)这个度量定义系服务请求将导致失效的可能性。所以POFOD = 0.001意味着提出一个请求是,出现失效(failure)的可能性
例子:假设你有一个紧急情况下的报警按钮,它在紧急情况下被按下时应该立即通知救援人员。如果这个按钮的POFOD是0.001,这意味着在紧急情况下按下按钮时,有0.1%的概率它不会正常工作,导致无法及时通知救援人员。
-
- 失效发生率(Rate Of Failure On Demand ROCOF):(ROCOF常常用于衡量频繁使用的系统)这个度量说明在一段时间内(比如一小时内),或在一定的系统执行次数之内,能够观察到的系统的失效次数,若ROCOF = 0.001,ROCOF的倒数是平均失效间隔时间(Mean Time To Failure MTTF)其常用在可靠性度量中。
例子:考虑一个自动售货机,它每天被使用数百次。如果ROCOF是0.001,这意味着在任何给定的使用中,自动售货机出现故障(比如卡住或不出货)的概率是0.1%。ROCOF的倒数,即平均失效间隔时间(MTTF),将告诉我们这个自动售货机在两次故障之间平均能正常工作多长时间。
-
- 平均失效间隔时间(Mean Time To Failure MTTF):是ROCOF的倒数,常常用在有很长的事务处理序列的系统。
例子:假设你有一辆汽车,它的MTTF是100,000公里,这意味着在正常使用条件下,你的汽车平均每行驶100,000公里就会出现一次故障。这个指标帮助你了解汽车的可靠性。
-
- 可用性(AVAIL):AVAIL是当请求某一服务的时候系统可使用的概率。因此,概率0.9999的可用性是指平均来说系统在运行时间的99.99%是可用。
例子:考虑一个在线银行系统,其可用性是0.9999。这意味着在任何给定的时间点,用户有99.99%的概率能够成功访问和使用这个系统。如果银行系统每天运行24小时,那么它每年大约有52分钟的时间是不可用的(因为1 - 0.9999 = 0.0001,即0.01%的不可用时间)。
2)举个例子
客户说3年故障最多5次,是难以去验证的,是不合理的,我们应该转化为概率的形式,易于衡量。
比如:如果客户的系统是偶尔使用的,那么转化为POFOD = 0.0001,即提出10000次请求,会又一次请求会导致失效。
例子:假设你有一个紧急情况下的报警按钮,它在紧急情况下被按下时应该立即通知救援人员。如果这个按钮的POFOD是0.001,这意味着在紧急情况下按下按钮时,有0.1%的概率它不会正常工作,导致无法及时通知救援人员。
比如:如果客户的系统是经常使用的,那么转化为ROCOF = 0.0001,即在10000次的执行次数内,能观察到一次系统失效。
例子:考虑一个自动售货机,它每天被使用数百次。如果ROCOF是0.001,这意味着在任何给定的使用中,自动售货机出现故障(比如卡住或不出货)的概率是0.1%。ROCOF的倒数,即平均失效间隔时间(MTTF),将告诉我们这个自动售货机在两次故障之间平均能正常工作多长时间。
比如:如果客户的系统有很长的处理序列,那么转化为MTTF = 10000,即每发生一次系统失效的间隔次数为10000次执行。
例子:假设你有一辆汽车,它的MTTF是100,000公里,这意味着在正常使用条件下,你的汽车平均每行驶100,000公里就会出现一次故障。这个指标帮助你了解汽车的可靠性。
比如:可以将用户的需求转化为 AVAIL = 0.999即在请求某一服务的时候,系统可使用的概率是99.99%
例子:考虑一个在线银行系统,其可用性是0.9999。这意味着在任何给定的时间点,用户有99.99%的概率能够成功访问和使用这个系统。如果银行系统每天运行24小时,那么它每年大约有52分钟的时间是不可用的(因为1 - 0.9999 = 0.0001,即0.01%的不可用时间)。
6.如何保证可靠性(dependablity),防范性(defensibility),韧性(resilience),安全性(safety),它的功能性需求和非功能性需求
-
- (画)进行体系结构设计
- 进行需求跟踪: 跟踪需求的变更,确保所有需求都被正确实现。
- 监控和日志:建立监控系统,实时跟踪系统状态,记录关键操作日志,以便于问题追踪和性能分析
- 安全协议:实现加密、认证和授权等安全协议,保护系统免受未授权访问和攻击。
相关文章:
[软件工程]十.可靠性工程(reliable engineering)
1.什么是可靠性工程 我们希望软件在给定的时间内,运行的时候不会崩溃或者发生失效,同时能保护我们的数据和个人信息。我们要能够信任我们所使用的软件,这意味着软件必须是可靠的。可靠性(reliability):系统…...
【Makefile】编译日志之输出重定向符号 >
用法1 make all >& compilelog.txt make all > compilelog.txt这两个编译命令在功能上有一些细微的区别,主要在于标准输出和标准错误的处理方式。 make all >& compilelog.txt 这个命令会将标准输出(stdout)和标准错误&a…...
linux之less
less命令是Linux系统中一个功能强大的文件查看工具,它允许用户分页查看文件内容,并提供了多种快捷键和选项来增强用户体验。以下是less命令的一些常用操作: 基本使用 查看文件使用less命令的基本语法是less [选项] [文件名]。例如࿰…...
算法-字符串-165.比较版本号
一、题目 二、思路解析 1.思路: 比较的是两个版本号它们以“.”作为分割的部分的有效值(即数值)是否一致 2.常用方法: 1.s.split("\\规则"),将字符串按参数规则进行分割并存储在字符串数组中 String[] str …...
List与Set、数组与ArrayList、ArrayList与LinkedList的区别
List 与 Set 的区别: 项ListSet重复允许重复的对象(多个null也可以)不允许重复的对象(null也只能有一个)有序性有序的。 保持了每个元素的插入顺序。即输出顺序就是输入顺序。 有序和无序都有。 HashSet:无…...
如何在 Odoo18 视图中添加关联数据看板按钮 | 免费开源ERP实施诀窍
文 / 开源智造 Odoo亚太金牌服务 引言 关联数据看板按钮乃是 Odoo 当中的一项强效功能,它容许用户顺遂地访问相关记录,或者直接从模型的表单视图施行特定操作。它们为用户给予了对重要信息的疾速访问途径,并简化了工作流程,由此…...
Linux下mysql环境的搭建
1.mysql的下载 去MySQL官网下载mysql的linux压缩包 MySQL :: Download MySQL Community Server 如果下载慢请到网盘中自行下载 通过网盘分享的文件:mysql-8.0.40-1.el7.x86_64.rpm-bundle.tar 链接: https://pan.baidu.com/s/1vUJ-VuTwer1nLPT-haQCqw?pwd6342 提…...
视觉语言模型 Qwen2-VL
视觉语言模型 Qwen2-VL flyfish from PIL import Image import requests import torch from torchvision import io from typing import Dict from transformers import Qwen2VLForConditionalGeneration, AutoTokenizer, AutoProcessor from modelscope import snapshot_dow…...
浅谈新能源汽车感应钥匙一键启动的步骤和特点
随着汽车智能化技术的发展,无钥匙启动系统还可以与其他智能系统进行集成,如智能车载系统、远程控制系统等。这使得车主可以通过智能手机等智能设备远程控制车辆的启动、解锁、上锁等操作,进一步提升了使用的便捷性和智能化水平。新能源汽车…...
鸿蒙ArkTS语言基础语法详解
文章目录 鸿蒙ArkTS语言基础语法详解一、引言二、ArkTS语言概述1. ArkTS语言特点2. TypeScript基础语法2.1 类型注解2.2 接口2.3 泛型2.4 类的继承2.5 类的访问修饰符 三、ArkTS的基本组成3.1 装饰器3.2 UI描述3.3 自定义组件3.4 系统组件3.5 属性方法和事件方法 四、自定义组件…...
H5游戏出海如何获得更多增长机会?
海外H5小游戏的崛起给了国内众多中小厂商出海发展的机会,开发者如何在海外市场获得更多的增长机会?#APP出海# H5游戏如何在海外获得核心用户? HTML5游戏的开发与运营者们首先可以利用量多质高的HTML5游戏,维持海外用户粘性&…...
Cmake+基础命令
一、版本要求: 检查 cmake 版本号的最低要求,不满足条件时报错。 cmake_minimum_required(VERSION <version>)参数: version:最低要求的版本号 例子: # 最低要求安装3.21版本的cmake cmake_minimum_required…...
python数据分析之爬虫基础:requests详解
1、requests基本使用 1.1、requests介绍 requests是python中一个常用于发送HTTP请求的第三方库,它极大地简化了web服务交互的过程。它是唯一的一个非转基因的python HTTP库,人类可以安全享用。 1.2、requests库的安装 pip install -i https://pypi.tu…...
PHP期末复习(通过30道填空题梳理知识点)
一、基本语法 PHP的开始标记是: <?php<?php 是PHP脚本的开始标签,所有PHP代码必须在这个标签内书写。 PHP文件的结束标记是: ?>?> 是PHP脚本的结束标签,在大多数PHP文件中,通常可以省略结束标记。 定…...
PostgreSQL 安装部署系列:使用YUM 方式在Centos 7.9 安装指定 PostgreSQL -15版本数据库
一、前言 千里之行始于足下,想学习一门数据库,首先要从安装部署开始,先拥有一套属于自己的学习测试库。为了更好的学习该数据库,可以选择一个在企业界使用率比较普及的操作系统,选择稳定版本的操作系统;如果…...
知识图谱8:深度学习各种小模型
1、知识图谱的展示有很多工具 Neo4j Browser - - - - 浏览器版本 Neo4j Desktop - - - - 桌面版本 graphX - - - - 可以集成到Neo4j Desktop Neo4j 提供的 Neo4j Bloom 是用户友好的可视化工具,适合非技术用户直观地浏览图数据。Cypher 是其核心查询语言…...
为什么 JavaScript 中的 `new` 运算符报错?
在 JavaScript 中,new 运算符通常用于创建一个新对象并调用构造函数来初始化对象。然而,new 运算符可能会引发一些错误,通常是由于以下原因导致的: 构造函数没有正确的定义: 如果使用 new 运算符调用的函数没有正确地定…...
Tomcat,javaweb, servlet , springBoot
在server.xml里配置服务器 <scope>provided</scope>打包的时候,这个jar包不会被打进去,因为tomcat已将封装了这个jar包,没必要要这个...
使用Kimi开发自己的问答应用
概述 Kimi是大家常用的一个人工智能助手,本文使用Kimi开发文档,以node作为后端,开发与一个问答系统 实现效果 Kimi简介 Kimi是由Moonshot AI开发的人工智能助手,擅长中文和英文对话。目标是帮助用户解决问题、提供信息和执行任…...
TypeScript进阶
Typescript进阶 基础知识 JavaScript 的核心特点就是灵活,但随着项目规模的增大,灵活反而增加开发者的心智负担。例如在代码中一个变量可以被赋予字符串、布尔、数字、甚至是函数,这样就充满了不确定性。而且这些不确定性可能需要在代码运行…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
