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