Video Tutorial: A Deep Dive into Domain Modelling
- Domain modelling
Watch our extensive video series on domain modelling
In this video tutorial series, we delve into the world of domain modelling by exploring the domain of Sharingo, an innovative (fictional) bike-sharing startup.
Whether you're a software enthusiast, a domain-driven design practitioner, or simply curious about the intersection of technology and urban mobility, this video series is for you.
What you will learn:
From big picture exploration to refining the model
Modelling with constraints
Identifying bounded contexts
Addressing failure scenarios, and creating a comprehensive model design
Refining and refactoring designs for optimal boundaries
Sharingo is not your ordinary bike-sharing company. It's a dynamic startup that emerged as a spinoff from an established electric bike manufacturer. With a vision to enhance urban mobility, Sharingo provides customers with efficient electric bikes to navigate cities swiftly. Though already active in several cities, Sharingo has ambitious plans for rapid expansion into numerous urban centres.
Meet the Experts
To guide us through this domain modelling journey, we have Thomas Coopman and Gien Verschatse:
Thomas Coopman is a seasoned software consultant and engineer who specialises in the full stack, ranging from domain modelling to frontend development and backend systems. With his extensive experience, Thomas develops and delivers training programs at DDD Academy and Aardling, equipped with a Master of Informatics from the University of Leuven.
Gien Verschatse is an accomplished consultant and software engineer with a profound understanding of domain modelling and software architecture. Her expertise spans both object-oriented and functional programming, primarily in .NET. As a passionate practitioner of Domain-Driven Design, Gien excels at bridging the gap between domain experts, users, and engineers. She also actively shares her knowledge by speaking at international conferences and teaching others.
Part 1 - Understanding the Bigger Picture
In this initial instalment, we kick off with a technique called Big Picture EventStorming. We explore the intricacies of how Sharingo's bike rental process functions for its users. By gaining a high-level overview, we establish a solid foundation to dive deeper into the domain.
Part 2 - Refining our Understanding
Building upon the insights gained in Part 1, we take a step further in refining our model. By leveraging the initial high-level overview, we delve into the intricacies of the domain and the challenges that need to be addressed.
Part 3 - Adding Commands and Constraints
Now that we possess a foundational understanding of Sharingo's bike rental process, it's time to give structure to our model. In this session, we transition from unstructured notes to a more refined model by adding commands and constraints.
Part 4 - Finding Bounded Context Candidates
Discover the art of drawing dependencies between constraints, queries, and events in this fourth instalment. Our goal is to identify potential Bounded Contexts, allowing us to explore and validate design choices.
Part 5 - Exploring Failure Scenarios to Improve the Model
While everything may run smoothly in an ideal scenario, real-life systems must be capable of handling failures. In this session, we shift our focus to failure scenarios and explore how to incorporate them into our core model. In this part you will gain insights into the crucial aspect of designing robust software that can handle various failure situations.
Part 6 - Finishing the First Draft of the Design
We return to our original quest of identifying Bounded Context candidates. We examine the remaining parts of our EventStorm, completing the first draft of our comprehensive design. Here you will learn how our model evolves, bringing us closer to a refined and robust software system.
Part 7 - A Context Map of our Bounded Contexts
Gaining a fresh perspective on our designed Bounded Contexts, we explore the dependencies between them. By creating a Context Map, we uncover how these contexts interact and understand the dynamics at play. We analyse the events and commands at the boundaries of the Bounded Contexts, illuminating their relationships.
Part 8 - Refactoring towards Better Boundaries
Design is an iterative process that demands continual improvement. In this video, we embark on a journey of refactoring our model to establish more optimal boundaries. We restructure responsibilities, and fine-tune our design to ensure a well-defined and maintainable software system.
Part 9 - Example Mapping
In the final part of our video series, we unveil the power of Example Mapping. Demonstrated through the analysis of the 'bike availability' event, we delve deeper into the domain, enhancing our model's understanding. Example Mapping aids us in refining our rules, thereby fostering a more comprehensive and effective model.
From understanding the big picture to refining the model, addressing failure scenarios, and optimising design boundaries, the goal of this video series was to equip you with the tools and knowledge to tackle real-world challenges in software development.
Have comments or questions? Email us at firstname.lastname@example.org, we are happy to help.