SlideShare a Scribd company logo
1 of 95
Il processo di produzione del
Software
… dall’idea al prodotto finito …
parte 1
Il processo di produzione del software 1
Ingegneria del software
Il processo da applicare al prodotto (software)
per portare a termine con successo, in un tempo
ragionevole, con un costo contenuto e con
elevati standard di qualità il progetto
Il processo di produzione del software 2
Ingegneria del software
Una definizione esatta è data dall’IEEE:
1. Applicazione di una strategia sistematica,
disciplinata e misurabile allo sviluppo,
esercizio e manutenzione del software.
2. Studio delle strategie di cui al punto 1.
Il processo di produzione del software 3
Ingegneria del software
Dunque dobbiamo definire:
• PRODOTTO
• PROCESSO
• PROGETTO
Il processo di produzione del software 4
PRODOTTO
E’ il software che vogliamo realizzare inteso
come il "risultato" di un certo processo.
Viene spesso paragonato alla produzione di un
qualunque altro oggetto.
Similitudine con molte pecche !
Il processo di produzione del software 5
PRODOTTO
1. Il software si sviluppa e si struttura, non si
fabbrica: i metodi per fabbricare oggetti reali
sono nettamente diversi dai metodi per
sviluppare un software.
2. Il software non si consuma: l'hardware tende
a danneggiarsi nel corso del tempo, il
software no.
Il processo di produzione del software 6
PRODOTTO
Il software è un prodotto complesso che può
facilmente essere affetto da errori.
La reiterata sistemazione degli errori si
ripercuote su altre parti aggiungendo nuovi
difetti.
Si parla dunque di curva di deterioramento del
software.
Il processo di produzione del software 7
PRODOTTO
Curva di deterioramento:
Il processo di produzione del software 8
Dove la idealized curve e la curva ideale che accadrebbe se le correzioni e le nuove aggiunte non
inserissero nuovi difetti.
L'actual curve mostra la curva reale.
I MITI del management
Mito:
abbiamo tanti documenti che descrivono
standard e procedure per lo sviluppo del
software.
Non è forse sufficiente ?
Il processo di produzione del software 9
I MITI del management
Realtà:
queste procedure e standard sono conosciute e
soprattutto utilizzate ?
sono inspirate e metodi moderni di sviluppo del
software ?
NESSUNA !
Il processo di produzione del software 10
I MITI del management
Mito:
abbiamo i più moderni sistemi si sviluppo ed i
computer più moderni ed aggiornati
Il processo di produzione del software 11
I MITI del management
Realtà:
non è vero che al computer più performante ed
aggiornato corrisponde un prodotto software
migliore.
sarebbe meglio investire nella formazione per la
scrittura del software e mantenere computer più
lenti che costringano all’ottimizzazione.
Il processo di produzione del software 12
I MITI del management
Mito:
se siamo in ritardo possiamo inserire nel
processo altri programmatori per recuperare.
Il processo di produzione del software 13
I MITI del management
Realtà:
sviluppare non è come costruire un oggetto !
Immettere altre risorse potrebbe avere l’effetto
contrario, rallentare e non accelerare lo
sviluppo.
capire cosa è stato fatto e come
Il processo di produzione del software 14
I MITI del management
Mito:
se decido di fare sviluppare il software da terze
parti, posso stare tranquillo, tutto il lavoro verrà
svolto esternamente
Il processo di produzione del software 15
I MITI del management
Realtà:
le "terze parti" vanno gestite, se non si sa gestire
i processi interni è assai difficile gestire un
processo svolto all’esterno.
Il processo di produzione del software 16
I MITI della clientela
Mito:
definire lo scopo dell’applicazione è sufficiente
per cominciare a scrivere il software; i dettagli si
possono definire in seguito.
Il processo di produzione del software 17
I MITI della clientela
Realtà:
una insufficiente descrizione preliminare è la
causa principale del fallimento del progetto.
Non riesce a definire i confini del progetto !
Il processo di produzione del software 18
I MITI della clientela
Mito:
i requisiti di progetto mutano di continuo, ma il
software è flessibile per cui è facile gestirli.
Il processo di produzione del software 19
I MITI della clientela
Realtà:
il software non è flessibile, né tanto meno lo è
svilupparlo. E’ vero, i requisiti cambiano ma
apportare modifiche nelle fasi iniziali del
progetto è più agevole e meno costoso.
Il processo di produzione del software 20
I MITI del programmatore
Mito:
fino a quando il programma non è in condizioni
di essere eseguito, non c’è modo di valutarne la
qualità.
Il processo di produzione del software 21
I MITI del programmatore
Realtà:
uno dei metodi più efficaci di esame della
qualità del software, la revisione tecnica
formale, si applica già dall'inizio di un progetto.
Il processo di produzione del software 22
I MITI del programmatore
Mito:
il solo prodotto di un progetto concluso e il
programma funzionante.
Il processo di produzione del software 23
I MITI del programmatore
Realtà:
un programma funzionante e solo una parte del
software. La documentazione e il fondamento di
uno sviluppo riuscito e, cosa ancora più
importante, e la guida dell'attività di
manutenzione.
Il processo di produzione del software 24
I MITI del programmatore
Mito:
l'ingegneria del software ci farà scrivere
un'inutile e voluminosa documentazione che
inevitabilmente rallenterà le cose.
Il processo di produzione del software 25
I MITI del programmatore
Realtà:
l'ingegneria del software punta sulla qualità, la
migliore quantità porta ad un minor lavoro.
Quando si pensa che non vi e tempo per
svolgere un'ingegnerizzazione del software, ci si
provi a chiedere:
“Avremo tempo di rifarlo da zero?”
Il processo di produzione del software 26
PROCESSO
E’ il quadro di riferimento entro il quale si
svolgono le attività necessarie alla realizzazione
del software di alta qualità.
Abbiamo definito l'ingegneria del software come
processo; in realtà essa include i metodi, le
tecniche e gli strumenti.
Il processo di produzione del software 27
PROCESSO
il processo visto come l’ambito in cui ci si muove
suddividendolo in aree chiave, il contesto in cui
si applicano i metodi tecnici, si creano i prodotti
intermedi (documenti, strutture dati, ecc.), si
stabiliscono i punti di controllo (milestone), si
garantisce la qualità e si governano le
modifiche.
Il processo di produzione del software 28
PROCESSO
I metodi costituiscono il sapere tecnico relativo
alla costruzione del software ed investono:
• l’analisi dei requisiti
• la progettazione
• la scrittura dei programmi
• il collaudo ed il supporto
Il processo di produzione del software 29
Domande a cui rispondere
Il processo per lo sviluppo del software vuole
dare una risposta alle seguenti domande:
• Qual è il problema da risolvere?
• Quali caratteristiche delle entità vengono
utilizzate per risolvere il problema?
• In che modo l'oggetto (e quindi la soluzione)
sarà realizzato?
Il processo di produzione del software 30
Domande a cui rispondere
• In che modo l'oggetto sarà costruito?
• In che modo si condurrà la ricerca degli errori
compiuti della progettazione e costruzione
dell'oggetto?
• Quale supporto si dara all'oggetto a lungo
termine, quando i suoi utenti richiederanno
correzioni, adattamenti e miglioramenti?
Il processo di produzione del software 31
Fasi generali (STEP)
Indipendente dall'area applicativa, dalle
dimensioni del progetto e dalla sua complessità,
le operazioni coinvolte nella realizzazione del
software si articolano in tre fasi generali,
ciascuna delle quali è investita da una o più delle
domande indicate in precedenza.
Il processo di produzione del software 32
Fasi generali (STEP)
Indipendente dall'area applicativa, dalle
dimensioni del progetto e dalla sua complessità,
le operazioni coinvolte nella realizzazione del
software si articolano in TRE FASI generali,
ciascuna delle quali è investita da una o più delle
domande indicate in precedenza.
Il processo di produzione del software 33
Fasi generali (STEP)
• Fase di definizione
• Fase di sviluppo
• Fase di supporto
Il processo di produzione del software 34
Fase di definizione
si occupa del che cosa.
In questa fase si determinano quali siano le
informazioni da elaborare, quali siano le funzioni e
prestazioni attese, quale debba essere il
comportamento del sistema, quali interfacce si
debbano definire, quali siano i vincoli progettuali ed
i criteri di validazione in base ai quali valutare la
riuscita del risultato. Si devono determinare i
requisiti fondamentali del sistema e del software.
Il processo di produzione del software 35
Fase di sviluppo
si occupa del come.
In questa fase si definisce come strutturare i
dati, come implementare le funzioni entro una
data architettura software, come implementare i
dettagli procedurali, come strutturare le
interfacce, come tradurre un progetto
complessivo in un linguaggio di programmazione
e come svolgere i collaudi.
Il processo di produzione del software 36
Fase di supporto
si occupa delle modifiche legate alla correzione
degli errori, agli adattamenti.
In questa fase che si sono resi necessari per
l'evoluzione dell'ambiente del software e delle
modifiche tese a soddisfare nuove esigenze della
clientela. In questa fase si applicano
nuovamente le attività di definizione e sviluppo,
ma nel contesto del software esistente.
Il processo di produzione del software 37
Fase di supporto
Classificazione dei tipi di modifiche:
• Correzioni
• Adattamenti
• Migliorie
• Prevenzione
Il processo di produzione del software 38
Fase di supporto
Correzioni
Anche in presenza delle migliori tecniche di
controllo della qualità, e probabile che gli utenti
scoprano difetti nel prodotto software. La
Manutenzione correttiva modifica il software
allo scopo di eliminare i difetti.
Il processo di produzione del software 39
Fase di supporto
Adattamenti
Con il passare del tempo, e probabile che si evolva
l'ambiente (CPU, sistema operativo, regole
aziendali, caratteristiche esterne del prodotto, ecc.)
per cui il software e stato sviluppato. La
Manutenzione adattiva consiste in modifiche al
software tese ad adattarlo al nuovo ambiente
operativo.
Il processo di produzione del software 40
Fase di supporto
Migliorie
Con l'utilizzazione del software, emerge l'utilità
di nuove funzioni. La Manutenzione perfettiva
estende il software oltre i requisiti funzionali
originari.
Il processo di produzione del software 41
Fase di supporto
Prevenzione
Il software si deteriora a causa delle modifiche;
perciò allo scopo di garantire che il software svolga
il proprio compito rispetto ai suoi utenti, si rende
necessaria la Manutenzione preventiva, detta
anche software reengineering. In sostanza, la
manutenzione preventiva consiste in modifiche che
rendano più semplici le correzioni, gli adattamenti e
le migliorie.
Il processo di produzione del software 42
Attività ausiliarie
• Controllo e guida del progetto
• Revisioni tecniche formali
• Garanzia di qualità del software
• Gestione delle configurazioni software
• Preparazione e produzione di documenti
• Gestione del riutilizzo
• Misurazioni
• Gestione dei rischi
Il processo di produzione del software 43
Modelli di processo
Lo sviluppo del software possiamo vederlo come
diviso in quattro fasi:
• Status quo
• Definizione del problema
• Sviluppo tecnico
• Integrazione della soluzione
Il processo di produzione del software 44
Modelli di processo
Lo status quo rappresenta lo stato delle cose
presente, la definizione del problema individua
lo specifico problema da risolvere, lo sviluppo
tecnico lo risolve, l'integrazione della soluzione
consegna i risultati.
Visione semplicistica del processo !
Il processo di produzione del software 45
Modelli di processo
Motivazioni:
✔ Ogni fase e in realtà una macro fase, che
può essere a sua volta divisa nelle stesse fasi,
che a loro volta possono essere divise, ecc.
✔ Le fasi non sono cosi distinte, ma e difficile
separarle: infatti ogni fase ha più di un punto
in comune con tutte le altre fasi.
Il processo di produzione del software 46
Modello sequenziale lineare
Il processo di produzione del software 47
Modelli sequenziale lineare
In questo modello la fase di analisi
precede quella di design che precede
quella di scrittura del codice, che precede
il collaudo.
Una fase non può cominciare prima che
sia finita l'altra, una volta conclusa una
fase non ci si mette più mano.
Il processo di produzione del software 48
Modelli sequenziale lineare
I problemi:
• i progetti reali non seguono un flusso
sequenziale
• difficoltà di formulare i requisiti
• gli sviluppatori attendono inutilmente
Il processo di produzione del software 49
Modello del prototyping
Il processo di produzione del software 50
Modelli del prototyping
Il modello è ciclico: si parte dall’ascoltare
l’utente, si prosegue costruendo un
prototipo, lo si fa testare al cliente, lo si
riascolta, si modifica il prototipo, lo si fa
ritestare e cosi via fin quando il software
non e pronto.
Il processo di produzione del software 51
Modelli del prototyping
I problemi:
• il fenomeno del throw-away: si ha spesso reticenza a
gettare tutto il lavoro fatto
• aspettative irrealistiche da parte del cliente (vedendo un
prototipo, potrebbe pensare che per il software completo
manchi poco e che possa essere consegnato in tempi
troppo stretti)
• mettendo insieme i due problemi, otteniamo spesso un
prodotto il cui problema e nella manutenibilità: alla prima
modifica fatta si verificano tutta una serie di side-effect che
non fanno più funzionare il programma nel modo previsto
Il processo di produzione del software 52
Modello RAD
RAD (Rapid Application Development)
e un modello che prevede di
suddividere il lavoro in team paralleli,
ogni team segue un processo
sequenziale lineare su un periodo
breve.
Il processo di produzione del software 53
Modello RAD
Il processo sequenziale lineare e diviso nei
seguenti passi:
• Business modeling
• Data modeling
• Process modeling
• Application generation
• Testing and turnover
Il processo di produzione del software 54
Modello RAD
I problemi:
• Per grandi progetti occorrono risorse sufficienti
per creare le squadre
• Forte impegno degli sviluppatori e dei clienti
• Presuppone una soluzione modulare
• Riusabilità può implicare perdita di prestazioni
Il processo di produzione del software 55
Modello incrementale
Il modello incrementale riprende il
modello sequenziale lineare e vi aggiunge
la possibilità di inserire incrementi. In
altre parole il prodotto non viene dato
immediatamente completo di ogni
funzionalità, ma, ad ogni ciclo, vengono
sviluppate singole funzionalità il cui
insieme corrisponderà al prodotto finale.
Il processo di produzione del software 56
Modello incrementale
Il processo di produzione del software 57
Modello incrementale
I problemi:
ha gli stessi difetti del modello
sequenziale lineare, anche se in
maniera più mitigata, grazie alla
realizzazione degli incrementi.
Il processo di produzione del software 58
Modello a spirale
Si percorre una spirale dall’inizio alla fine del progetto.
Ogni spira è divisa in settori:
• Comunicazione col cliente
• Pianificazione
• Analisi del Rischio
• Progettazione,
• Costruzione e Rilascio
• Valutazione da parte del cliente.
Il processo di produzione del software 59
Modello a spirale
Il processo di produzione del software 60
Modello a spirale
I problemi:
difficile visualizzazione della taglia e
della temporizzazione di ogni spira.
Il processo di produzione del software 61
Modello ad assemblaggio di
componenti
Questo e una modifica al modello a
spirale, introducendovi la riusabilità
object oriented.
Il processo di produzione del software 62
Modello ad assemblaggio di
componenti
Il processo di produzione del software 63
Modello ad assemblaggio di
componenti
I problemi:
• Riusabilità richiede pianificazione
attenta
• Molti programmi esistenti non sono
riusabili
• Più adatto per domini applicativi
particolari
Il processo di produzione del software 64
Modello dello sviluppo
concorrente
Con questo modello si usano dei
diagrammi di stato per ogni attività,
ogni evento fa scattare una transizione
di stato.
Il processo di produzione del software 65
Modello dello sviluppo
concorrente
Il processo di produzione del software 66
Modello dello sviluppo
concorrente
• Specifiche Tecniche formali basata sulla
logica matematica
• Tecniche “di quarta generazione” – usando
cioè linguaggi di definizione ad alto livello
MDA (Model Driven Architetture). L’idea e
quella di sviluppare software
indipendentemente dalla piattaforma (PIM
– Platform Indipendent Model)
Il processo di produzione del software 67
Modello dello sviluppo
concorrente
• Agile Software Programming, basato sul
concetto che grandi persone fanno grandi
programmi, per ogni pezzo di programma vi
sono due responsabili (uno propositore di
soluzioni, uno critico di soluzioni, in
alternanza) e che le soluzioni sono
condivise da tutti i programmatori
• Unified Process
Il processo di produzione del software 68
PROGETTO
Il progetto possiamo definirlo come
quell'attività che, seguendo le linee
guida date dal processo, porta alla
realizzazione del prodotto.
Il processo di produzione del software 69
PROGETTO
I dieci punti essenziali per un progetto a rischio:
1. Gli sviluppatori non comprendono le esigenze dei loro
clienti
2. Il campo d'azione del prodotto e mal definito
3. Le modifiche vengono gestite in modo non appropriato
4. Cambia la tecnologia scelta
5. Le operazioni devono cambiare o sono mal definite
Il processo di produzione del software 70
PROGETTO
I dieci punti essenziali per un progetto a rischio:
6. Le date di consegna non sono realistiche
7. Gli utenti sono ostili
8. Perdita delle risorse finanziarie
9. Il team del progetto non contiene persone con le
conoscenze appropriate
10. Il manager ed i professionisti non mettono a frutto
le lezioni apprese
Il processo di produzione del software 71
PROGETTO
Suggerimenti:
1. Partire bene
2. Mantenere alta l’attenzione
3. Verificare i progressi
4. Prendere decisioni intelligenti
5. Condurre una analisi a consuntivo
Il processo di produzione del software 72
Partire bene
Comprendere ed analizzare bene il problema
da risolvere tenendo in debita considerazione
le realistiche aspettative degli attori coinvolti
nel progetto.
Realizzare il team di lavoro corretto
assegnando loro autonomia, autorità e le
tecnologie necessarie.
Il processo di produzione del software 73
Mantenere alta l’attenzione
Il Team deve concentrarsi sulla qualità di ogni
operazione svolta.
Il Team manager deve supportare il lavoro del
Team e deve fare il possibile per coprirne le
esigenze per evitare distrazioni.
Il processo di produzione del software 74
Verificare i progressi
Per un progetto software, i progressi
devono essere controllati a mano a mano
che viene creato il prodotto (ad esempio le
specifiche, il codice sorgente, i casi di
collaudo) e poi approvati (utilizzando
revisioni tecniche formali) nell'ambito di
un'attività di verifica della qualità.
Il processo di produzione del software 75
Prendere decisioni
intelligenti
La parola d’ordine è SEMPLICITA’.
Quando è possibile si deve decidere di
utilizzare componenti software esistenti e
dunque già testati. Questo approccio fa
risparmiare tempo che potrà essere utilizzato
per risolvere le situazioni centrali più
complesse.
Il processo di produzione del software 76
Condurre una analisi a
consuntivo
Valutare i tempi pianificati ed ottenuti,
raccogliere ed analizzare le valutazioni
metriche del progetto software, chiedere
le opinioni dei membri del team e dei
clienti e trascrivere queste informazioni.
Il processo di produzione del software 77
Focus sulle persone
Le persone sono spesso la chiave di un
progetto software ed il più delle volte date
un po' troppo per scontate.
Le persone sono la chiave di successo del
progetto software.
Il processo di produzione del software 78
Focus sulle persone
Nel processo software ed in ogni progetto di
sviluppo, intervengono varie persone che si
possono classificare in cinque categorie:
1. Dirigenti
2. Capi progetto
3. Tecnici
4. Clienti
5. Utenti finali
Il processo di produzione del software 79
Il Team
Team coeso:
• I membri della squadra devono fidarsi l'uno dell'altro
• La distribuzione delle specifiche abilita deve essere appropriata per il
problema
• E opportuno escludere dal team gli elementi particolarmente rissosi per
aumentare la coesione all'interno del team
• Un team coeso e un gruppo di persone unite cosi strettamente che l'intero
e più grande della somma delle parti
Più facile a dirsi che a farsi !
Il processo di produzione del software 80
Il Team
Team "tossico":
Х Atmosfera di lavoro frenetica in cui i membri del team perdono energie e
concentrazione sugli obbiettivi del lavoro.
Х Un elevato livello di frustrazione causata da fattori personali, aziendali o
tecnologici che provocano un attrito tra i membri.
Х Procedure frammentate o poco coordinate od un modello di processo mal
definito o mal scelto che impedisce il raggiungimento del risultato
Х Una definizione non chiara dei ruoli, che provoca una mancanza di
responsabilità
Х Una continua e ripetuta serie di fallimenti che provoca pessimismo ed abbassa
il morale
Il processo di produzione del software 81
La struttura del Team
• Democratico decentrato (DD):
Un team di questo tipo non ha un capo permanente. Di volta in
volta vengono nominati coordinatori delle attività per brevi periodi,
che sono poi sostituiti da altri, incaricati di coordinare attività
diverse. Le decisioni sui problemi e sulle strategie sono prese per
consenso. La comunicazione fra i membri e orizzontale. Tale
struttura produce un morale ed un grado di soddisfazione alti, si
adatta meglio a sistemi con bassa modularità a causa dell'alta
quantità di comunicazioni che esige, sviluppa più difetti di altre
strutture, impiega più tempo a portare a termine un progetto, ma
sono i più indicati quando si richiede un alto grado di socievolezza.
Il processo di produzione del software 82
La struttura del Team
• Controllato decentrato (CD):
Un team di questo tipo ha un capo che coordina le attività e
sottocapi responsabili delle sotto-attività. Le decisioni si prendono
collettivamente, ma l'implementazione delle soluzioni e distribuita
fra i sottogruppi a cura del capo. La comunicazione fra sottogruppi
e fra persone e orizzontale. Si ha anche una comunicazione
verticale attraverso la gerarchia. Tale struttura e più adatta in caso
di alta modularità e quindi relativa indipendenza fra le persone
coinvolte, produce meno difetti ed in tempi più brevi rispetto ad
una struttura DD, inoltre e più adatto per progetti di grandi
dimensioni.
Il processo di produzione del software 83
La struttura del Team
• Controllato accentrato (CA):
Le decisioni ad alto livello ed il coordinamento del team sono
affidati ad un capo. La comunicazione fra il capo ed i membri del
team e verticale. Tale struttura e più adatta in caso di alta
modularità e quindi relativa indipendenza fra le persone coinvolte,
produce meno difetti ed in tempi più brevi rispetto ad una struttura
DD, inoltre e più adatto per progetti di grandi dimensioni.
Il processo di produzione del software 84
Il capo progetto
E’ la persona a cui viene demandata la
creazione e la gestione del Team di
lavoro e quindi deve tenere in debito
conto le caratteristiche singole di ogni
individuo per create un Team vincente.
Il processo di produzione del software 85
Il capo progetto:
caratteristiche
• Motivazione: la capacita di incoraggiare (mediante spinte e controspinte) i tecnici
a dare il meglio di se
• Organizzazione: la capacita di plasmare i processi esistenti (o di inventarne di
nuovi) cosi da tradurre un'idea iniziale in un prodotto finale
• Idee ed innovazione: la capacita di spingere le persone a creare ed ad essere
creativi anche entro i limiti stabiliti per un prodotto od un'applicazione particolare
• Problem Solving: un buon capo progetto e in grado di determinare i fattori tecnici
ed organizzativi più importanti, strutturare sistematicamente una soluzione,
motivare opportunamente i tecnici ci che devono svilupparla, applicare a nuove
soluzioni le lezioni apprese nei progetti passati ed essere abbastanza flessibile da
saper mutare direzione se i primi tentativi si rivelano infruttuosi
Il processo di produzione del software 86
Il capo progetto:
caratteristiche
• Identità manageriale: un buon capo progetto deve assumersi la responsabilità del
progetto. Deve essere capace di tenere saldamente le redini quando e necessario
e di lasciare che i tecnici più preparati seguano il proprio istinto
• Incentivazione: per accrescere la produttività di un team, il capo progetto deve
ricompensare lo spirito di iniziativa ed i risultati e deve dimostrare nei fatti di
tollerare che si prendano rischi ragionevoli
• Influenza e spirito di gruppo: un buon capo progetto deve “leggere” nelle
persone; deve cogliere i segnali, verbali e no, e reagire alle esigenze che quei
segnali suggeriscono. Deve mantenere il controllo anche in situazioni critiche.
Il processo di produzione del software 87
Il capo progetto:
ed il prodotto da realizzare
Egli deve definire stime quantitative ed un piano organizzativo,
ma non dispone di dati certi.
Un'analisi approfondita dei requisiti del software fornirebbe i
dati necessari per le stime, ma spesso una tale analisi richiede
settimane o mesi.
Peggio ancora, i requisiti sono a volte fluidi e soggetti a
cambiamenti nel corso del progetto.
Definizione della portata e dei confini del progetto.
Il processo di produzione del software 88
Il capo progetto:
ed il prodotto da realizzare
• Contesto: in che modo il software in costruzione si
inserirà in un sistema, prodotto o contesto aziendale
esistente quali vincoli impone il contesto?
• Obbiettivi relativi ai dati: Quali dati visibili all'utente
deve produrre il software? Quali dati formano il suo
input?
• Funzionalità e prestazioni: Quali funzioni svolge il
software per trasformare i dati di input in quelli di
output? Si devono considerare aspetti specifici legati
alle prestazioni?
Il processo di produzione del software 89
Il capo progetto:
ed il prodotto da realizzare
L'enunciato della portata deve precisare dei limiti. In
altre parole devono essere indicati esplicitamente i dati
quantitativi (ad esempio numero di utenti simultanei,
dimensioni di una mailing list, massimo tempo di
risposta accettabile); devono essere indicati i vincoli e
le limitazioni (ad esempio limiti di memoria imposti dai
costi); devono essere descritti i fattori facilitanti (ad
esempio il fatto che gli algoritmi necessari siano ben
noti e disponibili).
Dati completi  TROPPO TEMPO !
Il processo di produzione del software 90
Il capo progetto:
ed il prodotto da realizzare
Soluzione: Scomposizione del problema.
• Analisi delle funzioni più importanti
• Definizione dei limiti principali
• Definizione della struttura dati principale
Il processo di produzione del software 91
Il capo progetto:
e la pianificazione del progetto
• Scomposizione del progetto/prodotto da
realizzare in sottoprodotti
• Definizione delle varie fasi per i singoli
sottoprodotti ed assegnazione di tempi e
risorse
• Pianificazione dei punti di controllo e verifica
Il processo di produzione del software 92
Il capo progetto:
e la verifica profilatura del progetto
Il principio WWWWHH:
Questo principio prende il nome dalle
iniziali delle 6 domande a cui un capo
progetto ed il suo Team devono saper
rispondere per vedere se il progetto stilato
e ben delineato.
Il processo di produzione del software 93
Il principio WWWHH
• Perché (Who) si sviluppa il progetto? La risposta a questa
domanda consente a tutte le parti di stabilire la validita dei
motivi pratici per cui il software deve funzionare. In altre parole,
lo scopo giustifica l'impegno di persone, tempo e denaro?
• Cosa (What) verrà eseguito ed entro quando? La risposta a
queste domande aiuta il team a stabilire tempi del progetto
identificando le operazioni principali del progetto ed i punti
fermi richiesti dal cliente.
• Chi (Who) è il responsabile di una funzione? All'inizio si e detto
che il ruolo e le responsabilità di ciascun membro del team deve
essere ben definito. La risposta a questa domanda aiuta ad
ottenere ciò.
Il processo di produzione del software 94
Il principio WWWHH
• Dove (Where) sono le responsabilità organizzative? Non
tutti i ruoli e le responsabilità risiedono nel team software.
Anche il cliente, gli utenti ed i contatti interni del cliente
hanno delle responsabilità.
• In quale modo (How) il lavoro verrà eseguito sia
tecnicamente che gestionalmente? Una volta che e stato
definito il campo d'azione del prodotto, occorre definire
una strategia gestionale tecnica del progetto.
• In quale quantità (How much) è richiesta ogni singola
risorsa? La risposta a questa domanda deriva dalle stime di
sviluppo sulla base delle risposte alle precedenti domande.
Il processo di produzione del software 95

