INGENIERÍA
DEL SOFTWARE AUTOMÁTICA
Postgrado Informática
Master ISMFSI (Módulo M2, Semestre A, 5 Créditos)
María
Alpuente - Salvador
Lucas- Santiago Escobar
- DSIC, U. Politécnica de Valencia,
España
PRESENTACIÓN DEL CURSO:
Los sistemas informáticos desempeñan un
papel esencial
en la Sociedad de la Información. A medida que la sociedad se implica
más
en tales sistemas, crece su dependencia hacia ellos y se hace patente
la necesidad de asegurar la corrección de su comportamiento.
Los usuarios de las nuevas tecnologías, trabajando en un contexto
global
donde cada vez más gente y organizaciones entran en contacto, cooperan
y comercian, encuentran cada vez más frustrantes las consecuencias
derivadas
de los fallos de software (como el tener que reiniciar el equipo para
recuperar
un comportamiento estable del sistema), por no hablar de las
repercusiones
que pueden tener estos fallos en las áreas donde la seguridad es
crítica.
La necesidad de ofrecer un nivel de prestaciones
adecuado (corrección, seguridad, etc.) hace que los sistemas software modernos
sean de una complejidad tal que su desarrollo, uso diario y mantenimiento
exigen la utilización, durante las distintas etapas de su vida útil, de
técnicas
y herramientas de asistencia automáticas.
Por su naturaleza, dichas técnicas
deben descansar en fundamentos sólidos que permitan
al usuario de los mismos (ingeniero de requisitos, programador, o
gestor) confiar en la aplicacion bajo cualquier circunstancia. Esta es
la perspectiva que guía la aplicacion de los
métodos formales en
la ingeniería del software. Para
mejorar los resultados de la aplicacion de los metodos formales, nuestro
enfoque apuesta por una aproximacion
ágil -lightweight-
que, en contraste
con otros métodos más tradicionales que promueven una
formalización excesiva
y que requiere una formación matemática poco habitual en los usuarios finales,
se basa en una seleccion precisa y focalizada de los métodos
y notaciones, que integra una variedad de lenguajes, técnicas formales
y herramientas
automáticas que resulta más beneficiosa en la práctica.
OBJETIVOS:
El curso se centra en el estudio de
métodos
formales, y las
técnicas y herramientas automáticas
asociadas,
para dar soporte sistemático y racional al desarrollo del software. Siguiendo un enfoque moderno, que
tiene en cuenta los tres elementos de la trilogía del software
-programas,
datos y propiedades-, estudiamos los procesos formales que transforman
dichas componentes de forma automática, en particular los de mayor
impacto
industrial. Esto incluye, entre otros, los siguientes mecanismos:
Análisis y
especificación (modeling)
Verificación
(model-checking)
Certificación
(proof-carrying code) Síntesis
(machine learning)
Optimización
(análisis y transformación)
Depuración
(diagnóstico y corrección)
Utilizamos los lenguajes declarativos
multiparadigma como instrumento tangible para soportar una aproximación ágil.
Presentamos también algunas lógicas de bajo
coste con capacidad
para soportar (modelar y mecanizar) diferentes áreas de especialización
en software: lógica clausal, ecuacional,
dinámica, temporal, lineal, etc.
PROGRAMA:
Introducción a la Ingeniería del Software Automática (introducción)
- La trilogía del desarrollo del software.
- Métodos formales, la aproximación
lightweight.
- Optimización (análisis y transformación basadas en la semántica)
- Lógicas para aplicaciones software
Procesos formales y tecnología ágil
- Análisis y especificación
* Sistemas de reescritura de términos y programación funcional (S. Lucas)
* Herramientas de especificación y verificación automática (M. Alpuente)
* Integración de la programación lógica y funcional (M. Alpuente)
- Verificación (model-checking)
- Depuración (diagnóstico y reparación)
- Certificación (proof-carrying code)
BIBLIOGRAFÍA (Básica y Complementaria)
- María Alpuente, Francisco Correa, and
Moreno
Falaschi
Declarative
Debugging of Functional Logic Programs
Electronic Notes in Theoretical Computer Science ENTCS:57. Elsevier,
North-Holland, 2001
(
versión
corta en castellano disponible).
- M. Alpuente, M. Falaschi and G. Vidal
A Unifying View of Functional and Logic Program Specialization
ACM Computing Surveys
Vol. 30, No. 3es (Sept. 1998), Pages 9-es.
- María Alpuente, Salvador Lucas
Introducción a la Ingeniería del Software
Automática
U. Politécnica de Valencia, 2002.
- F. Baader and T. Nipkow
Term Rewriting and All That.
Cambridge University Press, 1998.
Puede encontrarse información adicional sobre reescritura
(incluyendo distintos compendios -surveys- sobre el tema)
en
http://www.loria.fr/~vigneron/RewritingHP/
- R. Bird
Introducción a la Programación Funcional con Haskell.
Prentice-Hall, 2000.
-
N. Dershowitz.
Termination of rewriting.
Journal of Symbolic Computation:3:96-116, 1987.
-
M. Muller-Olm, D. A. Schmidt, and B. Steffen.
Model Checking: A Tutorial Introduction.
In Proc. SAS'99. Springer LNCS 1694:330-354, 1999.
-
M. Hanus.
The
Integration of Functions into Logic Programming: From Theory to
Practice.
ACM-TOPLAS:16(5), September 1994.
- D. Le Metayer et al.
Exploring the Software
Development
Trilogy.
Journal of Logic Programming, Vol. 19&20, pp. 583-628, 1994
-
H. Zantema.
Termination of Term Rewriting.
Technical Report UU-CS-2000-04, Utrecht University, 2000.
PRÁCTICAS:
Se realizarán tres grupos de prácticas:
- Análisis de terminación
- Modelización y verificación automática con SMV; El entorno Maude
- Programación multiparadigma:
El lenguaje Curry,
Modelización en Curry
EVALUACIÓN:
La asignatura se evalúa mediante la resolución de cuestiones de caracter teórico-práctico, con dos partes separadas:
A) Sistemas de reescritura de términos (S. Lucas): cuestiones cortas
B) Métodos ágiles (M. Alpuente): test de respuesta múltiple de 20 preguntas (aprox.)
El peso de cada parte es del 50%, necesitándose una nota umbral de 4 (en cada parte)
para promediar. En ambas partes se evaluan tanto los
contenidos teóricos como los prácticos.
Para la parte B se estudiará, de forma alternativa y particularizada a cada caso, la posibilidad