软考高级架构 - 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. 支持持续演化:分析架构演化中的缺陷,支持下一轮的合理演化。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科研笔记:ARR 与 ACL rolling

1 ARR 介绍 ARR 提供 评审服务 —— 仅限评审 —— 对于提交的论文。评审不会针对特定会议/场所,但评审标准与传统会议的主会场长文或短文提交要求相同(如 ACL 或其他由 ACL 主办的重要会议) 2 提交论文进行 ARR 评审 提交截止日期 每两个…

9_less教程 --[CSS预处理]

LESS(Leaner Style Sheets)是一种CSS预处理器,它扩展了CSS语言,增加了变量、嵌套规则、混合(mixins)、函数等功能,使得样式表的编写更加灵活和易于维护。下面是一些LESS的基础教程内容&#xff…

JVM 双亲委派模型以及垃圾回收机制

目录 1. JVM 内存区域划分 2. JVM 中类加载的过程 1) 类加载的基本流程 2) 双亲委派模型 3. JVM 中垃圾回收机制 1) 找到垃圾 a) 引用计数 b) 可达性分析 2) 释放垃圾 1. JVM 内存区域划分 一个运行起来的 Java 进程,其实就是一个 JVM 虚拟机。 而进程是…

leetcode-73.矩阵置零-day5

