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

架构评估方法相关知识总结

一、架构评估中的重要概念

        定义:软件架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策。

        常用系统架构评估的方式:

                1. 基于调查问卷或检查表的方法:该方法的关键是设计好问卷或检查表。缺点是在很大

                   程度上依赖于评估人员的主观判断。问卷用于通用领域,检查表用于特定领域。

                2. 基于场景的评估方法:通过分析软件架构对场景的支持程度,较客观
                3. 基于度量的评估方法:建立在软件架构度量的基础上,设计三个基本活动:1. 首先需

                    要建立架构属性和度量之间的映射原则,2. 然后从软件架构文档中获取度量消息,3.

                    根据映射原则推导出系统的质量属性,较客观

        敏感点:一个或多个构件的特性,能够影响系统的某个质量属性

        权衡点:影响多个质量属性的特性,是多个质量属性的敏感点
        风险点:架构设计中潜在的、存在问题的架构决策所带来的隐患
        非风险点:不会带来隐患的架构决策

        风险承担者:也称为利益相关人。保证架构设计能够满足自己的目标

        质量属性场景相关概念

                场景:一个具体的质量属性需求,是利益相关者与系统的交互的简单陈述,是一种面向

                           特定质量属性的需求。

                刺激源:某个生成该刺激的实体
                刺激当刺激达到系统是需要考虑的条件
                环境:该刺激在某些条件内发生,刺激发生时系统可能处于的运行情况
                制品:被激励的系统,也可能是系统的一部分

                响应:激励达到后制品的采取的行动

                响应度量:响应发生时,能够以某种发生对其进行度量

二、SAAM架构评估方法(软件结构分析法)

        SAAM最初用于比较不同软件体系的架构,以分析系统架构的可修改性。后来扩展到其他属性。

        1. 特定目标:SAAM的目标是对描述应用程序属性的文档,验证其基本的架构设计假设和原则。不仅能评估架构对于特定系统需求的使用能力,也能用于比较不同的架构。

        2. 评估技术:SAAM采用的评估技术是场景技术

        3. 质量属性:SAAM把任何形式的质量属性都具体化为场景,主要质量属性是可修改性

        4. 风险承担者:SAAM协调不同参与者之间感兴趣的共同方面

        5. 架构描述:SAAM用于架构的最后版本,但早于详细设计

        6.方法活动:SAAM的主要输入是:问题描述、架构描述、需求声名 ,SAAM分析评估架构的过程有五个步骤:1. 场景开发,2. 架构描述,3. 单个场景评估, 4. 场景交互评估, 5. 总体评估

        

三、ATAM架构评估方法(架构权衡分析法)

        ATAM是在SAAM的基础上发展起来的,主要针对性能、实用性、可靠性、安全性和可修改性。

        1. 特定目标:在考虑多个相互影响的质量属性的情况下,从原则上提供一种理解软件架构的能力的方法。

        2. 质量属性:ATAM方法分析多个相互竞争的质量属性

        3. 风险承担者:ATAM需要所有系统相关人员参与

        4. 架构描述:从架构的4+1视图派生而来

        5. 评估技术:集成了许多优秀的单一理论模型

        6. 活动方法1. 场景和需求的收集,2. 架构视图和场景的实现,3. 属性模型的构建, 4. 分析和折中

                场景和需求收集阶段:1. 收集场景,2. 收集需求分析/约束/环境

                架构视图和场景实现阶段:3. 描述体系结构视图,4.实现场景 

                属性模型的构建阶段:5. 特定属性分析(休息的单一理论)

                分析和折中阶段:6. 标志折中,7. 标志敏感度

        ATAM对质量属性分析的工具:质量效用树。质量效用树对质量属性进行分类和优先级排序,结构为:树根——质量属性——属性分类——质量属性场景主要关注:性能,安全性,可修改性,可用性。

四、CBAM架构评估方法(成本效益分析法)

        定义:从经济角度建立成本、收益、风险和进度等方面的软件的经济模型。

        核心思想:质量属性为项目干系人带来的收益,根据投资回报比(ROI)选择架构策略。

CBAM在ATAM结束后开始,主要步骤为:

        1. 场景整理, 2. 对场景进行求精, 3. 确定场景的优先级, 4. 分配效用, 5. 架构策略设计哪些质量属性及响应级别,6. 使用内插法确定期望的质量属性效用级别的效用,7. 计算各种架构策略的总收益, 8. 根据受成本限制影响的ROI选择架构策略

