架构设计 相关文档,希望互相学习,****************************
****************************共同进步
知识总览
共19章内容,主要包括:
1)1绪论、2计算机系统、3信息系统、4信息安全技术、5软件工程
2)6数据库设计、7系统架构设计基础知识
3)8系统质量属性与架构评估、9软件可靠性、
10软件架构演化与维护、11未来信息综合技术
4)12信息系统架构设计、13层次式架构设计、14云原生架构设计、
15面向服务架构设计、16嵌入式系统架构设计、17通信系统架构设计、
18安全架构设计、19大数据架构设计

每天进步一点点,加油!小伙伴们!💪
本文学习第9章 软件可靠性基础知识,以下为个人笔记,希望有所帮助,共同学习。
(本章偶尔考察,普及为主,了解即可)
内容包括:
软件可靠性基本概念(定义、定量描述、可靠性目标、意义、广义与侠义可靠性测试)
软件可靠性建模(影响因素、建模方法、模型分类)、
可靠性管理、
软件可靠性设计(容错设计技术、检错设计技术、降低复杂度设计技术、系统配置技术-双击热备、服务器集群技术)、
软件可靠性测试(概念、定义软件运行剖面、测试用例设计、可靠性测试的实施)
软件可靠性评价(概述、可靠性模型选择、可靠性数据的收集、可靠性评估与预测)
第9章 软件可靠性基础知识
软件可靠性基本概念、建模、管理、设计、测试和评价等内容。本章侧重于概念知识,来源于教材,扩展内容较少。单选2-3分,论文也有涉及。
软件可靠性和其他属性一样是衡量软件的重要指标,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采用措施进行可靠性控制。

9.1 软件可靠性基本概念

9.1.1 定义
软件可靠性是指在规定的时间内,软件不引起系统失效的概率。该概率是系统输入和系统使用 的函数,也是软件中存在的缺陷函数;系统输入将确定是否会遇到已存在的缺陷。
软件可靠性是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。
◆软件可靠性和硬件可靠性区别
(1)复杂性:软件复杂性比硬件高,大部分失效来自于软件失效。
(2)物理退化:硬件失效主要是物理退化所致,软件不存在物理退化。
(3)唯一性:软件是唯一的,每个COPY版本都一样,而两个硬件不可能完全一样。
(4)版本更新周期:硬件较慢,软件较快。
9.1.2 定量描述

软件的可靠性 是在软件使用条件、在规定时间内、系统的输入/输出、系统使用等变量构成的 数学表达式。

1.规定时间
规定时间:自然时间、运行时间、执行时间〈占用CPU〉。
2.失效概率
失效概率:软件运行初始时为0,随着时间增加单调递增,不断趋向于1.
3.可靠度
可靠度:软件系统在规定的条件下、规定的时间不发生失效的概率。等于1-失效概率。
4.失效强度
失效强度:单位时间软件系统出现失效的概率。
5.平均失效前时间
平均失效前时间(MTTF):平均无故障时间,发生故障前正常运行的时间。
6.平均恢复前时间
平均恢复前时间(MTTR):平均故障修复时间,发生故障后的修复时间。
7.平均故障间隔时间
平均故障间隔时间(MTBF失效或维护中所需的平均时间,包括故障时间以及检测和维护设备的时间。MTBF=MTTF+MTTR。
系统可用性= MTTF /(MTTF+MTTR)*100%。
不同系统的可靠性公式:1)串联系统:一个设备不可靠,整个就崩溃
系统可靠性R = R1 * R2 * R3....*Rn
- 并联系统:所有设备都不可靠,整个才崩溃
系统可靠性R = 1-(1-R1) * (1-R2) *(1- R3)....*(1-Rn)
对软件运行的影响程度不仅取决于软件失效发生的概率,还和软件失效的严重程度有很大关系。失效严重程度类就是对用户具有相同程度影响的失效集合。◆对失效严重程度的分级可以按照不同的标准进行:按对成本影响、对系统能力的影响等标准划分软件失效的严重程度类。
◆对成本的影响可能包括失效引起的额外运行成本、修复和恢复成本、现有或潜在的业务机会的损失等。由于失效严重程度类的影响分布很广泛,为了按照一定数量的等级去定义失效严重程度类,通常用数量级去划分等级。
9.1.3 可靠性目标
软件可靠性是 指用户对所使用的软件的性能满意程度的期望。可以用可靠度、平均失效时间和 故障强度等来描述。

