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

news2024/12/13 21:44:48

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.coloradmin.cn/o/2258969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DocFlow票据AI自动化处理工具:出色的文档解析+抽取能力,提升企业文档数字化管理效能

目录 财务应付 金融信贷业务 近期,DocFlow票据自动化产品正式上线。DocFlow是一款票据AI自动化处理工具,支持不同版式单据智能分类扩展,可选功能插件配置流程,满足多样业务场景。 随着全球化与信息化进程,企业的文件…

C# 探险之旅:第二节 - 定义变量与变量赋值

欢迎再次踏上我们的C#学习之旅。今天,我们要聊一个超级重要又好玩的话题——定义变量与变量赋值。想象一下,你正站在一个魔法森林里,手里拿着一本空白的魔法书(其实就是你的代码编辑器),准备记录下各种神奇…

有道云笔记批量导出

前言 最近使用有道云笔记遇到打开过慢,导致笔记丢失,需要会员才能找回之前笔记问题。 决定改用思源,程序中的格式比较难于通过复制保留,即使导出成word 或者pdf,需要一个专门工具导出成Markdown格式,批量…

离线无网环境中基于OpenEuler的everything ISO安装软件

文章目录 1.创建挂载点 2.挂载 ISO 文件: 3.配置 YUM 源 4.清理 YUM 缓存并生成新的缓存: 5.使用 YUM 安装软件包 要在 OpenEuler 系统中挂载ISO (下载地址:https://repo.openeuler.openatom.cn/openEuler-20.03-LTS/ISO/x86_64/)并使用…

2024最新树莓派4b安装ubuntu20.04.5-server版本全流程解决方案:从烧录到配置桌面到联网!!!

准备工作 硬件工具 树莓派4b,32GSD卡,读卡器 软件工具 ubuntu20.04.5镜像,SD卡格式化工具,烧录软件,远程连接工具。 下面是我通过百度网盘分享的文件:树莓派4bubuntu20.04链接:https://pan…

STM32 OLED屏幕驱动详解

一、介绍 OLED是有机发光二极管,又称为有机电激光显示(Organic Electroluminescence Display, OLED)。OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广…

商业银行基于容器云的分布式数据库架构设计与创新实践

导读 本文介绍了某商业银行基于 TiDB 和 Kubernetes(简称 K8s) 构建的云化分布式数据库平台,重点解决了传统私有部署模式下的高成本、低资源利用率及运维复杂等问题。 通过引入 TiDB Operator 自动化管理与容器化技术,银行能够实现多个业务系统的高可用…

项目组件框架介绍[etcd]

文章目录 前言etcd安装Ubuntu 上通过包管理器安装通过源码安装配置 客户端开发包开发包的安装接口介绍添加一个键值对获取一个键值对租约保活机制监听 封装服务注册与发现服务注册服务发现 前言 Etcd 是一个 golang 编写的分布式、高可用的一致性键值存储系统,用于配…

网页爬虫技术全解析:从基础到实战

引言 在当今信息爆炸的时代,互联网上的数据量每天都在以惊人的速度增长。网页爬虫(Web Scraping),作为数据采集的重要手段之一,已经成为数据科学家、研究人员和开发者不可或缺的工具。本文将全面解析网页爬虫技术&…

Jmeter如何对UDP协议进行测试?

Jmeter如何对UDP协议进行测试? 1 jmeter-plugins安装2 UDP-Protocol Support安装3 UDP协议测试 1 jmeter-plugins安装 jmeter-plugins是Jmeter的插件管理器;可以组织和管理Jmeter的所有插件;直接进入到如下页面,选择如图的选项进…

计算机网络之网络层超详细讲解

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络之网络层超详细讲解 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨论💌 …

微信小程序:实现节点进度条的效果;正在完成的节点有动态循环效果;横向,纵向排列

参考说明 微信小程序实现流程进度功能 - 知乎 上面的为一个节点进度条的例子&#xff0c;但并不完整&#xff0c;根据上述代码&#xff0c;进行修改完善&#xff0c;实现其效果 横向效果 代码 wxml <view classorder_process><view classprocess_wrap wx:for&quo…

如何不重启修改K8S containerd容器的内存限制(Cgroup方法)

1. 使用crictl 查看容器ID crictl ps2. 查看Cgroup位置 crictl inspect 容器ID3. 到容器Cgroup的目录下 使用上个命令就能找到CgroupPath 4 . 到cgroup目录下 正确目录是 : /sys/fs/cgroup/memory/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-podf68e18…

海康威视摄像头RTSP使用nginx推流到服务器直播教程

思路&#xff1a; 之前2020年在本科的时候&#xff0c;由于项目的需求需要将海康威视的摄像头使用推流服务器到网页进行直播。这里将自己半个月琢磨出来的步骤给大家发一些。切勿转载&#xff01;&#xff01;&#xff01;&#xff01; 使用网络摄像头中的rtsp协议---------通…

智简模型,边缘智能:AI 轻量化与边缘计算的最佳实践

文章目录 摘要引言模型轻量化与优化方法模型量化模型剪枝知识蒸馏合理使用边缘计算硬件 轻量化图像分类实战1. 模型量化2. 知识蒸馏3. 学生模型的创建与训练 QA环节总结参考资料 摘要 边缘计算与 AI 模型的结合&#xff0c;能够在资源受限的环境中提供实时智能服务。通过模型轻…

flink sink kafka的事务提交现象猜想

现象 查看flink源码时 sink kafka有事务提交机制&#xff0c;查看源码发现是使用两阶段提交策略&#xff0c;而事务提交是checkpoint完成后才执行&#xff0c;那么如果checkpoint设置间隔时间比较长时&#xff0c;事务未提交之前&#xff0c;后端应该消费不到数据&#xff0c…

推送(push)项目到gitlab

文章目录 1、git init1.1、在当前目录中显示隐藏文件&#xff1a;1.2、查看已有的远程仓库1.3、确保你的本地机器已经生成了 SSH 密钥&#xff1a;1.4、将生成的公钥文件&#xff08;通常位于 ~/.ssh/id_rsa.pub&#xff09;复制到 GitLab 的 SSH 设置中&#xff1a;1.5、测试 …

7.Vue------$refs与$el详解 ------vue知识积累

$refs 与 $el是什么&#xff1f; 作用是什么? ref&#xff0c;$refs&#xff0c;$el &#xff0c;三者之间的关系是什么&#xff1f; ref (给元素或者子组件注册引用信息) 就像你要给元素设置样式&#xff0c;就需要先给元素设定一个 class 一样&#xff0c;同理&#xff0c;…

通俗易懂的 Nginx 反向代理 配置

通俗易懂的 Nginx 反向代理 配置 首先 root 与 alias 的区别 root 是直接拼接 root location location /i/ {root /data/w3; }当请求 /i/top.gif &#xff0c;/data/w3/i/top.gif 会被返回。 alias 是用 alias 替换 location location /i/ {alias /data/w3/images/; }当请…

git 导出某段时间修改的文件 windows

第一步&#xff1a;列出两次commitID之间的文件变动 git diff oldid newid --name-only// 例如 git diff 4a886c57a8b5611a2abcfcd120461c2e92f7029a HEAD --name-only 4a886c57a8b5611a2abcfcd120461c2e92f7029a 代表之前 HEAD 代表最新或者换成某次commitID 例如&#xf…