Agil systemutveckling
Agil systemutveckling är ett samlingsnamn för ett antal programutvecklingsmetodiker som kan användas vid programvaruutveckling, även kallade lättrörliga metoder. Metoderna följer i stort sett samma värderingar, principer och synsätt.[1] Jämfört med tidigare vattenfallsmodeller representerar de mer flexibla sätt att arbeta. Agile är engelska och betyder smidig, vig, lättrörlig.
Grundtankarna bakom agile bygger på att göra kunden/användaren nöjd med det som utvecklas genom ett mycket nära samarbete under hela utvecklingstiden med täta och regelbundna möten mellan utvecklare och beställare/mottagare. Arbetet bedrivs inkrementellt och iterativt vilket innebär att regelbundna mindre leveranser sker och att saker löpande utvärderas och kan ändras för att möta nya krav och önskemål. Det agila synsättet anser att det oftare är människor och kommunikation än verktyg och formella dokument som löser problem under utvecklingsarbetet.
En annan central grundtanke är att minimera risken för att en stor del av ett system befinner sig i ett halvfärdigt läge och inte kan leverera nytta. Ett agilt arbetssätt gör det möjligt för beslutsfattare att få ett bättre underlag inför beslut om att tillföra ytterligare resurser till ett projekt. Det finns självutvärderingar för att avgöra om ett projekt utvecklar agilt (Nokia Test[2], Karlskrona Test[3], Agility measurement index[4]).
Exempel på ett antal "lättrörliga metoder":
- Feature Driven Development (FDD)
- Adaptive Software Development
- Dynamic Systems Development Method (DSDM)
- Scrum
- Extrem programmering (XP)
- Lean Software Development
- Crystal
- Nightly build
Innehåll |
[redigera] Mjukvarutvecklingens livscykel
De Agila metoderna är fokuserade på olika aspekter av mjukvaruutvecklingens livscykel. Vissa fokuserar på metoder (Extrem programmering, pragmatisk programmering, agila modeller), medan andra fokuserar på att hantera mjukvaruprojekt (Scrum). Ändå finns det metoder som ger full täckning över hela livscykeln (DSDM, RUP), medan de flesta av dem är lämpliga från kravspecifikationsfasen (t.ex. FDD). Det finns alltså en tydlig skillnad mellan de olika lättrörliga metoderna för programvaruutveckling i detta avseende. I DSDM och RUP behöver inte kompletterande metoder för att stödja utvecklingen av programvaran, de andra gör det i varierande grad. DSDM kan användas av vem som helst (även om bara DSDM Medlemmar kan erbjuda DSDM produkter eller tjänster). RUP är alltså en kommersiellt säljande utvecklingsmiljö (Abrahamsson, Salo, Ronkainen & Warsta, 2002)[5][6].
[redigera] De tolv Grundprinciperna
Agila metodens tolv stycken grundprinciper[7] är följande:
- Vår högsta prioritet är att tillfredsställa kunden genom tidig och kontinuerlig leverans av värdefull mjukvara.
- Förändrande krav är välkomna, även sent i utvecklingen. Agila processen skördar förändring till kundens kunkurrenskraftighet.
- Leverera fungerande programvara ofta med tidsskala från ett par veckor till ett par månader, med en förkärlek till den kortare tidsskalan.
- Affärsfolk och utvecklare måste arbeta tillsammans dagligen under hela projektet.
- Bygg upp projektet runt motiverade individer. Ge dem den miljö och det stöd de behöver, och lita på dem för att få jobbet gjort.
- Den mest effektiva metoden för att förmedla information till och inom ett utvecklingsteam är konversation på plats mellan individerna (en: face-to-face).
- En fungerande programvara är det huvudsakliga måttet på framsteg.
- Agila processer främjer en hållbar utveckling. Sponsorer, utvecklare och användare ska kunna hålla en jämn utvecklingstakt på obestämd tid.
- Kontinuerlig uppmärksamhet på teknisk kvalitet och god design ökar flexibiliteten.
- Enkelhet - konsten att maximera mängden arbete som inte görs - är viktigt.
- De bästa arkitekturer, krav och design framträder ur självorganiserande team.
- Teamet ser över med jämna mellanrum hur man ska blir mer effektiva, sedan finjusteras det och man anpassar sitt beteende därefter.
[redigera] Källor
- ^ Manifesto for Agile Software Development
- ^ Nokia test
- ^ Karlskrona test
- ^ Agility measurement index
- ^ . http://www.realsearchgroup.org/portal/agile.html.
- ^ ”New directions on agile methods: a comparative analysis”. http://dl.acm.org/citation.cfm?id=776846.
- ^ ”Agile Alliance”. http://www.agilealliance.org/.