a sensible straightforward introduction to UML
I found this a sensible straightforward introduction to UML. It has a slant towards embedded systems as you would expect from the title. All the examples involve a real time component including an example of a cardiac pacemaker. You don't get more real-time or embedded than that! It is also the first book on software methods I have seen that mentions jitter. There is also the understanding that parts of the program or data may reside in ROM and that memory resources could be limited.
The author is described as his company's 'Chief Evangelist' and his enthusiasm shows through in this book. I found that the text is refreshingly pragmatic and real world. Also, the early chapters are a fairly gentle introduction to OO in general so that novices to OO can use this book. In the later stages C is used as the example language but this should not dissuade embedded C++ users.
The book makes use of many examples to illustrate UML, rather than a single example from end to end. This helps in one way as each aspect is demonstrated with an example that clearly shows the specific point but can hinder in that there is no continuous flow from one end to the other. This can make translating between various phases a little unclear.
One of the interesting parts of the book is the look at the future of UML from someone who has seen the whole UML development process. Throughout the book, there are comments on how and why UML developed the way it did.
If you want more than 'just' a good introduction to UML look at Doing Hard Time by the same author. This is a much larger book that goes into more detail at the detailed design end and has a CD containing examples and tools. Otherwise this book is highly recommended.