More Related Content

What's hot

Project management professional - concetti fondamentali secondo il PMB
Project management professional - concetti fondamentali secondo il PMBProject management professional - concetti fondamentali secondo il PMB
Project management professional - concetti fondamentali secondo il PMB
Mario Gentili
 
Slide Project Software Engineer
Slide Project Software EngineerSlide Project Software Engineer
Slide Project Software Engineer
guestf4963
 
Our Model : 123
Our Model : 123Our Model : 123
Our Model : 123
enricogiua
 

What's hot (19)

Case History Automazione E Strumentazione Aprile 2009
Case History Automazione E Strumentazione Aprile 2009Case History Automazione E Strumentazione Aprile 2009
Case History Automazione E Strumentazione Aprile 2009
 
Il Piano di Project Management in 20 mosse
Il Piano di Project Management in 20 mosseIl Piano di Project Management in 20 mosse
Il Piano di Project Management in 20 mosse
 
Pmp knowledge areas by zuri
Pmp knowledge areas by zuriPmp knowledge areas by zuri
Pmp knowledge areas by zuri
 
Integrazione di progetto
Integrazione di progettoIntegrazione di progetto
Integrazione di progetto
 
PMP - Generalità, Project Life Cicle e Organizzazioni, Processi e Aree di con...
PMP - Generalità, Project Life Cicle e Organizzazioni, Processi e Aree di con...PMP - Generalità, Project Life Cicle e Organizzazioni, Processi e Aree di con...
PMP - Generalità, Project Life Cicle e Organizzazioni, Processi e Aree di con...
 
