Model Checking de código para propiedades basadas en eventos Tesistas Miguel Kiszkurno Hugo Meléndez Roberto Somosa Director Víctor Braberman.

Slides:



Advertisements
Presentaciones similares
Ciclo de vida de desarrollo de software
Advertisements

Álgebra 2010 Clase N° 2 Conjuntos numéricos II
SATISFACCIÓN DE CLIENTES Comparativa Convocatorias Finalizadas en 2011.
Los números del 0 al cero uno dos tres cuatro cinco 6 7 8
Algoritmos y Programas
COMPARATIVA CONVOCATORIAS FINALIZADAS EN Bilbao, Satisfacción de Clientes OBJETO Y ALCANCE Convocatorias finalizadas en 2012.
1 LA UTILIZACION DE LAS TIC EN LAS PYMES GALLEGAS AÑO de Junio de 2005.
TEMA 2 MÚLTIPLOS Y DIVISORES
02- Plan Organización Docente v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
01- OFERTA FORMATIVA v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
Fundamentos de Diseño de Software INFT.1
Los proyectos de Ingeniería
Campus virtual Autoevaluaciones Teletutorías Salas de estudio Clases en línea Contratos didácticos Proyecto E.D.U.F. Universidad Universidad.
1 Reporte Componente Impacto Por Orden Territorial Por Departamento No Disponible ND *Los indicadores para el año 2008 no fueron calculados.
Phone2Wave-Server Manual de Operación.
Metodología de Trabajo de Auditoría Informática
Resolución de Problemas
SYSMOTORFLOW PRESENTACIÓN DEL PROCESO Proyecto de Ingeniería de Software 2010.
Materia: Tecnología de la Información
A Theory of Action for MultiAgent Planning Michael Georgeff.
50 principios 1. Los clientes asumen el mando.
Ecuaciones Cuadráticas
Combinadores SK.
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
¿Qué es un conjunto? Un conjunto es una colección de objetos considerada como un todo. Los objetos de un conjunto son llamados elementos o miembros del.
CONCEPTO DE MARCO LÓGICO
Programación 1 Introducción
Ingeniería del Software
Business Proccess Management (BPM)
Un ejemplo de agrupación de datos Problema 1 del capítulo 2 del libro de texto.
Iso / Iec “Ciclos de vida del software”
Introducción a la Computación
Tema 3. Optimización de Código
Realimentacion de la salida
El paradigma de la orientación a objetos La programación orientada a objetos genera códigos eficientes y estandariza la metodología de programación, además.
Análisis y Diseño orientado a objetos con UML.
PROGRAMACIÓN ORIENTADA A OBJETOS

Estructuras de control
Derivación de Contraejemplos para Model Checking Cuantitativo
Explorar y conocer la técnica de Verificación De Modelos (Model Checking) con la finalidad de poder validar los Modelos de Casos de Uso y así poder ampliar.
Validación de propiedades de Workflow Alumno: Fernando Villar Director: Dr. Germán Regis Universidad Nacional de Río Cuarto.
PROCESO DE DESARROLLO. Introducción Mediante esta presentación se pretende describir el proceso de desarrollo del TALLER I.
Conclusiones de Fase de Construcción Grupo 2 – Año 2006.
1 LENGUAJES DE PROGRAMACIÓN Javier Martín Centro Asociado de Móstoles UNED.
Fundamentos de programación
Sistemas Concurrentes: programación concurrente
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Bases de Datos Modelamiento.
INGENIERIA DE SOFTWARE
Ingeniería del Software
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Análisis y Diseño de Sistemas
Facultad de Ingeniería
El rol de SQA en PIS.
Grupo 10 – 2008 Proyecto de Ingeniería de Software
Ingeniería de Requisitos
Definición de sistema__________
1 Motor de Generación de Formularios para Infocorp Presentación del Proceso.
TIPOS DE PRUEBAS DEL SOFTWARE
UNIDAD 2: “Características del Modelado UML” CONTENDIDO Elaborado por: Ingeniero Harold Cabrera Meza Actualizado por: Ingeniero Nilson Albeiro Ferreira.
Ciclo de Vida del Software
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Evolución y comportamiento del Sector TICs Praxis & Technology Group PraTech METODOLOGÍA DE CALIDAD.
Marco de Trabajo para Indexación, Clasificación y Recopilación Automática de Documentos Digitales Javier Caicedo Espinoza Gonzalo Parra Chico.
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
DLM Transact SQL Sesión I Introducción al SQL Server Uso de las herramientas de consultas del Transact SQL.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

