Métodos Formales en Software
Los métodos formales aplican la lógica matemática a la especificación, desarrollo y verificación de software, permitiendo que las propiedades de un sistema se demuestren en lugar de solo probarse.
Definition
Los métodos formales son técnicas basadas en las matemáticas para especificar, desarrollar y verificar sistemas de software, en las que las especificaciones se expresan en lenguajes formales y las propiedades se establecen mediante pruebas o exploración exhaustiva de estados.
Scope
Este tema abarca lenguajes de especificación formal como Z, B y TLA+; semántica axiomática y lógica de Hoare para razonar sobre la corrección de programas; verificación de modelos (model checking) para sistemas de estados finitos y concurrentes; demostración de teoremas y asistentes de prueba; y el uso de métodos formales en software crítico para la seguridad y la protección.
Core questions
- ¿Cómo se puede especificar el comportamiento del software de forma inequívoca en un lenguaje formal?
- ¿Cómo se demuestra la corrección de un programa con respecto a una especificación?
- ¿Cómo la verificación de modelos verifica exhaustivamente los sistemas de estados finitos y concurrentes?
- ¿Dónde justifican los costos y beneficios de los métodos formales su uso?
Key theories
- Lógica de Hoare y semántica axiomática
- Hoare introdujo una lógica de precondiciones y postcondiciones en la que la corrección de las construcciones de programas se expresa mediante axiomas y reglas de inferencia, proporcionando una base para demostrar que los programas cumplen sus especificaciones.
- Verificación de modelos (Model checking)
- La verificación de modelos explora de forma automática y exhaustiva los estados alcanzables de un modelo de estados finitos para verificar propiedades de lógica temporal, detectando interbloqueos y violaciones que las pruebas probablemente pasarían por alto.
Clinical relevance
Los métodos formales proporcionan la mayor garantía de corrección disponible y se aplican donde el fallo es inaceptable —aviación, señalización ferroviaria, protocolos de seguridad y hardware—, aunque su costo los confina principalmente a componentes críticos en lugar de sistemas grandes completos.
Evidence & guidelines
Las encuestas de la práctica industrial documentan la aplicación exitosa de métodos formales en dominios críticos para la seguridad, y estándares como DO-178C y los Criterios Comunes reconocen las técnicas formales en los niveles más altos de aseguramiento.
History
La verificación de programas fue fundada por Floyd y Hoare a finales de la década de 1960, la verificación de modelos fue desarrollada por Clarke, Emerson y Sifakis a principios de la década de 1980 (ganando un Premio Turing), y desde entonces las herramientas y los asistentes de prueba han llevado la verificación formal al uso industrial para sistemas críticos.
Debates
- Escalabilidad y costo de los métodos formales
- Un debate persistente se refiere a si los métodos formales son económicamente escalables a software industrial grande; los avances en la automatización y los métodos formales ligeros han ampliado la aplicabilidad, pero la verificación completa de sistemas grandes sigue siendo costosa.
Key figures
- C. A. R. Hoare
- Edsger Dijkstra
- Edmund Clarke
- Leslie Lamport
Related topics
Seminal works
- hoare1969
- clarke1999
- woodcock2009
Frequently asked questions
- ¿Los métodos formales reemplazan las pruebas?
- Generalmente no. Los métodos formales ofrecen fuertes garantías sobre un modelo o especificación, pero las suposiciones, el entorno y los aspectos no modelados aún requieren pruebas; en la práctica, ambos son complementarios, con los métodos formales centrados en las propiedades más críticas.
- ¿Por qué no se utilizan los métodos formales en todas partes?
- Demandan una experiencia y un esfuerzo especializados que son difíciles de justificar para la mayoría del software, donde las pruebas ofrecen una confianza adecuada a menor costo; los métodos formales se concentran donde las consecuencias de un fallo son lo suficientemente graves como para justificar la inversión.