系统架构30 - 质量属性

质量属性

  • 概念
    • 开发期质量属性
    • 运行期质量属性
  • 面向架构评估的质量属性
  • 质量属性场景描述

软件系统属性包括功能属性和质量属性,软件架构重点关注的是质量属性。架构的基本需求是在满足功能属性的前提下,关注软件系统质量属性。为了精确、定量地表达系统的质量属性,通常会采用质量属性场景的方式进行描述。

概念

软件系统的质量就是“软件系统与明确地和隐含地定义的需求相一致的程度”。

更具体地说,软件系统质量是软件与明确地叙述的功能和性能需求文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。

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

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

软件系统质量属性 (Quality Attribute) 是一个系统的可测量或者可测试的属性,用来描述系统满足利益相关者 (Stakeholders) 需求的程度。基于软件系统的生命周期,可以将软件系统的质量属性分为开发期质量属性运行期质量属性 2个部分。

开发期质量属性

开发期质量属性主要指在软件开发阶段所关注的质量属性,主要包含 6 个方面。
(1)易理解性:指设计被开发人员理解的难易程度。
(2)可扩展性:软件因适应新需求或需求变化而增加新功能的能力,也称为灵活性。
(3)可重用性:指重用软件系统或某一部分的难易程度。
(4)可测试性:对软件测试以证明其满足需求规范的难易程度。
(5)可维护性:当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度。
(6)可移植性:将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。

运行期质量属性

运行期质量属性主要指在软件运行阶段所关注的质量属性,主要包含 7 个方面。
(1)性能:性能是指软件系统及时提供相应服务的能力,如速度、吞吐量和容量等的要求。
(2)安全性:指软件系统同时兼顾向合法用户提供服务,以及阻止非授权使用的能力。
(3)可伸缩性:指当用户数和数据量增加时,软件系统维持高服务质量的能力。例如通过增加服务器来提高能力。
(4)互操作性:指本软件系统与其他系统交换数据和相互调用服务的难易程度。
(5)可靠性:软件系统在一定的时间内持续无故障运行的能力。
(6)可用性:指系统在一定时间内正常工作的时间所占的比例。可用性会受到系统错误,恶意攻击,高负载等问题的影响。
(7)鲁棒性:是指软件系统在非正常情况(如用户进行了非法操作、相关的软硬件系统发生了故障等)下仍能够正常运行的能力,也称健壮性或容错性。

面向架构评估的质量属性

  1. 性能:指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。如响应时间、吞吐量
    设计策略:优先级队列、增加计算资源、减少计算开销、引人并发机制、采用资源调度等
  2. 可靠性:是指系统在一段时间内保持正常运行而不发生故障的能力。它强调了系统的稳定性和可靠性,通常是通过衡量系统在一段时间内发生故障的概率来评估的。一个可靠性高的系统意味着它很少出现故障,用户可以信任它的稳定性。可靠性有一些指标需要了解。如MTTF(平均故障时间)、MTBF(平均故障间隔时间)、MTTR(平均故障修复时间)。
    可靠性通常用平均失效等待时间 (Mean Time To Failure, MTTF) 和平均失效间隔时间 (Mean Time Between Failure, MTBF) 来衡量。在失效率为常数和修复时间很短的情况下, MTTF 和 MTBF几乎相等。可靠性可以分为两个方面:容错、健壮性
    设计策略:心跳、Ping/Echo、冗余、选举
  3. 可用性是指系统在需要的时候可供使用的能力,即系统处于可操作状态的时间比例。可用性通常通过计算系统在一定时间内可操作的百分比来评估。一个高可用性的系统意味着它在大部分时间内都是可用的,用户可以随时访间和使用它
    设计策略:心跳、Ping/Echo、冗余、选举
  4. 安全性:是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。如保密性、完整性、不可抵赖性、可控性。
    设计策略:人侵检测、用户认证、用户授权、追踪审计
  5. 可修改性:指能够快速的以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量。
    设计策略:接口-实现分类、抽象、信息隐藏(是不是感觉有点像结构化开发和面向对象开发的设计原则)
  6. 功能性:是系统所能完成所期望的工作的能力。一项任务的完成需要系统中许多或大多数构件的相互协作。
  7. 可变性(可扩展性):指体系结构经扩充或变更而成为新体系结构的能力。这种新体系结构应该符合预先定义的规则,在某些具体方面不同于原有的体系结构。当要将某个体系结构作为一系列相关产品的基础时,可变性是很重要的。
  8. 互操作性作为系统组成部分的软件不是独立存在的,经常与其他系统或自身环境相互作用。为了支持互操作性,软件体系结构必须为外部可视的功能特性和数据结构提供精心设计的软件入口。程序和用其他编程语言编写的软件系统的交互作用就是互操作性的问题,也影响应用的软件体系结构,
  9. 易用性:它关注的是软件系统的用户界面和交互设计,以确保用户能够轻松、高效地使用系统,并感到满意易用性不仅关乎用户界面的外观,还包括用户体验、交互流程和用户学习曲线等方面

