corso di laurea triennale in ingegneria informatica ingegneria del software gestione di progetto
TRANSCRIPT
Corso di Laurea Triennale in Ingegneria Corso di Laurea Triennale in Ingegneria InformaticaInformatica
Ingegneria del softwareIngegneria del software
Gestione di progettoGestione di progetto
Ingegneria del Ingegneria del softwaresoftware Contenuti Contenuti
• Gestione di progetto• Ruoli professionali• Pianificazione di progetto• Stima dei costi di progetto• Rischi di progetto
Ingegneria del Ingegneria del softwaresoftware Gestione del progettoGestione del progetto
• Dal processo al progetto – Da processo definito a standard aziendale– Processo istanziati secondo le esigenze del progetto
• Stimare i costi e le risorse necessarie• Pianificare le attività, assegnarle alle persone• Controllare le attività e verificare i risultati
Ingegneria del Ingegneria del softwaresoftware ProblematicheProblematiche
• Il prodotto software è intangibile e flessibile• All’ingegneria del software non viene riconosciuta
la dignità di altre discipline ingegneristiche• Il processo di sviluppo
Ingegneria del Ingegneria del softwaresoftware Fattori di rischioFattori di rischio
• Variabilità del personale– Incluso il responsabile
• Disponibilità della piattaforme di sviluppo di esecuzione• Variabilità dei requisiti• Ritardo nelle specifiche
– Iniziali (del committente) e/o interne (del fornitore)– Variabilità delle tecnologie
• Prodotti nuovi vs obsoleti (non più manutenuti)• Competizione sul mercato
Ingegneria del Ingegneria del softwaresoftware Gestione dei rischiGestione dei rischi
• Identificazione – Nel progetto, nel prodotto, nel business
• Analisi– Probabilità di occorrenza e conseguenze possibili
• Pianificazione– Come evitarne o minimizzare gli effetti
• Controllo– Attenzione continua nel corso del progetto
Ingegneria del Ingegneria del softwaresoftware Ruoli Ruoli
• Funzioni aziendali assegnate al progetto• Sviluppo: aspetti tecnologici• Direzione: responsabilità decisionali• Amministrazione: gestione dei processi• Controllo: gestione del sistema qualità
• Profilo professionale• Requisiti per l’assunzione di un ruolo in un progetto• Competenze tecnologiche e metodologiche• Esperienze espresse in anni e partecipazione a progetti
Ingegneria del Ingegneria del softwaresoftware Analisti e progettistiAnalisti e progettisti
• Analisti– Conoscono il dominio ed hanno una cospicua esperienza
professionale– Hanno grande impatto sul successo del progetto– Sono pochi. Raramente seguono il progetto fino alla conclusione
• Progettisti– Hanno competenze tecniche e tecnologiche aggiornate ed esperienza
professionale– Hanno grande impatto sugli aspetti tecnici e tecnologici del progetto.
Spesso ne assumono responsabilità di scelta e gestione – Sono pochi. Talvolta seguono il prodotto fino alla manutenzione
Ingegneria del Ingegneria del softwaresoftware Programmatori e verificatoriProgrammatori e verificatori
• Programmatori• Partecipano alla realizzazione e manutenzione del prodotto• Hanno competenze tecniche, visione e responsabilità circoscritte• Formano la categoria storicamente più numerosa• Partecipano anche alla manutenzione
• Verificatori• Partecipano all’intero ciclo di vita• Hanno competenze tecniche, conoscenza delle norme, esperienza
di progetto• Hanno capacità di giudizio e di relazione
Ingegneria del Ingegneria del softwaresoftware Responsabile di progettoResponsabile di progetto
• Rappresenta il progetto• Accentra le responsabilità di scelta e approvazione• Partecipa al progetto per tutta la sua durata• È difficilmente sostituibile
• Responsabilità • Pianificazione• Gestione delle risorse umane• Controllo e coordinamento
• Deve avere conoscenze e capacità tecniche• Per comprendere ed anticipare l’evoluzione del progetto
Ingegneria del Ingegneria del softwaresoftware Amministrazione di progettoAmministrazione di progetto
• Controllo dell’ambiente di sviluppo• Amministrazione delle risorse e delle infrastrutture• Risoluzione di problemi legati all’ambiente e al processo• Gestione della documentazione di progetto• Controllo di versioni e configurazioni
• Funzione o ruolo?• Funzione in aziende molto strutturate, con progetti simili• Ruolo (spesso si più persone) in progetti diversificati
Ingegneria del Ingegneria del softwaresoftware Controllo della qualitàControllo della qualità
• La funzione di più recente introduzione– Funzione e non ruolo
• Accertamento della qualità– Dei prodotti e dei processi– Sia verso il committente che verso la direzione aziendale
• Dare confidenza– Definendo e manutenendo i processi aziendali– Verificandone la corretta applicazione
Ingegneria del Ingegneria del softwaresoftware Pianificazione di progettoPianificazione di progetto
• Definizione delle attività– Per pianificarne lo svolgimento e controllarne l’attuazione– Per avere una base su cui gestire l’allocazione delle risorse– Per stimare e controllare scadenze e costi
• Strumenti per la pianificazione– Work Breakdown structure– Diagrammi di Gantt “works, Wages and profit”, HenryL.
Gantt” the engineering magazine” 1910)
Ingegneria del Ingegneria del softwaresoftware Work breakdown structureWork breakdown structure
• Struttura gerarchica delle attività• Ogni attività si compone di sottoattività• Non necessariamente sequenziali• Univocamente identificate
1. offerta
1.3 piano di progetto
1.2 analisi dei requisiti
1.1 studio di fattibilità
Ingegneria del Ingegneria del softwaresoftware Diagrammi di GanttDiagrammi di Gantt
• Dislocazione temporale delle attività» Per rappresentare la durata» Per rappresentare sequenzialità e parallelismo» Per confrontare le stime con i progressi
tempo
Studio di fattibilità
Analisi dei requisiti
Piano di progetto
Durata effettivaDurata pianificata
Ingegneria del Ingegneria del softwaresoftware Diagrammi PERTDiagrammi PERT
• Dipendenze temporali tra attività– Per ragionare sulle scadenze di un progetto– Slack time, free slack, total slack…– Cammino critico
Studio di fattibilità
8/11 30/11
Analisi dei requisit
19/11 9/11
Piano di progetto
30/11 14/11
Slack=0
Slack=5
Ingegneria del Ingegneria del softwaresoftware Allocazione delle risorseAllocazione delle risorse
• Assegnare attività e ruoli a persone• Problemi
– Non sottostimare– Non sovrastimare
• Risorse impegnate su progetti diversi• Per non correre il rischio di sottoallocare• Per far fronte alle richieste dei clienti ( mai rifiutare)• Cammini critici su più progetti
Ingegneria del Ingegneria del softwaresoftware Stima dei costi di progettoStima dei costi di progetto
• Come pianificare– Gli strumenti permettono di:
• organizzare le attività• evidenziare le criticità• studiare scenari diversi
– Come definire durata e costo della attività?• Tempo/persona
– Unità di misura del tempo necessario a un progetto– Come stimare il tempo/persona?
Ingegneria del Ingegneria del softwaresoftware Fattori di influenzaFattori di influenza
• Dimensione del progetto• Esperienza del dominio• Tecnologie adottate• Ambiente di sviluppo• Qualità richiesta dei processi
Ingegneria del Ingegneria del softwaresoftware Tecniche di stimaTecniche di stima
• Legge di Parkinson• 1951, C. Northcote Parkinson. Parkinson’s law: the pursuit
progress: “work expands to fill the time available”.• Prezzo per vincere• Giudizio dell’esperto• Stima per analogia• Modello algoritmico dei costi
Ingegneria del Ingegneria del softwaresoftware Constructive Cost ModelConstructive Cost Model
• Stima le risorse necessarie in mesi/persona– Software engineering economics, b. Boehm, Prentice Hall,
1981• M/P=CxDSxM
– C fattore di complessità del progetto– D misura della dimensione stimata del prodotto– S esponente di complesità– M fattore derivante dalla valutazione di altri attributi
• D=KDSI– Kilo Delivered Source Instructions
Ingegneria del Ingegneria del softwaresoftware CoCoMO in versione baseCoCoMO in versione base
• Bassa complessità del progetto: Simple– È possibile avere una visione globale del prodotto– C=2.4, S=1.04, M=1 [organic]
• Complessità media: Moderate– Il prodotto può essere compreso solo per componenti– C=3.0, S=1.12, M=1 [semi-detatched]– Complessità elevata: Embedded– Il prodotto interagisce con componenti ed ambiente esterne/o– C=3.6, S=1.20 , M=1
Ingegneria del Ingegneria del softwaresoftware Stime CoCoMOStime CoCoMO
200
400
600
800
1000
M/P
20 40 60 80 1000 KSDI
E
M
S
Ingegneria del Ingegneria del softwaresoftware Raffinamenti del modelloRaffinamenti del modello
• Intermediate CoCoMo– Effect adjustment Factors: fattori moltiplicativi
• Attibuti di prodotto: affidabilità, categorie,…• Attibuti tecnologici: piattaforma, strumenti• Attibuti del personale: esperienza competenze
– M/P=FxCxDSxM, con F=Πifi
• Detailed CoCOMO• Decomposizione del progetto• Stima intermediate per singole componenti• Composizione dei risultati
Ingegneria del Ingegneria del softwaresoftware Rischi di progettoRischi di progetto
• Risultati dei progetti software– Costi eccessivi, scadenze non rispettate– Prodotti insoddisfacenti
• Cause
Ingegneria del Ingegneria del softwaresoftware Categorie di prodotti (1994)Categorie di prodotti (1994)
• Progetti di successo – 16.2% dei progetti
• Progetti a rischio – 52.7% costi pari al 189% delle stime iniziali
• Fallimenti – 31.1%
Ingegneria del Ingegneria del softwaresoftware Fattori di successoFattori di successo
• Coinvolgimento del cliente 15.9%• Supporto della direzione esecutiva 13.9%• Definizione chiara dei requisiti 9.6%• Pianificazione corrette 9.6%• Aspettative realistiche 8.2%• Personale competente 7.2%
Ingegneria del Ingegneria del softwaresoftware Fattori di fallimentoFattori di fallimento
• Requisiti incompleti 13.1%• Mancato coinvolgimento del cliente 12.4%• Mancanza di risorse 10.6%• Aspettative non realistiche 9.9%• Mancanza di supporto esecutivo 9.3%• Fluttuazione dei requisiti 8.7%
Ingegneria del Ingegneria del softwaresoftware Categorie di prodotti (2004)Categorie di prodotti (2004)
• Progetti di successo – 34% dei progetti – Grazie ad un miglioramento nelle tecnihce di gestione
• Fallimenti – 15%
Ingegneria del Ingegneria del softwaresoftware Riferimenti Riferimenti
• B. Boehm,”Cost Models for future software life cycle processes: CoCoMoII,” http://sunset.usc.edu
Corso di Laurea Triennale in Ingegneria Corso di Laurea Triennale in Ingegneria InformaticaInformatica
Ingegneria del softwareIngegneria del software
Miglioramento del processoMiglioramento del processo
Ingegneria del Ingegneria del softwaresoftware Contenuti Contenuti
• Norme per la definizione delle attività• Strumenti per la definizione dei processi
Ingegneria del Ingegneria del softwaresoftware
Standard per la definizione del Standard per la definizione del processoprocesso
• IEEE/EIA 12207.0-1996//ISO/IEC12207:1995• IEEE/EIA 12207.1-1996• IEEE/EIA 12207.2-1997
Ingegneria del Ingegneria del softwaresoftware CMMCMM
• Capability maturity model