[软件工程]十.可靠性工程(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 的核心特点就是灵活,但随着项目规模的增大,灵活反而增加开发者的心智负担。例如在代码中一个变量可以被赋予字符串、布尔、数字、甚至是函数,这样就充满了不确定性。而且这些不确定性可能需要在代码运行…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...

高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...