2012-09-14 9 views
8

Ich spreche UML nicht fließend, aber ich würde gerne ein Klassendiagramm basierend auf existierendem C++ Code erstellen. Andere StackOverflow-Fragen haben gezeigt, dass zwei Programme - Enterprise Architect und Rational Software Architect - ziemlich gut im C++ - Code "reverse engineering" sind (d. H. Erstellen von UML-Klassendiagrammen basierend auf bestehendem C++ - Code).Wie erstellt man ein Klassendiagramm aus dem Quellcode mit Enterprise Architect oder Rational Software Architect?

Ich habe die Testversion für beide dieser Anwendungen heruntergeladen. Ich kann jedoch nicht verstehen, was zu tun ist, um ein Klassendiagramm in einer dieser Anwendungen zu erstellen.

In Rational Software Architect habe ich ein UML-Projekt erstellt, aber ich kann im Programm keinen Weg finden, meinen vorhandenen C++ - Code auszuwählen und zurückzuentwickeln.

In Enterprise Architect konnte ich meinen C++ - Code importieren, aber alle Elemente (Klassen) erschienen in einer nutzlosen, sich überschneidenden diagonalen Linie innerhalb des Diagramms. Ich habe andere Einstellungen versucht, z. B. Kreis, aber diese waren ebenso unmöglich zu lesen, weil die Diagramme so groß waren (aufgrund der Attribute und Methoden, die viel Platz beanspruchten), dass kein Schwenken und Zoomen nützlich war. Was ich möchte ist, alles außer den Klassennamen zu verbergen (d. H. Keine Methoden oder Attribute anzuzeigen), so dass alle 20 Klassen bequem und leserlich auf einem Bildschirm erscheinen.

Ich finde jedoch keine Möglichkeit, alles außer den Klassennamen zu verstecken. Stattdessen, als ich eine Option (in Enterprise Architect) fand, die alles andere als die Klassennamen zu verstecken schien, verschwanden die Elemente aus irgendeinem Grund im Klassendiagramm und es gab keine Wiederholung der Schritte & Löschen und erneutes Hinzufügen von Paketen ließ das Klassendiagramm wieder erscheinen.

Hinweis: Mein C++ - Code (mindestens die Dateien, die ich für den Import in Enterprise Architect ausgewählt habe) beträgt nur etwa 20 Klassen.

Leider gibt eine sehr sorgfältige Suche in der Dokumentation für diese beiden Programme nur allgemeine Informationen - keine spezifischen Anweisungen bezüglich des Reverse Engineering für eines dieser Programme, soweit ich finden konnte.

Ich wäre dankbar, wenn mir jemand die grundlegenden Schritte erklären könnte, um ein lesbares, leicht zu navigierendes Diagramm über zu erstellen. Reverse Engineering (dh C++ - zu-UML), das nur die Klassennamen anzeigt, so dass etwa 20 Klassen (lesbar) auf einen Bildschirm passen, entweder mit Enterprise Architect oder mit Rational Software Architect - ODER mit jedem anderen Werkzeug, das dazu in der Lage ist (Ich schlage EA und Rational nur vor, weil sie in anderen StackOverflow-Antworten als die besten verfügbaren Programme für diesen Zweck hervorgehoben wurden).

+0

