Review of "Object Thinking" by David West
This is a very interesting work from Professor West for those that want to explore the philosophical underpinnings of Object Oriented Software Development. Early in the text he relates the Greek philosopher Plato's comments to decomposition, dividing a problem along the natural joints. Although it includes good practical examples the philosophical basis for shifting from the deterministic approach of structured methodology in software development to the new agile techniques he so obviously favors is presented in a quite convincing manner.
The book ably serves as a reference to the philosophical basis of thinking regarding programming with copious references notes and sidebars. This also helps improve the readability of the book by reinforcing the rationales offered and providing substance to his claims.
Professor West we learn early on is a proponent of agile methodologies and still favors the Class, Responsibility, Collaborator (CRC) cards. There is much to recommend this in the early stages of software design. West also points out to no surprise that Object thinking is truly different and attaining this level of sophistication is not merely a matter of experience with Object Oriented languages.
As an example West includes an interesting statement "Eliminating centralized control is one of the hardest lessons to be learned by object developers.". My own experience with Java and J2EE bring to mind the example of Sun Microsystem's Pet Store. The example prominently features several classes which function as Controllers; ScreenFlowManager, ModelManager and ShoppingCartClientController. West prefers the use of Coordinator in that the objects register listeners and coordinate rather than actually control the events.
The difficulty of creating good Object Oriented software is largely affected by the language and architecture. Throughout the text West alludes to among others, Smalltalk, Java and C++ in terms of the ease with which Object Thinking is expressed in the languages. Professor West points out, via Fred Brooks four difficulties, Complexity, Conformity, Changeability and Invisibility. The relative ability to deal with these difficulties is not so dependent upon the language as long as it is sufficiently object oriented so much as it is with the programmers mindset and familiarity and ability to really think in terms of objects.
Professor West also acknowledges the most appropriate place for Object Thinking in that the more complex the problem to be solved the more appropriate Object Thinking becomes. Small problems may not benefit from Object Thinking but almost always large complex systems can be much more effectively expressed in an Object Oriented manner than with traditional structured programming approaches. Any examples to the contrary would be welcome commentary and feedback from the reader.
The later part of the book deals much more with examples and less philosophy. It is however an excellent application of the foundational discussions from the first part of the book. I was continually surprised at how much more obvious the Object approach was after the discussions and examples than the structured approach. Professor West has written an excellent philosophical basis for Object Thinking and then gone on to support it all with examples and discussions of problems that are easily understood and do well to illustrate his points.
Anyone that purports to be a practitioner of Object Oriented software design, development and architecture would do well to compare his own thinking and methods to the very well researched and annotated treatise of professor West. Not only will the reader develop an appraisal of his own levels of Object thinking but he can gain substantial insights into the cultural mindsets that govern the thinking and problem solving techniques involved in Object Thinking.
Review by Ivan S Kirkpatrick, PE