Project management professional - concetti fondamentali secondo il PMB
Project management professional - concetti fondamentali secondo il PMBProject management professional - concetti fondamentali secondo il PMB
Project management professional - concetti fondamentali secondo il PMB
 
Pmp cost management
Pmp cost managementPmp cost management
Pmp cost management
 
PERCHE' E COME SI VALUTA LA QUALITA' DEL SOFTWARE19 06_2015
PERCHE' E COME SI VALUTA LA QUALITA' DEL SOFTWARE19 06_2015PERCHE' E COME SI VALUTA LA QUALITA' DEL SOFTWARE19 06_2015
PERCHE' E COME SI VALUTA LA QUALITA' DEL SOFTWARE19 06_2015
 
Configuration management
Configuration management Configuration management
Configuration management
 
Consulenza gestione progetti
Consulenza gestione progettiConsulenza gestione progetti
Consulenza gestione progetti
 
Iloveyou
IloveyouIloveyou
Iloveyou
 
Slide Project Software Engineer
Slide Project Software EngineerSlide Project Software Engineer
Slide Project Software Engineer
 
Configuration management
Configuration managementConfiguration management
Configuration management
 
Business process reengineering
Business process reengineering Business process reengineering
Business process reengineering
 
Intervento 10' KM Forum - Jekpot - 25 november 2005 - Siena
Intervento 10' KM Forum  - Jekpot - 25 november 2005 - SienaIntervento 10' KM Forum  - Jekpot - 25 november 2005 - Siena
Intervento 10' KM Forum - Jekpot - 25 november 2005 - Siena
 
