MOFLON History

In the seventies and eighties, graph grammars were an area of pure theory, experiment and beauty. Considering the available computation power in these days, one could only dream of being able to generate serious programs from visual specifications, that would be easy to understand and much more expressive than textual programming languages (cf. [Öffnet internen Link im aktuellen FensterNag79]). However, as software systems became increasingly complex, developers needed better tool support in order to increase their productivity. During the eighties and early nineties, this led to different approaches in the area of integrated software development environments, which allowed developers to create, understand, analyse and edit software more easily than before (cf. [Öffnet internen Link im aktuellen FensterES89]). At the RWTH Aachen1, it was recognized that many software engineering problems could be described formally by means of graph theory. So graph grammars turned out to be able to provide elegant solutions to a number of these problems, which were realized in the IPSEN project [Öffnet internen Link im aktuellen FensterNag96].

PROGRES was the first fully implemented environment to allow programming through graph transformations and was developed in the setting of the IPSEN project. The language syntax and semantics have been formally defined in [Öffnet internen Link im aktuellen FensterSch91] and a corresponding syntax-directed editor and analyzer have been implemented. As there did not yet exist a standard modeling language, a proprietary notation had to be invented. Later on, an interpreter and compiler were added which allowed to execute PROGRES specifications [Öffnet internen Link im aktuellen FensterZue96]. During the years, a huge amount of research was performed by the PROGRES group, and many additional concepts have been incorporated into its implementation, including a special purpose graph database called GRAS [Öffnet internen Link im aktuellen FensterKSW95], rule application strategies including backtracking, an OCL-like path expression language, a module concept based on an improved UML 1.1 package concept [Öffnet internen Link im aktuellen FensterWin00], parametric polymorphism, an incremental constraint checker with repair actions [Öffnet internen Link im aktuellen FensterMue03], etc. During this time, triple graph grammars have been invented as a declarative means to describe consistency between two related models [Öffnet internen Link im aktuellen FensterSch94], though they never made it into the PROGRES implementation2.

From a scientific point of view, PROGRES was a huge achievement and contributed a lot to the graph grammar community (cf. [Öffnet internen Link im aktuellen FensterRoz97, Öffnet internen Link im aktuellen FensterEEK99]). However, it has become more and more difficult to maintain. Lacking a widely known, standardized modeling language, it has been designed following the Programming-in-the-Large paradigm described in [Öffnet internen Link im aktuellen FensterNag90]. It is written in Modula-23, which was a well-designed, modern programming language when the PROGRES project started, but meanwhile has been displaced by more popular languages like C++ and Java. It only runs on a limited set of Sun Solaris and Linux operation systems. Besides the underlying database is a limiting factor with respect to the size of specification in terms of performance4. Consequently, it is difficult to "sell" the tool to potential users in industry and even more to attract skilled students to work on the project.

This insight led to the development of FUJABA [Öffnet internen Link im aktuellen FensterZue01]. It is a completely redesigned graph transformation environment based on Java and UML (Unified Modeling Language). Java was and still is one of the most popular programming languages with many skilled programmers available. UML has become the industry standard language for designing software systems. The aim of this project was to adopt modern, standardized technologies and restrict the environment to the essentials in order to gain simplicity and performance and convince practitioners that graph transformations are a powerful, useful and versatile means to deal with (software) engineering problems. The current stable Release 4.3 features fast in-memory instance graphs, a simplified graph transformation language called SDM (Story Driven Modeling) and Java code generation. SDM is based on a customized UML 1.4-like metamodel, which uses class diagrams as schema language, collaboration diagrams to define atomic graph transformations and activity diagrams to combine these to determine their control flow in larger transactions. Besides, the metamodel incorparates many artifacts of the Java programming language and additionally project information.

Compared to PROGRES, FUJABA abandons syntax-directed editing, backtracking, path expressions5, a module concept6 and constraint checking. With respect to the latter, it should be mentioned that the Object Constraint Language (OCL) had already been defined on top of UML 1.x, but has not been supported by Fujaba. Nevertheless, FUJABA became very popular and grew a considerable community of research groups that use FUJABA and contribute to it. Since 2003, the community meets regularly during the annual FUJABA Days and twice a year during the FUJABA Developer Days. As a technical consequence, Fujaba has been provided with a plugin mechanism since Release 4.0, which allows contributors to extend FUJABA with individual features based on the fixed core meta model. Starting from Release 5.0, plugins may introduce their own meta models, as long as they are mapped to the newly defined interface required by the graph transformation engine. In the long run, FUJABA will probably evolve towards a feature for the widely adopted Eclipse platform.

