Codegenerierung beginnt bei der Modellierung
Codegeneratoren verarbeiten ein Input-Modell, transformieren dieses und generieren daraus den Output. Der Inhalt und die Struktur des Input-Modells sind daher von entscheidender Bedeutung.
Jeder der z. B. schon mal versucht hat, alle Tasks eines Projektes mit allen ihren konkreten Konfigurationsparametern in UML zu modellieren, wird vermutlich zustimmen und sagen: das ist schwierig!
Mit dem richtigen Tool kann es aber auch ganz einfach sein!
In Meta Genius kann man selbst festlegen, was man modellieren möchte. Und um diese Festlegung möglichst einfach zu gestalten, erfolgt diese mit Konstrukten, die Softwareentwickler aus ihrer täglichen Arbeit kennen. Die Festlegung erfolgt in Form von Datenstrukturen.
Damit lässt sich z. B. mit wenigen Mausklicks ein Modell erstellen, das alle Tasks und deren Konfigurationsparameter enthält:
Das Arbeiten mit Datenstrukturen ist für jeden Softwareentwickler selbstverständlich. Diese werden im einfachsten Fall als Strukturen (struct)
spezifiziert, welche in objektorientierten Programmiersprachen dann zu Klassen (class)
mit erweiterten Eigenschaften werden. Beide haben aber gemeinsam, dass sie gewisse einzelne Datenelemente spezifizieren und zu einer zusammengehörenden Einheit gruppieren.
Genau diese Art von Datenstrukturen können auch in Meta Genius spezifiziert werden. Und man legt damit die Art und Struktur der Daten fest, die man später im Modell für die Generierung erfassen will. In Meta Genius werden die Datenstrukturen als MetaClass bezeichnet, deren Datenelemente als MetaAttribute.
Die Datenstruktur, die alle zu erfassenden Eigenschaften unserer Beispiel-Tasks beschreibt, würde in Meta Genius so aussehen:
Mehrere MetaClasses zusammen ergeben dann das sogenannte MetaModel. Dieses beschreibt die Struktur aller Daten, die in einem Model erfasst werden können.
Meta Genius, MetaModel, MetaClass, Meta … was hat es mit diesem „Meta“ auf sich?