It is commonly accepted that software diagramming is an invaluable aid for software engineers.
It helps them understand their existing software and explain it to others.
It points out problems that are hard to infer from the source code alone.
And it is the best way to plan large-scale structural changes in the software, such as refactorings, redesign, and new features.
Assisting software engineerrs in these tasks is the main interest of my research.
Diagrams let the programmer step back from the code and think abstractly and hypothetically about the design.