A Modeling Framework for Strategic Domain-driven Design and Service Decomposition
ContextMapper is an open source project providing a Domain-specific Language (DSL) based on Domain-driven Design (DDD) patterns for context mapping and service decomposition. The framework components around the language support to reverse engineer Context Maps, analyze the models with respect to coupling criteria, improve the architecture iteratively, and generate other representations out of the DDD Context Maps.
What is Context Mapper?
Context Mapper provides a DSL to create Context Maps based on strategic Domain-driven Design (DDD). DDD with its Bounded Contexts offers an approach for decomposing a domain or system into multiple independently deployable (micro-)services. With our Architectural Refactorings (ARs) we provide transformation tools to refactor and decompose a system in an iterative way. With the Service Cutter integration you can generate suggestions for new Context Maps exhibiting services and Bounded Contexts with improved coupling. With the generators you are able to derive other representations of the architectural model, such as PlantUML diagrams or MDSL (micro-)service contracts. The reverse engineering library supports you in generating Context Maps of existing systems.
Context Mapping Language (CML)
CML is an easy to understand, Xtext-based, DSL for DDD context mapping. The language supports modeling the relationships between Bounded Contexts with the strategic DDD patterns. The details of the Bounded Contexts with its Aggregates can be specified with the tactic DDD patterns. Checkout our docs and examples for an introduction into our language.
Decompose your systems architecture by applying Architectural Refactorings (ARs) iteratively. By splitting and merging Bounded Contexts or Aggregates, the coupling between your Bounded Contexts and the cohesion between them can be improved. The Service Cutter tool can support the process by suggesting improved decompositions based on its coupling criteria catalog.
Generators & Reverse Engineering
Use your Context Map to generate other representations of the architecture, such as PlantUML component and class diagrams. The MDSL (micro-)service contracts generator can provide assistance regarding how your system can be implemented in an (micro-)service-oriented architecture. Our reverse engineering library can further generate CML Context Maps from existing source code.