* Che cos è un processo software



Похожие документы
I lucidi messi a disposizione sul sito del corso di Analisi e progettazione del software NON sostituiscono il libro di testo

4.1 Che cos è l ideazione

Rational Unified Process Introduzione

Ciclo di vita dimensionale

Scrum. Caratteristiche, Punti di forza, Limiti. versione del tutorial: Pag. 1

Concetti di base di ingegneria del software

Ciclo di vita del progetto

Project Management. Modulo: Introduzione. prof. ing. Guido Guizzi

UML e (R)UP (an overview)

7.1 Livello di completezza degli esempi

Poca documentazione: uso di Story Card e CRC (Class Responsibility Collabor) Collaborazione con il cliente rispetto alla negoziazione dei contratti

PROJECT MANAGEMENT SERVIZI DI PROJECT MANAGEMENT DI ELEVATA PROFESSIONALITÀ

Metodologie Agili per lo sviluppo di applicazioni Internet Distribuite. Agile Group DIEE, Università di Cagliari

11. Evoluzione del Software

RUP (Rational Unified Process)

ALLINEARSI: IL DRIVER PER UNA INNOVAZIONE DI SUCCESSO!

Ciclo di vita del software

Configuration Management

PRESENTARE UN IDEA PROGETTUALE

12. Evoluzione del Software

1- Corso di IT Strategy

Project Cycle Management

03. Il Modello Gestionale per Processi

Progettaz. e sviluppo Data Base

Corso di Amministrazione di Sistema Parte I ITIL 1

SOA GOVERNANCE: WHAT DOES IT MEAN? Giorgio Marras

Project Management. Corso Sistemi Informativi Aziendali, Tecnologie dell Informazione applicate ai processi aziendali.

Distinguere tra bisogni di cura standard e individualizzati. Valutazione delle esigenze e traduzione di queste in azioni adeguate

Export Development Export Development

Concetti fondamentali. Laboratorio di Ingegneria del Software Andrea Bei

COME SVILUPPARE UN EFFICACE PIANO DI INTERNET MARKETING

IL PROJECT MANAGEMENT

Release Management. Obiettivi. Definizioni. Responsabilità. Attività. Input

I lucidi messi a disposizione sul sito del corso di Analisi e progettazione del software NON sostituiscono il libro di testo

INDICOD-ECR Istituto per le imprese di beni di consumo

ADEGUATEZZA O ADEGUAMENTO DEL SOFTWARE PRÊT-À-PORTER ALLE ESIGENZE DEGLI UTENTI PROF. FABIO A. SCHREIBER POLITECNICO DI MILANO

Project Cycle Management La programmazione della fase di progettazione esecutiva. La condivisione dell idea progettuale.

Coordinamento e comunicazione

Pianificazione e progettazione

Attività federale di marketing

ISA 610 e ISA 620 L'utilizzo durante la revisione dei revisori interni e degli esperti. Corso di revisione legale dei conti progredito

Il modello di ottimizzazione SAM

Il catalogo MARKET. Mk6 Il sell out e il trade marketing: tecniche, logiche e strumenti

Le fattispecie di riuso

La Leadership efficace

ISO 9001:2015 e ISO 14001:2015

La gestione manageriale dei progetti

IL MARKETING E QUELLA FUNZIONE D IMPRESA CHE:

Specifiche dello sviluppo di un progetto software e indicazioni sulla documentazione e sulle modalità di esercizio delle prestazioni

Che volontari cerchiamo? Daniela Caretto Lecce, aprile

Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software. La fase di Analisi

liste di liste di controllo per il manager liste di controllo per il manager liste di controllo per i

IL MANAGER COACH: MODA O REQUISITO DI EFFICACIA. Nelle organizzazioni la gestione e lo sviluppo dei collaboratori hanno una importanza fondamentale.

IPERCA. Il metodo a sei fasi Per gestire con successo progetti, incarichi e situazioni di vita e per accrescere continuamente l esperienza.

GESTIONE AVANZATA DEI MATERIALI

La Formazione: elemento chiave nello Sviluppo del Talento. Enzo De Palma Business Development Director

Perfare MASSIMIZZARE IL VALORE DELL ATTUALE GAMMA DI PRODOTTI

