Domain-Driven Design Representation of Monolith Candidate Decompositions Based on Entity Accesses
<|reference_start|>Domain-Driven Design Representation of Monolith Candidate Decompositions Based on Entity Accesses: Microservice architectures have gained popularity as one of the preferred architectural approaches to develop large-scale systems, replacing the monolith architecture approach. Similarly, strategic Domain-Driven Design (DDD) gained traction as the preferred architectural design approach for the development of microservices. However, DDD and its strategic patterns are open-ended by design, leading to a gap between the concepts of DDD and the design of microservices. This gap is especially evident in migration tools that identify microservices from monoliths, where candidate decompositions into microservices provide little in terms of DDD refactoring and visualization. This paper proposes a solution to this problem by extending the operational pipeline of a multi-strategy microservice identification tool, called Mono2Micro, with a DDD modeling tool that provides a language, called Context Mapper DSL (CML), for formalizing the most relevant DDD concepts. The extension maps the content of the candidate decompositions, which include clusters, entities, and functionalities, to CML constructs that represent DDD concepts such as Bounded Context, Aggregate, Entity, and Service, among others. The results are validated with a case study by comparing the candidate decompositions resulting from a real-world monolith application with and without CML translation.<|reference_end|>
@article{levezinho2024domain-driven,
    title={Domain-Driven Design Representation of Monolith Candidate Decompositions
  Based on Entity Accesses},
    author={Miguel Levezinho (1), Stefan Kapferer (2), Olaf Zimmermann (2),
  Ant'onio Rito Silva (1) ((1) INESC, University of Lisbon Instituto Superior
  T'ecnico, Lisbon, Portugal, (2) OST Eastern Switzerland University of
  Applied Sciences, Rapperswil, Switzerland)},
    journal={arXiv preprint arXiv:2407.02512},
    year={2024},
    archivePrefix={arXiv},
    eprint={2407.02512},
    primaryClass={cs.SE}
}