SysML

En esta ocasión hablaremos de un estándar regulado por la OMG, recién salido del horno (septiembre de 2007) que quizá por mi formación en ingeniería mecánica ha venido llamando de manera creciente mi atención y la de muchas empresas desde hace algunos años: SysML (omgsysml.org).

El mundo de los sistemas

Día a día interactuamos con un sinnúmero de artefactos que están conformados por un conglomerado de sistemas compuestos por otros sistemas. Nuestro automóvil por ejemplo: está compuesto por un motor que es un sistema complejo de piezas mecánicas, hidráulicas, electrónicas y de software, que hacen posible su funcionamiento como unidad. Todas estas piezas obedecen a distintos modelos en el ámbito de la termodinámica, la mecánica de fluidos, la cinemática, la dinámica, la tecnología de materiales, etcéctera. Si ampliamos aún más la frontera de control, el automóvil puede ubicarse dentro de otro sistema más grande conformado por las vías de comunicación sobre las que transita, lo cual impacta sobre el sistema ambiental y sobre la sociedad.

La especialización de UML

SysML (System Modeling Language) es un lenguaje de modelado de dominio específico para aplicaciones de sistemas de ingeniería. Soporta la especificación, análisis, diseño, verificación y validación de un amplio rango de sistemas y sistemas de sistemas. Estos sistemas pueden incluir hardware, software, información, procesos, personal e instalaciones.

¿Qué es la ingeniería de sistemas?

INCONSE (International Council on Systems Engineering) define a la ingeniería de sistemas como una rama de la ingeniería cuya responsabilidad es crear y ejecutar un proceso interdisciplinario que tiene como objetivo asegurar que las necesidades de los clientes y grupos de interés sean satisfechas con alta calidad, de manera confiable, rentable y apegada a calendario a lo largo de todo el ciclo de vida del sistema, que va desde su desarrollo, pasando por su operación y hasta su eliminación. Este proceso está conformado normalmente por las siguientes siete actividades: delimitar el problema, investigar alternativas, modelar el sistema, integrar, implantar el sistema, evaluar el desempeño y volver a evaluar. El proceso de ingeniería de sistemas no es secuencial: las actividades son desarrolladas de forma paralela e iterativa.

Mientras que UML es un lenguaje de modelado de propósito general (GPML), SysML es un lenguaje de modelado de dominio específico (DSML) definido como un perfil (adaptación) de UML 2.0. Esto es una ventaja, ya que le permite reutilizar la notación y semántica relativamente madura (diez años) de UML 2.0.

¿No es suficiente con UML?

Si SysML está basado en UML, entonces, ¿para qué otro lenguaje? El problema con UML es que está fuertemente enfocado al software y los ingenieros de sistemas están buscando un lenguaje de modelado que permita especificar sistemas complejos que incluyan no sólo componentes de software (por ejemplo: hardware, información, procesos, personal e instalaciones). SysML reduce el tamaño e inclinación hacia el software que caracteriza a UML al tiempo que amplía su aplicación para modelar requerimientos y restricciones paramétricas a fin de soportar la ingeniería de requerimientos y el análisis de desempeño, que son esenciales en la ingeniería de sistemas. Un ejemplo emblemático lo conforman los llamados sistemas embebidos para los que desde 1998 existe una adaptación de UML conocida como Real Time UML, la cual no ha sido suficiente.

Ventajas sobre UML

Entre las principales ventajas que SysML ofrece, sobre UML, a los ingenieros de sistemas para especificar sistemas o sistemas de sistemas se encuentran:

1. SysML expresa mejor que UML la semántica de la ingeniería de sistemas. SysML reduce la predilección por el software propia de UML, y agrega dos diagramas para la administración de requerimientos y análisis de desempeño: diagramas de Requerimientos y diagramas Paramétricos, respectivamente.

2. SysML es más pequeño y sencillo de aprender que UML. SysML remueve varias construcciones centradas en el software, si lo medimos en diagramas todo el lenguaje es más pequeño: nueve diagramas, de SysML vs. 13 diagramas de UML.

3. Las tablas de asignación de SysML soportan varios tipos de asignaciones (por ejemplo: asignación de requerimientos, asignación funcional, asignación estructural) facilitando, de esta manera, la verificación y validación (V&V) automatizada y el análisis GAP.

4. Las construcciones de administración del modelo de SysML soportan la especificación de modelos, vistas y puntos de vista; y están arquitectónicamente alineadas con las IEEE-Std-1471-2000 (Practicas Recomendadas por el IEEE para la Descripción Arquitectónica de Sistemas Intensivos en Software).


Figura 1. Estructura de SySML.

UML + SysML

En un proyecto grande, por supuesto se pueden utilizar ambos lenguajes, de hecho, esta fue la intención de los diseñadores del lenguaje SysML. Sin embargo, es importante señalar que en este ámbito se han identificado dos problemas típicos que hay que enfrentar: la superposición lingüística y la divergencia lingüística. El primer problema se deriva de que varios diagramas de SysML extienden el significado o se derivan de los definidos en UML (por ejemplo: los diagramas de Actividad o los de Bloques/Bloques Internos en SysML vs. los de Clases/Estructura Compuesta/Componentes en UML). El segundo es el cambio de enfoque necesario para adaptarse al ámbito de la ingeniería de sistemas, por ejemplo: los diagramas Paramétricos inyectan un modelo restricción-lógica en el modelo objeto-componente de UML. Al final del día, como siempre, la práctica está en la experiencia.