
- Hem
- Forskning
- Hitta forskning
- AI för mjukvara och mjukvara för AI: lika fantastiskt som komplext
AI för mjukvara och mjukvara för AI: lika fantastiskt som komplext
På avdelningen Interaktionsdesign och Software Engineering finns en av världens största forskargrupper inom Software Engineering, internationellt känd för mer tillämpad forskning och en nära samverkan med industrin.
Jennifer Horkoff från Kanada är en av forskarna i gruppen och har inriktat sig på kravställning för mjukvarusystem. AI börjar nu förändra villkoren för kravställning, men komplexiteten består.
På Lindholmen finns en stor och internationellt välkänd grupp inom mjukvara. Gruppen är bland de största forskargrupperna inom mjukvara i världen och innehåller många framstående forskare inom kravspecifikation, testning, mjukvaruarkitektur och AI-teknik. Miljön är mycket internationell med forskare och doktorander från över 15 länder som till exempel USA, Indien, Iran, Frankrike, Tyskland, Kina och Uzbekistan.
En av dessa forskare är Jennifer Horkoff från Kanada som ingått i grupperingen sedan 2016.
Jennifer Horkoff började sin bana med en kandidatexamen i datavetenskap, men valde sedan att specialisera sig inom mjukvaruteknik. Hon insåg tidigt att hon ville ägna sig åt forskning och jagade redan som kandidatstudent runt efter olika personer som kunde ha forskningsprojekt tillgängliga. Som masterstudent fick hon ett forskningsprojekt att fördjupa sig inom. Projektet gick bra, Jennifer insåg att hon gillade mjukvaruområdet och har hållit fast vid det sedan dess. Hon har både sin master- och sin doktorsexamen från University of Toronto i Kanada, där hon arbetade med målmodeller och kravhantering. Jennifer minns tiden som väldigt rolig, men uppskattar också att numera få bedriva mer tillämpad mjukvaruforskning i nära samverkan med industrin.
Kravställning för mjukvara en konst
– Sedan ungefär 20 år tillbaka bedriver jag forskning inom kravhantering för mjukvarusystem, säger Jennifer Horkoff. Att jobba med kravhantering för mjukvarusystem innebär att ha en förståelse för vad systemet ska utföra och hur väl systemet ska utföra sina uppgifter. Det kan tyckas som en självklar sak, men det är inte så enkelt som det låter.
– I vår forskning försöker vi skapa olika teorier, principer, praxis, metoder och verktyg för att göra denna process så kontrollerad som möjligt.Vi vill uppnå en mycket god förståelse och kunna skapa exakt definition av vad ett system ska utföra och hålla den kunskapen levande under systemets livstid. Målet är att försöka skapa ett system som är enklare och överskådligare men samtidigt mer sofistikerat: stabilare, säkrare, mer pålitligt med en högre kvalitet och där systemet även kan upprätthålla dessa egenskaper under hela den tid det kommer att vara installerat.
Konflikter mellan kvaliteter
– Det finns många sätt att utveckla ett system och olika lösningar generar dessutom olika kvaliteter, säger Jennifer. Konflikter mellan kvaliteter i mjukvara är ett stort forskningsområde i sig. En viss sorts lösning kan åstadkomma en viss sorts kvalitet, men samtidigt ha negativ inverkan på en annan. Du måste försöka hitta ett sätt att balansera mellan de kvaliteter du vill uppnå. Min doktorsavhandling handlade faktiskt om just det – hur man analyserar olika modeller för att försöka förstå vilka avvägningar som är de mest optimala när man ska navigera mellan olika krav och olika tekniska lösningar.
Kravhantering som innefattar AI
Under senare år har Jennifer Horkoff även arbetat med kravhantering för system som inkluderar AI och maskininlärning. Tekniken är rätt ny för mjukvaruområdet; när Jennifer var doktorand var det ”vanlig” programvara de bedrev forskning på. Med ny praxis där man börjar lägga till maskininlärning i mjukvarusystemen, blir även problemen kring att konstruera optimal programvara betydligt mer komplexa. Det är svårt att på förhand specificera vad AI-systemen klarar att utföra och också svårt att överblicka vad de bör utföra – enligt Jennifer Horkoff blir det fler risker i mjukvaruutvecklingen som är svåra att förutse.
– Alla de tekniker, ramverk och verktyg som vi tidigare har tagit fram för kravställning och mjukvaruutveckling behöver nu också kunna tillämpas på system som inkluderar maskininlärning, säger Jennifer. Vissa delar av det material vi har inom kravhantering behöver ibland skrivas om, ibland kan materialet användas som det är. Alla problem som vi har haft inom mjukvarukravställning i decennier finns tyvärr fortfarande kvar trots artificiell intelligens. Nu har vi dessutom fått in nya och ibland mer komplexa problem att lösa just på grund av maskininlärningsaspekten.
Hur använder vi AI optimalt för att lösa verkliga problem?
– Fokus när det gäller Software Engineering kopplat till AI-teknologi handlar alltså inte så mycket om att komma på nya och innovativa sätt att bedriva maskininlärning eller nya algoritmer eller nya tillvägagångssätt, säger Jennifer Horkoff. Snarare om att använda alla de briljanta resultat som AI generar och komma underfund med hur vi kan använda oss av dessa i verkliga livet. Mycket av forskningen inom AI är fantastisk men är till stor del baserad på labbsituationer och kan ibland vara svår att tillämpa på verkliga problem. Här kommer AI-tekniken in: att hitta rätt data och att låta AI-delarna integreras med hela mjukvaruprodukten som är stor och komplex.
– För oss i vår grupp inom Software Engineering handlar det alltså mindre om att uppfinna ny AI och mer om att bara införskaffa olika AI-system, arbeta med systemen ute i verkligheten och tillämpa alla de mjukvaru- och kravtekniska principer som vi har arbetat med det senaste 40 åren.
Mycket handlar om "Taming the beast"
Trots inslagen av AI och maskininlärning i sitt arbete numera, så ser Jennifer sig fortfarande som mjukvaruingenjör.
– Återigen, från mitt kravtekniska perspektiv handlar allt fortfarande om att specificera vad maskinen ska göra, säger Jennifer. Jag ser inte arbetet så mycket som man versus machine. Tekniken är ett redskap, det handlar om att få systemet att utföra precis det du har tänkt dig och även om hur väl systemet utför uppgiften. Det är en rätt svår process, både när du använder dig av traditionell mjukvaruteknik och när du till exempel tränar en maskininlärningsmodell. Arbetet med att få in precis rätt data i systemet är komplext och kanske använder du dig dessutom av generativ AI med öppen källkod. Det blir mycket teknik och många olika system. Har du en tillräckligt fördjupad förståelse för vad det är du behöver få systemet att utföra? Har du något sätt att mäta hur väl systemet utför sig uppgift?
– Det handlar som jag ser det mer om att ”tämja odjuret”, än människa kontra maskin. Vilket är det mest optimala sättet använda olika former av AI som hjälp för att utveckla mjukvara och för att ställa en vettig kravspecifikation?
AI för att ta fram förbättrad mjukvara och mjukvara för att ta fram förbättrad AI
Det här är ett stort forskningsområde påpekar Jennifer Horkoff. Det är mycket arbete som pågår inom AI och mycket arbete på gång inom Software Engineering och arbetet går åt båda hållen: AI för att förbättra mjukvara och mycket mjukvaruarbete för att förbättra AI och maskininlärning.
– Vi har i vår forskning studerat olika exempel där vi använt antingen maskininlärning eller generativ AI för att förbättra kvaliteten på våra kravspecifikationer för mjukvara, säger Jennifer. Du har olika krav som du i textform anger för systemen och ställer sedan frågor som: Okej, på vilka sätt kan mina krav vara tvetydiga? Finns det några uttalade fel i kravställningen? Är det något jag saknar? Och systemen ger då förslag på förbättringar, de olika kraven klassificeras och systemen svarar kanske: "Det här är ett tvetydigt krav och just det här kravet inte är testbart". För den här typen av uppgifter ser vi att AI och maskininlärning kan vara riktigt, riktigt användbara.
Är generativ AI för kravställning verkligen representativ för det valda området?
– Men det är också lätt att dras med och lite för lättvindigt använda sig av generativ AI för att få fram kravspecifikationer för mjukvara, säger Jennifer Horkoff. I stället för att skapa en kravspecifikation på traditionellt sätt genom intervjuer med användare, marknadsundersökningar och kanske studera app-recensioner, frågar du nu bara AI:n "Okej, jag har den här typen av system, vilka är kraven jag borde implementera?"
– Det är frestande att använda den här sortens generiska AI-system eftersom de är framgångsrika när det gäller att skriva krav som låter bra och sammanhängande. Systemen framstår som relativt kompletta. Problemet är att den kontext och de personer som du ska designa systemet för och den enorma datakälla som den generativa AI:n är tränad på, kanske inte är desamma? Generell och generativ AI är allmänt sett tränad på en enormt stor mängd västerländska källor av data och denna data är kanske helt enkelt inte representativ?
Hur ska maskinen förstå användarna?
När det är svårt för människor?
– Hur vi ska kunna få en maskin eller ett system att verkligen förstå användarnas behov är också en bra fråga, då ett av de största problemen idag består i kommunikationen mellan användarna och de som utvecklar systemet, säger Jennifer. Det är det här som kravhantering till största delen har handlat om under väldigt många år. Hur fångar du på ett effektivt sätt informationen och kravspecifikationen från användaren och hur stämmer du av med användaren att ni har förstått varandra rätt? Det är svårt. Nästan all kravkonstruktion idag är till stora delar en manuell uppgift eftersom det är mycket svårt att helt automatisera detta.
– Men trots manuell hantering med verkliga personer som försöker tolka behoven, kommer alltid vissa förutfattade meningar komma med från de personer som befinner sig i processen. En del av de uppfattningar som mjukvaruutvecklarna har kring användarnas behov baseras på erfarenhet – det här kan vara uppfattningar som underlättar det kommande arbetet och är bra för projektet. Men somliga av utvecklarnas förutfattade meningar kan också leda projektet på avvägar. Det är mycket svårt att definiera vad som är bra och vad som är dåliga "bias".
– Det finns en berömd artikel om den ”intelligenta okunskapen” av Dan Barry, en välkänd forskare inom kravhantering, säger Jennifer. Du kan vara intelligent men samtidigt okunnig inom många områden – som medicin eller fordonsindustri eller vilken domän som helst. Den okunnigheten är bra eftersom du då kan ställa många dumma frågor som tvingar människor att ifrågasätta sina antaganden.
– De gigantiska problemen med det nyinstallerade IT-systemet Millennium i Västragötalandsregionen hösten 2024 är ett bra lokalt exempel på hur svårt det kan vara att skapa ett system som verkligen fungerar för en komplex verksamhet. Det var ett mycket stort och välkänt IT-företag som tillhandahöll sin produkt, men någonstans måste det ha blivit luckor i kravställningen när systemet skulle anpassas för svenska behov. Historiskt sett finns många exempel på enorma IT-systemsatsningar som misslyckats och som dessutom ofta varit enormt dyra.
Nytt "AI Engineering Lab" för ökad kunskap om hur vi ska tillämpa AI-teknik i praktiken
Forskargruppen inom Software Engineering har nyligen skapat ett AI Engineering Lab. "Labbet" är främst en informell grupp med ett gemensamt intresse för tillämpningar av AI-teknologi.
– AI Engineering Lab har software engineering som bas, men vi vill bredda nätverket och bjuda in alla som arbetar med AI-tillämpningar i den verkliga världen; datavetare, säkerhetsexperter, nätverksexperter och alla möjliga andra!, säger Jennifer Horkoff. Med labbet och vår nya webbsida hoppas vi kunna koppla ihop alla sorters kompetenser som arbetar med liknande problem kring tillämpningar av AI.
Text: Catharina Jerkbrant, 2024