Aggiornamento e organizzazione di diagrammi di classe in un progetto C ++ in crescita

0

Sto lavorando su un progetto C ++ che sta diventando sempre più grande. Faccio un sacco di UML quindi non è stato difficile spiegare il mio lavoro ai colleghi fino ad ora. Ultimamente ho implementato molte nuove funzionalità e ho rinunciato ad aggiornare a mano i miei diagrammi Dia UML. Il mio codice è documentato con Doxygen ma il documento generato non è realmente visivo.

Vorrei solo che i miei colleghi comprendessero rapidamente gli aggiornamenti nel mio design di classe. Doxygen sembra gestire i diagrammi UML usando Graphviz ma vorrei sapere se sono disponibili altre possibilità e cosa voi ragazzi fate per essere il più chiaro possibile quando mostrate il vostro codice ai colleghi (non ai clienti).

    
posta vanna 26.06.2012 - 00:47
fonte

1 risposta

2

Quello che stai cercando si chiama round-trip engineering . Ci sono strumenti più e meno solidi disponibili per questo.

L'idea di base dell'ingegneria round-trip è questa:

  • È possibile apportare modifiche al diagramma UML nello strumento di modellazione UML e la modifica viene automaticamente riflessa in un aggiornamento del codice (ad esempio, si aggiunge un metodo alla classe UML e lo strumento aggiunge il metodo all'h. e .cpp)
  • È possibile apportare una modifica al codice sorgente e il diagramma UML viene aggiornato automaticamente.

Mentre l'ingegneria circolare a tutto tondo è praticamente uno sforzo di ricerca in corso, ci sono strumenti là fuori, che almeno in parte lo supportano. In particolare, tali strumenti di solito supportano la conversione di progetti esistenti e in tale processo consentono di creare diagrammi UML dallo stato corrente della sorgente.

Quindi, invece di aggiornare manualmente i diagrammi, è possibile rigenerarli ogni volta che è necessario mostrare i progressi e solo perdere un po 'di tempo per il layout o selezionare parti rilevanti per la presentazione. Ma in particolare, ti garantiamo che i diagrammi che hai mostrato contengono esattamente le informazioni presenti nel tuo codice sorgente.

Per C ++ temo di conoscere solo uno di questi strumenti: Enterprise Architect . Sono sicuro che ce ne sono di più, comunque.

Come nota finale: l'automazione a questo livello è lungi dall'essere perfetta. Otterrai un diagramma UML decente, ma certamente non qualcosa del genere che avresti ottenuto da solo. Prima di tutto, una volta che si lascia il regno della struttura statica e si vogliono diagrammi comportamentali, la maggior parte degli strumenti non è solo una perdita totale, ma produce un output totalmente inutile. E in secondo luogo, anche per la struttura statica, è un argomento difficile derivare aggregazione / composizione / associazione (classi) / ecc. automaticamente dal codice sorgente. Dato che la maggior parte dei generatori di codice sono ancora sintonizzati manualmente per produrre gli output desiderati nell'ovvio modello UML - > direzione del codice, è comprensibilmente molto più difficile generalizzare la direzione opposta.

    
risposta data 26.06.2012 - 08:22
fonte

Leggi altre domande sui tag