CompoHenshin is a transformation language and tool suite for the transformation of CompoEMF Composite Models. It is an extension of the Henshin model transformation language. The tool suite comprises a graphical editor and an interpreter kernel.
Fig. 1 shows the specification of a transformation rule using the CompoHenshin rule editor. The purpose of this rule is to delete an existing export interface, thereby turning its contents from public objects that are visible to the outside world to private ones.
The complete rule is called a CMRule (composite model rule). It comprises a network rule, specifying the change on the network level, and two object rules, one for each of the two nodes contained in the network rule. The object rules specify changes on the object level.
The network rule specifies the deletion of the export node and its adjacent edge relating it to an existing body node. The object rule for the body specifies one of the contained objects, the root project node, to be preserved. The object rule for the export specifies the contained object, an exported project node, to be deleted. An additional view, called network edge specialization view, is used to specify relations between the object nodes in different network parts. In the example, this view is used to specify the deletion of an edge running between the export and the body project node.
Fig. 2 shows the use of the specialization view. This view is used to specify mappings between export objects (red) and body objects (blue). In the case of import interfaces, this can be used to specify mappings from import objects to export objects, and from import objects to body objects. The editor contains a number of echecks to ensure that the specified CMRule is well-formed. In the example, three violations of well-formedness properties are reported: The meta-model for this examples requires exported projects to be mapped to body projects, no body object to be the target of more than one mapping.
Software Engineering Work Group, Prof. Dr. Gabriele Taentzer