Corso di Laurea Specialistica in Ingegneria Informatica
Corso di Ingegneria del Software
Modellazione di sistema
E. TINELLI
A. A. 2008 - 2009
Contenuti
• Approcci di analisi
• Linguaggi di specifica
• Modelli di analisi
–
–
–
–
–
Modelli
Modelli
Modelli
Modelli
Modelli
contestuali
comportamentali
di informazione
a oggetti
strutturati
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
2
Approcci all’Analisi
• Approccio Informale
– nessun modello del sistema viene costruito (uso di un linguaggio
informale)
– la raccolta delle informazioni avviene attraverso una serie di riunioni
tra gli utenti/committenti ed analisti, l’uso di questionari, studio di
documentazione esistente, …
– si procede attraverso la formulazione e il raffinamento di vari
documenti di SRS che sono sottoposti alla convalida nell’ambito di
opportuni meeting
• Approccio basato su modelli concettuali
– produce rappresentazioni del dominio applicativo e del sistema
basate su linguaggi formali o semi-formali inseriti nel documento
• Approccio basato sulla prototipazione
– il problema viene analizzato ed i requisiti sono compresi grazie
all’uso di un prototipo del sistema da parte di cliente ed utenti
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
3
Alcuni approcci basati sui modelli concettuali
• Analisi Strutturata
– basata sull’uso di Data Flow Diagrams (DFD) e Dizionario dei
Dati
– l’analisi del problema viene eseguita usando l’approccio della
decomposizione delle funzioni
– i dati e le relative relazioni sono modellati con linguaggi diversi
(es. modello Entità-Relazioni)
• Analisi Object-Oriented
– l’analisi del problema viene eseguita usando l’approccio della
decomposizione in oggetti (entità/ concetti del dominio del
problema)
– uso di linguaggi di modellazione, es. UML
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
4
Data Flow Diagram (DFD)
• Rappresenta le trasformazioni che i dati subiscono nel loro
flusso all’interno del sistema
• Ogni sistema di elaborazione effettua una trasformazione di
dati di ingresso in dati di uscita
• Permette anche di descrivere processi di business
Un produttore o consumatore di dati
(persone, dispositivi, sensori)
Un elaboratore di dati
(trasforma dati di input in dati di output)
Il flusso dati in un sistema inizia come input e
termina come output
I dati devo essere spesso memorizzati per
elaborazioni successive
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
5
DFD – Esempi
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
6
Dizionario dei dati
• Lista ordinata alfabeticamente dei nomi inclusi nei modelli del sistema
(nomi di entità, di relazioni, di attributi, di servizi, ecc.)
• Possibile struttura di un dizionario:
Nome
Descrizione
Tipo
Data
Composizione Creatore …
• Vantaggio – quando si sviluppa un grande modello di sistema in cui
intervengono molte persone è possibile che vengano usati gli stessi
nomi (strumenti CASE per verificare l’unicità del nome)
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
7
Tecniche di specifica
• Le tecniche si suddividono
– rispetto al grado di formalità della descrizione (del rispettivo
linguaggio). La formalità indica il rigore con cui sono definite
la sintassi e la semantica del linguaggio.
– rispetto a cosa descrivono del sistema (il loro stile) ossia
quale aspetto del sistema è più facile descrivere utilizzando il
linguaggio (comportamento o proprietà)
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
8
Grado di Formalità
• Notazioni informali: le specifiche del sistema sono descritte in
linguaggio naturale. Spesso usato perché è facilmente comprensibile
dal committente ma è una possibile fonte di ambiguità
• Notazioni formali: la specifica è un oggetto formale rappresentata
in una notazione logico-matematica definita in modo rigoroso sul
piano sintattico e semantico. Aumenta le capacità di astrazione ed
elimina le ambiguità. Consente di ragionare su e verificare proprietà,
anche con strumenti (semi)automatici che supportano quel
linguaggio.
• Notazioni semi-formali: immediatamente comprensibili utilizzano
notazioni grafiche accompagnate da descrizioni in linguaggio
naturale; riducono le interpretazioni ambigue; i modelli semiformali
sono allo stato dell’arte i più flessibili ed i più usati
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
9
Stili di specifica
• Stile descrittivo
– definisce le proprietà desiderate del sistema con un elevato grado di
astrazione cioè non descrive una possibile realizzazione del sistema
– E’ più difficile capire come si comporta il sistema descritto
– E’ più facile fare ragionamenti (es. dimostrare formalmente che vale una
certa proprietà, modificare la descrizione perché valga una proprietà)
• Stile operazionale:
– definisce il comportamento desiderato del sistema. Si descrive il
comportamento atteso mediante una macchina astratta suggerendone una
possibile implemementazione
– Pro
• E’ facilmente eseguibile
• E’ facile costruire un prototipo e verificarne l’aderenza alla descrizione (medesimo
comportamento)
– Contro
• Spinge decisamente verso una certa implementazione
• E’ più difficile risalire alle proprietà del sistema e provarle
• Specifica mista
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
10
Stili di specifica e Linguaggi
• Specifica operazionale:
– Diagrammi del Flusso Dati (DFD)
– Macchine a Stati Finiti (FSM) - sono molto usate per verificare formalmente
le proprietà dei sistemi. Una FSM si trova sempre in un solo stato e permette
di specificare soltanto uno stato successivo per una stessa azione.
– Reti di Petri (PN) - formalismo ideato negli anni 60 per modellare sistemi
concorrenti si focalizza sul controllo. Formalmente sono definite da una
quadrupla <P,T,F,W> mentre con token si indica lo stato della rete.
• Specifica descrittiva:
– Diagrammi Entità- Relazione (ER)
– Specifiche basate sulla Logica – es. TRIO linguaggio di specifica sviluppato
fine anni 80 esteso con costrutti orientati agli oggetti (TRIO+) è una logica
temporale del primo ordine, con una nozione metrica di tempo.
• Specifica mista:
• Linguaggio Z - fornisce un modello (una macchina astratta) e poi
descrive, facendo uso di logica, il meccanismo con cui funziona questa
macchina astratta.
• UML
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
11
I linguaggi di specifica - Riepilogo
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
12
Che cosa è un modello?
• Per modello del sistema si intende una rappresentazione
astratta del sistema che facilita la comprensione delle
proprietà del sistema e delle sue caratteristiche di
funzionamento, prima che il sistema venga costruito
• Per descrivere completamente un sistema è necessario
costruire vari modelli che rappresentino il sistema da vari
punti di vista (informazioni, funzioni e comportamento
dinamico)
• Si possono sviluppare diversi modelli per rappresentare il
sistema secondo diverse prospettive (prospettiva esterna,
prospettiva comportamentale, prospettiva strutturale)
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
13
Modello contestuale
• Durante la fase di deduzione ed analisi dei requisiti è bene
fissare i confini del sistema (distinguere cosa è il sistema e
cosa è l’ambiente del sistema)
• Es. per BiblioSYS bisogna decidere se i vari database delle
biblioteche fanno parte del sistema o no
• Un modello contestuale è generalmente costituito da un
semplice modello architetturale di alto livello espresso come
diagramma a blocchi: ogni rettangolo è un sottosistema e le
linee rappresentano le relazioni tra i sottosistemi
• Un modello architetturale descrive l’ambiente di un sistema
e non le relazioni con altri sistemi Æ utilizzare altri modelli
quali modelli di processo o modelli di data-flow
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
14
Modello comportamentale
• È utilizzato per descrivere il comportamento generale del
sistema e ne rappresenta gli aspetti funzionali:
– Data-flow diagram – se si vuole mettere in evidenza come
il sistema elabora i dati secondo una prospettiva funzionale
in cui ogni trasformazione rappresenta una singola funzione
o processo
– Macchina a stati finiti – se si vuole descrivere come il
sistema reagisce ad eventi esterni o interni mostrando gli
stati del sistema e gli eventi che causano la transizione da
uno stato all’altro e non i dati scambiati (usato per sistemi
real-time generalmente gestiti da stimoli esterni)
– Diagrammi UML – per rappresentare gli aspetti funzionali
del sistema (use case diagram, activity diagram, interaction
diagram)
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
15
Modello di informazione
• È utilizzato per definire la forma logica dei dati elaborati dal
sistema (modellazione semantica dei dati)
• Si possono utilizzare i modelli Entità-Relazioni (ER) – gli
schemi logici ottenuti da tali modelli sono naturalmente in
terza forma normale
• Database a oggetti
• Rappresentazione UML di un modello ER – entità sono
classi di oggetti semplificate e gli attributi sono gli attributi
delle classi
• Diagramma delle dipendenze – produce schemi logici in
quinta forma normale
• I modelli di informazione mancano di dettaglio e si
dovrebbero mantenere descrizioni più dettagliate su entità,
attributi e relazioni in un Dizionario dei Dati
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
16
Diagramma delle dipendenze – convenzioni grafiche
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
17
Tipi di bolle
• Target – è la bolla a cui arriva una dipendenza singola
• Chiave finale – è la bolla a cui arriva una dipendenza
multipla e da cui non parte alcuna dipendenza
• Chiave primaria - è la bolla da cui dipende la bolla Target,
se la dipendenza è singola, oppure la bolla Finale, se la
dipendenza è multipla
• Chiave uplink – è la bolla da cui parte una dipendenza
multipla per una chiave primaria o per un’altra uplink
• Bolla doppia, tripla, ecc. – questo tipo di bolla serve a
rappresentare diverse dipendenze tra i dati di uno stesso
diagramma
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
18
Esempio di diagramma delle dipendenze
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
19
Modello a oggetti
• Comunemente utilizzato per l’intero processo di sviluppo
software
• Una classe è un’astrazione da un insieme di oggetti che
identifica gli attributi comuni ed i servizi/operazioni fornite
da ogni oggetto. Gli oggetti sono istanze della classe ossia
entità eseguibili con gli attributi ed i servizi della classe
relativa.
• Il processo di analisi per identificare gli oggetti e le classi è
riconosciuto come una delle più difficili aree dello sviluppo
orientato agli oggetti
• Diversi metodi di analisi orientata agli oggetti furono
proposti negli anni ’90 Æ integrati per produrre un unico
modello: Unified Process
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
20
Modello strutturato
•
•
•
•
È un metodo sistematico di produrre modelli di un sistema che generalmente ha
il proprio insieme di modelli “preferito” (es. UP)
Definiscono un processo da cui derivare i modelli ed un insieme di linee guida
Sono disponibili strumenti CASE che supportano l’editing del modello, la
generazione di codice e report e alcune proprietà di verifica
Punti deboli: non forniscono adeguato supporto per i requisiti NON funzionali,
sono indiscriminati, possono produrre troppa documentazione e troppo
dettagliata
E. TINELLI – Ingegneria del Software A. A. 20082008-2009
21