Any and all advantages/disadvantages would be appreciated!
closed as not constructive by ChrisF♦ Jan 25 '12 at 13:54
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. If this question can be reworded to fit the rules in the help center, please edit the question.
According to Agile principles, patterns and practices in c# class-diagrams have the disadvantage of focusing on a static view of the system. Both designers and newcomers to the project will probably learn more from diagrams that focus on the behaviour, for instance state-diagrams or sequence-diagrams.
Martin also writes that diagrams should be jotted down quickly to help the thought-process or discussion and then be scrapped. He has an intersting point, the important diagrams will appear in discussions over and over. Only when it gets boring to redraw a diagram repeatedly it is important and well thought-out enough to be added to the documentation and be kept updated.
Edit: The documentation-value is also indicated by the available tools. Generating class-diagrams of the structure of a system is widely supported. Illustrating what the system does and how it interacts with users or other systems is not.
Advantages: Nice way to wak through use cases to test your design. Nice to use when talking and developing in a team. Once you have the design down the coding can be stubbed out so that testing and developing can be done by more than one person. Easy to write up simple ones on a white-board.
Disadvantage: they are usually not documents that are kept up to date so they don't work well as long-term documentation
Disadvantages: creating diagrams on a computer is slow. This is not a fault of the diagrams, but a fault of the diagramming applications. I'm happy to draw diagrams, but I draw them on a whiteboard while discussing design decisions. Then we write code and the need for diagrams is over. If someone really wants to see a diagram, they can extract one from the code.
I'd love to find a good tool that I can feed the root of my java interface hierarchy to and have it print out a nice diagram. Having a visual representation of the object model is incredibly useful. I tried this with a complex hierarchy (~100 interfaces) several years ago with several tools and they all failed miserably. If there are any that work well I'd love to know what they are.