3. SOFTWARE MANAGEMENT ¾ ¾ ¾ A.Cortesi Introdurre caratteristiche e problematiche della direzione di progetto software (software management) Discutere la pianificazione di un progetto e la temporizzazione (scheduling) Presentare rappresentazioni grafiche della pianificazione di un progetto Ingegneria del Software Slide 1 Software project management ¾ ¾ ¾ ¾ A.Cortesi Sono le attività necessarie per assicurare che un prodotto software sia sviluppato rispettando le scadenze fissate e risponda a determinati standard Interazione di aspetti economici e tecnici Un progetto diretto bene qualche volta fallisce, uno diretto male fallisce sicuramente L’importanza dell’esperienza Ingegneria del Software Slide 2 Che cos’è un progetto… Un progetto è un insieme ben definito di attività che 9 ha un inizio 9 ha una fine 9 realizza un obiettivo 9 è realizzato da un’equipe di persone 9 utilizza un certo insieme di risorse 9 non è riconducibile a “routine” ¾ A.Cortesi Ingegneria del Software Slide 3 Problemi ¾ ¾ ¾ ¾ A.Cortesi Il prodotto software è “intangibile”: per valutare i progressi ci si deve basare sulla documentazione L’ingegneria del software non è ancora riconosciuta come disciplina “solida”al pari dell’ingegneria meccanica, elettrica, Non ci sono standard per il processo di produzione software Ogni progetto ha una storia a sé (problemi di scheduling) Ingegneria del Software Slide 4 I giocatori in campo... ¾ Senior managers 9 ¾ Project managers 9 ¾ specificano i requisiti del software da sviluppare End users 9 A.Cortesi hanno le competenze tecniche per realizzare il sistema Customers 9 ¾ pianificano, motivano, organizzano e controllano lo sviluppo Practitioners 9 ¾ definiscono i termini economici del progetto interagiscono con il sistema una volta realizzato Ingegneria del Software Slide 5 Perché c’è bisogno di un team? ¾ A.Cortesi La maggior parte dei progetti software sono troppo impegnativi per essere realizzati da una sola persona Ingegneria del Software Slide 6 The mythical man/month ¾ Perché non calcolare la “forza lavoro” in termini di mesi uomo necessari? 9 ¾ Persone/mese * Tempo allocato = Numero_Persone_Necessarie Questa equazione non può essere utilizzata perché: 9 9 Alcuni compiti possono essere condivisi, altri no Esempio: raccogliere fragole vs. produrre un bambino overhead necessario per il coordinamento e la comunicazione A.Cortesi Ingegneria del Software Slide 7 Tipologie di team (1) ¾ Democratico Decentralizzato 9 9 9 ¾ Vantaggi 9 9 ¾ Attitudine positiva a ricercare presto gli errori Funziona bene per problemi “difficili” (ad esempio per la ricerca) Svantaggi 9 9 A.Cortesi Assenza di un leader permanente Consenso di gruppo sulle soluzioni e sulla organizzazione del lavoro Comunicazione orizzontale È difficile da imporre… Non è scalabile... Ingegneria del Software Slide 8 Tipologie di team (2) Controllato Decentralizzato ¾ 9 9 9 Un leader riconosciuto, che coordina il lavoro La risoluzione dei problemi è di gruppo, ma l’implementazione delle soluzioni è assegnata a sottogruppi da parte del leader Comunicazione orizzontale nei sottogruppi e verticale con il leader A.Cortesi Ingegneria del Software Slide 9 Tipologie di team (3) ¾ Controllato Centralizzato 9 9 A.Cortesi Il team leader decide sulle soluzioni e sull’organizzazione Counicazione verticale tra team leader e gli altri membri Ingegneria del Software Slide 10 Ruoli in un team Controllato Decentralizzato ¾ Project Manager 9 ¾ Technical staff 9 ¾ supporta il project manager ed è responsabile della validazione Software librarian 9 A.Cortesi conduce l’analisi e lo sviluppo (da 2 a 5 persone) Backup engineer 9 ¾ pianifica, coordina e supervisiona le attività del team mantiene e controlla la documentazione, i listati del codice, i dati... Ingegneria del Software Slide 11 spazio condiviso & risultati condivisi ¾ ¾ ¾ ¾ ¾ A.Cortesi Un team deve prima di tutto decidere gli strumenti che permettono la cooperazione La pianificazione Chi fa cosa Le scelte fatte Cosa è stato fatto Ingegneria del Software Slide 12 Le attività del project manager ¾ ¾ ¾ ¾ ¾ ¾ A.Cortesi Stesura della proposta di progetto Stima del costo del progetto Pianificazione (planning) e temporizzazione (scheduling) Monitoraggio e revisioni del progetto Selezione e valutazione del personale Stesura di rapporti e presentazioni Ingegneria del Software Slide 13 Stimare i costi di un progetto ¾ Dilaziona la stima fino a quando il progetto non è in stato avanzato di sviluppo - modello non praticabile: la stima dev’essere fatta all’inizio ¾ Basa la stima su progetti simili già sviluppati - similarità di problemi, clienti, ecc. ¾ Usa tecniche di decomposizione per generare stime di costo e di risorse necessarie - approccio “divide et impera”, calcolando il costo delle componenti ¾ A.Cortesi Usa uno o più modelli empirici - basati su dati storici, es. COnstructive COst MOdel (Boehm, 1981) Ingegneria del Software Slide 14 Stime quantitative: LOC ¾ ¾ KLOC = Migliaia di linee di codice Metriche: 9 9 9 9 9 9 ¾ ¾ $ per KLOC errori o difetti per KLOC LOC per mese/persona pagine di documentazione per KLOC errori/mese-persona $/pagina di documentazione Il codice è il prodotto tangibile del processo di sviluppo, ed esiste già letteratura in proposito Dipende dal linguaggio di programmazione e penalizza programmi scritti bene e concisi A.Cortesi Ingegneria del Software Slide 15 Stime quantitative: FP ¾ Function Points: la funzionalità offerta dall’applicazione, a partire dal dominio informativo e da un giudizio sulla complessità del software ¾ Parametri ¾ FP = totale * [0.65 + 0.01 * Σ Fi] numero di user inputs numero di user output numero di richieste numero di files numero di interfacce esterne Fattori di Peso Fi 3 4 3 7 5 4 5 4 10 7 6 7 6 15 10 dove gli Fi sono fattori di aggiustamento A.Cortesi Ingegneria del Software Slide 16 LOC/FP A.Cortesi Linguaggio di programmazione LOC/FP media Assembler C Fortran Cobol Pascal Ada linguaggi orientati agli oggetti fogli di calcolo (spreadsheets) linguaggi grafici 320 128 105 105 90 70 30 6 4 Ingegneria del Software Slide 17 Struttura del piano di progetto 1. Introduzione 2. Organizatione del Progetto 3. Processi Gestionali 4. Processi Tecnici 5. Pianificazione del lavoro, delle risorse umane e del budget. A.Cortesi Ingegneria del Software Slide 18 1. Introduzione 1.1 Overview del Progetto 9 Descrizione di massima del progetto e del prodotto. 1.2 Deliverables del Progetto 9 Tutti gli items che saranno consegnati, con data e luogo di consegna 1.3 Evoluzione del SPMP 9 Piani per cambiamenti ipotizzabili e non 1.4 Materiale di riferimento 9 Lista dei documenti cui ci si riferisce nel SPMP 1.5 Definizioni e Abbreviazioni A.Cortesi Ingegneria del Software Slide 19 2. Organizzazione del progetto 2.1 Modello del Processo 9 Relazioni tra le varie fasi del processo 2.2 Struttura Organizzativa 9 Gestione interna, chart dell’organizzazione 2.3 Interfacce Organizzative 9 Relazioni con altre entità 2.4 Responsabilità di Progetto 9 9 9 A.Cortesi Principali funzioni e attività; Di che natura sono? Chi ne è il responsabile ? Ingegneria del Software Slide 20 3. Processi gestionali 3.1 Obiettivi e Priorità 3.2 Assunzioni, Dipendenze, Vincoli 9 Fattori esterni 3.3 Gestione dei rischi 9 Identificazione, Valutazione, Monitoraggio dei rischi 3.4 Meccanismi di monitoraggio e di controllo 9 Meccanismi di reporting, format, flussi di informazione, revisioni 3.5 Pianificazione dello staff 9 A.Cortesi Skill necessari (cosa?, quanto?, quando?) Ingegneria del Software Slide 21 4. Processi tecnici 4.1 Metodi, Strumenti e Tecniche 9 9 Sistemi di calcolo, metodi di sviluppo, struttura del team, ecc. Standards, linee guida, politiche. 4.2 Documentazione del Software 9 Piano di documentazione, che deve includere milestones, e revisioni 4.3 Funzionalità di supporto al progetto 9 9 A.Cortesi Pianificazione della qualità Pianificazione della gestione delle configurazioni Ingegneria del Software Slide 22 5. Pianificazione del lavoro, delle risorse umane e del budget. 5.1 Work Packages (Work breakdown structure) 9 Il progetto è scomposto in tasks; definizione di ciascun task 5.2 Dipendenze 9 Relazioni di precedenza tra funzioni, attività e task 5.3 Risorse Necessarie 9 Stima delle risorse necessarie, in termini di personale, di tempo di computazione, di hardware particolare, di supporto software ecc. 5.4 Allocazione del Budget e delle Risorse 9 Associa ad ogni funzione, attività o task il costo relativo 5.5 Pianificazione 9 Deadlines e Milestones A.Cortesi Ingegneria del Software Slide 23 Analisi dei rischi ¾ Identificazione dei rischi 9 9 9 9 9 9 9 ¾ ¾ A.Cortesi legati alla taglia del prodotto da costruire o modificare legati ai vincoli importi dal mercato o dal contratto legati alle caratteristiche del cliente legati alla buona definizione del processo legati all’ambiente di sviluppo (qualità e affidabilità degli strumenti) legati alla complessità del sistema da costruire e alle novità tecnologiche legate al sistema legati alla dimensione e all’esperienza del team di sviluppo Sviluppare una tabella: probabilità e impatto Strategia di gestione: evitare/monitorare/gestire Ingegneria del Software Slide 24 Pianificazione del lavoro f1:Function p:Project f2:Function a1:Activity a2:Activity a2.1:Activity t1:Task A.Cortesi a3:Activity a2.2:Activity t2:Task a2.3:Activity t3:Task t4:Task Ingegneria del Software Slide 25 Attività f1:Function p:Project f2:Function a1:Activity a2.1:Activity t1:Task A.Cortesi a2:Activity Unità principali di lavoro, con date di consegna precise a2.2:Activity Scomponibili in una serie di tasks t2:Task t3:Task Ingegneria del Software Culminano in una milestone Slide 26 Organizzazione delle attività ¾ ¾ ¾ ¾ A.Cortesi In un progetto le attività devono essere organizzate in modo da produrre risultati valutabili dal management Milestones sono i punti finali di ogni singola attività di processo Deliverables sono i risultati che sono forniti al committente Il modello a cascata suggerisce una definizione ovvia di “milestone” Ingegneria del Software Slide 27 Milestones & deliverables ACT IVITIES Feasibility study Requir ements analysis Prototype development Design study Requir ements specification Feasibility report Requir ements definition Evaluation report Architectural design Requir ements specification MILESTONES A.Cortesi Ingegneria del Software Slide 28 Funzioni ¾ Actività o insiemi di attività che coprono tutta la durata del progetto 9 9 9 9 9 A.Cortesi Project management Configuration Management Documentation Quality Control (Verification and validation) Training Ingegneria del Software Slide 29 Tasks ¾ Unità di lavoro “atomiche” 9 ¾ Specifica di un task: Work package 9 9 9 9 A.Cortesi Hanno durata stimabile, necessitano di certe risorse, producono risultati tangibili (documentazione, codice, ...) Nome e descrizione del lavoro che deve essere fatto Precondizioni per poter avviare il lavoro, durata, risorse necessarie Risultato del lavoro e criteri di accettabilità Rischi Ingegneria del Software Slide 30 Scheduling di progetto ¾ ¾ ¾ ¾ A.Cortesi Dividi il progetto in attività e mansioni (tasks) e stima il tempo e le risorse necessarie per completare ogni singola mansione Organizza le mansioni in modo concorrente, per ottimizzare la forza lavoro Minimizza la dipendenza tra le singole mansioni per evitare ritardi dovuti all’attesa del completamento di un’altra mansione Sono necessari intuito ed esperienza Ingegneria del Software Slide 31 Problemi nello scheduling ¾ ¾ ¾ ¾ A.Cortesi E’ difficile stimare la difficoltà dei problemi ed il costo di sviluppo di una soluzione La produttività non è proporzionale al numero di persone che lavorano su una singola mansione Aggiungere personale in un progetto in ritardo può aumentare ancora di più il ritardo Imprevisti succedono sempre... Ingegneria del Software Slide 32 Grafico a barre, grafo delle attività e diagramma di Gannt ¾ ¾ ¾ ¾ ¾ Diversi tipi di rappresentazione grafica dello scheduling del progetto Mostrano la suddivisione del lavoro in mansioni. Le mansioni non devono essere troppo piccole (una settimana o due di lavoro) Il grafo delle attività evidenzia le dipendenze e il cammino critico Il grafico a barre mostra lo scheduling come calendario lavori Il diagramma di Gannt per la temporizzazione A.Cortesi Ingegneria del Software Slide 33 Mansioni: durata e dipendenze Mansioni T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 A.Cortesi Durata (giorni) 8 15 15 10 10 5 20 25 15 15 7 10 Ingegneria del Software Dipendenze T1 T2, T4 T1, T2 T1 T4 T3, T6 T5, T7 T9 T11 Slide 34 Network delle attività 1 5 d ay s 1 4/ 7/ 94 M1 8 day s T9 T1 2 5/ 7/ 94 4/ 7/ 94 5 d ays 4/ 8/ 94 2 5/ 8/ 94 T6 M4 M6 M3 s tart 1 5 d ay s T3 7 day s 2 0 d ay s 1 5 d ay s T1 1 T7 T2 2 5/ 7/ 94 1 0 d ay s M2 T4 5/ 9/ 94 1 1/ 8/ 94 1 0 d ay s M7 T5 M8 1 5 d ay s T1 0 1 8/ 7/ 94 10 days T1 2 M5 2 5 d ay s T8 A.Cortesi Fi ni sh 1 9/ 9/ 94 Ingegneria del Software Slide 35 Temporizzazione delle attività 4/7 11/7 18/7 25/7 1/8 8/8 15/8 22/8 29/8 5/9 12/9 19/9 Start T4 T1 T2 M1 T7 T3 M5 T8 M3 M2 T6 T5 M4 T9 M7 T10 M6 T1 1 M8 T12 Finish A.Cortesi Ingegneria del Software Slide 36 Allocazione della forza lavoro 4/7 Fred 11/7 18/7 25/ 1/8 8/8 15/8 22/8 29/8 5/9 12/9 19/9 T4 T8 T11 T12 Jane T1 T3 T9 Anne T2 T6 Jim Mary A.Cortesi T10 T7 T5 Ingegneria del Software Slide 37 Pianificazione collaborativa A.Cortesi Ingegneria del Software Slide 38 A.Cortesi Ingegneria del Software Slide 39 Sommario parte introduttiva ¾ ¾ ¾ A.Cortesi Prodotto software & processo software 9 9 Modelli di processo: a cascata, evolutivi, a spirale Visibilità del processo di sviluppo software 9 9 9 9 9 ambiente acquisizione di sistemi Processo di sviluppo di un sistema Modello di architettura di un sistema Affidabilità di un sistema 9 9 Pianificazione di progetto Organizzazione e scheduling Progettazione di sistemi Project Management Ingegneria del Software Slide 40