Sequenzdiagramm: Rose & C++

Hallo

ich habe fünf Klassen, zu deren Ablauf ich gerne ein Sequenzdiagramm haben möchte. Auf meinem Arbeitsrechner ist Rational Rose installiert. Ich schaffe es auch, das VC6 Projekt zu importieren, bin aber überhaupt nicht in der Lage ein Sequenzdiagramm zu erzeugen…

Geht das mit Rose ? Wenn ja, wie ?

Gibt es vielleicht noch ein anderes Tool, das mir Sequenzdiagramme aus bestehenden C+±Klassen erzeugen kann ?

Vielen Dank
Lars

Hallo

ich habe fünf Klassen, zu deren Ablauf ich gerne ein
Sequenzdiagramm haben möchte. Auf meinem Arbeitsrechner ist
Rational Rose installiert. Ich schaffe es auch, das VC6
Projekt zu importieren, bin aber überhaupt nicht in der Lage
ein Sequenzdiagramm zu erzeugen…

Geht das mit Rose ? Wenn ja, wie ?

Gibt es vielleicht noch ein anderes Tool, das mir
Sequenzdiagramme aus bestehenden C+±Klassen erzeugen kann ?

Ich arbeite mit Together, das ist ein Konkurrenz-Produkt zu Rose, und glaube dass es für C++ kein Tool gibt, mit dem man diese Aufgabe halbwegs vernünftig reverse-engineeren kann.
In C++ gibt es viele Möglichkeiten Funktionen aufzurufen, angefangen von Pointer über Referenzen bis hin zu ThirdParty (boost!?) SmartPointern, Callback-Templates usw. Ein Analyse-Tool wird kaum in der Lage sein, alle diese Aufrufe korrekt aufzulösen.
Ein weiteres Problem ist, was dieses Tool alles auflösen kann. Angenommes du hast das perfekte Tool, dann wird es dir jeden noch so kleinen Aufruf auflösen. Damit enthälst du ein beliebig komplexes Sequence-Diagramm. Stell dir vor du gibt an irgendeiner Stelle debug Meldungen via std::cout aus, dann würde dir dieses Tool die halbe Standard-Bibliothek in das Sequenzdiagramm aufnehmen. Woher soll das Tool auch wissen, wie detailliert es arbeiten soll.

In der Praxis scheint es mir eher sinnvoll, das Diagramm umgekehrt zu nutzen: du modellierst die wichtigen Aufrufe, in der Implementierung kommen dann die Peanuts (traces,debug-Ausgaben, initialisierungen, usw) hinzu.

Falls jemand hier andere Erfahrungen gemacht hat, würde mich das sehr interessieren.

Gruß Markus

Hi ho,

wer UML für Reverse Engineering nutzt, der hat den Sinn der UML schlicht nicht begriffen. Zuerst wird die Software geplant, und dann entwickelt, nicht anders herum.

Nebenbei bemerkt war ich mal auf einer UML Schulung auf der der Dozent bemerkt hat, sollte der Brötchengeber ein Reverse Engineering mit UML verlangen (oder einfach nur die UML Dokumentation der Software aus dem Code generiert werden), dann sollte man sich einen Jobwechsel überlegen. Bei solchen Aktionen rennt man in Probleme, die mit Softwareentwicklung nichts zu tun haben.

Just my 2 cent,

Herb

Hi ho,

wer UML für Reverse Engineering nutzt, der hat den Sinn der
UML schlicht nicht begriffen. Zuerst wird die Software
geplant, und dann entwickelt, nicht anders herum.

Hi,

dazu muss ich sagen, dass ich von meinem Brötchengeber Dritt-Code bekommen habe, der sehr mies dokumentiert ist und weitere wirklich unangenehme Dinge beinhaltet (z.B. sieben Klassen in einer cpp, viele private Klassen, viele Friend-Deklarationen, …)

Um diesen Code zu analysieren, bevor ein Refactoring erfolgen könnte/sollte, wollte ich ihn durch Rose „durchleiern“ und mir das Leben vereinfachen…

Schönen Sonntag,
Lars

dazu muss ich sagen, dass ich von meinem Brötchengeber
Dritt-Code bekommen habe, der sehr mies dokumentiert ist und
weitere wirklich unangenehme Dinge beinhaltet (z.B. sieben
Klassen in einer cpp, viele private Klassen, viele
Friend-Deklarationen, …)

Um diesen Code zu analysieren, bevor ein Refactoring erfolgen
könnte/sollte, wollte ich ihn durch Rose „durchleiern“ und mir
das Leben vereinfachen…

Mit Rose habe ich keine Erfahrung. Together würde die Sourcen einmal analysieren und dir ein riesigen Klassendiagramm erstellen. Vererbung ist hier bereits enthalten, teilweise sogar Assoziationen.
Dann würde man sich eine Klasse picken und zusammenhängende Klassen finden und sie in einen kleineren Diagramm übersichtlich darstellen. Dann kommt irgendwann der Zeitpunkt, an dem du manuall die Sequenzdiagramme reverse engineerst.
Das geht mit diesen Tool sehr gut, allerdings darf man nicht die Erwartung haben, dass die Software das miteinem einzelnen Knopfdruck erledigt.
Hilfreich in so einem Tools sind Class-Browser, Methodensuche (wo aufgerufen?) usw., das ist effektiver als die Volltextsuche mit einem Texteditor.

Gruß Markus