Tankar om programvaruutveckling

Intervju med Markus Borg (RISE / LTH) Markus Borg är näste ut i vår intervjuserie, där Sveriges akademi inom programvaruteknik reflekterar över industrins utveckling.

Kort introduktion av Markus Borg

Markus Borg är senior forskare på RISE SICS AB och tillhör gruppen Software and Systems Engineering Laboratory. Han undervisar också i software engineering som adjungerad lektor vid institutionen för datavetenskap vid Lunds universitet. Hans forskning bedrivs i tät samverkan med industripartners och fokuserar för tillfället på verifiering och validering, spårbarhet, system-av-system och arkitekturbeslut. Hemsida och artiklar hittas på: mrksbrg.com.

Vad är det viktigaste som har hänt inom software engineering de 10 sista åren?
Software engineering rör ständigt på sig, nya tekniker och metoder presenteras nästan hela tiden. För 10 år sedan utexaminerades jag som civilingenjör och började som utvecklare på ABB. Det som oroade mig då var hur jag skulle kunna komma på och implementera komplicerade algoritmer i stil med det man slitit med under studietiden. Det visade sig att den oron var missriktad – numera ligger inte komplexiteten huvudsakligen i algoritmimplementation, utan snarare i hur man ska kombinera komponenter i system, eller till och med skapa system-av-system. Software engineering har fortsatt lyfta abstraktionsnivån, många programmerare är snarare systemintegratörer idag.

Utvecklarnas praktiska arbete har förändrats åtskilligt, bl.a. genom effektivare återanvändning av komponenter. Hur man bäst klistrar ihop komponenterna hittar dagens utvecklare på Stack Overflow – den kunskapsspridning som öppna Q&A-plattformar på webben har möjliggjort mellan utvecklare i helt olika organisationer har verkligen förändrat det praktiska arbetet. Givetvis på gott och ont, idag är det mycket ”Googla först och tänka sen”. Även inom organisationer har kommunikationen förändrats… Det är mycket Slack (kommunikationsverktyget) på team-nivå idag, oavsett om utvecklarna sitter på olika platser eller inte. Kommunikation är nyckeln till så mycket för att lyckas med software engineering – det ska bli mycket spännande att se vad som blir nästa kommunikationskanal.

Vilka är det viktigaste trenderna och utmaningarna nu?
Jag följer intresserat utvecklingen av artificiell intelligens och maskininlärning. Teknikerna mognar allt mer och hittar in i alla möjliga produkter, alltifrån självkörande bilar till beslutsstöd inom vården. Att utveckla produkter med en maskininlärningskomponent innebär nya spelregler, traditionell software engineering behöver anpassas. Utvecklingen innebär inte längre att implementera regelbaserade system, utan istället handlar det om att träna komponenter på stora mängder data. Hur vet man att man har tränat på rätt typ av data? Eller att man har använt tillräckligt många träningsexempel?

Adaptiva system med reglerloopar har funnits länge, men maskininlärning medför nya utmaningar. Den modell som skapas när ett system tränas kan inte granskas i traditionell mening. För den nu så omtalade tekniken deep learning så kan det genereras ett neuralt nätverk med 100 miljoner parametrar – det är inte transparent alls. Hur kan vi säkerställa att systemet lär sig på ett lämpligt sätt? Hur ska man gå till väga om man vill säkerhetscertifiera ett system som ändrar sitt beteende baserat på maskinlärning? Här behövs det mycket forskning.

Hur skall Sveriges lärosäten möta dessa utmaningar?
De två utmaningar jag tagit upp, ökad systemkomplexitet och maskininlärning i produkter, behöver bemötas med förstärkningar i utbildningen. Studenter behöver förberedas bättre för systemperspektivet – det behöver i högre grad leta sig in i undervisningen. Högskolorna är bra på att undervisa komplex algoritmteori och implementation, men betydligt sämre på komplexa system. Det är dålig tillgång på stora system som kan användas i undervisningssammanhang, men sådana exempel behövs verkligen för att studenter ska kunna förstå vad software engineering innebär och vad som är så svårt. Möjligtvis kan stora projekt med öppen källkod bättre utnyttjas i utbildningen? Det finns även ett stort behov av fler kurser inom systems engineering, vilket också påpekades i Sveriges strategiska forsknings- och innovationsagenda för system-av-system från 2015. En uppenbar utmaning är att göra det möjligt för studenter att hinna sätta sig in i ett stort system innan kursen är slut. Att undervisa om system är svårt, men industribehovet är enormt.

