Con metodologia agile (o sviluppo agile del software, in inglese agile software development, abbreviato in ASD), nell'ingegneria del software, si indica un insieme di metodi di sviluppo del software emersi a partire dai primi anni 2000 e fondati su un insieme di principi comuni, direttamente o indirettamente derivati dai principi del "Manifesto per lo sviluppo agile del software" (Manifesto for Agile Software Development, impropriamente[1] chiamato anche "Manifesto Agile") pubblicato nel 2001 da Kent Beck, Robert C. Martin, Martin Fowler e altri.[2][3]

L'uso del termine agile[4] per riferirsi a metodi di sviluppo software fu introdotto dal Manifesto Agile pubblicato nel 2001.[5]

Sinossi generale

[modifica | modifica wikitesto]

I metodi agili si contrappongono al modello a cascata (waterfall model) e altri modelli di sviluppo tradizionali, proponendo un approccio meno strutturato e focalizzato sull'obiettivo di consegnare al cliente, in tempi brevi e frequentemente (early delivery / frequent delivery)[6], software funzionante e di qualità. Fra le pratiche promosse dai metodi agili ci sono la formazione di team di sviluppo piccoli, poli-funzionali e auto-organizzati, lo sviluppo iterativo e incrementale, la pianificazione adattiva, e il coinvolgimento diretto e continuo del cliente nel processo di sviluppo.

La gran parte dei metodi agili tenta di ridurre il rischio di fallimento sviluppando il software in finestre di tempo limitate chiamate iterazioni che, in genere, durano qualche settimana. Ogni iterazione è un piccolo progetto a sé stante e deve contenere tutto ciò che è necessario per rilasciare un piccolo incremento nelle funzionalità del software: pianificazione (planning), analisi dei requisiti, progettazione, implementazione, test e documentazione.

Anche se il risultato di ogni singola iterazione non ha sufficienti funzionalità da essere considerato completo deve essere pubblicato e, nel susseguirsi delle iterazioni, deve avvicinarsi sempre di più alle richieste del cliente. Alla fine di ogni iterazione il team deve rivalutare le priorità di progetto.

I metodi agili preferiscono la comunicazione in tempo reale, preferibilmente faccia a faccia, a quella scritta (documentazione). Il team agile è composto da tutte le persone necessarie per terminare il progetto software. Come minimo il team deve includere i programmatori ed i loro clienti (con clienti si intendono le persone che definiscono come il prodotto dovrà essere fatto: possono essere dei product manager, dei business analysts, o dei clienti veri e propri).

Il manifesto

[modifica | modifica wikitesto]

La formalizzazione dei principi su cui si basano le metodologie agili è stata oggetto del lavoro di un gruppo di progettisti software e guru dell'informatica che si sono spontaneamente riuniti nell'Agile Alliance. Il documento finale di questo lavoro è stato poi sottoscritto da un nutrito gruppo di questi professionisti, molti dei quali hanno anche sviluppato alcune delle metodologie agili più famose.

I firmatari del Manifesto Agile sono (in ordine alfabetico): Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham (inventore di Wiki), Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas.

Obiettivi

[modifica | modifica wikitesto]

L'obiettivo è la piena soddisfazione del cliente e non solo l'adempimento di un contratto. Il corretto uso di queste metodologie, inoltre, può consentire di abbattere i costi e i tempi di sviluppo del software, aumentandone la qualità.

Essa è esplosa proprio in concomitanza con la crisi successiva al boom di Internet prendendo spunto dai metodi applicati in piccole software house.

Valori

[modifica | modifica wikitesto]

I valori su cui si basa una metodologia agile che segua i punti indicati dal Manifesto Agile sono quattro.

Si ritengono importanti:

Ovvero, fermo restando il valore delle voci a destra, si considerano più importanti le voci a sinistra.[5]

Pratiche

[modifica | modifica wikitesto]

Le singole pratiche applicabili all'interno di una metodologia agile sono decine e dipendono essenzialmente dalle necessità dell'azienda e dall'approccio del project manager. Nella scelta però bisogna tenere conto delle caratteristiche di ogni pratica per i benefici che apporta e le conseguenze che comporta. Ad esempio, in Extreme Programming, si supplisce alla mancanza assoluta di qualsiasi forma di progettazione e documentazione con lo strettissimo coinvolgimento del cliente nello sviluppo e con la programmazione in coppia.

Le pratiche più diffuse tra cui scegliere sono simili fra di loro e possono essere raggruppate in categorie:

Metodologie

[modifica | modifica wikitesto]

In senso lato il termine "agile" indica tutte quelle metodologie di sviluppo leggere e flessibili, che rompono con la precedente tradizione di ingegneria del software (modello a cascata, modello a spirale, etc.) basata su una raccolta delle specifiche e su una strutturazione sequenziale dello sviluppo software. Le metodologie agili consentono invece di rivedere di continuo le specifiche adeguandole durante l'avanzamento dello sviluppo del software, mediante un framework iterativo e incrementale, e un forte scambio di informazioni e di pareri tra gli sviluppatori e con il committente. Esempi di metodologie e framework agili:

Note

[modifica | modifica wikitesto]
  1. ^ Dave Thomas, uno dei fondatori del movimento Agile, ha più volte criticato l'uso della parola Agile in luogo di un sostantivo, come nell'espressione "Manifesto Agile", Agile Manifesto; vedi per esempio The Death of Agile
  2. ^ Agile Manifesto
  3. ^ What is Agile? 10 Key Principles of Agile, su allaboutagile.com. URL consultato il 24 ottobre 2014 (archiviato dall'url originale il 24 ottobre 2014).
  4. ^ Il termine agile va pronunciato in lingua inglese, sebbene coincida, come grafema, all'italiano.
  5. ^ a b Manifesto per lo Sviluppo Agile di Software
  6. ^ Benefits of Frequent Product Delivery: Agile Principles

Voci correlate

[modifica | modifica wikitesto]

Altri progetti

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
Controllo di autoritàLCCN (ENsh2007006411 · GND (DE4806620-5 · BNE (ESXX5107539 (data) · BNF (FRcb16516550f (data) · J9U (ENHE987007535269305171 · NDL (ENJA001312051
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica