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

软件架构评估两大法:ATAM 和 SAAM 的对比与实践

架构权衡分析方法(ATAM)和软件架构分析方法(SAAM)是软件架构评估领域中非常重要的两种方法,以下为你详细介绍:

一、架构权衡分析方法(ATAM)

1.背景与起源:ATAM 是由卡耐基梅隆大学软件工程研究所(SEI)在 20 世纪 90 年代开发的。当时,软件系统日益复杂,需要一种系统的方法来评估软件架构在多个质量属性方面的表现,以及不同质量属性之间的权衡关系,ATAM 应运而生。

2.评估过程

  • 描述架构:这是 ATAM 评估的基础。评估人员需要从多个视角对软件架构进行详细描述,包括系统的整体结构、组件的划分、组件之间的接口和交互关系,以及系统的部署方式等。例如,对于一个电商系统,要描述订单处理组件、库存管理组件、支付组件等的功能及它们之间的交互流程。
  • 识别质量属性:明确系统所关注的关键质量属性,如性能、可靠性、可用性、安全性、可维护性、可扩展性等。针对每个质量属性,需要定义具体的量化指标或定性描述。例如,性能方面可能要求系统在高峰时段每秒处理一定数量的订单;可靠性方面可能要求系统每年的故障时间不超过一定小时数。
  • 确定架构策略:分析架构中采用的各种策略和机制来满足质量属性要求。例如,为了提高性能,可能采用缓存策略来减少数据库访问次数,采用负载均衡策略来分摊系统负载;为了增强安全性,可能采用加密技术对敏感数据进行加密,采用身份验证和授权机制来限制用户访问权限。
  • 分析权衡点:通过对架构策略的深入分析,识别出不同质量属性之间的权衡点。例如,增加缓存可以提高系统性能,但可能会增加内存占用,影响系统的可维护性和成本;采用复杂的加密算法可以增强安全性,但可能会降低系统的性能。
  • 评估风险:评估架构中存在的技术风险、业务风险等。技术风险可能包括采用的新技术不成熟、技术方案的可行性存在问题等;业务风险可能包括架构不能满足未来业务发展的需求、与现有业务流程不兼容等。例如,在一个移动应用开发中,采用了一种新的跨平台开发框架,可能存在技术成熟度不够的风险,导致应用出现稳定性问题。
  • 提出建议:根据前面的分析结果,提出改进架构的具体建议,以优化质量属性的满足程度,并降低风险。建议可能包括调整架构策略、优化组件设计、增加某些功能模块等。例如,建议对缓存策略进行优化,定期清理缓存数据,以减少内存占用,同时不影响性能。

3.应用场景:ATAM 适用于各种规模和复杂度的软件系统架构评估,特别是在以下情况中应用广泛。当软件系统对多个质量属性有较高要求,且这些质量属性之间存在相互影响和权衡关系时,如既要保证系统的高性能,又要确保数据的安全性和系统的可维护性;在软件架构设计的早期阶段,需要对不同的架构方案进行比较和选择,以确定最优的架构方向;在系统开发过程中,当需要对架构进行调整和优化,以应对新的需求或质量属性要求时。

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

1.背景与起源:SAAM 同样是由 SEI 开发的,它是在早期软件架构评估实践中逐渐形成的一种方法。最初的目的是为了在软件架构设计阶段,通过对一些典型场景的分析,快速评估架构的可行性和合理性,为架构设计提供早期的反馈。

2.评估过程

  • 描述架构:与 ATAM 类似,需要对软件架构进行全面的描述,包括系统的组件结构、接口定义、数据流向等。例如,对于一个在线教育系统,要描述课程管理组件、学生学习组件、教师授课组件等的功能和它们之间的交互方式。
  • 确定场景:根据系统的功能需求和预期的使用情况,确定一组具有代表性的场景。场景可以分为正常场景和异常场景,正常场景包括用户的常见操作,如学生登录系统查看课程、教师上传教学资料等;异常场景包括系统故障、网络中断、用户输入错误等情况。
  • 分析场景:针对每个场景,详细分析架构中各个组件的参与情况和交互过程。例如,在学生登录系统查看课程的场景中,分析身份验证组件如何验证学生身份,课程管理组件如何获取课程信息并展示给学生,以及在这个过程中可能涉及的数据传输和处理流程。
  • 评估架构:根据场景分析的结果,对架构的整体质量进行评估。评估的内容包括架构是否能够有效地支持各个场景的实现,是否存在组件之间的交互不合理、数据处理效率低下等问题,以及架构对异常场景的处理能力。例如,如果在网络中断的异常场景下,系统能够及时提示用户,并在网络恢复后自动继续未完成的操作,说明架构在应对网络故障方面具有较好的设计。
  • 提出改进建议:根据评估结果,提出改进架构的建议。建议可能包括优化组件的设计、调整组件之间的交互方式、增加错误处理机制等。例如,建议在身份验证组件中增加多因素认证功能,以提高系统的安全性。

