Sirius es un proyecto Eclipse que nos permite crear fácilmente DSLs, definiendo nuestro propio entorno de trabajo, para resolver problemas específicos, mediante el uso de las tecnologías proporcionadas por las tecnologías de Eclipse Modeling y los conocimientos que sostienen la implementación de los lenguajes gráficos específicos de dominio.
Pretende ser una solución simple, madura y completa de capacidades. Partiendo de un modelo nos permite crear una representación del mismo a partir de la creación de una representación en Sirius a modo de diagrama, tabla o árbol. Cada particularización de estas representaciones se llaman viewpoints y están apoyadas en el estándar ISO/IEC-42010 donde se especifica que la misma información puede ser representada de manera sincronizada en diagramas, tablas y editores en modo árbol. Siris está construido sobre EMF y GMF. Se apoya en Eclipse Acceleo, y otros proyectos, para facilitar el establecimiento de las relaciones entre los datos del modelo y su representación gráfica.
En defintiva, el usuario puede crear, editar y visualizar los modelos y metamodelos de manera gráfica desde los viewpoints seleccionados previamente. Nos permite definir rápidamente espacios de trabajo con múltiples vistas según sean nuestras necesidades.
La evolución de Sirius se orienta a que el requisito para usar la herramienta sea tener unos conocimientos técnicos los más mínimos posibles.
Sirius proporciona diferentes características según la naturaleza del usuario de la herramienta. Se basa en una clara separación entre el entorno de creación que proporciona como framework de las preocupaciones particulares del negocio al que pretende aportar una solución.
Para especificadores / desarrolladores / arquitectos:
Para los usuarios finales de los editores gráficos creados Sirius proporciona:
Actualmente se encuentra en su versión 2.0 estando incluido en Eclipse de manera oficial.
Las mejoras incluidas en esta versión 2.0 se centran en mejorar la experiencia del uso del editor de diagramas, arreglando los problemas conocidos del comportamiento por defecto de GMF en tiempo de ejecución, incorporando capacidades últiles para los usuarios que hacen un uso intensivo de los diagramas:
En cuanto al rendimiento y escalabilidad trabajan en eliminar los cuellos de botella del sistema. En el proyecto se está trabajando en las bases de EcoreTools con un proyecto de pruebas suficientemente grande para dectectar cuellos de botella, uso de la CPU y memoria. El proyecto de pruebas está abierto a todo el que quiera usarlo para reproducir problemas y tomar medidas por sí mismo.
Se ha incluido la capacidad de poder reusar componentes sin interfaz gráfica, pudiendo cargar la representación de un recurso, crear un diagrama, modificar el modelo.. Está pensado para ser usado, por ejemplo, en la parte del servidor o en procesos de integración continua.
Podemos clasificar las capacidades de la herramienta en dos grupos principales: aquellas características propias de la creación de la herramienta de modelado (especificadores) y las propias del usuario de la herramienta de modelado (usuarios).
Sirius nos permite crear un editor gráfico sin escribir código fuente:
Como hemos comentado en los apartados anteriores Sirius se basa en el concepto de Viewpoint. Un editor gráfico creado con Sirius proporciona viewpoints/vistas adaptadas a la actividad de un usuario o a su función. Así proporciona al especificador poder ofrecer la usuario una manera sencilla de seleccionar representaciones útiles, limitadas a un conjunto de problemas particulares.
Por ejemplo, podemos ver en la siguiente imagen como UMLDesigner nos ofrece varias viewpoints a la hora de acometer los trabajos de diseño UML.
Cada viewpoint corresponde a un conjunto de representaciones que son personalizables. Sirius soporta como representaciones: diagramas, tablas, árboles y diagramas de secuencia. Los elementos de cada viewpoint se pueden compartir entre representaciones. Esto permite reducir trabajo, pudiendo reusar componentes de una vista a otra.
Las representaciones gráficas de nuestros modelos se sincronizan con el modelo EMF. Esto provoca que, cualquier cambio en el modelo, se refleja automáticamente en los elementos afectados de la representación gráfica.
Para poder manejar modelos complejos Sirius proporciona mecanismos para que podamos centrar la atención en los elementos que son de nuestro interés:
Como Sirius está basado en EMF y GMF podemos usar Java para implementar servicios complejos o reusar elementos externos.
Podemos especificar diagramas para representar gráficamente los elementos del modelo de la manera que consideremos más acertada. En cada diagrama podemos elegir los elementos a mostrar y cómo mostrarlos según su tipo o alguna de sus propiedades.
Estas características también son aplicables a la representación gráfica de las relaciones entre elementos visibles. Podemos representar las relaciones como una línea entre dos figuras o como elementos contenidos sobre otra figura.
Por ejemplo, como podemos ver en la siguiente figura, podemos cargar imágenes para representar los nodos o dibujar figuras geométricas, podemos aplicar estilos condicionales, etc...
Podemos definir las utilidades que estarán disponibles para nuestro diagrama en la paleta de herramientas. Pueden ser filtros, reglas de validación, opciones de edición de los elementos (copiar, pegar, editar la etiqueta), herramientas de creación de elementos, de navegación...
Se pueden especificar tablas para representar los elementos del modelo como filas, donde cada celda define una propiedad del elemento. Las celdas son editables y su representación gráfica es editable. Lo mismo podemos hacer con las matrices, árboles y los diagramas de secuencia.
Un editor gráfico creado con Sirius ofrece DSL para manejar los modelos y sus representaciones. No hace falta ser un experto en las tecnologías de Eclipse Modeling para manejar Sirius como usuario.
Como usuario hacemos uso de muchas de las bondades que Sirius ofrece a los especificadores:
En cuanto a la edición de diagramas Sirius ofrece todo aquello que podemos esperar de un editor gráfico para manipular la visualización de los elementos del modelo: zoom, manejo de capas, filtros, estilos condicionales, una visión general del diagrama (outline), hacer/deshacer, copiar/pegar, regla, cuadrícula, alineación de elementos, redimensionamiento... También nos permite la posibilidad de exportar los diagramas como imágenes y la opción de incluir notas en el diagrama.
Sirius ofrece la posibilidad de validar el diagrama para detectar incoherencias con el modelo. Cada incoherencia lanza visible en la sección de problemas de Eclipse y los elementos son decorados para llamar la atención sobre ellos.
Sirius está basado en la pila de Eclipse Modeling basada en EMF. La arquitectura general de Sirius se refleja en la siguiente figura de la documentación de Sirius:
Sobre la plataforma Eclipse y EMF Sirius está compuesto de dos partes principales:
Sirius Tooling. Son las herramientas de Sirius para especificadores. Proporciona un entorno en el cual pueden especificar los editores que quieran ofrecer a los usuarios finales. La especificación se hace de manera declarativa, describiendo el modelo. Para cada editor el especificador definirá:
Qué será representado en el editor, es decir, que elementos del modelo deberán ser visibles.
En resumen, Sirius proporciona un entorno completo y fácil de usar para crear las especificaciones aquí comentadas. El resultado puede ser liberado como un plugin de Eclipse o una aplicación RCP independiente.
La separación entre Sirius runtime y tooling permite que la arquitectura sea limpia. El núcleo de Sirius queda sperada de cualquier tipo de representación concreta. Cada una de las partes ofrece la capacidad de extenderse en su ámbito. Por ejemplo cada uno de los elementos deben de proporcionar una representación al usuario final para interactuar con la herramienta, basados en otros frameworks y tecnologías, como GMF para renderizar los diagramas.
Recopilando, como hemos descrito en este apartado, la arquitectura de Sirius tiene las siguientes propiedades importantes:
Sirius está ampliamente relacionado con varios proyectos Eclipse:
Las estadísticas Sirius en el MarketPlace de Eclipse denotan que es ampliamente usado en el mundo de los lenguajes específicos de dominio. El que nazca de la empresa privada, de la producción diaria, nos lleva a pensar que realmente es un producto competitivo que facilita las tareas repetitivas y de diseño al usuario.
Como experiencia personal he usado dos proyectos basados en Sirius:
En el Marketplace de Obeo podemos encontrar numerosas herramientas basadas en Sirius. Es muy interesante interactuar con ellas porque se van descubriendo características del framwork que no están bien documentadas.
En la documentación de Sirius se destacan numerosos casos de uso de la herramienta como la herramienta de P&C Insurance para calcular y validar sus productos. Seguramente los casos de uso más interesantes no sean públicos por ser implementaciones internas de Thales o alguna otra empresa que lo haya adoptado aunque podemos encontrar en la web algunas presentaciones que Thales y Obeo han hecho en las EclipseConf dodne nos presentan soluciones particulares a problemas reales.