0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

支持静态分析的高级程序可视化简化了开发过程

星星科技指导员 来源:嵌入式计算设计 作者:Paul Anderson 2022-06-19 07:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

长期以来,图片往往比文字更能帮助开发人员理解复杂的程序和审查代码,因此在软件开发中程序可视化的使用很普遍。UML 和其他主要图形形式的设计符号现在被广泛接受为沟通软件设计各个方面的最佳标准机制。一些基于模型的设计工具可以直接从图形表示中生成代码。在非正式的范围内,开发人员经常画出流程图或调用图来告知自己或其他人软件的重要方面。

UML 图都非常适合设计,但在开发过程的后期使用以帮助开发人员理解现有代码时存在两个重要缺点。首先,作为设计抽象,它们(正确地)省略了一些实现细节,但如果目标是理解完成的软件,这些细节通常很重要。其次,设计图在实现方面经常是陈旧的,导致对实际存在的系统的描述不准确或不完整。

非正式的可视化往往是短暂的,很少进入程序文档的正式记录。

很多时候,开发人员必须使用的唯一工件就是代码本身。不幸的是,代码可视化工具在历史上一直存在图表混乱和难以扩展到大型程序等问题。然而,正在出现的新工具正在开始解决这些问题。这些工具的主要优势是它们能够直接从代码本身生成有用的可视化。因此,它们保证是准确和最新的。

程序结构

程序由许多不同类型的组件之间的庞大而复杂的依赖网络组成。试图同时显示所有这些的可视化将太笨重而无用。事实上,没有单一的理想可视化。相反,对特定任务最有用的可视化是与执行该任务的工程师使用的心智模型相对应的可视化。一些更有用的程序结构如下:

类型层次结构

开发人员通常发现了解数据类型相互关联的各种方式非常有用。标准的 UML 类图以一种非常容易理解的形式表示类层次结构,其关联和包含关系处于比代码更高的抽象级别。虽然从设计的角度来看这很好,但程序员通常会发现查看类型之间的具体关系更有帮助。

包括树

C 和 C++ 程序通常会大量使用预处理器。如果做得好,这可以使程序易于理解,但通常它会插入一个阻碍理解的层。不规范地使用预处理器可能会导致依赖缠结,从而导致构建问题并损害可重用性潜力。因此,能够查看哪些文件包含在哪里可以帮助工程师解开复杂的依赖关系。

调用图

调用图,其中每个节点代表一个子程序,每条边表示对另一个子程序的一个或多个调用,通常被认为是最有助于可视化的程序结构。子程序是方便开发人员推理的单元,调用关系很好地捕获了数据和控制流。即使是一个小程序的调用图也可以有数百个节点和数千条边,因此人们早就认识到一次可视化整个调用图基本上是没有用的。相反,研究人员专注于将调用图可视化为更小、更容易消化的部分。

新的调用图技术和工具

由于调用图在程序理解中的重要性以及可视化它们所涉及的挑战,它们一直是许多研究的主题。特别是,已经开发出新技术来帮助控制调用图的复杂性。本节介绍了在提供高级可视化功能的静态分析工具中实现的一些机制。

自上而下的视图

调用图的自上而下视图有助于回答用户问题,例如“该程序的高级组件是什么,它们的属性和关系是什么?”

为了在程序理解的背景下解决这个问题,工具设计者从诸如谷歌地图之类的地理地图程序中汲取灵感。随着用户放大,更多细节开始显现:首先是城市,然后是城镇、村庄,最后是个别建筑物。显示的细节级别与缩放级别相关联。

程序由组件组成,这些组件本身又由较小的组件组成,依此类推,形成层次结构;虽然直接调用关系是在低级子程序之间,但它可以投射到包含这些子程序的高级组件。在调用图的自上而下视图中,最高级别的项目是目录。这些可以包含子目录和文件的某种组合,然后这些文件将包含子程序。因此,从一个框到另一个框的边仅表示包含在第一个框内的子程序调用了包含在第二个框内的子程序。

