Vad är formell verifiering?

Ofta används i testning av datorkretsar och programvara, formell verifiering är när funktionen hos dessa system analyseras med hjälp av matematiska formler. När det gäller utveckling av mjukvara, används processen vanligtvis för att visa om programmet fungerar korrekt, baserat på en förutbestämd modell. Ibland har den teoretiska modellen visat sig vara otillfredsställande. Förutom källkod för programvara kan formell verifiering användas för att utveckla kombinationskretsar, som används för att utföra beräkningar i datorer, såväl som datorminne. De olika tillvägagångssätten inkluderar efterhandsverifiering, verifiering parallellt och integrerad verifiering förutom olika metoder.

Matematiska procedurer för beräkningar, kallade algoritmer, används i formell verifiering för att testa produkternas funktioner i varje utvecklingsstadium. Mjukvaruutvecklare kan hitta fel eller buggar i både källkoden och modellen som användes för att bygga den i första hand. Ibland kan grundläggande förändringar i hur koden skrivs göras innan ett designfel påverkar slutresultatet. Verifieringssteget hjälper i allmänhet att avgöra om produkten gör det som var tänkt att göra och uppfyller specifikationerna för applikationen den är till för.

Formell verifiering kan ske när en produkt är färdig, vilket kallas efterhandsverifiering. En standardmetod, som används under hela design- och utvecklingsprocessen, analyseras inte förrän systemet är färdigt. Att lokalisera allvarliga fel i detta skede leder ofta till dyra och tidskrävande revisioner. Utveckling och verifiering kan också utföras av två separata team för verifiering parallellt. Genom interkommunikation kan utvecklarna fokusera på självständiga uppgifter under hela designprocessen.

Integrerad verifiering är när ett team utför utvecklingen och den bedömning som krävs. Komplexa matematiska begrepp används ofta för att verifiera produktens kapacitet längs vägen. Metoder för formell verifiering varierar mellan projekt, men en som ofta används är modellkontroll. En hård- eller mjukvarumodell består av olika egenskaper som designers vill ha i den färdiga produkten. Modellen och systemet kan kontrolleras med jämna mellanrum för att se om egenskaperna matchar.

En annan teknik i formell verifiering innebär att man använder matematiska formler och logik för att representera ett system och dess egenskaper. Regler definierade i ett formellt system återfinns vanligtvis i logiken. Båda dessa tekniker använder olika metoder för att avgöra om en viss specifikation för en produkt är uppfylld. Utvecklare kan använda olika typer av programvara i den formella verifieringsprocessen, var och en skräddarsydd för ett specifikt system eller programmeringsspråk.