架构可视化支撑系统演进探索

作者: 华为云开发者联盟 | 来源:发表于2021-04-09 12:00 被阅读0次

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关文章

  • 架构可视化支撑系统演进探索

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

  • 架构可视化支撑系统演进探索

    本文转载自华为云社区,原文作者:无名小溪。 摘要: 本文分享借助软件架构可视化辅助系统演进的几个探索:辅助理解现有...

  • 1.2:架构演进之路

    本文先从软件系统架构模式的演进做一个总结,然后针对每种架构模式分析,总结出架构演进的核心技术点。 架构演进历程 到...

  • RPC演进

    架构系统的演进(Doubbo Architerctrure Roadmap) Java开发RPC的演进历史 TCP...

  • Java分布式应用技术架构介绍

    Java分布式应用技术架构介绍 一、分布式架构的演进 1、系统架构演化历程-初始阶段架构 初始阶段 的小型系统...

  • 监控系统架构演进

    随着cdn业务发展,机器规模增长迅速,同时为满足多元化监控需求,由单一监控->多维监控->立体监控,架构的整体变迁。

  • 系统架构演进之路

    1. 系统架构演进是什么样的? 小型网站的技术栈一般是LAMP,并且直接购买别人写好的模板,修修改改+汉化,快速成...

  • 【读书】大型网站与Java中间件实战② 大型网站的架构演进

    大型网站的架构演进 什么是大型网站? 支持海量的数据 支持非常高的并发访问量 分布式系统 大型网站的架构演进 用J...

  • 演进式数据架构

    演进式架构支持跨多个维度的引导性增量变更。 ——《演进式架构》 这是《演进式架构》这本书第一章第一节对“演进式架构...

  • 分布式服务框架和原理简章

    应用架构演进 这里的架构演进应该是从服务化的角度来说,应该说随着业务发展,应用规模扩大,系统的一些公共服务就会抽取...

网友评论

    本文标题:架构可视化支撑系统演进探索

    本文链接:https://www.haomeiwen.com/subject/ibyikltx.html