软考高级架构 - 10.5 软件架构演化评估方法
10.4 软件架构演化原则总结
本节提出了18条架构演化的核心原则,并为每条原则设计了简单而有效的度量方法,用于从系统整体层面提供实用信息,帮助评估和指导架构演化。
- 演化成本控制:成本小于重新开发成本,经济高效。
- 进度可控:演化任务按计划时间完成。
- 风险可控:控制演化过程中的各种风险。
- 主体维持:演化稳定增长,不影响系统主体行为。
- 结构优化:演化后整体结构更合理、更高效。
- 平滑演化:保持演化速率稳定,避免剧烈变化。
- 目标一致:阶段性和最终目标保持一致。
- 模块独立演化:模块修改互不干扰或影响范围小。
- 影响可控:变更对系统的影响范围可预测。
- 复杂性可控:限制复杂性增长,确保系统易维护。
- 有利于重构:演化后更便于代码和架构重构。
- 有利于重用:提升或维持架构的可重用性。
- 设计原则遵从:演化符合既定设计原则。
- 适应新技术:减少技术依赖,适应多平台。
- 环境适应性:支持新硬件和软件环境。
- 标准依从性:遵循国际、国家或行业标准。
- 质量向好:提升系统的质量属性,如可靠性。
- 适应新需求:增强架构应对新需求的能力。
10.5 软件架构演化评估方法
根据演化过程是否已知,软件架构演化评估分为:
- 演化过程已知的评估:通过对演化前后的架构进行度量和比较,评估演化对架构质量属性的影响。
- 演化过程未知的评估:针对未知的演化轨迹,通常通过大规模数据分析或模型预测方法进行评估(未详述)。
10.5.1 演化过程已知的评估
基于度量的架构演化评估方法,通过细化演化过程和指标计算,能够清晰地分析架构内部结构的变化如何影响外部质量属性,保障软件架构在演化中的可靠性和可维护性。
评估流程