五、其他评估方法

        SAEM方法:将软件架构看作一个最终产品以及设计过程中的一个中间产品,从外部质量和内部质量两个角度来描述他的评估模型,旨在为软件架构的质量评估擦黄建一个基础框架。

        SAABNet方法:依赖于专家知识,该方法来愿意AI,允许不确定、不完整的知识的推理。只用了BBN来表示和使用开发中的知识。

        SACMM方法:是一种软件架构修改的多方案。

        SASAM:通过对预期架构和实际架构进行映射和比较来静态的评估软件架构,并将静态评估于架构评估方法结合。

        ALRRA方法:架构可靠性风险评估的方法。

        AHP:层次分析法,是多种架构评估度量方法的基础理论。

        COSMIC+UML方法:基于面向对象系统源代码的可维护性的度量。

相关文章:

架构评估方法相关知识总结

一、架构评估中的重要概念 定义:软件架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策。 常用系统架构评估的方式: 1. 基于调查问卷或检查表的方法:该方法的关键是设计好问卷或检查表。缺点是在很大 程度上依赖于评…...

常用ES标准

ES2015: 1.块级作用域const、let const声明对象可修改属性,但不能重新赋值对象。 2.解构赋值 const arr [a1, a2, a3]; const [a1, ...rest] arr; // rest [a2, a3];3.模板字符串 const date "星期一"; console.log(今天是${date};);4…...

Http中Host,Referer,Origin和Access-Control-Allow-Origin

Http中Host,Referer,Origin和Access-Control-Allow-Origin 文章目录 Http中Host,Referer,Origin和Access-Control-Allow-OriginHost定义特性作用 Referer定义特性作用 Origin定义特性作用 Access-Control-Allow-Origin定义特性作用…...

UDP实现聊天室

现象&#xff1a; 源码&#xff1a; 服务器&#xff1a; #include<myhead.h>struct sockaddr_in serveraddr,caddr; enum type_t//枚举 {Login,Chat,Quit, }; typedef struct MSG {char type;//L C Qchar name[32];//char text[128];// }msg_t;typedef struct NODE//链…...

排序算法:如冒泡排序、插入排序、选择排序、快速排序、归并排序

冒泡排序&#xff08;Bubble Sort&#xff09;&#xff1a;冒泡排序是一种简单的排序算法。它通过反复交换相邻的元素&#xff0c;将最大的元素逐步“浮”到数组的末尾。基本思想是每次比较相邻的两个元素&#xff0c;如果顺序不对就进行交换&#xff0c;直到整个数组有序。时间…...

深度学习pytorch——GPU加速(持续更新)

使用 .to(device)&#xff0c;以前使用 .cuda() &#xff0c;但是现在基本不使用了。 代码示例&#xff1a; 查看电脑GPU运行情况&#xff1a; 使用Ctrl Shift ESC快捷键&#xff1a;...

StringRedisTemplate

Redis快速入门 3.2.3.StringRedisTemplate 为了节省内存空间&#xff0c;我们可以不使用JSON序列化器来处理value&#xff0c;而是统一使用String序列化器&#xff0c;要求只能存储String类型的key和value。当需要存储Java对象时&#xff0c;手动完成对象的序列化和反序列化。…...

Linux cp、mv命令显示进度条

1.advcpmv 平常使用cp 拷贝大文件时&#xff0c;看不到多久可以完成&#xff0c;虽然加上-v参数也只能看到正在拷贝文件&#xff0c;那就使用以下方法实现 git clone https://github.com/jarun/advcpmv.git cd advcpmv/ bash install.shmv ./advcp /usr/local/bin/ mv ./advmv …...

在Java中使用Apache POI保留Excel样式合并多个工作簿

背景 在日常工作中&#xff0c;我们经常需要将多个Excel文件合并成一个&#xff0c;同时保留原有的样式和格式。Apache POI是一个流行的Java库&#xff0c;用于读取和写入Microsoft Office格式的文件&#xff0c;包括Excel。然而&#xff0c;仅仅使用Apache POI的基本功能进行…...

Nomachine远程黑屏通用处理方法

