Un progetto è un insieme ben definito di attività che:
“Un progetto diretto bene qualche volta fallisce, uno diretto male fallisce sicuramente”.
La maggior parte dei progetti software sono troppo impegnativi per essere realizzati da una sola persona: spesso c’è bisogno di competenze diverse.
Es: Sito web dinamico:
I Giocatori in campo:
Democratico Decentralizzato:
Vantaggi:
Svantaggi:
Controllato Decentralizzato:
Controllato Centralizzato:
Project Manager: pianifica, coordina e supervisiona le attività del team;
Technical staff: conduce l’analisi e lo sviluppo (da 2 a 5 persone);
Backup engineer: supporta il project manager ed è responsabile della validazione;
Software librarian: mantiene e controlla la documentazione, i listati del codice, i dati…
1.1 Overview del Progetto: descrizione di massima del progetto e del prodotto.
1.2 Deliverables del Progetto: tutti gli items che saranno consegnati, con data e luogo di consegna.
1.3 Evoluzione del Progetto: piani per cambiamenti ipotizzabili e non.
1.4 Materiale di riferimento: lista dei documenti cui ci si riferisce nel Piano di Progetto.
1.5 Glossario, con definizioni e abbreviazioni.
2.1 Modello del Processo: relazioni tra le varie fasi del processo.
2.2 Struttura Organizzativa: gestione interna, chart dell’organizzazione.
2.3 Interfacce Organizzative: relazioni con altre entità.
2.4 Responsabilità di Progetto: principali funzioni e attività; di che natura sono? Chi ne è il responsabile?
3.1 Obiettivi e priorità.
3.2 Assunzioni, dipendenze, vincoli: fattori esterni.
3.3 Gestione dei rischi: identificazione, valutazione, monitoraggio dei rischi.
3.4 Meccanismi di monitoraggio e di controllo: meccanismi di reporting, format, flussi di informazione, revisioni.
3.5 Pianificazione dello staff: skill necessari (cosa?, quanto?, quando?).
4.1 Metodi, Strumenti e Tecniche: Sistemi di calcolo, metodi di sviluppo, struttura del team, ecc. Standards, linee guida, politiche.
4.2 Documentazione del Software: piano di documentazione, che deve includere milestones, e revisioni.
4.3 Funzionalità di supporto al progetto: pianificazione della qualità; pianificazione della gestione delle configurazioni.
5.1 Work Packages (Work breakdown structure): il progetto è scomposto in tasks; definizione di ciascun task.
5.2 Dipendenze: relazioni di precedenza tra funzioni, attività e task.
5.3 Risorse necessarie: 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: associa ad ogni funzione, attività o task il costo relativo.
5.5 Pianificazione: deadlines e milestones.
Unità di lavoro “atomiche”.
Hanno durata stimabile, necessitano di certe risorse, producono risultati tangibili (documentazione, codice, …)
Specifica di un task:
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 (Il Mitico Mese/Uomo).
Alcuni compiti possono essere condivisi, altri nooverhead necessario per il coordinamento e la comunicazione.
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):
Program Evaluation and Review Technique
Un grafico PERT è un grafo in cui i nodi sono istanti di un processo (inizi di fasi), e gli archi rappresentano fasi, stabilendo durata e relazioni di dipendenza temporale tra fasi.
Ogni PERT ha un nodo iniziale “inizio del processo” ed un nodo finale “fine del processo”.
Gli altri nodi ed archi formano una rete di attività che procedono in parallelo o in sequenza.
Un diagramma di Gantt permette di rappresentare graficamente un calendario di attività:
Il diagramma è costruito da:
Barre orizzontali di lunghezza variabile rappresentano la durata di ogni singola attività.
Le barre possono sovrapporsi durante il medesimo arco temporale ad indicare la possibilità dello svolgimento in parallelo di alcune delle attività.
Man mano che il progetto progredisce, delle barre secondarie, delle frecce o delle barre colorate possono essere aggiunte al diagramma, per indicare le attività sottostanti completate o una porzione completata di queste.
Una linea verticale è utilizzata per indicare la data di riferimento.
Disegnare il diagramma delle attività e il diagramma di Gannt relativo alle attività mostrate di seguito, con le relative durate e dipendenze.
Supponendo che si verifichi un problema inaspettato che prolunghi il task T5 da 10 a 40 giorni, rivedere il diagramma delle attività evidenziando il nuovo cammino critico. Disegnare il nuovo diagramma di Gantt per mostrare come il progetto potrebbe essere riorganizzato.
1. Introduzione all'Ingegneria del Software – La qualità del Software
2. Il Ciclo di vita del Software: i modelli di Processo
3. Concetti e strumenti di base per il Project Management
5. Introduzione ad UML: Gli Use Case Diagrams
6. Il documento dei Requisiti Software
7. UML: I Sequence Diagrams ed i Class Diagrams