Weryfikacja formalna to proces sprawdzający poprawność sprzętu komputerowego i systemów oprogramowania. Weryfikacja formalna porównuje specyfikacje systemu z jego implementacją, a następnie sprawdza, czy są one spójne i spełniają wymagania systemu. Proces ten jest zwykle wykonywany przy użyciu logiki matematycznej i narzędzi weryfikacyjnych, takich jak moduły sprawdzania modeli i dowodzenia twierdzeń równań.
Celem formalnej weryfikacji jest poprawa niezawodności systemu oraz zmniejszenie kosztów rozwoju i utrzymania poprzez zapewnienie, że wdrożenia są zgodne ze specyfikacjami. Proces ten pozwala również zidentyfikować subtelne błędy, które w przeciwnym razie zostałyby przeoczone podczas bardziej tradycyjnych metod testowania. Formalną weryfikację zastosowano przy opracowywaniu wielu systemów o krytycznym znaczeniu dla bezpieczeństwa, takich jak oprogramowanie lotnicze i samochodowe, systemy medyczne i elektrownie jądrowe.
Weryfikacja formalna obejmuje dwa główne etapy: specyfikację i dowód. Na etapie specyfikacji tworzony jest model matematyczny systemu. Model ten służy do reprezentowania właściwości i zachowania systemu w języku formalnym. Na etapie sprawdzania wykorzystywane jest narzędzie umożliwiające porównanie modelu z rzeczywistą implementacją systemu. Jeśli oba są spójne, wówczas wdrożenie uważa się za formalnie poprawne.
Chociaż weryfikacja formalna jest skuteczną i niezawodną techniką, jest to również proces złożony i czasochłonny. Algorytmy weryfikacji formalnej są często zbyt złożone, aby można je było rozwiązywać ręcznie, a narzędzia weryfikacyjne mogą wymagać dużej mocy obliczeniowej. Co więcej, procesy projektowania oprogramowania i sprzętu muszą być dokładnie przemyślane, aby mieć pewność, że model dokładnie oddaje pożądane zachowanie systemu.
Pomimo tych wyzwań weryfikacja formalna pozostaje ważnym narzędziem zapewniającym poprawność systemów krytycznych dla bezpieczeństwa. W miarę ciągłego rozwoju technologii formalne techniki weryfikacji stają się coraz bardziej wyrafinowane, łatwiejsze w użyciu i bardziej opłacalne.