当前位置: 首页 > news >正文

[软件工程]十.可靠性工程(reliable engineering)

1.什么是可靠性工程

 

  1. 我们希望软件在给定的时间内,运行的时候不会崩溃或者发生失效,同时能保护我们的数据和个人信息。我们要能够信任我们所使用的软件,这意味着软件必须是可靠的。
  2. 可靠性(reliability):系统的可靠性是系统在给定的时段内能够正确提供用户希望的服务的可能性,且可以保护系统不崩溃或者失效,和我们的数据和个人信息

 

2.什么是错误,什么是失效

1)什么是错误(error)

通常指开发人员在软件开发过程中引入的缺陷或问题。错误是故障的根源,是软件系统中潜在的问题,可能在软件运行时导致失效。。

2)什么是失效(failure)

是指软件系统未能满足用户需求或预期行为的情况。失效是故障在软件运行时的表现,是用户直接体验到的问题。

3)什么是故障(fault)

是错误的直接结果,是软件系统中存在的一个具体问题,它可能导致软件在运行时出现异常行为或不正确的结果。

4) 故障(fault)-错误(error)-失效模型(failure Mode)

1>什么是故障-错误-失效模型(fault-error-failure Mode)

即人为故障导致系统故障,

系统故障导致系统错误,

系统错误导致系统失效。

2>图形表示

2bc19d8d281c497d9727d492b90bbb59.png

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)度量可靠性和可用性的指标

812f1ca7871c412097b0a27aaba304ba.png

    1. 请求失败概率(Probability of Failure On Demand   POFOD):(适合偶尔使用的系统)这个度量定义系服务请求将导致失效的可能性。所以POFOD = 0.001意味着提出一个请求是,出现失效(failure)的可能性

 

例子:假设你有一个紧急情况下的报警按钮,它在紧急情况下被按下时应该立即通知救援人员。如果这个按钮的POFOD是0.001,这意味着在紧急情况下按下按钮时,有0.1%的概率它不会正常工作,导致无法及时通知救援人员。

 

    1. 失效发生率(Rate Of Failure On Demand   ROCOF):(ROCOF常常用于衡量频繁使用的系统)这个度量说明在一段时间内(比如一小时内),或在一定的系统执行次数之内,能够观察到的系统的失效次数,若ROCOF = 0.001,ROCOF的倒数是平均失效间隔时间(Mean Time To Failure  MTTF)其常用在可靠性度量中。

 

例子:考虑一个自动售货机,它每天被使用数百次。如果ROCOF是0.001,这意味着在任何给定的使用中,自动售货机出现故障(比如卡住或不出货)的概率是0.1%。ROCOF的倒数,即平均失效间隔时间(MTTF),将告诉我们这个自动售货机在两次故障之间平均能正常工作多长时间。

 

    1. 平均失效间隔时间(Mean Time To  Failure  MTTF):是ROCOF的倒数,常常用在有很长的事务处理序列的系统。

 

例子:假设你有一辆汽车,它的MTTF是100,000公里,这意味着在正常使用条件下,你的汽车平均每行驶100,000公里就会出现一次故障。这个指标帮助你了解汽车的可靠性。

 

    1. 可用性(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),它的功能性需求和非功能性需求

    1. (画)进行体系结构设计
    2. 进行需求跟踪: 跟踪需求的变更,确保所有需求都被正确实现。
    3. 监控和日志:建立监控系统,实时跟踪系统状态,记录关键操作日志,以便于问题追踪和性能分析
    4. 安全协议:实现加密、认证和授权等安全协议,保护系统免受未授权访问和攻击。

 

相关文章:

[软件工程]十.可靠性工程(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 [选项] [文件名]。例如&#xff0…...

算法-字符串-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+基础命令

一、版本要求&#xff1a; 检查 cmake 版本号的最低要求&#xff0c;不满足条件时报错。 cmake_minimum_required(VERSION <version>)参数&#xff1a; version&#xff1a;最低要求的版本号 例子&#xff1a; # 最低要求安装3.21版本的cmake cmake_minimum_required…...

python数据分析之爬虫基础:requests详解

1、requests基本使用 1.1、requests介绍 requests是python中一个常用于发送HTTP请求的第三方库&#xff0c;它极大地简化了web服务交互的过程。它是唯一的一个非转基因的python HTTP库&#xff0c;人类可以安全享用。 1.2、requests库的安装 pip install -i https://pypi.tu…...

PHP期末复习(通过30道填空题梳理知识点)

一、基本语法 PHP的开始标记是&#xff1a; <?php<?php 是PHP脚本的开始标签&#xff0c;所有PHP代码必须在这个标签内书写。 PHP文件的结束标记是&#xff1a; ?>?> 是PHP脚本的结束标签&#xff0c;在大多数PHP文件中&#xff0c;通常可以省略结束标记。 定…...

PostgreSQL 安装部署系列:使用YUM 方式在Centos 7.9 安装指定 PostgreSQL -15版本数据库

一、前言 千里之行始于足下&#xff0c;想学习一门数据库&#xff0c;首先要从安装部署开始&#xff0c;先拥有一套属于自己的学习测试库。为了更好的学习该数据库&#xff0c;可以选择一个在企业界使用率比较普及的操作系统&#xff0c;选择稳定版本的操作系统&#xff1b;如果…...

知识图谱8:深度学习各种小模型

1、知识图谱的展示有很多工具 Neo4j Browser - - - - 浏览器版本 Neo4j Desktop - - - - 桌面版本 graphX - - - - 可以集成到Neo4j Desktop Neo4j 提供的 Neo4j Bloom 是用户友好的可视化工具&#xff0c;适合非技术用户直观地浏览图数据。Cypher 是其核心查询语言&#xf…...

为什么 JavaScript 中的 `new` 运算符报错?

在 JavaScript 中&#xff0c;new 运算符通常用于创建一个新对象并调用构造函数来初始化对象。然而&#xff0c;new 运算符可能会引发一些错误&#xff0c;通常是由于以下原因导致的&#xff1a; 构造函数没有正确的定义&#xff1a; 如果使用 new 运算符调用的函数没有正确地定…...

Tomcat,javaweb, servlet , springBoot

在server.xml里配置服务器 <scope>provided</scope>打包的时候&#xff0c;这个jar包不会被打进去&#xff0c;因为tomcat已将封装了这个jar包&#xff0c;没必要要这个...

使用Kimi开发自己的问答应用

概述 Kimi是大家常用的一个人工智能助手&#xff0c;本文使用Kimi开发文档&#xff0c;以node作为后端&#xff0c;开发与一个问答系统 实现效果 Kimi简介 Kimi是由Moonshot AI开发的人工智能助手&#xff0c;擅长中文和英文对话。目标是帮助用户解决问题、提供信息和执行任…...

TypeScript进阶

Typescript进阶 基础知识 JavaScript 的核心特点就是灵活&#xff0c;但随着项目规模的增大&#xff0c;灵活反而增加开发者的心智负担。例如在代码中一个变量可以被赋予字符串、布尔、数字、甚至是函数&#xff0c;这样就充满了不确定性。而且这些不确定性可能需要在代码运行…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...