Meanwhile, the industrial standardization efforts have continued and resulted in a number of new standards and modeling concepts not yet covered by the approaches described before: UML 1.x used to be defined by itself as a monolithic specification. Later on, it was suggested to separate modeling languages (like UML) to model systems and metamodeling languages to model modeling languages. Therefore, a new language called MOF (Meta Object Facility) has been introduced to specify UML 1.x. In the setting of the NetBeans project, SUN as the provider of the widely-used Java language introduced a standard mapping of MOF 1.4 to Java code called JMI (Java Metadata Interface). The upcoming Model Driven Architecture® (MDA®) initiative also resulted in another language to specify not only static models, but also model analysis, transformation and integration: QVT (Query View Transformation).

The UML 2.0 Superstructure specification has been defined in MOF 2.0 by means of an intricate hierarchy of subspecifications. Thereby, recently introduced association and package refinement features are heavily used. They allow to define a family of models in a modular way and to reuse common subspecifications in different models. For instance, both the UML 2.0 Superstructure and the MOF 2.0 (Meta Object Facility) specification are built upon the UML 2.0 Infrastructure Specification. However there still is no official mapping of MOF 2.0 to Java, though it is quite different from MOF 1.4 and has to deal not only with the new association and package refinement features mentioned before, but also has to support a completely revised association concept introduced in UML 2.0.

Obviously, someone had to investigate the impact of these developments on graph transformations. This was the starting point of the MOFLON project in late 2002. The vision was to create a meta modeling and graph transformation environment, which would be as close to the MOF 2.0, JMI, OCL 2.0 and QVT standards as possible and at the same time would integrate state-of-the-art graph transformation techniques in a consistent way [Öffnet internen Link im aktuellen FensterAKRS03]. On the one hand, the goal was to evaluate the correctness, completeness and usefulness of the new UML 2.0 specification and its implications on graph transformations, on the other hand MOFLON should provide a complete toolset to create reusable specifications to build domain-specific CASE tools for the purpose of model analysis, transformation and integration.

However, this vision was quite ambitious for a small and young research group like us. Building the whole prototype from scratch would have been plain crazy and probably not brought us where we are today. Fortunately, there has been some preparatory work in place: In the context of the MOMoC project during the years before, some work had already been performed to generate not only JMI interfaces, but complete in-memory repositories from MOF 1.4 models [Öffnet internen Link im aktuellen FensterBic04]. The DresdenOCL project had produced an analyzer and code generator for OCL 1.x and was ready to migrate it to the latest OCL 2.0 standard. Finally, FUJABA provided a Java-based graph transformation engine for UML specifications and a plugin mechanism to extend it. Consequently, we decided to build MOFLON on top of FUJABA7. A feasibility study showed that it was possible to modify the Fujaba core so that graph transformations would work with a MOF 2.0 graph schema [Öffnet internen Link im aktuellen FensterRoe04]. The proof of concept has been released as MOFLON 0.9 on top of a modified version of Fujaba 4.

The following work packages had to be performed to create MOFLON on top of these prerequisites:

  • Refactor FUJABA so that graph transformations work on an abstract meta model interface, which may be implemented by plugins (completed).
  • Write an adapter layer to map MOF 2.0 on the internal FUJABA metamodel (completed).
  • Analyse the semantics of MOF 2.0 and repair inconsistencies and errors (completed).
  • Extend MOMoC to generate JMI interfaces and implementations for MOF 2.0 (completed).
  • Generate JMI code for the MOF 2.0 metamodel using MOMoC (completed).
  • Implement a MOF 2.0 compliant schema editor for FUJABA (completed).
  • Implement an import facility for Rational Rose specifications (completed).
  • Implement a JMI code generator backend for FUJABA graph transformations (completed).
  • Bootstrap MOFLON to generate JMI code for its own MOF 2.0 editor (completed).
  • Integrate the DresdenOCL Toolkit with MOFLON (active).
  • Create constraint analyser for MOFLON specifications based on OCL constraints (planned).
  • Implement a QVT-compliant TGG-editor (active).
  • Implement a TGG compiler (active).

MOFLON has been presented to the public on the ECMDA 2006 conference [Öffnet internen Link im aktuellen FensterAKRS06] and the GRABATS 2006 workshop [Öffnet internen Link im aktuellen FensterAR06]. MOFLON 1.0 has been released in December 2006 and provides nearly complete MOF 2.0 support for the official Fujaba 5.0 release.

Literature

