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

架构师备考-背诵精华(系统质量属性)

系统质量属性

        根据GB/T 16260.1 定义,从管理角度对软件系统质量进行度量,可将影响软件质量的主要因素划分为6种维度特性包括:功能性、可靠性、易用性、效率、维护性、可移植性

  • 功能性
    • 适合性、准确性、互操作性、依从性、安全性
  • 可靠性
    • 容错性、易恢复性、成熟性
  • 易用性
    • 易学性、易理解性、易操作性
  • 效率
    • 资源特性、时间特性
  • 维护性
    • 可测试性、可修改性、稳定性、易分析性
  • 可移植性
    • 适应性、易安装性、一致性和可替换性

开发期质量属性

        开发期质量属性包括:易理解性、可拓展性、可重用性、可测试性、可移植性

运行期质量属性

        运行期质量属性包括:性能、安全性、可伸缩性、互操作性、可靠性、鲁棒性

质量属性场景描述

        质量属性场景是一种面向特定质量属性的需求,由6部分组成:刺激源、刺激、环境、制品、响应、响应度量

面向架构评估的质量属性

性能

        是指系统的响应能力,及要经过多长时间才能对某个事件做出响应,或者在某段事件内系统所能处理的事件的个数。经常用单位时间内处理事务的数量或系统完成某个事物处理所需的时间来对性能进行定量标识。性能测试经常要使用基准测试程序

性能质量属性场景
  1. 刺激源:用户请求、其他系统触发等
  2. 刺激:事件(定期、随机、偶然事件)
  3. 制品:系统
  4. 环境:正常模式、超载模式
  5. 响应:处理刺激、改变系统状态
  6. 响应度量指标:处理时间所花时间、单位时间内处理事件的数目、处理的错误率/丢失率
提升性能的策略

        提升性能的策略包含以下方式:资源需求、资源管理、资源仲裁

可靠性

        可靠性是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。可靠性是最重要的软件特征,通常用来衡量在规定的条件和时间内,软件完成规定功能的能力。通常用平均失效等待时间MTTF 和平均失效间隔时间 MTBF 来衡量。在失效率为常数和修复时间很短的情况下,MTTF 和 MTBF 几乎相等。可靠性分为两个方面:

  • 容错
    • 容错的目的是错误发生时确保系统正确的行为,并进行内部“修复”。例如在一个分布式软件系统中失去了一个与远程构件的连接,接下来恢复了连接。在修复这样的错误之后,软件系统可以重新或重复执行进程间的操作,直到错误再次发生。
  • 健壮性
    • 这里说的是保护应用程序不受错误使用和错误输入的影响,在发生意外错误事件时确保应用系统处于预先定义好的状态。值得注意的是,和容错相比,健壮性并不是说在错误发生时软件可以继续运行,它只能保证软件按照某种已经定义好的方式终止执行。软件架构对软件系统的可靠性有巨大的影响。例如,软件架构设计上通过在应用程序内部采用冗余机制,或集成监控构件和异常处理,以提升系统可靠性。
软件/硬件可靠性对比
软件可靠性定量描述
  1. 规定时间:人们使用执行时间来度量软件的可靠性最为准确,效果也最好
  2. 失效概率
  3. 可靠度:软件规定的条件下、规定的时间内不发生失效的概率
  4. 失效强度:单位时间软件系统出现失效的概率;
  1. 平均失效前时间(MTTF):Mean Time To Faliure:从t=0 时到故障发生时系统的持续运行时间的期望值,不包括老化失效。
  2. 平均恢复前时间 (MTTR)Mean Time To Restoration:从出现故障到修复成功的一段时间
  3. 平均故障间隔时间(MTBF)Mean Time Between Failures:失效或维护中所需的平均时间,包括故障时间以及检测和维护设备的时间;MTBF = MTTF+ MTTR

影响软件可靠性的因素
软件可靠性建模

        可靠性建模的步骤包括:模型假设、性能度量、参数估计方法、数据要求

  1. 模型假设。模型是实际情况的简化或规范化,总要包含若干假设,例如测试的选取代表实际运行剖面,不同软件失效独立发生等。
  2. 性能度量。软件可靠性模型的输出量就是性能度量,如失效强度、残留缺陷数等。在软件可靠性模型中性能度量通常以数学表达式给出。
  3. 参数估计方法。某些可靠性度量的实际值无法直接获得,例如残留缺陷数,这时需要通过一定的方法估计参数的值,从而间接确定可靠性度量的值。估计是通过收集到的失效数据进行统计分析,利用一定的推导过程归纳出模型的参数;预测则是使用软件产品自身的属性和开发过程来确定模型的参数,这种方法可以在开始执行程序前完成。
  4. 数据要求:一个软件可靠性模型要求一定的输入数据,即软件可靠性数据。不同类型的软件可靠性模型可能要求不同类型的软件可靠性数据。
软件的可靠性模型分类

类型

描述

种子法模型

预先在程序中播种错误“种子”,根据测试找出错误以及估计残留错误数量。

失效率类模型

用来研究程序的失效率

曲线拟合类模型

用回归分析的方法研究软件复杂性、程序中的缺陷数、失效率、失效间隔时间,包括参数方法和非参数方法两种。

可靠性增长模型

