Modelgetriebenene Softwarenetwicklung erstellt Definitionen von Modellen und generiert die Implementation. Ändert man nachträglich die Definition, müssen die Implementation auf diesen neuen Stand gebracht werden.
Darwin unter den Modellen? Wieso Evolution?
Entwickelt man ein Model (und seine Implementation) in EMF, erstellt man in einem ersten Schritt die Definition dieses Models (Model der Daten, Meta-model). Aus diesem Model generiert man die Java Implementation (und passt diese möglicherweise von Hand an). Die persistierte Form dieses Models erstellt man (mehr oder weniger automatisch) über Frameworks, welche einen spezifischen Zustand dieses Models in Files (plain EMF) oder Datenbanken (Teneo oder CDO) zur Laufzeit festhält.
Ändert sich die Definition des Models nachträglich – beispielsweise indem man zusätzliche Attribute hinzufügt – stimmt die persistierte Instanz nicht mehr mit der statischen (Typen-)Definition überein. Nun müssen die persistierten Daten wieder so weit gebracht werden, dass sie mit der neuen Version des Models übereinstimmen.
Dieser Problematik widmet sich das Thema Model Evolution. Die Evolution von Modellen ist bei EMF seit längerem in Diskussion, der Konsens aber noch nicht gefunden. Ohne Frameworks löst man diese Evolution mit manuell geschriebenem Code. Diese Converter überführen die Daten der alten Version in die neue Struktur.
Eclipse Edapt, eine Lösung für Model Evolution
Auf der Eclipse Platform wurde nun endlich ein Framework vorgeschlagen, das diese Model Evolution deklarativ lösen will. Über dieses Proposal, das Projekt Edapt, wird heute entschieden und Edapt damit gegebenenfalls zum Eclipse Projekt erhoben.
Edapt unterstützt 2 Vorgehen:
- operation based: The developer modifies the Ecore model using predefined operations which encapsulate the adaptation of the Ecore model as well as the
migration of the instances. Soviel ich weiss, entspricht dieses Vorgehen dem Ansatz, der in Rails Migrations realisiert ist.
- difference based: Compares two versions of an Ecore model, and evaluates the differences using EMF Compare.
Im Rahmen von CDO ist Model Evolution seit langem in der Diskussion. Wir erwarten, dass Edapt auch in CDO seinen Platz einnehmen wird. Etap basiert auf dem Framework COPE und wird dieses weiterentwickeln. Eike Stepper, Lead von CDO, ist mit an Board und wird die Anfoderungen von CDO einbringen.
Für Fragen und Anregungen stehe ich selbstverständlich gerne zur Verfügung.