Penso che i diagrammi UML possano essere utili solo se esprimono qualcosa in un livello di astrazione più elevato del tuo codice .
Scrivere UML solo per motivi di scrittura UML diventa una burocrazia non necessaria e rende il progetto e il codice meno adattabili ai cambiamenti senza alcun beneficio.
Ad esempio, un diagramma di classe UML che mostra tutte le classi in un pacchetto, con tutti i loro attributi e metodi - qualcosa che può essere facilmente generato automaticamente - non fornisce alcun valore: è allo stesso livello di astrazione del codice . Inoltre, il codice sarà sicuramente una fonte migliore per tali informazioni perché sarà sempre aggiornato e probabilmente sarà documentato e organizzato in un modo che è più facile sapere quali metodi / attributi / cose sono più importanti.
D'altra parte, se si hanno concetti di un livello di astrazione superiore a quello che può essere espresso espresso sul codice, documentare quelli su un diagramma può essere una buona idea.
Ad esempio, un diagramma che mostra i moduli astratti di livello superiore su un sistema complesso, con le loro dipendenze e forse una piccola descrizione delle loro responsabilità e su quale pacchetto / spazio dei nomi mappano nel codice sorgente può essere davvero utile per un nuovo membro del team che deve essere introdotto nel progetto o può anche essere usato per capire dove dovrebbe essere lanciata una nuova classe / funzionalità.
Un altro esempio di diagramma utile potrebbe essere un diagramma di sequenza che mostra le fasi di alto livello da adottare in un protocollo di comunicazione. Forse ogni passaggio di questi ha piccole stranezze e complessità, ma probabilmente è abbastanza per descriverli nel codice stesso. Il diagramma di livello superiore può aiutare un programmatore a comprendere facilmente il "quadro generale" delle cose senza preoccuparsi della complessità di ogni interazione.
Comunque, questi sono solo alcuni esempi; ci sono molti casi in cui un semplice diagramma può essere di grande aiuto. Ricorda solo che dovresti farlo solo quando non puoi esprimere qualcosa nel codice stesso. Se ti ritrovi a utilizzare i diagrammi UML per spiegare il codice sorgente stesso, rendi invece il codice sorgo più auto-documentante.
Infine, alcune delle regole generali che si applicano al codice possono applicarsi anche ai diagrammi: evitare di ripetersi, mantenerlo semplice, non temere di cambiare le cose (solo perché qualcosa è documentato su un diagramma UML non significa che non può essere cambiato) e pensa sempre a chi leggerà / manterrà quei diagrammi in futuro (probabilmente il tuo io futuro) quando li scrivi :)