Resumen: E-017 UNIVERSIDAD NACIONAL DEL NORDEST E Comunicaciones Científicas y Tecnológicas 2004 Adaptación de la herramienta de análisis Alloy, agregando la noción de acciones atómicas. Custidiano Secchi, Adolfo Ernesto Departamento de Computación - FCEyN - UBA Planta Baja - Pabellón I - Ciudad Universitaria (1428) Buenos Aires. Argentina. Tel.: +54-11-4576-3390/96 int. 701/702. Tel/Fax: +54-11-4576-3359. e-mail: compuba@dc.uba.ar Antecedentes El estudio de la lógica en nuestros tiempos cobra una importancia fundamental para poder especificar formalmente la mayor parte de los modelos existentes de sistemas (Ej. UML). UML es el lenguaje de modelado mas popular, el cual contiene diversos modelos del sistema pero desde distintos enfoques. Pero en la actualidad estos modelos no tienen una semántica definida, dejando a cargo del lector del modelo la interpretación que el obtenga del mismo, perdiendo así la información que realmente el autor del mismo quiso transmitir. Por este motivo actualmente se llevan a cabo diversos proyectos de investigación con el objetivo de lograr eliminar la ambigüedad en la semántica mediante los llamados métodos formales, utilizando las diferentes lógicas. Sin embargo es deseable poder traducir cada una de las lógicas usadas a una lógica en común llamada Calculo relacional, que permite especificar la diferente información que transmite cada una de las lógicas en ella y así utilizar el calculo relacional para poder realizar diferentes procesos como puede ser model cheking, Theorem Proving, etc. El analizador Alloy es una herramienta para analizar los modelos escritos en Alloy, un simple lenguaje de modelado estructural basado en lógica de primer orden. La herramienta puede generar casos de invariants, simular la ejecución de las operaciones (incluso las definidas implícitamente), y comprobar propiedades definidas por el usuario de un modelo. Alloy y su analizador se han utilizado sobre todo para explorar diseños abstractos del software. Su uso en el análisis de código para conformar una especificación y como generador automático de casos de prueba se está investigando en proyectos de investigación en actualmente en curso. Lo particularmente importante de esta herramienta es poder obtener una traducción a lógica de primer orden del código escrito en lenguaje Alloy. La lógica de primer orden permite especificar ciertos aspectos del sistema y decidir rápidamente si algo es falso o no utilizando ciertos algoritmos ya diseñados. El concepto a ser tratado es la traducción de un lenguaje de especificación llamado DynAlloy a otro lenguaje llamado Alloy. El lenguaje de especificación DynAlloy es una extensión de Alloy y lo que se introduce a través de esta es la noción de las acciones atómicas, que sintetizando, se lo puede entender como un conjunto de sentencias del lenguaje Alloy a ser ejecutadas pero con la salvedad que se caracterizan por tener pre y pos -condiciones. Esto significa que este conjunto de sentencias de la acción atómica solo se ejecutara si cumple con una serie de pre-condiciones antes definidas, y de cumplirse y ejecutarse los resultados de la ejecución deberá cumplir con las pos-condiciones definidas. Este concepto es utilizado en varios diagramas UML y de ahí la necesidad en una primera etapa que se agregue este concepto. Resumen: E-017 UNIVERSIDAD NACIONAL DEL NORDEST E Comunicaciones Científicas y Tecnológicas 2004 Materiales y Métodos Para la modificación de la herramienta Alloy fue necesario analizar el código fuente del mismo, diagramando las diferentes clases. Las tareas que se definieron son las siguientes: 1. Parseado del archivo con especificacion DynAlloy. Implica modificar el algoritmo de parseo, el cual tiene como función iterar carácter por carácter del archivo de manera tal de reconocer cada una de las palabras privadas propias del lenguaje, incluyendo las acción atómica, denominada “act”. Este proceso solo contempla el reconocimiento y construcción de un árbol de nodos, en el cual cada uno representa una palabra valida de la herramienta. Debe aclararse que se excluye cualquier tipo de chequeo sintáctico y/o semántico. 2. Transformación del Codigo DynAlloy a Alloy. La Transformación del código DynAlloy esta expuesto en un paper escrito por el Dr. Marcelo Frías entre otros, y en el cual se describe como deben transformarse las expresiones de DynAlloy a Alloy, la misma se almacena en una variable para que luego sea reconocida por el parser original de Alloy. 3. Parseado de la variable que contiene el código Alloy. En la variable se recibe el código Alloy sin ninguna especificación de DynAlloy, debido a que ya en el paso anterior ya se lo tradujo. Ahora el parser original de Alloy puede reconocer todo el código debido a lo antes dicho. 4. Construcción de Casos de Test En esta etapa se debe construir diversos casos de test posibles y variados de manera tal de probar la herramienta. Esto incluye investigar cuales son las posibles combinaciones y usos del código. 5. Testing de la herramienta finalmente se debe realizar el testing utilizando el framework Junit incluido en el GUI Eclipse. De esta manera se comprobara si la herramienta hace lo que debe hacer, no menos. Para modificar la herramienta se contó con los materiales: PC Atlhon XP 1800+, 512MB RAM, Disco Rígido de 80GB. Libros electrónicos del lenguaje de referencia java. Herramienta Eclipse 2.0.3 Internet de banda ancha. Discusión de Resultados Los resultados obtenidos hasta el momento son meramente preliminares. Las etapas que actualmente se han concluido son la 1 y la 3. El propósito principal de este trabajo es poder facilitar la transformación de una lógica a otra utilizando herramientas como Alloy. Ahora bien, cabe destacar que actualmente se esta desarrollando las etapas que faltan. La modificación de este tipo de herramientas con el propósito de utilizarlas como interfaces entre diferentes las lógicas nos dan un camino mas simple de traducción. Es importante destacar que al finalizar esta herramienta, no será posible utilizarla como intermediaria de entre todas la lógicas, solo bajo algunas muy puntuales. En UML la noción de ejecutar una serie de instrucciones bajo ciertas pre-condiciones y cuyo resultado cumpla con ciertas post-condiciones es ampliamente usado, es por esto la importancia de agregar a la herramienta la posibilidad de interpretar este tipo de estructuras. Un inconveniente de la herramienta Alloy 2.0 es que todavía no esta completamente implementada, funciona dentro de los parámetros normales. Conclusiones Así como estas herramientas hay otras que con una debida investigación se pueden utilizar para fines similares. Sin embargo muchas de ellas están aún en proceso de desarrollo, por esto su utilización en forma completa no es posible, y aunque con sus limitaciones , ya es posible utilizarlas. Pero así como se extendió el lenguaje de especificación Alloy con DynAlloy, hay todavía muchas otras interrogantes que resolver en cuanto a como traducir las demás lógicas utilizando estas mismas técnicas. Bibliografía [1] Micromodels of Software: Lightweight Modelling and Analysis with Alloy Software Design Group, MIT Lab Computer Science, Draft / Febrero 2002, Daniel Jackson, 2001, 2002 [2] Reasoning About Static and Dynamic Properties in Alloy: A Purely relational Approach, Marcelo F. Frías, Carlos Lopez Pombo, Gabriel A. Baum, Nazareno M. Aguirre, thomas S. E. Maibaum. [3] The Java Language Specification. Secon Edition James Gosling, Bill Joy, Guy Steele, Gilad Bracha. California, Adison-Wesley. Agradecimientos Dr. Marcelo F. Frías, Lic. Carlos López Pombo, Juan Pablo Galeotti