Marc Provost
> Home > Projects > Contact Info > Links > About me
Validate the XHTML and CSS of this page.

What is Himesis?



Himesis is a hierarchical, directed and labelled graph kernel to be used in the upcoming version of AToM3. The name Himesis has etymological roots from genesis for "origin" and mimesis for "representation" and the syllable "Hi" stands for "Hierarchical". Himesis will be the origin of the upcoming version of AToM3, as it will be used as the core of its meta-modelling framework. Also, everything in the application will be represented as a graph, hence the link with the word mimesis. The most important characteristic of Himesis is its simplicity. Himesis is minimal yet complete enough to form the basis for developing complex modelling frameworks. In addition, Himesis is very simple to use, the number of steps required to perform operations is minimal. Since Himesis will be used everywhere, the learning curve had to be quite modest. Another important aspect of Himesis is its optimization for meta-modelling. Himesis is probably not the fastest implementation for traditional graph algorithms, but it was optimized for common meta-modelling operations, such as iterating over typed elements and retrieving elements by name efficiently.

Why a new graph kernel?

In the current version of AToM3, there is confusion between concrete syntax and abstract syntax. More clearly, at its root, there is a mixture between the graphical representation and the abstract representation of models. The graphical user interface is not separated from the data it observes. This lack of modularity is not good object-oriented practice and caused the implementation to be hard to understand and manage. More fundamentally, this deficiency prevented us from modelling the tool itself. Indeed, since at its root there is graphical information, it is very hard to model it independently without breaking the whole application. Dividing the concept of Node into a concrete Node and an abstract Node would break every single model of the application. Another shortcoming of AToM3 is the absence of explicit notions of hierarchy and constraints in the kernel. Hierarchy is a vital requirement for abstraction and reuse. We believe that having the notion of hierarchy directly in the core of the meta-modelling framework will allow us to reuse existing concepts and couple them to form new formalisms. For instance, it is currently impossible to have an explicit model of a graph grammar rule because it requires hierarchy. We want, in the upcoming version, to have an explicit meta-model of a rule, which would contain a left-hand-side graph, a right-hand-side graph and a mapping graph relating them. The four-layer approach to meta-modelling has known weaknesses, such as an imprecise definition for instantiation, the impossibility to reuse meta-entities and the difficulty to pass down meta-information. In recent years, several alternatives to the four-layer approach were proposed (VPM, potency) and we would like to develop a new meta-modelling framework based on these ideas. Also, AToM3 currently implement the compiled view of meta-modelling, where an environment is compiled from a meta-model. This approach is good, because it is efficient and it constrains the user to create meanignful models. However, it would also be nice for a model to have reflective abilities by allowing it to query its meta-model for structural and semantic information. We would like to support both approaches (and anything in between) in the upcoming version.


There is now an installer for windows users. Please choose the one corresponding to your python version. For other operating systems, simply download the source and run the script "python install". You can verify the installation by running the automated unit tests: "python". There is a simple script demonstrating the most important features of Himesis located in the file "examples/mainFeatures". You can also find it here.

Release Notes
> Installer v1.2 for python 2.4
Linux and others
> Source v1.2 (zip)


Can you give me a simple example which demonstrate the main features of Himesis?
Sure, there is one located in the installation at examples/ You can also find it here.