Analysis Methods - LucPrestin/Hidden-Modularity GitHub Wiki

Workflow

All statistics and visualizations are meaningless if the process of how the data was gained and evaluated is not known. Therefore, please have a look at the dedicated workflow page that explains how we tackled the research goal.

Graphs and Visualizing Them

As described in the workflow, we extract a series of communication-based graphs to visualize the traces. The difference between the graphs is how the mapping between the traces and the graph parameters was designed. The HMTraceParser allows for swapping the calculation method of all visualization parameters. This way a new type of graph can be easily added to the existing ones.

Parameters and Their Mapping

At the trace level, we have the following data points:

  • Participant properties
    • Object identity
    • The class of an object
    • The package in which the class of the object is located
  • Communication properties
    • The message
    • Who the sender is
    • Who the receiver is
  • Chronology

At the visualization level we have the following parameters:

image

In general, for all graphs, if aggregation would cause there to be $n$ edges between two nodes, they are merged into one edge with edge weight $n$.

Interpretation

In interpreting, we now try to make inferences about the data points of the trace based on the visual parameters and the knowledge about the mapping.

Especially when interpreting the distance between nodes, one has to be somewhat careful. Just because two nodes are close to each other does not mean that they must have an edge to each other. At the same time, a wide distance between nodes also does not necessarily mean that there is no edge between them. This is especially the case for smaller or tightly meshed graphs.

See this example from the scenario Opening a Morph in the World.

For example, Color is located right next to Error and ExceptionSet, but has no edge to it. The only edge is to the morph. PasteUpMorph and Morph are quite far from each other, but have a direct edge to each other.

Nevertheless, and this graph can help to detect clusters of cooperating classes. An example here would be the scenario Fetching the Google Website.

Current Graph Types

There are currently three different graphs implemented with three different mappings between them: