本文分享自华为云社区《架构可视化支撑系统演进探索》,原文作者:无名小溪。

随着软件系统的规模和复杂度日益增长,软件的生命周期越来越长,软件开发的很大一部分工作集中于维护和改造现有的软件系统,实践研究表明,软件资源预算的50%~80%消耗在对现有系统的维护上,而软件维护者理解程序源代码的时间要占整个软件维护的47%~62%。软件维护已经成为软件工程面临的重要课题之一,而正确和全面地理解软件系统是对软件进行维护的前提,通过架构逆向分析,提供可视化能力,为软件系统的维护和演化可以提供有效支撑。

本文分享借助软件架构可视化辅助系统演进的几个探索:辅助理解现有系统、分析不合理依赖、看护现有架构、支撑架构演进。

1、架构可视化辅助理解现有系统

当新的项目成员加入项目,面对大量代码,如何快速理解、掌握,是否有啥工具可以借助,提高效率?

经过探索,通过在IDE中,提供架构可视化视图,展示系统的架构依赖,通过代码与架构图的双向关联,实现编辑代码时,自动高亮对应的架构元素,双击架构图中的元素,快速关联、跳转到对应的代码,实现代码和架构图的实时联动(Simon Brown的架构即代码理念),帮助开发人员更好的理解代码。

架构元素间,通过连线,展示之间的依赖关系,线上,通过数字表示耦合的数量,点击连线,可以展示、查看耦合的细节。

2、架构可视化分析不合理依赖

当系统在演进过程中腐化,产生不合理的依赖,架构的分层不再清晰,阅读和理解将变得极其困难。新特性开发、问题单修改变得困难重重,你在做UI修改的时候,可能影响到业务逻辑,对业务逻辑的变更,可能对数据库代码或其他元素造成影响。

基于生成的可视化架构,通过经典设计理念符合度分析,可以帮架构师、开发人员发现一些设计坏味道,比如是否存在循环依赖、跨层依赖、反向依赖等。为重构活动提供参考,提高重构效率。

以循环依赖为例,通过连线追踪,可以清晰看到产生循环依赖的架构元素、调用系列,通过环中各连线的数字,能够快速识别环薄弱点(数字越小,耦合度越低),作为可能的消除循环依赖的切入点,重点开展分析。

3、架构可视化看护现有架构

对于良好的架构设计,如何保障在进度紧张的版本交付周期内,不因为开发人员对架构的不充分理解,而对良好的架构设计造成破坏?

在前面可视化架构的基础上,通过对架构的依赖关系的合法性(设计约束)进行打标签,标注哪些架构依赖是允许的,哪些是不允许的。当开发人员在编码的过程中,出现违反架构设计约束的情况,架构视图立刻出现红线预警,同时给出告警信息,从代码产生的源头上防止架构腐化。

4、架构可视化支撑架构演进

基于架构可视化,记录架构的演进路径,通过不同时期的架构对比,可以清晰回溯架构的整个演进过程,对架构的腐化分析很有帮助。

如下图,我们对一个系统的V4、V5版本架构进行对比,可以清晰看到BrowserValidity在V5中删除了。同时,通过线条的不同颜色,区分哪些耦合关系是在V4、V5两个版本都存在,哪些耦合关系只存在于V4,哪些耦合关系只存在于V5。

通过切换、对比不同时期、不同版本的架构图,可以清晰看到架构的演进过程,并回溯过程中架构变更原因和思考。

从已经探索的实践看,架构可视化对软件系统,特别是大型软件系统的健康演进很有帮助。上面的探索,深度上尚浅,待进一步摸索,同时,广度上,也还有很多探索的空间,比如基于架构可视化,呈现架构热点,欢迎大家一起探讨!

点击关注,第一时间了解华为云新鲜技术~