质量属性场景描述

为了精确描述软件系统的质量属性,通常采用质量属性场景 (Quality Attribute Scenario) 作为描述质量属性的手段。质量属性场景是一个具体的质量属性需求,是利益相关者与系统的交互的简短陈述。

质量属性场景是一种面向特定质量属性的需求。它由六部分组成:

  • 刺激源 (Source): 这是某个生成该刺激的实体(人、计算机系统或者任何其他刺激器)。
  • 刺激 (Stimulus): 该刺激是当刺激到达系统时需要考虑的条件。
  • 环境 (Environment): 该刺激在某些条件内发生。当激励发生时,系统可能处于过载、运行或者其他情况。
  • 制品 (Artifact): 某个制品被激励。这可能是整个系统,也可能是系统的一部分。
  • 响应 (Response): 该响应是在激励到达后所采取的行动。
  • 响应度量 (Measurement): 当响应发生时,应当能够以某种方式对其进行度量,以对需求进行测试。

质量属性场景主要关注可用性、可修改性、性能、可测试性、易用性和安全性六类质量属性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/729926.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营day54| 392. 判断子序列、115. 不同的子序列

392、判断子序列: class Solution(object):def isSubsequence(self, s, t):""":type s: str:type t: str:rtype: bool"""dp [[0] * (len(t)1) for _ in range(len(s)1)]for i in range(1, len(s)1):for j in range(1, len(t)1):if …

社区店选址评估的关键指标:确保商业成功的重要因素

对于想开实体店或创业的人来说,选址是决定商业成功的关键因素之一。作为一名开鲜奶吧5年的创业者,我在网上持续分享开店的干货和见解。 在这篇文章中,我将详细介绍社区店选址评估的关键指标,帮助你确保商业成功。 1、人流量&…

js之版本号排序

版本号排序 给定一个由版本号组成的数组,按照版本号由小到大排序 假如版本号如下 : ["0.1.1", "2.3.3", "0.302.1", "4.2", "4.3.5", "4.3.4.5"];原理很简单,通过自定义sort排…

2.DOM-事件基础(注册事件、tab栏切换)(案例:注册、轮播图)

案例 注册事件 <!-- //disabled默认情况用户不能点击 --><input type"button" value"我已阅读用户协议(5)" disabled><script>// 分析&#xff1a;// 1.修改标签中的文字内容// 2.定时器// 3.修改标签的disabled属性// 4.清除定时器// …

如何在Windows上使用Docker,搭建一款实用的个人IT工具箱It- Tools

文章目录 1. 使用Docker本地部署it-tools2. 本地访问it-tools3. 安装cpolar内网穿透4. 固定it-tools公网地址 本篇文章将介绍如何在Windows上使用Docker本地部署IT- Tools&#xff0c;并且同样可以结合cpolar实现公网访问。 在前一篇文章中我们讲解了如何在Linux中使用Docker搭…

设计模式(十):抽象工厂模式(创建型模式)

Abstract Factory&#xff0c;抽象工厂&#xff1a;提供一个创建一系列相关或相互依赖对 象的接口&#xff0c;而无须指定它们的具体类。 之前写过简单工厂和工厂方法模式(创建型模式)&#xff0c;这两种模式比较简单。 简单工厂模式其实不符合开闭原则&#xff0c;即对修改关闭…

[MYSQL]当数据库被攻破如何重新恢复

前情提要&#xff1a;mysql数据库默认密码、默认端口没有改&#xff0c;也没做安全防护&#xff0c;导致被攻破被索要比特币。 那我们自然是不能给他们的&#xff0c;下面罗列我的补救方法。 密码修改相关 第一步大家自然都会想到先去修改密码&#xff1a; mysqladmin -u roo…

光谱下的养殖业:数据可视化的现代变革

在数字化时代&#xff0c;数据可视化在养殖业中崭露头角&#xff0c;为这一传统行业注入了新的活力。无论是家禽养殖还是水产养殖&#xff0c;数据可视化都以其直观、高效的特点&#xff0c;为养殖业带来了全新的发展机遇。下面我就以可视化从业者的角度&#xff0c;简单聊聊这…

腾讯云轻量 2核2G4M新用户首购活动,99续费同价来了!!

阿里云199一年续费同价&#xff0c;腾讯云99一年续费同价&#xff0c;平台卷起来&#xff0c;对用户的角度来说&#xff0c;真的是香麻了~ 腾讯云新春采购节&#xff0c;2核2G4兆的基础配置&#xff0c;新官方直接放大招&#xff0c;99一年&#xff0c;活动期间内&#xff0c;…

