Multipla definitioner av procedurer ? feltolerans genom redundans på procedurnivå i ett programspråk
DatavetenskapComputer science - generalComputer science - software engineeringKompilatorMångfaldProgramspråkN-version programmingFeltoleransRedundansMultipla procedurdefinitionerTestningFel
Sammanfattning
Fel i programvara (buggar) kostar ofantliga summor varje år. I detta arbete
presenteras en metod där programexekveringsmiljön utan vare sig programmerarens
eller användarens inblandning utförligt kan rapportera och dölja effekterna av
en avsevärd andel buggar. Genom att kompilatorn eller tolken tillåter att en
och samma procedur implementeras hur många gånger som helst införs ett helt
automatiskt stöd för N-Version Programming (NVP) omedelbart i programspråket.
Tekniken gör programvaran feltolerant och blir ett komplement till kostsam och
ofta bristfällig testning.
En tolk utvecklades för ett programspråk som tillåter multipla definitioner av
procedurer. Därmed har det inbyggt stöd för feltolerans genom redundans på
procedurnivå.
Ett experiment genomfördes där nio programmerare oberoende av varandra
implementerade 12 utförligt specificerade procedurer. De olika bidragen
klistrades in i ett och samma program. Nio av 12 feltoleranta sammansatta
procedurer fungerade perfekt. I många fall även när en majoritet av de ingående
bidragen drogs med allvarliga fel.
Sammanställningen genomfördes både före och efter programmerarnas egen testning
och felrättning. Testningen visade sig vara en faktor med liten inverkan på
helheten även om många enskilda uppdaterade bidrag fungerade avsevärt bättre än
förut.
I något fall lyckades metoden påvisa tvetydigheter i specifikationen när olika
versioner producerade olika men formellt korrekta resultat.