事实证明,这种方法在帮助开发人员更深入地了解程序方面非常有效。

在左侧窗口中,用户选择了从组件find到组件gnulib的边。此聚合边缘汇总的函数调用显示在右侧的窗格中。右侧窗口说明当用户放大查看单个功能时会显示更多细节。此缩放级别进一步说明了一个重要特性:开发人员能够将视图与代码本身相关联非常重要。因此,选择其中一个函数会导致显示该函数的源代码。

自下而上的视图

通常,开发人员会希望采用自下而上的方法。这有助于用户回答诸如“这个过程做什么,它如何适应程序的结构,以及它是如何被调用的?”之类的问题。

例如,假设某个程序在特定功能中崩溃。为了找到崩溃的原因并计划修复,开发人员可能会首先关注该单个函数,然后探索其附近的其他函数,以查看它调用和调用的其他函数。以前在白板上手动完成,一个工具可以自动处理绘图和布局的苦差事。

指标层

通过添加层来显示各种指标的价值,可以增加可视化的实用性。图 1 显示了一个示例。这显示了一个特别有用的可视化 - 树状图。在树状图中,节点的面积与度量标准成正比——通常是对项目大小进行编码的度量标准。然后将子节点平铺在顶级节点内。通常不显示边缘。在这个例子中,每个项目的颜色强度编码了静态分析工具发出的代码漏洞警告的数量。

图 1:中型程序(大约 200 KLOC)的树形图。颜色的强度表示在每个部件中检测到的静态分析警告的数量。

pYYBAGKsRdGAFkNLAAYAA9dSzX4298.png

从这个角度来看,很容易挑选出风险最大的程序组件。树形图对于显示深度嵌套的结构非常有效,并且也非常适合前面讨论的缩放范例,其中更多细节在更高的放大倍率下显示。