◆可靠性测试的目的可归纳为以下3个方面。
(1)发现软件系统在需求、设计、编码、测试和实施等方面的各种缺陷。
(2〉为软件的使用和维护提供可靠性数据。
(3)确认软件是否达到可靠性的定量要求。
9.1.4 可靠性测试的意义
可靠性测试的意义是:
(1)软件失效可能造成灾难性的后果。
(2)软件的失效在整个计算机系统失效中的比例较高。
(3)相比硬件可靠性技术,软件可靠性技术不成熟。
(4)软件可靠性问题会造成软件费用增长。
(5)系统对软件的依赖性强,对生产活动和社会生活影响日益增大。
9.1.5 广义的可靠性测试与狭义的可靠性测试
1)广义的可靠性测试是为了最终评价软件系统的可靠性而运用建模、统计、试验、分析和 评价等一系列手段对软件系统实施的一种测试。
2)狭义的可靠性测试指为了获取可靠性数据,按预先确定好的测试用例,在软件预期使用环境中,对软件实施的一种测试。
9.2 软件可靠性建模
9.2.1 影响软件可靠性的因素

软件可靠性模型:是指为预计或估算软件的可靠性所建立的可靠性框图和数学模型。
影响软件可靠性的因素是纷杂而众多的,甚至包括技术以外的许多因素。首先必须考虑影响软件可靠性的主要因素:缺陷的引入、发现和清除。缺陷的引入主要取决于软件产品的特性和软件的开发过程特性。软件产品的特性指软件本身的性质,开发过程特性包括开发技术、开发工具、开发人员的水平、需求的变化频度等。缺陷的发现依靠用户对软件的操作方式、运行环境等,也就是运行剖面。缺陷的清除依赖于失效的发现和修复活动及可靠性方面的投入。
从技术角度看,影响软件可靠性的因素包括:运行环境、软件规模、软件的内部结构、软件的开发方法 和开发环境、软件的可靠性投入。
9.2.2 软件可靠性的建模方法

