Ulf
Nilsson BakgrundSyftet
med området formella metoder är i första hand
att (1) erbjuda matematiska verktyg för att formellt modellera,
specificera och verifiera egenskaper hos system, helst tidigt
i utvecklingsprocessen, samt att (2) erbjuda verktyg och metoder som
så långt detta är möjligt säkerställer
att systemegenskaper bevaras under designprocessen. Ordet "säkerställer"
skall här inte tolkas bokstavligt vissa steg i processen
kan och bör inte alltid formaliseras utan bör bygga på
informella eller halv-formella steg, men processen bör vara stegvis,
rigorös och alla designbeslut bör vara välgrundade. Syftet
med formella metoder är alltså att införa rutiner och
verktygsstöd för att:
För att kunna resonera formellt om system och systemegenskaper krävs ett formellt specifikationsspråk (för att beskriva systemegenskaper) och ett modelleringsspråk (för att beskriva själva systemet). Dessa behöver inte vara ett och samma språk modelleringsspråket kan t.ex. vara en grafisk notation och specifikationsspråket textbaserat. Det är en fördel om modelleringsspråket understödjer abstraktion och förfining och därmed kan användas åtminstone under den tidiga designen av system. Möjligheten till abstraktion är också viktig eftersom vissa typer av egenskaper ibland är enklare att visa innan systemmodellen vuxit och blivit alltför komplex. Detta gäller inte minst om man, som i ett av projekten nedan, vill isolera fel i systemet det färdiga systemet är ofta så komplext att diagnos blir praktiskt taget omöjlig om man inte utgår från en abstraktion, dvs. en modell av systemet. Vår forskning inriktas på att utveckla metoder och verktygsstöd för specifikation, design och analys av diskreta dynamiska system innehållande inbyggd programvara. Vi undersöker bland annat hur logikprogram och villkorsprogrammering kan användas för att specificera och modellera dynamisk system. Vi kommer att undersöka om metoder som idag används för analys av programspråk exempelvis, abstrakt interpretering och programtransformationer kan kombineras med metoder för systemverifikation. Vi undersöker även hur andra matematiska modeller exempelvis tillståndsmaskiner och olika former av kalkyler kan användas för systemmodellering och för att resonera om systemmodeller.Industriella motivProgramvara får en allt större betydelse i olika industriella system. Samtidigt saknas bra metoder för att verifiera och validera om den ingående programvaran verkligen gör vad den ska. Testning som är den idag dominerande metoden fungerar acceptabelt för sekvensiella, deterministiska program, men det blir allt vanligare att programvaran är distribuerad eller exekverar parallellt och då är testning inte längre någon tillförlitlig metod eftersom systemet inte längre alltid beter sig deterministiskt - ett system kan mycket väl bete sig som förväntat i hundra testkörningar för att nästa gång, utan synbar anledning, bete sig helt annorlunda. Formell verifikation löser naturligtvis inte alla problem eftersom formell verifikation liksom testning i allmänhet bara kan visa på närvaron av fel men flera systemegenskaper som inte kan verifieras med hjälp av testning kan visas med formell verifikation. Detta gäller t.ex. säkerhetsegenskaper och vissa tidsegenskaper. Oerhört mycket tid och pengar läggs idag ner på testning. Den stora nackdelen med testning är dock inte detta, utan att fel inte upptäckas förrän systemet eller systemkomponenten redan utvecklats (i bästa fall). Detta kan naturligtvis leda till stora kostnader i form av felsökning och om-design av systemet. Formell verifikation möjliggör tidig upptäckt av fel. Dessutom understödjer formell specifikation tidig förståelse av problemet och systematisk design av det färdiga systemet. Formella metoder gör det även möjligt att betrakta system på olika abstraktionsnivåer något som är viktigt både ur dokumentationssynpunkt och för att kunna analysera systembeteenden i många fall är abstraktion en nödvändighet eftersom det färdiga systemet ofta är alltför komplext. Trots de uppbara fördelarna med formella metoder finns samtidigt en viss skepticism mot området. En orsak till detta är säkerligen bristen på lättanvända system (även om det börjat dyka upp kommersiella produkter). Men en bidragande orsak är säkerligen också att de formella metoderna är för generella och tar för liten hänsyn till existerande metoder och praktik. Det är därför viktigt att försöka hitta verkliga problem, att studera existerande metoder och att försöka anpassa de formella metoderna till gängse praxis.ProjektbeskrivningProjektet
bedrivs inom TCSLAB (Laboratoriet för Teoretisk Datalogi) vid Institutionen
för datavetenskap, Linköpings universitet. Projektet leds
av Ulf Nilsson (docent) och omfattar för närvarande
en doktorand, Dan Lawesson, och en stipendiat (tilltänkt
doktorand), Vladislavs Jahundovics, och består av tre delprojekt.
Delprojekt 1: Verktygsstöd för designgranskningDetta
projekt avslutades formellt augusti 2001 och var ett samarbete med Ericsson
SoftLab AB med finansiering från Vinnovas komplexa tekniska system.
Syftet med projektet var att understödja tidig upptäckt av
fel i reaktiva system inom telekomindustrin. De dominerande metoderna
för att upptäcka fel är idag testning och inspektion
. Testning kan dock bara användas på ett existerande system
eller på en prototyp av systemet, något som leder till att
många fel upptäcks sent. Inspektion kan användas tidigare
i processen men inspektion är i allmänhet ett manuellt arbete
utan annat stöd än checklistor och "style-guides". Doktoranden
Tim Heyer beskrev i sin licentiatavhandling hur metoder utvecklade för
att formellt bevisa programkorrekthet kan modifieras för att understödja
ett mer informellt arbetssätt. Han har bland annat visat hur den
modifierade metoden kan användas för att automatiskt generera
frågor som kan utnyttjas vid kodgranskning . Sedan april
1999 har vi arbetat med att generalisera dessa ideer så att de
kan användas under systemutvecklingens tidigare faser - speciellt
vid designgranskning av systemet. Vi har undersökt hur metoderna
ska generaliseras för att kunna resonera om en systemdesign i UML
(Unified Modeling Language) en grafisk designnotation baserad
på objekt-orienterade principer. Projektet har resulterat i:
Delprojekt 2: Modellbaserad diagnos av objekt-orienterade styrsystemDen andra verksamheten bedrivs inom ramen för ISIS i samarbete med ABB Robotics och Reglerteknik vid ISY. Motivationen för projektet är ett styrsystem för industrirobotar som utvecklats vid ABB. Systemet bygger på en objektorienterad arkitektur och är mycket konfigurerbart. Tillsammans leder detta till en dynamisk systemarkitektur där komponenterna endast är "medvetna" om sin omedelbara närhet och där systemfel ofta blir svårdiagnosticerade feltillstånd leder i allmänhet till propagerande felmeddelanden; felmeddelanden som i händelse av kommunikationsfel inte loggas; och i de fall då meddelanden loggas så är ordningen inte alltid relevant. Arbetet har hittills lett fram till en metod för felisolering baserad på strukturell information som beskriver systemets arkitektur [10,11,15]. I det fortsatta arbetet studerar doktoranden Dan Lawesson hur metoden kan förbättras genom att även ta i beaktande information om systemets dynamiska beteende (som beskrivs med hjälp av UML statecharts). I ett antal artiklar [2,6,7] presenteras hur formella metoder baserade på s.k. model checking kan utnyttjas för att resonera om systemets kausala beroenden genom att reducera dessa till egenskaper som rör den temporala ordningen mellan händelser i systemet. Dan försvarade sin licentiatavhandling i mars 2001, och beräknas försvara sin doktorsavhandling i slutet av år 2003. Delprojekt 3: VerifikationDelprojektet fokuserar på språk och tekniker för att modellera och automatiskt verifiera egenskaper hos programvara och (distribuerade) diskreta system. Bland resultaten kan nämnas:
Publikationer, avhandlingar och rapporter 1998-2002
|
| Copyright © 1998-2002, Ulf Nilsson |