对演化前后架构版本进行度量,原子演化操作。然后计算相邻版本间的架构质量属性距离,最后得出最初版本和最终版本的质量属性距离。综合分析架构演化过程中的质量属性变化,评估架构质量。
架构质量属性度量
- 可靠性:单一实数值,表示架构的潜在风险率。
- 可维护性:包括:圈复杂度 (CCN)、扇入/扇出度 (Fan-in/Fan-out)、模块间耦合度、模块的响应性、紧内聚度、松内聚度
架构质量属性距离计算
-
可维护性距离:归一化笛卡尔距离公式: 距离值越大,表示版本间可维护性差异越大。
-
可靠性距离:简化的归一化公式,表示两个版本在可靠性上的差异。
-
非相邻版本的架构质量属性距离
架构演化评估的意义
-
架构修改影响分析
- 分类不同类型的原子演化操作。
- 分析内部逻辑结构或交互过程对外部质量属性的影响。
- 研究架构版本间距离与质量属性差异的关联。
-
监控演化过程
- 绘制架构质量属性变化曲线。
- 持续监测质量属性的变化趋势,确保健康演化。
-
分析关键演化过程
- 确定架构质量变化的关键节点。
- 识别逻辑依赖或交互过程的重大变化,有助于维护和故障定位。
10.5.2 演化过程未知的评估
当软件架构的演化过程未知时,我们无法直接跟踪每一步的变化,需通过 逆向推测 的方法,根据架构演化前后的度量结果分析架构的变化及其对质量属性的影响。
通过验证演化是否达成预期目标,可以保障架构健康地持续演化,同时发现和修复潜在问题。
评估流程
-
架构度量:分别对 演化前架构 和 演化后架构 进行质量属性度量,得到度量结果。
-
计算质量属性距离:根据度量结果,计算演化前后架构的 质量属性距离,分析两者之间的差异。
-
推测架构演化操作:根据质量属性距离的变化,逆向推测可能发生的 架构演化操作集合,并确定操作的作用位置和对象
-
分析驱动因素:例如平台移植、提高性能、修复代码错误。
-
验证预期目标
不符合预期:可能存在未解决的问题或引入新问题,需进一步演化修复。
符合预期:说明演化完成了预期任务,如可维护性提高、可靠性增强。
评估应用
-
演化操作验证:确定演化是否达到了改善架构的目标。
-
问题定位与优化:识别演化过程中可能引入的质量问题
-
支持持续演化:分析架构演化中的缺陷,支持下一轮的合理演化。
相关文章:
软考高级架构 - 10.5 软件架构演化评估方法
10.4 软件架构演化原则总结 本节提出了18条架构演化的核心原则,并为每条原则设计了简单而有效的度量方法,用于从系统整体层面提供实用信息,帮助评估和指导架构演化。 演化成本控制:成本小于重新开发成本,经济高效。进…...
半导体制造全流程
半导体制造是一个极其复杂且精密的过程,主要涉及将硅片加工成功能强大的芯片。以下是半导体制造的全流程概述: 1. 硅材料制备 硅提纯: 使用冶金级硅,进一步提纯为高纯度硅(电子级硅),纯度可达 …...
国科大网络协议安全期末
完整资料仓库地址:https://gitee.com/etsuyou/UCAS-Network-Protocol-Security 部分题目: 六 论述题10*220 试讨论IPv6解决了IPv4的哪些“痛点”,以及IPv6存在的安全问题试比较IPsec与SSL的安全性 五 简答题5*315 简述MAC欺骗和ARP欺骗的…...
ES动态索引——日志es索引数据按月份存储
一、定义ES索引 NoArgsConstructor AllArgsConstructor Data Accessors(chain true) Document(indexName "charge_pile_log" Constants.ES_TIME_DYNAMIC_INDEX) //(索引名称动态,前面固定,后面月份) public class ChargePileLogESDomain {…...
NLP论文速读(ICML 2024)|面相对齐大语言模型的迁移和合并奖励模型方法
论文速读|Transforming and Combining Rewards for Aligning Large Language Models 论文信息: 简介: 本文探讨了如何使大型语言模型(LLMs)与人类偏好对齐。传统的对齐方法是先从偏好数据中学习一个奖励模型,然后使用这…...
蓝桥杯我来了
最近蓝桥杯报名快要截止了,我们学校开始收费了,我们学校没有校赛,一旦报名缴费就是省赛,虽然一早就在官网上报名了,但是一直在纠结,和家人沟通,和朋友交流,其实只是想寻求外界的支持…...
Vue3+TypeScript+AntVX6实现Web组态(从技术层面与实现层面进行分析)内含实际案例教学
摘要 用Vue3+TypeScript+AntVX6实现Web组态(从技术层面与实现层面进行分析),包含画布创建、节点设计、拖拽实现(实际案例)、节点连线、交互功能,后续文章持续更新。 注:本文章可以根据目录进行导航 文档支持 AntVX6使用文档 https://x6.antv.antgroup.com/tutorial…...
【LeetCode】每日一题 2024_12_13 K 次乘运算后的最终数组 I(暴力)
前言 每天和你一起刷 LeetCode 每日一题~ 小聊两句 1、今天是 12.13 南京大屠杀国家公祭日。铭记历史,勿忘国耻。 2、今天早上去看了 TGA 年度游戏颁奖,小机器人拿下了年度最佳游戏,所有人都震惊了,大伙纷纷问到,谁…...
Plant simulation、Flexsim、Automod、Emulate3D、VisuaComponent仿真软件对比
软件名称物流系统仿真工业布局仿真动画效果数据分析优化虚拟现实/混合现实二次开发虚拟电控和PLC调试 软件行业内特殊功能Emulate3D1.物流设备模块完备,功能灵活设置,涵盖各种设备形态和运作方式 2.唯一将摩擦力、重力、阻力等物理属性融入到物流运动中&…...
深度学习day4|用pytorch实现猴痘病识别
🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 🍺要求: 训练过程中保存效果最好的模型参数。 加载最佳模型参数识别本地的一张图片。 调整网络结构使测试集accuracy到达88%&#x…...
批量导出工作簿中高清图片-Excel易用宝
我同事在工作簿中做了三个图表,现在需要将工作簿中的图标导出保存为高清图片,通过右键另存为保存的图片并非高清图片,其实要把Excel工作簿中的图表或图片对象导出为高清图片也很简单。 单击Excel易用宝 Plus,导出高清图片。 在导出…...
外观模式的理解和实践
外观模式(Facade Pattern)是一种常用的软件设计模式,它提供了一个统一的接口,用来访问子系统中的一群接口。该模式定义了一个高层的接口,使得子系统更容易使用。简单来说,外观模式就是通过引入一个外观角色…...
linux离线安装部署redis
版本信息 linux版本:CentOS-7-x86_64 redis版本:redis-6.2.6 VMware:VMware-workstation-full-16.1.1 xshell: Xshell-7.0 安装 1.查看当前虚拟机ip命令:ifconfig -a 2.xhell连接虚拟机 ,在xshell页面点击文件-…...
网管平台(基础篇):路由器的介绍与管理
路由器简介 路由器(Router)是一种计算机网络设备,它的主要作用是将数据通过打包,并按照一定的路径选择算法,将网络传送至目的地。路由器能够连接两个或更多个网络,并根据信道的情况自动选择和设定路由&…...
数据结构——跳表
目录 1.什么是跳表-skiplist 2.skiplist的效率如何保证? 3.skiplist的实现 4.skiplist跟平衡搜索树和哈希表的对比 1.什么是跳表-skiplist skiplist本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的…...
活动预告 |【Part2】Microsoft Azure 在线技术公开课:基础知识
课程介绍 参加“Azure 在线技术公开课:基础知识”活动,培养有助于创造新的技术可能性的技能并探索基础云概念。参加我们举办的本次免费培训活动,扩充自身的云模型和云服务类型知识。你还可以查看以计算、网络和存储为核心的 Azure 服务。 课…...
PyCharm如何导入库( 包 )
目录 1.在主界面中导库 2.用设置->项目安装库 2.1.使用右上方按钮 2.2.使用右下方Python解释器 3.使用左下角终端导库 1.在主界面中导库 在主界面输入导库后等待一会儿,会在那一行出现一个红色灯。 图1 红色灯 我们点击红色灯,会出现 图2 错误选…...
【DevOps基础篇】SCM(Source Code Management)
目录 代码管理工具Git特点:SVN特点:Git与SVN的对比:Git 的开发工作流程(flow)的设计Git Flow主要特点:工作流程:GitHub Flow主要特点:工作流程:两种Flow的对比:推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战代码管理工具 Gi…...
DDS—RTPS一致性测试案例分析
1 往期回顾 通过《DDS数据分发服务—提升汽车领域数据传输效率》和《DDS—DCPS测试策略介绍及实际案例分析》这两篇文章的介绍,相信广大读者对Data Distribution Service(DDS)协议和Data Centric Publish Subscribe(DCPS)测试有了基本了解:DDS协议致力于…...
【深度学习入门】深度学习介绍
1.1 深度学习介绍 学习目标 目标 知道深度学习与机器学习的区别了解神经网络的结构组成知道深度学习效果特点 应用 无 区别 特征提取方面 机器学习的特征工程步骤是要靠手动完成的,而且需要大量领域专业知识深度学习通常由多个层组成,它们通常将更简…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...
DeepSeek越强,Kimi越慌?
被DeepSeek吊打的Kimi,还有多少人在用? 去年,月之暗面创始人杨植麟别提有多风光了。90后清华学霸,国产大模型六小虎之一,手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水,单月光是投流就花费2个亿。 疯…...
深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学
一、光敏传感技术的物理本质与系统级实现挑战 光敏电阻作为经典的光电传感器件,其工作原理根植于半导体材料的光电导效应。当入射光子能量超过材料带隙宽度时,价带电子受激发跃迁至导带,形成电子-空穴对,导致材料电导率显著提升。…...
【AI News | 20250609】每日AI进展
AI Repos 1、OpenHands-Versa OpenHands-Versa 是一个通用型 AI 智能体,通过结合代码编辑与执行、网络搜索、多模态网络浏览和文件访问等通用工具,在软件工程、网络导航和工作流自动化等多个领域展现出卓越性能。它在 SWE-Bench Multimodal、GAIA 和 Th…...
