软考高级架构 - 8.2 - 系统架构评估 - 超详细讲解+精简总结

8.2-系统架构评估        

        系统架构评估就是对系统架构的质量进行分析,以便帮助设计者作出架构决策,确保系统能够符合需求。评估方法大致分为三种:

  1. 基于问卷或检查表:通过设计好的问卷或清单,收集开发人员和相关人员的反馈。这种方式依赖于评估者的经验和主观判断,可能带有一定的主观性

  2. 基于场景:由卡耐基梅隆大学提出的方式,像 ATAM(架构权衡分析法)和 SAAM(软件架构分析法)都是基于场景的评估方法。这里的“场景”指系统的具体使用或变化情况,通过分析架构在场景中的表现,判断其是否符合需求。

  3. 基于度量:测量架构的各项指标来评估,比如性能、可靠性等。首先将质量需求与度量标准进行映射,然后从架构文档中获取数据,最终通过这些指标来评估系统的质量属性。

8.2.1 重要概念

  • 敏感点 (Sensitivity Point) 和权衡点 (Tradeoff Point)

    • 敏感点:是架构中影响某个质量目标的“关键点”。比如,如果想让系统反应更快,可能得特别关注一些核心模块的设计。
    • 权衡点:是指对多个质量目标有影响的“重点”,往往需要在不同目标之间找到平衡。比如,增加加密可以提高安全性,但也可能让系统变慢,这样就得在安全和性能之间取舍。
  • 风险承担者 (Stakeholders)

    • 风险承担者,也称利益相关人跟系统设计有利益关系的人,比如开发人员、用户、运维人员等。每个人都有自己最关心的质量目标,像用户在意易用性,开发人员在意性能,而运维人员在意系统是否容易维护。
  • 场景 (Scenarios)

    • 场景是在架构评估中用来明确质量目标的描述方法。每个场景简短地描述系统在某个特定环境下的表现,比如高负载或网络故障等。场景通常由刺激 (Stimulus)环境 (Environment)响应 (Response)三个部分构成,用来分析架构在实际情况下的表现和满足需求的程度。

8.2.2 系统架构评估方法

1、SAAM——基于场景的软件架构分析方法

        SAAM是一种系统化的架构评估工具,通过场景模拟来探测和优化架构的质量表现,帮助设计出更稳健、更易维护的系统。

  1. 背景和目的
    SAAM由卡耐基梅隆大学开发,是一种基于“非功能性需求”的架构分析方法。最初用于比较不同架构的可修改性,后来扩展为一种通用评估方法(其他质量属性)

  2. 评估技术——方法
    SAAM采用“场景分析”技术,通过模拟系统可能的使用场景(如系统需支持的活动和状态变化)来评估架构的表现。例如,查看架构是否便于修改、是否支持多种环境等。

  3. 质量属性
    SAAM重点分析“可修改性”这一属性,也适用于其他质量需求,如可移植性和可扩展性。

  4. 风险承担者——利益相关者
    SAAM促成了不同利益相关方(如用户、开发人员、运维人员等)之间的讨论,以便在设计上形成共识。这一共识是后续决策的依据。

  5. 架构描述方式
    SAAM面向架构最终版本,主要涵盖功能、结构、分配等三方面,确保架构清晰明了,便于各方理解。

  6. SAAM评估步骤

    • 场景开发:通过与利益相关方讨论,生成一系列任务场景,即系统需支持的各种活动。
    • 架构描述:使用简明的架构图描述系统中的模块和关系。
    • 单个场景评估:评估每个场景与系统架构的匹配度。
    • 场景交互分析:分析各场景间的相互影响,列出它们对系统的整体影响。
    • 总体评估:综合场景分析结果,对架构的优缺点进行总结,明确可修改性、扩展性等质量属性的表现。
  7. 知识复用:不考虑

  8. 方法验证:SAAM已应用于多个实际系统,证明其效果和实用性。

