2012-09-14 26 views
8

Non parlo fluentemente con UML, ma mi piacerebbe creare un diagramma di classe basato sul codice C++ esistente. Altre domande di StackOverflow hanno indicato che due programmi - Enterprise Architect e Rational Software Architect - sono abbastanza bravi nel codice C++ "reverse engineering" (cioè, creando diagrammi di classe UML basati su codice C++ esistente).Come creare il diagramma delle classi dal codice sorgente utilizzando Enterprise Architect o Rational Software Architect?

Ho scaricato la versione di prova per entrambe queste applicazioni. Tuttavia, non sono in grado di comprendere come procedere per creare un diagramma di classe in nessuna di queste applicazioni.

In Rational Software Architect, ho creato un progetto UML, ma non riesco a trovare alcun modo all'interno del programma per selezionare e decodificare il mio codice C++ esistente.

In Enterprise Architect, sono stato in grado di importare il mio codice C++, ma tutti gli elementi (classi) sono comparsi in una linea diagonale inutile e sovrapposta all'interno del diagramma. Ho provato altre impostazioni, come circle, ma erano ugualmente impossibili da leggere perché i diagrammi erano così grandi (a causa degli attributi e dei metodi che occupavano molto spazio) che nessuna quantità di panning e zoom era utile. Quello che vorrei è nascondere tutto tranne i nomi delle classi (ad esempio, non mostrare alcun metodo o attributo) in modo che tutte e 20 le classi appaiano in modo conveniente e leggibile in un'unica schermata.

Tuttavia, non riesco a trovare un modo per nascondere tutto tranne i nomi delle classi. Piuttosto, quando ho trovato un'opzione (in Enterprise Architect) che sembrava potesse nascondere tutto tranne i nomi delle classi, per qualche motivo gli elementi sono tutti svaniti nel diagramma delle classi, e nessuna quantità di ripetere i passaggi & eliminare e riaggiungere pacchetti ha fatto riapparire il diagramma delle classi.

Nota: il mio codice C++ (almeno i file che ho selezionato per l'importazione in Enterprise Architect) ammonta a circa 20 classi.

Purtroppo, una ricerca molto accurata della documentazione per entrambi questi programmi fornisce solo generalità - non sono fornite istruzioni specifiche sul reverse engineering per nessuno di questi programmi, per quanto ho potuto trovare.

Sarei grato se qualcuno potesse dirmi i passaggi di base per creare un diagramma leggibile e facile da navigare tramite. reverse engineering (cioè, C++-to-UML) che mostra solo i nomi delle classi, in modo che circa 20 classi si adattino (in modo leggibile) su uno schermo, utilizzando Enterprise Architect o Rational Software Architect - OPPURE qualsiasi altro strumento di qualsiasi tipo in grado di facendo questo (suggerisco EA e Rational solo perché sono stati evidenziati in altre risposte StackOverflow come i migliori programmi disponibili per questo scopo).

+0

Non so nulla di questi programmi, tuttavia potresti voler dare un'occhiata a doxygen che è un software gratuito e potrebbe soddisfare le tue esigenze, c'è un semplice [esempio qui] (http://stackoverflow.com/questions/9484879/graphviz-doxygen-to-generate-UML classe diagrammi). –

risposta

12

Questa risposta è valida per EA.

È possibile importare singoli file o intere directory, in modo ricorsivo o no. L'importazione di directory è di gran lunga il caso più comune; l'importazione di file singoli non ti consente di creare automaticamente un diagramma.

Quando si importa una directory di origine, è possibile creare diagrammi per ogni pacchetto UML o nessun diagramma. Decidi anche se creare pacchetti per ogni directory di codice sorgente, spazio dei nomi (predefinito) o file.

Se il codice è costante di sole 20 classi, è probabile che si trovino in una singola directory e/o spazio dei nomi, quindi giocare con quell'opzione (Struttura pacchetto nella finestra di dialogo Importa origine) per ottenere il numero corretto di diagrammi.

Nella stessa finestra di dialogo, c'è un pulsante "Nuove opzioni di diagramma", che apre un'altra finestra di dialogo di configurazione in cui è possibile scegliere se i diagrammi devono contenere gli attributi e/o le operazioni delle classi. È inoltre possibile prendere una decisione su una base di visibilità, ad esempio mostrare solo i membri pubblici.

Questa finestra di dialogo influisce solo su ciò che viene mostrato nei diagrammi al momento della creazione. I membri sono ancora importati, ma non visualizzati. Questo suona come quello che stai cercando.

È possibile modificare le opzioni di visualizzazione per qualsiasi diagramma facendo doppio clic su un'area vuota di esso, oppure facendo clic con il pulsante destro del mouse e selezionando Proprietà. Sembra che tu sia entrato in questo dialogo e abbia cambiato qualcosa, ma non so davvero cosa. La situazione che descrivi, dove non è possibile riprendere il display com'era, non è una che abbia mai visto in EA.

È anche possibile selezionare le opzioni di visualizzazione su base per classe facendo clic con il pulsante destro del mouse sul diagramma e selezionando Visibilità funzione. Non consiglio di usarlo nei diagrammi di reverse-engineering, lo sto solo citando per completezza.

Il layout che descrivi, con tutte le classi in una diagonale senza senso, mi suggerisce che il diagramma non viene definito correttamente dopo la creazione. La creazione del diagramma è un processo in due fasi; prima vengono gettate tutte le classi, quindi viene applicato il layout.

Questo è strano, poiché EA espone automaticamente diagrammi generati e non sono stato in grado di trovare un'opzione che consente di deselezionare questo comportamento. Se persiste, inviare una segnalazione di errore a Sparx Systems. Puoi sempre disporre il diagramma aprendolo e selezionando Layout Diagram dal menu Diagramma superiore.

Se, infine, le classi sono distribuite tra diversi pacchetti e spazi dei nomi in modo che EA generi più diagrammi per essi, sarà necessario unirli manualmente. Fai questo aprendo entrambi i diagrammi, selezionando tutto (Ctrl-A) in uno, copiando (Ctrl-C) e incollando (Ctrl-V) nell'altro, poi chiedi di nuovo EA a Schema di layout.

Quindi:

  1. destro clic su un pacchetto vuoto nel browser del progetto, selezionare il codice Ingegneria - Importazione directory di origine.
  2. Nella finestra di dialogo, selezionare la directory principale e il tipo di origine.
  3. Selezionare "Crea schema logico per ogni pacchetto" e selezionare la struttura del pacchetto che meglio si adatta alla struttura sorgente.
  4. Fare clic su "Nuove opzioni diagramma" e nella nuova finestra di dialogo deselezionare "Mostra attributi", "Mostra operazioni" e "Mostra metodi proprietà", se applicabile.
  5. OK entrambe le finestre di dialogo.
  6. Se sono stati creati più diagrammi, copiare tutte le classi in un unico diagramma.
  7. Se il layout sembra scadente, selezionare Diagramma - Diagramma di layout.

Spero che questo aiuti.