Tankar om programvaruutveckling
Ivica Crnkovic Vi fortsätter vår intervjuserie, där Sveriges akademi inom programvaruteknik reflekterar över industrins utveckling, med Ivica Crnkovic.Kort introduktion av Ivica Crnkovic
Ivica Crnkovic är professor i programvaruteknik vid Chalmers tekniska högskola. Han är också ledare för IKT (informations- och kommunikationsteknik) strykeområde vid Chalmers som går tvärs genom olika forskningsområden. IKT fokuserar på stora samhällsutmaningar som kommer med IT, men som också kan lösas med hjälp av IT. Under perioden 2000-2014 var Ivica professor i programvarutekning vid Mälardalens högskola, och innan dess hade han olika befattningar som projektledare, avdelningschef och utvecklingsingenjör på ABB i drygt 10 år. Har var en av de författarna till vetenskapsrådets ämnesöversikt inom området data- och informationsvetenskap. Ivica kommer att organisera ICSE (International Conference on Software Engineering) i Göteborg 2018, den största och viktigaste konferensen i programvaruteknik.
Vad är det viktigaste som har hänt inom software engineering de senaste 10 åren?
Det finns flera viktiga, nästa revolutionära förändringar som har hänt i programvaruutveckling och till följd även inom software engineering. För det första har software blivit allestädes närvarande, och för det andra har software blivit nästan gratis. För det tredje har software blivit en väsentlig del av bokstavligen talat alla produkter och alla processer. Delvis har den utvecklingen hänt tack vare utvecklingen inom software engineering. Några exempel: det mesta i programvaruutveckling idag baseras på återanvändning – i en ny produkt finns det typiskt 70-80% redan existerande komponenter, p.g.a. bättre återanvändningsteknologier, designprinciper och utvecklingsmetoder. Software Engineering har visat några tydliga trender: a) Agile metoder som dominerande utvecklingsprocesser även om några principer är kontroversiella (som till exempel för mycket fokusering på kod – se mer på den oerhört trevliga boken Bertrand Meyer ”Agile!: The Good, the Hype and the Ugly”); b) programvaruutveckling i form av kontinuerlig evolution och i form av ecosystem där användarna bidrar till utvecklingen; c) återanvändning av programvara har ökat dramatisk med etableringar av service-orienterad och komponentbaserad utveckling; d) model-driven engineering har etablerat sig som teknik som möjliggör generering av kod från modellerna och som har börjat användas i industrin (till exempel Ericsson); e) stödet för mjukvaruutveckling för andra system har ökat dramatisk. Till exempel AUTOSAR är ett mjukvarustandard som används i fordonsindustri. Med evolution-paradigmen kom många nya tekniker – till exempel dynamisk uppdatering av programvaror, dynamisk användning av services. Vi kan säga att mycket har hänt inom software engineering i de senaste tio åren, även om det inte förekom nya banbrytande metoder.
Vilka är det viktigaste trenderna och utmaningarna just nu?
Det finns intressanta referenser som visar dagens trender inom software engineering. En av dem är ”Future of Software Engineering (FOSE) Track from ICSE 2014" där man diskuterar framtiden av olika områden, an annan är svensk rapport från vetenskapsrådet: ämnesöversikt för Programvaruteknik som ingår i Data- och informationsvetenskap.
Programvaran har blivit en av de viktigaste, om inte den viktigaste komponenten i nästan alla system och produkter. P.g.a av programvara har många produkter och services blivit smarta och intelligenta. Detta har förändrat krav på programvaran. Det handlar inte längre bara om utökat funktionalitet, utan också om en rad egenskaper som användarvänlighet, prestanda, och andra viktiga egenskaper som säkerhet (både funktionell säkerhet (safety), och “defensivt” säkerhet (security). En annan stor trend är bearbetningen av data – en oerhört stort mängd av data lagras och kan användas för olika typer av analys – både baserad på statistik, och också på maskininlärning – ett sätt att bygga upp systembeteende baserad på en mängd av data. Ett nytt begrepp ”Data Science” har etablerats. Användning av data från sociala medier i förebyggande syfte utvecklas starkt (se till exempel företag från Göteborg ”Recorded Future”)
En sådan enorm utveckling av programvaran har blivit möjligt tack vare utvecklingen av nya typer av datorer och processorer, av distribuerad exekvering, olika typ av molntjänster och virtualisering av datorsystem. Allt det sätter stora utmaningar i utvecklingen och exekveringen av programvaran: den framtida kommunikationen (som är heterogen, och måste vara effektiv, säker, pålitlig), automatisering av alla möjliga processer med hjälp av intelligenta och autonomt-beslutsfattande system, hantering av ”big data”, och slutligen ”digital hållbarhet” – en förmåga att de nya teknologierna blir hållbara från ett samhällsperspektiv (till exempel hantering av personlig integritet), från miljöperspekivt (till exempel hantering av energiförbrukning, sk. Green Software ), och från affärsperspektiv (att möjliggöra en hållbar utvecklig av företag).
Hur skall Sveriges lärosäten möta dessa utmaningar?
En bra och relevant utbildning är oerhört viktig – information är dagens guld, kunskap är mer värt än naturliga tillgångar. Samtidigt blir konkurrensen tuffare och tuffare. Lärosäten i Sverige måste ha attraktiv, relevant och hållbar utveckling och forskning, samt en stark interaktion med näringslivet och samhället. Ett samarbete mellan lärosäten, industrin och det omgivande samhället fungerar bra i Sverige, bättre än i många andra länder. Däremot finns en ständig risk att samarbeten försvinner p.g.a av globaliseringen – ett internationellt företag som kanske var eller är baserat i Sverige, söker efter relevanta samarbeten globalt. Svenska lärosäten måste se till att de kan ge industrin innovativa tekniska lösningar och ännu mer nuvarande och blivande experter. Detta kräver en excellent utbildning – inte bara i de tekniska ämnena, utan också i de icke-tekniska ämnena, både humanistiska, och naturvetenskapliga. Det är stora utmaningar, speciellt när Sverige (och Västeeuropa) har stora problem med rekryteringar – tekniska ämnen och framförallt forskning är inte i fokus för den unga generationen. Svenska lärosäten har stora utmaningar: att behålla världsklassig forskning, att behålla och vidareutveckla starkt samarbete med svensk och internationell industri, och att bli en attraktiv samlingspunkt för nya studenter.
Hur kan Sveriges industri möta dessa utmaningar?
Sveriges industri har liknade utmaningar som utbildning och forskning. Globalisering och en stor konkurrens gör det svårare att behålla en bra position både lokalt (i Sverige) och globalt. Sveriges industri har en del fördelar – de flesta är högteknologiska, moderna, öppna till nya utmaningar, men kanske mindre förberedda för stora satsningar som görs i andra delar i världen, så som i Asien, och mindre snabba med innovation (jämfört med tex Kalifornien). Att programvaran är ”själen” till produkterna är en fördel för svensk industri som redan använder programvaran i en stor omfattning och kan utnyttja den infrastrukturen som finns i Sverige. Men det räcker inte att följa utvecklingen, det gäller att storsatsa; allt pekar på användning av programvara i större och större omfattningar, så det gäller att snabbt bygga upp kunskap i programvaruutveckling och i olika programvaru-baserade teknologier. Detta är möjligt med ett stark samarbete med akademi och forskning.
Hur passar din forskning in i detta?
Jag har en låg tid som forskare bakom mig – 15 år – och lika mycket industrierfarenhet. Mitt intresse har varit utveckling av programvara som är en del av stora komplexa system. Mina intressen sträcker sig från förbättringsprocesser till olika strategier i programvaruutveckling – till exempel sk. komponent-baserad programvaruteknik, där man bygger programvarusystem från existerade komponenter, och där kan man beräkna och uppskatta olika systemegenskaper innan man bygger upp själva systemet. Jag har varit aktiv i utbildningen där distribuerad/global utveckling varit i fokus. Till exempel har jag organiserat globala projektkurser där studenter från olika lärosäten deltagit. Två gånger (2009 och 2013) har vi vunnit första priset på den mest prestigefulla konferensen International Conference on Software Engineering. Tanken med sådana kurser är att blivande ingenjörer lär sig att jobba i en internationell distribuerad miljö.
Vem vill du sända stafettpinnen vidare till?
Jag skulle vilja skicka ge stafettpinnen till professor Jan Bosch. Han har stor erfarenhet både från industrin och som akademiker, och har starka åsikter om hur man kan lyfta upp europeisk och svensk industri.