2、ATAM方法——架构权衡分析方法

  • 目的和背景
    基于SAAM方法,重点在系统开发前期,帮助理解架构设计中可能的多个质量平衡

  • 质量属性关注点
    分析多个相互竞争的质量属性,开始时考虑的是系统的可修改性、安全性、性能和可用性。

  • 利益相关者的参与
    ATAM需要系统中的各类利益相关者(例如用户、开发人员、维护人员等)参与。

  • 架构描述方式
    架构描述基于多种视图,包括功能结构、代码结构等,用以全面呈现系统架构的各个方面。借助消息顺序图等方式展示系统的运行时交互情况。

  • 评估技术
    场景分析”:用例场景(典型使用情况)、增长场景(系统可能的改动)和探测场景(系统的极端负载情况)。“定性启发式分析”:是精确分析模型的粗颗粒度版本。

  • 分析流程
    ATAM包括四个阶段:

    • 阶段1:场景和需求收集。收集系统的典型场景和相关需求,明确对系统的约束条件。
    • 阶段2:架构视图和场景实现。通过场景来理解系统在不同视图下的实现。
    • 阶段3:属性模型构建与分析。专家独立构建模型,分析各质量属性,揭示架构的敏感和权衡点。
    • 阶段4:权衡。对比不同设计方案,确认在多个质量属性之间的折中方案。
  • 效用树工具
    ATAM使用“效用树”工具对质量属性分类,并优先级排序。效用树的结构包括根节点(质量属性)、属性分类、质量属性场景(叶子节点),重点关注性能、安全性、可修改性和可用性。这种分类帮助确定优先级,确保系统设计符合利益相关者的核心需求

  • 方法验证
    ATAM在多个实际系统中应用,如交通控制系统、嵌入式系统等。其工具和方法仍在不断发展,特别是在架构描述、场景分析和工具支持方面。

3、CBAM——成本效益分析法

        基于ATAM发展的,利用ATAM分析的结果,进一步评估架构策略的经济回报。CBAM主要关注在复杂系统设计中的经济性,通过建模架构设计决策的成本和收益,帮助利益相关者做出更合理的投资决策。

CBAM的八个步骤:

  1. 整理场景
    从ATAM中获取的场景中,筛选出与商业目标高度相关的场景,并优先选择其中权重最高的1/3进行详细分析。

  2. 细化场景
    对每个场景进行详细分析,获取其在不同条件下的质量属性响应(例如最坏、当前、期望和最好情况),用于后续的效用评估。

  3. 确定场景的优先级
    利益相关者根据每个场景的“期望”质量属性响应值投票,生成每个场景的权重(即其优先级),为后续的架构策略评估奠定基础。

  4. 分配效用
    建立场景效用表,定义各场景在不同响应级别下的效用值,以便明确哪些质量属性响应最有助于实现商业目标

  5. 架构策略与质量属性的关系
    建立“架构策略-场景-响应级别”的映射,明确每个架构策略对质量属性的影响程度。

  6. 计算期望效用
    使用内插法确定期望质量属性响应的效用,通过前两步的效用表和映射关系,计算各架构策略对各场景的期望效用值。

  7. 计算总收益
    综合第3步的场景优先级和第6步的效用值,得出各架构策略的总收益分数。

  8. 按ROI选择架构策略
    根据估算的架构策略成本,结合第7步的收益值,计算每个策略的ROI(投资回报率),并按ROI排序,选择最优的策略组合。

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

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

相关文章

【LLM】Generative Agents和代码实践

note Generative Agents是2023年斯坦福提出的agent小镇,通过memory->reflection->planning的框架提高NPC的行为目标性,给游戏NPC的灵活设计带来了可能。Generative Agents是一种多智能体交互的框架,它模拟现实中的人类行为。这些Agent…

K. Farm Management 【CCPC2024哈尔滨站】

K. Farm Management 思路: 很容易想到的策略: 给每个作物都安排最短的时长 l l l,剩下的时间作为可支配时间。选择删除收益最高的作物,然后将尽可能多的可支配时间用于这个作物。或者选择删除收益低时间还长的作物,然后将时间解…

智能 ODN 系统研究与设计

智能 ODN 系统研究与设计 摘 要:为了解决ODN面临的光纤错综复杂,故障定位低效等问题,引入电子标签,智能OTDR技术,提出了一种基于电子标签、光纤检测笔和智能OTDR故障监测的智能 ODN 解决方案,并重点讲述了智能ODN系统的…

Openlayers实现长度测量

概述 在 Openlayers 中,计算两点之间的距离,通常会用到ol/sphere模块。ol/sphere模块主要用于处理与球体(特别是地球球体)相关的数学和几何计算。而长度测量主要用到ol/sphere中的getDistance函数。 getDistance函数用于计算地球表面两点之间的距离,通常用于经纬度坐标。…

xftp连接中不成功 + sudo vim 修改sshd_config不成功的解决方法

我们使用sudo vim不成功,但是我们使用sudo su就可以 了! root用户权利更大! 喵的,终于成功了,一个xftp连接半天不成功。(添加上面的内容就可以连接成功了↑)

常用的c++特性-->day02

可调用对象 案例 #include <iostream> #include <string> #include <vector> using namespace std;using funcptr void(*)(int, string);int print(int a, double b) {cout << a << ", " << b << endl;return 0; } // …

应急车道占用检测算法的技术方案与应用

应急车道是高速公路上的生命通道&#xff0c;专门用于救护车、消防车、警车等紧急车辆通行&#xff0c;帮助应对突发状况。然而&#xff0c;一些驾驶员出于各种原因违规占用应急车道&#xff0c;阻碍救援车辆的正常通行&#xff0c;导致交通救援效率大幅下降&#xff0c;甚至加…

