A DSL for Context Mapping & 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.
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. The tool further allows you to generate MDSL (micro-)service contracts providing assistance regarding how your system can be implemented in an (micro-)service-oriented architecture. In addition, PlantUML diagrams can be generated to transform the Context Maps into a graphical representation. With Service Cutter you can generate suggestions for new services and Bounded Contexts.
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.
Service Decomposition with Architectural Refactorings
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 & Supporting Tools
Use your Context Map to generate MDSL (micro-)service contracts providing assistance regarding how your system can be implemented in an (micro-)service-oriented architecture. With the PlantUML generator you can generate UML component and class diagrams of your system. The Service Cutter generators support you in creating the input files for the Service Cutter tool.