LONDON. Medie-giganten Facebook har det ikke så nemt i den internationale presse for tiden.
Problematiske overskrifter om datalæk og gustne forretningsmetoder har domineret både it-pressen og de bredere medier.
Om det er den massivt kedelige omtale, der er baggrunden for at Facebook i denne uge inviterede en større håndfuld europæiske journalister til sit britiske udviklingscenter i London, kan man kun gisne om.
Her havde den ombruste virksomhed nemlig for en gangs skyld en positiv fortælling at berette.
Under ledelse af Mark Harman, som har en længere karriere bag sig som professor i datalogi ved University College London, forsøger Facebook sig med en hel del succes på automatisk vis både at finde og udbedre fejl i programkode.
At Facebook tager fejlretning alvorligt er der ingen tvivl om. På indersiden af dørene til dametoiletterne i London-hovedkvarteret hænger en anvisning på, hvordan selskabets interne ‘Logviewgo’-system kan bruges til analyse af crash i applikationerne.
Men tilbage til den automatiske fejlretning. I første omgang er det Facebooks egne Android-mobilapps, der er under luppen.
Mark Harman var en del af en startup-virksomhed, som beskæftigede sig med teknologien. Det firma blev opkøbt af Facebook for et par år siden.
Søgebaseret optimering
Facebook bruger mange resurser på forskning i test, fortæller Mark Harman. Den største udfordring er skalering.
Fordi noget fungerer i forskning, betyder det ikke nødvendigvis, at det kan skaleres op til et firma som Facebook, hvis mobil-software opdateres med 100.000 ændringer om ugen. Facebook kalder sit system Sapienz.
»Problemet med tests er, at der er flere sekvenser af inddata til eksempelvis mobile enheder, end antallet af stjerner i universet,« forklarer Mark Harman.
»Vi kan ikke dække alle muligheder, men vi kan udvælge eksempler på en intelligent facon.«
Bug eller feature
Taktikken kaldes for ‘søgebaseret optimering.’ Der er lidt af et filosofisk problem, mener Mark Harman, for hvad er rigtig eller forkert opførsel i et program? Det er ligesom den gamle snak om ‘bug eller feature.’
Det kræver et slags orakel for at afgøre den dom, men i stedet kan man klare sig med hvad han kalder for et ‘implicit orakel,’ som bygger på, at de færreste programmører går efter at skrive et program der crasher, løber tør for hukommelse eller hænger i brugerfladen.
Det er ikke alle fejl, som systemet finder, for det forstår ikke tingenes sammenhæng. Et menneske kan måske hurtigt identificere et ISBN-nummer repræsenteret i koden, men den viden har den kunstige intelligens ikke og det spiller ind i, hvilke fejl der kan findes på nuværende tidspunkt.
Test er kedeligt
Facebooks forskere er ikke de eneste på området og årsagen til pressemødet i London er et ‘symposium’, et møde mellem forskere, hvor også Google, Microsoft og universitetsfolk deltager. Der er ligefrem en polynomisk stigning i videnskabelige artikler i forskningsområdet for tiden.
Test er et langsommeligt og kedeligt arbejde for mennesker, mener Mark Harman. Mange firmaer betragter test som noget, der ikke er så vigtigt.
Med unittests og andre fremgangsmåder er udførelsen af test blevet automatiseret, men selve det at skrive testen, samt det patch, der retter en eventuel fejl, har hidtil været programmørens opgave. Nu skal de opgaver også udføres af maskiner.
Processen integreres i et ‘continuous integration'-forløb, hvor der testes automatisk, hvorefter det vurderes, hvor slem fejlen er. Det foregår også maskinelt. Derefter skaber maskinlæring et patch, som en udvikler endeligt kan anvende eller videreudvikle på.
Fejlene findes ved at skabe testsekvenser og rulle dem ud på en stor mængde emulatorer. De fleste fejl er null pointers, hvor en variabel ikke er blevet initieret, og dernæst illegal state, illegal argument, og så videre, som vist på grafen herunder. Det afspejler samme fordeling af fejl på Android-apps i det hele taget, fortæller Mark Harman.
Systemet skal så skaleres op til de 100.000 kodeændringer pr. uge. Men det er næsten 'pinligt nemt' at parallelisere, med den teknologi, som holdet benytter, lyder det.
Statisk analyse finder fejlårsagen
Sapienz kan lokalisere en fejl ved at benytte maskinlæring på stack traces, altså den sekvens af funktionskald, der fører op til et crash.
Udover Sapienz arbejder et andet Facebook-hold på en teknologi med navnet Infer.
Når Sapienz har fundet det sted, hvor fejlen opstår, kan Infer derefter foretage statisk analyse på den lokaliserede kode og måske have held til at udpege en ‘fishy’ kodestump, hvor eksempelvis et kald til et ikke-initieret objekt kan give en null pointer-fejl.
En patch-generator skaber derefter forslag til rettelser ud fra en eller flere passende skabeloner. Dernæst tjekkes, om patchet overhovedet kan buildes, og om buildet kan passerer eksisterende tests, ikke mindst den test, der var årsag til patchet. Hvis det er tilfældet, gives patchet videre til udvikleren, der kan anvende det som det er, videreudvikle på det, eller afvise det.
De automatiske patches kan i 75 procent af tilfældene rette fejlen, og halvdelen af gangene bruger udviklerne forslaget som det er, i stedet for at ændre det eller skrive et patch i hånden, bedyrer Mark Harman. Ifølge ham er denne del af forskningen ‘bleeding edge', som det hedder på engelsk.
Finder og retter fejlen på en time
Målet er detektere fejl, ligeså snart ny kode er tilføjet til kodebasen. Mark Harman har dog ikke noget bud på, hvor stor andel af alle fejl systemet finder, men pointerer, at det gør mennesker nu heller ikke.
Et vigtigt nøgletal er, hvor hurtigt fejlen kan findes. Øjeblikkelige builds giver feedback til udviklerne i løbet af en halv til en hel time, hvor det tidligere kunne have taget en hel dag eller længere. Det betyder, at programmøren stadig har koden frisk i hovedet, når fejlen detekteres.
Lige nu er det som nævnt Facebooks Android-apps, der fejlrettes på, men på et spørgsmål fra Version2 fortæller Mark Harman, at det sagtens kan bruges til andre sprog og sammenhænge, som for eksempel med backend-serverprogrammering, som en af hans ph.d-studerende har eksperimenteret med. Lige nu er det et spørgsmål om prioritering af, hvor kræfterne skal lægges.
Dernæst skal eksempelvis de skabeloner, der ligger til grund for fejlrettelserne, tilpasses hvert enkelt sprog.
På længere sigt vil teknologien blive udsendt som open source, lover Mark Harman. Om det handler om måneder eller år, før det sker, vil han dog ikke gætte på.
Facebook betalte Version2’s rejseomkostninger i forbindelse med artiklen.

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.
Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.
Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.
Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.