Tankar om programvaruutveckling
Intervju med Hans Hansson (MDH) Vi fortsätter vår intervjuserie, där Sveriges akademi inom programvaruteknik reflekterar över industrins utveckling, med Hans Hansson.Kort introduktion av Hans Hansson
Hans Hansson utsågs 1997 till Mälardalens högskolas (MDHs) förste professor. Han har sedan dess haft en central roll i uppbyggnad av den miljö som idag går under namnet Inbyggda system. Miljön utgörs av närmare 200 forskare och doktorander med gemensamt fokus på datorer och mjukvara inbyggd i produkter och produktionssystem. 2012 bidrog han till att forskningsinstitutet RISE SICS Västerås (RSV) etablerades och har sedan dess haft ett deltidsengagemang som vetenskaplig ledare vid RSV. Hans har initierat och drivit flera större nationella och internationella forskningsprojekt och var 2014-2016 ordförande i Vetenskapsrådets beredningsgrupp för datavetenskap. Hans har varit huvudhandledare för ett flertal doktorander som idag är professorer eller har ledande befattningar i näringslivet. Hans vetenskapliga produktion av drygt 200 vetenskapliga artiklar spänner ett brett område av datavetenskap. Under senare år har han via en ledande roll i utbildningsinitiativet PROMPT varit engagerad i web-baserad utbildning av yrkesverksamma. PROMPT tilldelades 2016 EU-kommissionens utmärkelse European Digital Skills Award.
Vad är det viktigaste som har hänt inom software engineering de 10 sista åren?
Den ur mitt perspektiv mest genomgripande förändringen av hur vi idag utvecklar mjukvara har sin grund i det agila manifestet för mjukvaruutveckling som presenterades redan 2001. Under de senaste tio åren har agil mjukvaruutveckling, om än i varierande utsträckning, införts i snart sagt alla branscher (företag har gått från år till veckor mellan nya releaser). Samtidigt har mjukvaran i än större utsträckning blivit ett konkurrensmedel genom alla de tjänster den möjliggör. Mer närliggande till min egen forskning är införande av modellbaserad och komponentbaserad utveckling. För modellbaserad utveckling är den övergripande ambitionen att höja mjukvaruutvecklingens abstraktionsnivå och därmed minska gapet mellan krav och kod, medan komponentbasering fokuserar på strukturerad återanvändning av mjukvarukomponenter mellan produkter och system. På generell nivå drivs utvecklingen av en dramatisk ökning av mjukvarusystemens komplexitet och kraven att utveckla systemen såväl snabbare som till lägre pris. I de flesta fall handlar det om global konkurrens där företag som inte hänger med i utvecklingen riskerar att förlora stora delar av sin marknad (vilket självklart också innebär möjligheter för de som leder utvecklingen).
Trots ovanstående, var det första jag kom att tänka på när jag fick frågan, inte utvecklingen inom SE i sig, utan att utmaningarna har ökat snabbare än lösningsförmågan. Detta i sig är inte något nytt, utan snarare ett kännetecken för SE. Vad jag tänkte på är att det skett och sker en dramatisk utveckling av tillämpningar och teknik som ställer utmanande krav på mjukvaruutvecklingen. För 10 år sedan var områden som Internet of Things (IoT), Big Data analytics, maskininlärning, molntjänster eller autonoma fordon inte direkt i det allmänna medvetandet. I takt med denna till stora delar mjukvarubaserade utveckling har riskerna relaterade till såväl cybersäkerhet (security), och i många fall även funktionssäkerhet (safety), blivit alltmer påtagliga. Den stora utmaningen är att på ett kostnadseffektivt sätt kvalitetssäkra mjukvaran och därmed de produkter och tjänster som den är satt att hantera.
Vilka är det viktigaste trenderna och utmaningarna nu?
Ovan nämnda utveckling på tillämpnings- och tekniksidan är en viktig trend som innebär fundamentala utmaningar, framförallt för hur vi kvalitetssäkrar de mjukvaruintensiva systemen. Samtidigt fortsätter systemens komplexitet att öka och de samarbetar allt oftare i system-av-system. Det är inte ovanligt att de olika delsystemen ägs och drivs av olika företag. Det kan handla om ”mjukvaru-ekosystem”, där samverkande programvara med olika ägare skapar mervärde för användaren utgående från en mer jämlik och dynamisk ansvarsfördelning. Utvecklingen och evolutionen av dessa system-av-system kan typiskt inte inordnas i ett fast uppgraderings- och releaseschema eftersom de ingående delarna lever ett eget liv och det kombinerade beteendet är så mångfacetterat att det inte på förhand går att förutsäga. De lösningsförslag som forskas på kan sorteras in under nyckelorden ”kontinuerlig (continuous)” och ”dynamisk (dynamic)”, som i ”continuous deployment” och ”dynamic safety assurance”. Där continuous deployment – i sann agil anda – innebär att nya releaser ständigt släpps under drift (oftast i små inkrement). Redan idag sker detta i många smartphone appar och webbaserade tjänster såsom Spotify. En intressant utveckling som troligtvis kommer att spridas från konsumentorienterade tjänster till flera branscher är att sömlöst låta användarna utvärdera olika nya varianter av tjänsten genom att ett slumpmässigt antal användare utan förvarning erbjuds en beta-version och beroende på hur de reagerar väljer man att gå vidare med denna version eller inte. Om användaren reagerar negativt växlar man snabbt tillbaka till den beprövade stabila versionen. Detta förfarande kallas, speciellt inom webutveckling, A/B-testning, men idén går att använda bredare till mer generell spekulativ mjukvaruutveckling. Dynamic safety assurance, som än så länge är i sin linda, handlar om att under drift följa inte bara systemets beteende, utan även hur såväl dess utveckling som användning förändras över tid. Baserat på insamlade data hålls en modell som används för utvärdering av systemsäkerheten dynamiskt uppdaterad. Om säkerheten hotas vidtas lämpliga motåtgärder. I förlängningen är det inte otänkbart att vi får ”självsäkra system”, dvs produkter och tjänster som i stor utsträckning själva kan säkra sin egen kvalitet under pågående evolution av såväl systemet som dess användning.
En annan trend är att i takt med att alltfler system blir uppkopplade och sammankopplade så ökar cybersäkerhetsriskerna. Inte minst för säkerhetskritiska system ökar riskerna att någon illasinnad person/organisation utnyttjar sårbarheter i de externa gränssnitten för att orsaka skada som i värsta fall kan få katastrofala konsekvenser. En relaterad fråga, som inte i första hand handlar om intrång, utan om riskerna att den tekniska utvecklingen skjuter oss i foten (eller huvudet) är det som flera ledande AI-forskare uppmärksammat och som jag här vill sprida information om genom att hänvisa till http://autonomousweapons.org/. Den utmaning som presenteras där kallas AI-Safety, dvs hur ska vi kunna hålla riskerna för att de autonoma system som vi utvecklar inte vänds emot oss på acceptabelt låga nivåer? Den som löser detta problem förtjänar minst ett Nobelpris (passar inget annat så ligger fredspriset nära till hands). I ett mer kortsiktigt perspektiv finns kvalitets- och säkerhetsmässiga utmaningar med de AI/maskininlärningsbaserade lösningar som nu står på tröskeln till en bredare introduktion: Hur kan vi garantera att det är rätt och korrekt data som ligger till grund för inlärningen? Hur kan vi garantera att de beslut som fattas av det resulterande AI-systemet är de rätta och inte orsakar skada? Åtminstone en del av lösningen kan ligga i att kombinera det inlärningsbaserade AI-systemet med mer traditionella övervakande delar som agerar om AI-delen hamnar utanför fastställda ramar.
Traditionell ”safety-engineering” utgår från en detaljerad analys av det tänkta systemet och dess omgivning. Genom att identifiera allt som kan orsaka oacceptabla fel och sedan designa systemet så att dessa fel endast kan förekomma med acceptabelt låga sannolikheter, erhålls ett system som är tillräckligt säkert att driftsätta. Ofta krävs en omfattande dokumentation som måste godkännas av en extern assessor. Detta arbetssätt har historiskt varit mycket framgångsrikt, bl.a. inom flygindustrin där man under de senaste 70 åren på detta sätt lyckats reducera olycksfrekvensen till imponerande låga nivåer. AI-baserade lösningar och även komplexa system-av-system där det är ogörligt att på förhand förutsäga alla beteenden försvårar denna kvalitetssäkring/certifiering avsevärt. Dessutom, även om vi visste hur vi skulle hantera kvalitetssäkringen så hänger de standarder som styr säkerhetsarbetet inte med i den snabba tekniska utvecklingen, vilket är en utmaning i sig.
Hur skall Sveriges lärosäten möta dessa utmaningar?
Lärosäten (och i viss utsträckning även forskningsinstitut) har ett ansvar att dels bedriva långsiktig forskning, dels tillhandahålla förståelse, lösningsförslag och kompetens som är väsentlig för en gynnsam samhällsutveckling. Den långsiktiga forskningen skapar förutsättningar för de mer kortsiktiga leveranserna. Det är här viktigt att etablera ett ekosystem där mer grundläggande forskning, tillämpad forskning och utbildning är ömsesidigt stärkande. KK-stiftelsen kallar detta en ”komplett miljö”. I sådana miljöer skapas samhällsnytta och den långsiktiga forskningen inspireras av aktuella utmaningar, vilket ökar chansen att även den i förlängningen kan nyttiggöras, samtidigt som detta inte kan vara ett kortsiktigt krav för all forskning. Det oväntade uppstår ju som bekant där man minst anar det…
En konkret svaghet i vårt nuvarande akademiska system, som bl.a. uppmärksammas i den pågående utredningen om ett nytt finansieringssystem för våra lärosäten är att lärosätena trots ett ökat behov av livslångt lärande snarare blivit sämre än bättre på att bidra till detta. KK-stiftelsen bedriver här ett intressant kompetensprogram , där bl.a. PROMPT som erbjuder ett 20-tal webbaserade kurser för yrkesverksamma inom SE ingår.
Hur kan Sveriges industri möta dessa utmaningar?
Ingen enkel fråga, men det enkla svaret är att hänga med i utvecklingen och fatta bättre beslut än konkurrenterna. Samtidigt som det självklart är viktigt att kapitalisera på de investeringar som gjorts så måste företag för uthållig överlevnad förstå vilka trender som kan komma att påverka den egna verksamheten. De egna strategierna och planerna behöver bygga på en förståelse av trender i omvärlden. En viktig grund för detta är tillgång till rätt kompetens, vilket kan säkras genom rekrytering och utbildning av egen personal, men även via samarbeten med kompetensleverantörer och medverkan i branschspecifika och branschövergripande nätverk. Samverkan med lärosäten och institut i forskningsprojekt är ytterligare en möjlighet. Här kan Vinnovas strategiska innovationsprogram vara en möjlig ingång. För vidareutbildning erbjuder PROMPT kurser på avancerad nivå. Andra intressanta möjligheter erbjuds av Swedsoft, Software Centre och ämnesspecifika intresseföreningar, såsom SAST inom mjukvarutest. Det gäller att botanisera i floran av möjligheter och hitta en engagemangsnivå som passar den egna organisationen.
Hur passar din forskning in i detta?
Självklart är en hel del av ovanstående baserat på min egen världsbild som är starkt färgad av mina egna forskningsfrågor och samarbeten med näringslivet, vilka under senare år haft ett starkt fokus på kvalitetssäkring av säkerhetskritiska system. Från en bas i formell verifiering, datakommunikation och realtidssystem har den forskning jag är inblandad i under det senaste decenniet handlat om komponentbaserad mjukvaruutveckling för inbyggda system, utökningar av denna för återanvändning även av information relaterad till certifiering av funktionssäkerhet, kopplingen mellan cybersäkerhet och funktionssäkerhet, kvalitetssäkring av samarbetande system-av-system, samt molnteknik för säkerhetskritiska system.
Mycket spännande forskning är det – samtidigt som jag kan känna en frustration över att vi i stort sett bara lyckas lösa begränsade delproblem. Det ligger mycket i uttrycket ”ju mer jag förstår, desto mer förstår jag att det finns mycket som jag inte förstår” (och än mindre har en lösning till).
Vem vill du sända stafettpinnen vidare till?
Jag skulle vilja veta vad Chalmersprofessorn Andrei Sabelfeld anser om utvecklingen, möjligheterna och riskerna med AI.