3.应用场景:SAAM 主要应用于软件架构设计的早期阶段,帮助架构师快速发现架构中的潜在问题,及时进行调整和优化。适用于对系统功能和行为有明确需求,但对质量属性的要求相对较为模糊的情况。通过场景分析,可以直观地了解架构是否能够满足系统的功能需求。在软件系统的演化过程中,当需要对现有架构进行修改或扩展时,SAAM 可以帮助评估修改对系统功能和行为的影响,确保架构的稳定性和可维护性。

三、两者的比较

1.评估重点

  • ATAM 重点关注质量属性之间的权衡关系,通过对架构策略的分析,深入研究不同质量属性的相互影响,以帮助决策人员在多个质量目标之间做出合理的权衡和选择。
  • SAAM 则侧重于评估架构对具体场景的支持程度,通过对各种场景下架构的行为分析,判断架构是否能够满足系统的功能和行为需求,更强调架构的功能性和实用性。

2.适用阶段

  • ATAM 适用于软件架构设计的各个阶段,从早期的概念设计到后期的详细设计和实现阶段。在不同阶段,ATAM 都可以帮助评估架构在质量属性方面的表现,及时发现问题并进行优化。
  • SAAM 更适合在软件架构设计的早期阶段使用,能够在较短时间内对架构的可行性和合理性进行初步评估,为后续的详细设计和开发提供指导。

3.评估方法

  • ATAM 采用了一套较为系统和全面的分析方法,包括质量属性的识别、架构策略的分析、权衡点的挖掘以及风险评估等多个环节,需要运用一定的专业知识和分析工具。
  • SAAM 以场景分析为核心方法,通过对具体场景的描述、分析和评估,来判断架构的优劣。这种方法相对较为直观和简单,容易被开发人员和非技术人员理解和掌握。

4.结果呈现

  • ATAM 的评估结果通常包括质量属性的满足程度分析、权衡点的详细描述、风险评估报告以及针对架构改进的具体建议等,结果较为全面和详细,能够为架构决策提供有力的支持。
  • SAAM 的评估结果主要是对架构在各个场景下的表现评价,以及针对场景中发现的问题提出的改进建议,结果更侧重于对架构功能和行为的反馈,能够帮助架构师快速了解架构的优点和不足之处。

相关文章:

软件架构评估两大法:ATAM 和 SAAM 的对比与实践

架构权衡分析方法(ATAM)和软件架构分析方法(SAAM)是软件架构评估领域中非常重要的两种方法,以下为你详细介绍: 一、架构权衡分析方法(ATAM) 1.背景与起源:ATAM 是由卡耐…...

《AI大模型应知应会100篇》第13篇:大模型评测标准:如何判断一个模型的优劣

第13篇:大模型评测标准:如何判断一个模型的优劣 摘要 近年来,大语言模型(LLMs)在自然语言处理、代码生成、多模态任务等领域取得了显著进展。然而,随着模型数量和规模的增长,如何科学评估这些模…...

编译 OpenCV 时,cmake 找到 TBB 的方法

编译 OpenCV 时,cmake 找到 TBB 的方法 编译 OpenCV 时,cmake 找到 TBB 的方法 编译 OpenCV 时,cmake 找到 TBB 的方法 HKEY_LOCAL_MACHINE\SOFTWARE\Intel\oneAPI\TBB\2022.1.0cmake 是从上面的注册表里找到的 TBB 安装路径。 这个键下面有…...

SMT贴片组装工艺优化与高效生产

内容概要 现代SMT贴片组装工艺的优化与高效生产涉及多维度技术协同,其核心在于构建精密可控的制造体系。本文系统梳理了从焊接参数调控到智能检测部署的全链路关键环节,重点解析影响生产效能的核心变量及其相互作用机制。通过对比不同贴装设备的速度-精…...

