Introduction to the DDDplus Framework
DDDplus, formerly known as the cp-ddd-framework (where "cp" stands for Central Platform), is a lightweight framework designed to enhance Domain Driven Design (DDD) methodologies. It focuses on both forward and reverse business modeling, facilitating the evolution of complex system architectures.
Key Features
DDDplus captures and addresses missing concepts in traditional DDD by complementing the framework with essential building blocks. Here are the standout features that make DDDplus remarkable:
-
Forward Modeling Enhancements: The framework enhances the pragmatic implementation of DDD by patching building blocks, making it easier to implement DDD principles effectively.
-
Reverse Modeling with DSL: It includes a Domain Specific Language (DSL) for reverse modeling, which helps visualize the full domain knowledge directly from code. This feature bridges the gap between the development team and stakeholders like architects, product managers, and other business stakeholders.
-
Extension Points for Flexibility: DDDplus provides mechanisms to handle multiple routing scenarios through its extension points, making it well-suited for complex business needs and diverse operational scenarios.
Current Usage
The framework is already in production, having proved its utility and effectiveness in various complex and critical central platform projects.
Showcase and Demonstrations
For a hands-on demonstration of what DDDplus can do, there's a comprehensive showcase of its forward and reverse modeling capabilities available in the project resources.
Quickstart Guide
Forward Modeling
To incorporate DDDplus into your project, add the following dependency to your Maven project:
<dependency>
<groupId>io.github.dddplus</groupId>
<artifactId>dddplus-runtime</artifactId>
</dependency>
If you are working with SpringBoot, integration is straightforward:
@SpringBootApplication(scanBasePackages = {"${your base packages}", "io.github.dddplus"})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}
Reverse Modeling
To utilize reverse modeling, refer to the detailed step-by-step guide provided in the project documentation. The integration requires an additional Maven dependency:
<dependency>
<groupId>io.github.dddplus</groupId>
<artifactId>dddplus-spec</artifactId>
</dependency>
Architecture Guard
The framework offers an architectural enforcement tool via a Maven plugin. This tool ensures that your project adheres to DDD principles and intended design patterns by scanning the source files for compliance.
Known Issues
A notable limitation is that reverse modeling assumes unique class names within a single code repository, which may not be feasible in some large-scale projects.
Contribution and Support
Contributions to the project are welcomed through GitHub pull requests. For reporting bugs or requesting new features, developers can use the project's Issue Tracker. Additionally, a Gitter chat community is available for anyone with questions or needing assistance.
Licensing
DDDplus is distributed under the Apache License, Version 2.0. This open-source license allows users to freely use, modify, and distribute the software.
By providing these rich features and being part of an evolving software landscape, DDDplus offers a robust platform for developers seeking to implement and benefit from Domain Driven Design in their complex and dynamic business environments.