ich etwas über diese Programme nicht kennen, aber möchten Sie vielleicht in doxygen suchen, die freie Software und kann an Ihre Bedürfnisse anzupassen, ist es eine einfache [Beispiel hier] (http://stackoverflow.com/questions/9484879/graphviz-doxygen-to-generate-UML-Klassendiagramme). –

Antwort

12

Diese Antwort bezieht sich auf EA.

Sie können einzelne Dateien oder ganze Verzeichnisse rekursiv oder nicht importieren. Der Verzeichnis-Import ist bei weitem der häufigste Fall; Beim Import einzelner Dateien können Sie kein Diagramm automatisch erstellen.

Wenn Sie ein Quellverzeichnis importieren, haben Sie die Möglichkeit, Diagramme für jedes UML-Paket oder gar keine Diagramme zu erstellen. Sie entscheiden auch, ob Sie Pakete für jedes Quellcodeverzeichnis, Namespace (Standard) oder Datei erstellen.

Wenn Ihr Code nur aus 20 Klassen besteht, dann befinden sie sich wahrscheinlich in einem einzigen Verzeichnis und/oder Namespace. Verwenden Sie diese Option (Paketstruktur im Dialogfeld "Importquelle"), um die richtige Anzahl an Diagrammen zu erhalten.

Im selben Dialogfeld gibt es eine Schaltfläche "Neue Diagrammoptionen", die einen weiteren Konfigurationsdialog öffnet, in dem Sie auswählen können, ob die Diagramme die Attribute und/oder Operationen der Klassen enthalten sollen. Sie können die Entscheidung auch auf Sichtbasis treffen, z. B. nur öffentliche Mitglieder anzeigen.

Dieser Dialog beeinflusst nur, was in den Diagrammen angezeigt wird, wenn sie erstellt werden. Die Mitglieder werden immer noch importiert, nur nicht angezeigt. Das klingt nach dem, wonach du suchst.

Sie können die Anzeigeoptionen für jedes Diagramm ändern, indem Sie auf einen leeren Bereich doppelklicken oder indem Sie mit der rechten Maustaste klicken und Eigenschaften auswählen. Es hört sich so an, als ob du dich in diesen Dialog eingemischt und etwas verändert hast, aber ich kann nicht genau sagen was. Die Situation, die du beschreibst, wo du die Anzeige nicht so zurückbekommst wie sie war, ist keine, die ich jemals in EA gesehen habe.

Es ist auch möglich, Anzeigeoptionen pro Klasse auszuwählen, indem Sie im Diagramm mit der rechten Maustaste darauf klicken und Feature Sichtbarkeit auswählen. Ich empfehle Ihnen nicht, dass Sie dies in reverse-engineerten Diagrammen verwenden, ich erwähne es nur der Vollständigkeit halber.

Das Layout, das Sie beschreiben, mit allen Klassen in einer bedeutungslosen Diagonale, deutet darauf hin, dass das Diagramm nach der Erstellung nicht richtig angelegt wird. Die Diagrammerstellung ist ein zweistufiger Prozess. Zuerst werden alle Klassen darauf gelegt, dann wird das Layout angewendet.

Dies ist seltsam, da EA automatisch generierte Diagramme ausgibt und ich konnte keine Option finden, mit der Sie dieses Verhalten abwählen können. Wenn dies weiterhin auftritt, senden Sie einen Fehlerbericht an Sparx Systems. Sie können das Diagramm immer anordnen, indem Sie es öffnen und Layoutdiagramm im Diagrammmenü der obersten Ebene auswählen.

Wenn Ihre Klassen schließlich unter den verschiedenen Paketen und Namespaces verteilt sind, sodass EA mehrere Diagramme für sie generiert, müssen Sie sie manuell zusammenführen. Öffnen Sie dazu beide Diagramme, wählen Sie alle (Strg-A) in einem, kopieren (Strg-C) und einfügen (Strg-V) in den anderen, und fragen Sie EA erneut zum Layout-Diagramm.

So:

  1. Rechtsklick auf ein leeres Paket im Projekt-Browser, wählen Sie Code Engineering - Import Quellverzeichnis.
  2. Wählen Sie im Dialogfeld das Stammverzeichnis und den Quelltyp aus.
  3. Aktivieren Sie "Logisches Diagramm für jedes Paket erstellen" und wählen Sie die Paketstruktur aus, die am besten zu Ihrer Quellstruktur passt.
  4. Klicken Sie auf "Neue Diagrammoptionen" und deaktivieren Sie im neuen Dialog "Show Attribute", "Show Operations" und "Property Methoden anzeigen", falls zutreffend.
  5. OK beide Dialoge.
  6. Wenn mehrere Diagramme erstellt wurden, kopieren Sie alle Klassen in ein einzelnes Diagramm.
  7. Wenn das Layout schlecht aussieht, wählen Sie Diagramm - Layout-Diagramm.

Hoffe, das hilft.