Synchronisierung von Modellen und Quelltext

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Einführende Modellierungskonzepte

Synchronisierungsarten

Die Modellierung stellt verschiedene Synchronisierungsarten für unterschiedliche Typen von Modellierungsprojekten zur Verfügung:

  • Designprojekte
In einem Designprojekt kann eine Synchronisierung zwischen der Modellhierarchie in der Modellansicht und allen Diagrammtypen in der Diagrammansicht durchgeführt werden.
  • Implementierungsprojekte
In einem Implementierungsprojekt kann eine dauerhafte Synchronisierung zwischen den verschiedenen Repräsentationen eines Implementierungs-Modellierungsprojekts durchgeführt werden:
  • Modellansicht - Hierarchie aller Elemente in dem Modellierungsprojekt.
  • Diagrammansicht - Modelldiagramme. Klassendiagramme werden mit dem Quellcode synchronisiert.
  • Quellcode - Delphi-Quellcode von Klassen, Schnittstellen und anderen Programmierstrukturen in Implementierungsprojekten.
Für andere Diagramme als Klassendiagramme kann nur eine Synchronisierung zwischen der Modellhierarchie in der Modellansicht und allen Diagrammtypen in der Diagrammansicht durchgeführt werden (wie für Designprojekte).


Synchronisierung zwischen Modellierungsansichten

Die Modellierung verwaltet Modelle mit verschiedenen Ansichtsfunktionen der IDE. Die Hauptansichten sind die Modellansicht, die Diagrammansicht und der Objektinspektor. Diese Ansichten arbeiten in der Modellierung eng zusammen. Wenn Sie Änderungen von Modellelementen in einer dieser Ansichten implementieren, synchronisiert die Modellierung sofort die anderen Ansichten dementsprechend:

  • Modellansicht
Die Modellansicht zeigt die logische Struktur eines Projekts in hierarchisch gegliederter Form und hebt sich dadurch von der auf Dateien beschränkten Darstellungsform der Projektverwaltung ab. Jedes Projekt in einer Projektgruppe wird in der Modellansicht als Knoten der obersten Ebene angezeigt. In den einzelnen Knoten der Projektstruktur sind die Knoten der UML-Packages verschachtelt. Ein UML-Package kann erweitert werden, um die darin deklarierten Typen (Klassen, Schnittstellen usw.) und Diagramme einzublenden.
  • Diagrammansicht
Die Modellierung zeigt in der Diagrammansicht die in einem Modell definierten Diagramme (einschließlich Klassendiagramme) an. Doppelklicken Sie in der Modellansicht auf einen Diagrammknoten - das Diagramm wird in der Diagrammansicht geöffnet.
  • Objektinspektor
Die Modellierung zeigt im Objektinspektor die Eigenschaften eines in der Modellansicht oder der Diagrammansicht ausgewählten Modellelements an.


Synchronisierung zwischen Quellcode und UML-Modellen

Die Echtzeit-Synchronisierung in einem Implementierungsprojekt zwischen dem UML-Modell und dem Delphi-Quellcode dieses Projekts ist die Schlüsselfunktion der Modellierung.

Die Quellcode-Synchronisierung der Modellierung bezieht sich auf:

  • Quellcode-Visualisierung
Der Delphi-Quelltext wird analysiert, die darin enthaltenen Deklarationen in die UML-Notation umgesetzt und dann diese Umsetzung in einer grafischen Ansicht dargestellt.
  • Quelltexterzeugung
Hierbei wird der Delphi-Quellcode aus Ihrem grafischen Modell erzeugt.

Die Modellierung wandelt bestimmte Quelltext-Konstrukte (zum Beispiel Klassendeklarationen und Schnittstellen-Implementierungen) in ihre UML-Gegenstücke um, die dann in Klassendiagrammen in der Diagrammansicht und in der Modellierungshierarchie in der Modellansicht angezeigt werden. Die Quellcode-Synchronisierung präsentiert eine grafische Ansicht (die Modellhierarchie und Klassendiagramme) des Quellcodes, und diese Modellhierarchie und die Klassendiagramme spiegeln den Quellcode direkt wider.

