Domain-Driven Design: Tackling Complexity in the Heart of Software
Review by Sven Woltmann
In his classic work, Eric Evans describes a groundbreaking approach to software development, at the heart of which is an object-oriented model, representing, as accurately as possible, the domain model – that is, the (usually not formally defined) model used in the business departments of a company.
The development and maintenance of such a model require close cooperation between IT and business departments. Establishing a shared, unambiguous language – the “ubiquitous language” – enables communication without ambiguities and misunderstandings.
The domain model and close collaboration ultimately lead to an application that does precicely what the business department hoped it would do – and that can be easily adapted to new requirements.
Supported by numerous rich examples, the book shows a systematic path from the business requirements to the detailed technical model. It draws from a repertoire of technical building blocks – such as entities, value objects, aggregates, services, repositories, and factories – as well as higher-level concepts such as bounded context and context map, shared kernel and anticorruption layer, and core and subdomains, to name just the best-known.
The book is one of the most important in software development and is still cutting-edge after two decades. However, it is not an easy read – ideally, you should have a few years of programming experience and take a few weeks to work through it. The time and effort invested will be worth it and will lift you to a new level of software development.
🎧 Suitable as an audiobook: No.
Other Recommendations From This Book’s Genres
Clean Architecture: A Craftsman’s Guide to Software Structure and Design
Get Your Hands Dirty on Clean Architecture: A hands-on guide to creating clean web applications with code examples in Java
Implementing Domain-Driven Design
Design Patterns: Elements of Reusable Object-Oriented Software
Domain-Driven Design Distilled
Pattern Hatching: Design Patterns Applied
Refactoring: Improving the Design of Existing Code
Clean Code: A Handbook of Agile Software Craftsmanship
Clean Craftsmanship: Disciplines, Standards, and Ethics
Working Effectively with Legacy Code
The Pragmatic Programmer: From Journeyman to Master
Growing Object-Oriented Software, Guided by Tests
The Clean Coder: A Code of Conduct for Professional Programmers
Agile Software Development: Principles, Patterns, and Practices
Extreme Programming Explained: Embrace Change