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 ).
Descripción
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:
- un contexto que define la situación limitada en la que la afirmación es válida
- una propiedad que representa algunas características del contexto (por ejemplo, si el contexto es una clase, una propiedad podría ser un atributo)
- una operación (por ejemplo, aritmética, orientada a conjuntos) que manipula o califica una propiedad, y
- palabras clave (por ejemplo, if, then, else, and, or, not, implications) que se utilizan para especificar expresiones condicionales.
Relación
OCL y UML
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 y MOF
OCL hace que un modelo de Meta-Object Facility sea más preciso al asociar afirmaciones con sus meta-elementos.
OCL y QVT
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 .
Alternativas
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]
Extensiones
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.
Véase también
- Modelo de computadora
- Mapeo de datos
- Lenguaje específico de dominio (DSL)
- Modelado específico del dominio (DSM)
- Proyecto Eclipse GMT
- Lenguaje de expresión de Gello
- Glosario de términos del lenguaje de modelado unificado
- Programación intencional (PI)
- Lista de herramientas UML
- Metamodelado
- Técnica de metamodelado
- Instalación de meta-objetos (MOF)
- Metadatos
- Pruebas basadas en modelos (MBT)
- Arquitectura basada en modelos (MDA)
- Ingeniería basada en modelos (MDE)
- Lenguaje de transformación de modelos (MTL)
- Lenguaje de modelado
- Perspectivas de modelado
- MOFM2T
- Análisis y diseño orientado a objetos (OOAD)
- Consultas/Vistas/Transformaciones MOF (QVT)
- Traducción semántica
- Lenguaje de transformación (TL)
- Herramienta UML
- Transformación basada en vocabulario
- XMI
- Lenguaje de transformación XML (XTL)
Referencias
- ^ Object Management Group (OMG); Especificación del lenguaje de restricción de objetos , Capítulo 7 de la Especificación del lenguaje de modelado unificado OMG , Versión 1.3, marzo de 2000 (primera edición)
- ^ Object Management Group (OMG); Lenguaje de restricción de objetos OMG Versión de especificación disponible 2.0 , mayo de 2006
- ^ ab Este artículo se basa en material tomado de Object+Constraint+Language en el Diccionario gratuito en línea de computación antes del 1 de noviembre de 2008 e incorporado bajo los términos de "relicencia" del GFDL , versión 1.3 o posterior.
- ^ Imran Sarwar Bajwa (octubre de 2010). "Generación de restricciones OCL a partir de especificaciones de lenguaje natural, 2010". IEEE . doi :10.1109/EDOC.2010.33. S2CID 7495256.
{{cite journal}}: Requiere citar revista|journal=( ayuda ) - ^ "Eclipse OCL™ (lenguaje de restricción de objetos)". 31 de enero de 2013.
- ^ Lano, Kevin; Kolahdouz-Rahimi, Shekoufeh (2021). "Extensión de OCL con tipos de mapas y funciones". Fundamentos de ingeniería de software . Apuntes de clase en informática. Vol. 12818. págs. 108-123. doi :10.1007/978-3-030-89247-0_8. ISBN 978-3-030-89246-3. Número de identificación del sujeto 239029860.
Enlaces externos
- Especificación OCL de OMG
- Portal OCL: el centro de información relacionada con OCL
- Página OCL del Departamento de Ciencias Informáticas de CSUSB (breve sintaxis OCL 2.0)
- Octopus: herramienta OCL para especificaciones UML precisas (verificador OCL)
- Kit de herramientas OCL de Dresde (Kit de herramientas OCL, varias publicaciones relacionadas con OCL)
- HOL-OCL (un entorno interactivo de prueba de teoremas para OCL, varias publicaciones relacionadas con OCL)
- Tutorial de OCL para Java en ParlezUML
- Artículo sobre el uso del OCL de EMF en código Java
- Página de enlaces UML en cetus-links.org
- USE (UML-based Specification Environment) (Herramienta OCL para validación de modelos, varias publicaciones relacionadas con OCL)
- Tutorial de OCL
- NL2OCL (Herramienta OCL para la generación de invariantes a partir de NL)