Die Quellcode-Synchronisierung bezieht sich auf die folgenden Modellierungsfunktionen:

  • Wenn die Modellierungsunterstützung für ein Delphi-Projekt aktiviert ist, analysiert das Modellierungstool den vorhandenen Quellcode des Delphi-Projekts und konvertiert diesen durch Erzeugen der entsprechenden Modellierungsentitäten in das Implementierungsprojekt. Die erzeugten Modellierungsentitäten enthalten die Modellhierarchie (Modellansicht) und die Klassendiagramme (Diagrammansicht).
  • Beim Ändern des Delphi-Quellcodes im Quelltext-Editor aktualisiert das Modellierungstool automatisch die entsprechenden Klassendiagramme in der Diagrammansicht und die betreffenden Elemente der Modellhierarchie in der Modellansicht. Das Diagramm und die Modellhierarchie sind also "live", in dem Sinne, dass sie immer den aktuellen Zustand des Quellcodes widerspiegeln.
ACHTUNG! Beachten Sie bitte, dass einige direkte Änderungen am Delphi-Quellcode im Quelltext-Editor, wie z.B. das Umbenennen einer Klasse, vom Modellierungstool nicht korrekt nachverfolgt werden können. Verwenden Sie für diesen Zweck die entsprechende Modellierung - Refactoring-Operation.
  • Das Modellierungstool ermöglicht auch, Anwendungen auf der Diagrammoberfläche zu entwerfen.
Das Modellierungstool fügt in der Modellhierarchie oder den Klassendiagrammen implementierte Änderungen in den vorhanden Delphi-Quellcode ein:
  • Beim Erstellen eines neuen oder beim Ändern eines vorhandenen Klassendiagramms wird der entsprechende Delphi-Quellcode aktualisiert und mit dem Klassendiagramm synchronisiert.
  • Sie können Änderungen direkt in der Diagrammansicht im Klassendiagramm oder in der Modellansicht in der Modellhierarchie vornehmen, und das Modellierungstool gibt diese Änderungen sofort im Delphi-Quellcode wieder.
Wenn Sie in der Diagrammoberfläche einen Namen ändern, einen Member hinzufügen, eine Beziehung erstellen oder ein Pattern anwenden, wird der zugehörige Quelltext entsprechend geändert.


Klassendiagramme

Klassendiagramme sind UML-Diagramme mit statischer Struktur. Die strukturelle Ansicht eines Projekts konzentriert sich auf UML-Packages, Datentypen, wie Klassen und Schnittstellen, sowie deren Attribute, Eigenschaften und Operationen. Klassendiagramme zeigen auch grafisch die Beziehungen an, die zwischen diesen Entitäten bestehen. Das heißt, dass Klassendiagramme die logischen Beziehungen (in der UML-Terminologie als statische Struktur bezeichnet) der Klassen, Schnittstellen und anderer in einem Projekt definierten Typen zeigen.

Das Modellierungstool synchronisiert sofort alle Änderungen zwischen Elementen von Klassendiagrammen, entsprechenden Elementen der Modellhierarche und dem zugehörigen Delphi-Quellcode.

Vererbung und Schnittstellen-Implementierung

Mit Generalisierung wird in der UML-Terminologie die Beziehung bezeichnet, die entsteht, wenn eine Klasse von einer Oberklasse erbt. Ermittelt das Modellierungstool eine Vererbungsbeziehung im Quelltext, erstellt sie in der Modellansicht eine Generalisierungsbeziehung im Knoten der untergeordneten Klasse. Im Klassendiagramm in der Diagrammansicht wird die Generalisierungsbeziehung in der Standard-UML-Notation mit einer einfachen Linie plus einem Pfeil dargestellt, der von der untergeordneten Klasse ausgeht und auf die Oberklasse zeigt.