Project Management Corso Base Saggio
Project Management Corso Base SaggioProject Management Corso Base Saggio
Project Management Corso Base Saggio
 
Our Model : 123
Our Model : 123Our Model : 123
Our Model : 123
 
Iso 9001 2000 Sezione VII
Iso 9001 2000 Sezione VIIIso 9001 2000 Sezione VII
Iso 9001 2000 Sezione VII
 
Quinn - Miglioramento - ABlean - 2011
Quinn - Miglioramento - ABlean - 2011Quinn - Miglioramento - ABlean - 2011
Quinn - Miglioramento - ABlean - 2011
 

Viewers also liked

Dispensa di analisi dei dati
Dispensa di analisi dei datiDispensa di analisi dei dati
Dispensa di analisi dei dati
Stefano Bussolon
 

Viewers also liked (6)

Produzione software - Le metriche
Produzione software - Le metricheProduzione software - Le metriche
Produzione software - Le metriche
 
Emily M Term 3
Emily M Term 3Emily M Term 3
Emily M Term 3
 
Software ...e tutto ciò che comporta
Software ...e tutto ciò che comportaSoftware ...e tutto ciò che comporta
Software ...e tutto ciò che comporta
 
Dispensa di analisi dei dati
Dispensa di analisi dei datiDispensa di analisi dei dati
Dispensa di analisi dei dati
 
9 - Norme Tecniche e Risk Management
9 - Norme Tecniche e Risk Management9 - Norme Tecniche e Risk Management
9 - Norme Tecniche e Risk Management
 
Risk management: Un'analisi della gestione dei rischi di un progetto software
Risk management: Un'analisi della gestione dei rischi di un progetto software Risk management: Un'analisi della gestione dei rischi di un progetto software
Risk management: Un'analisi della gestione dei rischi di un progetto software
 

