系统架构设计师教程 第8章 8.2 系统架构评估 笔记

8.2 系统架构评估 ★★★★★

系统架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策。它利用数学或逻辑分析技术,针对系统的一致性、正确性、质量属性、规划结果等不同方面,提供描述性、 预测性和指令性的分析结果。
系统架构评估的方法通常可以分为3类:基于调查问卷或检查表的方式、基于场景的方式和基于度量的方式。
(1)基于调查问卷或检查表的方法。该方法的关键是要设计好问卷或检查表,充分利用系统相关人员的经验和知识,获得对架构的评估。
缺点是在很大程度上依赖于评估人员的主观推断。

(2)基于场景的评估方法。由卡耐基梅隆大学软件工程研究所首先提出 并应用在架构权衡分析法 (Architecture Tradeoff Analysis Method,ATAM) 和软件架构分析方法 (Software ArchitectureAnalysis Method,SAAM) 中。通过分析软件架构对场景(也就是对系统的使用或修改活动)的支持程度,从而判断该架构对这一场景所代表的质量需求的满足程度。

(3)基于度量的评估方法。它是建立在软件架构度量的基础上的,涉及3个基本活动,首先需要建立质量属性和度量之间的映射原则,然后从软件架构文档中获取度量信息,最后根据映射原则分析推导出系统的质量属性。

8.2.1 系统架构评估中的重要概念 ★★★★★

(1) 敏感点 (Sensitivity Point) 和权衡点 (Tradeoff Point) 。敏感点和权衡点是关键的架构决策。
敏感点是一个或多个构件(和/或构件之间的关系)的特性。
权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。
(2)风险承担者 (Stakeholders) 或者称为利益相关人。 系统的架构涉及很多人的利益,这些人都对架构施加各种影响,以保证自己的目标能够实现。
(3) 场景 (scenarios)。在进行架构评估时, 一般首先要精确地得出具体的质量目标,并以之作为判定该架构优劣的标准。为得出这些目标而采用的机制称之为场景。场景是从风险承担者的角度对与系统的交互的简短描述。
在架构评估中, 一般采用刺激 (Stimulus)、 环境 (Environment) 和响应 (Response) 三方面来对场景进行描述。

8.2.2 系统架构评估方法 ★★★★★

1 . SAAM 方法 ★★★★★
基于场景的架构分析方法 SAAM(Scenarios-based Architecture Analysis Method) 是一种非功能质量属性的架构分析方法。
(1)特定目标。SAAM 的目标是对描述应用程序属性的文档,验证基本的架构假设和原则。此外,该分析方法有利于评估架构固有的风险。
(2)评估技术。使用的评估技术是场景技术。场景代表了描述架构属性的基础,描述了各种系统必须支持的活动和可能存在的状态变化。
(3)质量属性。基本特点是把任何形式的质量属性都具体化为场景,但可修改性是 SAAM 分析的主要质量属性。
(4)风险承担者。SAAM 协调不同参与者之间感兴趣的共同方面,作为后续决策的基础, 达成对架构的共识。
(5)架构描述。SAAM 用于架构的最后版本,但早于详细设计。架构的描述形式应当被所有参与者理解。功能、结构和分配被定义为描述架构的3个主要方面。
(6)方法活动。 SAAM 的主要输入是问题描述、需求声明和架构描述。

SAAM分析评估架构的过程包括5个步骤,即场景开发、架构描述、单个场景评估、场景交互和总体评估。

(7)已有知识库的可重用性:SAAM不考虑这个问题。
(8)方法验证:SAAM是一种成熟的方法,已被应用到众多系统中

2.ATAM 方法 ★★★★★
架构权衡分析方法 (Architecture Tradeoff Analysis Method,ATAM) 是在 SAAM的基础上发展起来的,主要针对性能、实用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中。
(1)特定目标。在考虑多个相互影响的质量属性的情况下,从原则上提供一种理解软件架构的能力的方法。对于特定的软件架构,在系统开发之前,可以使用ATAM方法确定在多个质量属性之间折中的必要性。
(2)质量属性。分析多个相互竞争的质量属性。
(3)风险承担者。在场景、需求收集相关活动中, 需要所有系统相关人员的参与。
(4)架构描述。架构空间受到历史遗留系统、互操作性和以前失败的项目约束。架构描述基于5种基本结构来进行,这5种结构是从Kruchten 的4+1视图派生而来的。其中逻辑视图被分为功能结构和代码结构。这些结构加上它们之间适当的映射可以完整地描述一个架构。

