Reviewed: July 2013
Highly recommended.
This book builds on the prior work, Domain-Driven Design : Tackling the Complexity in the Heart of Software (Eric Evans,2004). Eric Evans introduced the idea of ‘Ubiquitous Language’. The ‘Ubiquitous Language’ is something that different stakeholders in a development project can communally agree on.
This book’s examples are samples written in Java or C#. There is plenty of discussion about design or implementation techniques, especially leaning upon the samples based on a Java based multi-threading, multi-user, networked system. It discusses different strategies, including their relative strengths and weaknesses.
When discussing the DDD, the role of a Ubiquitous Language is introduced. A business is defined by its purpose – this becomes its core domain. Lesser domains are 1) supporting sub-domains (business specific things) and 2) generic sub-domains (things that can be bought in or provided by other development teams. It discusses different architectures – I must confess I hadn’t heard of the Hexagon architecture (aka Ports and Adapters) and really like it.
From a personal point of view, I particularly really like these concepts introduced by this book. A lot of the book makes sense from some C++ Builder/SQL systems I once developed. I particularly like the way the book’s concepts can help you avoid building systems that are a big ball of mud or a data silo.
This is an excellent book if you need its advice. It could do with a glossary though – I improvised by referencing Wikipedia for unfamiliar terms. It does have a useful bibliography with references to many papers on the Internet.