系统架构设计高级技能 · 系统质量属性与架构评估(二)【系统架构设计师】

news2024/11/23 22:17:23

系列文章目录

系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】
系统架构设计高级技能 · 系统质量属性与架构评估(二)【系统架构设计师】
系统架构设计高级技能 · 软件可靠性分析与设计(三)【系统架构设计师】

现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。
Now everything is for the future of dream weaving wings, let the dream fly in reality.

系统架构设计 · 系统质量属性与架构评估(二)

  • 系列文章目录
  • 一、软件系统质量属性的概念★★★
    • 1.1 开发期的质量属性
    • 1.2 运行期的质量属性
  • 二、面向架构评估的质量属性
    • 2.1 性能
    • 2.3 可用性
    • 2.4 安全性
    • 2.3 可修改性
    • 2.4 易用性
    • 2.5 可测试性
    • 2.6 可靠性
    • 2.7 功能性
    • 2.8 可变性
    • 2.9 互操作性
  • 三、质量属性场景描述
  • 四、系统架构评估
    • 4.1 系统架构评估的重要概念
      • 4.1.1敏感点、权衡点、风险点、非风险点
      • 4.1.2 风险承担者或者相关利益人
      • 4.1.3 场景
    • 4.2 系统架构评估方法
      • 4.2.1 基于场景 - 软件架构分析法SAAM
      • 4.2.2 基于场景 - 架构权衡分析法ATAM
      • 4.2.3 质量属性效用树

一、软件系统质量属性的概念★★★

1.1 开发期的质量属性

开发期的质量属性分为以下子属性:

属性说明
易理解性指设计开发人员理解的难易程度。
可扩展性软件因适应新需求变化而增加新功能的能力,也称为灵活性。
可重用性指重用软件系统或某一部分的难易程度。
可测试性当软件测试以证明其满足需求规范的难易程度。
可维护性当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度。
可移植性将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。

1.2 运行期的质量属性

运行期的质量属性分为以下子属性:

属性说明
性能软件系统及时提供相应的服务能力,如速度、吞吐量和容量等。
安全性软件系统同时兼顾向合法用户提供服务,以及组织非授权使用的能力 。
可伸缩性当用户数和数据量增加时,软件系统维持高服务质量的能力。
互操作性软件系统与其他系统交换数据和相互调用服务的难易程度。
可靠性软件系统在一定时间内持续无故障运行的能力。
可用性系统在一定时间内正常工作的时间所占比例。
鲁棒性软件系统在非正常情况(用户进行非法操作、相关软硬件系统发生故障)下仍正常运行的能力,也称健壮性或容错性。

二、面向架构评估的质量属性

在架构评估过程中,评估人员所关注的是系统的质量属性。

2.1 性能

性能(performance)是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。

例如:

  • 同时支持1000并发
  • 响应时间小于1s
  • 显示分辨率达到4K

提升性能的策略(性能战术)可以从以下几个方面考虑:

  • 资源需求 :
    ①提高计算效率、②减少计算开销、③管理(减少处理事件数量)事件率、④控制采样频率(控制资源的使用)
  • 资源管理 :
    ①引入并发机制、②维持多个副本、③增加可用资源
  • 资源仲裁 :
    资源调度策略:①先进先出、②固定优先级、③动态优先级、④静态调式

2.3 可用性

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

例如:

  • 主服务器故障,1分钟内切换至备用服务器
  • 系统故障,1小时内修复
  • 系统支持7×24小时工作

提升可用性的策略(可用性战术)可以从以下几个方面考虑:

  • 错误检测 :
    ①命令/响应【Ping/Echo】、②心跳、③异常
  • 错误恢复 :
    ①表决、②冗余【主动/被动】、③备份【重新同步、内测、检查点/回滚】
  • 错误避免 :
    ①进程监视器、②事务、③从服务器删除【服务下线】

2.4 安全性

安全性(security)是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性又可划分为机密性、完整性、不可否认性及可控性等特性。

例如:

  • 可抵御SQL注入攻击
  • 对计算机的操作都有完整记录(日志,审计追踪)
  • 用户信息数据库授权必须保证99.9%可用

提升安全性的策略(安全性战术)可以从以下几个方面考虑:

  • 抵抗攻击 :
    ①用户身份验证、②用户授权、③维护数据机密性和完整性、④限制暴露、⑤限制访问
  • 检测攻击 :
    ①入侵系统检测
  • 从攻击中恢复 :
    ①识别攻击者:审计追踪、②恢复状态:冗余【与可用性重叠】

