Ett enhetligt ramverk för statisk och körtids-verifiering av objekt-orienterad mjukvara

Vi ser idag en allt starkare strävan inom mjukvaruindustrin efter enkla formella metoder för att verifiera olika aspekter av programvara och system. Att intresset har ökat på sistone har flera anledningar: * Utvecklingen inom programvaruutveckling har gått mot en allt högre abstraktionsnivå, där modeller och automatiserade verktyg har blivit naturliga inslag. Tröskeln är därför lägre för att även inkludera formella metoder och analyser. * Vi ser en ständigt ökande komplexitet i programvarusystem, inte minst i inbäddade system, samtidigt som kraven på säkerhet och tillförlitlighet blir allt högre. * Framsteg inom formell verifiering har lett till bättre metoder som är mer lättillgängliga och mer automatiserade, och som är bättre lämpade för de språk och plattformar som används i stor utsträckning av industrin. Trots detta ser vi en risk att nuvarande forskning inte lyckas leva upp till industrins förväntningar. Statiska metoder för verifiering av mjukvara har förvisso blivit mycket bättre än tidigare, men vissa grundläggande begränsningar har visat sig mycket svåra att komma runt. Metoder med hög precision är alltför svåra att automatisera, medan metoder som möjliggör automatisering kräver abstraktioner som riskerar att missa kritiska aspekter. Ett alternativ till statisk verifiering är att verifiera program under körning. Detta ger full precision och automatisering, men har problemet att alternativa och framtida körningar inte kan verifieras. Därtill innebär sådana lösningar en ökning av körtiden, vilket i vissa fall kan vara olämpligt eller direkt skadligt. Projektet StaRVOOrS (´Unified Static and Runtime Verification of Object-Oriented Software´) syftar främst till att överbrygga dessa tillkortakommanden genom att kombinera respektive styrkor hos statisk verifiering och verifiering under körning. Projektet har som övergripande mål att "skapa en enhetlig metod, enkel och billig att använda men kraftfull i att ge resultat, för att specificera och verifiera, men en bredd av nivåer av garantier, egenskaper hos objekt-orienterade mjukvarusystem". Mer specifikt har StaRVOOrS som mål att skapa ett kraftfullt, integrerat verktyg som låter användare specificera och verifiera egenskaper hos Java-program, där verktyget bakom kulisserna använder både statisk verifiering och verifiering under körning. Detta verktyg implementerar ett enhetligt ramverk för att specificera önskade egenskaper på ett sådant sätt att användare inte behöver veta vad som verifieras statiskt och vad som hanteras vid körning. Som ett led i detta ska ramverket ha stöd för kombinerade data- och kontrollflödesegenskaper, inklusive sådana som rör realtid. KeY är ett verktyg som statiskt verifierar pre- och post-villkor för data över metodanrop. LARVA är ett verktyg som kan verifiera kontrollflödes- och realtidsegenskaper hos Java-program genom monitorer under körning, där egenskaper uttrycks med hjälp av automater (s.k. DATEs) och där händelser motsvarar metodanrop. Det föreslagna ramverket kombinerar dessa olika aspekter i ett gemensamt format för specifikationer med arbetsnamn ppDATE (pre/post+DATE). Översiktligt kommer ramverket först verifiera statiskt de egenskaper som är möjliga att hantera statiskt. Resterande egenskaper, tillsammans med eventuella delbevis om dessa, används sedan för att skapa en ny specifikation utifrån vilken monitorer kan genereras. Därigenom kombineras det bästa av de två metoderna, och deras respektive svagheter minimeras. Konkret kommer forskning behövas på ett antal punkter inom detta ramverk. Ett delmål är framtagandet av formatet ppDATE, som kan kombinera specifikationer av både data-, kontrollflödes- och realtidsegenskaper. Ett annat delmål är möjligheten att från den statiska verifieringen i KeY utvinna partiella bevis som kan användas till att precisera de egenskaper som behöver hanteras vid körning. Ett tredje är att vidare utveckla de monitorer som LARVA använder, i AspectJ, till att även hantera post-villkor, i de fall där dessa inte går att verifiera statiskt. Ytterligare ett rör optimering av monitorerna för att minimera påslaget på körtid. Här finns tidigare forskning kring AspectJ som projektet både kan utnyttja och samtidigt bidra till.

Startdatum 2013-01-01
Slutdatum Projektet är avslutat: 2015-12-31

Publicerad: to 31 maj 2018.