Università di Bergamo Facoltà di Ingegneria INGEGNERIA DEL SOFTWARE Paolo Salvaneschi B1_2 V2.3 UML Il contenuto del documento è liberamente utilizzabile dagli studenti, per studio personale e per supporto a lezioni universitarie. Ogni altro uso è riservato, e deve essere preventivamente autorizzato dall autore. Sono graditi commenti o suggerimenti per il miglioramento del materiale
INDICE UML Tipi di modellazione Funzione e Struttura - Diagramma delle classi Comportamento Diagrammi di sequenza Comportamento Diagrammi di collaborazione Comportamento Diagrammi di stato Comportamento Diagrammi di attività B1 - Linguaggi Paolo Salvaneschi 2
INDICE Package Implementazione Componenti Implementazione Deployment Casi d uso Processo di sviluppo UML e architetture B1 - Linguaggi Paolo Salvaneschi 3
UML Unified Modelling Language Booch (Rational), Jacobson (Objectory) OOSE Rumbaugh (General Electric) OMT OMG standard Collezione di tecniche di modellazione che coprono con tecniche multiple le viste di un architettura funzione e struttura, comportamento, implementazione Riferimento: Martin Fowler, UML Distilled, Addison Wesley, 2004 B1 - Linguaggi Paolo Salvaneschi 4
Tipi di modellazione Modi di utilizzo Schema di progetto Aspetti fondamentali Interfacce Progetto Completezza Linguaggio di programmazione B1 - Linguaggi Paolo Salvaneschi 5
Tipi di modellazione Viste Le viste sono modellate utilizzando diagrammi che descrivono (parti del) sistema in accordo con le viste I diagrammi devono essere consistenti tra loro Non necessariamente l insieme dei diagrammi fornisce un modello esaustivo del sistema in accordo con tutte le viste B1 - Linguaggi Paolo Salvaneschi 6
Tipi di modellazione Tipi di modellazione Concettuale Concetti del dominio applicativo Specifica Software con classi a livello di interfaccia e non di implementazione Implementazione Classi con gli aspetti di implementazione Progettazione: Concettuale => Specifica => Implementazione B1 - Linguaggi Paolo Salvaneschi 7
Funzione e Struttura - Diagramma delle classi Diagramma delle classi Classe Nome della classe Attributi nome indirizzo Cliente Operazioni (Metodi) livellocredito(): String B1 - Linguaggi Paolo Salvaneschi 8
Funzione e Struttura - Diagramma delle classi Attributi visibilità nome: tipo molteplicità = valoredefault {stringadiproprietà} Visibilità + Public (tra classi) # Protected (all interno delle classi derivate) ~ Package (all interno del package) - Private (nella classe) B1 - Linguaggi Paolo Salvaneschi 9
Funzione e Struttura - Diagramma delle classi molteplicità Quanti oggetti possono entrare a far parte della proprietà [1] esattamente uno [n m] da n a m [0 n] da zero a n [*] da zero a un limite superiore non definito B1 - Linguaggi Paolo Salvaneschi 10
Funzione e Struttura - Diagramma delle classi valoredefault Valore dell attributo in un oggetto appena creato, se non specificato diversamente durante la creazione {stringadiproprietà} Caratteristiche aggiuntive di un attributo Es. {readonly} {ordered} insieme ordinato {nonunique} insieme con elementi duplicati. B1 - Linguaggi Paolo Salvaneschi 11
Funzione e Struttura - Diagramma delle classi Esempi indirizzo + codiceordine: String = "ORD0000/06" - data: Data [0..1] + elementilineaordine: LineaOrdine [*] {ordered} visibilità nome: tipo molteplicità {stringadiproprietà} B1 - Linguaggi Paolo Salvaneschi 12
Funzione e Struttura - Diagramma delle classi Implementazione UML Attributo privato Attributo pubblico Il modello UML è un astrazione di una (o più) implementazione (i) Java Campo private Campo public Campo private e metodi public di accesso (set, get) Attributo multiplo Creazione di una Collezione private + metodi public di gestione B1 - Linguaggi Paolo Salvaneschi 13
Funzione e Struttura - Diagramma delle classi Operazioni visibilità nome (listaparametri): tipodiritorno {stringadiproprietà} listaparametri lista di parametri separata da virgole Parametro: direzione nome:tipo=valoredefault Direzione: in out inout (parametro usato in input, output, entrambi, default in) tipodiritorno tipo del valore restituito, se esiste B1 - Linguaggi Paolo Salvaneschi 14
Funzione e Struttura - Diagramma delle classi Esempi sollecito() contomensile (integer) + saldo (data: Date) : Denaro B1 - Linguaggi Paolo Salvaneschi 15
Funzione e Struttura - Diagramma delle classi Relazione Rappresenta un legame tra oggetti appartenenti a due o più classi Tipi di Relazioni Associazione Generalizzazione (is a) Composizione (part of) B1 - Linguaggi Paolo Salvaneschi 16
Funzione e Struttura - Diagramma delle classi A Nome dell associazione Molteplicità A Molteplicità B B Ruolo A Ruolo B Relazione:Associazione La molteplicità indica il numero di oggetti della classe che possono partecipare all associazione 1 un solo oggetto 0..2 nessun oggetto, un oggetto o 2 oggetti * da 0 a molti oggetti B1 - Linguaggi Paolo Salvaneschi 17
Funzione e Struttura - Diagramma delle classi Relazione data prepagato numero: String [1] prezzo: Denaro spedisci() chiudi() Ordine * 1 Associazione nome indirizzo Cliente livellocredito(): String B1 - Linguaggi Paolo Salvaneschi 18
Funzione e Struttura - Diagramma delle classi Navigabilità data prepagato numero: String prezzo: Denaro spedisci() chiudi() Ordine * 1 nome indirizzo Cliente livellocredito(): String Da un Ordine si può raggiungere il relativo Cliente Ma un Cliente non ha riferimento ai suoi ordini B1 - Linguaggi Paolo Salvaneschi 19
Funzione e Struttura - Diagramma delle classi Navigabilità Navigabilità non definita Unidirezionale Bidirezionale (i due sensi di navigazione devono essere uno l inverso dell altro) B1 - Linguaggi Paolo Salvaneschi 20
Funzione e Struttura - Diagramma delle classi Ordine data prepagato + elementilineaordine: LineaOrdine [*] {ordered} Proprietà Attributi Associazioni Proprietà di un ordine espresse come attributi Ordine 1 * LineaOrdine elementilineaordine {ordered} Strutture semplici Classi importanti Criterio di scelta Proprietà di un ordine espresse come associazioni B1 - Linguaggi Paolo Salvaneschi 21
Funzione e Struttura - Diagramma delle classi Implementazione delle associazioni Una associazione implica che esistano (in fase di implementazione) dei meccanismi (metodi e attributi) che permettono di gestire la relazione Metodo leggicliente nella classe Ordine per sapere quale Cliente ha generato l ordine Aggiornamento della relazione: metodo aggiungiordine nella classe Cliente. B1 - Linguaggi Paolo Salvaneschi 22
Funzione e Struttura - Diagramma delle classi Relazione: Generalizzazione (is a) nome indirizzo Cliente livellocredito(): String Cliente Azienda nomecontatto livellocredito limitecredito Cliente Privato numcartacredito Sollecito() B1 - Linguaggi Paolo Salvaneschi 23
Funzione e Struttura - Diagramma delle classi Generalizzazione Dato un codice che utilizza un oggetto Cliente, si può sostituire Cliente con ClienteAzienda e funziona tutto come prima Eventualmente ClienteAzienda risponderà ad alcuni comandi in modo diverso da Cliente (polimorfismo) B1 - Linguaggi Paolo Salvaneschi 24
Funzione e Struttura - Diagramma delle classi data prepagato : Boolean [1] numero: String [1] prezzo: Denaro spedisci() chiudi() Ordine * 1 nome indirizzo Cliente livellocredito(): String Commenti Se il livello di credito del Cliente associato è basso, allora prepagato deve essere true B1 - Linguaggi Paolo Salvaneschi 25
Funzione e Struttura - Diagramma delle classi Dipendenza La modifica della definizione del fornitore può causare la necessità di un cambiamento del cliente Cliente Fornitore Ordine elementidellalinea[*] > List Attributo implementato con una lista Dipendenza B1 - Linguaggi Paolo Salvaneschi 26
Funzione e Struttura - Diagramma delle classi Vincoli nome indirizzo Cliente livellocredito(): string Cliente Azienda nomecontatto livellocredito limitecredito Sollecito() Vincolo Cliente Privato numcartacredito {livellocredito() = = basso } B1 - Linguaggi Paolo Salvaneschi 27
Funzione e Struttura - Diagramma delle classi Vincoli Vincoli ulteriori rispetto a quelli già descritti nel diagramma (es. molteplicità di associazione) Tra {} Espressi in Linguaggio naturale OCL (Object Constraint Language) B1 - Linguaggi Paolo Salvaneschi 28
Funzione e Struttura - Diagramma delle classi Relazione: Composizione Edificio 1 * Muro Composizione B1 - Linguaggi Paolo Salvaneschi 29
Funzione e Struttura - Diagramma delle classi Composizione (part of) L oggetto che è parte appartiene ad un solo tutto Ci si aspetta che le parti abbiano lo stesso ciclo di vita del tutto (la cancellazione dell oggetto composto si propaga a tutte le sue parti) B1 - Linguaggi Paolo Salvaneschi 30
Funzione e Struttura - Diagramma delle classi Classe astratta In corsivo o con etichetta { abstract} Finestra Windows Metodo con implementazione Finestra Metodo astratto (senza implementazione) inprimopiano() inbackground() Finestra Mac chiudi() inprimopiano() inbackground() inprimopiano() inbackground() B1 - Linguaggi Paolo Salvaneschi 31
Funzione e Struttura - Diagramma delle classi Interfaccia con <<interface>> <<interface>> Collection equals add interfaccia Classe astratta Ordine elementidellalinea[*] Dipendenza (richiede un interfaccia) La classe Ordine contiene una lista di elementidellalinea get private List elementidellalinea = new ArrayList(); > <<interface>> List Implementazione (fornisce un interfaccia) Equals get add get add List ArrayList Metodo astratto Overriding B1 - Linguaggi Paolo Salvaneschi 32
Funzione e Struttura - Diagramma delle classi Interfaccia Notazione più compatta Socket Lollipop ( Ordine elementidellalinea[*] ( List ArrayList Richiede l interfaccia Fornisce l interfaccia In UML1 > Collection B1 - Linguaggi Paolo Salvaneschi 33
Funzione e Struttura - Diagramma delle classi Oggetti e diagrammi di oggetti (fotografia degli oggetti (istanze di classi) che compongono un sistema software in un dato momento) ingegneria: Facoltà Località = Dalmine mariorossi: Docente Oggetto (sottolineato) nome istanza: nome della classe entrambi opzionali mariorossi: Docente Località = Dalmine B1 - Linguaggi Paolo Salvaneschi 34
Comportamento Diagrammi di sequenza Diagrammi di sequenza (es. comportamento di un singolo caso d uso) Una finestra inserisci ordine Un ordine Una linea d ordine Un articolo preparazione() * preparazione() Messaggio Oggetto Cancellazione Ritorno Oggetto attivo Linea di vita dell oggetto B1 - Linguaggi Paolo Salvaneschi 35
Comportamento Diagrammi di sequenza *[per tutte le linee d ordine] preparazione() Iterazione [ha disponib] remove() Condizione [ha disponib] new Chiamata interna Un prodotto Creazione Messaggio asincrono (non blocca l esecuzione del chiamante) B1 - Linguaggi Paolo Salvaneschi 36
Comportamento Diagrammi di collaborazione Diagrammi di collaborazione Una finestra inserisci ordine 1: preparazione() La sequenza è indicata dalla numerazione Un ordine 2: *[per tutte le linee d ordine] preparazione() Una linea d ordine B1 - Linguaggi Paolo Salvaneschi 37
Comportamento Diagrammi di collaborazione Diagrammi di sequenza e di collaborazione Viste parziali della dinamica tra oggetti Diagrammi semplici Adeguati a rappresentare processi non complessi (pochi cicli, poche condizioni) B1 - Linguaggi Paolo Salvaneschi 38
Comportamento Diagrammi di stato Diagrammi di stato Descrivono il comportamento dei singoli oggetti di una classe durante la loro vita Basati sulle Statechart di David Harel Derivati da automi a stati finiti B1 - Linguaggi Paolo Salvaneschi 39
Comportamento Diagrammi di stato Evento[condizione]/azione Azione Diagramma di stato degli oggetti della classe Ordine [non tutti art controllati] /prendi articolo success /prendi primo articolo Controllo do/controlla articolo [tutti art controllati&& tutti disponibili] Condizione Spedizione do/inizia consegna Attività [tutti art controllati&& non tutti disponibili] Articolo ricevuto [tutti gli art disp] consegnato Evento Articolo ricevuto [non tutti art disponibili] Attesa Transizione Stato Consegnato B1 - Linguaggi Paolo Salvaneschi 40
Comportamento Diagrammi di attività Diagrammi di attività Descrivono sequenze di attività che possono coinvolgere più oggetti Modellano condizioni (branch) E processi concorrenti (fork e join) Possono servire a modellare processi di business Parenti delle Reti di Petri B1 - Linguaggi Paolo Salvaneschi 41
Comportamento Diagrammi di attività Ricevi ordine Fork Attività [ordine rapido] Soddisfa ordine [else] Branch Invia conto Spedizione 24h Spediz standard Join Ricevi pagam Merge B1 - Linguaggi Paolo Salvaneschi 42
Package Package I package rappresentano la decomposizione di un modello di grandi dimensioni in gruppi di entità logicamente correlate Tutti i diagrammi UML possono essere decomposti in package; il tipo degli elementi contenuti nel package varia a seconda del modello a cui si applica la decomposizione B1 - Linguaggi Paolo Salvaneschi 43
Package Applicazione memorizza ordine Applicazione mailing list Package Dipendenza B1 - Linguaggi Paolo Salvaneschi 44
Implementazione - componenti Componenti Implementazione nel codice Un componente rappresenta un modulo di codice Non necessariamente coincide con un package (una classe può essere presente in più componenti ma essere definita in un solo package) Dipendenze: i cambiamenti apportati su un componente di ripercuotono su un altro componente B1 - Linguaggi Paolo Salvaneschi 45
Implementazione - componenti Componenti oppure <<component>> Transazioni ( DataBase Componente UML2 B1 - Linguaggi Paolo Salvaneschi 46
Nodo Implementazione - deployment Diagrammi di deployment Implementazione nell hardware Server A UML1 :Transazioni :Database Connessione TCP/IP :Interfaccia Bancomat Client Bancomat B1 - Linguaggi Paolo Salvaneschi 47
Casi d uso Casi d uso Indipendenti dalla modellazione ad oggetti Strumento di analisi dei requisiti B1 - Linguaggi Paolo Salvaneschi 48
Casi d uso Utente della biblioteca Actor1 Prendi a prestito la copia di un libro Estendi il prestito Restituisci la copia di un libro CASO D USO Estendi il prestito Breve descrizione Un utente desidera prolungare il periodo di prestito Attori Utente della biblioteca Precondizioni Il libro è già assegnato all utente Passi principali Controllare che nessuno l abbia prenotato Controllare lo stato dell utente Estendere il prestito Situazioni eccezionali Il libro è già prenotato Postcondizioni Prestito esteso, stato utente aggiornato B1 - Linguaggi Paolo Salvaneschi 49
Casi d uso A B Inclusione (A include B) A1 Generalizzazione B1 - Linguaggi Paolo Salvaneschi 50
Processo di sviluppo Processo di sviluppo Analisi dei requisiti (casi d uso) Estrazione del modello delle classi Dai dati (la classe xx modella gli studenti) Dalle responsabilità ( la classe yy gestisce gli eventi di input) Raffinamento e implementazione Processo iterativo guidato dai casi d uso e centrato attorno all architettura UP (Unified Process) B1 - Linguaggi Paolo Salvaneschi 51
UML e architetture :Transazioni :Database TCP/IP :Interfaccia Bancomat B1 - Linguaggi Paolo Salvaneschi 52
UML e architetture :Transazioni Invocazione MOM :Database TCP/IP :Interfaccia Bancomat B1 - Linguaggi Paolo Salvaneschi 53
UML e architetture UML 1.x by Scott W. Ambler B1 - Linguaggi Paolo Salvaneschi 54
UML e architetture UML 2.x by Scott W. Ambler B1 - Linguaggi Paolo Salvaneschi 55