Agile is een vorm van software-ontwikkeling die gebaseerd is op een artikel van Winston Royce uit 1970 getiteld “Managing the Development of Large Software Systems,” waarin hij de vloer aanveegt met de sequentiële wijze van productontwikkeling. Hij beargumenteert dar software niet ontwikkeld moet worden als een auto in een assemblagelijn, waarbij ieder onderdeel in sequentiële volgorde wordt gemaakt. Een start van een volgend onderdeel kan daarbij pas plaatsvinden als het vorige gereed is. In een sequentiële productontwikkelingstraject (ook wel de waterval-methode genoemd), worden eerst alle requirements verzameld, vervolgens daarop gebaseerd het ontwerp en de architectuur, daarna de code etc. Belangrijkste kritiek van Royce was dat een gebrek aan communicatie tussen gespecialiseerde teams de grootste tekortkoming van de waterval-methode is, waardoor hogere coördinatiekosten, grotere kans op fouten (en dus lagere productkwaliteit). En, misschien wel de belangrijkste tekortkoming: er is een product ontwikkeld dat - doordat de wereld sinds de start van het productontwikkeling is veranderd - dat niemand feitelijk nog wil hebben.
Karakteristieken
Agile softwareontwikkeling kenmerkt zich door de mogelijkheid om tijdens het productontwikkelingsproces (project of programma) wijzigingen mogelijk zijn. Hiervoor wordt een Agile-traject opgedeeld in meerdere, vaste periodes, iteraties of sprints genoemd. Aan het einde van iedere iteratie levert een team van ontwikkelaars een potentieel gereed deel van het product op. Kenmerkende woorden voor Agile zijn 'iteratief' (herhalend) en 'incrementeel' (groeiend in aantal of omvang). In de klassieke waterval-methode hebben de ontwikkelaars maar één kans om alle aspecten van het product goed te inventariseren en te formuleren. In een Agile-project worden alle aspecten van de softwareontwikkeling gedurende het gehele proces geanalyseerd, heroverwogen en indien nodig aangepast aan gewijzigde omstandigheden of betere mogelijkheden. Door dit kort-cyclisch te houden is het eenvoudiger bij te sturen. Hierbij gaat de analogie van het bijsturen van een mammoettanker (waterval-methode) of een fregat (Agile-methode) goed op. Het kenmerkende Agile proces van voortdurend 'terugkijken-en-aanpassen' heeft bewezen dat de ontwikkelingskosten en time-to-market aanzienlijk lager zijn dan bij de watervalmethode. Teams kunnen tegelijkertijd bezig zijn met het verzamelen van requirements en het ontwikkelen van de software.
Principes Agile Manifesto (2001)
Agile kent vier kernwaarden en twaalf grondbeginsel die in 2001 door 12 software-ontwikkelaars een manifest zijn opgenomen. De vier kernwaarden (http://agilemanifesto.org/iso/nl/): Wij laten zien dat er betere manieren zijn om software te ontwikkelen door in de praktijk aan te tonen dat dit werkt en door anderen ermee te helpen. Daarom verkiezen we:1.Mensen en hun onderlinge interactie boven processen en tools2.Werkende software boven allesomvattende documentatie3.Samenwerking met de klant boven contractonderhandelingen4.Inspelen op verandering boven het volgen van een planDe twaalf grondbeginselen (http://agilemanifesto.org/iso/nl/principles.html):1.Onze hoogste - prioriteit is het tevredenstellen van de klant door het vroegtijdig en voortdurend opleveren van waardevolle software.2.Verwelkom veranderende behoeftes, zelfs laat in het ontwikkelproces. Agile processen benutten verandering tot concurrentievoordeel van de klant.3.Lever regelmatig werkende software op. Liefst iedere paar weken, hooguit iedere paar maanden.4.Mensen uit de business en ontwikkelaars moeten dagelijks samenwerken gedurende het gehele project.5.Bouw projecten rond gemotiveerde individuen. Geef hen de omgeving en ondersteuning die ze nodig hebben en vertrouw erop dat ze de klus klaren.6.De meest efficiënte en effectieve manier om informatie te delen in en met een ontwikkelteam is door met elkaar te praten.7.Werkende software is de belangrijkste maat voor voortgang.8.Agile processen bevorderen constante ontwikkeling. De opdrachtgevers, ontwikkelaars en gebruikers moeten een constant tempo eeuwig kunnen volhouden.9.Voortdurende aandacht voor een hoge technische kwaliteit en voor een goed ontwerp versterken de bekwaamheid.10.Eenvoud, de kunst van het maximaliseren van het werk dat niet gedaan wordt, is essentieel.11.De beste architecturen, eisen en ontwerpen komen voort uit zelfsturende teams.12.Op vaste tijden, onderzoekt het team hoe het effectiever kan worden en past vervolgens zijn gedrag daarop aan.
Vormen van Agile
De Agile-filosofie wordt o.a. in de volgende methodieken gehanteerd:•Scrum•RUP (Rational Unified Process)•DevOps