|Delphi Clinic||C++Builder Gate||Training & Consultancy||Delphi Notes Weblog||Dr.Bob's Webshop|
|Design Patterns: Elements of Reusable Object-Oriented Software|
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
395 pages (hardcover)
During the history of software engineering the notion that software should be built out of reuseable components is taking a progressive hold of the industry. The plain fact that the cost of re-inventing every bit of an application program is too high for most people or corporations to take makes the use of such concepts necessary. Can you perhaps remember the term 'software IC' that describes the concept of modularisation and reuseabilit? The metaphore here is that the pins are the interface, and what happens inside is totally invisible. However, the last couple of years another reuseability concept is coming to the foreground: design patterns. The meaning of this concept is that software engineers as a community should strive to identify and describe architectural solutions to specific problems in the form of a pattern. In fact, being a knowledge engineer myself engaged in implementing knowledge driven systems, I would dub this as 'knowledge management', and would like to say 'knowledge discovery' when speaking of the process of identifying patterns in applications reviewed to extract such patterns. One of the books that spurred interest in design patterns is the book I want to review here.
Design Patterns is written by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, aka the Gang Of Four. A foreword is written by Grady Booch. The book is published by Addison Wesley, ISBN 0-201-63361-2. It's printed on recycled paper and on the cover there's a picture of a litho by Escher, a famous Dutch artist that concerned himself with patterns.
Apart from a book edition, there's also the Design Patterns CD edition (see image on the right).
In fact, I am not in the least inclined to tell you what this book covers. How would you do a book review of a cookbook, which is maybe a disrespectfull but adequate term for this book? I can tell you what I use the book for. Anytime I have a design problem, I in fact browse around in the book just to see wether I can find a nice tidbit which may help me solve that problem. Doing that for a couple of times has lead me to a somewhat different approach to object oriented modelling as a couple of years ago. And that is actually what is covered by the book: other people's wisdom is sublimated in this book, which can help you with a design problem immediately but also makes you think about your own designs. If all works as it is intended, you not only expedite the solution to your problem, but you also will become a better and more experienced engineer.
This book was a classic as soon as it was lying in the bookshops. For any serious software engineer that designs and implements applications it is a must have. The owners of the book might consider putting it under their pillow at night, meaning that this book is one of life's necessities as a software engineer.
|More Book Reviews|