+ All Categories
Home > Documents > UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere...

UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere...

Date post: 30-Aug-2019
Category:
Upload: others
View: 5 times
Download: 0 times
Share this document with a friend
40
UML UNIFIED MODELING LANGUAGE
Transcript
Page 1: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

UMLUNIFIED MODELING LANGUAGE

Page 2: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Cos’è UMLE’ un linguaggio di progettazione, da non confondere con i linguaggi di programmazione (C, C++, Java,…)

Fornisce una serie di diagrammi per rappresentare ogni tipo di modellazione

Alcuni ambienti di programmazione sono in grado di convertire diagrammi UML in codice e viceversa

Page 3: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Diagrammi UMLdiagramma dei casi d’uso (use case)

diagramma delle classi (class)

diagramma di sequenza (sequence)

diagramma di collaborazione (collaboration)

diagramma di stato (statechart)

diagramma delle attività (activity)

diagramma dei componenti (component)

diagramma di distribuzione (deployment)

Page 4: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Analisi di un problemaDIAGRAMMA DEI CASI D’USO

Page 5: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Definizione dei requisitiRequisiti: insieme delle funzionalità che il sistema deve rendere disponibili agli utenti (non necessariamente persone)

Si definisce ◦ “cosa” fa il sistema

◦ non “come” lo fa

L’insieme dei requisiti descrive il comportamento esterno del sistema (black box)

In UML -> diagramma dei casi d’uso◦ attori

◦ casi d’uso

Page 6: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Un esempio

Page 7: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Tipi di requisitiFunzionali

descrivono le funzionalità che il sistema rende disponibili all◦ ’utente (normalmente interazione utente-sistema)

sono gli unici che compaiono nei diagramma dei casi d◦ ’uso

Non funzionalidescrivono caratteristiche del sistema ◦(per esempio prestazionali)

Tecnologicidescrivono aspetti tecnologici◦(esempio tipo di linguaggio utilizzato)

Page 8: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Priorità dei requisitiMust

◦ indispensabile

Should◦ desiderabile

May◦ opzionale

Page 9: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Diagramma UML dei casi d’usoAttori

◦ Entità che non fanno parte del sistema ma interagiscono con esso

◦ rappresentati da icone con la denominazione del ruolo

Casi d’uso◦ ovali con all’interno la descrizione (verbo/complemento)

Linee◦ di collegamento fra attori e casi d’uso

◦ è possibile attribuire un nome per chiarire il ruolo che svolge l’attore

Page 10: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Relazione fra casi d’usoInclusione

Il caso d◦ ’uso puntato è necessariamente compreso nel caso d’uso da cui parte la freccia

EstensioneIl caso d◦ ’uso puntato è facoltativamente compreso nel caso d’uso da cui parte la freccia

GeneralizzazioneIl caso d◦ ’uso da cui parte la freccia è un caso particolare di quello puntato

Page 11: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Esempio

Page 12: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Rappresentazione alternativa

Page 13: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

IndicazioniIndividuare gli attori

◦ chi usa il sistema?

◦ chi ottiene informazioni dal sistema?

◦ chi fornisce informazioni al sistema?

◦ quali altri sistemi interagiscono con questo?

Individuare i casi d’uso◦ per quale scopo gli attori usano il sistema?

◦ quali funzioni sono richieste?

◦ quali informazioni sono elaborate dal sistema?

Page 14: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Specifica dei casi d’usoNome del Caso d’Uso

Precondizioni◦ condizioni che devono essere verificate prima di eseguire il caso d’uso

Postcondizioni◦ stato in cui il caso d’uso lascia il sistema

Page 15: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Un esempioNegozio di noleggio DVD: informatizzazione della gestione prestiti

Il cliente utilizza il sistema per ricercare e richiedere in prestito un film

Il negoziante utilizza il sistema per registrare i prestiti e i rientri dai prestiti:

richiede i dati del cliente prima di effettuare il prestito◦

verifica la disponibilità del film di cui sono presenti più copie◦

Page 16: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Diagramma dei casi d’uso

Page 17: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Maggior dettaglio

Page 18: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Specifica di un caso d’uso

Page 19: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

OOADOBJECT-ORIENTED ANALYSIS AND DESIGN

Page 20: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Diagramma delle classiRappresenta le classi che compongono il sistema, cioè le collezioni di oggetti, ciascuno con il proprio stato e comportamento (attributi ed operazioni)

Specifica, mediante associazioni, le relazioni fra le classi

Page 21: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Un esempio

Nome

Attributi (proprietà)

Operazioni (metodi)

Page 22: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Classe Metodi e Attributi

SchedaAnagrafica

-nome:String-cognome:String

+getNome():String+setNome(nome:String):void+getCognome():String+setCognome(cognome:String):void

