Agil softwareudvikling


Agil softwareudvikling er blevet voksen og ansvarlig

Efter at have været betragtet som et lidt eksotisk fænomen i de unge år, er agile softwareudvikling idag en anerkendt måde til effektiv fremstilling af software. De fleste der arbejder med fremstilling af software kender til det, mange har prøvet det selv, og stadig flere gennemfører succesfulde projekter med agile teknikker.

En stille revolution
Baggrunden for denne stille revolution indenfor softwareudvikling er først og fremmest eksemplets magt. En række store softwarevirksomheder der alle har hastighed og kvalitet som afgørende konkurrenceparametre, opfangede hurtigt at agile teknikker ville være en nødvendighed, hvis de skulle bevare deres position på markedet. Idag anvender, for nu at nævne de største, Google, Yahoo, Microsoft og Amazon varianter af agile softwareudvikling.

Dernæst har de agile metoder selv gennemgået en forandrings- og tilpasningsproces. Fra at være en række enkeltstående metoder, med hver deres svorne tilhængere, er de nu i højere grad et almindeligt anerkendt sæt af teknikker, værktøjer og praksiser, som kan kombineres og tilpasses den enkelte virksomheds produkter og kultur. Derved kan de fleste, uanset udgangspunkt, opnå store fordele i form af bedre styring af projekter og højere kvalitet i slutresultatet.

Endelig er agile softwareudvikling i de seneste år blevet beriget af en udveksling med principper, som ikke har deres oprindelse i softwareudvikling. Mary og Tom Poppendieck har med deres bøger om lean softwarudvikling, knyttet forbindelsen mellem agile og lean principper. Lean, der oprindelig stammer fra japanske virksomheder, og fremfor alt fra Toyota, har i det sidste årti givet store resultater i et bredt spektrum af brancher og virksomheder. Produktudvikling, sagsbehandling og sygepleje er nye områder, hvor lean har bidraget til øget effektivitet og kvalitet. Det er blevet klart at indførelse af agile metoder vil være et skridt på vejen mod en lean softwarevirksomhed.

Den agile virksomhed
Agile software udvikling påvirker en række områder i en virksomhed.

Ledelse

  • Da agile udvikling er baseret på selvstyrende, ansvarlige teams, er ledelsens rolle fokuseret på at sikre optimale rammer for teamet. Fremfor at lede arbejdet og fordele opgaverne, vil ledelsen i samarbejde med medarbejderne, definere mål og fjerne forhindringer for fremdriften. Coaching er et centralt begreb for den agile leder.

Projektledelse og planlægning

  • Planlægning er en vigtig aktivitet, som ikke er henvist til en særlig fase. Planlægning, opfølgning og justering er genkommende aktiviteter i et agilt udviklingsprojekt.
  • Projektstyring, estimation, opfølgning, måling, gennemsigtighed, kommunikation og forudsigelighed står centralt i agile projektstyring.

Engineering excellence

  • De bedste ingeniører og softwareudviklere kender værdien af en displineret tilgang til softwareudvikling. Test-Driven Development (TDD), Continuous Integration, konstant vedligeholdelse og forbedring af koden (Refaktorering) indgår i det agile teams værktøjskasse. Den konstante forbedring er forudsætningen for udviklingshastigheden og kvaliteten.

Team

  • Agile virksomheder véd at teamet er den bærende enhed. Alle software projekter er resultatet af mange menneskers samarbejdende indsats. Derfor er agile softwareudviklinig fokuseret på at det er gruppen der skal have optimale arbejdsbetingelser, ikke bare den enkelte stjerne.

Kontinuert forbedring

  • Refleksion og vilje til at konfrontere problemer og bruge kræfter på at løse dem, er en naturlig ting i et agilt projekt. Alle ved at det ikke gavner projektet at feje skidtet ind under gulvtæppet og lade som om alt er godt, hvis projektet er ved at løbe af sporet.
  • Retrospectives og risikostyring er faste ingredienser i agile projekter. Jo tidligere man identifierer et problem eller en risiko, jo større chance er der for at gøre noget ved det.

Agile metoder er en samlet betegnelse for en række softwareudviklingsmetoder, som alle er baseret på en iterativ udviklingsproces.
I forhold til mange traditionelle metoder, er agile mindre formel, men ikke mindre disciplineret. Agile metoder hævder at sikre kvalitet og resultater, ved at komprimere alle udviklingsfaser i en række korte forløb og derved få udstrakt feedback, som sikrer styringen af projektet.

De mest kendte metoder er:

Scrum
Scrum er primært en teknik til projektstyring på teamniveau. Scrum sikrer at produktet opbygges i en række korte iterationer, hvor alle på teamet bidrager til at nå de fastsatte mål. Et centralt element er produkt-backloggen, som indeholder kravene til projektet, ofte formuleret som user-stories. En userstory beskriver konkret, testbar funktionalitet i det færdige produkt. Arbejde fødes ind i en iteration, i prioriteret rækkefølge, så man hele tiden sikrer at der arbejdes på de højeste prioriteter. Efter hver iteration indeholder produktet færdig funktionalitet, i form af aftestede user-stories. Et Scrum team holder et kort dagligt møde, hvor de næste 24 times arbejde planlægges.

Vil du vide mere om agile softwareudvikling og om hvordan det kan hjælpe jeres software? Kontakt Bent Jensen, og vi kan aftale et uforpligtende møde.