Los métodos formales son técnicas matemáticas para el desarrollo de software que permiten especificar, verificar y validar sistemas de manera precisa. Ofrecen ventajas como una mejor comprensión y especificación del sistema, así como una verificación matemática de su corrección. Aunque requieren herramientas complejas y especialistas, han tenido éxito en proyectos industriales grandes al reducir errores y costos.
4. En la geniería de Software
En la Ingeniería de Software los métodos formales se utilizan para:
● Las políticas de los requisitos
● La especificación
● Las pruebas de correspondencia entre la especificación y los
requisitos
● Las pruebas de correspondencia entre el código fuente y la
● especificación
● Pruebas de correspondencia entre el código máquina y el código
fuente
5. Ven ajas de los métodos formales
● Especificación
● Verificación
● Validación
6. Es ecificación
La ingeniería de Software
tiene problemas para la
especificación de
comportamientos.
La especificación formal
proporciona una mayor
precisión.
Detección de ambigüedades y
omisiones.
7. Verificación
“Se esta construyendo el producto
correcto.”
Con los métodos comunes a pesar
de la generación de manuales de
pruebas rigurosos solo se logra
eliminar los errores más evidentes.
Las técnicas de verificación formal
dependen de especificaciones
matemáticas precisas.
8. Validación
“Se esta construyendo el producto correcto.”
Utilizado principalmente para sistemas complejos como aquellos de modelado
y simulación.
9. Ventajas
● Se comprende mejor el sistema.
● La comunicación con el cliente mejora ya que se dispone de una
descripción clara y no ambigua de los requisitos del usuario.
● El sistema se describe de manera más precisa.
● El sistema se asegura matemáticamente que es correcto según las
especificaciones.
● Mayor calidad software respecto al cumplimiento de las
especificaciones.
● Mayor productividad
10. Desventajas
● El desarrollo de herramientas que apoyen la aplicación de métodos
formales es complicado y los programas resultantes son incómodos
para los usuarios.
● Los investigadores por lo general no conocen la realidad industrial.
● Es escasa la colaboración entre la industria y el mundo académico,
que en ocasiones se muestra demasiado dogmático.
● Se considera que la aplicación de métodos formales encarece los
productos y ralentiza su desarrollo
11. Cla ificación
● Especificaciones basadas en lógica de primer orden y
teoría de conjuntos
● Especificaciones algebraicas
● Especificación de comportamiento
○ Métodos basados en álgebra de procesos
○ Métodos basados en Redes de Petri
○ Métodos basados en lógica temporal
12. Los 10 andamientos
(Bowen, Hinchley)
1. Seleccionarás la notación adecuada.
2. Formalizarás, pero no de más.
3. Estimarás los costes.
4. Poseerás un experto en métodos formales a tu disposición.
5. No abandonarás tus métodos formales de desarrollo.
6. Documentarás suficientemente.
7. No comprometerás los estándares de calidad.
8. No serás dogmático.
9. Comprobarás, comprobarás y volverás a comprobar.
10. Reutilizarás cuanto puedas.
13. Los 7 itos de Hall
1. Los métodos formales pueden garantizar la corrección del
software
2. Todos los métodos formales se refieren a la corrección de
programas
3. Son de utilidad solamente para sistemas de altas
prestaciones/alta integridad (safety-critical)
4. Su uso requiere una alta cualificación o entrenamiento
matemático
5. Incrementan el coste de desarrollo
6. Son inadecuados y no serán aceptados por los clientes
7. No se usan en la realidad en proyectos software de gran
escala
14. Fracasos de la Aplicación de MF
● Algoritmo de división del procesador Pentium (1993)
Costo: 475 millones de dólares, credibilidad de Intel
● Explosión de la misión espacial Ariane 5 (1996)
Costo: 500 millones de dólares
● Orbitador climático de Marte (1998)
Costo: 125 millones de dólares
15. Logros de la Aplicación de MF
● Metéor, Matra Transport, France:
Herramienta: Atelier-B
Resultado: No se encontró ningún error
durante el testing de 80000 líneas de código.
● SPOT 4, CS-CI, France:
Herramienta: IFAD VDM-SL Toolbox
Resultado: Se redujo un 38% menos de código
fuente y un 36%menos de esfuerzo total.
16. El futuro de los métodos formales
“Un mundo en el que los productos software siempre serán fiables, y
que la labor de los ingenieros de software sea realmente Ingeniería.”
Logic in Computer Science
26th International Conference on
Computer Aided Verification (CAV)
17. Conclusiones
Los métodos formales son técnicas matemáticas,
a menudo soportadas por herramientas, para el
desarrollo de sistemas software y hardware.
Su rigor matemático le permite a los ingenieros
analizar y verificar sus modelos en cualquier
parte del ciclo de vida del desarrollo.
18. Conclusiones
Mediante un método formal, el sistema se
deja de ver como un generador de
eventos y se empieza a tratar como un
transformador de estado.
19. Conclusiones
Los métodos formales tienen un nivel más
elevado de precisión cuando se realizan
procesos de validación y verificación del
software, sobretodo en aplicaciones con
grados altos de complejidad.
20. Bibliografía
● Ian Somerville. Ingeniería del Software 7ma. Edición. Pearson, 2005.
● Edgar Serna Montoya. Métodos formales e Ingeniería de Software. [Internet] Septiembre 2010.
Disponible en: http://www.redalyc.org/pdf/1942/194214476008.pdf
● Rodolfo Quispe-Otazu. ¿Que son los Métodos Formales?. Blog de Rodolfo Quispe-Otazu
[Internet]. Febrero 2009. Disponible en: http://www.rodolfoquispe.org/blog/que-son-los-
metodos-formales.php
● Carlos Gustavo Lopez Pombo. Métodos formales en la ingeniería de software: en busca de la
bala de plata. 2004. Disponible en: http://www-2.dc.uba.
ar/charladeborrachos/presentaciones/charla_2004-29-10.pdf