Mit Schnittstellen-Implementierung wird in der UML-Terminologie eine Implementierung einer Schnittstelle durch eine Klasse bezeichnet. Ähnlich wie bei der Vererbung erstellt das Modellierungstool eine Implementierungsbeziehung, wenn sie eine Klassendeklaration ermittelt, die eine Schnittstelle implementiert. In der Modellansicht erscheint die Implementierungsbeziehung im Knoten der Klasse, die die Schnittstelle implementiert. Im Klassendiagramm wird die Implementierungsbeziehung als gepunktete Linie dargestellt, die von der Klasse ausgeht und auf die Schnittstelle zeigt. Für jede von der Klasse implementierte Schnittstelle ist eine derartige Implementierungsbeziehung vorhanden.

Assoziationen

In UML ist eine Assoziation eine Navigationsbeziehung, die erzeugt wird, wenn eine Klasse eine Referenz auf eine andere Klasse enthält (z.B. als Attribut oder Eigenschaft). Das Modellierungstool erstellt in einem Klassendiagramm eine Assoziationsbeziehung, wenn eine Klasse ein Attribut oder eine Eigenschaft enthält, die kein primitiver Datentyp ist. Im Klassendiagramm wird eine Assoziationsbeziehung als einfache Linie zwischen der Klasse, die den nicht-primitiven Member enthält, und dem Datentyp (Klasse) dieses Members dargestellt.

Klassen-Member: Attribute, Methoden, Eigenschaften und verschachtelte Typen

Das Modellierungstool kann auch Deklarationen von Klassen- und Schnittstellen-Membern ihren UML-Äquivalenten zuordnen. Innerhalb der Elemente in Klassendiagrammen in der Diagrammansicht werden Member in verschiedene Abschnitte unterteilt:

  • Felder - Enthalten Felddeklarationen. Der Typ und die optionale Standardwertzuweisung werden im Diagramm angezeigt.
  • Methoden - Enthalten Methodendeklarationen. Sichtbarkeit, Gültigkeitsbereich und Rückgabewert werden im Diagramm angezeigt.
  • Eigenschaften - Enthalten Delphi-Eigenschaftsdeklarationen. Die Typen der Eigenschaften werden angezeigt.
  • Klassen - Enthalten verschachtelte Klassendeklarationen.
Sie können in Abschnitten, wie z.B. Schnittstellen, verwendet werden. Die verfügbaren Typen dieser Abschnitte hängen vom Typ des Modellierungsprojekts ab (Designprojekte, Delphi-Implementierungsprojekte).

Die UML-Deklarationen von Attributen, Methoden und Eigenschaften werden in der Standard-UML-Syntax angezeigt. Jede der vier Kategorien kann unabhängig von den anderen ein- und ausgeblendet werden.

Synchronisieren von als Dokumentationskommentare implementierten Eigenschaften

Bestimmte Eigenschaften, die Sie im Objektinspektor für Modellelemente und Member festlegen, werden im Quelltext als sprachspezifische Dokumentationskommentare dargestellt. Dies gilt für Eigenschaften wie: Author, Since, Version, Stereotype, Associates usw.

Wenn Sie beispielsweise definieren, dass die Eigenschaft Author den Wert Embarcadero hat, dann erzeugt das Modellierungstool im Delphi-Quellcode den folgenden Dokumentationskommentar:

 /// <author>Embarcadero</author> 

Wenn solche Kommentare im Quellcode vorhanden sind, werden sie in die entsprechenden Eigenschaften der Modellelemente (per Reverse Engineering) rückentwickelt.

Explizite Synchronisierungsbefehle

Mit den folgenden Befehlen können Sie die Synchronisierung explizit ausführen:

  • Modellansicht - Sie können:
  • Mit dem Befehl Neu laden das UML-Modell explizit aus dem Quellcode aktualisieren (das gesamte Modell neu laden). Dieser Befehl steht für den Stammprojektkonten von Implementierungsprojekten zur Verfügung.
  • Mit der Symbolleistenschaltfläche Modellansicht aktualisieren die Modellhierarchie aktualisieren.
  • Diagrammansicht - Sie können mit dem Befehl Aktualisieren (oder mit F5) das Diagramm aktualisieren.


Siehe auch