一个软件可靠性模型通常(但不是绝对)由以下几部分组成:
(1)模型假设。模型是实际情况的简化或规范化,总要包含若干假设,例如测试的选取代表实际运行剖面,不同软件失效独立发生等。
(2〉性能度量。软件可靠性模型的输出量就是性能度量,如失效强度、残留缺陷数等。在软件可靠性模型中性能度量通常以数学表达式给出。
(3)参数估计方法。某些可靠性度量的实际值无法直接获得,例如残留缺陷数,这时需通过一定的方法估计参数的值,从而间接确定可靠性度量的值。
(4〉数据要求。一个软件可靠性模型要求一定的输入数据,即软件可靠性数据。
◆绝大多数的模型包含3个共同假设:(1〉代表性假设。是指可以用测试产生的软件可靠性数据预测运行阶段的软件可靠性行为。
(2)独立性假设。此假设认为软件失效是独立发生于不同时刻,一个软件失效的发生不影响另一个软件失效的发生。
(3)相同性假设。此假设认为所有软件失效的后果(等级)相同,即建模过程只考虑软件失效的具体发生时刻,不区分软件的失效严重等级。
人们常常通过估计或预测的方法来确定模型的参数。确定了模型的参数后,就可以来表示失效过程的很多不同的特性。例如,大多数模型都会对如下的内容进行解析表达:任何时间点所经历的平均失效数。一段时间间隔内的平均失效数。任何时间点的失效强度。失效区间的概率分布。好的软件可靠性模型具有如下重要特性:基于可靠的假设。简单。计算一些有用的量。给出未来失效行为的好的映射。可广泛应用。
9.2.3 软件的可靠性模型分类

软件的可靠性模型分类:
● 种子法模型。
● 失效率类模型。
● 曲线拟合类模型。
● 可靠性增长模型。
● 程序结构分析模型。
● 输入域分类模型。
● 执行路径分析方法模型。
● 非齐次泊松过程模型。
● 马尔可夫过程模型。
● 贝叶斯分析模型。
1.种子法模型。利用捕获-再捕获抽样技术估计程序中的错误数,在程序中预先有意"播种"一些设定的错误"种子",然后根据测试出的原始错误数和发现的诱导错误的比例,来估计程序中残留的错误数。
- 失效率类模型。用来研究程序的失效率。
3.曲线拟合类模型。用回归分析的方法研究软件复杂性、程序中的缺陷数、失效率、失效间隔时间。
4.可靠性增长模型。这类模型预测软件在检错过程中的可靠性改进,用增长函数来描述软件的改进过程。
5.程序结构分析模型。是根据程序、子程序及其相互间的调用关系,形成一个可靠性分析网络。网络中的每个结点代表一个子程序或一个模块,网络中的每一有向弧代表模块间的程序执行顺序。假定各结点的可靠性是相互独立的,通过对每个结点可靠性、结点间转换的可靠性和网络在结点间的转换概率,得出该持续程序的整体可靠性。
6.输入域分类模型。选取软件输入域中的某些样本"点"运行程序,根据这些样本点在"实际"使用环境中的使用概率的测试运行时的成功/失效率,推断软件的使用可靠性。
7.执行路径分析方法模型。分析方法与上面的模型相似,先计算程序各逻辑路径的执行概率和程序中错误路径的执行概率,再综合出该软件的使用可靠性。
8.非齐次泊松过程模型。是以软件测试过程中单位时间的失效次数为独立泊松随机变量,来预测在今后软件的某使用时间点的累计失效数。
9.马尔可夫过程模型。包括:完全改错的线性死亡模型。不完全改错的线性死亡模型。完全改错的非静态线性死亡模型。
10.贝叶斯模型。是利用失效率的试验前分布和当前的测试失效信息,来评估软件的可靠性。
另外,Musa 和 Okumoto 依据模型的不同属性对可靠性模型进行以下分类:1)时间域:有两种,自然或日历时间与执行(CPU〉时间。
2)失效数类:取决于无限时间内发生的失效数是有限的还是无限的。
3)失效数分布:相对于时间系统失效数的统计分布形式,主要的两类是泊松分布型和二项分布型。
4)有限类:对有限失效数的类别适用,用时间表示的失效强度的函数形式。
5)无限类:对无限失效数的类别适用,用经验期望失效数表示的失效强度的函数形式。
9.3 软件可靠性管理

