SelfSync: A Dynamic Round-Trip Environment Engineering
Courtyard (room C)
Wednesday, 12:00, 45 minutes
Ellen Van Paesschen, Vrije Universiteit Brussel
Wolfgang De Meuter, Universite des Sciences et Technologies de Lille
Maja D'Hondt, Universite des Sciences et Technologies de Lille
Demonstration number: 18SelfSync is a Round-Trip Engineering (RTE) environment built on top of the object-oriented prototype-based language Self, that integrates a graphical drawing editor for EER diagrams. SelfSync realizes co-evolution between 'entities' in an EER diagram and Self 'implementation objects'. This is achieved by adding an extra EER 'view' to the default view on implementation objects in the model-view-controller architecture of Self?s user interface. Both views are connected and synchronized onto the level of attributes and operations. Development in SelfSync constitutes two phases, both demonstrated via the creation of a small information system. In the first active modeling phase a user draws entities in an EER diagram while corresponding Self implementation objects are automatically created. Changes to an EER entity are in fact changes to a view on one implementation object and thus automatically propagated to this object via Self's reflection mechanism and vice versa. The second phase is an interactive prototyping process. This phase allows a user to create 'population objects' from the implementation objects created in the previous phase, and initialize them. These population objects are constrained by the multiplicities and the dependencies in the EER domain model. Manipulating them in illegal ways results in automatic warnings of SelfSync. Intelligent enforcement of constraints on the population objects in a running application are a unique feature of SelfSync, as current RTE environments do not include these objects (instances in class-based languages) in the RTE process. Moreover, as opposed to the state-of-the-art in RTE engineering, SelfSync implements a live link between entities and implementation objects. Changes are first realized at the intended level and then automatically and directly propagated to the other level.