Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PRIMA PARTE
PRIMA PARTE
Il processo di produzione del software
I.
II.
III.
IV.
Persone
Problema
Processo
Progetto
Limportanza di un
Project Management efficace
Lobiettivo di ogni progetto la realizzazione di un
prodotto nel rispetto di vincoli di:
tempi
costi
qualit
Limportanza di un
Project Management efficace (2)
Rischi conseguenti ad un Project Management
inadeguato:
Utili attesi trasformati in perdite (costi eccessivi,
ritardi, penali, immagine)
Ritardata presenza sul mercato
Ritardo sui progetti di R&S con scarsa utilizzazione da
parte delle linee produttive
Scarsi e inefficaci controlli e valutazioni dei progetti
causano lidentificazione di eventuali errori e problemi
troppo tardi rispetto alla possibilit di recupero
Ing. del SW: Prima parte Sez IV
Ostacoli al PM
Attivit spesso ostacolata dai Manager e dai tecnici con
cultura organizzativa gerarchica tradizionale e scarsa
cultura di moderne tecniche di gestione
Costi aggiuntivi (5-7 %)
Richiede una comprensione dettagliata del problema
Persone
2.
motivate / esperte
SEI PM-CMM (People Management Capability Maturity Model)
assunzione / selezione
addestramento / cultura di gruppo
stipendio / carriera
Problema
4. Progetto
z
z
Cliente (customer)
Utente finale (end user)
motivare
organizzare
risolvere i problemi
gestire il personale
10
Il gruppo di sviluppo
Scenario:
Ci sono n persone che lavorano per k anni ad un progetto, assegnate ad m
attivit differenti.
Alcune possibilit di organizzazione:
1. Le attivit sono distinte: poca interazione, no gruppi
2. Nascono informalmente gruppi e capigruppo; nasce la necessit
di coordinamento fra gruppi
3. Le persone vengono divise formalmente in t gruppi, dove ogni
gruppo responsabile di una o pi attivit. Coordinamento:
capigruppo e capoprogetto
La possibilit 3 la migliore.
Ing. del SW: Prima parte Sez IV
11
DD democratica decentralizzata
assenza di capogruppo fisso (solo temporaneo)
consenso collegiale
comunicazione orizzontale
CD controllata decentralizzata
capogruppo fisso
occasionali responsabili di sottoattivit
risoluzione di problemi per sottogruppi
comunicazione orizzontale e verticale
CA controllata accentrata
comunicazione verticale
la prima struttura formalizzata (1972)
12
13
CD
CA
x
x
x
x
x
x
14
Formale, interpersonale
assicurazione qualit
revisioni periodiche
Informale
riunioni
diffusione risultati/scelte
e-mail, forum, videoconferenze
15
Il problema
Scenario tipico: occorre una stima quantitativa il pi presto
possibile ma:
unanalisi dettagliata non ancora disponibile
le specifiche possono cambiare durante il progetto
occorre determinare, almeno, la portata (scope) del progetto
Portata:
Contesto: rapporto del software da sviluppare con il resto del
sistema
Obiettivi informativi: dati di ingresso e di uscita maneggiati
dallutente
Funzionalit e prestazioni: funzionalit da sviluppare e
prestazioni particolari da raggiungere
Ing. del SW: Prima parte Sez IV
16
Il problema (2)
Sono molto importanti le informazioni quantitative
numero di utenti
massimo tempo di risposta
spazio richiesto
costi da non superare
17
Il processo
1. Scelta di un modello
A prototipo/spirale, ... In ogni caso induce una sequenza di
attivit
2. Istanziare il problema nel modello scelto
a) Creare una matrice di compiti ed attivit
b) Per ogni cella stimare limpegno necessario
customer
planning
communication
compiti
c1
c2
c3
...
risk
analysis
...
18
Stima dellimpegno
Fattori che rendono difficile effettuare una stima attendibile:
complessit del progetto (assoluta e relativa alle esperienze
precedenti)
dimensione del progetto
mancanza di esperienze (e misure) pregresse
informazioni inattendibili o non ufficiali
19
20
E=(LOC*B0.333/P)3* (1/t4)
E = impegno (mesi uomo / anni uomo)
t = durata del progetto (mesi / anni)
B = fattore di competenza (0.16...0.39 ) (5 KLOC ... 70 KLOC)
P = parametro di produttivit (2000 ... 28.000 ) - Spesso calcolato su dati storici
complessit dellapplicazione
esperienza dei programmatori
linguaggio di programmazione
altro...
Ing. del SW: Prima parte Sez IV
21
Il progetto
22
Approccio vincente
23
Domande chiave
24
25
26
27
Persone e tempo
La relazione intercorrente tra persone e tempo non lineare
coordinamento
comunicazione
Esempio:
ogni programmatore pu produrre 5000 LOC/anno lavorando da
solo
se due programmatori devono interagire fra loro, la loro
produttivit complessiva diminuisce di 250 LOC/anno ( 9.750)
qual la produttivit di un team di quattro programmatori che
devono tutti interagire fra di loro?
Risposta: ci sono sei canali di comunicazione (3 + 2 + 1), quindi si
perdono 250*6=1500 LOC/anno. La produttivit del team di
18.500 LOC/anno (7,5% in meno)
Ing. del SW: Prima parte Sez IV
28
E=(LOC*B0.333/P)3* (1/t4)
Il prodotto E*t4 costante
Esempio:
1. t = 1,3 anni;
E = 12 anni/uomo
2. t = 1,75 anni;
E = 3,7 anni/uomo
Ing. del SW: Prima parte Sez IV
29
30
31
32
33
34
35
grado peso
(1..5)
1.2
app.
nuova
ricerca app.
0
1
1.1
1.1
0.9
1.2
0.9
...
...
...
...
...
...
...
36
37
Piano di progetto
Project plan
Breve documento che
descrive la portata (scope) del progetto
definisce i rischi
definisce il costo e la pianificazione
fornisce un quadro di riferimento globale
evidenzia come la qualit del prodotto viene garantita
38
2) Planning
3) Risk analysis
ricerca
nuova app.
miglioramento
manutenzione
reengineering
4) Ingegnerizzazione
6) valutazione
da parte del cliente
5) Realizzazione
39
40
Esempio di
Project Breakdown Structure
(PBS)
41
Rete di attivit
Costruire un grafo che evidenzi:
la sequenza delle attivit
le possibili parallelizzazioni
I.3a
I.1
I.2
I.3b
I.4
I.3c
La notazione pi usata sono i diagrammi PERT (Program Evaluation
and Review Technique) ideati negli anni 50 dalla Lockheed per gestire
il progetto Polaris.
Ing. del SW: Prima parte Sez IV
42
43
Diagrammi temporali
Dopo aver decomposto il progetto in task prefissati utile
costruire un diagramma temporale delle attivit detto
GANTT (da Henry Gantt: ingegnere meccanico ed esperto di
management, 1861-1919)
m1
fine analisi
analisi
m2
fine codifica
d1
studio
fattibilit
codifica1
d2
codifica2
d3
codifica3
d4
d5
int. e test
0
Ing. del SW: Prima parte Sez IV
6m
12m
18
44
45
46
47
48
Concetti fondamentali
Esempio
Processo di gestione delle configurazioni
CVS
49
Concetti fondamentali
50
51
Tipi di cambiamenti
Cambiamenti:
nelle strategie aziendali o nelle condizioni di mercato
nei requisiti tecnici
nei requisiti utente
Si riflettono in cambiamenti:
52
Esempio (1)
Lapplicazione da progettare riguarda le informazioni
sulle contravvenzioni elevate in un comune.
Di ogni vigile interessa il nome, il cognome ed il
numero di matricola
Di ogni contravvenzione interessa
Di ogni veicolo interessa
Il comune vuole effettuare dei controlli sul lavoro del
proprio personale:
dato un vigile, si vuole sapere se ha elevato una
contravvenzione per pi di una volta ad uno stesso
veicolo;
Ing. del SW: Prima parte Sez IV
53
Esempio (2)
Progettazione/Test
1. Schema concettuale (diagrammi UML delle classi e
degli use case, specifiche)
2. Interfacce dei moduli SW
3. Codice Java
4. Casi di test
54
Esempio (3)
Schema concettuale
+-----------+
+-----------------+
+------------------+
| Veicolo
| relativa
| Contravvenzione |
| Vigile
|
|===========|-------------|=================| effettua |==================|
| targa:str |1..1
0..*| verbale : intero|------------| nome:stringa
|
+-----------+
| luogo : stringa |0..*
1..1| cognome:stringa |
^
+-----------------+
| matricola:stringa|
/ \ {disj, compl}
+------------------+
/___\
+-------------------+
|
|
+-----------+
+-------------+
| Autoveic |
| Motociclo
|
|===========|
|=============|
| pot: int |
| telaio: str |
+-----------+
+-------------+
55
Codice Java
Esempio (4)
// File Vigile.java
public class Vigile {
private final String nome, cognome, matricola;
private InsiemeSS contravvenzioni;
public Vigile(String n, String c, String m) {
...
}
// File ControlloPersonale.java
public class ControlloPersonale {
public static boolean tartassatore(Vigile vig) {
...
}
Ing. del SW: Prima parte Sez IV
56
Esempio (5)
Casi di Test (ad es., black box)
Progettazione classi di equivalenza per la funzione
Java tartassatore:
Criterio del numero di valori, analisi dei valori estremi:
a) Vigile che non ha mai multato veicoli
b) Vigile che ha multato uno stesso veicolo al pi una volta
c) Vigile che ha multato uno stesso veicolo due volte
57
Cambiamento (1)
Lapplicazione da progettare riguarda le informazioni
sulle contravvenzioni elevate in un comune.
Di ogni vigile interessa il nome, il cognome ed il
numero di matricola, la data di nascita
Di ogni contravvenzione interessa
Di ogni veicolo interessa
Il comune vuole effettuare dei controlli sul lavoro del
proprio personale:
dato un vigile, si vuole sapere se ha elevato una
contravvenzione per pi di (una volta) due volte ad
uno stesso veicolo;
Ing. del SW: Prima parte Sez IV
58
Cambiamento (2)
Il cambiamento nei requisiti si riflette in:
1. Cambiamento dello schema concettuale:
1. Il diagramma UML delle classi non pi appropriato
2. La specifica dello use case non pi appropriata
59
Cambiamento (3)
Il cambiamento nei requisiti si riflette anche in:
3. Cambiamento del codice Java
1. Vanno aggiunti costruttori e getter nella classe Java Vigile
2. Va riprogettato lalgoritmo del tartassatore;
3. Va ri-implementata la funzione Java
boolean tartassatore(Vigile)
60
61
Archivio di un progetto
Detto anche project repository
Contiene tutti gli SCI, tipicamente in tutte le versioni
Pu contenere anche prodotti SW per lo sviluppo
(compilatori, strumenti CASE) nella versione
autorizzata per il progetto
Tipicamente, si lavora su copie degli SCI contenuti
nellarchivio
Sono previsti precisi protocolli per linserimento
nellarchivio
Ing. del SW: Prima parte Sez IV
62
63
{disjoint,complete}
Test
Specifica
Progettazione
implementazione
Modulo SW
collaudo
64
V 1.0
V 1.1
V 1.1.1
Ing. del SW: Prima parte Sez IV
V 1.3
V 1.4
V 2.0
V 2.1
V 1.2
V 1.1.2
Marco Cadoli, Universit La Sapienza, nov 2005
65
66
67
68
Impediscono modifiche
non autorizzate,
potenzialmente distruttive
inutili
Ing. del SW: Prima parte Sez IV
69
70
71
CVS (2)
sempre possibile sapere chi ha effettuato un
cambiamento, quando lo ha effettuato e perch
possibile ritornare ad una versione precedente (undo
o rollback). Ci utile nel caso di errori)
Ogni cliente accede al direttorio pubblico tramite un
protocollo stabilito (ad es., telnet, ssh, ) localmente,
o tramite Internet, a seconda della configurazione del
server
72
73
74
75
76
Direttorio
di servizio
File non
modificato
dallultimo
commit
File
modificato
dallultimo
commit
File non
presente sul
server
File aggiunto
temporaneamente (solo add
senza commit ) al server
Marco Cadoli, Universit La Sapienza, nov 2005
77