Principles of Sirius
Sirius is based on a runtime that provides Eclipse editors for models managed with EMF (Eclipse Modeling Framework).
The screenshot below shows a modeling workbench for EMF models based on a DSL (Domain Specific Language) dedicated to the specification of composite processors.
This DSL, uses the notions of System, Power Input and Output, Processor, Fan, etc to describe the assembly of processors and data sources. It is defined by an Ecore model.
The Sirius runtime uses a description of the modeling workbench which defines the complete structure of the viewpoints, the corresponding model editors, their behavior and all the edition and navigation tools. This description can be seen as a mapping between the DSL concepts (the elements defined by the Ecore model) and the graphical workbench (the diagrams, the tables, the tools, etc).
The definition of a Sirius modeling workbench
The workbench description is loosely connected to the structure of the model thanks to the queries. They are able to define the diagram content even in a way that does not match the model structure. As long as an EMF model is in memory, being a UML model or a DSL done with Xtext, the runtime operates the same.
With Sirius, a diagram is defined by nodes or containers corresponding to Ecore classes and queries which retrieves the instances to display.
For each node, the creator of the modeling workbench has to define its graphical style (shape, color, label, etc).
The diagram also specifies the edges between nodes and containers. Each edge definition contains queries to identify the source and the target objects.
Like nodes and containers, the edge also defines a graphical style (color, thickness, line style, form of ends, etc).
In addition to the model editors, Sirius provides the notion of «Modeling Project», an integration with the Project Explore. It handles the synchronization of workspace resources, and in-memory instances. It also manages the sharing of command stacks and editing domains across editors.
When supporting specific use cases and requirements, there is always a need for customization. Sirius is extensible in many ways, notably by providing new kinds of representations, new query languages and by being able to call Java code to interact with Eclipse or any other system. Extensibility is achieved through the use of extension points and, when needed, by reusing existing APIs available in the underlying components (e.g. using the GMF runtime extension points to adapt a graphical modeler).
Sirius is making heavy use of many Eclipse Modeling projects, notably:
- EMF Core as the basics for every model access and introspection, but also EMF Transaction and Validation.
- GMF runtime and GMF notation as the basis of the dynamic graphical modeling capability.
- Acceleo and MDT-OCL as the foundation of the query languages used to define the mapping between the models and the representations.
- EEF (Extended Editing Framework), in order to provide rich properties editing.
Sirius can also be integrated with Xtext to provide complementary textual editors. With Xtext, models are loaded and saved using their textual syntax, enabling concurrent use of diagram, table and textual editors.