El lenguaje de restricción de objetos ( OCL ) es un lenguaje declarativo que describe reglas que se aplican a los modelos de lenguaje de modelado unificado (UML) desarrollados en IBM y que ahora forma parte del estándar UML. Inicialmente, OCL era simplemente una extensión del lenguaje de especificación formal para UML. [1] OCL ahora se puede utilizar con cualquier metamodelo de Meta-Object Facility (MOF) Object Management Group (OMG) , incluido UML. [2] El lenguaje de restricción de objetos es un lenguaje de texto preciso que proporciona expresiones de consulta de objetos y restricciones en cualquier modelo o metamodelo MOF que no se pueda expresar de otro modo mediante notación diagramática. OCL es un componente clave de la nueva recomendación estándar de OMG para modelos de transformación, la especificación de consultas/vistas/transformaciones ( QVT ).
OCL es un descendiente de Syntropy , un método de análisis y diseño orientado a objetos de segunda generación. La definición de OCL 1.4 especificaba un lenguaje de restricciones. En OCL 2.0, la definición se ha ampliado para incluir definiciones generales de lenguaje de consulta de objetos. [3]
Las declaraciones OCL se construyen en cuatro partes:
OCL complementa a UML al proporcionar expresiones que no tienen las ambigüedades del lenguaje natural ni la dificultad inherente de utilizar matemáticas complejas. [3] OCL también es un lenguaje de navegación para modelos basados en gráficos.
OCL hace que un modelo de Meta-Object Facility sea más preciso al asociar afirmaciones con sus meta-elementos.
De particular importancia para la ingeniería basada en modelos (MDE) o la arquitectura basada en modelos es la noción de transformación de modelos . La OMG ha definido un estándar específico para la transformación de modelos llamado MOF/QVT o, en forma abreviada, QVT . Actualmente, hay disponibles varios lenguajes de transformación de modelos, como GReAT , VIATRA o Tefkat , con diferentes niveles de cumplimiento del estándar QVT. Muchos de estos lenguajes se basan en OCL, que es la parte principal del cumplimiento de QVT .
Al ser un lenguaje de validación basado en reglas, Schematron puede considerarse una alternativa a OCL. Sin embargo, Schematron funciona para árboles de lenguaje de marcado extensible (XML) , mientras que OCL permite navegar por modelos y metamodelos basados en MOF (es decir, árboles de intercambio de metadatos XML ( XMI )). En otras palabras, OCL se relaciona con UML o MOF de manera similar a como Schematron se relaciona con XML . (Tenga en cuenta que Schematron usa XPath para navegar dentro de los árboles XML).
Al ser un lenguaje de especificación de modelos que permite a los diseñadores decorar un modelo o un metamodelo con anotaciones sin efectos secundarios, OCL podría reemplazarse por lenguajes como Alloy . La generación automatizada de OCL es, en principio, posible a partir del lenguaje natural. [4]
Eclipse OCL [5] amplía el OCL estándar con operadores adicionales y un tipo para mapas. AgileUML amplía el OCL estándar con tipos de mapas y funciones. [6] Estas extensiones son coherentes con los tipos de mapas y funciones presentes en los lenguajes de programación modernos, como Python y Swift.
{{cite journal}}
: Requiere citar revista |journal=
( ayuda )