Object Thinking (DV-Microsoft Professional)
|
| Price: |
29 new or used available from $28.57
Average customer review:Product Description
The foundation of all object-oriented software design, including agile methods such as extreme programming, is object thinking. But many developers have not mastered its underlying concepts and principles—relying on methodology and process instead of fully exploiting the power of object thinking in software design. In this essential, high-level reference, well-known object technologist David West provides a deep historical and contextual discussion of object thinking, including the behavioral approaches to object discovery and design. Readers will master the fundamental principles and learn how to apply object thinking to improve software development at every phase of the process.
Product Details
- Amazon Sales Rank: #290461 in Books
- Published on: 2004-03-10
- Original language: English
- Number of items: 1
- Binding: Paperback
- 366 pages
Editorial Reviews
About the Author
Currently Dr. David West is a professor in the School of Business at New Mexico Highlands University, where he is developing an object-based curriculum in software architectures, business engineering, and management information systems. He founded and served as the Director of the Object Lab, a cooperative effort with local corporations dedicated to researching and promoting object technology, at the University of St. Thomas.
Customer Reviews
Excellent Read!
This is one of the first books in Microsoft Press' new "Microsoft Professional" series and first impressions are that it looks a bit dry. If you're as averse to "pretentiously long words" as I am - headings like "hermeneutics", "anthropomorphism" or "A syncretic Approach" leap off the page as you flick through the slim volume - then you're going to find the book a bit of a struggle("Looks like a great cure for insomnia" as a colleague commented after a quick flick through it) and my initial hopes were not high.
However persevere, because it's worth it! Although the language and presentation is almost the polar opposite of one of the "companion" titles in this series ("Extreme Programming Adventures in C#") this has a very high signal to noise ratio (which sadly the other much fatter volume doesn't!). So, don't be put off by the long names and endless footnote references to old ACM papers because what's presented here is a thoughtful and convincing book on the history of object-oriented development, the politics and design errors that have caused the "wrong" thinking to take place and a convincing argument as to why so many of us have got object orientation so wrong. The blurb promises "visionary insight" and if you can get through some of the "academic" language, against all expectations the book delivers on that promise. This ISN'T, as you might expect from a Microsoft Press book, a book of code examples and "silver bullet" handbook for the developer who wants to cut and paste code, for reasons that are well explained in the book. It IS a great guide to why current thinking is often wrong and what you, as a developer, need to do to develop your "object thinking" and deliver on the promises that have been made in its name.
Frankly I'm amazed and encouraged to see such a great "agnostic" (where Microsoft technologies are concerned) book published by Microsoft Press. This is one of the best titles I've read (and I've read a lot!) in their extensive catalogue. Perhaps the most important advice is that "Object thinking is hard", as the book's author professes, and while there aren't any "silver bullets" this book does guide you through a difficult path that will help you "think objects" and produce better solutions.
Highly recommended
Great Philosophical background
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
ivan.s.kirkpatrick@comcast.net
I really wanted to love this book
And I did - but I'm not sure how broad the appeal of a work such as this will be.
Readers looking for a 'pure' programming book will be disappointed; readers expecting a theoretical introduction to object-oriented programming will probably find themselves overwhelmed. The other groups of readers for whom I feel saddest will be those where English is their second language and readers predisposed to hostility towards Agile programming methodologies (http://www.agilealliance.com/home) - for them, this book will be an exercise in frustration.
The language in this book is written at a higher level of vocabulary than is typical - perhaps not atypical of a philosophy textbook (which is much closer to what this book is), but certainly outside the norm for books about programming. And it is because of this emphasis on philosophy that I find myself only able to give the book 3 stars. I loved it - but a lot of people will be put off by Dr. West's vision of titanic struggle between formalist culture and relativist culture, technocrats and managers against geeks and code poets.
On an emotional level, I get it. At an intellectual level, I get it. The process he's describing, the methodology he proposes, totally gel with the way I've long thought about my programs. Even when I was writing largely procedural code, I was holding in my head metaphors that made it a lot easier for me to visualize what I was trying to achieve. West believes that by training developers to accept fuzziness and chaos, to embrace uncertainty and relativism, to adopt an almost Zen-like approach to software-by-metaphor, better software will come about.
This book is almost a Gnostic text of sorts - to the believer or not-quite-believer actively seeking the message this book tries deliver, it will be a wonder. To a skeptic or traditionalist, it will seem like heresy. Ultimately, that's too bad - I think there's a lot of wonderful material in this book that'll be lost, and I do think my profession will be the less because of it.