Similar to Produzione software

Un Approccio Sistematico Ed Organizzato Allo Sviluppo Del Software
Un Approccio Sistematico Ed Organizzato Allo Sviluppo Del SoftwareUn Approccio Sistematico Ed Organizzato Allo Sviluppo Del Software
Un Approccio Sistematico Ed Organizzato Allo Sviluppo Del Software
Alessandro Martellone
 
Il programmatore e le sue api
Il programmatore e le sue apiIl programmatore e le sue api
Il programmatore e le sue api
Better Software
 
02_AICQ_QOL_N.1-2009_ModelloSERVQUAL
02_AICQ_QOL_N.1-2009_ModelloSERVQUAL02_AICQ_QOL_N.1-2009_ModelloSERVQUAL
02_AICQ_QOL_N.1-2009_ModelloSERVQUAL
ercolonese
 
Intoduzione Alle Metodologie Agili
Intoduzione Alle Metodologie AgiliIntoduzione Alle Metodologie Agili
Intoduzione Alle Metodologie Agili
Stefano Leli
 

Similar to Produzione software (20)

Corso progettazione
Corso progettazioneCorso progettazione
Corso progettazione
 
Visaggio fd l13_9_18
Visaggio fd l13_9_18Visaggio fd l13_9_18
Visaggio fd l13_9_18
 
Un Approccio Sistematico Ed Organizzato Allo Sviluppo Del Software
Un Approccio Sistematico Ed Organizzato Allo Sviluppo Del SoftwareUn Approccio Sistematico Ed Organizzato Allo Sviluppo Del Software
Un Approccio Sistematico Ed Organizzato Allo Sviluppo Del Software
 
Manuale Agile Stelnet
Manuale Agile StelnetManuale Agile Stelnet
Manuale Agile Stelnet
 
Introduzione all'ingegneria del software
Introduzione all'ingegneria del softwareIntroduzione all'ingegneria del software
Introduzione all'ingegneria del software
 
Costruire una chain of custody del software - una guida per Cto Cio Devops
Costruire una chain of custody del software - una guida per Cto Cio DevopsCostruire una chain of custody del software - una guida per Cto Cio Devops
Costruire una chain of custody del software - una guida per Cto Cio Devops
 
Product Management Nel Settore Business To Consumer
Product Management Nel Settore Business To ConsumerProduct Management Nel Settore Business To Consumer
Product Management Nel Settore Business To Consumer
 
Monitorare i software fa schifo.pdf
Monitorare i software fa schifo.pdfMonitorare i software fa schifo.pdf
Monitorare i software fa schifo.pdf
 
Iso 9001 2000 Sezione VII.3 VII.6
Iso 9001 2000 Sezione VII.3 VII.6Iso 9001 2000 Sezione VII.3 VII.6
Iso 9001 2000 Sezione VII.3 VII.6
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011
 
Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...
Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...
Webinar: “Testing automatico: la scelta vincente per ottenere una riduzione d...
 
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUMLIntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
 
Il programmatore e le sue api
Il programmatore e le sue apiIl programmatore e le sue api
Il programmatore e le sue api
 
AgileDay 2006 - Essere agili nel diventare agili
AgileDay 2006 - Essere agili nel diventare agiliAgileDay 2006 - Essere agili nel diventare agili
AgileDay 2006 - Essere agili nel diventare agili
 
02_AICQ_QOL_N.1-2009_ModelloSERVQUAL
02_AICQ_QOL_N.1-2009_ModelloSERVQUAL02_AICQ_QOL_N.1-2009_ModelloSERVQUAL
02_AICQ_QOL_N.1-2009_ModelloSERVQUAL
 
Intoduzione Alle Metodologie Agili
Intoduzione Alle Metodologie AgiliIntoduzione Alle Metodologie Agili
Intoduzione Alle Metodologie Agili
 
Come rilasciare App di Qualità
Come rilasciare App di QualitàCome rilasciare App di Qualità
Come rilasciare App di Qualità
 
Vision software gestionale
Vision software gestionaleVision software gestionale
Vision software gestionale
 
iVision Software 2.3
iVision Software 2.3iVision Software 2.3
iVision Software 2.3
 
Debito Tecnico Questo Sconosciuto
Debito Tecnico Questo SconosciutoDebito Tecnico Questo Sconosciuto
Debito Tecnico Questo Sconosciuto
 

More from Gemax Consulting (6)

Cobot & Artificial Intelligence
Cobot & Artificial IntelligenceCobot & Artificial Intelligence
Cobot & Artificial Intelligence
 
Industria 4.0 soluzioni efficienti
Industria 4.0 soluzioni efficientiIndustria 4.0 soluzioni efficienti
Industria 4.0 soluzioni efficienti
 
Reti di calcolatori
Reti di calcolatoriReti di calcolatori
Reti di calcolatori
 
Iot e mobile application nell'industria 4.0
Iot e mobile application nell'industria 4.0Iot e mobile application nell'industria 4.0
Iot e mobile application nell'industria 4.0
 
Coding & Gaming
Coding & GamingCoding & Gaming
Coding & Gaming
 
Ergonomia aziendale
Ergonomia aziendaleErgonomia aziendale
Ergonomia aziendale
 

