# Agile Unified Process

L'Agile Unified Process (AUP) è una versione semplificata, sviluppata da Scott Ambler, dell'IBM Rational Unified Process (RUP). Essa descrive un approccio allo sviluppo di applicazioni software, semplice, facile da comprendere e che utilizza tecniche e concetti agili pur rimanendo fedele al processo RUP. Scott Ambler ha cercato di mantenere Agile UP il più semplice possibile, sia nell'approccio che nella sua descrizione.
L'AUP applica le tecniche di sviluppo agile tra cui test driven (TDD), Agile Modeling, gestione agile del cambiamento e refactoring del database per migliorare la produttività.

## Pratiche

Diversamente da RUP, l'AUP ha soltanto sette discipline o pratiche:
* Modellazione. Comprendere il business dell'organizzazione, il dominio del problema affrontato dal progetto, e individuare una soluzione praticabile per affrontare il dominio del problema.
* Implementazione. Trasformare i modelli in codice eseguibile ed effettuare un livello base di test, in particolare test unitari.
* Test. Eseguire una valutazione oggettiva per garantire la qualità. Questo include trovare difetti, la convalida che il sistema abbia funzionato come previsto, e verificare che i requisiti siano stati soddisfatti.
* Deployment. Pianificare la consegna del sistema ed eseguire tale piano per rendere il sistema disponibile agli utenti finali.
* Configuration Management. Gestire gli artefatti di progetto. Questo include non solo il tener traccia delle versioni degli artefatti nel tempo ma anche controllarne e gestirne le modifiche.
* Project Management. Dirigere le attività che si svolgono nell'ambito del progetto. Questo comprende la gestione dei rischi, dirigere le persone (assegnazione di compiti, monitorare i progressi, ...), e il coordinamento con persone e sistemi esterni alla portata del progetto stesso, per essere sicuri che sia consegnato nei tempi e nel budget previsti.
* Ambienti. Sostenere il resto del progetto, garantendo che un processo corretto, orientamenti (standard e linee guida) e strumenti (hardware, software, ecc) siano disponibili per il team in base alle esigenze.

## Filosofia

La metodologia Agile UP è basata sui seguenti principi filosofici:
* Il vostro personale sa cosa sta facendo. Alle persone non è richiesto di leggere la documentazione dettagliata di processo, ma essi vorranno alcune linee guida di alto livello e/o della formazione all'occorrenza. Il prodotto AUP fornisce link a molti dettagli, se siete interessati, ma non vi obbliga a seguirli.
* Semplicità. Tutto viene descritto in modo conciso con una manciata di pagine, non migliaia.
* Agilità. Agile UP è conforme ai valori e principi dell'agile software development e dell'Agile Alliance.
* Concentrarsi su attività ad alto valore. L'attenzione deve concentrarsi sulle attività che contano realmente, e non su ogni cosa possibile che possa accadervi durante un progetto.
* Indipendenza dagli strumenti. È possibile utilizzare qualsiasi set di strumenti si desideri con l'Agile UP. La raccomandazione è di utilizzare gli strumenti che sono più adatti per un determinato lavoro, che spesso sono strumenti più semplici.
* Si avrà voglia di personalizzare AUP per soddisfare le proprie esigenze.

## Rilasci

L'Agile Unified Process fa distinzione tra due tipi di interazioni: quelle di Rilascio in Sviluppo e quelle di Rilascio in Produzione. Un'iterazione di Rilascio in Sviluppo risulta nel deployment del sistema per il Quality Assurance e/o l'area Demo. Invece un'iterazione di Rilascio in Produzione risulta in un deployment nell'area di Produzione. Questo rappresenta un significativo raffinamento rispetto al Rational Unified Process.