Relationships and Decompositions


Relationships between Application Elements

In this work, we consider two relationship types between application elements: by-element-name-similarity and by-static relationships. We collected relationships between elements on a file/class level.

Relationship Data

Relationship data between elements of each subject applications can be found in Relationship-Data.zip. The Relationship-Data directory contains a sub-directory for each subject application, which contains the following directory structure:

Relationship-Data
├── App1
│   ├── class-names
│   │   ├── App1ClassNameGraph.csv
│   │   └── App1ClassNameGraphNormalized.csv
│   ├── static
│   |   ├── App1StaticGraph.csv
│   |   └── App1StaticGraphNormalized.csv
│   └── App1CombinedWeightedGraph.csv
├── App2
│   ├── class-names
│   ├── static
│   └── App2CombinedWeightedGraph.csv
...

For both the static and name relationships, the *ClassNameGraph.csv and *StaticGraph.csv files contain the un-normalized weights and the *GraphNormalized.csv file contains the normalized weights between elements. Additionally, the *CombinedWeightedGraph.csv file contains the combined relationship graph from the static and class-name normalized graphs.

Each CSV contains 3 columns: application element A, application element B, and the edge weight between elements A and B.

Decomposition Results

The by-static, by-name-similarity, union-based, and consensus-based decompositions for each clustering approach can be found in Decomposition-Results.zip. The Decomposition-Results directory contains a sub-directory for subject application. For each subject application, the directory structure is further split according to clustering approach, namely Bunch, Spectral Clustering with k set to the number of clusters found in the application’s ground-truth architecture (i.e. k=Ground-truth), and Spectral Clustering with k set to the number of clustering produced by Bunch for each respective recovery technique (i.e k=Bunch).

Decomposition-Results
├── App1
│   ├── Bunch
│   │   ├── App1ClassName.json
│   │   ├── App1Static.json
│   │   ├── App1Union.json
│   │   ├── App1Consensus.json
│   │   ├── App1GroundTruth.json
│   │   └── Consensus_groups.json
│   ├── Spectral (k=Bunch)
│   │   ├── App1ClassName.json
│   │   ├── App1Static.json
│   │   ├── App1Union.json
│   │   ├── App1Consensus.json
│   │   ├── App1GroundTruth.json
│   │   └── Consensus_groups.json
│   └── Spectral (k=Ground-truth)
│       ├── App1ClassName.json
│       ├── App1Static.json
│       ├── App1Union.json
│       ├── App1Consensus.json
│       ├── App1GroundTruth.json
│       └── Consensus_groups.json
├── App2
...

The *ClassName.json, *Static.json, *Union.json, *Consensus.json files contain the by-name similarity, by-static, union-based and consensus-based decompositions, respectively. To produce the by-name similarity and by-static decompositions, the *ClassNameGraphNormalized and *StaticGraphNormalized were used, respectively. To produce the union-based decomposition, the *CombinedWeightedGraph was used.

The GroundTruth.json file contains the expected decomposition based on the ground-truth architecture. The Consensus_groups.json file contains the consensus groups extracted from the by-name similarity and by-static decompositions, and used by the consensus-based approach.