Multi-Paradigm Design for C++ offers insight into an analysis and design process that takes advantage of C++'s multiple paradigm capability. It uses understandable notation and readable explanations to help all C++ programmers - not just system architects and designers - combine multiple paradigms in their application development for more effective, efficient, portable, robust, and reusable software. Readers will gain an understanding of domain engineering methods that support multi-paradigm design. This book reveals how to analyze the application domain, using principles of commonality and variation, to define subdomains according to the most appropriate paradigm for each. Multi-paradigm design digs deeper than any single technology or technique to address fundamental questions of software abstraction and design.
The book is difficult to rate fairly as even though there's some very good stuff in there, it's very difficult to read. I think it could have been half the size and been more effective at passing on the important information about the subject.
This book gave me another perspective on design patterns through commonality / variability analysis. I find cva incredibly useful when looking at context and forces for design patterns. Bain references Copes work in "Emergent Design" as well, which I'm a fan of.
Nothing against the concepts in the book, which are worthwhile, but I should also mention that I struggled through this one. Not sure if it was the style of the prose or the sheer density of information on the pages, but it was a slog.