OpenAI (ChatGPT)中国免费试用地址

GitHub - click33/chatgpt---mirror-station-summary: 汇总所有 chatgpt 镜像站&#xff0c;免费、付费、多模态、国内外大模型汇总等等 持续更新中…… 个人能力有限&#xff0c;搜集到的不多&#xff0c;求大家多多贡献啊&#xff01;众人拾柴火焰高&#xff01;汇总所有 cha…

202104 CSP认证 | DHCP服务器

3. DHCP服务器 我天呢经历了带配额的文件系统我真的极其挫败&#xff0c;然后开始写的时候觉得这个题感觉怎么有点简单…然后就觉得肯定是自己有很多东西没有想到&#xff0c;而且写的时候破罐子破摔觉得肯定会超时… 结果一写&#xff01;哦买噶居然满分了&#xff01; 脑子不…

【探索Linux】—— 强大的命令行工具 P.26(网络编程套接字基本概念—— socket编程接口 | socket编程接口相关函数详细介绍 )

阅读导航 引言一、socket 常见API表二、函数详细介绍01. socket()02. bind()03. listen()04. accept()05. connect()06. send()07. recv()08. close()09. select()10. getaddrinfo()11. sendto()12. recvfrom()13. setsockopt()14. getsockopt()15. shutdown()16. inet_pton()1…

【SpringBoot】多环境切换的灵活配置

文章目录 profile 的使用激活 profile 的方式命令行启动idea 中配置配置文件中激活 开发中最灵活的多环境配置创建四个配置主配置文件其他几个环境配置使用方式 配置文件拆分总结 在日常的开发中&#xff0c;一般都会分好几种环境&#xff0c;比如通常的 开发环境&#xff1a;一…

EXSI create datastore

文章目录 1. 简介2. 清空磁盘3. 删除表4. 创建database 1. 简介 在 ESXi 环境中创建数据存储(Datastore)的步骤如下: 登录 vSphere Web Client 打开 Web 浏览器,输入 ESXi 主机或 vCenter Server 的 IP 地址,使用有权限的账户登录。 在 ESXi 环境中创建数据存储(Datastore)…

每天一个数据分析题(一百九十六)

在多元线性回归模型的自变量选择方法中&#xff0c;关于向后回归法和逐步回归法的描述&#xff0c;以下哪些是正确的&#xff1f; A. 向后回归法开始时包含所有自变量&#xff0c;并逐步剔除每个不显著的变量。 B. 逐步回归法结合了向前回归法和向后回归法&#xff0c;可以在…

Linux 关于NTP同步硬件时钟的可靠性验证

Linux关于NTP同步硬件时钟的可靠性验证 1. 常见的时钟类型1.1 系统时钟1.2 硬件时钟 2. 常见时钟同步方式2.1 ntpd服务2.1.1 推荐配置/etc/ntp.conf2.1.2 推荐配置/etc/sysconfig/ntpd 2.2 定时任务ntpdate2.3 ntp命令同步状态相关命令解读2.3.1 ntpq -pn解读2.3.2 ntpdate -u解…

SpringCloud Ribbon 负载均衡服务调用

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第三篇&#xff0c;即介绍 Ribbon 负载均衡服务调用 二、概述 2.1 Ribbon 是什么 Spring Cloud Ribbon…

OpenCV学习笔记(三)——对于图片的基本操作

目录 读取图片和显示图片 显示图片的大小 将图像设置为灰度图 将图片重新写回指定的地址 显示图片的尺寸 获取图片的类型 读取图片和显示图片 在OpenCV使用cv2.imread()来读取图片&#xff0c;例如&#xff0c;在D盘的Photo的文件夹中有一张图片名称为1的jpeg的图片&am…

MySQL-MVCC:概述、工作原理、readView实现快照读、数据库解决问题、MVCC无法防止超卖

MySQL-MVCC&#xff1a;概述、工作原理、readView实现快照读、数据库解决问题、MVCC无法防止超卖 一、概述二、MVCC工作原理三、readView实现快照读四、MVCC 可以为数据库解决什么问题五、MVCC无法防止超卖 一、概述 多版本并发控制&#xff08;Multi-Version Concurrency Con…

无法使用debugger,debugger在项目中不生效,导致无法有效排查问题

debugger是浏览器提供的调试语句&#xff0c;其主要是通过停止JS的执行&#xff0c;相当于设置断点。它的使用方法很简单&#xff0c; 只需要在我们的JS语句中&#xff0c; 插入一行debugger; 即可。 在JS代码编写的过程中&#xff0c;我们都会通过浏览器的调试模式&#xff08…