tags:

views:

256

answers:

4

There appear to be many ways to apply and use UML in software design. There are also many books which apply UML and seem to have a different spin on the way it is used.

Which book or collection of books related to UML would you recommend to improve your software design skills?

+5  A: 

UML Distilled by Martin Fowler

Rachel
That would be Martin Fowler.
Don Roby
Thank you donroby for correction.
Rachel
+1  A: 

Two books that I found very helpful:

"UML Distilled: A Brief Guide to the Standard Object Modeling Language" by Martin Fowler (IBSN-13: 978-0321193681)

"Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process" by Craig Larman (ISBN-13: 978-0130925695)

The Fowler book is light on examples, but technically accurate, where the Larman book has a lot of great examples, but doesn't dig too deeply. They both complement each other very well.

Neil T.
+1  A: 

To complement the previous two references, I'd suggest: The Elements of UML(TM) 2.0 Style by Scott W. Ambler

The best thing about this book is that it does not simply introduce the UML notation. Instead, it focuses on providing a valuable set of guidelines to effectively use the UML (from layout guidelines to naming guidelines and to more general modeling advices coming from his own experience).

Jordi Cabot
yes - a lot of books just describe the grammar of the modelling language and not how to apply it. +1
Seth
A: 

I would suggest not to read any of them because it is always the same old story. These books were published over 5 years ago and only new updates have been provided. You have a model then you generate code. This MDD approach was good with RUP but it certainly dead with agile methodologies. These modeling books are explaining that from a model you can generate a quality code but this is not true !! The generated code we get from UML tools is very mediocre specially in Java because for example you can not organize your packages with UML. I mean that if you look at UML then it only work at package level. It is like modeling 300 classes inside the same package then generating code. An absolute non sense !!! Another non sense is that all these books provide nice diagram but no real model validation. I mean that in UML you have a model and diagrams built on the top. All these books only consider you have graphical diagrams and never talk about the meta model which is on which UML is build. I mean that for them they model the domain and have graphical view of it but not a full model view. The diagram is not the model !! the model is composed by all diagrams and diagrams should only be a view of the model. The logic should be based on internal meta model and not on graphical UML views.

All these books explain UML but forget basic java software architecture in which you have packages, nested packages etc....with code generation and developer team codding. Ok you have pim, psm what I call the ping pang poom :-) The reality is that we all model (e.g. modeler, architect, developers) at different level of abstraction and that model should be updated by developers and not just the modeler. We also need a smooth integration between pim and psm !! The main problem is that all these books are built on a top down development, from code to model and never on a real iterative process. EMF tried this approach but failed. I only see new technologies such as Ontology or the metamodeling of Omondo which are really interesting subject. The problem is that you have no book on them, so better not to buy old book and wait for new one to come :-)

Packages can be easily modeled in UML. Quality of generated code depends on your code generator, not UML. Model is not all diagrams, diagrams are different views of a model. PIM and PSM are from MDA, not UML, just as model driven approaches. UML was ment to be a notation, not a tool for code generation. I read UML 2.0 and Unified Process by Ila Neustadt and Jim Arlow, which included quite a long appendix on OCL. There is a book on EMF. UML did not change significantly during 5 years.
Gabriel Ščerbák