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

举报
无名小溪 发表于 2021/02/09 19:26:50 2021/02/09
【摘要】 本文,分享借助软件架构可视化辅助系统演进的几个探索:辅助理解现有系统、分析不合理依赖、看护现有架构、支撑架构演进

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

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

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

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

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

图片1.png


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

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

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

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

图片2.png


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

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

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

图片3.png

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

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

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

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

图片4.png


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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。