Mejorar la validación de software
El desarrollo de modelos es una idea atractiva para crear sistemas de software integrados en tiempo real. En esta propuesta, los modelos, que representan especificaciones de los aspectos funcionales, se recopilan en un código para determinadas plataformas. Los experimentos necesarios no se llevan a cabo en sistemas reales sino en prototipos virtuales (modelos). El Lenguaje de Modelado Unificado (UML, por sus siglas en inglés) ofrece un medio para describir los modelos operacionales de un sistema en distintos niveles de abstracción, correspondientes a diferentes fases de desarrollo, y engloba descripciones de arquitectura y descripciones de comportamiento. La facilidad de construcción, la generalidad, una mejor capacidad de observación y de control, la posibilidad de análisis y la predictibilidad son solamente algunas de las ventajas de una propuesta basada en modelos. No obstante, sólo resulta útil si va acompañada de un apoyo con herramientas a la validación de las opciones de diseño. El proyecto OMEGA se centró en herramientas y en una metodología para desarrollar sistemas integrados y en tiempo real con UML. Dos de los principales problemas abordados son la heterogeneidad de los componentes con distintas velocidades de ejecución y los modos de interacción que normalmente están presenten en la propuesta de modelos. Las herramientas IF/IFx permiten al usuario realizar operaciones parecidas a las que ofrecen los depuradores avanzados. Entre otras operaciones, permite ejecutar paso a paso, inspeccionar el estado del sistema, efectuar puntos de interrupción condicional, rebobinar o volver a reproducir el escenario y verificar las condiciones sencillas de coherencia, como el interbloqueo o el limitador de tiempo. Los requisitos que se deben validar en los modelos se expresan mediante observadores, que son un tipo especial de modelos. Están equipados con primitivos para controlar y comprobar la divergencia del comportamiento nominal. Se usan límites temporales parecidos para expresar los límites de la duración entre los sucesos del sistema y manejar el diseño o para describir un entorno con determinadas propiedades temporales. El principal componente de IFx es un traductor de UML a IF, que produce descripciones IF (Formato Intermedio). Las descripciones IF son representaciones intermedias que expresan la especificación, los objetivos de la prueba y los criterios de cobertura de un modo adecuado para la generación de pruebas de modelos. La traducción toma como entrada un modelo de UML guardado en XMI, el formato habitual de XML, y genera una especificación IF correspondiente al modelo UML, de acuerdo con la semántica de OMEGA. Además, una entrada UML ofrece una interfaz dirigida específicamente a los modeladores de UML para las herramientas de validación IF, que oculta el IF y los datos de la traducción. La herramienta se ha aplicado en tres de los casos prácticos de OMEGA y también se usa en otros proyectos. Su combinación con otras herramientas de validación y de generación de códigos se considera objeto de próximas colaboraciones.