public class SchedaAnagrafica {

private String nome;

private String cognome;

public String getNome() {

return nome;

}

public void setNome(String nome) {

this.nome = nome;

}

public String getCognome() {

return cognome;

}

public void setCognome(String cognome) {

this.cognome = cognome;

}

}

Page 23: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Modificatori

+Public: Libero Accesso

#Protected: Accessibile dalle Sottoclassi

-Private: Accessibile solo all’interno della classe

Static: Accessibili anche senza creare istanze

Page 24: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Ereditarietà

Page 25: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Classi Astratte e Metodi AstrattiUna Classe Astratta contiene metodi privi di implementazione

Per questa ragione non può essere istanziata

Il corsivo permette di distinguere le parti astratte da quelle concrete

Page 26: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

InterfacceInsieme di operazioni che la classe offre ad altre classi

Rappresentata come una classe con specifica <<interface>>

Non ha attributi ma solo la dichiarazione di metodi

Page 27: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Interfaccia: esempiopublic interface Pesabile {

public int getPeso();

}

Page 28: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Ereditarietà multipla

interfaceMediaRecorder

+record:void

VideoRegistratore

LettoreDVD

interfaceMediaPlayer

+play:void+stop:void+pause:void+fastForward:void+rewind:void

RegistratoreDVD

In Java per esempio non è ammessa l’ereditarietà multipla (possibile in C++)

Le interfacce permettono di ovviare a questo problema: una classe può ereditare da una sola classe ma implementare varie interfacce

Page 29: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

AssociazioneUn’Associazione rappresenta la possibilità cheun’istanza ha di inviare un messaggio ad un’altraistanza

In UML viene rappresentata con una freccia, in Java viene implementata tipicamente con un reference

Page 30: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Associazione: esempio

public class Automobile {

private Motore motore;

public void accendi() {

motore.inserisciMiscela();

motore.accendiCandele();

}

}

public class Motore {

public void inserisciMiscela() {…};

public void accendiCandele() {…};

}

Page 31: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

DipendenzaLa Dipendenza indica che un determinato oggetto può, in certe circostanze, chiamare i metodi di un altro pur senza possederne un’istanza

La classe dipendente presuppone l’esistenza della classe da cui dipende.

Non vale il viceversa

In UML la dipendenza viene rappresentata con una freccia tratteggiata. In java tipicamente l’oggetto dipendente riceve un’istanza dell’oggetto da cui dipende come argomento di una chiamata a metodo

Page 32: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

AggregazioneL’Aggregazione rappresenta un’associazione uno a molti

Esprime concetto “è parte di ” (part of), che si ha quando un insieme è relazionato con le sue parti

In UML l’aggregazione viene rappresentato con una freccia con la punta a diamante

Page 33: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Esempio di Aggregazione

Page 34: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

ComposizioneUna Composizione è una relazione uno a molti che implica una forma di esclusività

E’ un caso particolare di aggregazione in cui:

◦ la parte (componente) non può esistere da sola, cioè senza la classe composto

◦ una componente appartiene ad un solo composto

La distruzione dell’oggetto che rappresenta il “tutto” provoca la distruzione a catena delle “parti”

Il diamante si disegna pieno

Page 35: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Esempio di Composizione

Page 36: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi
Page 37: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

aggregazione / composizionePer distinguere l’aggregazione dalla composizione possiamo chiederci che destino devono avere gli oggetti-parte al momento che viene distrutto l’oggetto-tutto

Se non ha senso che gli oggetti-parte sopravvivano all’oggetto-tutto, allora siamo di fronte a una relazione compositiva (la cancellazione del rombo pieno che la rappresenta graficamente richiede la cancellazione del bordo e dell’area interna)

Se ha invece senso che gli oggetti-parte sopravvivano autonomamente all’oggetto-tutto, allora si ha una relazione aggregativa (la cancellazione del rombo vuoto che la rappresenta graficamente avviene cancellando il bordo, ma non richiede la cancellazione dell’area interna)

Page 38: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Esempio

Page 39: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Standard UMLMolteplicità

◦ 1 esattamente una istanza

◦ N esattamente N istanze

◦ 1..* una o più istanze

◦ 0..* zero o più istanze

◦ 1..N una o più istanze (massimo N)

◦ 0..N zero o più istanze (massimo N)

Il nome dell’attributo che realizza un’associazione statica tra classi non deve essere compreso nell’elenco degli attributi, ma deve essere indicato sull’estremita della rappresentazione grafica dell’associazione

Page 40: UML - ..::Alberto Ferrari::.. · os’è UML E’ un linguaggio di progettazione, da non onfondere on i linguaggi di programmazione(C, C++, Java,…) Fornise una serie di diagrammi

Esempio “corretto”


Recommended