Dove lavoro utilizziamo StartUML per la creazione di diagrammi UML. Si tratta di un tool open-source molto completo nelle sue funzionalità, facile da usare ed estendibile con il supporto ai vari linguaggi di programmazione (quelli inclusi comprendono C++, C# e Java). Si possono anche aggiungere moduli personalizzati che mettono a disposizione nuovi oggetti da inserire nei diagrammi (sul sito ne è disponibile un discreto numero).
Personalmente, l'ho utilizzato per fare il reverse engineering di un progetto C++: è bastato selezionare i file .H da inserire e fare un paio di clic del mouse per ottenere un diagramma completo, con tutte le relazioni correttamente impostate. Appena ho un attimo di tempo voglio fare una prova anche con C#, perché fino ad ora con questo linguaggio ho sempre utilizzato il Class Designer di Visual Studio .