E-017 - Universidad Nacional del Nordeste

Anuncio
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: [email protected]
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
Descargar