This book (although hard to read in long sittings) provides a very good overview of software design. It discusses key concepts regarding different design styles, the purpose of design, and how design methods fulfil a particular set of design perspectives.
The book generally provides introductions and 'primers' to different software design methods, and then using these as examples to explain how you can understand that particular methods' merits and flaws.
If you need a more detailed guide on a particular design practice then there are references provided to the appropriate texts in this books (this is particularly true of the object-oriented design sections of the book), but by and large this isn't what the book is about, nor is it what it set out to do. Rather it gives you an overview of what design methods are out there and how to evaluate them.
My only issue with the book is that a few paragraphs about the history of some of the design methods are a little unnecessary and could have been summarized, however the book arguably just wouldn't be complete without them.
This book will be invaluable to those who need to be able to assess the strengths and weaknesses of prospective design methods, past, present, and future.
This book has proven to be incredibly insightful to the world of software design and fills a void for many software developers (like myself). This book sat on my bookshelf for nearly 5 years and having only just read it it provided many 'Aha!' moments that will serve me for the rest of my software development career. A must read for any serious future software designers and software engineering students. Just read it slowly or you'll miss something.