Domain Driven Design - complex business model (part 1)

Expert workshop is something more than a training. Workshop is focused on client's project.

Code: ddd-workshop-DDD
Category: DDD Workshop
Format: 60% lecture / 40% workshop
Duration: 3 days
Target audience: developers
architects
analysts
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

  • Techniques and strategic patterns, the purpose of which is to solve typical organizational problems
    • effective techniques of conducting a modeling session with the participation of Domain Experts
    • focusing the effort on the Core Domain: investing the best people and DDD techniques only into the crucial modules
    • techniques of separating individual domains (Bounded Context) designated by the knowledge boundaries of Domain Experts, reduction of risk related to creating monoliths
    • techniques of integrating the modules open to changes and performance scaling strategies of cooperation between teams (including in the outsourcing model) that work on separate models
  • Tactical techniques and patterns, the purpose of which is to solve typical technical and quality problems
    • language of patterns for creating a model - Building Blocks
    • architectures suitable for creating expansible systems
    • approaches supporting and facilitating automatic testing
  • Smooth integration with Scrum thanks to the Modeling Whirlpool approach
Scope
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. Form
Incremental 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.

  1. Introduction to the Domain Driven Design – unification of analysis and designing
    1. Applicability of the DDD
      1. Measuring complexity of the system
      2. System depth – what is system doing "under the hood"
      3. When not to use the DDD
      4. The DDD Lite approach - increasing the technical quality
    2. Roles in the process – responsibilities and personality traits and skills
      1. Domain expert - source of knowledge, model validator
      2. Modeler (domain architect) – creator of the model
      3. Facilitator – coordinator of the process in the initial phase
    3. Introduction to the Ubiquitous Language
      1. Common ground between Domain Experts and a development team
  2. Process and techniques of modeling
    1. Event Storming
      1. Notation
      2. Phases
      3. Tips and Tricks
    2. Approach "from a process" vs approach "from a domain"
    3. Agile Modeling Process "Model Exploration Whirlpool"
      1. Phases
      2. Artifacts
      3. Model validation
    4. Linguistic techniques
      1. User Story vs Domain Story
      2. Full sentence techniques instead of collecting nouns
      3. Domain exploration using the subject.predicate(object, attribute) sentences
      4. Gibberish Game – removing ambiguity and discovering new domain concepts
    5. Visualization techniques
      1. Grouping operations around invariants
      2. Visual metaphors of real Aggregates
      3. Model levels
      4. Separating the model in terms of susceptibility to changes and instability
    6. Shifting the Use Case/User Story to the application layer
    7. Shifting the business model to the building blocks of the domain layer
  3. Tactical Patterns - Building Blocks
    1. Concept of the language of DDD Patterns
      1. A need for a bigger amount of building blocks than the service and entity (data procedure and structure)
    2. Entities
      1. Objects, to which we can refer in a form of “this object”
    3. Aggregates
      1. Encapsulation and openness to extension
      2. Strategies of determining the boundary of an aggregate
      3. Invariant modeling
      4. Linguistic techniques
        1. Full sentences: subject.predicate(object, attribute)
        2. Reversing the order: Word-Meaning(Context)-Rules
    4. Value objects
      1. Objects, to which we can refer in a form of “such an object”
      2. Increasing the power of expression
      3. Functional style
    5. Domain Services
      1. Business procedures model
    6. Repositories
      1. Abstraction of data storage
      2. Orientation on a domain model instead of data model
    7. Factories
      1. Validation
      2. Business logic during assembling objects
      3. Support for testability
    8. Policies (strategies)
      1. Modeling in a functional style
      2. Open Close Principle (SOLID) in practice
      3. Supple Design approach
      4. Decorating
      5. Placement in 4 levels of the model
    9. Business events
      1. Decoupling Bounded Context
      2. Anticorruption Layer
    10. Specifications
      1. Complex business conditions modeling
    11. Practical examples of business modeling using Building Blocks
  4. Strategic Patterns
    1. Domain distillation – extraction techniques
      1. Core Domain
      2. Supporting Domain
      3. Generic Domain
    2. Bounded Context – separation and integration
    3. Shared Kernel – best practices
    4. Conformist – when it’s worth using
    5. Four levels of a large scale model
      1. Capability
      2. Operations
      3. Policy
      4. Decision Support
  5. Application architecture - unification of analytical and design models
    1. Increasing the level of code readability through Domain Specific Language
    2. Division of the logic into an application and domain one
    3. Layer approach - arranging building blocks on layers
      1. Interfaces (presentation) layer
      2. Logic layer – separation into two layers of logic
        1. Application logic (API)
        2. Model of WHAT the system should do (User Case or User Story)
        3. Writing the Domain Story in a form of a readable prose
        4. Domain logic (Building Blocks DDD)
        5. Model of HOW and WHY the model should behave like this
      3. Infrastructure layer
    4. Shifting the Use Case/User Story to the application layer
    5. Shifting the business model to the building blocks of the domain layer
    6. Bounded Context mapping
  6. System architecture
    1. Strategic design
      1. Determination of the Core Domain
      2. Integration with Generic and Supporting domains
    2. Outline of the module integration architecture
      1. Event Driven Architecture
      2. Microservices


Download PDF

Trainers

Meet the experts who will conduct your workshop.

Contact us for a free consultation.

Firstname and lastname:
Company:
E-mail:
Phone:
Subject:
Message:

If you prefer direct contact then you can always call.

Iwona Sobótka

Training coordinator


I agree to the processing of my personal data in accordance with the Law on the Protection of Personal Data in connection with sending a request via the contact form.

Providing the data is voluntary but necessary to process the query. I have been informed that I have the right to access my data, the possibility of correcting them, demanding stopping their processing.

The administrator of personal data is Bottega IT Minds, ul. Jana Sawy 2, 20-632 Lublin, Poland.


The information clausule