Architecture Evaluation Tool based on an Information Theory Approach

In context of my doctoral research on the GECO approach, I developed a software architecture evaluation tool working with a hypergraph abstraction of the software under observation. In a first step the tool analyzes Java code and constructs a modular hypergraph which subsequently used by various information theory based hypergraph metrics to determine complexity, size, coupling and cohesion of the overall hypergraph. The metrics are based on research from Edward B. Allen [2002,2007].

Due to the abstraction of the system to a hypergraph the analysis can be adopted to other languages. In the near future it is planned to support Xtend and Groovy as two additional JVM languages.

For the analysis, the tool requires two distinct inputs:

  1. Classes which represent data types must be mentioned in a data-type-pattern.cfg file. This includes data type classes of Java, like java.lang.String. The file accepts wildcards in its pattern.
  2. Classes which belong to the observed system and must be represented in the hypergraph must be listed in a similar way in a file called observed-system.cfg

When both files are in place, the user can select a Java project in Eclipse. Depending on the size of the project and the used framework and library functionalities, the analysis could take hours. Presently, the tool parallelizes certain operations assuming that the machine has 8 CPUs. However, this should be configurable in future.

Resources: Github architecture-evaluation-tool