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.

  • 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?" – David Harkness Mar 21 '11 at 2:29

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 Mar 20 '11 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 Mar 21 '11 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. – Matthieu M. Mar 21 '11 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. – Kate Gregory Mar 20 '11 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 Mar 20 '11 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" – kevin cline Mar 20 '11 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 Mar 20 '11 at 23:47
  • If you're only going to do it once, a white board makes sense. – JeffO Mar 21 '11 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.