2.3 可修改性

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

例如:

  • 更改系统报表模块,必须在2人周内完成
  • 对Web界面风格进行修改,修改必须在4人月内完成

可修改性分为四个子属性:
可维护性:局部修复使故障对架构的负面影响最小化。
可扩展性:因松散的耦合更易实现新特性/功能,不影响架构。
结构重组:不影响主体进行的灵活配置。
可移植性:适用于多样的环境(硬件平台、语言、操作系统等)。

提升性能的策略(可修改行战术)可以从以下几个方面考虑:

  • 局部化修改 :
    ①高内聚低耦合、②预测变更、③使模块通用、④泛化模块、⑤维持语义的一致性、⑥限制可能的选择、⑦抽象通用服务
  • 防止连锁反应 :
    ①隐藏信息、②维持现有接口、③限制通信路径、④使用仲裁者
  • 推迟绑定时间 :
    ①运行时注册、②配置文件、③多态、④组件更换、⑤遵守已定义的协议

2.4 易用性

易用性关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持的种类。

例如:

  • 界面友好
  • 新用户学习使用系统时间不超过2小时

2.5 可测试性

软件可测试性是指通过测试揭示软件缺陷的容易程度。

例如:

  • 提供远程调试接口,支持远程调试

2.6 可靠性

分为两个子属性:
容错性:出错后仍能保证系统争取运行,且自行修正错误。
健壮性:错误不对系统产生影响,按既定程序忽略错误。

2.7 功能性

需求的满足程度。

2.8 可变性

总体架构可变。

2.9 互操作性

通过可视化或接口方式提供更好的交互操作体验。

三、质量属性场景描述

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

四、系统架构评估

架构评估的基准是架构质量属性。

4.1 系统架构评估的重要概念

4.1.1敏感点、权衡点、风险点、非风险点

敏感点(Sensitivity Point) :是一个或多个构件(和/或构件之间的关系)的特性。

权衡点(Tradeoff Point) :是影响多个质量属性的特性,是多个质量属性的敏感点。

风险点(Risk Point ) :是指架构设计中潜在的、存在问题的架构决策所带来的隐患。

非风险点(Non-Risk Point ) :是指不会带来隐患,一般以“XXX要求是可以实现(或接受)的”方式表达。

例如:

  • 对交易请求处理时间的要求将影响系统的数据传输协议和处理过程的设计(敏感点)
  • 假设每秒中用户交易请求的数量是10个,处理请求的时间为30毫秒,则“在1秒内完成用户的交易请求”这一要求是可以实现的 (非风险点)
  • 目前对系统信用卡支付业务逻辑的描述尚未达成共识,这可能导致部分业务功能模块的重复,影响系统的可修改性 (风险点)
  • 更改加密的级别将对安全性和性能产生影响 (权衡点)

4.1.2 风险承担者或者相关利益人

影响体系结构或被体系结构影响的群体。

4.1.3 场景

确定架构质量评估目标的交互机制,一般采用触发机制(刺激)、环境和影响三方面来考虑。

4.2 系统架构评估方法

架构的评估方法通常分为3类:

  • 基于调查问卷或检查表的评估方法
    是指组织相关人员进行评估,这种方式最简单易行,但是主观性强。

  • 基于度量的评估方法
    强调量化指标,最客观,但是这种方式实施难度大,因为需要评估者对系统非常熟悉,不然很难量化清楚各项指标。

  • 基于场景的评估方法
    筛选出系统的关键场景,根据系统在不同场景中的表现进行评估,这种方式客观程度介于2者之间,这也是目前较为流行的结构评估方法。

基于场景的方式主要有三种(前2种方式用得比较多):

  • 软件架构分析法(SAAM,Software Architecture Analysis Method)
  • 架构权衡分析法(ATAM,Architecture Tradeoff Analysis Method)
  • 成本效益分析法(CBAM,the Cost Benefit Analysis Method)

4.2.1 基于场景 - 软件架构分析法SAAM

SAAM,最初用于分析架构可修改性,后扩展到其它质量属性。
SAAM分析评估架构的过程包括5个步骤 ,如下图:
(1)场景开发
(2)架构描述
(3)单个场景评估
(4)场景交互评估
(5)整体评估
在这里插入图片描述

图4_1 SAAM分析评估过程

4.2.2 基于场景 - 架构权衡分析法ATAM

