The client had a large software system composed of several hundred subsystems, each being written in Java. The overall system was based on a custom engine that was put together using a multitude of custom configuration files specified in XML and in another custom language. Given the particularities of the project, a dedicated tool was needed to analyze it.
We received the task of crafting a dedicated tool that would be able to provide an overview of these configurations and expose their various relationships.
The prerequisite for any data analysis is the specification of the meta-model for the data. Thus, the first step was the analysis of the various configuration files with the aim of capturing the class diagram. The diagram below shows the anonymized result of the configuration analysis. Once the meta-model specified, we encoded it in the tool.
The next step was to create the importer to take all configuration files as input and then to create a coherent model. An important challenge was posed by the unification of data: because the system was developed over a decade, there were multiple ways of expressing the same information. Thus, our importing solution needed to deal with all these differences.
The last step was to create several analyses and visualizations on top of this model. These views were then integrated into an interactive tool. When used by developers, the tool revealed several unexpected dependencies and incomplete specifications in the system. For putting together this solution, we used the tool building capabilities of Moose.
All in all, the development effort for the prototype totaled a mere 10 person-days. Placed in the overall context of the multiple hundred person-years of development effort spent in the project, it was an insignificant investment with high return on investment.