Documenting/Understanding Software Systems

UML diagrams can be used to enrich a technical software documentation with pictures.

Motivation/Idea
Understanding the sources of a software system (or a piece of it) is one of the most common tasks in the work of software system development/maintenance. In this situation, UML diagrams can significantly help. The focus is on the presentation of a particular aspect of the system, and not on completeness or great detail. Like the whole documentation, the UML diagrams in it are considered to describe just a snapshot of the software, and thus need not be always in sync with it.

As a consequence, creating UML diagrams for documentional purposes is a quick-win and easy to achieve result for each individual diagram (of which many might be produced because of this). Also, reverse engineering techniques could be used to obtain the diagrams, this makes the approach usable even if no UML model exists for the software.

Limitations
Because of restricting each diagram to only the to-be-explained aspects, a lot of handwork might have been put into the whole set of diagrams. This leads to the problem to keep the diagrams actual, and so it seems a good idea to only make diagrams for robust parts or high level aspects of the software system. Also, automation for the production of understandable diagrams (auto-layout and auto-composing diagrams) is a hard task.