lem logic enterprise manager

Piano di gestione della qualità

UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI

Gestione di progetti (software)

Ingegneria del Software

Change Management. Obiettivi. Definizioni. Responsabilità. Attività. Input. Funzioni

Gestire il rischio di processo: una possibile leva di rilancio del modello di business

Corso formazione su Sistema di gestione della qualità. Standard ISO 9001:2000/2008 Vision 2000

Il controllo dei rischi operativi in concreto: profili di criticità e relazione con gli altri rischi aziendali

L o. Walter Ambu japs: una soluzione agile (

UN ESEMPIO DI VALUTAZIONE

MANUALE DELLA QUALITÀ Pag. 1 di 6

La portata del software

LA PIANIFICAZIONE DELLE ATTIVITÀ AZIENDALI E.R.P. (ENTERPRISE RESOURCE PLANNING)

GUIDA - Business Plan Piano d impresa a 3/5 anni

Guida Compilazione Piani di Studio on-line

figure professionali software

ING SW. Progetto di Ingegneria del Software. e-travel. Requisiti Utente. Specifiche Funzionali del Sistema

leaders in engineering excellence

A cura di Giorgio Mezzasalma

QUESTIONARIO 1: PROCESSO DI AUTOVALUTAZIONE

Role plaing esperienziale: ATTUAZIONE DI UN PROGETTO DI NURSING

QUESTIONARIO 3: MATURITA ORGANIZZATIVA

COMUNE DI RAVENNA GUIDA ALLA VALUTAZIONE DELLE POSIZIONI (FAMIGLIE, FATTORI, LIVELLI)

Raccolta dei Requisiti con i Casi D'uso. Corso di Ingegneria del Software Anno Accademico 2012/13

Appendice III. Competenza e definizione della competenza

Soluzione dell esercizio del 2 Febbraio 2004

In legenda sono riportate le fasi R, P, C/T e I/SA come specificato nella norma ISO/IEC

L approccio User Centered nella progettazione del Portale P.A.eS.I.

Innovazioni nella programmazione e valutazione ex ante. Paola Casavola DPS UVAL 11 luglio 2013

LINEE GUIDA PER L EROGAZIONE DELLA FORMAZIONE INTERNA

Presidenza della Giunta Ufficio Società dell'informazione. ALLEGATO IV Capitolato tecnico

5.1.1 Politica per la sicurezza delle informazioni

Il modello veneto di Bilancio Sociale Avis

La gestione della qualità nelle aziende aerospaziali

Processi principali per il completamento del progetto

CAPITOLO 11 Innovazione cam i amen o

IL CICLO DI VITA DEL PROGETTO. Elementi essenziali di progetto. Fasi e tappe Gli Approcci

Транскрипт:

Luca Cabibbo Analisi e Progettazione del Software Sviluppo iterativo, evolutivo e agile Capitolo 2 marzo 2013 Lo sviluppo iterativo dovrebbe essere utilizzato solo per i progetti che si desidera che vadano a buon fine. Martin Fowler 1 *** AVVERTENZA *** I lucidi messi a disposizione sul sito del corso di Analisi e progettazione del software NON sostituiscono il libro di testo 2

* Che cos è un processo software Un processo per lo sviluppo del software o, semplicemente, processo software è la descrizione di un approccio per la costruzione, l installazione e la manutenzione del software un processo definisce chi fa che cosa, quando e come per raggiungere un certo obiettivo Esistono numerosi processi software ad esempio, il processo a cascata, UP, XP, Scrum,... sono tutti organizzati attorno a un certo numero di attività fondamentali comuni 3 * Attività nei processi software Esistono numerosi processi software sono tutti organizzati attorno a un certo numero di attività fondamentali comuni specifica requisiti analisi comprensione/definizione di funzionalità e vincoli del software progettazione dell architettura e dei componenti implementazione validazione e verifica il software viene verificato per assicurare che faccia ciò che vuole il cliente rilascio/installazione manutenzione/evoluzione per soddisfare i requisiti del cliente che cambiano gestione del progetto 4

* Processi software Perché esistono diversi processi software? In che si differenziano? i diversi processi software non si differenziano nel che cosa, ma soprattutto nel quando ovvero nel modo di determinare l ordine delle attività nello stabilire i criteri di transizione da una fase/attività alla successiva per quanto tempo continueremo a fare questa cosa? che cosa faremo dopo? e riguardo al chi? alcuni processi considerano ruoli specializzati altri processi considerano figure più complete senza distinguere tra analista, progettista, programmatore e collaudatore e riguardo al come? molti metodi per lo sviluppo del software possono essere usati in ogni processo altri sono più specifici 5 2.1 Che cos è UP Unified Process (UP) è uno specifico processo (un framework di processo, ben documentato) per lo sviluppo di software OO Perché UP in questo corso? perché il contesto in cui si applica al meglio l OOA/D è un processo iterativo applicato in modo agile UP soddisfa entrambe queste caratteristiche inoltre, UP è aperto e flessibile e incoraggia l uso di pratiche da altri metodi iterativi come Extreme Programming(XP), Scrum, Agile Modeling ad es., sviluppo guidato dai test, refactoring, integrazione continua in questo modo, nel contesto di UP è possibile applicare le best practices ( pratiche migliori ) più comunemente accettate nello sviluppo del software 6

E se non fossi interessato a UP? Le idee fondamentali del corso (sviluppo iterativo, progettazione guidata dalle responsabilità, casi d uso, OOA/D, pattern,...) sono indipendenti da ogni particolare processo possono essere applicate anche nel contesto di processi diversi da UP preferibilmente iterativi, evolutivi e agili 7 Disclaimer Processi vs. Persone I principi, le tecnologie e i processi sono importanti ma sono le persone che li mettono in pratica [Cockburn] i processi e le tecnologie hanno un impatto secondario nei risultati di un progetto le persone con le loro individualità, sentimenti e qualità sono molto più importanti Le persone sono più importanti dei processi [Booch] persone buone che adottano un buon processo lavoreranno meglio, in ogni caso, di buone persone senza processo Per realizzare qualcosa di valore, le persone devono mettere anima e cuore in tutto quello che fanno i processi sono solo per migliorare il modo in cui le persone lavorano insieme 8

2.3 Il processo a cascata Un processo software classico (il più vecchio ed ancora piuttosto diffuso) è basato su un ciclo di vita sequenziale lineare, o a cascata prevede uno svolgimento sequenziale di attività pianificazione con stime dettagliate per tutte le attività analisi dei requisiti del software progettazione generazione del codice collaudo inoltre ciascuna attività produce documenti dettagliati che sono soggetti a revisione e approvazione formale in accordo con il piano iniziale, il lavoro procede da un attività alla successiva solo con l approvazione dei documenti dell attività precedente spesso le diverse attività sono svolte da team differenti 9 Il processo a cascata Un processo software classico (il più vecchio ed ancora piuttosto diffuso) è basato su un ciclo di vita sequenziale lineare, o a cascata prevede uno svolgimento sequenziale di attività pianificazione con stime dettagliate per tutte le attività analisi dei requisiti del software progettazione generazione del codice Sequenziale vuole dire: collaudo faccio prima tutta l analisi dei requisiti (mesi...) inoltre poi faccio tutta l analisi (altri mesi) ciascuna poi attività faccio produce tutta la progettazione documenti dettagliati (altri mesi) che sono soggetti poi a revisione scrivo il codice e approvazione (altri mesi) formale in accordo poi inizio con il a piano fare il iniziale, collaudo il lavoro (altri mesi) procede da un attività alla successiva a questo solo punto con ho l approvazione in mano qualcosa dei documenti di dell attività funzionante precedente (forse) spesso le diverse attività sono svolte da team differenti 10

Il processo a cascata Un processo software classico (il più vecchio e diffuso) è basato su un ciclo di vita sequenziale lineare, o a cascata prevede uno svolgimento sequenziale di attività Che origini ha? pianificazione con stime dettagliate per tutte le attività analisi dei requisiti del software progettazione Può generazione funzionare del codice per lo sviluppo del collaudo software? inoltre ciascuna attività produce documenti dettagliati che sono soggetti a revisione e approvazione formale Potrebbe non funzionare? In quali casi? Perché? Si può fare di meglio? in accordo con il piano iniziale, il lavoro procede da un attività alla successiva solo con l approvazione dei documenti dell attività precedente spesso le diverse attività sono svolte da team differenti 11 Il processo a cascata è poco efficace Il processo sequenziale nella sua estrema logicità è spesso poco efficace nello sviluppo del software perché? perché sono coinvolte delle persone! Ad esempio nello sviluppo a cascata è importante che tutte le buone idee sui requisiti, sull architettura, sul progetto vengano all inizio del progetto in modo che possano essere incorporate nel piano sappiamo che non è sempre così le buone idee possono venire in qualunque momento all inizio, a metà, e talvolta anche verso la fine di un progetto ma il processo a cascata non consente l introduzione di buone idee ritardatarie nel processo a cascata, una buona idea ritardataria non è un opportunità anzi, è una minaccia! 12

Il processo a cascata è soggetto a fallimenti In pratica, il processo sequenziale è spesso soggetto a fallimenti perché non consente una gestione efficace dei rischi in generale i rischi vengono affrontati tardi nel ciclo di vita è molto costoso gestire errori introdotti nelle prime fasi errori nei requisiti, nell analisi, nel progetto o anche nell implementazione Ad esempio, un ipotesi fondamentale del processo a cascata è che sia possibile definire correttamente e congelare i requisiti prima di procedere con le fasi successive ma questa ipotesi è realistica? 13 Il processo a cascata è soggetto a fallimenti Studi empirici hanno dimostrato che in un progetto software medio i requisiti cambiano del 25% i cambiamenti sono del 35%-50% per progetti grandi e/o innovativi 40 35 30 Requirements change 25 20 15 10 5 0 10 100 1000 10000 Project Size in Function Points la mancata gestione di questo cambiamento è una causa comune del fallimento dei progetti software 14

Requisiti che cambiano Un altra indagine se viene fatta un analisi a cascata dei requisiti, quante caratteristiche identificate inizialmente saranno effettivamente utili nel prodotto finale? Always 7% Often 13% Never 45% Sometimes 16% Rarely 19% 15 Il processo a cascata è soggetto a fallimenti Molti praticanti del processo a cascata hanno sperimentato i suoi difetti più e più volte una possibile reazione se solo lo avessimo applicato meglio, allora sì che avrebbe funzionato! più pianificazione, più documentazione maggior aderenza al piano, maggior resistenza ai cambiamenti ma qual è la conseguenza di applicare meglio il processo a cascata? un peggioramento dei risultati! Processo a cascata: si può fare di meglio? 16

2.2 Lo sviluppo iterativo e evolutivo Nello sviluppo evolutivo l idea fondamentale è realizzare un implementazione iniziale del sistema, esporla agli utenti e raffinarla attraverso diverse versioni, finché non si ottiene un sistema adeguato l evoluzione del sistema è guidata da esperienze pratiche dell utilizzo del sistema il sistema viene esposto ai suoi utenti, ed evolve sulla base del feedback ottenuto dal suo utilizzo in pratica, per ottenere un feedback veloce ed efficace, le attività di specifica, sviluppo e verifica sono intrecciate anziché separate questo consente appunto un feedback veloce tra le varie attività 17 Lo sviluppo iterativo e evolutivo Nello sviluppo iterativo lo sviluppo del software è organizzato in una serie di mini-progetti brevi, di lunghezza fissa (ad es., 2-4 settimane) chiamati iterazioni il risultato di ciascuna iterazione è un sistema software eseguibile, integrato e testato, ma parziale ciascuna iterazione comprende le proprie attività di analisi dei requisiti, analisi, progettazione, implementazione, verifica il sistema cresce in modo incrementale da un iterazione alla successiva adattandosi ai requisiti, in modo evolutivo, sulla base del feedback delle iterazioni precedenti il risultato di ciascuna iterazione è normalmente un sistema incompleto che converge verso un sistema completo dopo varie iterazioni 18

Sviluppo iterativo e incrementale 19 Sviluppo iterativo, incrementale ed evolutivo Sviluppo iterativo e incrementale il sistema cresce in modo incrementale, iterazione per iterazione Sviluppo iterativo ed evolutivo le specifiche e il progetto evolvono, in base a feedback ed adattamento 20

Cambiamento e adattamento Nello sviluppo del software, i cambiamenti sono inevitabili i cambiamenti sono combattuti nel processo sequenziale i cambiamenti sono invece accettati dallo sviluppo iterativo lo sviluppo iterativo abbraccia il cambiamento e l adattamento, scegliendoli come guide essenziali ma non vuol dire lavorare in modo caotico ( feature creep ) Nello sviluppo iterativo, ciascuna iterazione opera su un piccolo sottoinsieme dei requisiti analisi, progettazione, implementazione e verifica fornisce un ritorno (feedback) rapido dagli utenti, dagli sviluppatori e dal test questo ritorno è un opportunità per far crescere il sistema, riducendo i rischi 21 Cambiamento e adattamento Nello sviluppo del software, i cambiamenti sono inevitabili i cambiamenti sono combattuti nel processo sequenziale L idea di fondo dello sviluppo lo sviluppo iterativo abbraccia il cambiamento e iterativo: l adattamento, anticipare scegliendoli come nel guide tempo essenziali parte di alcune attività, rimandare nel tempo parte di altre attività, cercando di massimizzare i analisi, progettazione, implementazione e verifica benefici e minimizzare i rischi i cambiamenti sono invece accettati dallo sviluppo iterativo ma non vuol dire lavorare in modo caotico ( feature creep ) Nello sviluppo iterativo, ciascuna iterazione opera su un piccolo sottoinsieme dei requisiti fornisce un ritorno (feedback) rapido dagli utenti, dagli sviluppatori e dal test questo ritorno è un opportunità per far crescere il sistema, riducendo i rischi 22

Cambiamento e adattamento Nello sviluppo del software, i cambiamenti sono inevitabili i in cambiamenti particolare, produrre sono combattuti nel processo ad esempio, sequenziale la codice ed esporlo ai comprensione di i L idea cambiamenti clienti di sono fondo invece dello accettati sviluppo dallo requisiti meno iterativo lo sviluppo iterativo abbraccia il cambiamento importanti e iterativo: l adattamento, anticipare scegliendoli come nel guide tempo essenziali parte di alcune attività, rimandare nel tempo parte di altre attività, cercando di massimizzare i analisi, progettazione, implementazione e verifica benefici e minimizzare i rischi ma non vuol dire lavorare in modo caotico ( feature creep ) Nello sviluppo iterativo, ciascuna iterazione opera su un piccolo sottoinsieme dei requisiti fornisce un ritorno (feedback) rapido dagli utenti, dagli sviluppatori e dal test non posso procedere a questo ritorno è un opportunità caso, la pianificazione per far crescere il sistema, riducendo i rischi è importante 23 Cambiamento e adattamento Early iterations are farther from the "true path" of the system. Via feedback and adaptation, the system converges towards the most appropriate requirements and design. In late iterations, a significant change in requirements is rare, but can occur. Such late changes may give an organization a competitive business advantage. one iteration of design, implement, integrate, and test 24

Vantaggi dello sviluppo iterativo Vantaggi dello sviluppo iterativo dimostrati da ricerche sullo sviluppo iterativo e incrementale minor probabilità di fallimento del progetto, miglior produttività, percentuali più basse di difetti riduzione precoce anziché tardiva dei rischi maggiori visibilità del progresso feedback precoce, impegno degli utenti, adattamento gestione della complessità miglioramento continuo del processo stesso Attenzione: ci sono anche dei rischi...... ma conoscendoli è possibile affrontarli in modo opportuno 25 Progetti iterativi vs. pensare a cascata Un rischio comune dire di adottare un processo iterativo ma pensare a cascata in questa iterazione scrivo i requisiti in questa iterazione faccio il progetto solo dopo scrivo il codice il test lo faccio in un altra iterazione In questo caso il pensiero a cascata ha inficiato il progetto non si tratta di un progetto iterativo o UP sano 26

Timeboxing Ciascuna iterazione ha una durata prefissata di circa una-sei settimane, a seconda dello specifico processo iterazioni brevi consentono un adeguato feedback e adattamento ai cambiamenti le iterazioni troppo brevi, invece, non consentono di svolgere lavoro sufficiente in un iterazione le iterazioni troppo lunghe, invece, non consentono di ottenere completamente i benefici dello sviluppo iterativo, aumentando così i rischi la durata di un iterazione, una volta fissata, non può cambiare le iterazioni sono timeboxed ciascuna iterazione deve produrre un sistema eseguibile è meglio ridurre i requisiti di un iterazione, piuttosto che non rispettarne la scadenza 27 * Iterazioni e requisiti bloccati Durante ciascuna iterazione, i requisiti su cui operare vengono prefissati (ovvero, stabiliti all inizio dell iterazione) e bloccati (non possono cambiare durante l iterazione) il team di sviluppo, nell ambito di ciascuna iterazione, può lavorare al suo meglio, concentrandosi solo sul lavoro richiesto dall iterazione poiché i requisiti sono bloccati, il team non può essere interrotto o disturbato dai committenti durante un iterazione, con un impatto decisamente positivo sulla tranquillità del team e sulla possibilità di raggiungere gli obiettivi di sviluppo dell iterazione in ogni caso, al termine di ciascuna iterazione i committenti possono vedere il progresso effettivo dello sviluppo, e fornire un feedback per guidare lo sviluppo successivo poiché le iterazioni sono brevi, il progresso e il feedback sono frequenti inoltre, nuove richieste dei committenti potranno essere prese in considerazione nelle iterazioni successive ma non è un problema, perché le iterazioni sono brevi 28

* Backlog e pianificazione iterativa Il backlog ( lavoro arretrato ) è uno strumento per l organizzazione del lavoro che deve essere ancora svolto nello sviluppo iterativo il backlog è un elenco di requisiti che devono essere ancora implementati e di problemi che devono essere ancora risolti la gestione del backlog è iterativa prima di iniziare una nuova iterazione le voci del backlog vengono aggiornate facendo cancellazioni, aggiunte o modifiche anche sulla base del feedback dell iterazione che si sta concludendo a ciascuna voce viene assegnata una priorità sulla base del valore di business e dei rischi associati a quella voce all iterazione che sta per iniziare viene assegnato il compito di implementare le voci a maggior priorità del lavoro arretrato dunque, la gestione del backlog guida la pianificazione e l evoluzione del processo di sviluppo 29 2.4 OOA/D iterativa ed evolutiva 1 2 3 4 5... 20 requirements workshops Imagine this will ultimately be a 20- iteration project. In evolutionary iterative development, the requirements evolve over a set of the early iterations, through a series of requirements workshops (for example). Perhaps after four iterations and workshops, 90% of the requirements are defined and refined. Nevertheless, only 10% of the software is built. requirements software requirements software 90% 90% 20% 50% 30% 2% 5% 8% 10% 20% Iteration 1 Iteration 2 Iteration 3 Iteration 4 Iteration 5 30

* Parentesi: Principio di Pareto Principio di Pareto la maggior parte degli effetti è dovuta a un numero ristretto di cause Una legge empirica detta anche legge 80/20 la maggior parte degli effetti (ad es., l 80%) è dovuta a un numero ristretto di cause (ad es., il 20%) i valori 80% e 20% sono solo indicativi applicazioni economia, informatica, qualità,... Quale interpretazione della figura precedente? le prime iterazioni si occuperanno del 20% dei requisiti o del sistema ma non di un 20% a caso ma proprio del 20% dei requisiti o del sistema che contribuiscono all 80% del valore complessivo! 31 2.5 Pianificazione iterativa Una pratica fondamentale dello sviluppo iterativo è la pianificazione iterativa che cosa fare nella prossima iterazione? UP incoraggia la pianificazione iterativa guidata dal rischio e guidata dal cliente obiettivo delle prime iterazioni identificare e affrontare i rischi principali implementare caratteristiche visibili a cui il cliente è particolarmente interessato compatibile con la pratica dello sviluppo centrato sull architettura le prime iterazioni si concentrano sulla costruzione, il test e la stabilizzazione del nucleo dell architettura 32

* Sviluppo iterativo e qualità del codice La scelta di un processo di sviluppo iterativo impone alcune qualità che il software deve possedere in particolare, la struttura del software deve essere flessibile, in modo tale che l impatto dei cambiamenti sul sistema sia basso a tal fine, il codice ma anche il progetto sottostante deve essere facilmente modificabile inoltre, come prerequisito, il codice ma anche il progetto sottostante deve essere facilmente comprensibile Attenzione, queste osservazioni apparentemente banali hanno un impatto fondamentale sul modo di fare analisi e progettazione del software 33 * Sviluppo iterativo e qualità del codice La scelta di un processo di sviluppo iterativo impone alcune qualità che il software deve possedere in particolare, la struttura del software deve essere flessibile, in modo tale che l impatto dei cambiamenti sul sistema sia basso a tal fine, il codice ma anche il progetto sottostante deve essere facilmente modificabile inoltre, come prerequisito, il codice ma anche il progetto sottostante deve essere facilmente comprensibile Come sostenere queste qualità? applicando principi di progettazione opportuni salto rappresentazionale basso, modularità, separazione degli interessi,... utilizzando strumenti (metodologici) opportuni tecnologie OO, refactoring, sviluppo guidato dai test, tracciatura dei requisiti e gestione delle modifiche, pianificazione iterativa,... 34

2.6 Sviluppo agile Lo sviluppo agile incoraggia l adozione di valori e pratiche che incoraggiano una reazione rapida e flessibile ai cambiamenti (agilità) semplicità, leggerezza, valore delle persone, comunicazione,... sviluppo iterativo e incrementale, pianificazione adattiva,... programmazione a coppie, sviluppo guidato dai test, refactoring,... Agilità si contrappone a pesantezza (burocratizzazione del lavoro) predittività I processi iterativi (UP compreso) possono essere applicati in modo agile 35 Manifesto e principi agili Individui e interazioni su processi e strumenti Software funzionante su documentazione completa Collaborazione con il cliente su negoziazione del contratto Risposta al cambiamento su perseguimento di un piano La nostra principale priorità è soddisfare il cliente con la consegna continua di software di valore Il cambiamento dei requisiti è benvenuto il cambiamento viene usato per il vantaggio competitivo del cliente Gli sviluppatori e i clienti devono lavorare insieme quotidianamente Costruire il progetto attorno a persone motivate Conversazione faccia a faccia Il software funzionante è la misura principale del progresso Sviluppo sostenibile Semplicità Gruppi di lavoro auto-organizzanti 36

2.7 Agile Modeling Il segreto della modellazione lo scopo della modellazione è principalmente di comprendere non di documentare 37 Agile Modeling Principi e valori dell Agile Modeling adottare un metodo agile non significa evitare del tutto la modellazione anche XP accetta la modellazione purché agile lo scopo dei modelli e della modellazione è agevolare la comprensione e la comunicazione non modellare tutto usa gli strumenti più semplici possibili non modellare da solo crea modelli in parallelo tenere presente che tutti i modelli saranno incompleti e imprecisi 38

Es: Usa gli strumenti più semplici possibili 39 2.8 Che cos è UP agile UP comprende un vasto insieme di ruoli, elaborati, attività e flussi di lavoro molti elementi sono opzionali personalizzazione di UP UP può essere applicato in modo agile UP agile un piccolo insieme di attività ed elaborati requisiti, analisi e progettazione iterativa e adattiva applicazione di UML secondo lo spirito della modellazione agile pianificazione iterativa e adattiva 40

2.9 Altre pratiche fondamentali di UP UP promuove diverse discipline fondamentali (best practices) sviluppare software in modo iterativo, evolutivo ed adattivo sviluppo guidato dal rischio sviluppare il cuore dell architettura nelle prime iterazioni coinvolgimento continuo degli utenti verifica continua delle qualità testare presto, spesso, e in modo realistico applicare i casi d uso se appropriato modellare in modo visuale gestire attentamente i requisiti gestire le richieste di cambiamento e le configurazioni uso delle tecnologie a oggetti (OOA/OOD/OOP) sviluppo basato su componenti 41 2.10 Fasi di UP Un progetto UP organizza il lavoro e le iterazioni in quattro fasi principali ideazione (inception) avvia il progetto visione approssimativa del sistema, stime vaghe dei costi elaborazione (elaboration) realizza il nucleo dell architettura visione raffinata del sistema, implementazione iterativa del nucleo dell architettura, risoluzione dei rischi maggiori, identificazione della maggior parte dei requisiti, stime realistiche dei costi costruzione (construction) realizza le capacità operative iniziali implementazione iterativa, risoluzione dei rischi minori transizione (transition) completa il prodotto verifiche finali (beta test) e rilascio agli utenti 42

Fasi di un progetto UP 43 2.11 Discipline di UP In UP, le attività lavorative (compiti) sono organizzate in discipline una disciplina è l insieme delle attività, e dei relativi elaborati, relative ad una determinata area un elaborato (artifact) è il termine generico che indica un prodotto di lavoro Tra le discipline di UP, tre sono di interesse per questo corso requisiti (requirements) modellazione del business (business modeling) progettazione (design) Alcune ulteriori discipline di UP implementazione test project management 44

Discipline di UP e sviluppo iterativo Focus of this book Sample UP Disciplines Business Modeling Requirements Design A four-week iteration (for example). A mini-project that includes work in most disciplines, ending in a stable executable. Note that although an iteration includes work in most disciplines, the relative effort and emphasis change over time. This example is suggestive, not literal. Implementation Test Deployment Configuration & Change Management Project Management Environment Iterations 45 Discipline di UP e sviluppo iterativo Ciascuna iterazione coinvolge molte o tutte le discipline lo sforzo richiesto da ciascuna disciplina cambia durante lo svolgimento delle varie fasi e iterazioni 46

Struttura del corso, fasi e discipline Questo corso enfatizza soprattutto la fase di elaborazione alcune attività ed elaborati delle discipline di modellazione del business, requisiti, progettazione che sono la fase e le discipline in cui vengono principalmente applicate l analisi dei requisiti, l OOA, l OOD, i pattern, UML 47 2.12 Personalizzare UP Alcuni principi e pratiche di UP sono indispensabili ad eccezione del codice, tutte le attività e gli elaborati sono opzionali ciascun progetto va basato sugli elaborati e le attività che sono effettivamente di valore per quel particolare progetto La scelta degli elaborati di UP per un progetto viene scritta in un breve documento lo Scenario di sviluppo (development case) disciplina di infrastruttura (environment) 48

Scenario di sviluppo per lo studio di caso Disciplina Pratiche Elaborato Modellazione del business Requisiti Progettazione Implementazione Gestione del progetto... agile modeling workshop requisiti workshop requisiti vision box dot voting agile modeling test-driven dev. test-driven dev. pair programming integrazione continua standard di codifica agile PM daily meeting Modello di dominio (Domain Model) Modello dei casi d'uso (Use-Case Model) s = start (inizia) r = refine (raffina) Ideaz. (I1) s Elab. (E1..En) Visione (Vision) s r Specifiche supplementari (Supplementary Specification) Glossario (Glossary) s r s s r r Costr. (C1..Cn) Modello di progetto (Design Model) s r Documento dell'architettura software (SW Architecture Document, SAD) Modello dei dati (Data Model) s r Modello di implementazione (Implementation Model) Piano di sviluppo software (SW Development Plan) s Trans. (T1..T2) s r r s r r r 49 2.13 Non hai capito lo sviluppo iterativo o UP se pensi che ideazione=requisiti, elaborazione=progettazione e costruzione=implementazione pensi che lo scopo dell elaborazione è di definire modelli, che vengono implementati (in codice) nella fase di costruzione provi a definire la maggior parte dei requisiti prima di iniziare la progettazione e l implementazione provi a fare la maggior parte della progettazione prima di iniziare l implementazione provi a definire e scegliere una architettura prima di iniziare la programmazione e il test in modo iterativo viene speso molto tempo per i requisiti e la progettazione prima di iniziare la programmazione credi che la lunghezza giusta per le iterazioni sia tre mesi non tre settimane pensi che la creazione di diagrammi UML e le attività di progettazione devono definire il progetto in dettaglio, e che la programmazione è semplicemente traduzione di questi diagrammi pensi che adottare UP significhi svolgere quante più attività e produrre quanti più elaborati possibili provi a pianificare il progetto in dettaglio dall inizio alla fine, in modo speculativo vuoi piani e stime dei costi credibili prima che sia conclusa la fase di elaborazione 50