软件可靠性管理是软件工程管理的一部分,它以全面提高和保证软件可靠性为目标,以软件可靠性活动为主要对象,是把现代管理理论用于软件生命周期中的可靠性保障活动的一种管理形式。
软件可靠性管理的内容包括软件工程各个阶段的可靠性活动的目标、计划、进度、任务和修正措施等。可靠性各阶段设计任务如下:
1.需求分析阶段
(1)确定软件的可靠性目标。
(2)分析可能影响可靠性的因素。
(3)确定可靠性的验收标准。
(4)制定可靠性管理框架。
(5)制定可靠性文档编写规范。
(6)制订可靠性活动初步计划。
(7)确定可靠性数据收集规范。
2.概要设计阶段
(1)确定可靠性度量。
(2)制定详细的可靠性验收方案。
(3)可靠性设计。
(4)收集可靠性数据。
(5)调整可靠性活动计划。
(6)明确后续阶段的可靠性活动的详细计划。
(7)编制可靠性文档。
3.详细设计阶段
(1)可靠性设计。
(2)可靠性预测(确定可靠性度量估计值)。
(3)调整可靠性活动计划。
(4)收集可靠性数据。
(5)明确后续阶段的可靠性活动的详细计划。
(6)编制可靠性文档。
4.编码阶段
(1)可靠性测试(含于单元测试)。
(2)排错。
(3)调整可靠性活动计划。
(4)收集可靠性数据。
(5)明确后续阶段的可靠性活动的详细计划。
(6)编制可靠性文档。
5.测试阶段
(1)可靠性测试(含于集成测试、系统测试)。
(2)排错。
(3)可靠性建模。
(4)可靠性评价。
(5)调整可靠性活动计划。
(6)收集可靠性数据。
(7)明确后续阶段的可靠性活动的详细计划。
(8)编制可靠性文档。
6.实施阶段
(1)可靠性测试(验收)
(2)排错。
(3)收集可靠性数据。
(4)调整可靠性模型。
(5)可靠性评价。
(6)编制可靠性文档。
ok, 今天就到这里吧 🤗
相关系列文章,欢迎点赞、收藏,提供意见!
****
计算机系统基础知识 1分:概述、计算机硬件、计算机软件
操作系统 3分:进程管理、存储管理、文件管理、设备管理
数据库技术 3分:数据库设计、关系代数、范式、事务并发、数据库安全、新技术
嵌入式技术 3分:嵌入式硬件、嵌入式操作系统、嵌入式软件开发
计算机网络 3分(超纲较多):OSI七层模型、TCP/IP协议族、网络生命周期、IP地址
其他计算机系统基础知识 1分:计算机语言、多媒体、系统工程
系统性能 1分:性能指标、性能设计
信息系统基础知识 3分:信息系统生命周期、开发方法、五大典型系统
信息安全技术基础 5分:安全属性、信息安全技术、网络安全技术、安全协议
软件工程 12分:概述、需求工程、系统设计、运维、测试、基于构件;
面向对象技术 3分:面向对象基础、分析设计、UML关系、图
项目管理 1分:进度管理、配置管理、质量管理、风险管理
系统架构设计 20分:架构概念、生命周期、ABSD、DSSA、架构风格、
架构复用、质量属性、架构评估
软件可靠性 2分:可靠性建模、软件可靠性设计
软件架构的演化和维护1分:架构演化分类、评估、面向对象架构演化
未来信息综合技术 3分:信息物理系统、人工智能、边缘计算、机器人、数字李生、云计算
数学与经济管理 2分:最小生成树、最短路径、网络与最大流量、线性规划、决策论
知识产权和标准化 2分:知识产权属性、保护期限、产权人确定、侵权判定
专业英语 5分:完形填空,大学英语3级难度,自学
|--------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|
| 【架构专栏】架构考试介绍 | 【架构专栏】架构知识点 |
| 【架构专栏】第1章 绪论 | 【架构专栏】第11章 未来信息综合技术 |
| 【架构专栏】第2章 计算机基础知识 | 【架构专栏】第12章 信息系统架构设计理论与实践 |
| 【架构专栏】第3章 信息系统基础知识 | 【架构专栏】第13章 层次式架构设计理论与实践 |
| 【架构专栏】第4章 信息安全技术基础知识 | 【架构专栏】第14章 云原生架构设计理论与实践 |
| 【架构专栏】第5章 软件工程基础知识 | 【架构专栏】第15章 面向服务架构设计理论与实践 |
| 【架构专栏】第6章 数据库设计基础知识 | 【架构专栏】第16章 嵌入式系统架构设计理论与实践 |
| 【架构专栏】第7章 系统架构设计基础知识 | 【架构专栏】第17章 通信系统架构设计理论与实践 |
| 【架构专栏】第8章 系统质量属性与架构评估 | 【架构专栏】第18章 安全架构设计理论与实践 |
| 【架构专栏】第9章 软件可靠性基础知识 | 【架构专栏】第19章 大数据架构设计理论与实践 |
| 【架构专栏】第10章 软件架构的演化和维护 | |
[架构专栏 知识点]
希望有所帮助,互相学习、共同进步,欢迎点赞、收藏!