Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Angelo Di Iorio
(dal materiale di Gian Piero Favini e Sara Zuppiroli)
A.A. 2010-2011
Modellare
L come Linguaggio
Chiedi prestito
Cliente Banca
U come Unificato
Object-oriented
Meta-Object Facility
Semplificando...
«instanceOf» «instanceOf»
model *
Person Car
car
M1 eFigure
M2 a7.6confronto
- An example of metamodeling; note that not all instance-of relationships are sh
(usando un diagramma UML).
The instances, which are sometimes referred to as “run-time” instances, that are created at M0
Ingegneria del Software () Introduzione a UML A.A. 2010-2011 19 / 42
should not be confused with instances of the metaclass InstanceSpecification that are also def
metamodel. An instance of an InstanceSpecification is defined in a model at the same level as
illustrates, as is depicted in Figure 7.7, where the instance specification Mike is an illustration
instance of class Person.
UML Infrastructure
metamodel Specification,
Class v2.0 InstanceSpecification
«instanceOf» «instanceOf»
Structure Behavior
Class diagram Use Case diagram
Object diagram Activity diagram
Package diagram* State Machine diagram
Composite Structure diagram* Sequence diagram
Component diagram Communication diagram
Deployment diagram Interaction Overview diagram*
Timing diagram*
Diagram
Structure Behavior
Diagram Diagram
Com posite
Deploym ent Package Interaction
Structure
Diagram Diagram Diagram
Diagram
Interaction
Sequence
Overview
Diagram
Diagram
Structure diagrams show the static structure of the objects in a system. That is, they depict those elements in a
specification that are irrespective of time. The elements in a structure diagram represent the meaningful concepts of an
application, and may include abstract, real-world and implementation concepts. For example, a structure diagram for an
airline reservation system might include classifiers that represent seat assignment algorithms, tickets, and a credit
Ingegneria delservice.
authorization Software ()
Structure Introduzione
diagrams do not show the detailsaofUML A.A. 2010-2011
dynamic behavior, which are illustrated by behavioral 23 / 42
diagrams. However, they may show relationships to the behaviors of the classifiers exhibited in the structure diagrams.
Behavior diagrams show the dynamic behavior of the objects in a system, including their methods, collaborations,
activities, and state histories. The dynamic behavior of a system can be described as a series of changes to the system over
Entità UML
time. Behavior diagrams can be further classified into several other kinds as illustrated in Figure A.5.
Please note that this taxonomy provides a logical organization for the various major kinds of diagrams. However, it does
not preclude mixing different kinds of diagram types, as one might do when one combines structural and behavioral
elements (e.g., showing a state machine nested inside an internal structure). Consequently, the boundaries between the
various kinds of diagram types are not strictly enforced.
The constructs contained in each of the thirteen UML diagrams is described in the Superstructure chapters as indicated
below.
� Strutturali
• Component Diagram - “Components” on page 147
• Composite Structure Diagram - “Composite Structures” on page 167
• � Comportamentali
Deployment diagram - “Deployments” on page 201
� Informative
714 UML Superstructure Specification, v2.1
� Raggruppamento e contenimento
Person
-age : int
TaskRunner Visualizza ordine
+getAge() : int
Transaction
<<interface>>
Thermometer
buyer seller
+readTemperature() : double
Person Person
utility.conversion utility.conversion
CelsiusFahrenheit
OS
Java VM CelsiusFahrenheit
1: saluta
: Person : Person
2: rispondi
Entità informative
Uno degli scopi principali della modellazione è la leggibilità:
un diagramma non leggibile e informativo serve a poco...
Le note UML non hanno effetti sul modello ma migliorano la
leggibilità.
Le!note!possono!essere!ancorate!a
qualunque!elemento!in!qualunque!
diagramma.
Person
-age : int
+getAge() : int
Questa!è!una!classe,!un!insieme!di!oggetti.!Le!classi
sono!classificatori.!In!UML,!la!maggior!parte!dei
classificatori!possono!essere!rappresentati!tramite
rettangoli!(deriva!da!OMT).
Association e generalization
Un’associazione descrive l’esistenza di un nesso tra le
istanze di classificatori (things) e ha varie caratteristiche,
alcune opzionali.
Company Employee
1 *
Mammal Vertebrate
graphics
Renderer
Le frecce in UML
Questa!dipendenza!tra!Vector!e!Math!ha!lo!stereotipo
«call»;!significa!che!operazioni!di!Vector!invocano
operazioni!di!Math.
Vector <<utility>>
Math
<<call>>
Lo!stereotipo!«utility»!indica!che!questa!è!una!classe
utility,!cioè!una!collezione!di!variabili!globali!e
operazioni!statiche!usate!da!altre!parti!del!sistema.
OCL (1)
Person
-age : int
+birthdayHappens()
post: age=age@pre+1
Alcuni tool
ArgoUML: http://argouml.tigris.org/
Papyrus: http://eclipse.org/papyrus
Umbrello: http://uml.sourceforge.net/
Eclipse: www.eclipse.org/uml2/
...
Angelo Di Iorio
(dal materiale del Prof. Ciancarini, Dott. Favini e Dott.ssa Zuppiroli)
A.A. 2010-2011
I casi d’uso
Caso d’uso
Cliente:
vorrei vendere i manufatti che realizzo...
non vorrei solo un mercato locale...
mi piacerebbe che gli acquirenti potessero visionare un
catalogo da cui scegliere...
vorrei gestire gli ordini da qualunque posto perché viaggio
molto...
Che cosa viene fatto? Da chi?
Cliente:
vorrei avere la possibilità di creare un catalogo dei miei
manufatti...
vorrei un catalogo liberamente consultabile da chiunque...
vorrei organizzare i manufatti raccogliendoli in categorie...
vorrei che gli interessati all’acquisto potessero inviarmi un
ordine, che io provvederò ad evadere previa una qualche
forma di registrazione...
Estrarre i requisiti
Consulta catalogo
Consulta catalogo
Organizza catalogo
Acquista prodotto
Consulta catalogo
Cliente
2 proceduraLancio 0..1
Lancia missile nucleare
esecutore lancio
Ufficiale
Impiegato Persona
<<include>>
Effettua pagamento
<<extend>>
<<include>>
Cliente
Acquista prodotto
Genera ordine
<<include>>
<<include>>
Resp. ordini Evadi ordine
Immetti dati pagamento
Impiegato
Modifica catalogo
Admin
Leche
funzionalità
il caso d’uso di un sistema
si possa eseguirevengono
� sequenza degli eventi: i passi che compongono il caso
suddivise in transazioni (casi d’uso) utili per
d’uso
ciascuna delle classi di utilizzatori (attori)
� postcondizioni: condizioni che devono essere vere quando
il caso d’uso termina l’esecuzione
UML 66
Esempio specificaEsempio
caso d’uso
Nome del caso d'uso Caso d'uso: PagamentoIVA
Identificatore univoco ID: UC1
Gli attori interessati dal caso Attori:
d'uso Tempo, Fisco
Lo stato del sistema prima che il Precondizioni:
caso d'uso possa iniziare
1. Si è concluso un trimestre fiscale
Nome: Contratto
Precondizione: l’impiegato è connesso
Flusso principale degli eventi
� L’impiegato inserisce il nome cliente e numero di conto
� Controlla la loro validità
� Inserisce il numero di azioni da comprare e ID azienda
quotata
� Il sistema determina il prezzo
� Il sistema controlla il limite
� Il sistema manda l’ordine in Borsa
� L’impiegato memorizza il numero di conferma
ID: UC2
Attori: Cliente
Precondizioni:
1. Il contenuto del carrello è visibile
Postcondizioni:
1. Il contenuto del carrello è stato aggiornato
Sequenza alternativa 1:
1. In qualunque momento il Cliente
può abbandonare la pagina del carrello
Postcondizioni:
UML 72
Assenza di precondizioni
Mancata connessione alla rappresentazione grafica
Nomi diversi per le stesse entità nelle rappresentazioni
grafica e testuale
Flusso eccezionale: mancanza di indicazioni nel flusso
principale del punto in cui va controllata la condizione
eccezionale
Riassumendo
Esercizi
!"#$%&'()*"&(+,-"'(./0(
1$*2#3&*4#(+#4(53'67(5*'4'(8&*9)*3&9&:(
Esempio:
gestione conto corrente
• Il sistema usa uno sportello Bancomat
• L’utente deve poter depositare assegni
• L’utente deve poter ritirare contante
• L’utente deve poter chiedere il saldo
• L’utente deve poter ottenere una ricevuta se lo
richiede. La ricevuta riporta il tipo di transazione,la
data, il numero di conto, la somma, ed il nuovo saldo
• Dopo ciascuna transazione viene visualizzato il
nuovo saldo
Soluzione
<<extend>>
(print receipt) withdraw with
withdraw receipt
<<include>>
check <<include>>
Verify user
balance
User
<<include>>
Soluzione
Use case: deposit
Precondition: User has selected deposit option
Main flow:
• Include (Verify user)
• Prompt user for amount of deposit
• Open slot
• Get check
• (print receipt)
• Print (balance + deposited amount)
Soluzione
Use case: check balance
Precondition: User has selected balance
option
Main flow:
• Include (Verify user)
• Print balance
Soluzione
Use case: verify user
Precondition: none
Main flow:
• User enters ID card
• User enters PIN number
• System checks validity of card and number
Exceptional flow:
• If combination is not valid, reject user
Soluzione
Use case: withdraw with receipt
Precondition: User has selected withdraw
option and print receipt option
…
I diagrammi di struttura
Angelo Di Iorio
(dal materiale del Prof. Ciancarini, Dott. Favini e Dott.ssa Zuppiroli)
A.A. 2010-2011
Structure diagrams show the static structure of the objects in a system. That is, they depict those elements in a
specification that are irrespective of time. The elements in a structure diagram represent the meaningful concepts of an
application, and may include abstract, real-world and implementation concepts. For example, a structure diagram for an
airline reservation system might include classifiers that represent seat assignment algorithms, tickets, and a credit
Ingegneria del Software
authorization ()
service. Structure diagrams do notIshow
diagrammi di struttura
the details A.A. 2010-2011
of dynamic behavior, which are illustrated by behavioral 2 / 106
diagrams. However, they may show relationships to the behaviors of the classifiers exhibited in the structure diagrams.
Behavior diagrams show the dynamic behavior of the objects in a system, including their methods, collaborations,
activities, and state histories. The dynamic behavior of a system can be described as a series of changes to the system over
time. Behavior diagrams can be further classified into several other kinds as illustrated in Figure A.5.
The constructs contained in each of the thirteen UML diagrams is described in the Superstructure chapters as indicated
below.
Analisi
Classi e oggetti
Analisi nome-verbo
Esempio CRC
Classi di analisi:
� contengono tipicamente solo pochi attributi e operazioni
(candidati)
� a volte basta indicare solo il nome della classe
� pochi ornamenti, specifica incompleta (omessi tipi, signature
delle operazioni, etc.)
Classi di progettazione:
� modellano una classe del linguaggio di programmazione
scelto
� specifica completa (implementabile)
age = 10
Person
-age : int
: Person
+getAge() : int
age = 10
Person
-age : int
: Person
+getAge() : int
Person
Jim : Person
-age : int
<<instanceOf>>
+getAge() : int age = 10
Classe: notazione
Stereotipo
Nome
<<entity>>
ContoBancario
Sottosezione
-numero : String
attributi -correntista : String
-saldo : double = 0.0
+create(numero : String, correntista : String)
+deposito(somma : double)
Sottosezione +preleva(somma : double)
operazioni +getNumero() : String
+getCorrentista() : String
+getSaldo() : double
Visibilità
Operazione!con!ambito!di!classe
Tipi di visibilità
public $x;
public $y;
String name;
...
}
}
Ingegneria del Software () I diagrammi di struttura A.A. 2010-2011 33 / 106
Ambito
Ambito di istanza:
� gli oggetti hanno una propria copia degli attributi, quindi
oggetti diversi possono avere diversi valori negli attributi
� Le operazioni agiscono su oggetti specifici
Ambito di classe:
� gli oggetti di una stessa classe condividono lo stesso valore
per un attributo
� le operazioni non operano solo su una particolare istanza
della classe, ma alla classe stessa. Ad esempio: costruttori
e distruttori di classe.
� rappresentato sottolineando l’attributo/operazione
� analogo alla parola chiave static in Java
Ambito e accessibilità
s.loadIntegers(1, 1);
s.getSomma(); // da stampare o
// salvare in una variable!
s.loadIntegers(8, 8);
s.getSomma();
s2.loadIntegers(5, 5);
s2.getSomma();
Template di classe
Binding esplicito
Vector<int,100>
Mammal Vertebrate
Examples
Generalizzazione: stili grafici
Figure()7.41
Ingegneria del Software - Examples of generalizations
I diagrammi di struttura between classes
A.A. 2010-2011 45 / 106
Package PowerTypes
Generalizzazione: da UML al codice (Java)
public class Shape {
...
Examples
}
public classShape
Polygon extends Shape {
Separate target style
...
}
public classEllipse
Polygon EllipseSpline
extends Shape {
...
}
Shared target style
Shape
In Figure 7.42, the Person class can be specialized as either a Female Person or a Male Person. Furthermore, Person’s can
be specialized as an Employee. Here, Female Person or a Male Person of Person constitute one GeneralizationSet and
Manager another. This illustration employs the notation forms depicted in the diagram above.
Insiemi di generalizzazione
Person Person
employment
gender status
employment
gender gender status
Female Employee
Female Male Person
Employee
Person Person
Male
Person
Person Person
employment
gender
status
Shape
-origin
-width
-height
+draw()
+getArea() : int
Rectangle Circle
+draw() +draw()
+getArea() : int +getArea() : int
Esercizio su Polimorfismo
Disegnare il diagramma delle classi della seguente specifica:
In un ristorante è possibile richiedere i piatti elencati nel
menù.
I piatti vengono tutti preparati ma ciascuno ha un modo
diverso per essere cucinato.
I piatti presenti nel menù sono:
� Pasta condita con uno dei sughi disponibili
� Sughi: bolognese, siciliana, matriciana
� Secondi piatti: frittata, caprese, carne alla griglia
� Contorni: verdure grigliate, impanate, fritte
� Dolci: mascarpone, torta di pinoli, torta della nonna
I piatti vengono preparati da un cuoco.
Child
Associazione
employer employee
Company Person
1 *
employs
employer employee
Company Person
1 *
employs
Nome: opzionale.
Triangolo direzionale: opzionale. Specifica la direzione in
cui leggere l’associazione (aumenta la leggibilità).
Ruoli: opzionali a ciascun estremo.
Molteplicità: opzionale a ciascun estremo.
Generalizations between associations are best drawn using a different colo
associations.
Ingegneria del Software () I diagrammi di struttura A.A. 2010-2011 54 / 106
Examples
Figure 7.19 shows a binary association from Player to Year named Played
Associazioni n-arie
* ! PlayedInYear
Year
year
season *
Team * * Player
team goalie
SiFigure
usa un 7.19 - Binary
rombo perand ternary associations
congiungere i vari estremi; in questo
caso non abbiamo coppie ma triple di elementi.
IlThe solid triangle
triangolo indicates
direzionale the usare
si può order ofsolo
reading:
nelle Player PlayedInYear Year
relazioni
between Team, Year, and Player with ends named team, season, and goali
binarie.
Molti ritengonoexample
The following che le relazioni non binarie
shows association endssiano
with superflue.
various adornments.
Ingegneria del Software () I diagrammi di struttura A.A. 2010-2011 55 / 106
a b
Molteplicità
employer employee
Company Person
1 *
employs
Associazioni riflessive
parent
0..1
child
File Directory
* 1 *
parent
0..1
child
File Directory
* 1 *
pic01.jpg : File
Navigabilità (1)
playedInYear
Player Year
player year
a b
A B
1..4 2..5
c d
C D
1..4 2..5
e f
E F
1..4 2..5
g h
G H
1..4 2..5
i j
I J
1..4 2..5
Notazione pratica
• The fifth pair IJper la navigabilità
shows a binary association with one end navigable and the other having unspecified nav
Figure 7.22 shows that the attribute notation can be used for an association end owned by a class, becaus
end owned by a class is also an attribute. This notation may be used in conjunction with the line-arrow n
it perfectly clear that the attribute is also an association end.
• ClassA::name
Un esempio completois an attribute with type String.
• ClassA::shape is an attribute with type Rectangle.
• ClassA::size is a public attribute of type Integer with
• ClassA::area is a derived attribute with type Integer. I
• ClassA::height is an attribute of type Integer with a d
• ClassA::width is an attribute of type Integer.
• ClassB::id is an attribute that redefines ClassA::name
• ClassB::shape is an attribute that redefines ClassA::sh
• ClassB::height is an attribute that redefines ClassA::h
ClassA default of 5.
• ClassB::width is a derived attribute that redefines Cla
Ingegneria del Software () I diagrammi di struttura A.A. 2010-2011 62 / 106
size
Window Area
1
52
Ingegneria del Software () I diagrammi di struttura A.A. 2010-2011 63 / 106
The solid triangle indicates the order of reading: Player PlayedInYear Year. The figu
between Team, Year, and Player with ends named team, season, and goalie respecti
Vincoli di associazione
The following example shows association ends with various adornments.
a b
A B
0..1 *
{ordered}
d
C D
1 0..1
Examples {subsets b}
Possono comparire
The followingtra parentesi
adornments graffe
are shown vicino
on the all’estremo
four association diFigure 7.20.
ends in
una relazione.• Stack
Names a, b, and d on three of the ends.
Specificano informazioni
• Multiplicities
size: Integer
aggiuntive sull’insieme di istanze
{size >= 0}0..1 on a, * on b, 1 on the unnamed end, and 0..1 on d.
che partecipano alla relazione.
push() • Specification of ordering on b.
Utili perpop()
catturare vincoli del problema durante l’analisi.
• Subsetting on d. For an instance of class C, the collection d is a subset of the coll
constraint:
Ingegneria del Software () I diagrammi di struttura A.A. 2010-2011 64 / 106
Il vincolo xor
40
Person
Account
{xor}
Corporation
Figure 7.32vincolo
Un particolare - {xor} constraint
che esprime una scelta mutualmente
esclusiva.
Un conto è associato a una persona fisica oppure a una
persona giuridica.
Altri vincoli
0..1 boss
employee employer
Person Company
* 0..1
{self.boss->isEmpty() or
self.employer = self.boss.employer}
56 UML Sup
Job
salary
Description
Trasformarle in una
No additional forma implementabile significa
attributes
reificarle.
Associations
Si spezza l’associazione in due e siSpecifies
• ownedParameter: Parameter[*]
trasforma in una
the ordered set of formal parameters o
normale classe. The parameter direction can be ‘in,’ ‘inout,’ ‘ou
output, or return parameters. Subsets Namespac
• raisedException:*Type[*] * References the Types representing exceptions tha
Company Person
of this operation.
Constraints Job
No additional constraints
1 *
Additional Operations * 1
Company Job Person
[1] The query isDistinguishableFrom() determines whether two BehavioralFeatures may
specifies that they have to have different signatures.
Ingegneria del Software () I diagrammi di struttura A.A. 2010-2011 69 / 106
44 U
Aggregazione e composizione
Aggregazione
0..1 *
ComputerCluster Computer
Composizione
1 1..*
House Room
Window
1 1
1
+scrollbar
2 +title 1
1 +body
Slider
Header Panel
Aggregazione
Figure 7.24 -eComposite
composizione possono
aggregation is essere
depictedcombinate
as a black con
diamond
le altre notazioni per le associazioni.
Changes from previous UML
42
:A
:A :A
Un esempio completo
Analisi 1 1
A B
<<refine>>
Progettazione 1 1
A B
Implementata come:
B è un campo di A (in un linguaggio come C++)
A ha un puntatore/reference a B (es. Java)
B non ha nulla di A
Reificare: molti a 1
A è il tutto, B la parte che può appartenere a molti A: una
possibilità.
Analisi * 1
A B
<<refine>>
Progettazione * 1
A B
Implementata come:
A ha un puntatore/reference a B (non può possedere B in
maniera esclusiva)
B non ha nulla di A
Ingegneria del Software () I diagrammi di struttura A.A. 2010-2011 81 / 106
Reificare: molti a 1
A è il tutto con molte parti B, che possiede in maniera esclusiva:
una possibilità.
Analisi 1 *
A B
<<refine>>
Progettazione 1 *
A B
Implementata come:
A ha un array o lista di B fornita come primitiva dal
linguaggio
A usa una struttura di supporto (come Vector in Java)
B non ha nulla di A
Ingegneria del Software () I diagrammi di struttura A.A. 2010-2011 82 / 106
Analisi 1 *
A B
<<refine>>
Progettazione 1 1 1 *
A Vector B
Job
<<refine>>
Progettazione
1 * * 1
Company Job Person
Una!persona!ha!un
solo!impego!all'interno!
della!stessa!azienda.
Dipendenza
«dependencyName»
NamedElement-1 NamedElement-2
Una
Figurerelazione semantica
7.35 - Notation tra elementi
for a dependency (inelements
between two particolare classi e
loro operazioni).
Examples
Due ruoli: supplier (fornitore) client (cliente); entrambi
In the example below, the Car class has a dependency on the Vehicle Type class. In this case, th
possono essere insiemi di elementi.
instantiate dependency, where the Car class is an instance of the Vehicle Type class.
La freccia va dal cliente verso il fornitore, lo stereotipo
indica il tipo della dipendenza.
Una dipendenza significa che il cliente richiede il fornitore
«instantiate»
propria specifica o implementazione. Car
per laCarFactory
Il cliente dipende strutturalmente o semanticamente dal
fornitore,
Figure 7.36 -eAnse la specifica
example del fornitore
of an instantiate cambia, può
dependency
cambiare anche quella del cliente.
7.3.13 DirectedRelationship (from Kernel)
Ingegneria del Software () I diagrammi di struttura A.A. 2010-2011 85 / 106
Uso:
� «use»: il cliente richiede il fornitore per la sua
implementazione completa
� «call»: il cliente invoca il fornitore (che è un’operazione o la
classe che la contiene)
� «responsibility»: un obbligo o contratto che il cliente ha
verso il fornitore
� «send»: il cliente (solitamente un’operazione) manda un
messaggio al fornitore
� «instantiate»: il cliente può creare istanze del fornitore
SimpleClass2
<<use>>
Class1 Class2 <<refine>>
Class3 <<call>>
+foo()
1 0..*
ContoBancario Transazione
1
<<derive>> 1
saldo
Quantità
1
Realizzazione di un’interfaccia
<<interface>>
Apple Edible
+eat()
interface Edible {
public void eat();
}
@Override
public void eat() {
}
Business
Owner Employee
Generalizations
Associations
• / redefinedElement: RedefinableElement[*] The redefinable elemen
a derived union.
Entità di raggruppamento.
• / redefinitionContext: Classifier[*] References the contexts
Raggruppa elementi logicamente coesi tra loro. a derived union.
Fornisce un namespace all’interno del quale ogni elemento
Constraints dal suo nome.
è definito univocamente
[1] At least one of the redefinition contexts of the redefining element must be
redefinition contexts for each redefined element.
Ingegneria del Software () self.redefinedElement->forAll(e
I diagrammi di struttura | self.isRedefinitionContextValid(e))
A.A. 2010-2011 97 / 106
Elements that become available for use in an importing package through a package import or an element impo
a distinct color or be dimmed to indicate that they cannot be modified.
Notazioni
Examples
package
There are three representations of the same package Types in Figure 7.63. The one on the left just shows the
without revealing any of its members. The middle one shows some of the members within the borders of the p
the one to the right shows some of the members using the alternative membership notation.
Types
Types Types
Integer
Time
Shape Point
Modi diversi
7.3.38 di rappresentare
PackageableElement unKernel)
(from package e il suo contenuto.
A packageable element indicates a named element that may be owned directly by a package.
Generalizations
Club
-RegoleIscrizione
+RegoleClub <<import>> DettagliSocio
+Benefici
+Socio
+AssociazioneClub
Club
+AssociazioneClub
+Benefici
+RegoleClub
+DettagliSocio
+DettagliSocio::Socio
-RegoleIscrizione
Package di analisi
Esercizi
Esercizio Treno