Dipende da come stai usando UML e quali informazioni hai bisogno per catturare e condividere con altre persone.
Ho visto due casi d'uso primari per UML. Il primo è come una lingua per catturare idee di design ad alto livello. Questi diagrammi non includevano tutti i dettagli del sistema, solo quelli importanti. Spesso, questi sono anche i diagrammi più astratti: usa diagrammi dei casi, diagrammi macchina dello stato, diagrammi delle attività, diagrammi di implementazione e in misura minore diagrammi dei componenti e diagrammi dei pacchetti. Si potrebbe fare del lavoro per disegnare diagrammi di classe con un'enfasi sulle interfacce pubbliche (ignorando, in questo momento, membri o funzioni privati) e diagrammi di sequenza. L'altro caso d'uso per UML è quello di acquisire lo stato attuale di un sistema, utilizzando strumenti di reverse engineering. Questi sono spesso diagrammi di classe più dettagliati, diagrammi di sequenza, diagrammi di comunicazione, diagrammi di oggetti, diagrammi di strutture composite e così via. Questo serve come documentazione sul modo in cui il sistema è in realtà per le discussioni sulle modifiche al sistema.
Per quanto riguarda il momento in cui applicare UML, dipende. Alla giusta granularità, alcuni tipi di diagrammi possono essere utilizzati non appena si inizia a discutere dell'architettura di sistema. Altri sono più adatti alle discussioni sulla progettazione dettagliata e le specifiche del sistema. Tutto si riduce alla scelta dei diagrammi giusti per visualizzare le informazioni pertinenti alle persone che ne hanno bisogno in modo tempestivo.
Riguardo ai problemi con il mantenimento di UML in sincronia con il codice, ci sono due cose da considerare. Innanzitutto, rivedi i tipi di documentazione che stai conservando. Se nessuna di queste viene attivamente consumata o aggiunta di valore, potrebbe essere una buona idea eliminarla. Se è difficile aggiornarlo, l'atto di aggiornarlo potrebbe essere qualcosa che viene messo da parte. La documentazione obsoleta è peggiore della documentazione inesistente, poiché nessuno può prendere una decisione in base a informazioni errate. In secondo luogo, se si dispone già di un codebase, esistono strumenti per facilitare la generazione di diagrammi UML dal codice, spesso chiamati strumenti CASE o strumenti di reverse engineering, considerando l'automazione del processo.