Progetto software
2007/2008
Lezione I
Dott.ssa 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
flessibili
• 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 software sviluppato
• Coesione del gruppo
Non sono previsti progetti individuali
Modalità di esame
• L’esame consiste nello sviluppo e consegna del progetto
• Il vostro lavoro verrà monitorato e valutato per fasi
• Al momento della consegna del progetto finale verrà
fatta una valutazione complessiva del progetto e verrà
verificata la competenza di ciascun membro del team
rispetto all’intero progetto e rispetto al ruolo specifico
ricoperto
Contenuti del corso
• Breve ripasso sui processi di sviluppo del software
• Principi di gestione dei progetti
– Metriche di processo
– Stime per il progetto software e pianificazione
– Gestione dei rischi
• I metodi formali come strumento di specifica
– Formalismi algebrici: ASMs
– Formalismi visuali: Reti di Petri
– OCL
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
Sviluppo di:
• Un compilatore, un editor, una componente di sistema o
un sistema operativo
• Un applicativo web
• L’implementazione di un algoritmo di ordinamento
• Il controllo dei comandi di una lavatrice
• …
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 se ne occupa?
• 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
Perché è importante?
Introduce stabilità, controllo e organizzazione
Quali passi sono necessari?
Il processo che si adotta dipende dal software che si sta realizzando
Processo di sviluppo software
Cosa viene prodotto?
I programmi, i documenti e i dati sviluppati come
conseguenza delle attività di ingegneria del software
definite dal processo
Come verificare che il procedimento sia corretto?
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 il quale si
svolgono le attività necessarie alla
realizzazione di software di alta qualità