Model Checking de código para propiedades basadas en eventos Tesistas Miguel Kiszkurno Hugo Meléndez Roberto Somosa Director Víctor Braberman

Agenda Introducción Contexto Motivación Objetivos Desarrollo Algunas definiciones preliminares ¿Por qué utilizar Java PathFinder? Presentación del Framework Caso de estudio Conclusiones generales y trabajo futuro

Introducción

Crecimiento en aspectos relacionados con el control de la calidad de los sistemas Diversas técnicas de QA Revisiones de código Inspecciones de código Técnicas de derivación de estados Testing … Introducción Contexto (I)

Model Checking Técnica de verificación algorítmica Determina si un modelo satisface (ó no) alguna propiedad Minimiza el testing manual Algunos lenguajes de definición de propiedades Linear Temporal Logic (LTL) Predicados sobre los estados Escenarios basados en eventos Lenguaje de definición de modelos Diversos lenguajes de programación Introducción Contexto (II)

Contexto (III) Herramientas de model checking Se han desarrollado gran variedad de herramientas, con teorías que las respaldan Permiten analizar modelos como abstracciones de aplicaciones reales Algunas permiten analizar aplicaciones reales Exploran exhaustivamente el universo de estados Introducción

Hay sistemas complejos donde El testing manual es ineficiente o incompleto Otras técnicas son muy costosas Las herramientas de model checking permiten salvar estas dificultades Introducción Motivación

Hay casos en que es mas natural expresar las propiedades en términos de secuencias o patrones de eventos Entonces, los objetivos son Extender alguna herramienta para que permita predicar sobre patrones de eventos Controlar de alguna forma la explosión en el espacio de estados Introducción Objetivos del Trabajo

Herramientas Utilizadas JPF Model checker de código Java Muy estable y mantenido Flexible y extensible SPIN Model checker orientado a modelos concurrentes Permite modelar y verificar la interacción entre procesos concurrentes Provee un lenguaje de definición de modelos simple y declarativo Introducción

Algunas definiciones preliminares

Eventos Cualquier cambio observable durante la ejecución de un sistema que pueda ser relevante para la verificación de su correcto comportamiento Ejemplos La ejecución de una instrucción La ocurrencia de eventos externos al modelo a chequear Nos enfocaremos en las ejecuciones de determinadas instrucciones Asignación de variables Ejecución de funciones o métodos Algunas definiciones preliminares

Patrones de Eventos Relación de precedencia temporal entre distintos eventos Los representaremos con autómatas finitos determinísticos (AFD) Algunas definiciones preliminares

Escenarios de control Son mecanismos que permiten acotar la verificación a un subconjunto de las trazas generadas Preámbulo Condición impuesta sobre la ejecución del modelo para dar comienzo a la verificación Contexto de ejecución Condición impuesta al modelo para determinar si se continúa con la verificación Algunas definiciones preliminares

Escenarios de control - Ejemplo Algunas definiciones preliminares

¿Por qué Java PathFinder?

Características de la herramienta Es un emprendimiento Open Source Es una Java Virtual Machine que permite verificar programas desarrollados en Java Recorre todos los caminos de ejecución del modelo Genera nuevos estados a partir de un subconjunto de bytecodes En cada transición determina el cumplimiento de las propiedades Provee diversos mecanismos para verificar el cumplimiento de propiedades Aserciones Properties Listeners No provee soporte nativo para la definición de propiedades en términos de secuencias de eventos Es el model checker de Java más estable y mantenido ¿Por qué Java PathFinder?

Desafíos Entender el modelo de verificación de la herramienta Entender los mecanismos de observación provistos Entender la estrategia de generación de estados Definir una forma viable y mantenible de extender la herramienta ¿Por qué Java PathFinder?

Framework de verificación de patrones de eventos

Breve Descripción Framework desarrollado sobre JPF Permite definir propiedades como patrones de eventos Propiedades Globales Propiedades Typestate Permite acotar el espacio de estados explorado utilizando escenarios de control FWK de verificación de patrones de eventos

Propiedades Globales vs Propiedades Typestate Propiedades Globales Son globales a todo el modelo Propiedades Typestate Permiten verificar propiedades sobre instancias de un tipo determinado El framework crea un AFD para cada instancia de dicha clase FWK de verificación de patrones de eventos

Ejemplo Instancias de una clase Canal Eventos: Open, Write y Close Propiedad: No puede ocurrir el evento write si no ocurrió el evento open FWK de verificación de patrones de eventos

