Técnicas distribuídas para verificación acotada eficiente

El análisis formal de artefactos de software suele dividirse en dos clases de enfoques: pesados y livianos. Los métodos pesados ofrecen plena certeza del resultado obtenido pero requieren usuarios expertos. Losmétodos livianos son más fáciles de aprender y se materializan en herramientas totalmente...

Descripción completa

Detalles Bibliográficos
Autor: Rosner, Nicolás Leandro
Tipo de recurso: tesis doctoral
Estado:Versión publicada
Fecha de publicación:2015
País:Argentina
Institución:Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
Repositorio:Biblioteca Digital (UBA-FCEN)
Idioma:inglés
OAI Identifier:tesis:tesis_n6011_Rosner
Acceso en línea:https://hdl.handle.net/20.500.12110/tesis_n6011_Rosner
Access Level:acceso abierto
Palabra clave:INGENIERIA DE SOFTWARE
ANALISIS AUTOMATICO DE SOFTWARE
VERIFICACION EXHAUSTIVA ACOTADA
SISTEMAS DISTRIBUIDOS
EJECUCION SIMBOLICA
ALLOY
JAVA (LENGUAJE DE PROGRAMACION)
JML
TACO
SOFTWARE ENGINEERING
AUTOMATED SOFTWARE ANALYSIS
BOUNDED EXHAUSTIVE VERIFICATION
DISTRIBUTED SYSTEMS
SYMBOLIC EXECUTION
JAVA
Descripción
Sumario:El análisis formal de artefactos de software suele dividirse en dos clases de enfoques: pesados y livianos. Los métodos pesados ofrecen plena certeza del resultado obtenido pero requieren usuarios expertos. Losmétodos livianos son más fáciles de aprender y se materializan en herramientas totalmente automáticas,pero la validez de sus resultados es parcial. Por ejemplo, en las técnicas de verificación exhaustivaacotada, la validez del resultado devuelto por la herramienta automática siempre está limitada poralguna noción de alcance o tamaño máximo configurable por el usuario. Para incrementar el grado deconfianza en el resultado, el usuario sólo debe aumentar ese alcance y volver a ejecutar la herramienta. Sin embargo, el costo computacional del análisis automático es casi siempre exponencial en dichoalcance. En esta tesis presentamos una serie de técnicas y herramientas cuyo objetivo es mejorar la escalabilidaddel análisis exhaustivo acotado de artefactos de software. En particular, nos interesa poderaprovechar la disponibilidad de hardware de bajo costo (como por ejemplo clusters de PCs, existentesen muchas empresas e instituciones) para extender la frontera de lo tratable mediante esta clase deenfoques. Por una parte presentamos transcoping, un enfoque incremental para explorar problemas de verificación exhaustiva acotada en tamaños pequeños y extrapolar la información recolectada para asistirla toma automática de decisiones en tamaños mayores del mismo problema. Mostramos su aplicaciónal análisis distribuido de modelos Alloy, así como a la toma de decisiones en la generación de casos detest basada en invariantes híbridos. También presentamos Ranger, otra técnica distinta para distribuir el análisis de modelos Alloy,que divide el problema en subproblemas de menor complejidad linealizando el espacio de potencialescontraejemplos y partiéndolo en intervalos disjuntos. Por otra parte, construyendo sobre la noción de cotas ajustadas para campos de la técnica TACO,presentamos MUCHO-TACO, una técnica para distribuir la verificación de programas Java anotadoscon contratos JML, basada en la herramienta secuencial TACO. Por último presentamos BLISS, un conjunto de técnicas para refinar la búsqueda de estructurasválidas durante la ejecución simbólica, basadas en Symbolic PathFinder.