GetTextbooks.com  
 Compare Prices & Save up to 90%
Search by ISBN, title, author, etc ...

Login | Sign up | Settings | My Wish List 


Object Thinking (DV-Microsoft Professional)

by David West

ISBN-10: 9780735619654
ISBN-10: 0-7356-1965-4
ISBN-13: 9780735619654
ISBN-13: 978-0-7356-1965-4
Paperback
2004-03-10
Microsoft Press


Find Lowest Price

Editorials


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.

Reviews


Object Thinking
Overall the book was pretty good. I have a feeling that its content could hve been copressed in half the size. There were quite a few "doh" moments for me, meaning that book stated something way tooo obvious for everyone. Nevertheless, I would reccmmend this book to all programmers and possibly project managers.

A nice compilation of heuristics for good OOP design
There are n solutions to a single problem. All of them right in solving the problem however only a few extend the existing system at a 'natural joint' i.e. where it is consistent with the original structure/intent or theory of the developer. Such changes lead to systems that are easy to take-down and reassemble when you hit a dead end.. (along the lines of the Lego Brick metaphor, if you find that a brick doesn't give you the shape you want, you just chuck the brick and plug in a different shape.) This in fact is the bulb moment behind the XP practice of 'Metaphor'. Identifying the right set of objects and the distribution of responsibilities among them to suimulate a real world scenario is the sign of a master object designer. This book will not make you an artist but will give you some good pointers nonetheless.

* The first few chapters help the reader understand between the culture difference between 2 camps of 'scientific logical method-driven designers' and 'heuristics-driven artistic social designers'.
* Chapter 3 outlines the 4 fundamental tenets of object oriented thinking.
* Chapters 4 n 5 throw some light on the terminology and subtle thinking differences.
* Chapter 6,7,8,9 are the 'How-to'/actionable chapters.
* Chapter 10 is just bizarre... disjointed
The book as a whole doesn't exhibit 'flow'... something feels off. The book also doesn't promote lucid language frequenty throwing in important sounding words :)
The book definitely could have been shorter to make a better impact- I liked a bunch of ideas like Object Cubes (an extension to the CRC Card) as a thinking tool (I don't think I'll be building any physical cubes), the 4 presuppositions of object thinking, 'All inheritance must be based on behavior extensions', the little 'Behind The Quotes' sidebars , 'Object as a person' metaphor. Self-evaluating rules, Event Dispatchers and the DataItem type (as opposed to passive data) are interesting. That said it is a refreshing (though opinionated) change to read about the craft behind OOP. 4 out of 5 stars.

A good but controversial piece
First, to be entirely fair, it is highly debatable whether I am an object thinker or not. I tend to prefer to build systems around high domain understanding. I also tend to build system's around my own highly conceptual and abstract style of thinking and tend to not split out an object until I feel that it has enough responsibilities of it's own or it has proved itself as a theme in my design. I may feel that everything could be an object but I am not necessarily sold that everything in my system needs to be presented as an object.

Many of the ideas presented in this book may sound outlandish but they are good and worth considering. It is a shame that many of the thoughts and ideas provided by the object culture are not as well understood as those from the pattern culture. The pattern culture seems to be erasing an important part of software design's history and leaving us with ideas that are in many ways not as good as those that proceeded them. I would have prefered that the two movements had been perceived as more complementary than antagonistic.

As this book indicates, there is a great tension in the industry between those who feel that software development should be a systematic process (there is a magic algorithm that will solve any problem) and those that feel that software development is a complex undertaking that can only be done well by having a good understanding of the problems at hand. Neither of these are a question of professionalism but rather a question of who hard software development is. This book may be the first exposure that many have to the second culture. Too much development these days seems to be.. If you are faced with this problem, use this pattern. There is too much pattern fitting in the industry and too little pattern recognition or extraction. If nothing else is taken away from this book, it would be highly appreciated if the reader starts to build a comprehension that the human needs of the system dictate what needs to be built rather than standardized architectures, common patterns, and algorithms.

I felt that the process of conceptual refinement and refactoring were not as present as they should have been in this book. In general, we are human and figuring out the way objects in a software system need to collaborate together to meet the businesses needs is difficult and is rarely done correctly in the first pass. Our initial understanding of what the objects are in the process might be wrong. The way we understand processes in software might be flawed or bemuddled with preconceptions of the way the system may need to be built.

Given the modern age, I also would have preferred that the author present more of a roadmap to getting people to object thinking. For many groups mired in more traditional methods, it is likely that the transition toward object thinking will have to be a gradual purpose of emergence where a person is slowly presented to different ideas and ways of conceptualizing a software system that slowly led to some of the ideas presented here. The ideas are good but the book is more evangelistic than convincing.

I also have some problems with this book in that it seems to advocate that object thinking is easy. My experiences in general suggest that people are not as great in the conceptual space as many OO theorists suggest. OO is a hard sell when people often have a hard time figuring out what really are the concepts (objects) in their system compared to figuring out system behavior. There are a lot of pitfalls in good object oriented design and a lot of work that could be done just explaining to people what makes a good object. CRC is advocated here but I don't feel that the power of the method is entirely explored. Responsibility and role assignment are very important in any design.

Some of the problem here is our traditional assumption of the role software development has in an organization. If I am a developer who is tasked to build software based on specified requirements (and not presented with domain information), object thinking may be hard or impossible. I think the message need to be that if we want good software, this role needs to change.

Overall, this book will give the reader a good big picture view of what object oriented design really means. It will also give the reader a better understanding of what a programmer really should know in order to build good software (too often people think that knowing technologies or clean code is the key). This book will not in itself teach the reader to be a really good architect but it provides an important foundation that is missing from too many people's understanding these days.

Great read and design learning tool.
I found it a great read and thought the author really had some great points and strategies to Object Oriented design and development. He draws on a vast knowledge of smalltalk style programming which is unfamiliar to me because my background is with Microsoft technologies but now I use it alot with C# and .NET. I took off one star because he tends to reemphasize over and over the battle between the object and the structural camps in programming; while I thought it was interesting and funny the first times he talked about it, around the tenth I was getting a little bored.

An overview of object oriented development
This book provides a philosophical look at object oriented development by taking the perspective that everything is an object and that behavior is what is the focus of the object oriented. Development evolution or agile methods are the way to find what the behavior is for the objects. Having experience modeling and understanding the process of modeling, this book provided a good perspective on how to think about going into the process of modeling and understanding objects. Taking this perspective and seeing everything in our world as an object helps to go from the unfamiliar to the object model. I especially found the object principles quite useful as well and heuristics as the way to design from an experienced designer. I recommend this book highly.


Home | Browse | Professors | Merchants | Webmasters | Contact Us

[ Canada | United Kingdom ]

[ CDs | DVDs ]

Copyright © 2003-2008 GetTextbooks.com