ScholarGate
Asistente

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.

Encontrar tema con PaperMindPróximamenteFind papers & topics
Tools & resources
Descargar diapositivas
Learn & explore
VídeoPróximamente

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.

Methods for this concept

Related concepts