PRIMA PARTE
PRIMA PARTE
Il processo di produzione del software
I.
II.
III.
IV.
Un problema temporaneo?
Ipotesi:
I ritardi nella consegna e gli sforamenti del budget
possono essere risolti con migliori:
strumenti (di analisi, sviluppo, )
tecniche di management
Realt:
No silver bullet [Brooks 1987]
Problemi accidentali (risolti dagli strumenti)
Problemi essenziali (non risolti dagli strumenti)
Le applicazioni complesse non sono completamente comprese
n dai clienti, n dagli sviluppatori
Non si sa come stimare la difficolt di un progetto e quanto
tempo necessario
Ing. del SW: Prima parte Sez I
Un esempio famoso
Programma Guerre stellari (1985, presidenza
Reagan).
Si dimette Dave Parnas (uno dei massimi esperti di IS
mondiali, responsabile informatica),
Motivazione pubblica: le odierne conoscenze e
tecnologie non sono in grado (e non lo saranno in breve
tempo) in grado di affrontare problemi cos complessi
10
Il futuro
HW potente e a basso costo produzione di
sistemi software sempre pi complessi e difficili
da gestire
Spese mondiali per il SW:
1985: 140 G$
2000: 800 G$
(PIL Italia 2000: 1074 G$)
Si continuano a sviluppare
strumenti
metodologie
11
I.2. -- IL PRODOTTO
Definizioni
Concetti generali
Cenni storici
I problemi dello sviluppo del software
12
Definizioni
Software:
Creazione dellintelletto che include programmi, strutture dati,
documentazione. Lesecuzione dei programmi realizza
(sperabilmente) le funzionalit previste.
Prodotto Software:
Insieme completo di programmi, procedure e relativa
documentazione, rilasciato ad un utente.
Componente Software:
Ogni parte identificabile di un prodotto software, sia in uno
stadio intermedio del processo di sviluppo, che al termine di
esso.
13
14
15
Macroclassificazione delle
applicazioni sw
16
17
Prodotto Software
Definito il progetto e il
processo di produzione del bene
si pu delegare la produzione a
strutture
esterne
senza
influenzarne il risultato.
I parametri e le tecniche usate
per descrivere un prodotto sono
consolidate,
affidabili
ed
efficaci.
18
Prodotto Software
Sono possibili:
economie di scala
processi di produzione e
distribuzione diversificati
in
funzione
delle
dimensioni del mercato a
cui il prodotto si rivolge.
Non distinguibile la
produzione su piccola scala da
quella su larga scala.
Esiste una attivit di
revisione ed aggiornamento
non comparabile con quella
dei prodotti tradizionali.
19
20
21
Esercizi/riflessioni
Esistono altri fattori che differenziano il software
da altri prodotti industriali?
Perch il prodotto software si differenzia cos
tanto da altri prodotti industriali?
22
1950
Ing. del SW: Prima parte Sez I
2000
Marco Cadoli, Universit La Sapienza, set 2005
23
80
60
sviluppo
40
20
1955
manutenzione
1965
1975
1985
24
80%
manutenzione
46%
sviluppo
20%
verifica e
validazione
9%
dis.
e analisi
codifica
documentazione
10%
20%
% costo totale
% costo di sviluppo
25
Deterioramento e guasti hw e sw
% guasti
sw
(teoria)
% guasti
hw
tempo
tempo
% guasti sw
(comportamento osservato)
Cambiamenti
sw
tempo
26
27
http://www.esa.int/export/esaCP/Pr_33_1996_p_EN.html
Errore di
London Ambulance Service (1992).
management
Perdita di chiamate, duplicazione di dispatching.
http://www.cs.ucl.ac.uk/staff/A.Finkelstein/las.html
Ing. del SW: Prima parte Sez I
28
Componenti sw e riusabilit
Il concetto di componente software riusabile si va
sempre pi facendo strada.
strettamente collegato allanalisi (ad es., in
UML) e ai linguaggi (ad es., Java, C++, C#,
Delphi) Object Oriented.
Determina, fra laltro, un alto riuso di componenti,
molto efficace in alcuni contesti (ad es., per la
costruzione di interfacce grafiche -- Graphical
User Interface o GUI).
29
I.3. -- IL PROCESSO
Il processo di produzione del sw
Fasi essenziali
30
31
Progetto
Sviluppo
Manutenzione (sw esistente)
preventiva (10%)
rendere pi semplice la individuazione di errori tramite
miglioramenti del codice (ristrutturazione, pulizia, ecc.)
32
Attivit trasversali
33
Insiemi di attivit
Scadenze
Prodotti intermedi
Controlli qualit
Attivit trasversali
Gestione del progetto
Metriche
ecc.
34
Re-Engineering
35
36
Incrementale
Spirale
Sviluppo concorrente
Extreme programming
37
Soluzione
tecnica
Stato
corrente
Integrazione
38
Stato
corrente
39
MANUTENZIONE
40
analisi
descrizione di cosa si
vuole realizzare
definizione dei
requisiti
realizzazione in un
linguaggio di
programmazione
sorgenti
test
design
progettazione del
sistema (come si vuole
realizzarlo)
architettura e moduli
manutenzione
gestione cambiamenti
Ing. del SW: Prima parte Sez I
41
42
43
Modello prototipale
Interazione
con lutente
Realizz. modifica
prototipo
44
45
Modello RAD
(Rapid Application Development)
46
4. Codifica:
riuso, tramite componenti sw
4th generation techniques (4GT)
47
Modello incrementale
analisi
progetto
codifica
test
versione 1
. . .
analisi
progetto
codifica
test
versione n
Prodotti
Funzionanti
48
49
2) Planning
3) Risk analysis
1) Interazione
con il cliente
4) Ingegnerizzazione
6) Valutazione
da parte del cliente
Primo prototipo
5)
Realizzazione e
rilascio
50
Personale inadeguato
Scheduling sbagliato
Budget non realistico
Sviluppo del sistema sbagliato (validation: Are we
building the right product?, vs. verification: Are we
building the product right?, Bohem)
51
52
Ispezione dei
componenti di libreria
Estrazione dei
componenti disponibili
Realizzazione delln-esima
iterazione del sistema
Marco Cadoli, Universit La Sapienza, set 2005
53
Sviluppo concorrente
Concurrent engineering: nasce in ambito
manifatturiero per:
eliminare i rischi di insuccesso che nascono dalla
separazione tra le varie funzioni industriali
(marketing, R&D, process engineering,
manifacturing, ...)
ridurre i costi e le difficolt produttive che nascono
dalla logica di comunicazione formale
ridurre i tempi di produzione che derivano da uno
sviluppo prodotti essenzialmente sequenziale
La risposta: Integrazione di metodi, tools, cultura
Ing. del SW: Prima parte Sez I
54
Concurrent Engineering
Sviluppo sequenziale
Base delivery
Release 1
Release 2
Release 3
Sviluppo concorrente
Base delivery
Mod1
Mod2
Integr.
Release 1
...
Release 2
Release
Ing. del SW: Prima parte Sez I
La differenza
rispetto ai modelli
di processo
incrementali o a
spirale la
granularit e la
dimensione dei
processi che
vengono attivati in
simultanea (fasi vs
processi completi)
55
56
http://www.extremeprogramming.org/
Ing. del SW: Prima parte Sez I
57
58
59
60
http://argouml.tigris.org/
Ing. del SW: Prima parte Sez I
61
62
Metodi formali
Formalismi rigorosi (logici/algebrici) per le fasi di
specifica, sviluppo e verifica
Non si basano sul linguaggio naturale
(inerentemente ambiguo)
Affrontano i problemi di ambiguit, vaghezza,
incompletezza e inconsistenza delle specifiche
Esistono linguaggi formali funzionanti (ad es.
SMV, TLA, Alloy, Z, )
Riportiamo un esempio con una sintassi
inventata
63
64
65
Potenziali svantaggi:
Difficili ad usarsi, richiedono personale specializzato
Lenti nellutilizzo
Non molto validi come forma di comunicazione con
lutente
66
67
Un esempio in AlloyAnalyzer
module
alloyExamples/prog_sw_1/IIIappello_2005
// 1. encoding of UML class diagram
// 1.a classes and associations
// 1.b inverse associations
// 1.c disjointness & completeness
// 2. encoding of constraints
// 3. verification of assertions
Generato
automaticamente
// 1.a --EXAMPLE
sig Visita {
assistito: one Persona,
medico: one Persona,
indicazione: set Prescrizione
}
// 1.b --EXAMPLE
fact reverseAssistito {
all p: Persona |
p.assistito.assistito = p
}
// 2. --EXAMPLE
fact noMedicoAssistito {
// un medico non pu mai visitare
// se stesso
all v: Visita |
v.medico != v.assistito
}
Ing. del SW: Prima parte Sez I
68
Chiediamo la verifica
di questa affermazione
Ing. del SW: Prima parte Sez I
69
70
71
72
// guessed permutation
Vettore perm
solve {
// 1. elements of the output array
//
(implicitly defined as pre_a[perm]) are sorted
forall (i in 1..n-1)
pre_a[perm[i]] >= pre_a[perm[i-1]];
// 2. all elements of perm are different
//
--> perm is a permutation
alldifferent(perm);
Vincoli
};
Ing. del SW: Prima parte Sez I
73