• Proj FuzzViz Paper Reading: CodeSurveyor: Mapping largescale 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 的模型的不同之处在于,除了位置之外,还给节点一个半径,这样得到的圆形面积与它们的线数成正比。 在这个模型中,相邻节点贡献吸引能量,与它们之间的距离成正比; 每对节点贡献排斥能量,与它们的中心之间的距离成反比; 每个节点都会贡献引力能量,与它们的中心与父节点的距离成正比。

  • 相关阅读:
    三种创建线程的方式详解。
    HashMap详解 基于jdk1.7
    Urlrewritefilte
    windows下搭建Nexus3私服和基于IDEA15的Maven学习笔记
    SEVERE: Error listenerStart
    我理解的设计模式-------抽象工厂模式
    activemq启动不起来,报错Address already in use: JVM_Bind
    Hibernate一对一双向关联(外键)
    http请求错误码
    跨域(一)
  • 原文地址:https://www.cnblogs.com/xuesu/p/15901970.html
Copyright © 2020-2023  润新知