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

软考高级架构 - 10.5 软件架构演化评估方法

10.4 软件架构演化原则总结

        本节提出了18条架构演化的核心原则,并为每条原则设计了简单而有效的度量方法,用于从系统整体层面提供实用信息,帮助评估和指导架构演化。

  1. 演化成本控制:成本小于重新开发成本,经济高效。
  2. 进度可控:演化任务按计划时间完成。
  3. 风险可控:控制演化过程中的各种风险。
  4. 主体维持:演化稳定增长,不影响系统主体行为。
  5. 结构优化:演化后整体结构更合理、更高效。
  6. 平滑演化:保持演化速率稳定,避免剧烈变化。
  7. 目标一致:阶段性和最终目标保持一致。
  8. 模块独立演化:模块修改互不干扰或影响范围小。
  9. 影响可控:变更对系统的影响范围可预测。
  10. 复杂性可控:限制复杂性增长,确保系统易维护。
  11. 有利于重构:演化后更便于代码和架构重构。
  12. 有利于重用:提升或维持架构的可重用性。
  13. 设计原则遵从:演化符合既定设计原则。
  14. 适应新技术:减少技术依赖,适应多平台。
  15. 环境适应性:支持新硬件和软件环境。
  16. 标准依从性:遵循国际、国家或行业标准。
  17. 质量向好:提升系统的质量属性,如可靠性。
  18. 适应新需求:增强架构应对新需求的能力。

10.5 软件架构演化评估方法

根据演化过程是否已知,软件架构演化评估分为:

  1. 演化过程已知的评估:通过对演化前后的架构进行度量和比较,评估演化对架构质量属性的影响。
  2. 演化过程未知的评估:针对未知的演化轨迹,通常通过大规模数据分析或模型预测方法进行评估(未详述)。

10.5.1 演化过程已知的评估

        基于度量的架构演化评估方法,通过细化演化过程和指标计算,能够清晰地分析架构内部结构的变化如何影响外部质量属性,保障软件架构在演化中的可靠性和可维护性。

评估流程

        对演化前后架构版本进行度量,原子演化操作。然后计算相邻版本间的架构质量属性距离,最后得出最初版本和最终版本的质量属性距离。综合分析架构演化过程中的质量属性变化,评估架构质量。

架构质量属性度量
  • 可靠性:单一实数值,表示架构的潜在风险率。
  • 可维护性:包括:圈复杂度 (CCN)、扇入/扇出度 (Fan-in/Fan-out)、模块间耦合度、模块的响应性、紧内聚度、松内聚度
架构质量属性距离计算
  1. 可维护性距离:归一化笛卡尔距离公式: 距离值越大,表示版本间可维护性差异越大。

  2. 可靠性距离:简化的归一化公式,表示两个版本在可靠性上的差异。

  3. 非相邻版本的架构质量属性距离

架构演化评估的意义
  1. 架构修改影响分析

    • 分类不同类型的原子演化操作。
    • 分析内部逻辑结构或交互过程对外部质量属性的影响。
    • 研究架构版本间距离与质量属性差异的关联。
  2. 监控演化过程

    • 绘制架构质量属性变化曲线。
    • 持续监测质量属性的变化趋势,确保健康演化。
  3. 分析关键演化过程

    • 确定架构质量变化的关键节点。
    • 识别逻辑依赖或交互过程的重大变化,有助于维护和故障定位。

10.5.2 演化过程未知的评估

        当软件架构的演化过程未知时,我们无法直接跟踪每一步的变化,需通过 逆向推测 的方法,根据架构演化前后的度量结果分析架构的变化及其对质量属性的影响。

        通过验证演化是否达成预期目标,可以保障架构健康地持续演化,同时发现和修复潜在问题。

评估流程
  1. 架构度量:分别对 演化前架构演化后架构 进行质量属性度量,得到度量结果。

  2. 计算质量属性距离:根据度量结果,计算演化前后架构的 质量属性距离,分析两者之间的差异。

  3. 推测架构演化操作:根据质量属性距离的变化,逆向推测可能发生的 架构演化操作集合,并确定操作的作用位置和对象

  4. 分析驱动因素:例如平台移植、提高性能、修复代码错误。

  5. 验证预期目标

        不符合预期:可能存在未解决的问题或引入新问题,需进一步演化修复。

        符合预期:说明演化完成了预期任务,如可维护性提高、可靠性增强。

评估应用
  1. 演化操作验证:确定演化是否达到了改善架构的目标。

  2. 问题定位与优化:识别演化过程中可能引入的质量问题

  3. 支持持续演化:分析架构演化中的缺陷,支持下一轮的合理演化。

相关文章:

软考高级架构 - 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 深度学习介绍 学习目标 目标 知道深度学习与机器学习的区别了解神经网络的结构组成知道深度学习效果特点 应用 无 区别 特征提取方面 机器学习的特征工程步骤是要靠手动完成的,而且需要大量领域专业知识深度学习通常由多个层组成,它们通常将更简…...

数值分析—非线性方程的数值解

研究背景 形如 x − t a n x 0 x-tanx0 x−tanx0、 x l n x e − x 2 s i n x 0 xlnxe^{-x^2}sinx0 xlnxe−x2sinx0等称为非线性方程,自变量之间并非简单的线性关系,这种问题我们无法通过其结构求解,需要其他的逼近方式,本章…...

LDR6500应用:C转DP线材双向投屏开启全新体验

