Tankar om programvaruutveckling

Elizabeth Bjarnason Elizabeth Bjarnason är näste ut i vår intervjuserie, där Sveriges akademi inom programvaruteknik reflekterar över industrins utveckling.

Kort introduktion av Elizabeth Bjarnason
Elizabeth är biträdande lektor vid Institutionen för Datavetenskap vid Lunds universitet där hon tillhör forskningsgruppen inom Software Engineering (SERG) sedan 2010. Hon bedriver forskning inom det industriella excellenscentret EASE (Excellence Centre for Embedded Applications Software Engineering) som är ett samarbete mellan tre företag och två universitet. Just nu forskar hon även vid Pufendorf institutet, Lunds universitets tvärvetenskapliga institut. Elizabeth har 15 års industriell erfarenhet av programvaruutveckling från Ericsson/Sony Ericsson/Sony Mobile där hon framför allt arbetat med kravhantering och verksamhetsutveckling. Inom EASE leder hon ett tema som fokuserar på beslutsstöd för programvarutestning med mål att hjälpa företag bli mer effektiva i operationella så väl som strategiska beslut. Till exempel, genom metoder för effektivare urval av test scope vid regressionstestning och för rekommendationer om balansen mellan explorativ och skriptad testning. EASE projektet undersöker även hur verktyg kan stödja kognitiva aspekter omkring beslutsprocessen, t ex genom att visa information relevant för nuvarande situation och kontext. Vidare koordinerar Elizabeth det tvärvetenskapligt projektet Digiwork vid Pufendorf Institutet (LU). Projektet undersöker hur digitaliseringen påverkar arbetslivet, och hur väl system och produkter är designade och kravställda för att fungera väl i befintliga arbetsprocesser. Projektet undersöker även hur teknikutvecklingen påverkar sociala relationer, t ex till patienter och kollegor, och hur ökad övervakning påverkar arbetsmiljön.

Vad är det viktigaste som hänt inom SE de senaste tio åren?
Det har skett en explosion i användandet av programvarubaserade tjänster genom mobila appar och tjänster på nätet. Större delen av vår vakna tid är vi uppkopplade och använder olika former av programvara på en mängd olika sätt, i allt från att betala räkningar, kolla hemlarmet när man är på tjänsteresa, till att koppla av framför Netflix och kolla sociala medier. Det här ställer stora krav på programvaruutvecklingen. Dagens användare förväntar sej moderna system som är enkla och smidiga att använda. Parallelt så ökar kraven på att leverera mer och bättre programvara i en snabbare takt med ny funktionalitet och förbättrad kvalité. Idag förväntar vi också att olika system i hög grad fungerar smidigit tillsammans, varvid integration och interoperabilitet mellan system blir allt viktigare. Här finns stora utmaningar för utvecklingsorganisationer och projekt att leverera mer och bättre programvara, i en allt snabbare takt. Samtidigt som ledtider för produktutveckling pressas så krävs en stor flexibilitet i att hantera den ständigt förändrade kravbilden från kunder och användare. Det är frestande att snåla in på kravanalysen och istället snabbt producera körande programvara. Men med vilken kvalité? Programvaran behöver stödja det användaren vill göra snarare än att kräva att användaren anpassar sej till svåranvända och dåligt fungerande system.

Vilka är de viktigaste trenderna just nu?
Den ökade uppkopplingen mot nätet inklusive sensorer (så kallade Internet of Things, IoT) genererar mycket information (Big Data) som i kombination med smarta algoritmer möjliggör många nya tjänster som tidigare var helt otänkbara. Till exempel, bilar som kan fickparkera, självgående gräsklippare och dammsugare, och uppkopplade kylskåp som du kan titta i från affären. Automatiseringen av olika arbetsuppgifter och funktioner som vi tidigare gjort manuellt avlastar och hjälper oss, och kan effektivisera administrativa processer. Men vi behöver även beakta hur tekniken i förlängningen påverkar oss och vårt samhälle. Till exempel, självkörande lastbilar, automatiserad lagerhållning, robotar inom hemtjänst och sjukvård. I vårt uppkopplade samhälle blir data, dvs information om oss och vad vi gör, hårdvaluta som kan användas för att anpassa tjänster till våra behov. Dock har detta också en baksida där data kan användas för att övervaka oss både privat och på jobbet. Här behövs såväl ny lagstiftning som tekniska lösningar för att skydda samhället och individen och för att säkerställa integritet och säkerhet.

