Fasi della programmazione - Home di homes.di.unimi.it

Strumenti di modellazione
Gabriella Trucco
Linguaggio di modellazione
 Linguaggio formale che può essere utilizzato per descrivere (modellare) un
sistema
 Il concetto trova applicazione soprattutto nell’ingegneria del software
 Disciplina tecnologica e manageriale che riguarda la produzione sistematica e
la manutenzione dei prodotti software entro tempi e costi preventivati
Il prodotto software
Parlando di software, dobbiamo tener conto di:
 Affidabilità
 Correttezza
 Interoperabilità
 Mantenibilità
 Riusabilità
 Usabilità
 Verificabilità
Classificazione dei linguaggi di
modellazione
Numerosi criteri di classificazione:
 grafici o testuali
 interpretabili o non interpretabili
 oggetto della modellazione
Diagramma di flusso
 Linguaggio di modellazione grafico
 Consente di descrivere in modo schematico:
 Operazioni da compiere
 Sequenza di operazioni
Pseudocodice
 Linguaggio di programmazione fittizio, non direttamente compilabile o
interpretabile da un programma compilatore o interprete, il cui scopo è
quello di rappresentare algoritmi.
 Utilizzato alternativamente al diagramma di flusso e non è soggetto a
molte limitazioni intrinseche di quest'ultimo tipo di rappresentazione.
 Non esiste uno pseudolinguaggio standard e convenzionalmente usato
 Dipendente dal paradigma di programmazione scelto per risolvere un
problema, mentre indipendente dal linguaggio di programmazione,
purché quest'ultimo rispetti il paradigma scelto
Diagrammi E-R
 Modello per la rappresentazione concettuale dei dati ad un alto
livello di astrazione,
 Spesso utilizzato nella prima fase della progettazione di una base di
dati in cui è necessario tradurre le informazioni risultanti dall'analisi di
un determinato dominio in uno schema concettuale.
 Il modello E-R si basa su un insieme di concetti molto vicini alla realtà
di interesse:
 Infatti, pur essendo orientato alla progettazione di basi di dati, il modello
prescinde dai criteri specifici di organizzazione fisica dei dati persistenti
nei sistemi informatici.
 Tecniche per la traduzione dei concetti ad alto livello (meglio
comprensibili) in concetti di più basso livello tipici dei vari modelli logici
(ad esempio il modello relazionale) implementati nei diversi DBMS
esistenti.
 Uno degli approcci più solidi per la modellazione di applicativi in
ambito informatico;
 spesso usato anche al di fuori del contesto della progettazione di
database, ed è stato utilizzato come modello di riferimento per
numerose altre notazioni per la modellazione.
 Al modello E-R è ispirato UML.
Entità
 Rappresentano classi di oggetti (fatti, cose, persone, ...) che hanno
proprietà comuni ed esistenza autonoma ai fini dell'applicazione di
interesse.
 Un'occorrenza di un'entità è un oggetto o istanza della classe che l'entità
rappresenta
 In uno schema, ogni entità ha un nome che la identifica univocamente, e
viene rappresentata graficamente tramite un rettangolo con il nome
dell'entità al suo interno.
Relazioni (o associazioni)
 Rappresentano un legame tra due o più entità.
 Grado dell'associazione: un buono schema E-R è caratterizzato da una
prevalenza di associazioni con grado due.
 È possibile legare un'entità con se stessa (attraverso un'associazione ad
anello), nonché legare le stesse entità con più associazioni.
 Rappresentata graficamente da un rombo contenente il nome
dell'associazione. Il nome può essere un verbo in modo da fornire una
direzione di lettura, oppure può essere un sostantivo in modo da non dare
una direzione di lettura
Attributi
 Le entità e le associazioni possono essere descritte usando una serie di
attributi.
 Tutti gli oggetti della stessa classe entità (associazione) hanno gli stessi
attributi: questo è ciò che si intende quando si parla di oggetti simili.
 La scelta degli attributi riflette il livello di dettaglio con il quale vogliamo
rappresentare le informazioni sulle entità e sulle associazioni.
 Per ciascuna classe entità o associazione si definisce una chiave.
 Si rappresenta con un'ellisse al cui interno viene specificato il nome
dell'attributo o anche semplicemente, nel caso di diagrammi complessi,
indicandone solo il nome, eventualmente in corrispondenza.
 In caso di chiave primaria, il nome dell'attributo viene sottolineato.
