Progetto software
Transcript
Progetto software
Progetto software 2008/2009 Docente Marianna Nicolosi Asmundo Obiettivi del corso Coinvolgervi nello sviluppo di un progetto software in cui – mettere a frutto le conoscenze che avete acquisito durante i corsi già frequentati (programmazione, algoritmi, ingegneria del software, database ecc…) – applicare un processo per la gestione e lo sviluppo del progetto analogo a quelli usati nel mondo reale Come? Lavorerete in team di 4/6 persone • un leader • uno o più analisti • due o più programmatori Sarete voi a scegliere il ruolo più adatto alle vostre capacità e alla vostra indole. Mi comunicherete la formazione del vostro gruppo ed eventuali modifiche. I Leader • Problem solving: – determinare i fattori tecnici e organizzativi più importanti – strutturare sistematicamente una soluzione – motivare gli sviluppatori • Identità manageriale: – assumersi la responsabilità del progetto – coordinazione del resto del team • Incentivazione: – ricompensare lo spirito di iniziativa – saper rischiare • Influenza e spirito di gruppo: – Mantenere il controllo nelle situazioni critiche – relazionarsi bene coi colleghi Il team • Staff tecnico auto-organizzato • Parola d’ordine: cooperazione “Se vuoi migliorare in modo incrementale, sii competitivo; se vuoi migliorare in modo esponenziale sii cooperativo.” Autore ignoto Criteri di valutazione • Qualità del progetto sviluppato • Coesione del gruppo Non sono previsti progetti individuali Modalità di esame • L’esame consiste in – sviluppo e consegna del progetto – Esame orale • Il vostro lavoro verrà monitorato per fasi • Una volta consegnato, l’intero progetto verrà valutato in maniera complessiva. Ogni membro del team riceverà il medesimo voto a meno che l’intera squadra non decida di consegnare anche i diari individuali. • Durante l’esame orale verrà verificata la competenza di ciascun membro del team rispetto all’intero progetto e rispetto al ruolo specifico ricoperto. Verrà anche valutata la conoscenza degli argomenti trattati durante il corso. Contenuti del corso Fasi di sviluppo di un progetto • Pianificazione • Qualità • Analisi del dominio e dei requisiti • Progettazione • Implementazione • Collaudo Cos’è un progetto? Un progetto è un’impresa temporanea • effettuata da persone • vincolata da risorse limitate • pianificata, eseguita e controllata intrapresa per creare un prodotto o servizio unico Dimensioni di un progetto: • Coinvolge una persona sola o molte migliaia • Richiede meno di 100 più di 10 milioni di ore per essere completato Esempi • Lo sviluppo di un nuovo prodotto o servizio • La progettazione di un nuovo veicolo di trasporto • … Temporaneo & Unico • Temporaneo: Ogni progetto ha un inizio e una fine ben precisa (obiettivo raggiunto o irraggiungibile) – non significa che dura poco infatti molti progetti durano diversi anni • Unico: Ogni progetto riguarda qualcosa che non è mai stata fatta prima ed è pertanto unica – un progetto differisce da un altro per il tipo di oggetto sviluppato, per gli strumenti usati, per le persone coinvolte o soltanto per le date Progetti software Il lavoro di ingegnerizzazione del software viene normalmente organizzato in progetti Sistema software di piccole dimensioni: team di sviluppo unico con tre/quattro sviluppatori Sistema software di dimensioni grandi: il lavoro viene suddiviso in molti progetti piccoli Tipi principali di progetto: • Modifica di software esistente • Sviluppo di un sistema da zero • Sistema nuovo costruito con componenti già esistenti Progetti software Sviluppo di: • • • • • Un compilatore, un editor, un sistema operativo Un applicativo web L’implementazione di un algoritmo di ordinamento Un dimostratore automatico … Progetti software/ingegneria software In generale non possiamo produrre software nella maniera più immediata 1. 2. 3. I progetti sono in genere di dimensioni consistenti Possono richiedere l’applicazione di più strumenti (linguaggi di programmazione, algoritmi) Possono coinvolgere più persone (sviluppatori, committenti e utenti) Ognuno di questi punti basta a giustificare l’utilizzo di un processo per lo sviluppo del software Sviluppo del software Avviene tramite comunicazione: “Poiché il software, come ogni capitale, incorpora della conoscenza e poiché la conoscenza è inizialmente in larga misura dispersa, tacita, latente e incompleta, lo sviluppo del software è un processo di apprendimento sociale. Questo processo è un dialogo in cui la conoscenza viene raccolta e incorporata nel software. Il processo crea interazione fra gli utenti e i progettisti, fra gli utenti e gli strumenti in evoluzione e fra i progettisti e gli strumenti in evoluzione (la tecnologia). Si tratta di un processo iterativo in cui lo strumento evolutivo stesso fungerà da mezzo di comunicazione e in cui ogni nuova fase del dialogo trae conoscenze sempre più utili dalle persone interessate.” H. Baetjer Processo di sviluppo del software? Quando si realizza un prodotto o un sistema è importante svolgere un percorso che aiuti ad ottenere risultati di alta qualità nel tempo prefissato Processo di sviluppo software Chi • Gli ingegneri del software adattano il processo alle loro esigenze e poi lo seguono • I committenti giocano un ruolo importante nel processo di definizione, costruzione e collaudo Importanza del processo di sviluppo del software • Introduce stabilità, controllo e organizzazione Quale processo di sviluppo seguire Il processo che si adotta dipende dal software che si sta realizzando Processo di sviluppo software Cosa si produce I programmi, i documenti e i dati sviluppati come conseguenza delle attività di ingegneria del software definite dal processo Verifica di correttezza del procedimento Qualità, ottimizzazione dei tempi e utilizzabilità a lungo termine del prodotto che si sta realizzando sono i migliori indicatori dell’efficacia del processo utilizzato Quindi Un processo di sviluppo software è una struttura di riferimento entro cui si svolgono le attività necessarie alla realizzazione di software di alta qualità Struttura di un processo • Attività strutturali – Con diverse azioni ed insiemi di attività • Attività ombrello applicabili all’intero processo di sviluppo Attività strutturali • • • • • Comunicazioni Pianificazione Modellazione Costruzione Dispiegamento Esempio 1 L’attività di modellazione è costituita da due azioni di ingegneria del software: l’analisi e il progetto Ciascuna viene rappresentata da un insieme di attività che meglio considera le esigenze del progetto e le caratteristiche del team Esempio 2 – Raccolta dei requisiti Progetto di dimensioni limitate 1. Creare elenco figure coinvolte nel progetto 2. Invitarli a una riunione informale 3. Domandare i requisiti e realizzare un elenco finale 4. Stabilire le priorità dei requisiti 5. Prendere nota delle aree in cui esistono incertezze Progetto più esteso 1. Creare elenco figure coinvolte nel progetto 2. Consultare separatamente 3. Costruire elenco preliminare funzioni 4. Programmare riunioni 5. Condurre le riunioni 6. Produrre nelle riunioni una serie di scenari informali 7. Raffinare questi scenari 8. Costruire nuovo elenco dei requisiti delle figure coinvolte 9. Stabilire le priorità dei requisiti 10. Definire i requisiti 11. Prendere nota dei vincoli 12. Discutere i metodi di convalida Attività ombrello • Controllo del progetto e sviluppo del software • Gestione dei rischi • Valutazione della qualità del software • Revisioni tecnico formali • Misura • Gestione del riutilizzo Modelli prescrittivi • Definiscono un insieme distinto di attività, azioni, compiti, risultati e prodotti che sono necessari per ingegnerizzare un software di alta qualità. • Ogni modello di processo prescrittivo definisce anche un flusso di lavoro, ovvero il modo in cui gli elementi del processo vengono correlati fra loro. • “Prescrittivo” non vuol dire “statico”: i modelli prescrittivi devono essere adattati alle persone, ai problemi e al progetto. Il modello a cascata 1 Detto anche ciclo di vita classico o modello sequenziale lineare, suggerisce un approccio sistematico sequenziale allo sviluppo del software USO: • Quando i requisiti di un problema sono abbastanza noti • Il lavoro procede dalla comunicazione al dispiegamento in modo lineare ESEMPI: adattamenti o estensioni bene definite di un sistema esistente Il modello a cascata 2 Com m unic a t ion proje c t init ia t ion re quire m e nt ga t he ring Planning estimating scheduling tracking Mode ling analysis design Const r uc t ion code t est De ploy m e nt de liv e ry s upport f e e dba c k Il modello a cascata 3 Svantaggi: 1. Il progetto reale si conforma raramente allo schema sequenziale del modello (ogni modifica può essere problematica) 2. Difficilmente il cliente è in grado di enunciare esplicitamente tutti i requisiti (il modello a cascata lo esige) 3. Solo verso la fine del processo il cliente sarà in grado di vedere una versione funzionante dei programmi Modelli a processo incrementale • Requisiti iniziali chiari ma progetto molto ampio • L’utente desidera subito un insieme limitato di funzionalità • da raffinare in seguito In questi casi viene scelto un modello di processo progettato per produrre il software ad incrementi Il modello incrementale 1 increment # n Co m m u n i c a t i o n Pl a nni ng M ode l ing a na ly s is d es ig n Co n s t ru c t i o n c od e t es t De p l o y m e n t d e l iv e ry fe e dba c k deliv ery of nt h increment increment # 2 Co m m u n i c a t i o n Pl a nnin g M ode l ing an a ly s i s de s ig n Co n s t ru c t i o n c od e De p l o y m e n t t es t d e li v e ry fe e dba c k increment # 1 Co m m u n i c a t i o n Pl a nning M ode li ng a n al y s is d e s i gn Co n s t ru c t i o n code De p l o y m e n t t es t d e l i v e ry fe e dba c k deliv ery of 1st increment project calendar t ime deliv ery of 2nd increment Il modello incrementale 2 Esempio: programma di elaborazione testi • Stadio 1: funzioni base relative alla gestione dei file, al trattamento del testo e alla produzione di documenti • Stadio 2: funzioni più raffinate di trattamento del testo e di produzione dei documenti • Stadio 3: controlli ortografici e grammaticali • Stadio 4: funzioni avanzate di impaginazione Il modello incrementale 3 • Utile quando la disponibilità di personale è insufficiente a garantire l’implementazione completa nei termini di tempo stabiliti • La realizzazione dei primi stadi può essere affidata ad un piccolo team • Se il primo incremento ha successo si può accrescere il team • La sequenza di stadi può essere pianificata in modo da evitare rischi di natura tecnica