¿Cómo se implementó? (I) Eventos Se generan cuando se ejecuta un bytecode de tipo INVOKE Patrones de Eventos Se implementaron utilizando Autómatas Finitos Determinísticos Representan antipropiedades Consumen los distintos eventos definidos para el modelo Escenarios de Control También se implementan con AFDs FWK de verificación de patrones de eventos

¿Cómo se implementó? (II) Para detectar la ocurrencia de eventos se utilizan Listeners Implementamos un algoritmo de búsqueda para que tenga en cuenta el estado de las propiedades Se exploran todas las posibles combinaciones de la tupla Ejemplo FWK de verificación de patrones de eventos

Caso de estudio

Objetivos Evaluar la utilidad del framework desarrollado Supuestos Debe ser de complejidad media Debe emplear las funcionalidades de multithreading de Java Caso de estudio

Descripción del modelo Controlador de un conjunto de ascensores El Controlador de por sí solo no es auto contenido Hubo que diseñar stubs para representar a los ascensores y a las personas Se utiliza un thread por cada objeto de la clase Ascensor, Persona y ControladorAscensor Caso de estudio

Alcance Se limitaron los escenarios a los que representan la interacción entre a lo sumo 3 personas y 2 ascensores Se definieron cinco propiedades a verificar Se definieron cuatro escenarios de prueba Caso de estudio

Resultados - Duración de las pruebas EscPropDuración% overheadResultado JPF s/FWK FWK Sin contexto FWK con contexto FWK sin contexto FWK con contexto 1P1A100:01:0400:02:2200:01:38222%153%Finalizado correctamente 200:01:0400:01:5500:01:31180%142%Finalizado correctamente 300:01:0400:02:0100:01:37189%152%Finalizado correctamente 2P1A103:06:25No Ejecutado06:21:06-204%Finalizado correctamente 203:06:25No Ejecutado06:39:06-214%Finalizado correctamente 303:06:25No Ejecutado08:25:17-271%Error: OutOfMemory 2P2A104:21:59No Ejecutado00:39:21-15%Error: OutOfMemory 204:21:59No Ejecutado03:52:26-89%Finalizado correctamente 304:21:59No Ejecutado00:41:05-16%Error: OutOfMemory 3P2A103:44:02No Ejecutado05:32:11-148%Finalizado correctamente 203:44:02No Ejecutado02:15:35-61%Error: OutOfMemory 303:44:02No Ejecutado05:10:38-139%Finalizado correctamente Caso de estudio Anexo Hubo pruebas que no se pudieron completar por falta de recursos Complejidad la cantidad de estados y tiempos utilizando nuestro framework sin el contexto es superior a la utilizada por JPF Agregando los escenarios de control, disminuyen tanto los tiempos como la cantidad de estados El tiempo usando el Fwk c/ctx es mayor al utilizado con JPF aunque la cantidad de estados explorada es menor

Conclusiones generales y trabajo futuro

Conclusiones generales Se implementó un framework que permite Definir propiedades basadas en patrones de eventos sobre JPF Acotar la explosión de estados de manera controlada, mediante escenarios de control Definir propiedades Typestate Actualmente se utilizan XMLs para definir los autómatas En definitiva, Es un punto intermedio entre el testing manual y la exploración exhaustiva de estados Conclusiones generales y trabajo futuro

Trabajo Futuro I Sobre los tipos de eventos implementados Extender el framework para tener en cuenta los parámetros de los métodos invocados Posibilidad de diversificar los tipos de eventos Sobre la exploración de estados Filtrar los estados recorridos utilizando predicados sobre los objetos del modelo Modificar la lógica de generación de estados para evaluar todas las opciones de Interleaving Reducir la cantidad de estados que se generan a partir de la inclusión del framework Conclusiones generales y trabajo futuro

Trabajo Futuro II Sobre el retraso en la verificación de la propiedad Rediseñar la interacción entre la exploración de estados de JPF y el framework Sobre la verificación de múltiples propiedades Aceptar más de una Propiedad Global Aceptar más de una Propiedad Typestate para una misma clase (o jerarquía de clase) Conclusiones generales y trabajo futuro

¿Preguntas?

Fin

Anexo 1: Resultados (I) EscenarioCantidad de Estados Duración de la P rueba (H:M:S) Resultado 1P1A :01:04Terminó correctamente 2P1A :06:25Terminó correctamente 2P2A :21:59Reportó un error de OutOfMemory 3P2A :44:02Reportó un error de Uncaught Exception Cantidad de estados y duración de la verificación utilizando sólo JPF Caso de estudio

