Progettazione di Sistemi di TLC
basati sull’informatica
Laboratorio
Prof. Claudio Becchetti
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-1
Lezione 1
Progettazione: “il problema tipico”
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-2
Regole del corso
la maggior parte del lavoro si svolge in classe
le lezioni sono interattive
Colui che chiede una domanda può diventare uno
stupido per 5 minuti, colui che non la chiede sarà
uno stupido per sempre (prov. cinese)
Creare il cartellino badge
la valutazione finale non si basa sulle risposte
date in classe
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-3
metodo di valutazione
la valutazione si basa su:
voto di gruppo,
Voto di coppia (tesina)
Esame individuale
Tesina: il vostro background ?
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-4
Preparazione individuale
corsi sulla progettazione del software
corsi su TLC
conoscenze Object oriented
conoscenze linguaggi di programmazione
Elettronica
bioingegneria
problem solving ?
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-5
Testi di riferimento
TLC
Reti di Computer,Tanenbaum A. , Prentice Hall Int.
1996 (anche in italiano)
Digital Communications, Proakis J. G., McGraw-Hill
Software
Software Engineering, Pressmann Roger S. ,
McGraw-Hill, (anche in italiano)
UML Distilled: Applying the Standard Object Modeling
Language, Martin Fowler, Kendall Scott, AddisonWesley (anche in italiano)
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-6
Altri testi
Articoli
“No silver bullets, essence and accidents of
software engineering”, Brooks F. P., Computer (Apr. 1987).
“Building bug-free O-O software: An introduction to
Design by Contract”, Meyer B., available in
http://www.eiffel.com/
Jézéquel J.M., Meyer B.,
“Design by contract: the lesson
of Ariane”, IEEE Computer, 30, No. 2, pp. 129-130 (Jan. 1997) also
available in http://www.eiffel.com/
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-7
testi opzionali
Analisi Strutturata dei Sistemi, E. Yourdon. Jackson
Italia, 1990
The C++ Programming Language, third edition,
Stroustrup B., Addison-Wesley (1997). .
Speech Recognition : Theory and C++
implementation, Becchetti C., Prina L., John Wile & Sons,
1999
Borland C++ 4.0 Object-Oriented Programming,
Cantù M., Tendon S., Random House/Borland Press (1995)
Cline M. P., Lomow G. A., C++ Faqs, Addison Wesley
(1995).
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-8
Presentazione del corso
Corso di progettazione
focus sulla progettazione in generale
focus
sulla progettazione del software
focus sui sistemi di telecomunicazione (TLC)
focus su Object Oriented (OO) e C++
Perché focus sulla progettazione ?
La progettazione è uno strumento per il problem
solving
–
esempio paolo
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-9
a cosa vi serve veramente questo corso ?
Non progetterete mai ?
Non svilupperete mai il sw ?
non vi occuperete mai di TLC ?
Il C++ sarà superato
l’object oriented non serve ?
Dopo un mese dall’esame vi sarete dimenticati tutte le nozioni
apprese ?
Il corso è indirizzato alla progettazione secondo le
esigenze del mondo del lavoro
progettare significa risolvere i problemi (problem solving)
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-10
cosa vede una società da un neolaureato
anche brillante
un elemento grezzo da formare
a seconda dei lavori occorrono nell’ordine dei 12
mesi perché un neolaureato sia “operativo”
nei primi 12 mesi il neolaureato non è in grado di
fare quasi nulla per l’industria
per rendere operativo un neolaureato, occorre
molto addestramento (“training on the job” )
l’organizzazione cerca di insegnare il problem
solving nella fase di addestramento
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-11
cosa vorrebbe l’industria da un
neolaureato
capacità
di analizzare e risolvere problemi/lavori
complessi e nuovi
capacità di rispettare i vincoli del problema (tempi,
costi e risorse disponibili)
capacità di rispettare i vincoli per risolvere il
problema (tempi costi e risorse disponibili)
a prescindere dal settore di impiego (software, tlc,
gestionale, marketing, ...)
Quindi
-> problem solving:
capacità
di portare a termine con profitto un lavoro in
maniera autonoma
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-12
Problem solving e capacità di progettare:
serve solo nel lavoro?
Problema risolto
lavoro concluso
Lavoro da fare
Problema da risolvere
tempi
Vincoli
Lavoro ben fatto
soluzione adeguata
costi
risorse
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-13
Problem solving: dove ?
creare
un sistema tlc
organizzare una vacanza
Aprire un ristorante
produrre un software
creare un nuovo prodotto
organizzare una festa
organizzare una vacanza
lasciare la ragazza?
Il problem solving serve ovunque si presenti un
problema/ lavoro:
1) importante
2) di complessità non banale
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-14
Problem solving e progettazione
Ogni volta che dobbiamo risolvere un problema o
fare un lavoro importante occorre:
progettare il lavoro/ la soluzione
Progettare significa stabilire:
cosa
bisogna fare
Come implementarlo
In che tempi
Con che risorse
Come verificare cosa si è implementato
la capacità di problem solving si acquisisce
imparando a progettare
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-15
La progettazione e il corso
lo scopo del corso è di insegnare a progettare
vi verranno insegnate nel corso le tecniche di
progettazione che dovrete applicare a casi concreti
le
tecniche di progettazione servono solo nel mondo
del lavoro ?
le
tecniche di progettazione servono solo nel campo
del software TLC ?
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-16
Praticone o Progettista ?
Esempio:
Le istruzioni della cinepresa nuova:
Leggete le istruzioni o usate subito la cinepresa ?
Fine task
100 %
?
% Funzionamento
compreso
0%
Tempo
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-17
Task problemi e progettazione
In tempo ?
task
da fare
Concluso ?
Problema
da risolvere
task
da fare
Bene ?
Rispetta i vincoli
(costi)?
Concluso
!!
Problema
da risolvere
•Tempi rispettati
•costi rispettati
•funzioni coperte
con adeguata qualità
Tecniche di progettazione
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-18
Esempio:
Esempio del viaggio
la mia organizzazione della settimana bianca
e io intanto prenoto (esempio rosanna)
“Usa la testa non le gambe”
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-19
Schema di un problema
controlla
Cliente
fornisce
affida
Input
Task
vincoli
Progetta , pianifica, esegue
Output
Le definizioni ?
esecutore
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-20
Definizioni
Task
tutto le operazioni che devo compiere per ottenere
l’output
Input
tutto ciò che posso o devo prendere dall’ambiente
esterno per portare a termine il task,
informazioni
(dati, scadenze, costi, tempi)
risorse (mezzi fisici, persone, soldi)
Vincoli
possono impedire la soluzione del task (vincoli
incrociati)
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-21
Definizioni (output e test)
Output
il risultato del mio lavoro:
informazioni
, servizi, mezzi trasformati , documenti,
progetti, software ...
Test
metodi implementati da me o dal mondo esterno
per verificare che l’output sia adeguato
Cliente
chi mi chiede di:
risolvere
un problema
definire delle soluzioni
portare a termine una attività
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-22
identificazione di input output e task e test
Esercitazione
creare una tabella a 5 colonne : nome del task
come di seguito, input , vincoli, descrizione task,
output, test)
creazione
video gioco software
lavoro di gruppo
progettazione
di un telefonino
produzione di un telefonino
organizzazione di un concerto
organizzazione di una vacanza con un gruppo di
amici
quale è la differenza fra input e vincolo ?
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-23
L’Invariante di Input e vincoli
tutti i problemi implicano
tempi di realizzazione (cioè pianificazione controllo)
costi (budget a disposizione)
risorse (umane, materiali)
per affrontare un problema/ progettazione occorre
definire sempre chiaramente i tre aspetti
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-24
Esempio
SENIOR PROJECT MANAGER:Descrizione
E' responsabile della stesura, sviluppo e gestione di progetti
informatici incentrati sulle applicazioni di Rete per l'interazione
Internet, Intranet ed Extranet.
In particolare il suo ruolo prevede:
la definizione, con il cliente, del piano di lavoro e delle
modalità di collaborazione nell'ambito di system
integration;
l'analisi e la valutazione delle diverse componenti del
progetto (costi, tempi e risorse);
la gestione del team interno di lavoro e degli eventuali
partner;
la verifica dei risultati raggiunti.
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-25
I dati di input sono esaustivi ?
Se il problema non è banale, i dati di input non
sono mai sufficienti per avere un task univoco e
una soluzione univoca.
Questo è la causa più frequente di incapacità di
portare a termine un task soprattutto in problemi
mai affrontati
altra causa di paralisi nel portare a termine un
task sono i vincoli incrociati
Come si procede ?
Le assunzioni !!
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-26
Assunzioni
L’assunzione deve essere:
plausibile nel contesto del task
esplicitata (deve essere menzionata da qualche parte)
Le assunzioni sono spesso collegate ai soldi e sono
fondamentali per la buona riuscita di un progetto (ref. il
registro delle assunzioni)
Le assunzioni servono a
Ridurre il numero di possibilità di design
Semplificare
Limitare e vincolare il task (l’oggetto non farà questo)
Definire delle preferenze (p.es. linguaggio usato)
eliminare i vincoli
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-27
Esercizio:
identificare le assunzioni dei precedenti casi
creazione video gioco software
progettazione di un telefonino
produzione di un telefonino
organizzazione di un concerto
organizzazione di una vacanza con un gruppo di
amici
nel corso vi sono volutamente (come nella realtà) case
study con dati di input incompleti o vincoli incrociati
E’ fondamentale che voi identifichiate e tracciate le
assunzioni per evitare input incompleti o vincoli incrociati
E’ compito del committente accettare le assunzioni
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-28
Schema del corso
parte 1 ; le fasi della progettazione
parte 2 : la progettazione strutturata
parte 3: la progettazione a oggetti e classi
parte 4: la progettazione object oriented
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-29
le fasi della progettazione
Progettare “X” significa stabilire:
1: Mission (cosa è “X” e purché faccio “X” )
2: Analisi (cosa fa “X” )
3: Design (come realizzo “X” )
4: Implementazione (“X” realizzato)
5: Test (“X realizzato funziona ? È adeguato ?” :
Rispetta
design (è come lo volevo implementare)
Rispetta analisi (fa ciò che avevo progettato di fargli
fare)
Rispetta la mission (soddisfa il motivo per cui lo
avevo fatto)
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-30
Capacità acquisite nella prima lezione
dato un problema qualsiasi:
identificare
input
vincoli
output
task
cliente
test
individuare input incompleti/vincoli incrociati
definire assunzioni plausibili individuare i rischi
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-31
Lezione 2
le fasi della progettazione:
la mission, l’analisi
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-32
Task problemi e progettazione
In tempo ?
task
da fare
Concluso ?
Problema
da risolvere
task
da fare
Bene ?
Rispetta i vincoli?
Concluso
!!
Lavoro ben fatto
soluzione adeguata
Problema
da risolvere
Tecniche di progettazione
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-33
Perché progettare ?
Progettare è frustrante
All’inizio si raggiungono risultati più lentamente
È una attività impegnativa perché richiede forte uso
di attività concettuale invece si tende a prediligere
attività celebrale “manuale”
Stanca più velocemente
progettare è vincente
Garantisce il risultato giusto in tempi certi
Il tempo impiegato è molto inferiore rispetto
all’approccio da “code and fix”.
“Usa la testa e non le gambe”
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-34
Perché imparare a progettare
Secondo la letteratura scientifica, un personale ben addestrato può
lavorare fino a 25 volte di più rispetto ad un personale non
sufficientemente adeguato nell'ambito del software. (Negli altri
settori il differenziale di produttività si limita ad un fattore 4 ).
La differenza di prestazioni fra due operatori del software è spesso
dovuta ad una differente capacità di progettazione
Riduzione del ciclo di vita del software: come è ripartito fra le varie fasi ?
Maintainance 62%
Testing 15%
Implementation 7%
Analysis 6%
Design 5%
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-35
Non progettare nel software e nelle TLC
Non progettare significa:
I tempi per concludere un task possono dilatarsi
all’infinito (comune nella codifica del software)
Non si sa mai quando si finisce (per fare il 5% del
lavoro occorre il 95 % del tempo ?)
La qualità del prodotto è bassa, richiede
normalmente rilavorazioni per correggere errori
Il prodotto può essere gestito solo da chi lo ha
creato
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-36
Praticone o Progettista ?
Esempio:
Le istruzioni della cinepresa nuova:
Leggete le istruzioni o usate subito la cinepresa ?
Fine task
100 %
?
% Funzionamento
compreso
0%
Tempo
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-37
Parte prima: le fasi della progettazione
Progettare “X” significa stabilire:
1: Mission (cosa è “X” e purché faccio “X” )
2: Analisi (cosa fa “X” )
3: Design (come realizzo “X” )
4: Implementazione (“X” realizzato)
5: Test (“X realizzato funziona ? È adeguato ?” :
Rispetta
design (è come lo volevo implementare)
Rispetta analisi (fa ciò che avevo progettato di fargli
fare)
Rispetta la mission (soddisfa il motivo per cui lo
avevo fatto)
Case study: la penna
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-38
Le fasi della progettazione
Mission
Analisi
Design
Implement.
Test
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-39
1: Mission
Indica la meta, la direzione e lo scopo del task che si vuole
compiere
È espresso in forma concisa (max 3 righe)
Serve a eliminare i problemi di framework
Esempio di framework (es. la Russia in sede)
E’ un “contratto” con il cliente:
Va concordato con il cliente
È focalizzato sui bisogni del cliente
è difficile da individuare
è difficile da seguire
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-40
Lost the mission-> Fired !
Perdere la mission può far licenziare (esempio)
la mission deve essere sintetica: le mission nelle aziende
IBM
At IBM, we strive to lead in the creation, development and manufacture of the
industry's most advanced information technologies, including computer systems,
software, networking systems, storage devices and microelectronics.
And our worldwide network of IBM solutions and services professionals translates
these advanced technologies into business value for our customers
Coca cola
The
Coca-Cola Company exists to benefit and refresh
everyone who is touched by our business.
Esercizio:
trovare alcune mission la Fiat, Xerox, IBM, HP, un teatro
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-41
Esempi di mission
Il cliente chiede: progettami una penna
Mission: progettare un oggetto in grado di scrivere
indelebilmente sulla carta
Quali assunzioni ?
Esercizio definire la mission per
la progettazione di un centralino telefonico per piccole
aziende,
la progettazione di gioco per play station,
la progettazione di un video telefono mobile.
Quali assunzioni ?
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-42
2: Analisi
Specifica che cosa deve fare il prodotto/servizio
indicato nella mission
Deve discendere ed essere coerente con la
mission
Esempio di incoerenza fra mission e analisi (la coppia faffi)
E’ una lista di requisiti secondo il punto di vista
del cliente utilizzatore
se non si è capaci di fare analisi non si è
capaci di codificare il software
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-43
I requisiti
I requisiti sono un qualcosa desiderato dal cliente
espresso in forma di frase testuale
I requisiti dovrebbero essere numerati
I requisiti dovrebbero essere testabili
I requisiti dovrebbero essere univoci,non
sovrapponibili, non ambigui
I requisiti dovrebbero coprire completamente i
desiderata del cliente
i requisiti sono definiti dall’analista in base alle
richieste del cliente, o sono direttamente forniti
dal cliente
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-44
Esempio di requisiti
Le penna:
Mission: progettare una penna per scrivere sulla
carta
Requisiti:
1.
2.
3.
4.
5.
La penna dovrà scrivere per almeno un chilometro
di carta
La penna dovrà avere un costo di produzione
inferiore a 1 €
La penna dovrà avere una impugnatura giudicata
comoda per almeno il 70% degli utilizzatori
La penna dovrà scrivere in inchiostro blu o rosso
La penna dovrà funzionare fra 0° e i 40°
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-45
Validazione dei requisiti
Il cliente dà spesso requisiti ambigui/incompleti
l’analista li trasforma in modo che i requisiti siano:
numerati
testabili
Definire
un test per i precedenti requisiti
Non sovrapposti
Coprano completamente i desiderata del cliente
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-46
Esempio di requisiti non corretti
Dash lava più bianco !: come si testa ?
Requisiti:
1.
2.
3.
4.
5.
6.
La penna dovrà scrivere a lungo
La penna dovrà scrivere per almeno un chilometro
di carta
La penna dovrà costare poco
La penna dovrà avere un costo di produzione
inferiore a 1 €
La penna dovrà avere una impugnatura adeguata
La penna dovrà scrivere bene
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-47
Criteri aggiuntivi di validazione dei requisiti
Fattibilità
Siamo in grado di farlo ?
Abbiamo il tempo i soldi le capacità le persone giuste (il
caso ATC USA)
Accettabilità
Ci conviene farlo ?
Otteniamo qualcosa di soddisfacente come performance
Vulnerabilità
qualsiasi cosa che può andare male andrà male (Murphy)
Quali sono i rischi / conseguenze delle nostre scelte ?
Essendo pessimisti cosa può andar male e se va male
quali sono le conseguenze
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-48
Gli errori dell’analista
Esempio di errore
esempio della penna e del software ()
Errore tipico e grave:
inserire nell’analisi di X come va fatto X (=design)
quali sono le implicazioni di questo errore ?
L’errore ha impatto su costi tempi e risorse ?
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-49
Gli errori dell’analista 2
esempio: una società di consulenza invia un ingegnere
neolaureato ad un corso approfondito di analisi UML
l’ingegnere fa grande esperienza di analisi
la società di consulenza deve effettuare un lavoro di
informatizzazione presso una azienda e decide di inviare
l’ingegnere per il lavoro di analisi
quali sono i problemi che incontrerà l’ingegnere ?
1:esempio
2:esempio
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-50
Il dominio del problema e della soluzione
Dominio del problema
mission
analisi
Dominio della soluzione
design
implementazione
Mondo delle
soluzioni
problema
analista
sviluppatore
cliente
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-51
conclusione sugli errori
l’analista non deve confondere analisi con design
l’analista deve conoscere il dominio del problema
l’analista deve conoscere il dominio della
soluzione
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-52
Esercizio ricapitolativo sulla analisi
Definire mission e analisi per i seguenti problemi,
per ogni requisito definire un test
Uno scanner
Una videocamera
Un telefonino
Una radio
Un programma di posta elettronica
Un ristorante
Una festa
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-53
Progetto di una festa
Il committente richiede un festa
L’organizzatore chiede come organizzarla
Il committente risponde: l’importante è che ci
divertiamo
Requisito: divertirsi ?
Testabile
? (il cliente mi paga se si è divertito ?)
Cosa fa l’organizzatore ?
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-54
Obiettivi raggiunti
dato un problema qualsiasi bisogna essere in
grado di:
definire la mission (max 3 righe):
definire l’analisi:
definire
i requisiti
–
evitare i requisiti scorretti
– definire i test dei requisiti
evitare
gli errori dell’analista:
non immettere il design nell’analisi
– capire il dominio del problema
– capire il dominio della soluzione
–
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-55
Lezione 3
Design
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-56
fallimento dei progetti software
in che cosa falliscono ?
funzioni, tempi e costi previsti
quanti progetti falliscono ?
16% successo
53% successo solo parziale
31% fallimento e cancellazione
–
Studio dello Standish Group 1994 su 8380 progetti
le percentuali di fallimento sono superiori per
progetti di dimensioni maggiori
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-57
Perché i progetti falliscono
1: Requisiti incompleti
13.1%
2: mancato coinvolgimento dell’utente
12.4%
3: Mancanza di risorse
10.6%
4: Attese irrealistiche
9.9%
5: mancanza di supporti della direzione
9.3%
6: cambio di requisiti
8.7%
7: mancanza di pianificazione
8.1%
8: non serve più
7.5%
A quali fasi riconducete i fallimenti
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-58
tipologie dei requisiti
tipologie di requisiti
funzionali
tecnologici
Temporali
economici
organizzativi
prestazionali
relativi all’utilizzo
alla sicurezza
deve fare
deve usare tec.
deve metterci
deve costare
deve essere organizzato
deve essere usato
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-59
Storia di un progetto
Ciò che ha chiesto
il cliente
Ciò che ha realizzato
la fabbricazione
Ciò che ha capito
il commerciale
Come hanno rimediato
ai problemi
i responsabili del montaggio
Come ha risolto
il problema
la progettazione
Ciò che realmente
voleva il cliente
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-60
Il dominio della soluzione: il design
Dominio del problema
mission
analisi
Dominio della soluzione
design
implementazione
Mondo delle
soluzioni
problema
analista
sviluppatore
cliente
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-61
3: Design
mission
mission
design
Dato il “cosa deve fare X” (=analisi)
il design specifica come deve essere fatto,
il design è il progetto dell’implementazione
È come il progetto della casa (costruireste una casa
senza il progetto)
Il design discende dall’analisi (tracciamento)
Per ogni requisito o gruppo di requisiti occorre
specificare un insieme di specifiche di realizzazione
Attenzione alle incoerenze: (es. la coppia)
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-62
Esempio di design (la penna)
R1: La penna dovrà scrivere per almeno un chilometro di carta
D1: la penna conterrà 10 ml di inchiostro
D2: la penna sarà a sfera con sfera di acciaio inox
R2: La penna dovrà avere un costo di produzione inferiore a 1 €
D3:i materiali di produzione saranno …
R3: La penna dovrà avere una impugnatura giudicata comoda per
almeno il 70% degli utilizzatori
D4: L’impugnatura sarà di tipo …
R4: La penna dovrà scrivere in inchiostro blu o rosso
D5…
R5: La penna dovrà funzionare fra 0° e i 40° gradi
D6 l’inchiostro sarà di tipo
R6: La penna dovrà avere un costo di produzione inferiore a 1 €
D1, D2, D3,D4,...
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-63
Esercizio a squadre sul design
Definire mission e analisi e design e test :
organizzare un ristorante
progettare uno scanner
progettare uno una videocamera
valutare criticamente il lavoro altrui
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-64
Validazione del design
E’ in linea con l’analisi ?
tracciare ogni componente del design sui requisiti di analisi
Fattibilità
Siamo in grado di farlo ?
Abbiamo il tempo i soldi le capacità le persone giuste
Accettabilità
Ci conviene farlo ?
Otteniamo qualcosa di soddisfacente come performance
Vulnerabilità
qualsiasi cosa che può andar male andrà male
i rischi / conseguenze della scelta implementativa
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-65
Design iterativo
Il primo design è fondamentale ma è sbagliato !!
Il design (specialmente nel sw) va fatto
considerando una prima soluzione , migliorandola
successivamente
5 design: quasi inutile
3 design: si svolta
100%
6 design: inutile
efficacia
4 design: si migliora poco
2 design
tempo
1 design:
sbagliato ma utile
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-66
Migliorare il design
le iterazioni successive possono migliorare:
tempi di sviluppo
risorse
impiegate
costi di sviluppo
qualità del prodotto
affidabilità del prodotto
le iterazioni successive possono ridurre i rischi:
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-67
Esercizio a squadre sul design
Definire mission e analisi e design e test :
progettare uno un telefonino
comprare un telefonino
progettare una radio per la macchina
organizzare una festa
valutare criticamente il lavoro altrui
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-68
Implementazione
Realizzazione del progetto di design
Per il software coincide con la codifica
Deve essere in linea con il design
Se vi sono problemi con il design, aggiornare il
design e eventualmente l’analisi
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-69
Test
La fase di test serve a verificare se ho raggiunto obiettivi:
E’ composta da Verifica e Validazione
Verifica :stiamo costruendo un prodotto bene
(implementazione soddisfa il design)
Si definiscono una serie di test per verificare che il
prodotto funziona
Validazione :
stiamo costruendo il prodotto giusto ?
è efficacie ?
È quello che ha chiesto il cliente
–
si definiscono una serie di test che discendono dai requisiti e si
verificano
– Verificare che i requisiti di analisi del cliente siano soddisfatti nel
prodotto finale
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-70
Esempio di test
Verifica
la penna non si deve rompere quando scrive
non
discende dai requisiti del cliente ma comunque è
un test importante di funzionalità)
Validazione
R5: La penna dovrà funzionare fra 0° e i 40°
Metto
la penna in un frigo a 0° per 10 minuti e provo a
scrivere
Metto la penna in un forno a 40° per 10 minuti e
provo a scrivere
Il test è collegato a collaudi, pagamenti e alle
penali
esempio: Penali al secondo
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-71
Esercizi
definire mission, analisi, design,
implementazione, test per i seguenti problemi:
un videotelefono
un sistema di domotica
un dvd recorder
un ponte radio
un modem telefonico
un ristorante
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-72
Come si gestisce un progetto / problema
definire gli obiettivi del progetto
creare il piano del progetto (inizio progetto)
controllare il progetto (durante il progetto)
chiudere il progetto
start
Eseguo
task
fine
pianifico
monitorizzo
Aggiorno
piani
nuovi
piani
Quando
finisce ?
controllo
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-73
Fasi per la creazione di un piano
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-74
Creare il piano del progetto
prima di iniziare un progetto si deve definire una
pianificazione:
la pianificazione scompone l’attività principale in
sottoattività
per ogni attività
nome
responsabile
data inizio/ fine (ore uomo richieste/ disponibili)
vincoli temporali prerequisiti
i piani vengono descritti attraverso un Gannt
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-75
Esercitazione sui Gannt
I Gannt
scadenze, barre attività vincoli
Creare il Gannt di un video gioco
definire i task, risorse, ...
modifiche sul Gannt
cambiare risorse
livellare
uso delle risorse
attività critiche
percorso critico
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-76
Gannt di un video gioco
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-77
Controllo
definire le misure per il controllo
misurare periodicamente
percentuale di lavoro finito
la curva di fine
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-78
controllo
definire le misure di controllo
verificare le previsioni con le misure attuali
i ritardi: strategie di recovery
curve di risposta
100%
controlli
% concluso
tempo
fine
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-79
Problemi della pianificazione/controllo
pianificazione
valutazione delle prestazioni della risorsa
disponibilità risorse
percorso critico
compatibilità con le scadenze
priorità
vincoli
forward scheduling backward scheduling
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-80
Verificare i ritardi
Fine reale
previsione
100%
controlli
% concluso
Misura reale
oggi
Fine
teorica
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-81
Esercitazioni
Definire il piano per ottenere l’output della esercitazione
definire i tempi e i controlli
il piano degli esami
il piano per la progettazione del software
il piano per la progettazione dell’organizzazione festa
il piano organizzazione vacanze
il piano start up di un ristorante
il piano di start up di un sito web
domande
quali assunzioni
quali dati di input
quali vincoli
come si controlla, quali misure
i tempi sono stati rispettati
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-82
Fasi del progetto: Harvard Business School
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-83
Obiettivi raggiunti
Da ricordare
le fasi della progettazione Mission, analisi, design,
implementazione, test
cosa è la mission
la differenza fra analisi e design (cioè cosa fare e come
realizzarlo)
il test
essere capaci di :
definire le fasi di progetto e il test per un generico problema
definire la pianificazione di un progetto
definire le metodologie di controllo
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-84
Lezione 4
Ciclo di vita del software
gerarchie
Più che una disciplina o un corpo di conoscenza, l’ingegneria è
un modo di affrontare un problema
Scott Whitmire
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-85
Modelli del processo software
Ciclo di vita di un progetto software = Modello e
sequenza delle attività di sviluppo.
Tipi di modelli:
Il modello sequenziale lineare (“modello a cascata”
o gran design)
Il modello basato sulla prototipazione
Il modello RAD (Rapid Application Development)
Modelli evolutivi
–
–
–
Il modello incrementale
Il modello a spirale
Il modello ad assemblaggio di componenti
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-86
Modello “a cascata”: Grand design
Strutturazione e modellazione del sistema e
dei dati (livello sistema)
Analisi dei
requisiti sw.
dominio delle informazioni,
funzionalità,
comportamento, prestazioni,
interfacce
Progettazione
strutture di dati, architettura
del software, interfacce,
algoritmi delle operazioni
Il software è una parte di un sistema più
ampio. Sono necessarie un’analisi e una
progettazione di alto livello per
raccogliere tutti i requisiti, da cui il
software utilizza solo una parte.
Codifica
Collaudo
codice
Problemi:
• i progetti reali non si conformano allo schema sequenziale
• ogni modifica nello schema può causare confusioni
• non può essere governata l’incompletezza dei requisiti
• versione funzionante solo verso la fine del progetto
• “stati bloccanti” per colpa della sincronizzazione tra le attività o tra i membri del team
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-87
Sviluppo evolutivo
Problema:
non c’è tempo di fornire una release che copra tutti i requisiti
i requisiti sono incompleti
soluzione
sviluppo in sequenza prototipi sempre più completi
i prototipi implementano sottoinsiemi di requisiti non
congelati
il cliente approva o modifica le implementazioni del prototipo
Vantaggi dello sviluppo iterativo
È pianificato e gestito
È prevedibile
Permette variazioni dei requisiti più facilmente
È basato su prototipi eseguibili evolutivi e non solo documentati
Implica il cliente nell’arco dell’intero processo
È guidato da rischi
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-88
Sviluppo evolutivo del software
1. Non c’è tempo per una versione completa però dobbiamo uscire sul
mercato.
2. Esiste un nucleo di requisiti di sistema ma i dettagli delle estensioni non
esistono ancora.
Soluzione: modello di processo per un prodotto che evolve nel tempo
Definire l’output
del sistema
Specificare
l’incremento del
sistema
Costruire
l’incremento del
sistema
Rilasciare
l’incremento del
sistema
Collaudare
l’incremento del
sistema
Sistema è
completo?
Completare il
rilascio del sistema
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-89
Modello incrementale
Utile quando la disponibilità del personale è
insufficiente a garantire l’implementazione
completa. Si comincia con un piccolo team. Il
team accresce se l’accoglienza è positiva.
Strutturazione del sistema
e dei dati
Stadio 1
Proget
tazione
Analisi
Codifica
Collaudo
Consegna dello
stadio 1
Implementa solo
una parte dei requisiti
Stadio 2
Proget
tazione
Analisi
Stadio 3
Analisi
Codifica
Proget
tazione
Collaudo
Codifica
Consegna dello
stadio 2
Collaudo
Consegna dello
stadio 3
Si partizionano i requisiti in tre stadi a seconda delle priorità
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-90
Modello a spirale
Sei attività portanti
(task region):
Comunicazioni
con il cliente
Asse dei punti di
entrata
Pianificazione
Analisi dei rischi
Valutazione da parte
del cliente
Strutturazione
Costruzione e rilascio
Il modello abbina la natura iterativa della
prototipazione e gli aspetti controllati e
sistematici del modello sequenziale.
Progetti di sviluppo di nuove idee
Progetti di sviluppo di un nuovo prodotto
Progetti di miglioramento di un prodotto
Progetti di manutenzione di un prodotto
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-91
Modello ad assemblaggio di componenti
Analisi dei rischi
Pianificazione
Comunicazioni
con il cliente
Valutazione da
parte del cliente
Individuazione
componenti
candidati
Costruzione
n-esima iterazione
del sistema
Ricerca
componenti nella
libreria
Inserimento nuovi
componenti nella
libreria
Estrazione
componenti
disponibili
Strutturazione
Costruzione e rilascio
Costruzione
componenti non
disponibili
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-92
modello di sviluppo RAD
consentono un tempo di sviluppo molto ridotto
il modello di sviluppo è :
analisi
Business modelling: definizione dei flussi informativi e dei
processi
–
Data modelling
– process modelling
design / implementation
application generation: direttamente con il tool di 4g. Molto
del codice è già implementato nel tool
testing
limitato perchè la maggior parte del software è già
sviluppato
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-93
Pro&contro del modello RAD
Pro
velocità
affidabilità (il codice è per la maggior parte già sviluppato)
contro
adatto solo se esiste un tool RAD che implementa la maggior
parte del codice per l’applicazione specifica
non è facile particolareggiare il codice
non è facile migliorare le performances
spesso si ignorano i passi fondamentali della progettazione e
quindi il risultato è disastroso
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-94
Riuso o sviluppo ex novo ?
Spesso sono disponibili componenti utili per lo
sviluppo: debbono essere utilizzati ?
Sviluppo ex novo
costo
riuso
lavoro da effettuare in creazione o modifica
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-95
Riuso o sviluppo ex novo ?
Riduzione del ciclo di vita del software: come è
ripartito fra le varie fasi ?
Maintainance 62%
Analysis 6%
Testing 15%
Implementation 7%
Design 5%
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-96
Analisi del costo di sviluppo
le fasi di debugging/ maintainance hanno il
costo maggiore
Occorre impostare Analisi, design e codifica
nel progetto in modo da minimizzare il costo
di debugging testing e manutenzione
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-97
Quale modello
La scelta del modello è influenzata da vari fattori:
formalismo del progetto
disponibilità di risorse
disponibilità dei requisiti
disponibilità del cliente
disponibilità di codice preesistente RAD tools
tempi e costi
risorse (numero e skill)
esercizio: quale modello scegliereste ?
modello a cascata, evolutivo, incrementale, a
spirale, assemblaggio di componenti, RAD
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-98
Lezione 4
Seconda parte: gerarchie
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-99
Regola fondamentale: Divide et Impera !
Cosa avevano capito i Romani
La mente umana è molto limitata
il caso di Paolo d. (problema finanziario) /alessia M(psicologia nei
problemi complessi)
Problema
affrontabile
Problema
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-100
Implicazioni del divide et impera
divido il problema in sottoproblemi risolvibili
risolvo un sottoproblema alla volta considerando
gli altri risolti
definire sottoproblemi mi aiuta a dividere il lavoro
fra più persone
Problema
da affrontare
Problema dato per risolto
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-101
Dal sistema al dettaglio:gerarchie e zoom
Divide et Impera !
Se il sistema è troppo complesso:
1) si definisce l’analisi del sistema (gerarchia uno)
2) si definiscono i sottosistemi (gerarchia due)
3) si definiscono le interfacce
4) si procede sul sottosistema come se fosse un
sistema
mission,
analisi, design, ....
Se i sottosistemi sono ancora troppo complessi
si crea una altra gerarchia
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-102
Gerarchie
Gerarchia 2
Mondo
Interfaccia 1
Dato un sistema connesso con
l’esterno da interfacce esterne,
una gerarchia è composta da:
sottosistemi che partizionano il
sistema
interfacce che connettono i
sottosistemi
le interfacce esterne che
connettono i sottosistemi con
il mondo esterno
sistema
Interfaccia 2
Interfaccia 1
sottosist
sottosist
Interfaccia 3
Interfaccia 4
sottosist
Gerarchia 2
Gerarchia 3
sottosist
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-103
Come si definiscono i moduli?
Principio di massima coesione e minimo
accoppiamento
un modulo deve essere:
internamente
–
massimamente coeso
deve offrire un servizio completo
minimamente
accoppiato con gli altri moduli
–
le interfacce devono essere di minima consistenza
– i moduli sono minimamente interdipendenti
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-104
Coesione ed accoppiamento
Casuale
Temporale
Logica
Bassa
Di comunicazione
Procedurale
Funzionale
Sequenziale
Spettro della coesione
“Dispersivo”
Alta
“Concentrato”
Nessun
Accoppiamento a
Accoppiamento
Accoppiamento
accoppiamento
template
esterno
di contenuto
diretto
Accoppiamento di
Accoppiamento
Accoppiamento
dati
di controllo
comune
Bassa
Spettro dell’accoppiamento
Alta
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-105
Esempio di definizione dei moduli
definire un design corretto e scorretto di
modularizzazione
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-106
Determinazione del numero dei moduli
Quanti moduli devo fare
il costo di un sistema è proporzionale alla complessità
la complessità è data dalla somma della complessità
intramodulo e della complessità delle interfacce intermoduli
Complessità
totale
Complessità &
costo
Complessità
delle interfacce=
costo di integrazione
Complessità
dei modulo
= costo per modulo
Maggiore Granularità (+ moduli +piccoli)
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-107
Esempio: progettazione di una auto
auto troppo complessa! Divide et impera !
Definisco la mission
progettare
una auto utilitaria per l’Italia
Definisco analisi del sistema auto
–
R_auto_1: deve raggiungere la velocità di almeno 140
– R _auto_ 2: deve lavorare fra -15° e +45° gradi
– R _auto_ 3: deve frenare da 50 km/h a 0km/h in 10 sec
– R _auto_ 4: deve avere 4 posti comodi
definisco i sottosistemi (gerarchia di primo livello)
motore,
carrozzeria, ruote,freni, volante, cambio
definisco le interfacce fra i sottosistemi
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-108
Esempio auto gerarchia primo livello
Motore
Mission: muovere la macchina
R_auto_1:
–
R_Moto_1: deve avere 6000 giri con 4KW potenza
R_auto_2:
–
deve raggiungere la velocità di almeno 140
deve lavorare fra -15° e +45°
R_Moto_2: non deve congelare sotto i 15° ...
Il motore come sistema è ancora troppo
complesso-> espandiamo la gerarchia:
motore composto da :
–
refrigerazione,
– propulsione
– centralina di controllo
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-109
La gerarchia del progetto auto
auto
motore
refrigeramento
propulsione
ruote
controllo
freni
comandi utente
acceleratore
volante
cambio
frizione
La struttura è simile ad WBS (work breakdown
structure)
legami con OBS (organization) e CBS (cost)
Quali sono le interfacce ?
esercizio
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-110
Regole per la costruzione della gerarchia
le interfacce definiscono i rapporti fra due
sottosistemi
le interfacce devono essere coerenti fra diverse
gerarchie
tutti i requisiti di un sistema si devono tradurre in
requisiti per i sottosistemi
lo zoom fra le varie gerarchie deve essere
coerente a livello di interfacce e di contenuti
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-111
Coerenza delle gerarchie per le interfacce
gerarchia 1
contenuto Lazio
interfacce esterne: A1 Napoli, A1 Firenze
gerarchia 2 province del Lazio (Roma LT, FR, VT, RI)
interfacce
esterne: A1 Napoli (LT), A1 Firenze (FR)
interfacce interne: RM LT (Pontina,...), RM VT
(Cassia,...)
gerarchia 3 comuni di Latina (Formia, Gaeta, ... LT,
FR, VT, RI)
non si devono perdere le interfacce
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-112
Gli attori
gli attori sono tutte le entità che interagiscono
con il sistema
gli attori sono collegati con il sistema attraverso
interfacce esterne
gli
attori non sono solo persone
per il sottosistema motore gli attori sono:
cambio(interfaccia albero di trasmissione)
comandi utente (interfaccia filo acceleratore)
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-113
diagramma funzionale con attori
comanda
Auto
Gerarchia
1° livello
interagisce
strada
guidatore
Comandi
auto
comanda
Gerarchia
2° livello
guidatore
interagisce
Motore
freni
Ruote
strada
cambio
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-114
diagramma funzionale: 3° gerarchia
Comandi
auto
gestisce Motore
Comandi
auto
Gerarchia
3° livello
Invia rotazione
cambio
girano
interagisce
Ruote
strada
bloccano
Invia rotazione
Freni
cambio
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-115
diagramma funzionale: 4° gerarchia
Comandi
auto
Comandi
auto
gestisce
gestisce
Motore
Gerarchia
3° livello
Invia rotazione
cambio
Gerarchia
4° livello
controllo
propulsore
Invia rotazione
cambio
refrigeramento
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-116
Requisiti di interfaccia
Gerarchia 1: interfacce esterne
comanda,
interagisce:
Gerarchia 2: interfacce interne
girano,
bloccano, invia rotazione
Gerarchia 3: interfacce interne
....
Le interfacce di una gerarchia vengono ereditate e
eventualmente approfondite nelle gerarchie
successive
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-117
Esercizio: il ristorante
definire mission
analisi di sistema
requisiti del sistema
attori
interfacce esterne e requisiti associati
definire i sottosistemi (gerarchia di primo ordine)
definire interfacce interne fra sottosistemi e requisiti associati
associare interfacce esterne a sottosistemi
analisi di sottosistema
requisiti del sottosistema
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-118
Esercitazione: sistema gestione ordini e
conto per ristoranti
mission: progettare un sistema informatico che
gestisca gli ordini e il conto finale per ogni
ristorante
analisi di sistema
requisiti
del sistema
attori
interfacce
esterne e requisiti associati
definire i sottosistemi (gerarchia di primo ordine)
definire
interfacce interne fra sottosistemi e requisiti
associati
associare interfacce esterne a sottosistemi
analisi di sottosistema
–
requisiti del sottosistema
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-119
Obiettivi raggiunti
saper scegliere il giusto modello di sviluppo in base alla
tipologia di problema modello a cascata, evolutivo,
incrementale, a spirale, assemblaggio di componenti, RAD
per ogni problema essere capaci di :
individuare sottoproblemi (gerarchia 1)
determinare
i sottosistemi in base alla complessità di
interfaccia e di modulo
definire
interfacce esterne e interne
associare e definire i sottorequisiti
iterare il processo per il numero di gerarchie
necessarie
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-120
Lezione 5
Strumenti per l’analisi:
diagrammi E/R, Use case, diagrammi di Eventi
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-121
Le fasi della progettazione
Mission
Analisi
Design
Implement.
Test
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-122
Attività di analisi
1: Comprensione del problema: Requisiti.
2: utilizzo del sistema dal punto di vista utente:
casi d’uso.
3: Modellazione.
4: Specifica
5: Riesame.
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-123
Attività di analisi : 1
1: Comprensione del problema: Requisiti.
Per mezzo di interazioni e discussioni con l’utente e dello studio
della specifica del sistema e del piano di progetto (se ci sono!),
l’analista raccoglie i requisiti. Requisiti: descrizione di come il cliente
o l’utente desidera essere il sistema.
Gli elementi acquisiti dall’analista sono:
una descrizione del sistema
gli attori del sistema
gli obiettivi del sistema
le funzioni del sistema
gli attributi del sistema
2: utilizzo del sistema dal punto di vista utente: casi
d’uso.
Per chiarire a sè e all’utente il sistema da progettare, l’analista
descrive come il sistema verrà utilizzato dall’utente attraverso i casi
d’uso. I casi d’uso sono scenari che mostrano l’utilizzo del sistema
in situazioni specifiche
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-124
Attività di analisi : 2
3: Modellazione. L’analista definisce le gerarchie e per ogni
gerarchia definisce i vari modelli: Entità/Relazione, funzionale, di
stato del sistema nel tentativo di cogliere la struttura, il
contenuto informativo, il flusso di dati e del controllo e
l’operatività del sistema.
4: Specifica. Requisiti, gerarchie, casi d’uso, modelli E/R,
funzionali e di stato vengono riorganizzati e ingegnerizzati.
5: Riesame. Verifica della completezza, consistenza e accuratezza
della specifica.
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-125
Strumenti di analisi
1: Comprensione del problema
Requisiti
2: utilizzo del sistema dal punto di vista utente
casi d’uso
3 Modellazione
gerarchie
modelli dei dati (E/R)
modelli funzionali
diagrammi di stato
diagrammi di interazione (eventi)
4: Specifica.
ingegnerizzazione dei requisiti e modelli
5 Riesame
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-126
Modello dei dati
Descrive il mondo dei dati del problema dal punto
di vista dell’analisi
elementi di un modello di dati:
oggetti
attributi:sono
i dati di un oggetto (=descrivono
caratteristiche oggetto e riferimenti ad altri oggetti)
Relazioni: definiscono i collegamenti fra oggetti
(approfondite quando si parlerà di OO)
cardinalità:
numero di occorrenze di oggetti in una
data relazione
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-127
Diagrammi E/R (notazione UML)
Oggetto
attributo 1 (ID)
Oggetto
*
Nome relazione 1..n
attributo 2..
attributo 1 (ID)
attributo 2..
Relazione
Cardinalità
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-128
sistema gestione ordini e conto per
ristoranti (GOCR):gerarchia 1°
mission: progettare un sistema informatico che gestisca gli ordini e il
conto finale per ogni ristorante
Cameriere
Ordini/ conti
Cliente
Sistema Gocr
Stampa conto
cassa
Ordini pietanze
cucina
Analisi scorte
Gestore approvvigionamenti
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-129
GOCR gerarchia 2° (struttura dati)
Pietanza
ID
tipo
Prezzo
Singolo ord.
ID ordine
id pietanza
quantità
Ordine
ID
ID Tavolo
Ora
gestito da
Quantità richiesta
ID Pietanza
ID ingrediente
quantità
ingrediente
ID
quantità disponibile
Tavolo
ID
stato
Cameriere
ID
Nome
conoscete MS Access ?
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-130
Modello in Access
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-131
Diagrammi E/R
Criteri per la progettazione
Eliminazione dei percorsi ciclici
Eliminare la ridondanza dei dati /relazioni
Cercare la max semplicità
Minimo
numero di records e di relazioni
per il problema in esame
Non confondere E/R (senza info di tempo ) con
l’ordine di inserimento dei dati nel database
Navigare le relazioni per valutare coerenza
Valuare i costi di scelta “ attributo o relazione ?”
NO colonne variabili !!!
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-132
GOCR gerarchia 2° (struttura funzionale)
conti
cassa
Gestione conti
Cameriere
Preparazione pietanze
Calcolo conti
Gestione ordini
cucina
Gestione scorte
Gestore scorte
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-133
Diagramma di stato (stato tavoli) :
esercitazione
Convenzione UML
start
transizione
stato
Esercizio:
identificare stati
libero,attesa
ordine, in_consumazione,richiesta
conto
identificare transazioni
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-134
esercizio: segreteria telefonica
Identificare gli stati e le conessioni
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-135
Use cases: Attori
•Qualunque entità esterna interagisce con il sistema,
persone o macchine, può essere modellizzato come un
attore.
•Analizzando gli attori ci concentriamo su come il
sistema sarà utilizzato e non su come sarà progettato o
implementato.
attore
Professore
Utente sistema
generalizzazione
Studente
Cliente
di banca
Operatore
Gestore
BANCOMAT
Sistema paghe
Sistema
informatico
bancario
Operatore
Bancomat
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-136
Casi d’uso (use cases)
Specifica di un comportamento di un sistema
Un caso d’uso è una modo per utilizzare un sistema, o anche
uno schema del suo comportamento.
Descrive una sequenza di azioni, che il sistema compie come
risposta agli stimoli ricevuti da vari attori e che si materializza
in un risultato che serve ad un attore, quello che ha iniziato il
caso.
I casi d’uso non contengono informazioni su come realizzare
il comportamento.
Un caso d’uso descrive un’insieme di sequenze, in cui
ciascun sequenza rappresenta l’interazione di entità esterne
al sistema (attori) con il sistema..
Un caso d’uso rappresenta un requisito funzionale dell’intero
sistema.
É il contenuto base del manuale utente
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-137
Casi d’uso
semplice nome
nome con percorso
Gestione Corso
Gestione Piano Corsi
Circoscrizione::Richiesta di certificato
Casi d’uso e attori:
• Ciascun caso d’uso può coinvolgere più attori.
• Un attore può utilizzare più casi d’uso dello stesso sistema.
• Per ciascun attore, si deve identificare come vuole utilizzare il sistema. Ciascun
modo di utilizzare il sistema diventa un caso d’uso.
Fuori sistema
Cliente della
banca
Sistema
Prelevamento
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-138
Come scrivere un caso d’uso
1. Viene creato un documento di flusso di eventi per ciascun caso d’uso. Il
documento è scritto dal punto di vista di un attore.
2. Viene dettagliato che cosa il sistema deve rilasciare all’attore quando il caso
d’uso viene eseguito.
Tipicamente il documento contiene:
Come inizia e come si termina il caso d’uso
Il flusso normale di eventi
I flussi alternativi di eventi
I flussi straordinari di eventi
Caso d’uso
Nome:
Attori:
Precondizioni:
Descrizione:
Eccezioni:
Postcondizioni:
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-139
Descrizione di un caso d’uso
Caso d’uso: Prelevamento contanti
Quando un cliente inserisce la carta, la macchina legge il codice della carta e
verifica se si tratta di una carta valida. Se non è valida, viene espulsa.
Altrimenti si richiede il codice PIN (5 cifre) al utente.
Quando il codice PIN è stato inserito, la macchina verifica se il codice è corretto
per la carta utilizzata. In caso positivo, la macchina richiede che tipo di
transazione si desidera eseguire.
Quando il cliente seleziona Prelevamento contanti la macchina richiede la
somma. Sono permessi soltanto multipli di Lit. 50.000.
Quando ….
Un caso d’uso descrive un insieme di sequenze di eventi che sono varianti nello
stesso caso. Ciascuna sequenza rappresenta uno scenario. Uno scenario è
rispetto ad un caso d’uso come un‘istanza rispetto alla classe.
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-140
Caso d’uso: telefonata con il telefonino
Caso d’uso
Nome:
telefonata con tel
Attori:
utente
Precondizioni:
acceso
Descrizione:
Eccezioni:
Postcondizioni:
l’utente spinge i bottoni del numero di telefono richiesto
l’utente aspetta un segnale
se libero aspetta ....
...
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-141
Diagrammi di casi d’uso
I diagrammi di casi d’uso sono creati per la modellizzazione della vista relativa al
utillizo di un sistema. Di solito questa vista riguarda la modellizzazione del
ambiente e dei requisiti del comportamento del sistema o del sottosistema.
Richiesta Corso
Studente
Professore
Gestione Piano di Studi
Sistema di tasse
Gestione Piano Semestrale
Operatore
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-142
Identificazione dei casi d’uso
1 . Identificare gli attori.
2 . Intervistare gli utenti tipici.
3 . Riflettere sui modi fondamentalmente differenti in cui ciascun attore utilizza il
sistema.
4 . Raggruppare gli scenari che sono simili e di cui l’utente parla come fossero
variazioni su una unica tema.
5 . Denominare i casi d’uso e fornire una descrizione.
6 . Cercare i frammenti comuni tra i differenti casi d’uso e fattorizzarli in casi
d’uso di base e aggiunti.
7 . Associare ad ogni caso d’uso un valore di priorità.
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-143
Diagramma di eventi
I diagrammi di interazioni descrivono come vengono
realizzati i casi di uso attraverso le interazioni tra oggetti.
Contiene un’insieme di messaggi interscambiati tra un
insieme di oggetti in un certo ambiente (sistema,
sottosistema ecc.) per compiere un certo obiettivo.
Quando due oggetti sono connessi tra loro, c’è un caso
d’interazione.
Un diagramma di sequenze di eventi mostra un’interazione
disposta in ordine cronologico. Mostra gli oggetti
partecipanti all’interazione con le loro linee di vita e i
messaggi scambiati in ordine cronologico.
Messaggio - specifica di una comunicazione tra oggetti, trasporta
un’informazione con l’intento di far scattare un’attività
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-144
Diagrammi di sequenze (=di eventi)
Oggetto
“Linea della vita”
dell’oggetto
rappresenta
l’esistenza
dell’oggetto o
dell’attore
Attivazione
Mostra il periodo
in cui un oggetto
realizza un’azione
etichetta
telefonino
utente
interlocutore
Digita numero
a
{b-a<2sec}
Messaggio
- call
- return
- send
- create
- destroy
b
chiamata
Risposta libera
risponde
Voce inter.
c
{b-a<5sec}
b
Vincolo
Tempo della
transizione
Tempo
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-145
sistema gestione ordini e conto
mission: progettare un sistema informatico che gestisca gli ordini e il conto finale per ogni
ristorante
definire diagramma eventi per ordini e conto finale
Cameriere
Ordini/ conti
Cliente
Sistema Gocr
Stampa conto
cassa
Ordini pietanze
cucina
Analisi scorte
Gestore approvvigionamenti
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-146
Esercizio diagramma di sequenza per
GOCR
Sistema Gocr
Cameriere
cucina
cassa
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-147
Esercizio: organizzo una vacanza
agenzia
amici
Tour operator
IO
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-148
Obiettivi raggiunti
Da ricordare
gli strumenti a disposizione dell’analisi
Per qualsiasi problema essere capaci di :
individuare gli strumenti di analisi necessari
E/R, Use case diagramma di eventi, diagramma funzionale,
diagrammi di stato
individuare quali strumenti non sono necessari
saper modellare la struttura dati (E/R)
saper definire gli stati interni se necessario (diag. di stato)
saper creare un caso d’uso
saper descrivere una interfaccia con gli strumenti di analisi
7/1/03
Copyright Prof. Claudio Becchetti, Università di Roma “La Sapienza”
-149