Produzione software

  • 1. Il processo di produzione del Software … dall’idea al prodotto finito … parte 1 Il processo di produzione del software 1
  • 2. Ingegneria del software Il processo da applicare al prodotto (software) per portare a termine con successo, in un tempo ragionevole, con un costo contenuto e con elevati standard di qualità il progetto Il processo di produzione del software 2
  • 3. Ingegneria del software Una definizione esatta è data dall’IEEE: 1. Applicazione di una strategia sistematica, disciplinata e misurabile allo sviluppo, esercizio e manutenzione del software. 2. Studio delle strategie di cui al punto 1. Il processo di produzione del software 3
  • 4. Ingegneria del software Dunque dobbiamo definire: • PRODOTTO • PROCESSO • PROGETTO Il processo di produzione del software 4
  • 5. PRODOTTO E’ il software che vogliamo realizzare inteso come il "risultato" di un certo processo. Viene spesso paragonato alla produzione di un qualunque altro oggetto. Similitudine con molte pecche ! Il processo di produzione del software 5
  • 6. PRODOTTO 1. Il software si sviluppa e si struttura, non si fabbrica: i metodi per fabbricare oggetti reali sono nettamente diversi dai metodi per sviluppare un software. 2. Il software non si consuma: l'hardware tende a danneggiarsi nel corso del tempo, il software no. Il processo di produzione del software 6
  • 7. PRODOTTO Il software è un prodotto complesso che può facilmente essere affetto da errori. La reiterata sistemazione degli errori si ripercuote su altre parti aggiungendo nuovi difetti. Si parla dunque di curva di deterioramento del software. Il processo di produzione del software 7
  • 8. PRODOTTO Curva di deterioramento: Il processo di produzione del software 8 Dove la idealized curve e la curva ideale che accadrebbe se le correzioni e le nuove aggiunte non inserissero nuovi difetti. L'actual curve mostra la curva reale.
  • 9. I MITI del management Mito: abbiamo tanti documenti che descrivono standard e procedure per lo sviluppo del software. Non è forse sufficiente ? Il processo di produzione del software 9
  • 10. I MITI del management Realtà: queste procedure e standard sono conosciute e soprattutto utilizzate ? sono inspirate e metodi moderni di sviluppo del software ? NESSUNA ! Il processo di produzione del software 10
  • 11. I MITI del management Mito: abbiamo i più moderni sistemi si sviluppo ed i computer più moderni ed aggiornati Il processo di produzione del software 11
  • 12. I MITI del management Realtà: non è vero che al computer più performante ed aggiornato corrisponde un prodotto software migliore. sarebbe meglio investire nella formazione per la scrittura del software e mantenere computer più lenti che costringano all’ottimizzazione. Il processo di produzione del software 12
  • 13. I MITI del management Mito: se siamo in ritardo possiamo inserire nel processo altri programmatori per recuperare. Il processo di produzione del software 13
  • 14. I MITI del management Realtà: sviluppare non è come costruire un oggetto ! Immettere altre risorse potrebbe avere l’effetto contrario, rallentare e non accelerare lo sviluppo. capire cosa è stato fatto e come Il processo di produzione del software 14
  • 15. I MITI del management Mito: se decido di fare sviluppare il software da terze parti, posso stare tranquillo, tutto il lavoro verrà svolto esternamente Il processo di produzione del software 15
  • 16. I MITI del management Realtà: le "terze parti" vanno gestite, se non si sa gestire i processi interni è assai difficile gestire un processo svolto all’esterno. Il processo di produzione del software 16
  • 17. I MITI della clientela Mito: definire lo scopo dell’applicazione è sufficiente per cominciare a scrivere il software; i dettagli si possono definire in seguito. Il processo di produzione del software 17
  • 18. I MITI della clientela Realtà: una insufficiente descrizione preliminare è la causa principale del fallimento del progetto. Non riesce a definire i confini del progetto ! Il processo di produzione del software 18
  • 19. I MITI della clientela Mito: i requisiti di progetto mutano di continuo, ma il software è flessibile per cui è facile gestirli. Il processo di produzione del software 19
  • 20. I MITI della clientela Realtà: il software non è flessibile, né tanto meno lo è svilupparlo. E’ vero, i requisiti cambiano ma apportare modifiche nelle fasi iniziali del progetto è più agevole e meno costoso. Il processo di produzione del software 20
  • 21. I MITI del programmatore Mito: fino a quando il programma non è in condizioni di essere eseguito, non c’è modo di valutarne la qualità. Il processo di produzione del software 21
  • 22. I MITI del programmatore Realtà: uno dei metodi più efficaci di esame della qualità del software, la revisione tecnica formale, si applica già dall'inizio di un progetto. Il processo di produzione del software 22
  • 23. I MITI del programmatore Mito: il solo prodotto di un progetto concluso e il programma funzionante. Il processo di produzione del software 23
  • 24. I MITI del programmatore Realtà: un programma funzionante e solo una parte del software. La documentazione e il fondamento di uno sviluppo riuscito e, cosa ancora più importante, e la guida dell'attività di manutenzione. Il processo di produzione del software 24
  • 25. I MITI del programmatore Mito: l'ingegneria del software ci farà scrivere un'inutile e voluminosa documentazione che inevitabilmente rallenterà le cose. Il processo di produzione del software 25
  • 26. I MITI del programmatore Realtà: l'ingegneria del software punta sulla qualità, la migliore quantità porta ad un minor lavoro. Quando si pensa che non vi e tempo per svolgere un'ingegnerizzazione del software, ci si provi a chiedere: “Avremo tempo di rifarlo da zero?” Il processo di produzione del software 26
  • 27. PROCESSO E’ il quadro di riferimento entro il quale si svolgono le attività necessarie alla realizzazione del software di alta qualità. Abbiamo definito l'ingegneria del software come processo; in realtà essa include i metodi, le tecniche e gli strumenti. Il processo di produzione del software 27
  • 28. PROCESSO il processo visto come l’ambito in cui ci si muove suddividendolo in aree chiave, il contesto in cui si applicano i metodi tecnici, si creano i prodotti intermedi (documenti, strutture dati, ecc.), si stabiliscono i punti di controllo (milestone), si garantisce la qualità e si governano le modifiche. Il processo di produzione del software 28
  • 29. PROCESSO I metodi costituiscono il sapere tecnico relativo alla costruzione del software ed investono: • l’analisi dei requisiti • la progettazione • la scrittura dei programmi • il collaudo ed il supporto Il processo di produzione del software 29
  • 30. Domande a cui rispondere Il processo per lo sviluppo del software vuole dare una risposta alle seguenti domande: • Qual è il problema da risolvere? • Quali caratteristiche delle entità vengono utilizzate per risolvere il problema? • In che modo l'oggetto (e quindi la soluzione) sarà realizzato? Il processo di produzione del software 30
  • 31. Domande a cui rispondere • In che modo l'oggetto sarà costruito? • In che modo si condurrà la ricerca degli errori compiuti della progettazione e costruzione dell'oggetto? • Quale supporto si dara all'oggetto a lungo termine, quando i suoi utenti richiederanno correzioni, adattamenti e miglioramenti? Il processo di produzione del software 31
  • 32. Fasi generali (STEP) Indipendente dall'area applicativa, dalle dimensioni del progetto e dalla sua complessità, le operazioni coinvolte nella realizzazione del software si articolano in tre fasi generali, ciascuna delle quali è investita da una o più delle domande indicate in precedenza. Il processo di produzione del software 32
  • 33. Fasi generali (STEP) Indipendente dall'area applicativa, dalle dimensioni del progetto e dalla sua complessità, le operazioni coinvolte nella realizzazione del software si articolano in TRE FASI generali, ciascuna delle quali è investita da una o più delle domande indicate in precedenza. Il processo di produzione del software 33
  • 34. Fasi generali (STEP) • Fase di definizione • Fase di sviluppo • Fase di supporto Il processo di produzione del software 34
  • 35. Fase di definizione si occupa del che cosa. In questa fase si determinano quali siano le informazioni da elaborare, quali siano le funzioni e prestazioni attese, quale debba essere il comportamento del sistema, quali interfacce si debbano definire, quali siano i vincoli progettuali ed i criteri di validazione in base ai quali valutare la riuscita del risultato. Si devono determinare i requisiti fondamentali del sistema e del software. Il processo di produzione del software 35
  • 36. Fase di sviluppo si occupa del come. In questa fase si definisce come strutturare i dati, come implementare le funzioni entro una data architettura software, come implementare i dettagli procedurali, come strutturare le interfacce, come tradurre un progetto complessivo in un linguaggio di programmazione e come svolgere i collaudi. Il processo di produzione del software 36
  • 37. Fase di supporto si occupa delle modifiche legate alla correzione degli errori, agli adattamenti. In questa fase che si sono resi necessari per l'evoluzione dell'ambiente del software e delle modifiche tese a soddisfare nuove esigenze della clientela. In questa fase si applicano nuovamente le attività di definizione e sviluppo, ma nel contesto del software esistente. Il processo di produzione del software 37
  • 38. Fase di supporto Classificazione dei tipi di modifiche: • Correzioni • Adattamenti • Migliorie • Prevenzione Il processo di produzione del software 38
  • 39. Fase di supporto Correzioni Anche in presenza delle migliori tecniche di controllo della qualità, e probabile che gli utenti scoprano difetti nel prodotto software. La Manutenzione correttiva modifica il software allo scopo di eliminare i difetti. Il processo di produzione del software 39
  • 40. Fase di supporto Adattamenti Con il passare del tempo, e probabile che si evolva l'ambiente (CPU, sistema operativo, regole aziendali, caratteristiche esterne del prodotto, ecc.) per cui il software e stato sviluppato. La Manutenzione adattiva consiste in modifiche al software tese ad adattarlo al nuovo ambiente operativo. Il processo di produzione del software 40
  • 41. Fase di supporto Migliorie Con l'utilizzazione del software, emerge l'utilità di nuove funzioni. La Manutenzione perfettiva estende il software oltre i requisiti funzionali originari. Il processo di produzione del software 41
  • 42. Fase di supporto Prevenzione Il software si deteriora a causa delle modifiche; perciò allo scopo di garantire che il software svolga il proprio compito rispetto ai suoi utenti, si rende necessaria la Manutenzione preventiva, detta anche software reengineering. In sostanza, la manutenzione preventiva consiste in modifiche che rendano più semplici le correzioni, gli adattamenti e le migliorie. Il processo di produzione del software 42
  • 43. Attività ausiliarie • Controllo e guida del progetto • Revisioni tecniche formali • Garanzia di qualità del software • Gestione delle configurazioni software • Preparazione e produzione di documenti • Gestione del riutilizzo • Misurazioni • Gestione dei rischi Il processo di produzione del software 43
  • 44. Modelli di processo Lo sviluppo del software possiamo vederlo come diviso in quattro fasi: • Status quo • Definizione del problema • Sviluppo tecnico • Integrazione della soluzione Il processo di produzione del software 44
  • 45. Modelli di processo Lo status quo rappresenta lo stato delle cose presente, la definizione del problema individua lo specifico problema da risolvere, lo sviluppo tecnico lo risolve, l'integrazione della soluzione consegna i risultati. Visione semplicistica del processo ! Il processo di produzione del software 45
  • 46. Modelli di processo Motivazioni: ✔ Ogni fase e in realtà una macro fase, che può essere a sua volta divisa nelle stesse fasi, che a loro volta possono essere divise, ecc. ✔ Le fasi non sono cosi distinte, ma e difficile separarle: infatti ogni fase ha più di un punto in comune con tutte le altre fasi. Il processo di produzione del software 46
  • 47. Modello sequenziale lineare Il processo di produzione del software 47
  • 48. Modelli sequenziale lineare In questo modello la fase di analisi precede quella di design che precede quella di scrittura del codice, che precede il collaudo. Una fase non può cominciare prima che sia finita l'altra, una volta conclusa una fase non ci si mette più mano. Il processo di produzione del software 48
  • 49. Modelli sequenziale lineare I problemi: • i progetti reali non seguono un flusso sequenziale • difficoltà di formulare i requisiti • gli sviluppatori attendono inutilmente Il processo di produzione del software 49
  • 50. Modello del prototyping Il processo di produzione del software 50
  • 51. Modelli del prototyping Il modello è ciclico: si parte dall’ascoltare l’utente, si prosegue costruendo un prototipo, lo si fa testare al cliente, lo si riascolta, si modifica il prototipo, lo si fa ritestare e cosi via fin quando il software non e pronto. Il processo di produzione del software 51
  • 52. Modelli del prototyping I problemi: • il fenomeno del throw-away: si ha spesso reticenza a gettare tutto il lavoro fatto • aspettative irrealistiche da parte del cliente (vedendo un prototipo, potrebbe pensare che per il software completo manchi poco e che possa essere consegnato in tempi troppo stretti) • mettendo insieme i due problemi, otteniamo spesso un prodotto il cui problema e nella manutenibilità: alla prima modifica fatta si verificano tutta una serie di side-effect che non fanno più funzionare il programma nel modo previsto Il processo di produzione del software 52
  • 53. Modello RAD RAD (Rapid Application Development) e un modello che prevede di suddividere il lavoro in team paralleli, ogni team segue un processo sequenziale lineare su un periodo breve. Il processo di produzione del software 53
  • 54. Modello RAD Il processo sequenziale lineare e diviso nei seguenti passi: • Business modeling • Data modeling • Process modeling • Application generation • Testing and turnover Il processo di produzione del software 54
  • 55. Modello RAD I problemi: • Per grandi progetti occorrono risorse sufficienti per creare le squadre • Forte impegno degli sviluppatori e dei clienti • Presuppone una soluzione modulare • Riusabilità può implicare perdita di prestazioni Il processo di produzione del software 55
  • 56. Modello incrementale Il modello incrementale riprende il modello sequenziale lineare e vi aggiunge la possibilità di inserire incrementi. In altre parole il prodotto non viene dato immediatamente completo di ogni funzionalità, ma, ad ogni ciclo, vengono sviluppate singole funzionalità il cui insieme corrisponderà al prodotto finale. Il processo di produzione del software 56
  • 57. Modello incrementale Il processo di produzione del software 57
  • 58. Modello incrementale I problemi: ha gli stessi difetti del modello sequenziale lineare, anche se in maniera più mitigata, grazie alla realizzazione degli incrementi. Il processo di produzione del software 58
  • 59. Modello a spirale Si percorre una spirale dall’inizio alla fine del progetto. Ogni spira è divisa in settori: • Comunicazione col cliente • Pianificazione • Analisi del Rischio • Progettazione, • Costruzione e Rilascio • Valutazione da parte del cliente. Il processo di produzione del software 59
  • 60. Modello a spirale Il processo di produzione del software 60
  • 61. Modello a spirale I problemi: difficile visualizzazione della taglia e della temporizzazione di ogni spira. Il processo di produzione del software 61
  • 62. Modello ad assemblaggio di componenti Questo e una modifica al modello a spirale, introducendovi la riusabilità object oriented. Il processo di produzione del software 62
  • 63. Modello ad assemblaggio di componenti Il processo di produzione del software 63
  • 64. Modello ad assemblaggio di componenti I problemi: • Riusabilità richiede pianificazione attenta • Molti programmi esistenti non sono riusabili • Più adatto per domini applicativi particolari Il processo di produzione del software 64
  • 65. Modello dello sviluppo concorrente Con questo modello si usano dei diagrammi di stato per ogni attività, ogni evento fa scattare una transizione di stato. Il processo di produzione del software 65
  • 66. Modello dello sviluppo concorrente Il processo di produzione del software 66
  • 67. Modello dello sviluppo concorrente • Specifiche Tecniche formali basata sulla logica matematica • Tecniche “di quarta generazione” – usando cioè linguaggi di definizione ad alto livello MDA (Model Driven Architetture). L’idea e quella di sviluppare software indipendentemente dalla piattaforma (PIM – Platform Indipendent Model) Il processo di produzione del software 67
  • 68. Modello dello sviluppo concorrente • Agile Software Programming, basato sul concetto che grandi persone fanno grandi programmi, per ogni pezzo di programma vi sono due responsabili (uno propositore di soluzioni, uno critico di soluzioni, in alternanza) e che le soluzioni sono condivise da tutti i programmatori • Unified Process Il processo di produzione del software 68
  • 69. PROGETTO Il progetto possiamo definirlo come quell'attività che, seguendo le linee guida date dal processo, porta alla realizzazione del prodotto. Il processo di produzione del software 69
  • 70. PROGETTO I dieci punti essenziali per un progetto a rischio: 1. Gli sviluppatori non comprendono le esigenze dei loro clienti 2. Il campo d'azione del prodotto e mal definito 3. Le modifiche vengono gestite in modo non appropriato 4. Cambia la tecnologia scelta 5. Le operazioni devono cambiare o sono mal definite Il processo di produzione del software 70
  • 71. PROGETTO I dieci punti essenziali per un progetto a rischio: 6. Le date di consegna non sono realistiche 7. Gli utenti sono ostili 8. Perdita delle risorse finanziarie 9. Il team del progetto non contiene persone con le conoscenze appropriate 10. Il manager ed i professionisti non mettono a frutto le lezioni apprese Il processo di produzione del software 71
  • 72. PROGETTO Suggerimenti: 1. Partire bene 2. Mantenere alta l’attenzione 3. Verificare i progressi 4. Prendere decisioni intelligenti 5. Condurre una analisi a consuntivo Il processo di produzione del software 72
  • 73. Partire bene Comprendere ed analizzare bene il problema da risolvere tenendo in debita considerazione le realistiche aspettative degli attori coinvolti nel progetto. Realizzare il team di lavoro corretto assegnando loro autonomia, autorità e le tecnologie necessarie. Il processo di produzione del software 73
  • 74. Mantenere alta l’attenzione Il Team deve concentrarsi sulla qualità di ogni operazione svolta. Il Team manager deve supportare il lavoro del Team e deve fare il possibile per coprirne le esigenze per evitare distrazioni. Il processo di produzione del software 74
  • 75. Verificare i progressi Per un progetto software, i progressi devono essere controllati a mano a mano che viene creato il prodotto (ad esempio le specifiche, il codice sorgente, i casi di collaudo) e poi approvati (utilizzando revisioni tecniche formali) nell'ambito di un'attività di verifica della qualità. Il processo di produzione del software 75
  • 76. Prendere decisioni intelligenti La parola d’ordine è SEMPLICITA’. Quando è possibile si deve decidere di utilizzare componenti software esistenti e dunque già testati. Questo approccio fa risparmiare tempo che potrà essere utilizzato per risolvere le situazioni centrali più complesse. Il processo di produzione del software 76
  • 77. Condurre una analisi a consuntivo Valutare i tempi pianificati ed ottenuti, raccogliere ed analizzare le valutazioni metriche del progetto software, chiedere le opinioni dei membri del team e dei clienti e trascrivere queste informazioni. Il processo di produzione del software 77
  • 78. Focus sulle persone Le persone sono spesso la chiave di un progetto software ed il più delle volte date un po' troppo per scontate. Le persone sono la chiave di successo del progetto software. Il processo di produzione del software 78
  • 79. Focus sulle persone Nel processo software ed in ogni progetto di sviluppo, intervengono varie persone che si possono classificare in cinque categorie: 1. Dirigenti 2. Capi progetto 3. Tecnici 4. Clienti 5. Utenti finali Il processo di produzione del software 79
  • 80. Il Team Team coeso: • I membri della squadra devono fidarsi l'uno dell'altro • La distribuzione delle specifiche abilita deve essere appropriata per il problema • E opportuno escludere dal team gli elementi particolarmente rissosi per aumentare la coesione all'interno del team • Un team coeso e un gruppo di persone unite cosi strettamente che l'intero e più grande della somma delle parti Più facile a dirsi che a farsi ! Il processo di produzione del software 80
  • 81. Il Team Team "tossico": Х Atmosfera di lavoro frenetica in cui i membri del team perdono energie e concentrazione sugli obbiettivi del lavoro. Х Un elevato livello di frustrazione causata da fattori personali, aziendali o tecnologici che provocano un attrito tra i membri. Х Procedure frammentate o poco coordinate od un modello di processo mal definito o mal scelto che impedisce il raggiungimento del risultato Х Una definizione non chiara dei ruoli, che provoca una mancanza di responsabilità Х Una continua e ripetuta serie di fallimenti che provoca pessimismo ed abbassa il morale Il processo di produzione del software 81
  • 82. La struttura del Team • Democratico decentrato (DD): Un team di questo tipo non ha un capo permanente. Di volta in volta vengono nominati coordinatori delle attività per brevi periodi, che sono poi sostituiti da altri, incaricati di coordinare attività diverse. Le decisioni sui problemi e sulle strategie sono prese per consenso. La comunicazione fra i membri e orizzontale. Tale struttura produce un morale ed un grado di soddisfazione alti, si adatta meglio a sistemi con bassa modularità a causa dell'alta quantità di comunicazioni che esige, sviluppa più difetti di altre strutture, impiega più tempo a portare a termine un progetto, ma sono i più indicati quando si richiede un alto grado di socievolezza. Il processo di produzione del software 82
  • 83. La struttura del Team • Controllato decentrato (CD): Un team di questo tipo ha un capo che coordina le attività e sottocapi responsabili delle sotto-attività. Le decisioni si prendono collettivamente, ma l'implementazione delle soluzioni e distribuita fra i sottogruppi a cura del capo. La comunicazione fra sottogruppi e fra persone e orizzontale. Si ha anche una comunicazione verticale attraverso la gerarchia. Tale struttura e più adatta in caso di alta modularità e quindi relativa indipendenza fra le persone coinvolte, produce meno difetti ed in tempi più brevi rispetto ad una struttura DD, inoltre e più adatto per progetti di grandi dimensioni. Il processo di produzione del software 83
  • 84. La struttura del Team • Controllato accentrato (CA): Le decisioni ad alto livello ed il coordinamento del team sono affidati ad un capo. La comunicazione fra il capo ed i membri del team e verticale. Tale struttura e più adatta in caso di alta modularità e quindi relativa indipendenza fra le persone coinvolte, produce meno difetti ed in tempi più brevi rispetto ad una struttura DD, inoltre e più adatto per progetti di grandi dimensioni. Il processo di produzione del software 84
  • 85. Il capo progetto E’ la persona a cui viene demandata la creazione e la gestione del Team di lavoro e quindi deve tenere in debito conto le caratteristiche singole di ogni individuo per create un Team vincente. Il processo di produzione del software 85
  • 86. Il capo progetto: caratteristiche • Motivazione: la capacita di incoraggiare (mediante spinte e controspinte) i tecnici a dare il meglio di se • Organizzazione: la capacita di plasmare i processi esistenti (o di inventarne di nuovi) cosi da tradurre un'idea iniziale in un prodotto finale • Idee ed innovazione: la capacita di spingere le persone a creare ed ad essere creativi anche entro i limiti stabiliti per un prodotto od un'applicazione particolare • Problem Solving: un buon capo progetto e in grado di determinare i fattori tecnici ed organizzativi più importanti, strutturare sistematicamente una soluzione, motivare opportunamente i tecnici ci che devono svilupparla, applicare a nuove soluzioni le lezioni apprese nei progetti passati ed essere abbastanza flessibile da saper mutare direzione se i primi tentativi si rivelano infruttuosi Il processo di produzione del software 86
  • 87. Il capo progetto: caratteristiche • Identità manageriale: un buon capo progetto deve assumersi la responsabilità del progetto. Deve essere capace di tenere saldamente le redini quando e necessario e di lasciare che i tecnici più preparati seguano il proprio istinto • Incentivazione: per accrescere la produttività di un team, il capo progetto deve ricompensare lo spirito di iniziativa ed i risultati e deve dimostrare nei fatti di tollerare che si prendano rischi ragionevoli • Influenza e spirito di gruppo: un buon capo progetto deve “leggere” nelle persone; deve cogliere i segnali, verbali e no, e reagire alle esigenze che quei segnali suggeriscono. Deve mantenere il controllo anche in situazioni critiche. Il processo di produzione del software 87
  • 88. Il capo progetto: ed il prodotto da realizzare Egli deve definire stime quantitative ed un piano organizzativo, ma non dispone di dati certi. Un'analisi approfondita dei requisiti del software fornirebbe i dati necessari per le stime, ma spesso una tale analisi richiede settimane o mesi. Peggio ancora, i requisiti sono a volte fluidi e soggetti a cambiamenti nel corso del progetto. Definizione della portata e dei confini del progetto. Il processo di produzione del software 88
  • 89. Il capo progetto: ed il prodotto da realizzare • Contesto: in che modo il software in costruzione si inserirà in un sistema, prodotto o contesto aziendale esistente quali vincoli impone il contesto? • Obbiettivi relativi ai dati: Quali dati visibili all'utente deve produrre il software? Quali dati formano il suo input? • Funzionalità e prestazioni: Quali funzioni svolge il software per trasformare i dati di input in quelli di output? Si devono considerare aspetti specifici legati alle prestazioni? Il processo di produzione del software 89
  • 90. Il capo progetto: ed il prodotto da realizzare L'enunciato della portata deve precisare dei limiti. In altre parole devono essere indicati esplicitamente i dati quantitativi (ad esempio numero di utenti simultanei, dimensioni di una mailing list, massimo tempo di risposta accettabile); devono essere indicati i vincoli e le limitazioni (ad esempio limiti di memoria imposti dai costi); devono essere descritti i fattori facilitanti (ad esempio il fatto che gli algoritmi necessari siano ben noti e disponibili). Dati completi  TROPPO TEMPO ! Il processo di produzione del software 90
  • 91. Il capo progetto: ed il prodotto da realizzare Soluzione: Scomposizione del problema. • Analisi delle funzioni più importanti • Definizione dei limiti principali • Definizione della struttura dati principale Il processo di produzione del software 91
  • 92. Il capo progetto: e la pianificazione del progetto • Scomposizione del progetto/prodotto da realizzare in sottoprodotti • Definizione delle varie fasi per i singoli sottoprodotti ed assegnazione di tempi e risorse • Pianificazione dei punti di controllo e verifica Il processo di produzione del software 92
  • 93. Il capo progetto: e la verifica profilatura del progetto Il principio WWWWHH: Questo principio prende il nome dalle iniziali delle 6 domande a cui un capo progetto ed il suo Team devono saper rispondere per vedere se il progetto stilato e ben delineato. Il processo di produzione del software 93
  • 94. Il principio WWWHH • Perché (Who) si sviluppa il progetto? La risposta a questa domanda consente a tutte le parti di stabilire la validita dei motivi pratici per cui il software deve funzionare. In altre parole, lo scopo giustifica l'impegno di persone, tempo e denaro? • Cosa (What) verrà eseguito ed entro quando? La risposta a queste domande aiuta il team a stabilire tempi del progetto identificando le operazioni principali del progetto ed i punti fermi richiesti dal cliente. • Chi (Who) è il responsabile di una funzione? All'inizio si e detto che il ruolo e le responsabilità di ciascun membro del team deve essere ben definito. La risposta a questa domanda aiuta ad ottenere ciò. Il processo di produzione del software 94
  • 95. Il principio WWWHH • Dove (Where) sono le responsabilità organizzative? Non tutti i ruoli e le responsabilità risiedono nel team software. Anche il cliente, gli utenti ed i contatti interni del cliente hanno delle responsabilità. • In quale modo (How) il lavoro verrà eseguito sia tecnicamente che gestionalmente? Una volta che e stato definito il campo d'azione del prodotto, occorre definire una strategia gestionale tecnica del progetto. • In quale quantità (How much) è richiesta ogni singola risorsa? La risposta a questa domanda deriva dalle stime di sviluppo sulla base delle risposte alle precedenti domande. Il processo di produzione del software 95