架构权衡分析法(ATAM,Architecture Tradeoff Analysis Method)是 在SAAM上发展而来。核心是结合质量属性效用树对系统进行评价 ,确定风险点、敏感点、权衡点,并对系统架构做出决策和折中。整个评估过程 强调以质量属性作为评估核心,主要针对性能、实用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中。

ATAM分成4个阶段,如下图:
(1)场景和需求收集
(2)架构视图和场景实现
(3)质量模型构造和分析
(4)质量模型折中
在这里插入图片描述

图4_2 ATAM分析评估过程

4.2.3 质量属性效用树

质量属性效用树:识别质量属性并排序,主要包含性能、可用性、可修改性、安全性四个方面。

性能:性能延时(将用户数据库存储延迟到了最小值300ms,提供了实时的视频图像),交易吞吐量(使认证服务器的平均吞吐量最大化)。

可修改性:新增产品目录,商业产品修改(已小于20人月的工作量添加CORBA中间件,以小于4人周的工作量更改web界面)。

可用性:硬件故障(若站点A断电,要求在3秒内将任务重定向到站点B,若磁盘出现故障,要求在5分钟内重新启动,要在1-5分钟之内检测并恢复网络故障),商业软件故障。

安全性:数据机密性(信用卡交易在99.999%的时间内是安全的,客户数据库z认证在99.999%的时间内能正常工作),数据完整性。

质量属性效用树,示例图如下:
在这里插入图片描述

图4_3 质量属性效用树

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

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

相关文章

山西电力市场日前价格预测【2023-08-08】

日前价格预测 预测明日(2023-08-08)山西电力市场全天平均日前电价为332.93元/MWh。其中,最高日前电价为367.72元/MWh,预计出现在19: 45。最低日前电价为297.45元/MWh,预计出现在13: 30。 价差方向预测 1: 实…

导出LLaMA等LLM模型为onnx

通过onnx模型可以在支持onnx推理的推理引擎上进行推理,从而可以将LLM部署在更加广泛的平台上面。此外还可以具有避免pytorch依赖,获得更好的性能等优势。 这篇博客(大模型LLaMa及周边项目(二) - 知乎)进行…

ctfshow-web4

0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 <?php include($_GET[url]);?> 0x02 Write Up 和web3是相同的内容&#xff0c;这里可以通过任意文件读取的方式来进行利用&#xff0c;这里根据返回包知道是nginx&#xff1a; 默认nginx日志是&#xff1a;/var/log/…

基于PINN的传播动力学研究

分享者&#xff1a;中国传媒大学大数据分析与挖掘实验室博士生张志强 众所周知&#xff0c;我们处于网络信息大爆炸的时代。现代互联网产生了大量的舆情信息&#xff0c;其中很多信息并不是正常的信息&#xff0c;是因为在网络中存在着大量水军或部分恶意造谣者。国家非常重视…

【C++】C++11 新特性总结 | C++ 常见设计模式总结(秋招篇)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言介绍几种C11新特性介绍一下自动类型推导auto和decltype关键字的用法举例讲一下范围基于的for循环介绍一下列表初始化讲一下右值引用&#xff0c;和左值引用的区…

Java数据类型,你不想不学会都不行~

——每一种数据都定义了明确的数据类型&#xff0c;在内存中分配了不同大小的内存空间&#xff08;字节&#xff09; 思维导图 一.整数类型 1.什么是整数类型 —— 用int、short、byte、long存储的整数值就是整数类型 2.整数的类型 类型 所占的字节数 数值…

Chrome开发者工具介绍

Chrome开发者工具介绍 前言1 打开DevTools2 命令菜单3 Elements面板ConsoleJavaScript调试Network 前言 Chrome开发者工具是谷歌浏览器自带的一款开发者工具&#xff0c;它可以给开发者带来很大的便利。常用的开发者工具面板主要包含Elements面板、Console面板、Sources面板、…

【一】SPI IP核使用

一、spi是串行外设接口&#xff08;serial peripheral interface&#xff09;,是高速的、全双工、同步通信总线&#xff0c;标准的spi仅仅使用4个引脚 spi ip核框图&#xff1a; 二、spi核的寄存器描述 三、配置spi核 四、SPI内核编程 alt_avalon_spi_command(alt_u32 base,alt…

React Dva项目 简单引入models中的所有JS文件

我们前面接触的 Dva项目 models目录下的文件还要一个一个引入 其实体验并不是很好 而且如果项目很大那就比较麻烦了 我们可以在 models 下创建一个 index.js 文件 编写代码如下 const context require.context("./", false, /\.js$/); export default context.key…

