Métodos para la construcción de software fiable

Asignatura del Programa de Doctorado
"Ingeniería del Software e Inteligencia Artificial"
impartido por el Departamento de Lenguajes y Ciencias de la Computación de la Universidad de Málaga
Motivación
Temario
Transparencias
Conferencias
Bibliografía
Material de consulta adicional
Profesores



Motivación


La presencia de errores en el software es una constante desde que se
diseñaron los primeros lenguajes de programación, y su depuración
siempre ha sido uno de los mayores problemas de su desarrollo.
En este curso, se da una  visión del amplio panorama de las  técnicas y herramientas
más recientes y potentes  para análisis  automático del software
con el fin de aumentar su fiabilidad. Se organizan las aportaciones del mundo
académico e industrial en los  últimos años  y se da una perspectiva de la integración
que se está produciendo, que llevará sin duda a que las técnicas de análisis automático
de errores forme parte de los futuros entornos de desarrollo,
especialmente para aplicaciones como protocolos de comunicación, sistemas oprativos o sistemas empotrados.

El curso se centra en el uso métodos formales para la construcción de software fiable. De forma general,
podemos decir que los métodos  formales son notaciones y técnicas para analizar sistemas,
con prestaciones  mucho más potentes que las realizadas por los compiladores o depuradores.
Son  formales en el sentido de que están basados en alguna teoría
matemática como, por ejemplo, la lógica. En la actualidad se consideran  de mayor interés
los métodos formales denominados fuertes que permiten   la automatización casi completa
de todo el proceso de análisis del software. Los métodos formales, en este contexto, son útiles
para eliminar ambigüedades, y para depurar sistemas. Pueden usarse  para verificar que un sistema
satisface su especificación, o para  encontrar algún caso en el que no lo hace.
Su uso disminuye el tiempo dedicado a encontrar errores de  diseño o de codificación.
Actualmente estám soportados por un conjunto maduro de herramientas
de análisis automático como SPIN, SMV o UPPAAL.

Los métodos que se estudian en el curso son de máxima actualidad,
de hecho basándose en ellos, varias grandes compañías están desarrollando herramientas
propias que amplían las posibilidades de análisis de los tradicionales entornos de desarrollo.
En esta línea se encuentran SLAM (Microsoft), FeaVer, Verisoft (Lucent) y JPF (NASA).



 

Temario Arriba
 
Las Técnicas de Descripción formal en el análisis de errores software.
Analisis de errores mediante Comprobación  de Modelos.
Interpretación abstracta aplicada a la Comprobación de modelos. 
Transformación de programas. Evaluación parcial.
Aplicaciones. Fiabilidad en Lenguajes de programación y en UML.
Otros métodos para fiabilidad. Demostradores de teoremas. Testing.


Algunas Transparencias Arriba

Introducción
Fundamentos de Model Checking

Data Flow Analysis
Interpretación Abstracta
Model Checking Abstracto


Conferencias impartidas dentro del curso Arriba

Dra. María Alpuente Frasnedo
Título de la Conferencia: Ingeniería del Software Automática
Fecha: 26 de Junio de 2003
Resumen


Dra. Alicia Villanueva García
Título de la Conferencia: Binary Decision Diagrams (BDDs) - Model Checking Simbólico
Fecha: 24 de Mayo de 2004
Transparencias


Miguel Valero Espada
Título de la Conferencia: Verificación de Protocolos con Algebra de Procesos
Fecha: 15 de Diciembre de 2004
Transparencias


Bibliografía Arriba


D. A. Peled, Software Reliability Methods, 2001, Springer
E. M. Clarke and O. Grumberg and D. A. Peled, Model Checking, 2000, The MIT Press
B. Bérard et. al, Systems and Software Verification. Model Checking Techniques and Tools, 1999, Springer
F. Nielson, H. R. Nielson, C. Hankin, Principles of Program Analysis, 1998, Springer
G.J. Holzmann. The Spin Model Checker, 2003, Addison-Wesley
G. J. Holzmann, Design and Validation of Computer Protocols, 1991, Prentice-Hall



Material de consulta addicional Arriba

•Artículos tipo “survey”

– Clarke E. M., Wing J. M.,  Formal Methods: State of the Art and Future Directions,
ACM Workshop on Strategic Directions in Computing Research, ACM Computing Surveys vol. 28(4): 626-643, 1996.

–Gunter C., Mitchell J.,  Strategic Directions in Software Engineering and Programming Languages,
ACM Workshop on Strategic Directions in Computing Research, ACM Computing Surveys, 28(4): 727-737, 1996.

•Informes sobre errores software

–Peter G. Newmann, The Risks Digest (http://castle.ncl.ac.uk/Risks/)
–Thomas Huckle,  (http://wwwzenger.informatik.tu-muenchen.de/persons/huckle/bugs.hrml)
Software Horros Stories,  (http://www-courses.cs.uiuc.edu/~cs376/horror.html)
–Peter Ladkin (www.rsv.uni-bielefeld.de/publications/Incidents/DOCS/FBW.html)


 

Profesores  Arriba

María del Mar Gallardo  gallardo@lcc.uma.es
Pedro Merino                pedro@lcc.uma.es