(5)评估技术。可以把ATAM方法视为一个框架,该框架依赖于质量属性,可以使用不同的分析技术。它集成了多种优秀的单一理论模型,其中每种都能够高效、实用地处理属性。该方法使用了场景技术。从不同的架构角度,有3种不同类型的场景,分别是用例(包括对系统典型的使用、引出信息)、增长场景(用于涵盖那些对它的系统的修改)、探测场景(用于涵盖 那些可能会对系统造成过载的极端修改)。
ATAM 还使用定性的启发式分析方法 (Qualitative Analysis Heuristics), 在对一个质量属性构造了一个精确分析模型时要进行分析,定性的启发式分析方法就是这种分析的粗粒度版本。
(6)方法的活动。ATAM 被分为4个主要的活动领域 (或阶段),分别是场景和需求收集、 架构视图和场景实现、属性模型构造和分析、折中。

获得属性关联的方法有两种,即使用敏感度分析来发现折中点和通过检查假设。
在架构设计中, ATAM提供了迭代的改进。除了通常从场景派生的需求,还有很多对行为模式和执行环境的假设。由于属性之间存在着折中,每一个假设都要被检查、验证和询问, 以此作为 ATAM方法的结果。在完成所有这些操作之后,把分析的结果和需求进行比较;如果系统预期的行为大多接近于需求,设计者就可以继续进行下一步更为详细的设计或实现。
(7) 领域知识库的可重用性。领域知识库通过基于属性的架构风格 (Attribute Based Architecture Style) 维护。ABAS有助于从架构风格的概念转向基于特定质量属性模型的推理能力。
(8)方法验证。该方法已经应用到多个软件系统,但仍处在研究之中。虽然软件架构分析与评价已经取得了很大的进步,但是在某些方面也存在一些问题。

ATAM 方法采用效用树 (Utility tree) 来对质量属性进行分类和优先级排序。效用树的结构包括:树根—质量属性—属性分类—质量属性场景(叶子节点)。需要注意的是,
ATAM主要关注4类质量属性:性能、安全性、可修改性和可用性,这是因为这4个质量属性是利益相关者最为关心的。
得到初始的效用树后,需要修剪这棵树,保留重要场景(通常不超过50个),再对场景按重要性给定优先级(用 H/M/L 的形式),再按场景实现的难易度来确定优先级(用 H/M/L的形 式),这样对所选定的每个场景就有一个优先级对(重要度、难易度),如 (H、L) 表示该场景重要且易实现。

3 . CBAM 方法
从经济角度建立成本、收益、风险和进度等方面软件的“经济”模型。成本效益分析法 (the Cost Benefit Analysis Method,CBAM) 是在ATAM 上构建,用来对架构设计决策的成本和收益进行建模,是优化此类决策的一种手段。CBAM的思想就是架构策略影响系统的质量属性,反过来这些质量属性又会为系统的项目干系人带来一些收益(称为“效用”), CBAM协助项目干系人根据其投资回报(Return On Investment,ROI) 选择架构策略。CBAM在ATAM结束时开始,它实际上使用了ATAM评估的结果。
CBAM 方法分为以下8个步骤。
(1)整理场景。整理 A T A M 中获取的场景,根据商业目标确定这些场景的优先级,并选取优先级最高的1/3的场景进行分析。
(2)对场景进行求精。为每个场景获取最坏情况、当前情况、期望情况和最好情况的质量属性响应级别。
(3)确定场景的优先级。项目关系人对场景进行投票,其投票是基于每个场景“所期望的” 响应值,根据投票结果和票的权值,生成一个分值(场景的权值)。
(4)分配效用。对场景的响应级别(最坏情况、当前情况、期望情况和最好情况)确定效 用表。
(5)架构策略涉及哪些质量属性及响应级别,形成相关的“策略一场景一响应级别”的对应关系。
(6)使用内插法确定“期望的”质量属性响应级别的效用。即根据第4步的效用表以及第5步的对应关系,确定架构策略及其对应场景的效用表。
(7)计算各架构策略的总收益。根据第3步的场景的权值及第6步的架构策略效用表,计算出架构策略的总收益得分。
(8)根据受成本限制影响的 ROI选择架构策略。根据开发经验估算架构策略的成本,结合第7步的收益,计算出架构策略的ROI, 按 ROI排序,从而确定选取策略的优先级。

