Penso che gli ultimi anni abbiano mostrato una preferenza per l'uso di diagrammi di classe per documentare il codice esistente piuttosto che generare codice.
I diagrammi forniscono al lettore del codice una rapida panoramica della struttura generale dei sistemi in termini di classi e relazioni. Ovviamente, l'uso positivo dei diagrammi dipende dal fatto che i diagrammi vengano mantenuti sincronizzati con il codice; se non lo sono, i diagrammi sono fuorvianti. Questo è il motivo per cui vedi gli strumenti per generare diagrammi dal codice.
Generare codice da diagrammi sembra così anni '90. Era popolare nei giorni di Rational Rose, ma non vedo che tali strumenti vengano usati così tanto. Per quanto mi riguarda, posso programmare molto più velocemente digitando (e sì, usando il code-assist) di quanto sia possibile facendo un diagramma. Anche se hai creato uno strumento che rendesse facili i diagrammi delle classi di disegno, ti aspetteresti che la maggior parte dei programmatori lo utilizzi? Un diagramma di classe ti può portare solo lontano. Devi ancora scrivere il codice per implementare i corpi del metodo. E che tipo di software controlla la coerenza dei diagrammi? Che ne dici di importare classi da altri pacchetti? Chi può ricordare tutti i simboli per pubblico, privato, protetto, pacchetto-privato? E come indichiamo membri statici con sottotitoli in modo conveniente? Se una variabile è inizializzata su un'espressione complicata, come inserirla? Anche se è inserito, c'è un compilatore nello strumento di diagrammi per verificare cosa abbiamo?
E poi, una volta generato il codice dal diagramma, quali sono le probabilità che sia completo? Dobbiamo ancora modificarne di più a mano? Se è così, cosa succede se troviamo un errore nel diagramma? Perdiamo le nostre modifiche a mano?
L'intera idea di generare codice da immagini o diagrammi sembra un tentativo errato di rendere l'ingegneria del software come meccanica, elettrica o ingegneria chimica. O anche l'architettura. In questi campi, i tuoi "progetti" sono disegni su carta e il tuo prodotto è fabbricato utilizzando i disegni. Il software NON è così. Nel software, il codice sorgente è il progetto / design , mentre il prodotto è il file binario creato dal compilatore.
Naturalmente, non c'è nulla di sbagliato nel fare diagrammi di classe come schizzi grezzi a livello concettuale, ma se ci fosse qualche valore nel generare codice da loro, penserei che lo faremo tutti ora. (So che l'ultima affermazione non è stata pensata come una prova deduttiva, ma piuttosto qualcosa che fornisce la prova per il reclamo, no?)