About the Book
Domain Storytelling means that we let domain experts tell us stories about their tasks. While listening, we record the stories using a pictographic language. The domain experts can see immediately whether we understand their story correctly. After very few stories, we are able to talk about the people, tasks, tools, work objects, and events in that domain.
This book is an in-depth guide on how to use Domain Storytelling. It provides the means to use and adapt Domain Storytelling for different purposes, for example:
- Crunch domain knowledge: Use Domain Storytelling to bring together domain experts from different departments, cross department boundaries and challenge assumptions. Work your way down from big-picture overviews to in-depth domain analysis.
- Find good boundaries for your software: Domain Stories help to break down a domain into manageable slices. These are useful for splitting a monolith into modules, for designing microservices, and finding context boundaries in Domain-driven Design.
- Domain Stories help you to determine which classes and methods you need to express your domain knowledge in code.
- Derive requirements from Domain Stories to bridge the gap between domain knowledge and software development.
- Support organizational change by making transparent how a new software system will change the way how people work.
This book is in progress. We appreciate your feedback!
About the Authors
Stefan is bad at drawing stuff. However, he thinks he can build up domain knowledge by drawing Domain Stories. Stefan studied Software Engineering in Austria and has a PhD in computer science. Since 2005, he has been working for WPS – Workplace Solutions Ltd. in Hamburg. His job there is to help teams develop software that does the right job the right way.
Henning loves to code. He follows this passion as coder, coach, and consultant at WPS – Workplace Solutions in Hamburg, Germany. His projects are domain-driven, agile and in various programming languages. Henning is interested in people, long-living software architectures, big refactorings and the evolution of programming languages.