[AKRS03] Carsten Amelunxen, Alexander Königs, Tobias Rötschke, Andy Schürr. Adapting FUJABA for Building a Meta Modelling Framework. Proc. 1st Fujaba Days, pp. 29-34, 2003. Technical Report tr-ri-04-247 (University Paderborn).
[AKRS06] Carsten Amelunxen, Alexander Königs, Tobias Rötschke, Andy Schürr. MOFLON: A Standard-Compliant Metamodeling Framework with Graph Transformations. In Arend Rensink, Jos Warmer (eds.): Model Driven Architecture - Foundations and Applications: Second European Conference, Lecture Notes in Computer Science, Vol. 4066, pp. 361-375, Springer, 2006.
[AR06] Carsten Amelunxen, Tobias Rötschke. Creating Well-Structured Specifications in MOFLON. In Albert Zündorf, Daniel Varro (eds.): Proc. 3rd Int. Workshop on Graph Based Tools, 2006.
[BHW05] Simon M. Becker, Thomas Haase, Bernhard Westfechtel. Model-Based A-Posteriori Integration of Engineering Tools for Incremental Development Processes. Software and Systems Modeling Vol. 4, No. 2, pp. 123-140, Springer, 2005.
[Bic04] Lutz Bichler. Codegenerierung für MOF-basierte Modellierungssprachen. Universität der Bundeswehr München, 2004. Dissertation in German (Universität der Bundeswehr München).
[Boe06] Boris Böhlen. Eine parametrisierbare Graph-Datenbank für Entwicklungswerkzeuge. Shaker-Verlag, 2006. Dissertation in German (RWTH Aachen).
[EEK99] Hartmut Ehrig, Gregor Engels, Hans J. Kreowski (eds.). Handbook of Graph Grammars and Computing by Graph Transformation: Volume II - Applications, Languages and Tools. World Scientific Publishing, 1999.
[ES89] Gregors Engels, Wilhelm Schäfer. Programmentwicklungsumgebungen: Konzepte und Realisierung. Teubner-Verlag, 1989.
[KSW95] Norbert Kiesel, Andy Schürr, Bernhard Westfechtel: GRAS: A Graph-Oriented (Software) Engineering  Database System. Information Systems. Vol. 20, No. 1, Pergamon Press, pp. 21-52, 1995.
[Mue03] Manfred Münch. Generic Modeling with Graph Rewriting Systems. Shaker Verlag, 2003. Dissertation (RWTH Aachen).
[Nag79] Manfred Nagl. Graphgrammatiken: Theorie, Anwendungen, Implementierung, Vieweg Verlag, 1979.
[Nag90] Manfred Nagl. Softwaretechnik: Methodisches Programmieren im Großen. Springer Verlag, Berlin, 1990.
[Nag96] Manfred Nagl (ed.). Building Thightly Integrated Software Development Environments: The IPSEN Approach. Lecture Notes in Computer Science, Vol. 1170, Springer, Berlin, 1996.
[Roe04] Tobias Rötschke. Adding Pluggable Meta Models to FUJABA. In Holger Giese, Andy Schürr, Albert Zündorf (eds.): Proc. 2nd International Fujaba Days, pp. 57-61, 2004. Technical Report tr-ri-05-529 (Universität Paderborn).
[Roz97] Grzegorz Rozenberg (ed.). Handbook of Graph Grammars and Computing By Graph Transformation: Volume I - Foundations. World Scientific Publishing, 1997.
[Sch91] Andy Schürr. Operationales Spefizieren mit programmierten Graphersetzungssystemen. Deutscher Universitätsverlag, 1991. Dissertation in German (RWTH Aachen).
[Sch94] Andy Schürr. Specification of Graph Translators with Triple Graph Grammars. In G. Tinhofer (ed.): Proc. 20 Int. Workshop on Graph-Theoretic Concepts in Computer Science, Lecture Notes in Computer Science Vol. 903,  Springer, pp. 151-163, 1994.
[Win00] Andreas J. Winter. Visuelles Programmieren mit Graphtransformationen. Aachener Beiträge zur Informatik, Vol. 27, Wissenschaftsverlag Mainz in Aachen, 2000. Dissertation in German (RWTH Aachen).
[Zue96] Albert Zündorf. Eine Entwicklungsumgebung für Programmierte Graphersetzungssysteme - Spezifikation, Implementierung und Verwendung. Vieweg Verlag, 1996. Dissertation in German (RWTH Aachen).
[Zue01] Albert Zündorf. Rigorous Object Oriented Software Development. Universität Paderborn. 2001. Habilitation Thesis.

Footnotes

  1. The group of Prof. Nagl actually started in Osnabrück and continued their research at the RWTH Aachen from 1986 on.
  2. However, a solution that generates operational PROGRES rules from external TGG specifications for the IMPROVE project [Öffnet internen Link im aktuellen FensterBHW05] has been developed.
  3. Nowadays, PROGRES is built using a MODULA-3 compiler due to licensing issues, but has never been fully migrated.
  4. To a certain extent, this issue has been addressed by the DRAGOS project, which provides PROGRES with an in-memory database [Öffnet internen Link im aktuellen FensterBoe06].
  5. Since Release 4, FUJABA provides a rudimentary path expression language which is neither formally integrated into the SDM language nor otherwise documented.
  6. Instead of a module concept, FUJABA supports not very well elobarated views to manage the complexity of larger diagrams. However, the complete still diagram needs to exist in the specification.
  7. The technological gap between the aging PROGRES and our goals appeared to be far too big to consider PROGRES as a real alternative for FUJABA. However, a lot of PROGRES-spirit lives in our minds, so it would be okay to think of MOFLON as something like (PROGRES)2.5.