在当今这个科技日新月异、蓬勃发展的时代,高清视频传输以及显示技术已经深深融入到我们日常生活与工作的方方面面,其重要性不言而喻。不管是在商务场合的会议演示,还是教育领域的娱乐享受,以及充满激情的游戏竞技领域,…...

路径规划之启发式算法之十六:和声搜索算法(Harmony Search, HS)

和声搜索算法(Harmony Search, HS)是一种新兴的启发式全局搜索算法,是一种模拟音乐家即兴演奏过程的群体智能优化算法。这种算法由Zong Woo Geem等人在2001年提出,灵感来源于音乐家在寻找和声时的创造性思维过程。HS算法通过模拟音乐家演奏音乐时的选择过程来寻找问题的最优…...

Redis - 实战之 全局 ID 生成器 RedisIdWorker

概述 定义:一种分布式系统下用来生成全局唯一 ID 的工具 特点 唯一性,满足优惠券需要唯一的 ID 标识用于核销高可用,随时能够生成正确的 ID高性能,生成 ID 的速度很快递增性,生成的 ID 是逐渐变大的,有利于…...

matlab 连接远程服务器

通过matlab 控制远程服务器 查看 matlab 中 python 接口脚本 对于 matlab 2010b 兼容的 最高 Python版本是 3.10 安装 3.10 版本的Python,并安装 paramiko 库 pip install paramikomatlab 中设置 Python的环境 例如 pyversion(D:/Anaconda3/python.e…...

在服务器自主选择GPU使用

比如说,程序使用第 2 张显卡(从 0 开始计数)。它的作用是告诉系统和深度学习框架(如 PyTorch 或 TensorFlow)只可见某些 GPU。 export CUDA_VISIBLE_DEVICES1 然后再查看当前使用的显卡: echo $CUDA_VIS…...

【设计模式】享元模式(Flyweight Pattern)

享元模式(Flyweight Pattern)是一种结构型设计模式,它通过共享尽可能多的对象来有效支持大量细粒度的对象。这个模式主要用于减少内存使用和提高性能,特别是在需要创建大量相似对象的场景中。享元模式的核心思想是将对象的状态分为…...

题目 1688: 数据结构-字符串插入

第一种方式字符串 #include<iostream> #include<cstring> #include<algorithm> using namespace std; int main(){string s1,s2;int n;cin>>s1>>s2>>n;s1.insert(n-1,s2);cout<<s1<<endl;return 0; } 第二种方式字符数组 …...

28.攻防世界PHP2

进入场景 扫描目录 [04:12:32] 403 - 303B - /.ht_wsr.txt [04:12:32] 403 - 306B - /.htaccess.bak1 [04:12:32] 403 - 308B - /.htaccess.sample [04:12:…...

QML QT6 WebEngineView 、Echarts使用和数据交互

QML 中的 WebEngineView 是用于显示网页内容的组件,它基于 Qt WebEngine,支持现代网页渲染和与 JavaScript 的交互。它通常用来在 QML 应用中嵌入浏览器或加载在线资源。WebEngineView 可以展示 HTML、CSS、JavaScript 等网页内容,并提供多种属性和方法来控制其行为。 如下…...

中国网站备案查询系统/谁能给我个网址

查看Linux服务器被映射的公网ip 现在云服务器非常流行&#xff0c;不仅企业甚至是个人都可能拥有自己的云服务器&#xff0c;但是目前的云服务器厂商提供的公网IP大都是映射而来&#xff0c;所以在Linux服务器上执行ifconfig/ip a等命令根本查询不到本机的公网IP&#xff0c;知…...

郑州工程建设信息网站/网页设计制作教程

大家早上好&#xff0c;本人姓吴&#xff0c;如果觉得文章写得还行的话也可以叫我吴老师。欢迎大家跟我一起走进数据分析的世界&#xff0c;一起学习&#xff01; 感兴趣的朋友可以关注我或者我的数据分析专栏&#xff0c;里面有许多优质的文章跟大家分享哦。 目录一、实验设计…...

wordpress 改 名字/app推广代理

WechatIMG122.jpeg环境 查看 windows 系统信息 D204EDD0-0843-4DB4-B885-17CF111A4A9D.png按照流程控制面板->系统和安全->系统查看 windows 系统信息&#xff0c;如上图所示。 查看 windows 版本号 2020-09-11_5f5ad11f3c54b.pngcmd下执行winver查看 windows 版本号。wi…...

小型企业网站建设的背景/北京网站优化企业

在项目中可能经常遇到不同类型之间的转换&#xff0c; 如 int转换为byte double转换为int。 那么这些显式或隐式转换是如何实现的呢&#xff0c;下面也是以User对象举例。 首先贴上来User.cs的所有属性 /// <summary>/// 姓名/// </summary>public string Name {…...

视频直播网站/软文营销方法有哪些

/** 1.ruby环境 官网下载的&#xff1a;tar -zxvf xxxxx安装包xxxx 解压到/opt/ruby/下 执行命令 cd ruby ./configure --prefix/usr/local/ruby; 文件夹如果不存在就新建 make make install 2.ruby的redis客户端安装 下载&#xff1a;https://rubygems.org/downloads/redi…...

wordpress 登陆页面模板/十大电商代运营公司

互联网发展到今天&#xff0c;就是人类社会、计算机、物理世界的三元融合。信息服务进入普惠计算机时代&#xff0c;人类进入信息时代&#xff0c;这是划时代的大事。在工业社会时代&#xff0c;蒸汽机、电力解放人们的手脚&#xff0c;从而提高了生产效率&#xff0c;解放了生…...