Product Design, Manufacturing & Innovation Resources
Lar » Verificação formal

Verificação formal

1980
  • Edmund M. Clarke
  • E. Allen Emerson
  • Joseph Sifakis
Engenheiro de ciência da computação revisando modelo de verificação formal no escritório.

(Imagem gerada apenas para fins ilustrativos)

Formal verificação A verificação formal é a utilização de métodos matemáticos para provar ou refutar a correção do projeto de um sistema em relação a uma especificação formal. Ao contrário dos testes, que só podem mostrar a presença de erros para entradas específicas, a verificação formal pode provar a sua ausência para todas as entradas possíveis. Envolve a criação de um modelo formal do sistema e a utilização de técnicas como a verificação de modelos ou a demonstração de teoremas.

A verificação formal proporciona o mais alto nível de garantia da correção do sistema. O processo começa com a criação de um modelo formal do sistema usando uma linguagem matemática, como lógica temporal ou álgebra de processos. Um conjunto de propriedades, derivadas dos requisitos do sistema, também é expresso em uma linguagem formal. O processo de verificação utiliza então ferramentas automatizadas para explorar sistematicamente todos os estados possíveis do modelo, a fim de determinar se as propriedades especificadas são verdadeiras.

Duas técnicas principais são utilizadas: verificação de modelos e demonstração de teoremas. A verificação de modelos é uma técnica automatizada que explora todo o espaço de estados de um modelo com um número finito de estados. Se uma propriedade for violada, o verificador de modelos produz um contraexemplo — um traço de execução específico que demonstra a falha. Isso é altamente eficaz, mas pode sofrer com o problema da "explosão do espaço de estados" em sistemas muito complexos. A demonstração de teoremas envolve representar o sistema e suas propriedades como fórmulas lógicas (teoremas) e usar provadores automatizados ou interativos para construir uma prova formal de correção. Essa abordagem pode lidar com sistemas de estados infinitos, mas geralmente requer um esforço manual significativo por parte de especialistas.

Embora computacionalmente dispendiosa e exigindo conhecimento especializado, a verificação formal é indispensável para sistemas críticos de segurança ou proteção, onde o custo de falha é extremamente alto. Ela tem sido aplicada com sucesso para verificar a correção de unidades de ponto flutuante de CPUs, protocolos de comunicação e sistemas de controle, em situações onde testes exaustivos são inviáveis.

UNESCO Nomenclature: 1203
Ciência da Computação

Tipo

Software/Algoritmo

Interrupção

Fundamentais

Uso

Nicho/Especializado

Precursores

  • lógica proposicional e de predicados
  • automata theory
  • cálculo lambda
  • semântica de programa (ex: lógica de Hoare)
  • teoria da complexidade computacional

Aplicações

  • projeto de microprocessador (ex: correção de bug do Intel Pentium FDIV)
  • software de aviônica (ex.: sistemas fly-by-wire)
  • análise de protocolo criptográfico
  • sistemas de sinalização ferroviária
  • drivers de software para sistemas operacionais críticos

Patentes:

NA

Ideias de Inovação Potencial

Devido ao tráfego de bots de coleta de dados, atualmente superior a 40 mil por dia, este conteúdo é reservado aos membros da comunidade.
> Login < ou > Registrar < (100% gratuito) para acessar isso, assim como todo o restante do conteúdo e das ferramentas restritas.

Relacionado a: verificação formal, verificação de modelos, demonstração de teoremas, métodos formais, correção, verificação de software, verificação de hardware, lógica temporal.

Contexto histórico

Verificação formal

1970
1973
1980
1980
1980
1982-07-01
1988-06-01
1970
1970-01-01
1975-06-01
1980
1980
1980
1986-01-01
1990

(Caso a data seja desconhecida ou irrelevante, por exemplo, "mecânica dos fluidos", é fornecida uma estimativa aproximada de seu surgimento notável)

Imagens em tamanho real e downloads estão disponíveis apenas, 100% gratuitos, para membros registrados.