4.其他评估方法
1)SAEM方法
SAEM方法将软件架构看作一个最终产品以及设计过程中的一个中间产品,从外部质量属性和内部质量属性两个角度来阐述它的评估模型,旨在为软件架构的质量评估创建一个基础框架。
2)SAABNet 方法
SAABNet是一种用来表达和使用定性知识以辅助架构的定性评估。
变量可分为3类,即架构质量属性变量(如可维护性、灵活性等)、 质量属性的度量准则变量 (如容错性、响应性等)和架构特征变量 (如继承深度、编程语言等),
SAABNet 度量的对象包括架构属性、质量准则和质量因素3部分
变量可分为3类,即架构质量属性变量(如可维护性、灵活性等)、 质量属性的度量准则变量 (如容错性、响应性等)和架构特征变量 (如继承深度、编程语言等),
SAABNet 度量的对象包括架构属性、质量准则和质量因素3部分

3 ) SACMM 方法
SACMM 方法是一种软件架构修改的度量方法,基于图内核定义差异度量准则来计算两个软件架构之间的距离,
4 ) SASAM 方法
SASAM 方法通过对预期架构(架构设计阶段的相关描述材料)和实际架构(源代码中 执行的架构)进行映射和比较来静态地评估软件架构,并将静态评估与架构开发方法PuLSE- DSSA结合,识别出10种不同的目的和需求来指导静态的架构评估。
5)ALRRA 方法
ALRRA是 一种软件架构可靠性风险评估方法,该方法使用动态复杂度准则和动态耦合度准则来定义组件和连接件的复杂性因素,
动态复杂度准则在某个场景的执行中分析组件的动态行为来度 量组件的复杂性,
动态耦合度准则在某个场景的执行中分析连接件的消息传递协议来度量连接件的复杂性。
6)AHP 方法
层次分析法 (Analytical Hierarchy Process,AHP) 是多种架构评估度量方法的基础理论。
7)COSMIC+UML 方法
软件功能规模度量方法,原理是通过识别“数据移动”的个数来度量软件规模,每个数据移动计为一个COSMIC功能规模单位(CFP),四种数据移动类型分别为:输入(Entry)、输出(eXit)、读(Read)和写(Write)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Msf之Python分离免杀

Msf之Python分离免杀 ——XyLin. 成果展示: VT查杀率:8/73 (virustotal.com) 火绒和360可以过掉,但Windows Defender点开就寄掉了 提示:我用360测的时候,免杀过了,但360同时也申报了,估计要不了多久就寄…

【2025】中医药健康管理小程序(安卓原生开发+用户+管理员)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

vue2.0+ts注册全局函数和几个递归查找

vue2.0ts注册全局函数和几个递归查找 一、main.ts 一、main.ts // 定义你的全局函数,判断是否有按钮权限 interface Item {label: string;checked: number;[k: string]: any; } // 获取按钮时候权限 function globalLable(arr: Item[], label: string): boolean {for (const i…

未授权扫描工具-APIFinder