Java02-迭代器,数据结构,List,Set ,Map,Collections工具类

目录 什么是遍历&#xff1f; 一、Collection集合的遍历方式 1.迭代器遍历 方法 流程 案例 2. foreach&#xff08;增强for循环&#xff09;遍历 案例 3.Lamdba表达式遍历 案例 二、数据结构 数据结构介绍 常见数据结构 栈&#xff08;Stack&#xff09; 队列&a…

如何利用模拟考试系统提升学生复习效果

随着教育技术的发展&#xff0c;现代学生已经不再局限于传统的课本学习方式。模拟考试系统作为一种新型的教学工具&#xff0c;已经逐渐被学校和教师们广泛采用。它不仅能够帮助学生预测和评估自己的学习水平&#xff0c;还可以有效提升学生的复习效果。 第一&#xff0c;树立…

微信小程序集成V3支付接口

官方文档地址&#xff1a;https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_8_1.shtml 小程序开通微信支付 微信小程序集成参考最新先程序集成文档 yml配置&#xff1a; x-pay:v3:#微信关联的小程序的appidappId: wx281xxxxxxxxxxx#微信支付商户号mchId: 164803…

深度学习,计算机视觉任务

目录 计算机视觉任务 1.K近邻算法 2.得分函数 3.损失函数的作用 4.向前传播整体流程 5.反向传播计算方法 计算机视觉任务 机器学习的流程&#xff1a; 数据获取 特征工程 建立模型 评估与应用 计算机视觉&#xff1a; 图像表示&#xff1a;计算机眼中的图像&#…

实际工作中通过python+go-cqhttp+selenium实现自动检测维护升级并发送QQ通知消息(程序内测)

说明&#xff1a;该篇博客是博主一字一码编写的&#xff0c;实属不易&#xff0c;请尊重原创&#xff0c;谢谢大家&#xff01; 首先&#xff0c;今年比较忙没有多余时间去实操创作分享文章给大家&#xff0c;那就给大家分享下博主在实际工作中的一点点内容吧&#xff0c;就当交…

2024考研408-计算机网络 第四章-网络层学习笔记

文章目录 前言一、网络层的功能1.1、网络层功能概述&#xff08;三种功能介绍&#xff09;1.2、SDN基本概念1.2.1、理解转发与路由选择1.2.1.1、转发1.2.1.2、路由选择 1.2.2、数据平面&#xff08;转发&#xff09;1.2.3、控制平面&#xff08;路由计算与选择&#xff09;实现…

九分学长大作文笔记

前言 最近看了《顾家北手把手教你雅思写作》&#xff0c;我觉得收获很少&#xff0c;逻辑感觉很乱&#xff0c;不知道为什么网上全是吹的。在Bilibili上看了九分学长&#xff0c;非常清晰&#xff0c;发现自己很多没有注意到的问题&#xff0c;下面将总结一些对我有用的部分。…

C#,OpenCV开发指南(01)

C#&#xff0c;OpenCV开发指南&#xff08;01&#xff09; 一、OpenCV的安装1、需要安装两个拓展包&#xff1a;OpenCvSharp4和OpenCvSharp4.runtime.win 二、C#使用OpenCV的一些代码1、需要加头文件2、读取图片3、在图片上画矩形框4、 在图片上画直线 一、OpenCV的安装 1、需…

使用 React Native CLI 创建项目

React Native 安装的先决条件和设置 需要掌握的知识点 掌握 JavaScript 基础知识掌握 React 相关基础知识掌握 TypeScript 相关基础知识 安装软件前需要首先安装Chocolatey。Chocolatey 是一种流行的 Windows 包管理器。 安装 nodejs 和 JDK choco install -y nodejs-lts …

接口测试——postman接口测试(三)

目录 1. postman介绍与安装 2. postman发送get请求 3. postman发送post请求 1. postman介绍与安装 安装网址&#xff1a;Postman安装教程&#xff1a;留言找我要即可 2. postman发送get请求 import pymysql from flask import Flask,request# 这里是mysql的基本连接信息 c…

cloudstack management高可用

一、环境说明 CPU&#xff1a; kunpeng 920 操作系统&#xff1a;OpenEuler 22.03 IP角色192.168.157.20mysql192.168.157.21management-server 1192.168.157.22management-server 2192.168.157.30nginx 二、部署 基础环境准备参考【cloudstack测试环境搭建】 1、部署mysql&…