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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙NEXT开发案例:颜文字搜索器

【引言】 本文将介绍一个名为“颜文字搜索器”的开发案例,该应用是基于鸿蒙NEXT平台构建的,旨在帮助用户快速查找和使用各种风格的表情符号。通过本案例的学习,读者可以了解如何在鸿蒙平台上进行数据处理、UI设计以及交互逻辑的实现。 【环…

【报错记录】Ubuntu22.04解决开机卡在 /dev/sda5 : clean , *files , *blocks

一个愿意伫立在巨人肩膀上的农民...... 一、错误现象 本人的电脑安装Windows10和Ubuntu22.04双系统,一次训练中电脑死机无法开机,重启之后便出现如下错误,在网上寻找过很多方法均无效,在root下禁用了samba服务,也无济…

关于睡懒觉

我们经常听到一个词:睡懒觉。 我认为,睡懒觉这个词,是错误的。 人,是需要睡眠的,睡不够,就不会醒。睡够了,自然会醒,也不想继续睡。不信你试试,睡够了,你…

数据地图怎么做?推荐这款数据可视化地图生成器

在数字化与信息化高速发展的今天,企业迎来了前所未有的发展机遇,规模迅速扩张,市场版图不断延伸。然而,伴随着这种快速的发展,一个不容忽视的问题逐渐浮出水面——如何精准高效地掌握分布在各地的分公司、业务点乃至整…

访问者模式的理解和实践

在软件开发过程中,设计模式为我们提供了解决常见问题的最佳实践。访问者模式(Visitor Pattern)是行为设计模式之一,它将数据操作与数据结构分离,使得在不修改数据结构的前提下,能够定义作用于这些元素的新的…

【Java 学习】面向程序的三大特性:封装、继承、多态

引言 1. 封装1.1 什么是封装呢?1.2 访问限定符1.3 使用封装 2. 继承2.1 为什么要有继承?2.2 继承的概念2.3 继承的语法2.4 访问父类成员2.4.1 子类中访问父类成员的变量2.4.2 访问父类的成员方法 2.5 super关键字2.6 子类的构造方法 3. 多态3.1 多态的概…

Burp与小程序梦中情缘

前言 在日常渗透工作中,有时需要对微信小程序进行抓包渗透,通过抓包,我们可以捕获小程序与服务器之间的通信数据,分析这些数据可以帮助我们发现潜在的安全漏洞,本文通过讲述三个方法在PC端来对小程序抓包渗透 文章目…

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 原模型 多图推理

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 原模型 多图推理 flyfish 输入 输出 [‘第一张图片是一幅中国山水画,描绘了一座山峰和周围的树木。第二张图片是一张现代照片,展示了一座山峰和周围的自然景观,包括水体和植被。’] fro…

R语言学习笔记-1

1. 基础操作和函数 清空环境:rm(list ls()) 用于清空当前的R环境。 打印输出:print("Hello, world") 用于输出文本到控制台。 查看已安装包和加载包: search():查看当前加载的包。install.packages("package_na…

基本分页存储管理

一、实验目的 目的:熟悉并掌握基本分页存储管理的思想及其实现方法,熟悉并掌握基本分页存储管理的分配和回收方式。 任务:模拟实现基本分页存储管理方式下内存空间的分配和回收。 二、实验内容 1、实验内容 内存空间的初始化——可以由用户输…

如何将CSDN的文章保存为PDF?

目录 1、打开CSDN文章2、按F12或者鼠标右键选择检查并进入控制台3、在控制台输入以下代码4、然后回车(Enter)如果纵向显示不全就横向 1、打开CSDN文章 2、按F12或者鼠标右键选择检查并进入控制台 3、在控制台输入以下代码 (function(){ $("#side&q…

ur机器人ros-urdf

新建工作空间 mkdir -p ~/catkin_ws/src cd catkin_ws_ur5/src git clone -b melodic-devel https://github.com/ros-industrial/universal_robot.git cd .. rosdep update rosdep install --rosdistro melodic --ignore-src --from-paths src catkin_make source ~/catkin_ws…

A6688 JSP+MYSQL+LW+二手物品网上交易系统

二手物品网上交易系统的设计与实现 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 摘 要 随着社会经济快速发展,互联网推动了电子商务业的迅速崛起。越来越多的人们喜欢在线进行商品的交易,尤其是对于二手物品的处理&#xff0…

深度学习day4|用pytorch实现猴痘病识别

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 🍺要求: 训练过程中保存效果最好的模型参数。 加载最佳模型参数识别本地的一张图片。 调整网络结构使测试集accuracy到达88%&#x…

ISP(Image Signal Processor)——HDR技术总结

传统多帧融合技术 拍摄一系列不同曝光时长的图像帧(LDR),然后使用融合算法进行融合成HDR图像。 融合算法可以分为两种 基于照度图估计的融合 基于照度估计需要拟合相机响应函数,详细可以参考如下论文: Recovering H…

首程控股再发停车资产类REITs,行业走向“资产管理模式”

伴随着资产证券化的快速发展,交易结构设置和底层资产类型也愈加丰富多样。 近日,首程控股完成“国君-首程控股智慧停车第二期资产支持专项计划”的正式发行。据了解,该产品的优先级利率为2.40%,发行规模达到人民币3.70亿元&#…

如何写出优秀的单元测试?

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 写出优秀的单元测试需要考虑以下几个方面: 1. 测试用例设计 测试用例应该覆盖被测试代码的不同场景和边界情况,以尽可能发现潜在的问题。…

PostgreSQL的学习心得和知识总结(一百六十四)|深入理解PostgreSQL数据库之在 libpq 中支持负载平衡

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…

批量合并多个Excel到一个文件

工作中,我们经常需要将多个Excel的数据进行合并,很多插件都可以做这个功能。但是今天我们将介绍一个完全免费的独立软件【非插件】,来更加方便的实现这个功能。 准备Excel 这里我们准备了两张待合并的Excel文件 的卢易表 打开的卢易表软件…

shell编程(完结)

shell编程(完结) 声明! 学习视频来自B站up主 ​泷羽sec​​ 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章 笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其…