Ingeneria del software: La metologia e il processo Agile

Ingeneria del software: La metologia e il processo Agile

L’idea del cambiamento come una necessità del business, ha spinto gli studiosi a cercare nuove metodologie di sviluppo software. Frutto di queste attività è, tra gli alti, l’approccio Agile (processo Agile).
In effetti, ci si può riferire ad esso come una disciplina in contrapposizione o in complemento alle metodologie tradizionali, definite “heavyweight”. Ma, l’utilizzo dell’una o delle altre dipende, fondamentalmente, dai risultati che si vogliano ottenere.
Alla base delle metodologie agili vi è l’idea di raggiungere l’obiettivo per passi, focalizzandosi su di un piccolo e ben definito risultato per volta, costruendo con un processo iterativo l’intero sistema.
I metodi “pesanti”, come quello a cascata, semplificano il controllo dell’andamento del progetto mediante la scomposizione e la specificazione del ciclo di vita in fasi successive e ben definite, in cui l’output di ogni fase (milestone) rappresenta l’input della successiva.
Naturalmente, questa caratteristica, se da un canto rappresenta il maggior punto di forza dell’approccio tradizionale, d’altro canto diviene una criticità in quei progetti in cui i requisiti mutano velocemente e/o non siano completamente elicitabili nella prima fase di sviluppo.

Ingegneria del software - La metologia e il processo Agile

 

Per questo motivo, sono nati i modelli iterativi, in cui le stesse fasi del waterfall model sono eseguite su porzioni del sistema incrementalmente, consentendo di apportare modifiche iterativamente e correzioni, tornando dalla fase di testing a quella di pianificazione. Le discipline agili, sottoclasse dei modelli evolutivi, nascono verso la fine degli anni ’80, con l’idea di risolvere problemi ricorrenti correlati alla conduzione di progetti software. Esse non presentano caratteristiche “predittive” rispetto all’evoluzione del sistema software, ma propongono valori e pratiche da adottare, al fine di “adattarsi” all’evoluzione dei requisiti utente, prima che del sistema software.
Un’importante constatazione che ha spinto verso questo approccio riguarda la natura mutevole nel tempo dei requisiti di un progetto. Pertanto, nell’ottica della pianificazione delle attività, i requisiti iniziali potrebbero risultare un punto di partenza inadeguato.
L’adozione di un approccio è strettamente vincolato alla natura dei requisiti utente: del resto, sebbene averne cognizione definitiva già dal principio sia un aspetto desiderabile in qualunque progetto software, ciò avviene raramente. Inoltre, anche se accadesse, la fase di progettazione potrebbe ugualmente presentare qualche difficoltà.

Sulla scorta di queste considerazioni, nelle metodologie agili i vincoli principali dei progetti diventano i tempi, i costi e la possibilità di favorire la gestione del cambiamento dei requisiti.
Naturalmente, per poter operare in tal modo, è richiesta la suddivisione in singoli componenti indipendenti delle funzionalità, al fine di poterne valutare i tempi, i costi e la possibilità di completarli procedendo per piccoli incrementi progressivi. In tal modo, viene agevolata anche la suddivisione dei compiti e delle responsabilità ai componenti del team di sviluppo.
In definitiva, i Metodi Agili sono un insieme di tecniche di sviluppo software che si focalizzano sullo sviluppo ed il rilascio incrementale (ed in tempi brevi) di porzioni del sistema, che siano usabili.

Il processo Agile

A differenza delle metodologie “pesanti”, quelle agili sono caratterizzate da un processo iterativo scomposto in fase di progettazione, di sviluppo e test di breve durata.
Tipicamente, i Metodi Agili si basano su di una disciplina rigorosa che dà vita ad un processo ben definito; si noti, però, che quest’ultimo è di tipo adattativo: si adatta, cioè, alle esigenze del committente, che possono mutare durante lo sviluppo. Quest’ultimo di focalizza su gruppi di funzionalità ed è guidato dalla necessità di rilasciare prodotti di progetto usabili.
Dunque, gli artefatti possono considerarsi “leggeri”, cioè manca la “pesante” documentazione.
Il lavoro di progettazione, anzichè essere concentrato nella sola parte iniziale, è continuo e distribuito lungo tutte le fasi del processo. Pertanto, anche le parti già realizzate sono soggette a modifiche, al fine di migliorare l’architettura del software.

Secondo gli studiosi Highsmith e Cockburn (definizione del 2001):
“what is new about agile methods is not the practices they use, but their recognition of people as the primary drivers of project success, coupled with an intense focus on effectiveness and maneuverability”.

In questo contesto, si suppone che il progredire del tempo non faccia aumentare i costi del cambiamento, bensì essi si stabilizzano ad un valore modesto.

Esistono, in pratica, diverse Metodologie agili tra cui:

  1. Extreme Programming (XP);
  2. Dynamic Systems Development Method (DSDM);
  3. SCRUM;
  4. Feature Driven Development (FDD);
  5. Crystal Family;
  6. Adaptive Software Development (ASD);
  7. Agile Modeling.

Tutte queste metodologie aderiscono ai principi elencati nel cosiddetto Agile Manifesto trattato nel prossimo articolo: Ingegneria del software: Il Manifesto Agile.

Ingegneria del software - Il processo Agile

Precedente I principali vincoli di un sistema embedded Successivo Ingegneria del software: Il Manifesto Agile

Lascia un commento

*