leetcode刷题日记——有效的数独

[ 题目描述 ]: [ 思路 ]: 题目要求求一个数独题目是否有效,即每行,每列,每个九宫格都不能出现相同的数字暴力求解:对每行,每列,以及九宫格进行检查是否存在相同数字运行如下 boo…...

Agent2Agent协议学习资源大全:从理论到实践

下面整理了一份关于谷歌 A2A 协议的学习资源,分为官方资源、开发教程/实践、行业解读和视频教程四个部分,方便您系统性地学习和掌握相关知识: 1. 官方资源 A2A 协议 GitHub 仓库 官方开源代码库,包含协议规范、示例代码和详细文档…...

PCDN收益高低的关键因素

PCDN(P2P内容分发网络)收益好的三个主要关键因素是:硬件配置与性能、网络环境与质量、业务调度与策略。 1. 硬件配置与性能 设备稳定性与兼容性 PCDN节点需长时间稳定运行,硬件性能直接影响收益。例如,使用高性能CPU、…...

ckeditor4.22版本 ckfinder php8版本下,上传提示400的问题

ckeditor4.22版本,ckfinder3,CKFinder 3 for PHP版本。 图片上传时提示:400错误,bad request。 通过编辑文件 D:\wamp\www\module\ckfinder\config.php 修改其配置: ini_set(display_errors, 1); $config[debug] tru…...

2025第四届大学生算法挑战赛 赛前测试赛 题解

前言 题解 测试考场【算法编程赛道】2025第四届大学生算法挑战赛 继续用Deepseek进行求解,还是非常丝滑。 A. 追债之旅 思路: 图论 bfs题 利用deepseek,直接给出答案 感觉deepseek在输入输出上,显得有些啰嗦。 # codingutf-8 import he…...

【软考系统架构设计师】系统配置与性能评价

1、 常见的性能指标 主频外频*倍频 主频1/CPU时钟周期 CPI(Clock Per Instruction)平均每条指令的平均时间周期数 IPC(Instruction Per Clock)每时钟周期运行指令数 MIPS百万条指令每秒 MFLOPS百万个浮点操作每秒 字长影响运算的…...

【软考系统架构设计师】信息系统基础知识

1、 信息的特点:客观性(真伪性)、动态性、层次性、传递性、滞后性、扩压性、分享性 2、 信息化:是指从工业社会到信息社会的演进与变革 3、 信息系统是由计算机硬件、网络和通信设备、计算机软件、信息资源、信息用户和规章制度…...

软考高级-系统架构设计师 其他知识补充

文章目录 系统配置与性能评价性能指标性能评价方法性能评测的常用方法 阿姆达尔解决方法 信息系统基础知识信息系统概述信息系统的分类(低级到高级)信息系统的生命周期(产生、开发、运行、消亡)信息系统开发方法 信息综合技术信息…...

基于查表法的 CRC8 / CRC16 / CRC32校验解析

