Implementación de técnicas de evaluación y refinamiento para OCL 2.0 sobre múltiples lenguajes basados en MOF - Garcia, Carlos Diego (2006)
La complejidad de los problemas del mundo real ha llevado a que la construcción de un sistema de software debe ser precedida por la construcción de un modelo, tal como ocurre en otros sistemas ingenieriles. El modelo de un sistema es una representación conceptual obtenida a partir de la identificación, clasificación y abstracción de los elementos que constituyen el problema y su posterior organización en una estructura formal. De esta forma, el modelo de un sistema actúa como una especificación de los requerimientos que el sistema debe satisfacer, proveyendo un medio de comunicación y negociación entre usuarios, clientes, analistas y desarrolladores, así como también un documento de referencia durante la verificación y validación, y durante la evolución del producto. Es de suma importancia expresar el problema claramente y con precisión; pero esta meta es difícil de lograr, los modelos tienden a contener errores, omisiones e inconsistencias porque ellos son el resultado de una actividad compleja y creativa. El modelo del sistema se expresa utilizando un lenguaje de modelado. El éxito de los lenguajes gráficos de modelados como el Unified Modelling Language (UML) son principalmente basado en el uso de construcciones gráficas que transmiten un significado intuitivo. Estos lenguajes son atractivos para los usuarios porque ellos son claros y entendibles. Estas características son vitales ya que el modelo también cumple una función contractual. Sin embargo es fundamental contar con un lenguaje que permita expresar restricciones semánticas adicionales sobre los objetos del modelo, pudiendo obtener modelos más precisos y verificables. OCL es un lenguaje de especificación formal fácil de leer y escribir. Fue definido por la OMG (Object Management Group), permite expresar restricciones semánticas del sistema que no se pueden expresar a partir de una notación gráfica. De esta forma, los diagramas complementados con expresiones OCL son más precisos, su documentación es más clara, se mejora la comunicación entre desarrolladores (evitando errores producidos por malas interpretaciones) y la compresibilidad del sistema en etapas iniciales del desarrollo de software es mayor. Tanto UML como OCL están definidos a través de MOF (Meta Object Facility) una especificación de tecnología estandarizada por OMG en 1997. MOF es un meta-metamodelo que es utilizado para crear metamodelos. OCL puede ser utilizado para cualquier metamodelo que adhiera a MOF. Otras características que son muy importantes para la utilización de los lenguajes de modelado, en sistemas de software complejos, es contar con técnicas de refinamientos, permitiendo un desarrollo por etapas con distintos niveles de abstracción, postergando los detalles del problema en etapas posteriores. En los lenguajes formales como Z [33] es posible demostrar si una especificación dada es un refinamiento de otra especificación, o incluso derivar refinamientos a partir de una determinada especificación. Para poder utilizar mecanismos de refinamientos en UML, es necesario aumentar la precisión de dicho lenguaje de modelado, y definir un marco para expresar la noción de refinamiento. Algunos grupos de investigadores proponen la traducción de UML/OCL en lenguajes formales que soporten mecanismos de refinamientos para disminuir las deficiencias de UML. Esta tesis está organizada de la siguiente manera. En el capitulo 2 se introduce el concepto de MOF y metamodelos. En el capítulo 3 se describe el uso de OCL en modelos basados en MOF. En el capitulo 4 se expone el metamodelo de OCL 2.0. En el capítulo 5 se describe una estrategia de evaluación para las condiciones de refinamientos en modelos UML/OCL. En el capítulo 6 se describe la implementación de la herramienta que asiste al proceso de especificación y evaluación de refinamiento con UML y OCL. En el capitulo 7 se exponen los trabajos relacionados. En el capitulo 8 se expone las conclusiones finales y se citan futuros trabajos.