Hur ska Sveriges lärosäten möta dessa utmaningar?
Framtidens ingenjörer behöver kunna kombinera sin tekniska kompetens med insikt i den domän som tekniken ska användas i. Detta för att kunna utveckla produkter som är avancerade men ändå enkla att använda och välanpassade til slutanvändarens behov och arbetsprocesser. Metoder och tekniker för detta finns inom, t ex, kravhantering och interaktionsdesign. Utbildningar inom programvara och systemutveckling behöver därför kombinera och integrera kurser i tekniska ämnen med undervisning om utvecklingsprocesser så som kravhantering, projektplanering, testning etc. Detta för att ge studenterna insyn i komplexiteten av industriell utveckling av programvara och vikten av samarbete och kommunikation mellan olika roller. Till viss del behandlar ingenjörsutbildningarna redan dessa aspekter, men ofta som separata och valfria kurser medan de mer tekniska kurserna till stora delar är ”befriade” från dessa perspektiv. Utbildningen som helhet behöver förmedla en holistisk bild av programvaruutveckling, från behov till användande, t ex genom att exemplifiera användande av den teknik och de metoder som lärs ut, både i kontexten av slutprodukter och i termer av utvecklingsprocess. En tät interaktion med näringslivet under utbildningen är önskvärd, t ex genom praktik och projektkurser i nära samarbete med industrin. Ett enkelt sätt att exponera studenterna för ”verkligheten” är att annordna gästföreläsningar där yrkesaktiva ingenjörer tar upp praktiska aspekter och tillämpningar på den teori som lärs ut. Detta ger studenter en inblick i yrkeslivet och hjälper dem att relatera studierna till sina framtida yrkesroller.

Hur kan Sveriges industri möte dessa utmaningar?
Efterhand som programvaran bli mer tekniskt komplex så blir det viktigare att anpassa tekniken till människor snare än tvärtom. Det finns för många exempel på system som är dåligt anpassade för sitt syfte och som skapar extra arbete och irritation för användaren istället för att avlasta och hjälpa. Tänk bara på senast gången du gjorde en reseräkning! Utvecklingsprojekt måste tillåtas ta höjd för att identifiera och analysera användarnas behov, och att designa lösningar därefter. Företag som utvecklar programvara och programvarubaserade produkter behöver även se över och anpassa sin organsiationen och sina utvecklingsprocesser till den förändrings- och leveranshastighet som krävs. Här finns stora utmaningar i att optimera balansen mellan helheten för produkten med de ingående delarna, både de tekniska komponenterna och utvecklingsteamen som ansvarar för dem. För att säkerställa en effektiv utveckling så krävs det att hela organisationen arbetar mot gemensamma mål. Här är en dynamisk och agil kravhantering ett viktigt arbetsredskap för att kunna hantera kravförändringar igenom hela utvecklingsprocessen, och för att säkerställa att användarperspektivet inte tappas bort på vägen. Här kan även behövas kompetensutveckling för att inhämta kunskap om såväl ny teknik som metoder för att designa och utveckla användarvänliga produkter. De företag vi har samarbetar med ser även aktivt deltagande i forskningsprojekt som en viktig del i sin kompetensutveckling och att därigenom få tillgång till de senaste forskningsresultaten.

Hur passar din forskning in i detta?
Jag forskar framför allt på kommunikation och koordinering inom programvaruutveckling för att stödja effektiv utveckling av produkter som möter användarnas krav och behov. Hittills har jag primärt fokuserat på kommunikation mellan ingenjörer. Inom Digiwork projektet undersöker vi kommunikation mellan användare och ingenjörer. Forskningen har visat att olika sorters avstånd försvårar kommunikationen och även påverkar ett projekts koordineringsförmåga och effektivitet. Avstånd kan vara geografiska, men det finns även organistoriska och kognitiva avstånd. Organisatoriska avstånd påverkar de mål och direktiv en ingenjör arbetar efter medan kognitiva avstånd omfattar skillnader i kunskap och prioriteringar mellan projektmedlemmar. Dessa avstånd gör det svårare att förstå varandra och förhindrar ofta effektivt samarbete. Jag bedriver huvudsakligen empirisk forskning i nära samarbete med industripartners för att lösa deras problem och utmaningar. Mitt mål är att ta fram nya metoder och tekniker för att identifiera och minska kommunkationsglapp. Min forskning visar att avstånd kan minskas eller överbryggas med arbetsmetoder som tvärfunktionella grupper, och även genom en ökad medvetenhet om existerande avstånd, ex.vis. inom ett projekt. Jag driver f.n. ett projekt vilket har som mål att utveckla en applikation för att upptäcka kommunikationsglapp och föreslå relevanta samtalspartner inom en stor utvecklingsorganisation baserat på avståndsbegreppet och på analys av naturligt språk.

Vem vill du sända stafettpinnen vidare till?
Jag skulle vilja skicka den till Markus Borg. Han arbetar som senior forskare på RISE SICS, ett forskningsinstitut inom Swedish ICT, där han tillhör deras Software and Systems Engineering Laboratory i Lund. Hans forskning syftar till beslutsstöd inom programvaruutveckling genom att applicera smarta algoritmer på stora mängder projekt-related data.