该工具目的是为了发现某文件中的路径,然后拼接到某url后,通过响应码及返回长度,快速定位并判断其是否存在未授权。 APIFinder [-h] [-u URL1] [-f file] [-U URL2] [-i RES] 参数描述-u目标url(例如:http://xxx.com/x.js)-f目标文件(由于一些…

《深度学习》—— 神经网络模型对手写数字的识别

神经网络模型对手写数字的识别 import torch from torch import nn # 导入神经网络模块 from torch.utils.data import DataLoader # 数据包管理工具,打包数据, from torchvision import datasets # 封装了很多与图像相关的模型,数据集 from torchvi…

神经网络 卷积层 参数共享

参数共享常用于神经网络卷积层中,共享的实际上就是说卷积核中的参数一直保持不变,如下所示就可以称为共享参数啦!!

【秋招笔试-支持在线评测-试读版】9.19小米秋招(已改编)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花…

C++掉血迷宫

目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。 程序 #include <iostream> #include <string> #include <cstring> using namespace std; enum RBYG {R 1,B 2,Y 4,G 7, }; struct heal {int ix…

python_uiautoanimation实现自动化微信聊天

文章目录 ⭐前言⭐微软inspect工具定位元素&#x1f496;工具查找属性 ⭐查找微信窗口&#x1f496;命令行查找运行窗口 ⭐查找微信的聊天窗口⭐封装发送消息⭐定时查询消息⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享python_uiautoanimation实现自动化微…

平价头戴式蓝牙耳机有哪些?四款公认平价性能超强品牌机型推荐

在追求高品质音乐体验的同时&#xff0c;许多消费者希望找到价格亲民的头戴式蓝牙耳机&#xff0c;市场上不乏性能卓越、价格实惠的产品&#xff0c;它们凭借出色的音质、舒适的佩戴体验和可靠的续航能力赢得了用户的青睐&#xff0c;那么在众多的头戴式蓝牙耳机内&#xff0c;…

提高数据集成稳定性:EMQX Platform 端到端规则调试指南

自 5.7.0 版本起&#xff0c;EMQX 支持了 SQL 调试&#xff0c;并支持在数据集成全流程中进行规则调试&#xff0c;使用户能够在开发阶段就全面验证和优化规则&#xff0c;确保它们在生产环境中的稳定高效运行。 点击此处下载 EMQX 最新版本&#xff1a;https://www.emqx.com/z…

移动开发(三):使用.NET MAUI打包第一个安卓APK完整过程

目录 一、修改AndroidManifest.xml 配置APP基本信息权限 二、修改项目属性调整输出Android包格式为APK 三、项目发布 四、APP分发 五、总结 之前给大家介绍过使用使用.NET MAUI开发第一个安卓APP,今天给大家介绍如何打包成APK,然后安装到安卓手机正常运行。这里还是沿用…

java序列化对象后读取数据错误的问题

今天学到了对象的序列化&#xff0c;就是将对象写入到文件中去&#xff0c;大家要直到我们普通的输入输出文件只是把数据的值写入了文件&#xff0c;而没有把数据的类型与之绑定&#xff0c;比如我向文件中写入100&#xff0c;那么这是字符串”100“还是整数100还是高精度浮点数…

算法.图论-建图/拓扑排序及其拓展

文章目录 建图的三种方式邻接矩阵邻接表链式前向星 拓扑排序拓扑排序基础原理介绍拓扑排序步骤解析拓扑排序模板leetcode-课程表 拓扑排序拓展食物链计数喧闹与富有并行课程 建图的三种方式 我们建图的三种方式分别是邻接矩阵, 邻接矩阵, 链式前向星 邻接矩阵 假设我们的点的…

Android14请求动态申请存储权限

Android14请求动态申请存储权限 Android14和Android15存储权限有增加多了选择部分&#xff0c;还是全部。一个小小的存储权限真的被它玩出了花来。本来Android13就将存储权限进行了3个细分&#xff0c;是图片&#xff0c;音频还是视频文件。 步骤一&#xff1a;AndroidManife…

24年蓝桥杯及攻防世界赛题-MISC-2

11 Railfence fliglifcpooaae_hgggrnee_o{cr} 随波逐流编码工具 分为5栏时,解密结果为:flag{railfence_cipher_gogogo} 12 Caesar rxms{kag_tmhq_xqmdzqp_omqemd_qzodkbfuaz} mode1 #12: flag{you_have_learned_caesar_encryption} 随波逐流编码工具 13 base64 base64解…

【machine learning-十-梯度下降-学习率】

学习率 学习率不同的学习率 在梯度下降算法中&#xff0c;学习率的选择很重要&#xff0c;不恰当的选择&#xff0c;甚至可能导致损失发散&#xff0c;而非收敛&#xff0c;下面就看一下学习率的影响。 学习率 学习率是下图中的红框圈出来的部分&#xff0c; 学习率是模型的超…

虹科干货 | CAN/CAN FD故障揭秘:快速排查与解决技巧

是否在处理CAN总线问题时感到头疼&#xff1f;是否在寻找简单直接的方法来解决那些看似复杂的连接故障&#xff1f;本文将为您提供实用技巧&#xff0c;让您能够轻松应对这些难题。 CAN总线因其高效、可靠的数据交换能力&#xff0c;在汽车、工业控制、航空航天等多个关键领域得…

《黑神话悟空》开发框架与战斗系统解析

本文主要围绕《黑神话悟空》的开发框架与战斗系统解析展开 主要内容 《黑神话悟空》采用的技术栈 《黑神话悟空》战斗系统的实现方式 四种攻击模式 连招系统的创建 如何实现高扩展性的战斗系统 包括角色属性系统、技能配置文件和逻辑节点的抽象等关键技术点 版权声明 本…

Linux Vim编辑器常用命令

目录 一、命令模式快捷键 二、编辑/输入模式快捷键 三、编辑模式切换到命令模式 四、搜索命令 注&#xff1a;本章内容全部基于Centos7进行操作&#xff0c;查阅本章节内容前请确保您当前所在的Linux系统版本&#xff0c;且具有足够的权限执行操作。 一、命令模式快捷键 二…