预测软件在检测过程中的可靠性改进,用增长函数来描述软件的改进过程

程序结构分析模型

根据程序、子程序及其相互间的调用关系,形成一个可靠性分析网络

输入域分类模型

选取软件输入域中的某些样本“点”运行程序,根据这些样本点在“实际”使用环境的使用概率的测试运行时的成功/失效率,推断软件的使用可靠性。

执行路径分析方法模型

先计算程序各逻辑路径的执行概率和程序中错误路径的执行概率,再综合出该软件的使用可靠性

非齐次泊松过程模型

以软件测试过程中单位时间的失效次数为独立泊松随机变量,来预测在今后软件的某使用时间点的累计失效数

马尔可夫过程模型

用于预测未来的数学模型

贝叶斯模型

利用失效率的试验前分布和当前的测试失效信息,来评估软件的可靠性

软件可靠性管理

        软件可靠性管理分为六个阶段:需求分析阶段、概要设计阶段、详细设计阶段、编码阶段、测试阶段、实施阶段

需求分析阶段

概要设计阶段

详细设计阶段

编码阶段

测试阶段

实施阶段

软件可靠性设计
可靠性测试
可靠性评价过程

        可靠性的评价过程包括:选择可靠性模型、收集可靠性数据、可靠性评估和预测

可用性

        可用性是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。

可用性质量属性
  1. 刺激源:故障(来自系统内部或外部)
  2. 刺激:系统出错,系统崩溃(反复出错),给出结果不及时,给出错误结果
  3. 制品:计算或存储或网络
  4. 环境:正常状态,降级模式
  5. 响应:错误报告,回传厂家;通知管理员或其它系统;关闭系统,系统在维修期间不可用
  6. 响应度量指标:故障时间百分比,平均故障修复时间,平均无故障时间
提升可用性的策略

提升可用性的策略包括:错误检测、错误恢复、错误避免

安全性

        是指系统在合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性可根据系统可能受到的安全威胁类型来分类。安全性又可分为机密性、完整性、不可否认性及可控性等特性。其中,机密性保证信息不泄露给未授权的用户、实体或过程。完整性保证信息的完整和准确,防止信息被非法修改;不可否认性是指信息交换的双方不能否认其在交换过程中发送信息或接收信息的行为;可控性保证对信息的传播及内容具有控制的能力,防止为非法者所用。

安全性质量属性场景

提升安全性的策略

        提升安全性的策略包括:抵抗攻击、检测攻击、从攻击中恢复

可修改性

        可修改性是指能够快速地以较高的性价比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价来衡量可修改性。可修改性分为4个方面

可修改性质量属性场景
提升可修改性的策略

提升可修改性的策略有:局部化修改、防止连锁反应、延迟绑定时间

功能性

        是系统完成所期望的工作的能力。一项任务的完成需要系统中许多或大多数构件的相互协作。

可变性

        是指架构经扩充或变更而成为新架构的能力。这种新架构应该符合预先定义的规则,在某些方面不同于原有的架构。当要将某个架构作为一系列相关产品的基础时,可变性是很重要的。

互操作性

        作为系统组成部分的软件不是独立存在的,通常与其他系统或自身环境相互作用。为了支持互操作性,软件架构必须为外部可视的功能特性和数据结构提供精心设计的软件入口。程序和其他编程语言编写的软件系统的交互作用就是互操作性的问题,这种互操作性也影响应用的软件架构。

http://www.lryc.cn/news/462793.html

相关文章:

  • Pycharm下载安装教程(详细步骤)+汉化设置教程
  • 网络安全入门
  • 你真的了解Canvas吗--解密十【ZRender篇】
  • mac安装brew时踩坑解决方案
  • 基于Handsontable.js + Excel.js实现表格预览和导出功能(公式渲染)
  • 重学SpringBoot3-集成Redis(十三)之点排行榜实现
  • Java 中方法参数传递的陷阱
  • 哪家云电脑便宜又好用?ToDesk云电脑、顺网云、达龙云全方位评测
  • 【汇编语言】寄存器(内存访问)(三)—— 字的传送
  • 6 机器学习之应用现状
  • 相似度为 K 的字符串
  • [云] Project Analysis
  • 腾讯六宫格本地识别,本地模型识别,腾讯六图识别
  • Transformer图解以及相关的概念
  • Nginx缓存静态文件
  • 【隐私计算】隐语HEU同态加密算法解读
  • 用C#实现互斥操作
  • 【黑马点评优化】之使用Caffeine+Redis实现应用级二层缓存
  • CEEMDAN +组合预测模型(BiLSTM-Attention + ARIMA)
  • 2.1.ReactOS系统中断描述符的格式KIDTENTRY结构体
  • 三、ElementPlus下拉搜索加弹窗组件的封装
  • androidStudio编译导致的同名.so文件冲突问题解决
  • 大学新生编程入门指南:如何选择编程语言与制定学习计划
  • SpringAI快速上手
  • 07 django管理系统 - 部门管理 - 搜索部门
  • 数据操作学习
  • 什么是网络代理
  • 安防监控摄像头图传模组,1公里WiFi无线传输方案,监控新科技
  • 问:JVM中GC类型有哪些?触发条件有哪些?区别是啥?
  • 【操作系统的使用】Linux 输入输出重定向:掌握控制台的高级用法