Asegurar la corrección de los datos de un sistema de información es una tarea crucial. Por ello, los ingenieros del software especifican restricciones de integridad que deberían ser satisfechas por los datos del sistema. Estas restricciones, sin embargo, pueden violarse cada vez que un usuario modifica el estado de los datos. Para evitarlo, el sistema debería, o bien, comprobar que la actualización de los datos no causa ninguna violación de las restricciones antes de aplicarla, o bien reparar las restricciones una vez aplicada la actualización (es decir , aplicar la actualización conjuntamente con ciertas medidas correctivas para evitar las violaciones). Esta tesis es una contribución a ambos problemas, es decir, tanto en el problema de comprobar automáticamente las restricciones como el de mantenerlas, considerando los sistemas de información y sus restricciones descritas en dos de los lenguajes de modelización conceptual más usados del momento: UML para describir el sistema de información, y OCL para describir las restricciones.
En la primera parte de la tesis, empezamos analizando la expresividad del lenguaje OCL para definir restricciones de integridad. Fruto de este análisis, demostramos que el lenguaje OCL es tan expresivo que el problema de comprobar las restricciones es no-decidible. Para paliar este fenómeno, determinamos el subconjunto de OCL equivalente al álgebra relacional (OCLfo), el cual es, por tanto, tratable menos en el caso de la comprobación de restricciones. Consecuentemente, en la segunda parte, tratamos el problema de comprobación / mantenimiento de restricciones OCLfo partiendo de un método preexistente en el campo de las bases de datos relacional (el método de los eventos) el cual extendemos en diferentes direcciones. En el caso de la comprobación de restricciones, extendemos el método de los acontecimientos para poder hacer frente a funciones de agregación (por ejemplo, conteos, sumas totales, etc.) de tal manera que aumentamos la expresividad de las restricciones que pueden hacer frente (es decir, OCLfo extendido con agregados), y además, explotamos esta extensión para mejorar el tiempo de ejecución del método de los acontecimientos original.
En el caso del mantenimiento de restricciones, demostramos que con una ligera variación del método de los acontecimientos podemos resolver el mantenimiento de restricciones utilizando una implementación del conocido algoritmo chase. En este punto, observamos como el problema de mantenimiento de restricciones sigue siendo no-decidible incluso en el caso de OCLfo, y determinamos otro subconjunto de OCL, el OCLuniv, que sí es decidible por mantenimiento. Finalmente, a fin de demostrar la alta aplicabilidad de nuestra propuesta, en la tercera parte de la tesis, exportamos nuestros resultados en otro contexto, los Descripción Logics, donde demostramos que con pequeñas variaciones de nuestro método podemos mantener una ontología DL-Lite en tiempo polinómico mediante consultas SQL.