19 internautes sur 20 ont trouvé ce commentaire utile
- Publié sur Amazon.com
Let me put my review in perspective. I have been programming in one language or another for twenty years. I was the project manager for a Fortune 500 company's e-commerce initiative. I do some consulting on the side. In other words, I consider myself to be a veteran programmer.
As you know by now, Wrox books fall somewhere between expert references and trivial introductions. "Instant UML" diverges from this stereotype. It was initially written in French, and then later it was translated into English. The readability of this book suffers as a result. There are many sentences that are either confusing, highly academic and theoretical in nature, or both. I found myself having to re-read several sections to understand them. I suppose I was expecting the content to be a little more watered-down for an "Instant" book.
This misconception on my part may be the result of the content matter: UML is a formal syntax for modeling real-world systems in such a manner that facilitates writing object-oriented software. For me, this topic begot a "chicken or the egg" paradox. Knowing UML should help me to understand the benefits and mechanics of Object Oriented Programming (OOP), but without having a moderate OOP background I couldn't appreciate UML. I actually tried reading this book about a year ago, but gave up after reading the first three chapters. As an aside, there are only five chapters in this book, so that was a reasonable attempt!
Since that time, I have improved my understanding of how to write OO software, and I have returned to this book. I enjoyed reading this book on my second attempt. Therefore my first admonition to the potential reader is that she have at the very least an introductory knowledge of OOP prior to reading this book. Having journeyman knowledge would serve her even better.
The first chapter covers the genesis of UML. It is very short, and for the most part can be skipped. Suffice to say that several OOP gurus were developing their own syntaxes independently, and then did something truly remarkable: they set aside their egos, and decided to unify their efforts. Thus was UML born.
The second chapter is a nice summary of OO features. The first time I read this book, I could grasp the meaning of concepts like inheritance, generalization, containment, and polymorphism, but they were just that: concepts. After having first-hand experience working with those concepts in a program, this chapter had much more significance for me. If you just read those last two sentences, and they described your comfort level with OOP, then you would likely appreciate this book.
The third chapter presents the formal UML notation. It is very straightforward, and thankfully there are many examples. An interesting point to note is that UML is intentionally language non-specific. If you come from a C++, Smalltalk, Java, or even a VB background, you can make use of UML. The notation is meant to be independent from the constructs of the programming language used to implement its diagrams. "Instant UML" maintains its adherence to this principle by remaining wonderfully language-neutral.
The fourth chapter is a lengthy dissertation about object oriented projects. This chapter is a tremendous resource for anyone whose job is tied to professional software development and delivery. I particularly empathized with the section on Risk Management, and its delineation of reasons for software project failure. I was also intrigued by the concept of "patterns." I wish they had been given greater coverage in this book. Still, this chapter on software development is very worthwhile for most software professionals.
The last chapter is a real-life case study that is examined using UML. By this time, I was able to understand the presented drawings. However, I was a bit disappointed that the book remained neutral, and never provided even skeletal class modules to implement some of the diagrams (much less fleshed them out with actual code). This omission is somewhat mitigated by appendices C, D, E, F, and G, which provide these skeletal structures for a variety of programming languages.
"Instant UML" is a good book for the experienced Object Oriented software programmer. I can't stress this point enough. It is not an entry-level introduction to the concepts of OOP. It contains a concise coverage of the UML syntax, and will be a great reference. Its numerous examples are very helpful. If you have the prerequisite OOP experience, and are looking for an explanation of UML, then this is a good place to start.