架构可视化支撑系统演进探索相关推荐

  1. 「可视化搭建系统」——从设计到架构,探索前端领域技术和业务价值

    阿里巴巴集团前端委员会主席 圆心:未来前端的机会在哪里 对前端未来期许有四点:搭建服务, Serverless,智能化,IDE.仔细想想,一个「可视化搭建系统」的想象空间,正能完美命中这些方面.前端的 ...

  2. 微服务系统下架构可视化上的探索

    点击▲关注 "数据和云"   给公众号标星置顶 更多精彩 第一时间直达 导读:采用微服务架构后,了解服务之间的关系及依赖是一个比较有挑战的问题.微服务改造后的实际架构模型可能与预想 ...

  3. 系统由单体架构到微服务架构到底是如何演进的?

    随着互联网的发展,互联网企业的业务也在不断的飞速发展,进而导致系统的架构也在不断的发生着变化.总体来说,系统的架构大致经历了:单体应用架构->垂直应用架构->分布式架构->SOA架构 ...

  4. 如何在一分钟内实现微服务系统下的架构可视化

    为什么需要架构可视化 随着企业进行微服务架构改造,系统架构复杂度越来越高,架构变化日益频繁,微服务改造后的实际架构模型可能与预期已经产生了巨大差异,架构师或系统运维人员很难准确记忆所有资源实例的构成和 ...

  5. 京东运营活动可视化搭建系统之架构流程设计

    看本文之前,不妨先看看: 1)MPM 卖场可视化搭建系统 - 要素设计 前言 这是 MPM 分享系列的第二篇,在上一篇 MPM 卖场可视化搭建系统 - 要素设计 中,我们介绍了 MPM 作为一个面向卖 ...

  6. 数字冰雹 数字孪生城市智能运营中心(IOC)可视化决策系统

    产品概述  数字时代,以5G通讯.物联网.云计算.大数据.人工智能为代表的新一代信息技术蓬勃发展,深入影响着城市运行的方方面面,广泛应用于数字城管.智慧社区.应急管理.智慧环保等领域,推动城市管理向数 ...

  7. 技术沙龙 | 从高并发架构到企业级区块链探索零售创新

    伴随消费新理念的不断升级和技术创新发展,零售业逐渐被推到风口浪尖,对此京东曾表示,推动"无界零售"时代的到来理念,倡导实现成本.效率.体验的升级才是终极目标. 此概念一出,零售行业 ...

  8. 图解分布式架构的发展和演进 | 技术干货

    戳蓝字"CSDN云计算"关注我们哦! 技术头条:干货.简洁.多维全面.更多云计算精华知识尽在眼前,get要点.solve难题,统统不在话下! 编注: 架构决定的系统的稳定性,扩展性 ...

  9. 图解分布式架构的发展和演进 | 技术头条

    戳蓝字"CSDN云计算"关注我们哦! 技术头条:干货.简洁.多维全面.更多云计算精华知识尽在眼前,get要点.solve难题,统统不在话下! 编注: 架构决定的系统的稳定性,扩展性 ...

最新文章

  1. My sql 日常维护命令的总结
  2. 共用体的定义和应用【C++】
  3. python中formatter的用法_sql-formatter 格式化sql
  4. OpenGL编程指南4:双缓冲实现运行
  5. 项目中提示找不到sun.misc.BASE64Encoder
  6. 使用 Debian 从 0 开始搭建 hexo 博客
  7. 大学学计算机专业好吗,现在上大学学计算机专业好吗?好找工作吗?听他人说计算机学不了什么?学的人也多,...
  8. 分布式面试 - dubbo 的 spi 思想是什么?
  9. 多线程调用生成主键流水号存储过程产生主键冲突问题解决方案
  10. Bailian2910 提取数字【DFA】
  11. 要做网络营销 这样的讲座不能错过
  12. POJ 1325 Machine Schedule 解题报告
  13. hp1015驱动64位_HP LaserJet 1015 驱动下载
  14. python爬虫qq音乐_Python爬虫实战:采集全部QQ音乐歌曲
  15. UML(统一建模语言)
  16. 博饼程序-Java实验
  17. 微博登录及删除粉丝/转发/评论的脚本[更新中]
  18. UE基础知识:虚幻引擎编辑器界面-英汉对照表
  19. Burp的安装配置与启动
  20. 数据可视化——绘制3D图表和绘制地图

热门文章

  1. js中的Java式继承
  2. Bootstrap 折叠插件Collapse 事件
  3. postgresql 并发访问_PostgreSQL并发控制(显式锁定)
  4. datax 模板_datax模板
  5. boot空间不足 linux,linux——boot空间不足
  6. dubbo provider异步_Dubbo相关面试题
  7. Quality Assurance (QA)
  8. asp.net core系列 67 Web压力测试工具WCAT
  9. JavaScript事件基础知识总结【思维导图】
  10. PostreSQL崩溃试验全记录