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