当开发人员以交互方式使用它们来平移和放大和缩小,甚至添加和删除节点和边缘时,这些可视化是最有用的。如果没有足够的响应,与这样的界面交互可能会非常令人沮丧。显示数百个节点和数千条边可能是一个挑战。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    20160

    浏览量

    247728
  • C++
    C++
    +关注

    关注

    22

    文章

    2122

    浏览量

    76739
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    工业物联网可视化平台是什么?有什么功能?

    工业物联网可视化平台是基于物联网、大数据、人工智能等技术,将工业生产中的设备、系统、流程等数据以图形化方式呈现,实现实时监控、智能分析与交互式管理的数字化工具。 其核心功能涵盖数据集成、可视化展示
    的头像 发表于 11-17 17:49 1071次阅读

    工业可视化平台是什么

    工业可视化平台是一种基于信息技术和可视化技术,将工业生产过程中的数据、信息、流程等以直观、动态的图形化方式呈现,并实现交互式管理与分析的数字化工具。它通过整合工业物联网(IIoT)、大
    的头像 发表于 10-24 18:00 862次阅读

    【产品介绍】Altair HyperView用于仿真和CAE分析的后处理和数据可视化

    AltairHyperView通过用于仿真和CAE分析高级后处理和数据可视化解锁工程洞察力AltairHyperView是用于高保真后处理的CAE分析软件。HyperView专为工程
    的头像 发表于 09-19 17:02 548次阅读
    【产品介绍】Altair HyperView用于仿真和CAE<b class='flag-5'>分析</b>的后处理和数据<b class='flag-5'>可视化</b>

    3Dfindit 提供的数字立方体模型为研究项目的可视化提供了支持

    魔方的帮助下实现多视角可视化 为了克服这一挑战并实现多视角可视化,我们使用了3Dfindit立方体动画模型。博物馆和学生们可以利用 3D 模型提出新的历史教学问题。
    发表于 08-01 14:36

    基于 HT 的 3D 可视化智慧矿山开发实现

    即可运行的三维交互场景,满足智慧矿山对多系统集成、实时数据可视化、跨终端访问的开发需求。 从开发目标来看,基于 HT 构建的智慧矿山解决方案,旨在通过技术手段将矿山现场的物理实体与数字空间映射,实现矿山全场景、全流程的
    的头像 发表于 07-18 15:49 511次阅读
    基于 HT 的 3D <b class='flag-5'>可视化</b>智慧矿山<b class='flag-5'>开发</b>实现

    如何使用协议分析仪进行数据分析可视化

    使用协议分析仪进行数据分析可视化,需结合数据捕获、协议解码、统计分析可视化工具,将原始数据转化为可解读的图表和报告。以下是详细步骤及关键
    发表于 07-16 14:16

    结构可视化:利用数据编辑器剖析数据内在架构​

    结构可视化聚焦于展示数据的内部结构和各部分之间的关系,使企业能够深入理解数据的组织方式和层次体系,从而更好地进行数据管理和分析。通过结构可视化,企业可以清晰地看到数据的层次结构、关联关系以及数据流
    的头像 发表于 05-07 18:42 427次阅读

    工业设备数据集中监控可视化管理平台是什么

    工业设备数据集中监控可视化管理平台是一种用于整合、监控和可视化工业设备数据的综合性系统,旨在帮助企业实现设备数据的集中管理、实时监控和可视化展示,从而提升生产效率、优化设备运行状态并支持
    的头像 发表于 05-06 11:10 850次阅读

    VirtualLab Fusion应用:3D系统可视化

    描述和F-Theta透镜的应用示例。 光学系统的3D-可视化 VirtualLab Fusion提供的工具可以实现光学系统的3D可视化,因此可以用于检查元件的位置,以及快速了解系统内部的光传播情况
    发表于 04-30 08:47

    可视化组态物联网平台是什么

    可视化组态物联网平台是物联网技术与组态技术相结合的产物,是通过提供丰富的图形化组件和可视化元素,让用户能够以直观、便捷的方式对物联网数据进行监控、分析和管理的平台。以下是其具体介绍: 定义 组态
    的头像 发表于 04-21 10:40 714次阅读

    VirtualLab Fusion中的可视化设置

    摘要 VirtualLab Fusion中的全局选项对话框可以轻松定制软件的外观和感觉。还可以保存和加载全局选项文件,以便可以轻松地将偏好设置从一个设备转移到另一个设备。本文档说明了与可视化和结果
    发表于 02-25 08:51

    VirtualLab Fusion应用:光波导k域布局可视化(“神奇的圆环”)

    ,光可以在TIR(全反射)作用下传播,并与光导表面上不同类型的光栅结构相结合,以耦合光进出。在VirtualLab Fusion中,k-Layout可视化工具提供了一种在k域中强大的图解方法,用于分析
    发表于 02-21 08:53

    DevEco Studio构建分析工具Build Analyzer 为原生鸿蒙应用开发提速

    不同构建阶段的性能差异,进一步优化构建流程。 Build Analyzer作为一款强大的构建分析工具,为原生鸿蒙应用开发者提供了从任务追踪到性能优化的全方位支持。通过其细粒度的分析和直
    发表于 02-17 18:06

    七款经久不衰的数据可视化工具!

    。 Apache Superset:Superset 是由 Airbnb 开发并捐赠给 Apache 基金会的开源数据可视化工具。它支持多种数据源,并提供丰富的可视化效果和实时
    发表于 01-19 15:24

    水库水位监测系统的创新特点:可视化界面与多平台支持

    水库水位监测系统的创新,不仅仅体现在技术的升级上,更重要的是,它为水资源管理提供了更加科学、便捷和高效的手段。可视化界面让数据展示更加直观,支持多平台接入则让监控变得无处不在,智能报警和大数据分析则为决策提供了可靠的依据。
    的头像 发表于 01-07 10:01 1034次阅读
    水库水位监测系统的创新特点:<b class='flag-5'>可视化</b>界面与多平台<b class='flag-5'>支持</b>