| Code: | ddd-workshop-DDD |
| Category: | DDD Workshop |
| Format: | 60% lecture / 40% workshop |
| Duration: | 3 days |
| Target audience: |
analitycy developerzy architekci |
| Enrollment: | Groups, companies |
| Venue: | Client's office. |
Our program is based on 10 years of experience in using and teaching DDD.
DDD outline
Domain Driven Design is currently the only methodology that supports, in a comprehensive way, from technical perspective, the agile approach to software development.
Comprehensive approach of DDD includes: modeling of complex domains in cooperation with a Domain Expert, recommended architectures and designing using tested Building Blocks to the techniques for creating a testable code, which by design is open for the iterative process of extension and Knowledge Crunching.
Benefits resulting from the use of DDD
that work on separate models
- language of patterns for creating a model - Building Blocks
- architectures suitable for creating expansible systems
- approaches supporting and facilitating automatic testing
Business problem modeling techniques
- techniques from the level of Tactical Patterns: Building Blocks DDD together with best practices and extended elements.
- techniques from the level of Strategic Patterns: Domain Distillation, Bounded Context,
- you will learn practical approaches and ways of conducting a modeling session
DDD implementation
Techniques of DDD implementation (application and system architecture, IoC and ORM, microservices) are talked over during the DDD-implementation training, which should be done second, after the training in terms of modeling. FormIncremental use of knowledge in practice
The training is conducted in a form that combines consecutively alternating lectures, workshops and discussions. During lectures, the coach presents subsequent chapters of substantive knowledge, supplementing them with comments based on his own experience. During workshops, we implement two modules of the ERP class system.Next tasks consist of an incremental addition of new functionalities in a way that illustrates theoretical issues, learned during the lecture preceding them.
During discussion, participants have an access to expert knowledge of the coach and have a possibility to verify their solutions with the ones developed by other participants of the training.
Three event Storming modeling sessions
In the first phase of workshops, participants solve problems presented to them, working on the model in groups – this phase has a purpose of acquiring proficiency in using the DDD techniques.
After getting to know the DDD techniques, comes the time to conduct a real Modeling Whirlpool session, where the members of each group play out the roles of: Domain Expert, Modeler, Coordinator – this phase has a purpose of consolidating the knowledge that is ready to apply in an everyday practice.
Reference project
Check our implementation of an example DDD+CqRS project: Sample Leaven.
It's all about the content.
- You will realize soft skills that a Modeler should possess
- Modeling techniques: linguistic and visual
- Presentation of alternative approaches together with talking over the consequences
Workshop Program
The content of our program can be customised during pre-training analysis.-
Introduction to the Domain Driven Design – unification of analysis and designing- Applicability of the DDD
- Measuring complexity of the system
- System depth – what is system doing "under the hood"
- When not to use the DDD
- The DDD Lite approach - increasing the technical quality
- Measuring complexity of the system
- Roles in the process – responsibilities and personality traits and skills
- Domain expert - source of knowledge, model validator
- Modeler (domain architect) – creator of the model
- Facilitator – coordinator of the process in the initial phase
- Domain expert - source of knowledge, model validator
- Introduction to the Ubiquitous Language
- Common ground between Domain Experts and a development team
- Common ground between Domain Experts and a development team
- Applicability of the DDD
-
Process and techniques of modeling- Event Storming
- Notation
- Phases
- Tips and Tricks
- Notation
- Approach "from a process" vs approach "from a domain"
- Agile Modeling Process "Model Exploration Whirlpool"
- Phases
- Artifacts
- Model validation
- Phases
- Linguistic techniques
- User Story vs Domain Story
- Full sentence techniques instead of collecting nouns
- Domain exploration using the subject.predicate(object, attribute) sentences
- Gibberish Game – removing ambiguity and discovering new domain concepts
- User Story vs Domain Story
- Visualization techniques
- Grouping operations around invariants
- Visual metaphors of real Aggregates
- Model levels
- Separating the model in terms of susceptibility to changes and instability
- Grouping operations around invariants
- Shifting the Use Case/User Story to the application layer
- Event Storming
-
Tactical Patterns - Building Blocks- Concept of the language of DDD Patterns
- A need for a bigger amount of building blocks than the service and entity (data procedure and structure)
- A need for a bigger amount of building blocks than the service and entity (data procedure and structure)
- Entities
- Objects, to which we can refer in a form of “this object”
- Objects, to which we can refer in a form of “this object”
- Aggregates
- Encapsulation and openness to extension
- Strategies of determining the boundary of an aggregate
- Invariant modeling
- Linguistic techniques
- Full sentences: subject.predicate(object, attribute)
- Reversing the order: Word-Meaning(Context)-Rules
- Encapsulation and openness to extension
- Value objects
- Objects, to which we can refer in a form of “such an object”
- Increasing the power of expression
- Functional style
- Objects, to which we can refer in a form of “such an object”
- Domain Services
- Business procedures model
- Business procedures model
- Repositories
- Abstraction of data storage
- Orientation on a domain model instead of data model
- Abstraction of data storage
- Factories
- Validation
- Business logic during assembling objects
- Support for testability
- Validation
- Policies (strategies)
- Modeling in a functional style
- Open Close Principle (SOLID) in practice
- Supple Design approach
- Decorating
- Placement in 4 levels of the model
- Modeling in a functional style
- Business events
- Decoupling Bounded Context
- Anticorruption Layer
- Decoupling Bounded Context
- Specifications
- Complex business conditions modeling
- Complex business conditions modeling
- Practical examples of business modeling using Building Blocks
- Concept of the language of DDD Patterns
-
Strategic Patterns- Domain distillation – extraction techniques
- Core Domain
- Supporting Domain
- Generic Domain
- Core Domain
- Bounded Context – separation and integration
- Shared Kernel – best practices
- Conformist – when it’s worth using
- Domain distillation – extraction techniques
-
Application architecture - unification of analytical and design models- Division of the logic into an application and domain one
- Layer approach - arranging building blocks on layers
- Interfaces (presentation) layer
- Logic layer – separation into two layers of logic
- Application logic (API)
- Model of WHAT the system should do (User Case or User Story)
- Writing the Domain Story in a form of a readable prose
- Domain logic (Building Blocks DDD)
- Model of HOW and WHY the model should behave like this
- Infrastructure layer
- Interfaces (presentation) layer
- Shifting the Use Case/User Story to the application layer
- Shifting the business model to the building blocks of the domain layer
- Bounded Context mapping
- Division of the logic into an application and domain one
-
System architecture- Strategic design
- Determination of the Core Domain
- Integration with Generic and Supporting domains
- Determination of the Core Domain
- Outline of the module integration architecture
- Event Driven Architecture
- Microservices
- Event Driven Architecture
- Strategic design
Download PDF
Trainers
Meet the experts who will conduct your workshop.