Let's have something straight. The source code is the only reliable source of knowledge about the project. There may be a lot of additional documents, like requirements, high level design, use cases, UML diagrams, user documentation, test scripts, slides, and so on, and so forth, but it's the source code that is the only reliable source of information how the system is behaving (or why it is misbehaving).

When you're doing Test Driven Development (TDD), the system design changes, and changes fast, and no-one has time to update all the other documents each week (or sprint). So there is no other reliable source of information about the product but the source code itself. Actually, if you are doing TDD, to find out how the system behaves, it may be easier to check the tests.

Having said all that, UML diagrams can be very helpful. It's not unusual to have hundreds of classes in a project and it's easy to get lost. If you need to take a glimpse of where you are, or introducing someone new to the project, or show someone a high level schema of the project, UML diagrams can be extremely handy. That's why it's useful to have a tool that generates a class diagram from the source code automatically, and you can use it or show it to someone immediately. Just make sure you put a date on it, because next week it's going to be something else!

Here are a few of such tools, that generate a UML diagram from the existing source code:

  1. Papyrus: http://www.eclipse.org/papyrus/
  2. ObjectAid: http://www.objectaid.com/home
  3. eUML2: http://www.soyatec.com/euml2/
  4. Acceleo: http://wiki.eclipse.org/Acceleo
  5. Class Visualizer: http://www.class-visualizer.net/

As always, make sure you check the license before using.