RÅ FP: Resursmedveten funktionell programmering
- Diarienummer
- RIT10-0087
- Start- och slutdatum
- 110901-160831
- Beviljat belopp
- 24 250 000 kr
- Förvaltande organisation
- Chalmers University of Technology
- Forskningsområde
- Informations-, kommunikations- och systemteknik
Summary
Målet med projektet är att utveckla domänspecifika inbäddade språk för resursmedveten funktionell programmering med tillhörande utvecklings- och verifieringsverktyg, som kan leverera en tiopotens bättre produktivitet i tre domäner som är viktiga för svensk industri: * signalbehandling och lågnivå-kontroll i produkter som basstationer för mobiltelefoni, * programmering av massivt parallella, heterogena arkitekturer som innnehåller grafikprocessorer, för uppgifter som medicinsk bildbehandling, * realtidsprogramvara för bilindustrin byggd kring AutoSAR-standarden. Våra milstolpar efter två år är: * En komplett verktygslåda för implementation av digital signalbehandling (baserat på dagens Feldspar-projekt) inklusive preliminära industriella case studies. * En prototyp av motsvarande verktygslåda för massivt parallella bildbehandlingsalgoritmer, * En motsvarande prototyp för en del av fordonselektronikområdet (delområdet bestäms efter samråd med industripartners under projektets första år). Efter 5 år: * Breddad tillämpbarhet inom programvarustacken för den framtida Feldsparverktygslådan, * Verkliga fallstudier av tillämpningen av Feldspartekniken, * Kompletta verktyg för fordons-DSL-et, * Kompletta verktyg för bildbehandling med grafikprocessorer, * Ett generellt ramverk och designprinciper för utveckling av domänspecifika språk.
Populärvetenskaplig beskrivning
Programvaruutveckling är en stor industri i Sverige, utan att de flesta känner till det. Hälften av landets export är beroende av programvara, och drygt 75,000 människor jobbar med det. Dock är konkurrensen från låglöneländerna mördande, och för att klara sig beräknar Swedsoft att svensk programvaruutveckling måste bli tio gånger effektivare till år 2020. Detta projekt ska bidra till en dellösning av denna enorma utmaningen. Hemligheten är en ny sorts programspråk, ”funktionella programspråk”, som sköter många detaljer åt programmeraren, och hjälper denna att åstadkomma mycket med bara lite jobb. Sådana programspråk växer fort just nu, och ligger bakom snabbväxande företag som Klarna—men lämpar sig inte när programmeraren behöver styra datorns resursanvändning noga. Tyvärr behövs detta i t.ex. bilens programvara, eller i programmen som avkodar radiosignaler i basstationerna för mobilt bredband—område som är mycket viktiga för svensk industri. I detta projekt använder vi därför funktionella program som skriver andra program—programmeraren skapar sin tillämpning i ett funktionellt språk, och åtnjuter den förbättrade produktiviteten, men när programmet körs skriver det ett annat, effektivt program i ett lågnivåspråk, som kan styra resursanvändningen rätt. Idén kräver dock biblioteksrutiner anpassad till tillämpningsdomänen som hjälper till att skriva dessa lågnivåprogram. Dessa rutiner kan ses som ett nytt domänspecifikt språk för det aktuella tillämpningsområdet. Detta projekt skapar sådana språk för tre viktiga tillämpningar: basstationer för mobilt bredband, fordonselektronik, och datorgrafik. Dessutom angriper vi ett annat stort problem—att nyskriven programvara brukar vara buggig, och buggarna är tidsödande att hitta. Vårt verktyg QuickCheck tillåter utvecklare att sätta upp generella villkor som programvaran ska uppfylla, istället för att skapa många enskilda testfall, och slumpar sedan fram testfall som testar villkoret. Det kan dessutom minimera misslyckade testfall, så att programmeraren får bara ett kvitto på att villkoret uppfylls, eller ett litet exempel som visar att det uppfylls inte. Detta underlättar både testning och feldiagnos, och förbättrar mjukvarans kvalité samtidigt som den sänker kostnader. Metoden används redan för att testa t.ex. styrprogram i Ericssons 4G basstationer; projektet anpassar den även till dessa resursmedvetna domänspecifika språk. Målet är framtagning av resurssnål programvara snabbt, korrekt, och billigt.