How to learn good UML desing? How often do you draw diagrams (other than static diagram of classes)? What is the best source for learning it?
I dunno, it depends on how big team is. Class/Sequence/Use cases is what mostly used for me I think. The most important thing is not overuse diagraming, couse the main goal is to help comunicate among team, help understand things same way, not just to make some useless diagrams papers and not use them.
However very complex system developed by group of teams, obviously require more diagrams I think, just to make sure everyone knows what they are doing and how things relate in system. There's quite lot good tools these days that help in modeling.
I think Martin Fowler's "UML Distilled" is the best book for learning UML syntax. It's succinct and dense with information.
Unfortunately, knowing UML syntax well is not the same thing as knowing how to design.
There was one project make I worked on where we used Enterprise Architect to make UML diagrams which we round-tripped (forward- and reverse-engineered) with the C# source code.
It (UML) wasn't good at defining the implementation of each method (using sequence diagrams), but it was OK defining the signatures of interfaces and of classes (i.e. the declarations, not definitions, of methods).
It was useful because you could have:
A diagram which shows how a group of classes interact (whereas with source code you see classes one at a time)
Different diagrams with different groups of classes; and sometimes the same class can appear on more than one diagram.
This was for a project where it was a requirement to create design documentation, with traceability from the use cases though design.