Proj FuzzViz Paper Reading: CodeSurveyor: Mapping large-scale software to aid in code comprehension

Abstract

本文: CodeSurveyor
任务:大型代码库空间可视化,允许查看所有抽象级别
to support code comprehension in large codebases by allowing developers to view large-scale software at all levels of abstraction.
方法: cartographic metaphor to produce an interactive map
组件是大陆,文件是国家等等,含有系统依赖信息和区域信息
效果:

  1. 能在1.5分钟内生成Linux kernel的code maps
  2. show the effectiveness of the approach with developers of varying experience levels.

3. CodeSurveyor

  1. To Incorporate system structure
  2. To provide strong visual landmarks
  3. To Support smooth updates
  4. To scale to codebases of millions of lines of code

步骤

  1. hierarchical graph layout 确定source file在2D平面上的坐标
  2. Implicit surface generation 将靠的近的放在一起成为岛的形状
  3. recursive tree-map subdivision 进一步将大岛分成小岛
  4. recursive region amalgamation 生成boundary

布置每一层是作为一个能量最小化问题来实现的,相当于一个力导向的图布局。 这是通过定义一个能量模型来完成的,该模型将什么是好的布局形式化。 它指定如何计算给定布局中给定图形的能量,以便更好的布局将产生更低的能量。 CodeSurveyor 中使用的能量模型基于 Noack [8] 提出的模型。

它与 Noack 的模型的不同之处在于,除了位置之外,还给节点一个半径,这样得到的圆形面积与它们的线数成正比。 在这个模型中,相邻节点贡献吸引能量,与它们之间的距离成正比; 每对节点贡献排斥能量,与它们的中心之间的距离成反比; 每个节点都会贡献引力能量,与它们的中心与父节点的距离成正比。

posted @ 2022-02-16 19:02  雪溯  阅读(53)  评论(0编辑  收藏  举报