DENIM is a tool aiming to provide software developers support in downloading, reverse engineering, visualizing, and evolving microservices architecture. Further details of each goal are provided in respective repositories referenced hereafter.
This documentation repository aims to explain the overview of the tool in terms of objectives and technical details (e.g. architecture diagram, languages and technologies).
%%% Cite the paper
@inproceedings{andre2025c,
title = {DENIM: Exploring Data Access in Microservices},
author = {Andr{\'e}, Maxime and Raglianti, Marco and Cleve, Anthony and Lanza, Michele},
booktitle = {Proceedings of the 41st International Conference on Software Maintenance and Evolution (ICSME 2025): Tool Demo track},
year = {2025},
organization = {IEEE Computer Society Press},
doi = {https://doi.org/10.1109/icsme64153.2025.00103}
}The tool is developed itself as a microservices architecture. The architecture diagram is depicted below.
The architecture components are described below.
| Microservice | Port | Input | Output | Description | Repository |
|---|---|---|---|---|---|
| Web | :8080 | HTTP | HTTP | This microservice is the user interface of the tool. It interacts through HTTP requests with the user. It also communicates with other services through API requests in order to respond to user's needs according to the proposed features. | Web |
| Downloading | :8081 | JSON | ZIP | This microservice aims to help the user to download, in one shot, with git, one or several microservices applications composing a microservices architecture and spread across multiple, distributed, and heterogenous repositories. According to a given JSON list of repositories links and hash as input, it returns a ZIP file containing all the architecture as output. | Downloading |
| Reverse Engineering | :8082 | ZIP | JSON | This microservice aims to reverse engineer, statically and dynamically, a microservices architecture in order to retrieve insights about the data access. According to a given ZIP file containing the microservices architecture as input, it returns a requested analysis report in JSON as output. | Reverse Engineering |
| Visualizing | :8083 | JSON | JSON | This microservice aims to transform a static analysis report into visualizations. According to given a analysis report in JSON as input, it returns a one of the requested visualization model object in JSON as output. | Visualizing |
| Evolving | :8084 | JSON | JSON | This microservice aims to retrieve, based on an analysis report, some evolutionary insights. According to a given analysis report in JSON as input, it returns a one of the requested evolution insight in JSON as output. | Evolving |
Comments:
- Each microservice have a
Dockerfilefile and adocker-compose.ymlfile. ⚠️ Port exposed in respectiveDockerfilefiles of each repository corresponds to the concerned technology's default one. In addition, each respectivedocker-compose.ymlfile of each repository maps by default this same default port.⚠️ Pay attention that for the complete deployment, it is required to use different ports for each service. The overalldocker-compose.ymlfile described in the Deployment section proposes an example according to the port illustrated in the diagram above.
See INSTALL file.
As recommended in microservices architectures, each microservice motivates their own technology choices. See respective repositories for further details.
As recommended in microservices architectures, each microservice motivates their own libraries choices. See respective repositories for further details.
As recommended in microservices architectures, each microservice motivates their own tool choices. See respective repositories for further details.
Contributions guidelines are described in each repository. See respective repositories for further details.