class Solution {public void setZeroes(int[][] mat) {int m mat.length, n mat[0].length;// 1. 扫描「首行」和「首列」记录「首行」和「首列」是否该被置零boolean r0 false, c0 false;for (int i 0; i < m; i) {if (mat[i][0] 0) {r0 true;break;}}for (int j …

C++11语法解析(二)

可变参数模板 基本语法及原理 ・C11 支持可变参数模板&#xff0c;也就是说支持可变数量参数的函数模板和类模板&#xff0c;可变数目的参数被称为参数包&#xff0c;存在两种参数包&#xff1a;模板参数包&#xff0c;表示零或多个模板参数&#xff1b;函数参数包&#xff1…

opencv——图片矫正

图像矫正 图像矫正的原理是透视变换&#xff0c;下面来介绍一下透视变换的概念。 听名字有点熟&#xff0c;我们在图像旋转里接触过仿射变换&#xff0c;知道仿射变换是把一个二维坐标系转换到另一个二维坐标系的过程&#xff0c;转换过程坐标点的相对位置和属性不发生变换&a…

BatchNorm 与 LayerNorm

文章目录 1. BatchNorm批量归一化2. LayerNorm层归一化3. BatchNorm 和 LayerNorm 对比4. BatchNorm 和 LayerNorm 怎么选择References 今天重看Transformer&#xff0c;发现里面提到了BatchNorm和LayerNorm两种归一化方法&#xff0c;在这儿做一下总结和整理。 1. BatchNorm批…

OpenCV相关函数

一、二值化函数&#xff08;threshold&#xff09; 功能&#xff1a;将灰度图像转换为二值图像&#xff0c;通常用于图像分割。通过设置阈值&#xff0c;把图像中低于阈值的像素设为0&#xff0c;高于阈值的像素设为1。 参数&#xff1a; src&#xff1a;输入图像。 thresh&a…

[传智杯 #6 省赛] 小红劈字符串

一、题目 二、代码解析 首先&#xff0c;input() 函数用于获取用户从控制台输入的内容&#xff0c;在这里用户输入的应该是一个仅由小写字母组成的字符串&#xff0c;然后将这个输入的字符串赋值给变量 xh。接着&#xff0c;使用 len(xh) 函数来计算字符串 xh 的长度&#xff…

【跨库查询、多库查询】.NET开源 ORM 框架 SqlSugar 系列

文章目录 一、跨库方式1&#xff1a;跨库导航二、手动跨库查询三、同服务器&#xff1a;自动查询跨库查询3.1 Mysql和SqlServer自动3.2 自动: PgSql跨Scheme查询3.3 其他库同服务器 四、跨服务器&#xff1a;自动跨库查询4.1 配置SqlServer dblink4.2 配置 Oracle dblink4.3 配…

数据可视化大屏UI组件库:B端科技感素材PSD

在数据可视化领域&#xff0c;一个出色的大屏UI设计不仅能够准确传达数据背后的信息&#xff0c;更能提升用户的视觉体验。然而&#xff0c;对于UI设计师而言&#xff0c;设计这样一款界面往往面临着寻找合适设计素材的挑战。为了应对这一难题&#xff0c;我们推出了这款数据可…

QT数据库(四):QSqlRelationalTableModel 类

关系数据库概念 例如下列departments、majors、studInfo 这 3 个数据表之间存在关系。 主键与外键 标记“**”的是主键字段&#xff0c;标记“*”的是外键字段。主键字段是一个数据表中表示记录唯一性的字段&#xff0c;例如 studInfo 数据表中的 studID 字段。外键字段是与其…

人工智能原理实验四:智能算法与机器学习

一、实验目的 本实验课程是计算机、智能、物联网等专业学生的一门专业课程&#xff0c;通过实验&#xff0c;帮助学生更好地掌握人工智能相关概念、技术、原理、应用等&#xff1b;通过实验提高学生编写实验报告、总结实验结果的能力&#xff1b;使学生对智能程序、智能算法等…

免费生成AI PPT产品推荐?

要完全免费几乎是没有的&#xff0c;要知道AI还是非常烧钱的。 不过免费蹭还是有很多方法的&#xff0c;这里收集了一些&#xff1a; 下面分享我自己免费蹭过的几款AI制作PPT的工具。 1 金山-WPS PPT对我们来说并不陌生&#xff0c;而微软的PowerPoint与金山的WPS也是我们最常…

WPF 消息循环(二)

们已经知道&#xff0c;win32/MFC/WinForm/WPF 都依靠消息循环驱动&#xff0c;让程序跑起来。 这里就介绍 WPF 中是如何使用消息循环来驱动程序的。 1. 背景 只听说过 Dispatcher &#xff0c;哪里来的消息循环&#xff1f; WPF 启动运行堆栈&#xff1a; > WpfApp1.…

PostgreSQL 常用运维SQL整理

一、查询并杀会话 -- 查询会话 select pid,usename,client_addr,client_port,query_start,query,wait_event from pg_stat_activity; -- 杀会话 select pg_terminate_backend(pid号); -- 使用如下命令自动生成杀会话语句 select datid,datname,pid,usesysid,usename,applicat…

JS中的Promise用法大全

目录 一、相关概念介绍1.什么是Promise2.Promise状态3.创建Promise4.then()方法5.catch方法6.链式调用7.异步编程 二、使用1.构造Promise2.executor 函数3.then() 方法4.then() 方法返回的Promise的状态 三、Async/Await语法糖四、Promise应用场景五、总结 一、相关概念介绍 1…

【新界面】基于卷积神经网络的垃圾分类(Matlab)

基于CNN的垃圾识别与分类GUI【新界面】 有需要可直接联系我&#xff0c;基本都在在线&#xff0c;能秒回&#xff01;可加我看演示视频&#xff0c;不懂可以远程教学 1.此项目设计包括两份完整的源代码&#xff0c;有GUI界面的代码和无GUI界面系统的代码。 &#xff08;以下部…

pytorch bilstm crf的教程,注意 这里不支持批处理,要支持批处理 用torchcrf这个。

### Bi-LSTM Conditional Random Field ### pytorch tutorials https://pytorch.org/tutorials/beginner/nlp/advanced_tutorial.html ### 模型主要结构&#xff1a; ![title](sources/bilstm.png) pytorch bilstm crf的教程&#xff0c;注意 这里不支持批处理 Python version…

bugku-simple MQTT-wp解析

1.下载题目打开题目&#xff0c;是一个流量包&#xff0c;题目说是MQTT&#xff0c;然后打开流量之后的流量都是MQTT&#xff0c;我们来搜一下MQTT是什么流量 MQTT流量&#xff1a; 是一种基于发布订阅模式的轻量级的通讯协议&#xff0c;并且该协议构建于TCP/IP协议之上&…