UML
Unified Modeling Language: linguaggio di modellazione unificato
 linguaggio di modellazione e specifica basato sul paradigma objectoriented.
 Usato per
 modellazione di sistemi software: descrivere il dominio applicativo di un sistema
software e/o il comportamento e la struttura del sistema stesso
 descrivere sistemi hardware,
 Descrivere strutture organizzative aziendali,
 Descrivere processi di business.
UML
 insieme di viste che rappresentano diversi aspetti della cosa modellata
(funzionamento, struttura, comportamento …)
 sintassi e regole di interpretazione; non si tratta quindi di una metodologia
di progettazione e per questo motivo può essere adottato con diverse
metodologie o in ambiti diversi da quello informatico.
UML
 La notazione UML è semi-grafica; un modello UML è costituito da una collezione
organizzata di diagrammi correlati, costruiti componendo elementi grafici (con
significato formalmente definito), elementi testuali formali, ed elementi di testo
libero. Ha una semantica molto precisa e un grande potere descrittivo.
 Il linguaggio è stato progettato con l'obiettivo esplicito di facilitare il supporto
software alla costruzione di modelli e l'integrazione di questo supporto con gli
ambienti integrati di sviluppo.
 Molti ambienti di sviluppo comprendono strumenti di modellazione in UML e
forniscono meccanismi automatici di traduzione parziale dei diagrammi UML in
codice. Viceversa, molti ambienti software dedicati alla modellazione in UML
consentono di generare codice in diversi linguaggi.
 UML è un linguaggio di modellazione general purpose, che fornisce concetti e
strumenti applicabili in tutti i contesti.
 UML fornisce un meccanismo standard che consente di estendere il linguaggio.
(profilo UML)
UML
Descrizione di un sistema secondo tre aspetti principali:
 modello funzionale: rappresenta il sistema dal punto di vista dell'utente,
 diagrammi dei casi d'uso
 modello a oggetti (object model) rappresenta la struttura e sottostruttura
del sistema utilizzando i concetti object-oriented di classe, oggetto, le
relazioni fra classi e fra oggetti.
 diagrammi delle classi, diagrammi degli oggetti, e diagrammi di deployment
 modello dinamico: rappresenta il comportamento degli oggetti del
sistema,
 diagrammi di sequenza, diagrammi delle attività, diagrammi degli stati
Modello UML
 Un modello UML è costituito da:
 Viste: mostrano i diversi aspetti del sistema per mezzo di un insieme di diagrammi.
 Diagrammi: permettono di descrivere graficamente le viste logiche.
 Elementi del modello: concetti che permettono di realizzare vari diagrammi (es.
attori, classi, packages, oggetti, e così via).
Viste
 Lo strato più esterno dell’UML è costituito dalle seguenti viste:
 Vista dei casi d'uso
 Vista di progettazione
 Vista di implementazione
 Vista dei processi
 Vista di sviluppo
UML: un esempio
Supponiamo di dover realizzare il software per una biblioteca, quindi dovremo
progettare il suo sistema informativo che dovrà gestire una serie di informazioni
relativi alle risorse ( libri, utenti, operatori, … ) e gestire una serie di
movimentazione delle risorse ( prestiti, arrivo di nuovi libri, dismissioni, … ).
Esempio: fase di analisi
 Analista: deve raccogliere più informazioni possibili sul sistema della
biblioteca
 Risultato: casi d’uso del sistema informativo della biblioteca
Esempio: Casi d’uso del sistema
informativo della biblioteca
Esempio: fase di design (o progettazione)
 fase successiva all'analisi, in cui tutta la documentazione prodotta
dall'analista viene presa in carico dai DESIGNER.
 distinguere le varie parti del sistema, in modo da creare una sorta di
blocchi che interagiscono tra loro
 LOGICA DEL PROGETTO, ovvero come viene gestita la biblioteca a livello
macroscopico ( Libri, Utenti, Prestiti );
 GRAFICA, ovvero l'interfaccia front-end per il bibliotecario (ed eventualmente
per l'utente che guarda i libri da casa );
 PERSISTENZA, ovvero come sono organizzati i dati della biblioteca;
Esempio: diagramma di collaborazione
Esempio: diagramma di sequenza
Esempio: Diagramma di classe
Per ogni oggetto del sistema vengono elencati i metodi che dovranno essere
esposti per permettere l'interazione con gli altri elementi del sistema
Esempio