Uitgebreide statische controle - Extended static checking

Uitgebreide statische controle ( ESC ) is een verzamelnaam in de informatica voor een reeks technieken voor het statisch controleren van de juistheid van verschillende programmabeperkingen. ESC kan worden gezien als een uitgebreide vorm van typecontrole . Net als bij typecontrole wordt ESC automatisch uitgevoerd tijdens het compileren (dwz zonder menselijke tussenkomst). Dit onderscheidt het van meer algemene benaderingen van de formele verificatie van software, die doorgaans afhankelijk zijn van door mensen gegenereerde bewijzen. Bovendien bevordert het de bruikbaarheid boven degelijkheid, in die zin dat het tot doel heeft het aantal valse positieven (overschatte fouten die geen echte fouten zijn, dat wil zeggen ESC boven striktheid) drastisch te verminderen ten koste van het introduceren van enkele valse negatieven (echte ESC-onderschattingsfout, maar die geen aandacht van de programmeur nodig hebben, of die niet het doelwit zijn van ESC). ESC kan een reeks fouten identificeren die momenteel buiten het bereik van een typecontrole vallen, waaronder delen door nul , array-out-of-bounds , integer-overflow en null-dereferenties .

De technieken die bij uitgebreide statische controle worden gebruikt, zijn afkomstig uit verschillende gebieden van de computerwetenschappen , waaronder statische programma-analyse , symbolische simulatie , modelcontrole , abstracte interpretatie , SAT-oplossing en geautomatiseerd bewijs van stellingen en typecontrole . Uitgebreide statische controle wordt over het algemeen alleen uitgevoerd op een intraprocedureel niveau (in plaats van een interprocedureel niveau) om op te schalen naar grote programma's. Verder is uitgebreide statische controle bedoeld om fouten te rapporteren door gebruik te maken van door de gebruiker aangeleverde specificaties, in de vorm van pre- en postcondities , lusinvarianten en klasse-invarianten .

Uitgebreide statische checkers werken doorgaans door de sterkste postcondities (resp. zwakste precondities ) intraprocedureel te verspreiden via een methode die uitgaat van de preconditie (resp. postconditie). Op elk punt tijdens dit proces wordt een tussenvoorwaarde gegenereerd die vastlegt wat op dat programmapunt bekend is. Dit wordt gecombineerd met de noodzakelijke voorwaarden van de programmaverklaring op dat moment om een verificatievoorwaarde te vormen . Een voorbeeld hiervan is een uitspraak met betrekking tot een deling, waarvan de noodzakelijke voorwaarde is dat de deler niet nul is. De verificatievoorwaarde die hieruit voortvloeit, luidt feitelijk: gegeven de tussenvoorwaarde op dit punt, moet volgen dat de deler niet nul is . Aangetoond moet worden dat alle verificatievoorwaarden onwaar zijn (dus correct door middel van uitgesloten derde ) om een ​​methode te laten slagen voor uitgebreide statische controle (of "niet in staat om meer fouten te vinden"). Meestal wordt een of andere vorm van geautomatiseerde stellingbewijzer gebruikt om verificatievoorwaarden te ontladen.

Extended Static Checking werd ontwikkeld in ESC/Modula-3 en later in ESC/Java . De wortels zijn afkomstig van meer simplistische statische controletechnieken, zoals statische debugging of Lint (software) en FindBugs . Een aantal andere talen hebben ESC overgenomen, waaronder Spec# en SPARKada en VHDL VSPEC. Er is momenteel echter geen veelgebruikte programmeertaal voor software die uitgebreide statische controle biedt in de basisontwikkelomgeving.

Zie ook

Referenties

Verder lezen