Nomachine远程黑屏通用处理方法 文章目录 前言正文解决步骤 总结 前言 NoMachine是一种远程桌面软件&#xff0c;它允许用户通过互联网或局域网连接到远程计算机&#xff0c;并在本地计算机上使用远程计算机的桌面环境和应用程序。它提供了高性能的图形渲染和低延迟的响应&…...

基于51单片机数控直流电压源proteus仿真LCD显示+程序+设计报告+讲解视频

基于51单片机数控直流电压源proteus仿真LCD显示( proteus仿真程序设计报告讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0072 讲解视频 基于51单片机数控直流电压源proteus仿真程序…...

[Linux]文件缓冲区

文件fd 输出重定向除了用dup2()改变数组下标外&#xff0c;还可以用命令来完成 所有的命令执行&#xff0c;都必须有操作系统将其运行起来变成进程&#xff0c;然后根据>>, <<来判断是输入重定向&#xff0c;还是输出重定向。 缓冲区 之所以有缓冲区&#xff0…...

ARM:按键中断

key_inc.c #include"key_inc.h"void key1_it_config(){//使能GPIOF外设时钟RCC->MP_AHB4ENSETR | (0x1<<5);//将PF9设置为输入模式GPIOF->MODER & (~(0x3<<18));//设置由PF9管脚产生EXTI9事件EXTI->EXTICR3 & (~(0XFF<<8));EXTI…...

JavaScript高级(五)--柯西化函数

柯里化 定义 首先&#xff0c;我们参照维基百科给出的定义&#xff1a; 在计算机科学中&#xff0c;柯里化&#xff08;英语&#xff1a;Currying&#xff09;&#xff0c;又译为卡瑞化或加里化&#xff0c;是把接受多个参数的函数变换成接受一个单一参数&#xff08;最初函数…...

带3090显卡的Linux服务器上部署SDWebui

背景 一直在研究文生图&#xff0c;之前一直是用原始模型和diffuser跑SD模型&#xff0c;近来看到不少比较博主在用 SDWebui&#xff0c;于是想着在Linux服务器上部署体验一下&#xff0c;谁知道并没有想象的那么顺利&#xff0c;还是踩了不少坑。记录一下过程&#xff0c;也许…...

37、Linux中Xsync数据同步备份工具

37、Linux中Xsync数据同步备份工具 一、介绍二、配置集群hostname三、修改xsync文件四、赋权五、安装Rsync六、验证一七、配置免密登录1、生成rsa密钥2、copy机器自身公钥到目标机器3、.ssh/文件目录赋权 八、验证二 ⚠️ 注&#xff1a;本文全程在普通用户下操作&#xff0c;…...

网络基础:构建你的数字世界之桥

I. 引言 A. 什么是网络&#xff1f; 网络是由各种电子设备通过通信线路或无线电波连接起来&#xff0c;以便彼此之间进行数据交换和资源共享的系统。在当今数字化时代&#xff0c;网络已经成为我们生活和工作中不可或缺的一部分&#xff0c;无论是互联网、局域网还是无线通信…...

Python 全栈系列236 rabbit_agent搭建

说明 通过rabbit_agent, 以接口方式实现对队列的标准操作&#xff0c;将pika包在微服务内&#xff0c;而不必在太多地方重复的去写。至少在服务端发布消息时&#xff0c;不必再去考虑这些问题。 在分布式任务的情况下&#xff0c;客户端本身会启动一个持续监听队列的客户端服…...

管理自由,体验简单,使用安全 | 详解威联通全套多用户多权限管理方案【附TS-466C产品介绍】

管理自由&#xff0c;体验简单&#xff0c;使用安全 | 详解威联通全套多用户多权限管理方案【附TS-466C产品介绍】 哈喽小伙伴们好&#xff0c;我是Stark-C~。今天我们来解决一个之前评论区多次被提及的问题--多用户权限管理。 对于我们NAS用户来说&#xff0c;基本都会面临这…...

【Redis】优惠券秒杀

全局唯一ID 全局唯一ID生成策略&#xff1a; UUIDRedis自增snowflake算法数据库自增 Redis自增ID策略&#xff1a;每天一个key&#xff0c;方便统计订单量ID构造是 时间戳 计数器 Component public class RedisIdWorker {// 2024的第一时刻private static final long BEGIN…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...