Vad menas med "agile"?
Ordet "agile" betyder* "lättrörlig" eller "vig". Agile Software Development (eller kort "Agile") är ett synsätt
gemensamt för en grupp av lättrörliga metoder. Grundtanken med Agile är att i en
föränderlig värld krävs utvecklingsmetoder som hanterar förändring som en del av
verkligheten, inte sådana som blundar för förändringar eller som försöker reglera bort dem.
Fler regler kommer inte ge oss fler lyckade mjukvaruprojekt. Vi behöver flexibilitet - inte rigididet.
Agile kan alltså sägas vara ett paraplybegrepp. Det är inte en systemutvecklingsmetodik i sig utan snarare
en uppsättning värderingar, attityder och principer. Inom Agile finns ett antal olika utvecklingsmetodiker
som anses vara lättrörliga. Detta görs främst då metodikens upphovsman bekänner sig till de agila värderingarna.
Lättrörliga metoder
Historik
Under 1990-talet skapades oberoende av varandra ett antal lättrörliga metoder som en reaktion mot metoder som man upplevde som tröga och alltför omfattande.
I slutet av 90-talet blev eXtreme Programming (XP) plötsligt den mest omtalade, kanske mest på grund av sin kompromisslösa inställning mot tungtrott kravarbete och tillfälliga dokument, och vurmande för kontroversiella arbetsformer som parprogrammering.
Något gott kom dock ut av detta. Istället för att, som brukligt är, att alla började slåss för "sin" metod, samlades ledande profiler för olika lättrörliga metoder i januari 2001 under ett gemensamt synsätt. Detta synsätt kallas - Agile (=lättrörlig). Man skapade också nätverket Agile Alliance där man gemensamt vidareutvecklar och delar med sig av de värderingar, principer och arbetssätt som ligger till grund för alla lättrörliga metoder. Begreppet "Agile Software Development" skapades vid en legendarisk konferens
mellan sjutton "ärrade" systemutvecklare, konsulter och processexperter.
Allt detta resulterade i ett gemensamt manifest samt bildandet av Agile Alliance.
Bland lättrörliga metoder kan nämnas (i alfabetisk ordning):
Adaptive Software Development,
Crystal,
DSDM,
Extreme Programming (XP),
Lean Software Development,
Pragmatic Programmer
Scrum,
med flera.
Agile värdesätter: **
- Individer och samspel framför metoder, processer och verktyg.
- Körbar programvara framför omfattande dokumentation.
- Kundsamarbete framför kontraktsförhandlingar.
- Anpassning till förändring framför att följa en statisk plan.
(Alla ovan nämnda saker är värdefulla, men de till vänster värderas högre
än de till höger.)
Agiles principer: **
- Viktigast är att göra kunden nöjd genom tidiga och regelbundna leveranser
av värdeskapande programvara.
- Anpassning till förändrade krav och förutsättningar är naturligt,
även i ett sent skede; utnyttja förändring till kundens fördel.
- Leverera användbar programvara ofta, helst med bara några veckors mellanrum.
- Verksamhetskunniga och utvecklare arbetar tillsammans dagligen.
- Självgående och ansvarstagande individer är den främsta framgångsfaktorn.
Med nödvändigt stöd och förtroende kommer de att lösa uppgiften. (Övers. ej klar)
- Kommunikation ansikte mot ansikte är det bästa sättet att förmedla information,
både till och inom teamet.
- Funktionalitet är det främsta måttet på framsteg.
- Agile verkar för uthållighet; teamet skall kunna upprätthålla
jämn arbetsbelastning så länge som behövs.
- Kontinuerlig uppmärksamhet på teknisk elegans och bra design stärker anpassningsförmågan.
- Enkelhet - konsten att göra rätt saker, varken mer eller mindre - är grundläggande.
- Team som organiserar sig och sitt arbete själva, ger bäst problemförståelse, arkitektur och design.
- Gruppen utvärderar och anpassar regelbundet sitt arbetssätt för att förbättra sin effektivitet.
En ingående förklaring av värderingarna och principerna finns i
Agile Processes
av Robert Martin, samt i en
artikel
i Software Development Magazine (kräver gratis registrering och inloggning).
Agile-metoder lånar friskt av varandra. Att lära av varandras metoder uppmuntras. Delprocesser fångas i samma anda ex Agile Modeling för modellering som kan användas med valfri metod. Andra förpackar industriell erfarenhet som stödjer alla agile-metoder. Ex Lean Software Development, en brygga mellan Agile-metoderna och Lean-rörelsens "eliminate waste"-synsätt med ursprung i framgångsfaktorer hos företag som Toyota och 3M.