För att utbilda studenter redo att ta sig an den andra utmaningen, dvs. utveckling av produkter baserade på maskininlärning, skulle jag gärna se ingenjörer med en ny utbildningsprofil. Utbildningar finns inom software engineering och även inom tillämpad statistik och maskininlärning, ibland under begreppet ”data science”. Kombinerade satsningar vore intressant! Sverige behöver software engineers som kan data science och data scientists som kan software engineering. Data engineers som både kan bygga den nödvändiga infrastrukturen för dataintensiva lösningar och använda stora datamängder för att utveckla innovativa funktioner. Om de dessutom lär sig hur man systematiskt utvecklar mjukvarulösningar… Ingenjörer med den profilen skulle åtminstone jag gärna anställa!

Hur kan Sveriges industri möta dessa utmaningar?
Om mjukvara är oljan i dagens industri så kommer data vara oljan imorgon. Organisationer som kan tämja insamlad data – och samtidigt bearbeta den ingenjörsmässigt som en del i nya funktioner – ligger i rätt position inför framtiden. Dock finns det flera andra utmaningar med data, både när data används för att träna självlärande produkter och när data vägleder utvecklingsarbete som scoping-processer och releaseplanering. Om data samlas in från produkter medan de används, hur ska industrin hantera användarnas integritet? Hur ska man balansera nyttan med insamlad data mot risken att skapa rena övervakningsfunktioner? Datainsamling skapar inte bara etiska tankeexperiment. Samhällsdebatten kring hur vinstdrivande organisationer samlar in stora datamängder kommer att fortsätta och marknadskrafter kommer att tala – användarna kommer att straffa företag som går över gränsen. En annan balansgång kring data gäller hur organisationer ska dela data med andra aktörer på marknaden. Maskininlärning når stora framgångar genom träning på enorma datamängder. Aktörer som delar data kan därmed nå bättre resultat fortare, men samtidigt kan träningsdata bli affärskritisk.

Framtiden för data-intensiva lösningar formas just nu. I min kristallkula ser jag att bolag som äger enorma mängder träningsdata i framtiden kan komma att bli uppköpta av stora spelare just för att få tillgång till data. Det kan även uppstå företag med skapande av högkvalitativ träningsdata som affärsidé. Nischade exempel skulle kunna vara data för bränslesnål krypkörning i stadsmiljö eller mjuka drönarlandningar i blåsigt vinterväder. Det kan också vara värt att hålla ett öga på, och kanske påverka, kommande branschstandarder och eventuella marknadsregleringar – viss typ av data för säkerhetskritiska applikationer data kanske kommer att samlas in av olika bolag, såsom ett EU-moln med sensordata och kamerabilder från trafikolyckor med självkörande fordon.

Hur passar din forskning in i detta?
Jag arbetar just nu i ett projekt som utreder utmaningar som uppstår när man realiserar automatiserade fordon med hjälp av maskininlärning. Som tidigare nämnt skiljer sig system man tränat upp väsentligt från traditionella, manuellt utvecklade algoritmer som ofta bygger på relativt överskådliga regler och logiska samband. För självkörande fordon är objektigenkänning genom deep learning fundamentalt, men hur vet vi ett fordon inte agerar farligt när en fotgängare bär en T-shirt med en stoppskylt? Eller om någon monterar falska skyltar som pekar ut på en åker? Vad händer om någon obehörig börjar dirigera trafik enligt polisens tecken? Det är ännu oklart hur man bäst säkerställer funktionssäkerhet för system som använder sig av maskininlärning.

Hur ska man kravställa en funktion som är självlärande? Hur verifierar man att en sådan är säker? Hur ska man bära sig åt för att arbeta med säkerhetscertifiering när kritiska delar är klassificeringsmodeller från maskininlärning som inte kan analyseras på vanligt vis. Ihop med RISE Viktoria, Volvo Cars, Volvo Technology AB och QRTech genomför vi en konceptstudie för att förstå problembilden, samt föreslå riktningar för framtida forskning. Vårt mål är att hjälpa industrin att realisera potentialen med maskininlärning på ett säkert och robust sätt.

Vem vill du sända stafettpinnen vidare till?
Jag skulle gärna få höra vad professor Kristian Sandahls på Linköpings universitet har att säga. Han har följt utvecklingen länge och är särskilt intresserad av de ständigt aktuella områdena utvecklingsprocesser och kravhantering.