Anexo 2: Resultados (II) EscPropDuración% overheadResultado JPF s/FWK FWK Sin contexto FWK con contexto FWK sin contexto FWK con contexto 1P1A100:01:0400:02:2200:01:38222%153%Finalizado correctamente 200:01:0400:01:5500:01:31180%142%Finalizado correctamente 300:01:0400:02:0100:01:37189%152%Finalizado correctamente 2P1A103:06:25No Ejecutado06:21:06-204%Finalizado correctamente 203:06:25No Ejecutado06:39:06-214%Finalizado correctamente 303:06:25No Ejecutado08:25:17-271%Error: OutOfMemory 2P2A104:21:59No Ejecutado00:39:21-15%Error: OutOfMemory 204:21:59No Ejecutado03:52:26-89%Finalizado correctamente 304:21:59No Ejecutado00:41:05-16%Error: OutOfMemory 3P2A103:44:02No Ejecutado05:32:11-148%Finalizado correctamente 203:44:02No Ejecutado02:15:35-61%Error: OutOfMemory 303:44:02No Ejecutado05:10:38-139%Finalizado correctamente Duración de las pruebas (propiedades 1, 2 y 3) EscPropDuración% overheadResultado JPF s/FWK FWK Sin contexto FWK con contexto FWK sin contexto FWK con contexto 1P1A100:01:0400:02:2200:01:38222%153%Finalizado correctamente 200:01:0400:01:5500:01:31180%142%Finalizado correctamente 300:01:0400:02:0100:01:37189%152%Finalizado correctamente 2P1A103:06:25No Ejecutado06:21:06-204%Finalizado correctamente 203:06:25No Ejecutado06:39:06-214%Finalizado correctamente 303:06:25No Ejecutado08:25:17-271%Error: OutOfMemory 2P2A104:21:59No Ejecutado00:39:21-15%Error: OutOfMemory 204:21:59No Ejecutado03:52:26-89%Finalizado correctamente 304:21:59No Ejecutado00:41:05-16%Error: OutOfMemory 3P2A103:44:02No Ejecutado05:32:11-148%Finalizado correctamente 203:44:02No Ejecutado02:15:35-61%Error: OutOfMemory 303:44:02No Ejecutado05:10:38-139%Finalizado correctamente Duración de las pruebas (propiedades 1, 2 y 3) Caso de estudio

Anexo 3: Resultados (III) EscProp# Estados% overheadResultado JPF s/FWK FWK Sin contexto FWK con contexto FWK sin contexto FWK con contexto 1P1A %226%Finalizado correctamente %226%Finalizado correctamente %226%Finalizado correctamente 2P1A No Ejecutado %Finalizado correctamente No Ejecutado %Finalizado correctamente No Ejecutado %Error: OutOfMemory 2P2A No Ejecutado %Error: OutOfMemory No Ejecutado %Finalizado correctamente No Ejecutado %Error: OutOfMemory 3P2A No Ejecutado %Finalizado correctamente No Ejecutado %Error: OutOfMemory No Ejecutado %Finalizado correctamente Cantidad de estados de las pruebas (propiedades 1, 2 y 3) Caso de estudio

Anexo 4: Resultados (IV) EscPropDuraciónDif % (con Contexto / sin Contexto) sin contextocon contexto 1P1A400:00:5400:00:3769% 2P1A406:40:3800:48:5312% 1P1A500:00:2600:00:0415% 2P1A500:00:1800:00:0317% Duración de las pruebas (propiedades 4 y 5) EscProp# EstadosDif % (con Contexto / sin Contexto) sin contextocon contexto 1P1A % 2P1A % 1P1A % 2P1A % Cantidad de estados de las pruebas (propiedades 4 y 5) Caso de estudio

Anexo: JPF - Generación de estados Se crea el estado inicial y comienza la ejecución Para cada instrucción Si se cumplen las condiciones para crear una bifurcación, la VM cierra el estado actual, genera un nuevo estado por cada posible camino y continúa Se repite hasta que todas las bifurcaciones derivan en estados ya visitados Se generan bifurcaciones cuando: la próxima instrucción produce un valor no determinístico (Verify) la próxima instrucción puede tener efectos colaterales que afecten a otros threads La verificación finaliza cuando No hay más estados para visitar Se encuentra una violación ¿Por qué Java PathFinder?

Anexo: Búsqueda original ¿Por qué Java PathFinder?

Anexo: Búsqueda modificada ¿Por qué Java PathFinder?