在嵌入式开发中,CRC(Cyclic Redundancy Check)循环冗余校验算法广泛应用于通信数据校验、Flash 数据完整性检测、Bootloader 升级验证等场景。本文将深入剖析一套完整的 CRC8、CRC16 和 CRC32 实现,并通过查表法(Table…...

Web渗透之XSS注入

XSS的类型 1、反射型XSS 我们构建好一个urlXSS的payload,发送给受害者,受害者点击恶意链接后会在受害者的浏览器上执行恶意代码。反射型XSS是一次性的,而且比较容易被发现。通常恶意链接会被修改成短链接,或钓鱼图片的形式。 2…...

Eigen库的core模块源码阅读笔记

一、Eigen Core 模块概述 Eigen 是一个开源的C模板库,专注于线性代数运算(矩阵、向量、数值求解等)。其 Core 模块 是库的核心,定义了所有基础数据结构(如矩阵、向量、数组)和运算符重载,并实现…...

Blender安装基础使用教程

本博客记录安装Blender和基础使用,可以按如下操作来绘制标靶场景、道路标识牌等。 目录 1.安装Blender 2.创建面板资源 步骤 1: 设置 Blender 场景 步骤 2: 创建一个平面 步骤 3: 将 PDF 转换为图像 步骤 4-方法1: 添加材质并贴图 步骤4-方法2:创…...

网络相关基本概念

IP地址 描述一台主机在互联网上所处的位置。用32位整数表示。 用点分十进制表示。xxx.xxx.xxx.xxx表示。 端口号 区分当前主机上的指定的应用程序(进程)。一台主机上使用网络的程序有很多,可以通过端口号区分主机收到的数据要交给哪个程序…...

Prompt-Tuning方法

Fine-Tuning Fine-Tuning属于一种迁移学习方式,在自然语言处理(NLP)中,Fine-Tuning是用于将预训练的语言模型适应于特定任务或领域。Fine-Tuning的基本思想是采用已经在大量文本上进行训练的预训练语言模型,然后在小规模的任务特定文本上继续…...

C++ STL及Python中等效实现

1. STL 概述 STL 包含以下核心组件: 容器(Containers):存储数据的结构,如数组、链表、集合等。迭代器(Iterators):用于遍历容器的接口,类似指针。算法(Algo…...

动态规划(6)——01背包问题

欢迎来到博主的专栏:算法解析 博主ID:代码小号 文章目录 牛客网——【模板】01背包题目解析题目1算法原理题目1题解代码。问题2算法原理问题2题解代码01背包问题的滚动数组优化 牛客网——【模板】01背包 题目解析 关于I/O相关的东西博主就不多赘述了&a…...

vulkanscenegraph显示倾斜模型(5.8)-视景器编译

前言 上一章深入剖析了Vulkan渲染过程中的核心组件VkPipeline,以及vsg中针对图形渲染管线的封装GraphicsPipeline,本章将继续深入探讨视景器准备过程中的最后一章视景器编译,并进一步深入vsg中显存的传输机制,即vsg::TransferTask…...

21 天 Python 计划:MySQL索引机制从基础到应用

文章目录 一、引言二、MySQL索引机制概述2.1 MySQL索引的创建方式2.2 查询、删除、指定索引2.3 数据库索引的本质 三、MySQL的索引分类3.1 数据结构层次3.2 字段数量层次3.3 功能逻辑层次3.4 存储方式层次3.5 索引分类小结 四、MySQL其他索引的创建使用方式4.1 唯一索引的创建与…...

强化学习系统在复杂推理模型中的应用——以AReaL系统为例

目录 强化学习系统在复杂推理模型中的应用——以AReaL系统为例 1. 背景与系统设计目标 2. AReaL系统的主要技术特点 2.1 强化学习策略的引入 2.2 优化训练流程 2.3 泛化能力的提升 3. 实际应用场景 4. 总结与展望 强化学习系统在复杂推理模型中的应用——以AReaL系统为例…...

关于 微服务中服务注册与发现 的详细说明,涵盖主流框架/解决方案的对比、核心功能、配置示例及总结表格

以下是关于 微服务中服务注册与发现 的详细说明,涵盖主流框架/解决方案的对比、核心功能、配置示例及总结表格: 1. 服务注册与发现的核心概念 服务注册与发现是微服务架构的基础能力,主要解决以下问题: 服务注册:服…...

Tiny Cluster(1)——搭建树莓派小型计算集群

1 硬件说明 1.1 软硬件环境 k8s-master-0192.168.5.78Debian 12树莓派58G / 4核 / 64G TF卡 & 512G SSD控制节点k8s-worker-0192.168.5.48Debian 12树莓派4B4G / 4核 / 64G TF卡工作节点k8s-worker-1192.168.5.16Debian 11BTT-CB11G / 4核 / 64G TF卡工作节点 实现 K8s …...

【软考系统架构设计师】信息安全技术基础

1、 信息安全包括5个基本要素:机密性、完整性、可用性、可控性与可审查性。 机密性:确保信息不暴露给未授权的实体或进程。(采取加密措施) 完整性:只有得到允许的人才能修改数据,并且能够判断出数据是否已…...

CCF CSP 第35次(2024.09)(2_字符串变换_C++)(哈希表+getline)

CCF CSP 第35次(2024.09)(2_字符串变换_C) 解题思路:思路一(哈希表getline): 代码实现代码实现(思路一(哈希表getline)): …...

oracle怎么查看是否走了索引

SELECT * FROM CRM_STATION_APPEAL_RESULT WHERE COMPLAINT_ID ce1a1d8f-e2a2-4126-8cb7-14384cb24468; 这是查询语句,怎么看这个查询是否走了索引呢 EXPLAIN PLAN FOR SELECT * FROM CRM_STATION_APPEAL_RESULT WHERE COMPLAINT_ID ce1a1d8f-e2a2-4126-8cb7-14…...

八股系列(分布式与微服务)持续更新!

八股系列(分布式与微服务) 分布式系统的概念 分布式系统是由多个节点组成,节点之间通过网络协议传递数据,对外表现为一个统一的整体,一个节点可以是一台机器或一个进程;分布式系统的核心功能 资源共享&…...

19【动手学深度学习】卷积层

1. 从全连接到卷积 2. 图像卷积 3. 图形卷积代码 互相关操作 import torch from torch import nn from d2l import torch as d2ldef corr2d(X, K):"""计算2维互相关运算"""h, w K.shapeY torch.zeros((X.shape[0]-h1, X.shape[1]-w 1))for …...

Linux基础9

一、日志管理 > 日志配置文件: > > ​ /var/log/messages #内核的消息以及各种服务的公共信息 > > ​ /var/log/dmesg #系统启动过程信息 > > ​ /var/log/cron #cron计划任务相关信息 > > ​ /var…...

[创业之路-366]:投资尽职调查 - 尽调核心逻辑与核心影响因素:价值、估值、退出、风险、策略

目录 一、VC投资的本质是冒着不确定性风险进行买卖、生意,为了赚取高额回报 1、VC投资的核心本质 2、VC投资的运作机制 3、VC投资的风险与挑战 4、VC投资的底层逻辑 5、总结:VC投资的本质再定义 二、尽调核心逻辑 1、尽调的含义 2、尽调的逻辑方…...

Raymarching Textures In Depth

本节课最主要的就是学会hlsl中使用纹理采样 float4 color Texture2DSample(Texobj, TexobjSampler, uv); return color; 课程中的代码(没有这张图我就没做) 课程代码产生深度的原因是uv偏移,黑色区域会不断向左偏移,直到找到白色…...

条件变量condition_variable

条件变量 条件变量是一个对象,能够阻止调用线程,直到通知恢复。 std::condition_variable 是 C 标准库中的一个同步原语,它与互斥锁(std::mutex)配合使用,用于线程间的等待和通知机制。 成员函数 wait(…...

301.找出3位偶数

2094. 找出 3 位偶数 - 力扣&#xff08;LeetCode&#xff09; class Solution {List<Integer> resnew ArrayList<>();List<Integer> linew ArrayList<>();public int[] findEvenNumbers(int[] digits) {Arrays.sort(digits);boolean[] numsnew boolea…...

改进神经风格迁移

改进神经风格迁移&#xff08;Neural Style Transfer, NST&#xff09;可以从多个方向入手&#xff0c;包括模型结构优化、损失函数设计、计算效率提升、应用场景扩展等。以下是一些关键的改进方向及具体方法&#xff1a; 1. 模型结构优化 &#xff08;1&#xff09;轻量化网络…...

零基础上手Python数据分析 (11):DataFrame 数据清洗与预处理 (上) - 搞定缺失值、重复值和异常值

写在前面 上一篇博客,我们学习了如何灵活地索引和选取 DataFrame 中的数据,这为我们深入操作数据打下了基础。 然而,在我们拿到原始数据,准备开始大展身手进行分析之前,往往需要先进行一个至关重要的步骤:数据清洗与预处理 (Data Cleaning and Preprocessing)。 “脏数…...

StateFlow 在 XML(传统View)和 Compose 中的统一数据流管理

在 Android 开发中&#xff0c;XML&#xff08;传统 View 系统&#xff09; 和 Jetpack Compose 的混合使用越来越常见。如何让它们共享同一份数据源&#xff0c;并实现自动 UI 更新&#xff1f; StateFlow 是 Kotlin 协程提供的一种响应式数据流&#xff0c;可以完美适配 XML …...

【JVM】运行时数据区域

文章目录 1. 程序计数器补充 2. 虚拟机栈2.1 栈帧1. 局部变量表2. 操作数栈3. 动态链接4. 方法返回地址补充 3. 本地方法栈4. 堆5. 方法区静态常量池&#xff08;Class常量池&#xff09;运行时常量池字符串常量池&#xff08;1&#xff09;位置变化&#xff08;2&#xff09;放…...

【场景应用5】深入探讨去噪扩散概率模型及训练推理过程

在这篇博客文章中,我们将深入探讨去噪扩散概率模型(Denoising Diffusion Probabilistic Models,简称DDPMs,扩散模型,基于评分的生成模型,或简单的自编码器),因为研究人员在(无条件或有条件的)图像/音频/视频生成任务中,已经取得了显著的成果。流行的例子(在撰写本文…...

TCP 如何在网络 “江湖” 立威建交?

一、特点&#xff1a; &#xff08;一&#xff09;面向连接 在进行数据传输之前&#xff0c;TCP 需要在发送方和接收方之间建立一条逻辑连接。这一过程类似于打电话&#xff0c;双方在通话前需要先拨号建立连接。建立连接的过程通过三次握手来完成&#xff0c;确保通信双方都…...

mysql:重置表自增字段序号

情况一&#xff1a;清空表数据后重置自增 ID 如果你希望清空表中的所有数据&#xff0c;并将自增 ID 重置为初始值&#xff08;通常为 1&#xff09; 1、truncate truncate table tb_dict; 2、delete 配合 alter 语句 delete from tb_dict; alter table tb_dict AUTO_INCR…...

【Code】《代码整洁之道》笔记-Chapter13-并发编程

第13章 并发编程 “对象是过程的抽象。线程是调度的抽象。” 编写整洁的并发程序很难——非常难&#xff0c;而编写在单线程中执行的代码却简单得多。编写表面上看似不错、深入进去却支离破碎的多线程代码也简单&#xff0c;但是系统一旦遭受压力&#xff0c;这种代码就扛不…...

TDengine 可靠性保障:数据持久化与容灾备份(一)

一、引言 在数字化浪潮席卷全球的当下&#xff0c;数据已成为企业和组织最为关键的资产之一。无论是互联网企业记录用户的行为数据&#xff0c;还是金融机构存储交易信息&#xff0c;又或是工业领域监测设备的运行状态&#xff0c;数据的可靠性直接关乎到业务的正常运转、决策…...

AWTK-MVVM 如何让多个View复用一个Model记录+关于app_conf的踩坑

前言 有这么一个业务&#xff0c;主界面点击应用窗口进入声纳显示界面&#xff0c;声纳显示界面再通过按钮进入菜单界面&#xff0c;菜单界面有很多关于该声纳显示界面的设置项&#xff0c;比如量程&#xff0c;增益&#xff0c;时间显示&#xff0c;亮度&#xff0c;对比度等…...

第四节:React Hooks进阶篇-useEffect依赖项为空数组[]与不写的区别

陷阱题&#xff1a;闭包问题、Stale Closure举例 一、依赖项为空数组[]与不写的核心区别 行为空数组[]不写依赖项执行时机仅在组件挂载时执行一次&#xff08;类似componentDidMount&#xff09;组件每次渲染后都执行&#xff08;类似componentDidUpdate&#xff09;更新触发…...

25级总分413数学一142专业124东南大学820考研经验电子信息通信工程,真题,大纲,参考书。

我是南京理工大学的本科生&#xff0c;25 考研一战东大&#xff0c;政治 69&#xff0c;英一 78&#xff0c;数一 142&#xff0c;专业课&#xff08;820&#xff09;124&#xff0c;总分 413。我从 3 月正式开始备考&#xff0c;专业课跟着无线电论坛jenny 老师进行学习&#…...

Docker Desktop磁盘镜像位置用途解析

在设置里面的资源中有个磁盘镜像位置的配置&#xff0c;这个目录默认位置是&#xff1a;C:\Users\haitao.luo\AppData\Local\Docker\wsl\disk&#xff0c;这里面对应的是一个docker_data.vhdx&#xff0c;虚拟磁盘文件&#xff0c;因为是在c盘上&#xff0c;所以可能后面下载镜…...

android display 笔记(十)surfaceflinger与HWC的关系

在 Android 图形系统中&#xff0c;SurfaceFlinger 和 Hardware Composer (HWC) 是紧密协作的两个核心组件&#xff0c;共同负责屏幕内容的合成与显示。它们的关系可以用 “决策者与执行者” 来概括&#xff1a; 首先HWC中 DEVICE&#xff1a;指“显示设备硬件”&#xff08;…...

#MES系统运维问题分析思路

一套适用于90% MES运维现场问题的排查分析思维模型&#xff0c;叫做&#xff1a; &#x1f50d; MES系统问题分析七步法&#xff08;现场实战适用&#xff09; ✅ 第一步&#xff1a;明确问题现象&#xff08;What&#xff09; 问题要说清楚&#xff0c;“不能操作”这种模糊描…...