JAVA-DDD
New Domain Driven Design and Implementation in Java
Decomposition and implementation of complex applications based on proven patterns
Description
A good application is based on a good plan. Identifying a complex business problem, designing a solution, and putting it into code is no easy task. How do you break down the problem, how do you define the different components and how do you fit them together? These are some of the biggest challenges in software development today, which are particularly important in the world of microservices, but are also prominent in the case of modularised applications.
DDD tries to provide solutions, patterns and best practices to these challenges.
Translating DDD into different programming languages and integrating it with technologies is not easy, and this course will provide guidance on how to do this.
Outline
- When and where to cut?
- Evolutionary design
- The importance of OOP concepts
- Common causes of poor design
- Strategic Design Tools
- Problem space
- Domains, subdomains: core domain, supporting domains, generic domains
- Solution space
- Domain model
- Bounded context
- Ubiquitous language
- Domain expert: mental model
- Context mapping
- Tactical Design Tools
- Value objects
- Entities
- Aggregate
- Factory
- Repository
- Event storming
- DDD and the Clean Architecture relationship
- Service
Prerequisites
Basic Java programming skills.