Any and all advantages/disadvantages would be appreciated!

  • 3
    In the future I would prefer to see "Here are the advantages and disadvantages of X that I thought of on my own and found by searching the web. Can anyone add any more?" Commented Mar 21, 2011 at 2:29

4 Answers 4


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.

  • I couldn't seem to find that reference..
    – Prisoner
    Commented Mar 20, 2011 at 22:45
  • I double-checked the link and it was ok so then I assume you mean where in the book? Chapter 14 is about when and how to draw diagrams. I now see I paraphrased it impresisely: "It is best to explore dynamic scenarios first and then determine their implications on the static structure. It is important to evolve the dynamic and static diagrams together, using very short iterative cycles ...". I couldn't find the documentation-part. The points are: 1. A complete model in diagrams is not that much cheaper than working code, 2. Diagrams are not testable so the design cannot be confirmed.
    – Grastveit
    Commented Mar 21, 2011 at 9:59
  • +1 for two reasons: class diagrams can easily be extracted from the code (could even be part of the build process) and, more importantly, behavior first. Alan Kay did say that OO was about messages being exchanged. Commented Mar 21, 2011 at 17:28

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.

  • 4
    IMO it's the only way. When you draw with your hands, concepts like "too complex" or "too coupled" are immediately obvious. Tools can hide that from you. Sometimes we take a picture of the whiteboard and keep it in the design folder - more often we don't. Commented Mar 20, 2011 at 21:36
  • Which diagramming programs are you using? It seems pretty quick to me... granted there's room for improvement still of course.
    – Kenneth
    Commented Mar 20, 2011 at 21:48
  • 1
    @Kenneth - I've used several. None are half as fast as drawing on a whiteboard or one-tenth as fast as typing "X extends Y" Commented Mar 20, 2011 at 23:40
  • I guess in the end it comes down to a matter of style. I personally haven't had any issues using them. I sometimes prefer to take things a little more slowly so I have time to analyze things which I find helps me to see things I might not have seen otherwise.
    – Kenneth
    Commented Mar 20, 2011 at 23:47
  • If you're only going to do it once, a white board makes sense.
    – JeffO
    Commented Mar 21, 2011 at 0:46

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.

Not the answer you're looking for? Browse other questions tagged or ask your own question.