卡尔曼滤波算法Kalman filter algorithm

一、假如 状态向量服从高斯分布&#xff1a; 而且状态转移是线性的&#xff1a; 测量是状态的线性关系&#xff08;带噪声&#xff09; 初始状态的置信度也是正态分布 二、卡尔曼滤波的算法流程为 疑问&#xff1a;多测量融合&#xff0c;是不是用不同的传感器测量值去重复5…

java_继承

1.为啥用 继承? Pupil类 package com.hspedu.extend;// 小学生->模拟小学生考试的情况 public class Pupil {public String name;public int age;private double score;public void setScore(double score) {this.score score;}public void testing() {System.out.printl…

Redis 缓存击穿

目录 缓存击穿 什么是缓存击穿&#xff1f; 有哪些解决办法&#xff1f; 缓存穿透和缓存击穿有什么区别&#xff1f; 缓存雪崩 什么是缓存雪崩&#xff1f; 有哪些解决办法&#xff1f; 缓存预热如何实现&#xff1f; 缓存雪崩和缓存击穿有什么区别&#xff1f; 如何保…

【Redis的安装以及主从复制的搭建】配置Redis的哨兵模式

文章目录 一、安装Redis1、上传、解压、重命名2、安装GCC环境3、编译源码4、进行安装5、修改配置文件redis.conf 二、Redis主从复制搭建1、创建文件夹用来实现主从复制 三、配置Redis的哨兵模式1、创建文件夹2、修改sentinel.conf配置文件3、启动 一、安装Redis 1、上传、解压…

WPF中的转换器

单值转换器 1.创建项目后下载两个NuGet程序包 2.先定义一个转换器实现IValueConverter接口 using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; usin…

GEE Ui——批量查询Sentinel-2 图像无云区域的可视化应用(提供缩略图)

目录 简介 功能选项 函数 Map.clear() No arguments. Returns: ui.Map Map.onClick(callback) Arguments: Returns: String reduceRegion(reducer, geometry, scale, crs, crsTransform, bestEffort, maxPixels, tileScale) Arguments: Returns: Dictionary toLis…

汇编练习-1

1、要求 练习要求引自《汇编语言-第4版》实验10.3(P209页) -编程&#xff0c;将data段中的数据&#xff0c;以10进制的形式显示出来 data segment dw 123,12666,1,8,3,38 data ends 2、实现代码(可惜没找到csdn对8086汇编显示方式) assume cs:codedata segmentdw 16 dup(0) ;除…

xml格式转为txt格式?

数据集的标签格式为xml格式&#xff0c;转为yolo的训练格式&#xff1a; 1.创建一个格式转化的.py文件将下面代码复制&#xff1a; import os import glob import xml.etree.ElementTree as ETdef get_classes(classes_path):with open(classes_path, encodingutf-8) as f:cl…

M - Weird Ceiling 【CCPC2024哈尔滨站】

M - Weird Ceiling 思路: 注意到 f ( n , i ) f(n,i) f(n,i) 的值为 n y ( i ) \frac{n} {y(i)} y(i)n​ &#xff0c;其中 y ( i ) y(i) y(i) 为 n n n 小于等于 i i i 的最大因数。 那么先找到 n n n的所有因数&#xff0c;包括 1 1 1和它本身&#xff0c;在数组a[]中升…

机器学习与数学公式

目录 在机器学习中&#xff0c;将公式应用到算法程序上主要涉及以下几个步骤&#xff1a; 1、数学公式转换成编程逻辑&#xff1a; 2、选择合适的编程语言和工具&#xff1a; 3、使用矩阵运算和优化方法&#xff1a; 4、实现算法逻辑&#xff1a; 5、将公式封装成函数…

基于微信小程序的校园失物招领系统的研究与实现(V4.0)

博主介绍&#xff1a;✌stormjun、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…

芯突破 | 国产PCIe桥接芯片掀起的连接革命

PCIe桥接芯片应运而生 随着计算机技术的快速发展&#xff0c;硬件性能不断提升&#xff0c;数据传输速度的需求日益增长&#xff0c;PCIe总线凭借其高带宽和低延迟的优势&#xff0c;已经成为主流。然而&#xff0c;由于不同设备和PCIe总线之间的接口差异&#xff0c;直接连接…

6款高效网页界面原型设计软件:提升设计效率的利器

在网页设计领域&#xff0c;原型设计是将创意转化为实际产品的关键环节。一款优秀的网页界面原型设计软件能够帮助设计师快速、准确地呈现设计思路&#xff0c;优化用户体验&#xff0c;并提高团队协作效率。以下是6款在网页界面原型设计方面表现出色的软件。 1. 即时设计 即…