Unified Modeling Language - disi.unitn.itdisi.unitn.it/~picco/teaching/rovereto/UML1.pdf · UML:...
Transcript of Unified Modeling Language - disi.unitn.itdisi.unitn.it/~picco/teaching/rovereto/UML1.pdf · UML:...
Unified Modeling LanguageUnified Modeling Language
Davide Davide FreyFrey, Gian Pietro Picco, Gian Pietro Picco
Lucidi tratti dal materiale di Luciano BaresiLucidi tratti dal materiale di Luciano Baresi
PolitecnicoPolitecnicodi Milanodi Milano
IntroduzioneIntroduzione
UML: Unified Modeling LanguageUML: Unified Modeling Language
Modellazione visualeModellazione visuale
Computer SystemComputer System
““Un Un modello cattura modello cattura le le parti parti essenziali essenziali di un di un sistemasistema””
Dr. James James RumbaughRumbaugh
Business ProcessBusiness Process
richiestarichiesta
ordineordine
consegnaconsegna
UML: Unified Modeling LanguageUML: Unified Modeling Language
Perché UMLPerché UML
UML è il linguaggio visuale standard (OMG)UML è il linguaggio visuale standard (OMG)per definire, progettare, realizzare eper definire, progettare, realizzare edocumentare i sistemi software ad oggettidocumentare i sistemi software ad oggetti
UML riunisce molte proposte esistentiUML riunisce molte proposte esistenti((BoochBooch, , Rumbaugh Rumbaugh e e JacobsonJacobson))
UML copre lUML copre l’’intero processo di produzioneintero processo di produzione UML è sponsorizzato dalle maggiori industrieUML è sponsorizzato dalle maggiori industrie
produttrici di softwareproduttrici di software
UML: Unified Modeling LanguageUML: Unified Modeling Language
Perché UML (Perché UML (contcont.).)
UML riunisce aspetti dellUML riunisce aspetti dell’’ingegneria delingegneria delsoftware, delle basi di dati e dellasoftware, delle basi di dati e dellaprogettazione di sistemiprogettazione di sistemi
UML è indipendente da qualsiasi linguaggioUML è indipendente da qualsiasi linguaggiodi programmazionedi programmazione
UML è utilizzabile in domini applicativiUML è utilizzabile in domini applicatividiversi e per progetti di diverse dimensionidiversi e per progetti di diverse dimensioni
UML è estendibile per modellare meglio leUML è estendibile per modellare meglio lediverse realtàdiverse realtà
UML: Unified Modeling LanguageUML: Unified Modeling Language
Contributi principaliContributi principaliHarelHarel
StatechartsStatechartsMeyerMeyer
Before and after Before and after conditions conditions
Gamma, et alGamma, et al
Frameworks and patterns,Frameworks and patterns,
HP FusionHP Fusion
Operation descriptions and Operation descriptions and message numberingmessage numbering
EmbleyEmbley
Singleton classes andSingleton classes andhigh-level viewhigh-level view
Wirfs-BrockWirfs-Brock
ResponsibilitiesResponsibilities
OdellOdell
ClassificationClassification
Shaler Shaler - Mellor- Mellor
Object lifecyclesObject lifecycles
RumbaughRumbaugh
OMTOMT
BoochBooch
Booch methodBooch method
JacobsonJacobson
OOSEOOSE
UML: Unified Modeling LanguageUML: Unified Modeling Language
PartnerPartner
AonixAonix Colorado State UniversityColorado State University Computer AssociatesComputer Associates Concept FiveConcept Five Data AccessData Access EDSEDS Enea Enea DataData Hewlett-PackardHewlett-Packard IBMIBM I-LogixI-Logix InLine InLine SoftwareSoftware IntellicorpIntellicorp Kabira Kabira TechnologiesTechnologies Klasse ObjectenKlasse Objecten Lockheed MartinLockheed Martin
MicrosoftMicrosoft ObjecTimeObjecTime OracleOracle PtechPtech OAO Technology SolutionsOAO Technology Solutions Rational SoftwareRational Software ReichReich SAPSAP SofteamSofteam Sterling SoftwareSterling Software SunSun TaskonTaskon TelelogicTelelogic UnisysUnisys ……
UML: Unified Modeling LanguageUML: Unified Modeling Language
MModel-basedodel-based
I I modelli rappresentano il linguaggio dei progettistimodelli rappresentano il linguaggio dei progettisti I I modelli rappresentano il sistema da costruire modelli rappresentano il sistema da costruire o o costruitocostruito I I modelli sono modelli sono un un veicolo veicolo di di comunicazionecomunicazione I I modelli descrivono modelli descrivono in in modo modo ““visualevisuale”” il sistema dail sistema da
costruirecostruire
I I modelli sono uno strumento modelli sono uno strumento per per gestire gestire lalacomplessitàcomplessità
I I modelli consentono modelli consentono di di analizzare caratteristicheanalizzare caratteristicheparticolari particolari del del sistemasistema
UML: Unified Modeling LanguageUML: Unified Modeling Language
Design Design ViewView
4+1 Views4+1 Views
ImplementationImplementation ViewView
ProcessProcess ViewView DeploymentDeployment ViewView
Use CaseUse CaseViewView
P. Kruchten, “The 4+1 View Model of Software Architecture”.IEEE Software 12 (6), pages 42-50, november 1995
LogicalLogical PhysicalPhysical
UML: Unified Modeling LanguageUML: Unified Modeling Language
Diagrammi Diagrammi UMLUML
Viste staticheViste statiche Use Case DiagramsUse Case Diagrams Class DiagramsClass Diagrams Object DiagramsObject Diagrams Component DiagramsComponent Diagrams Deployment DiagramsDeployment Diagrams
Viste dinamicheViste dinamiche Sequence DiagramsSequence Diagrams Collaboration DiagramsCollaboration Diagrams Statechart DiagramsStatechart Diagrams Activity DiagramsActivity Diagrams
Use Use case case diagramdiagram
UML: Unified Modeling LanguageUML: Unified Modeling Language
RequisitiRequisiti
Il primo passo di Il primo passo di ““qualsiasiqualsiasi”” processo di processo disviluppo è la definizione dei requisitisviluppo è la definizione dei requisiti Definizione del Business ModelDefinizione del Business Model Solitamente informale e in linguaggio naturaleSolitamente informale e in linguaggio naturale
Jacobson Jacobson (OOSE) propone una notazione(OOSE) propone una notazioneparticolare che è confluita in UMLparticolare che è confluita in UML
UseUse Case Case DiagramDiagram
UML: Unified Modeling LanguageUML: Unified Modeling Language
Use Use casecase Descrive una particolare funzionalità fornita dal sistema (Descrive una particolare funzionalità fornita dal sistema (=un=un
particolare uso) o da una sua parte particolare uso) o da una sua parte dal punto di vistadal punto di vistadelldell’’utilizzatore del sistemautilizzatore del sistema
Mostra Mostra le le entitentitàà coinvolte nella fornitura della funzionalit coinvolte nella fornitura della funzionalitàà((attori attori e e sistemasistema)) senza entrare nel dettaglio della loro struttura internasenza entrare nel dettaglio della loro struttura interna
DescriveDescrive Il sistemaIl sistema LL’’ambienteambiente Le relazioni fra sistema e ambienteLe relazioni fra sistema e ambiente
Diversi livelli di dettaglioDiversi livelli di dettaglio Nei casi piNei casi piùù semplici semplici, , gli gli use case use case sono identificati parlandosono identificati parlando
con con ll’’uutente tente e e discutendo delldiscutendo dell’’uutilizzo che si intende tilizzo che si intende fare delfare delsistemasistema
UML: Unified Modeling LanguageUML: Unified Modeling Language
Elementi graficiElementi grafici
Actor:Actor: è qualcuno (utente) o qualcosa è qualcuno (utente) o qualcosa(sistemi esterni, hardware) che:(sistemi esterni, hardware) che: Controlla le funzionalitàControlla le funzionalità Fornisce input o riceve output dal sistemaFornisce input o riceve output dal sistema Attori diversi possono in pratica essereAttori diversi possono in pratica essere
rappresentati dalla medesima entità realerappresentati dalla medesima entità reale
Use Case:Use Case: è un è un’’unità funzionale parteunità funzionale partedel sistemadel sistema
UML: Unified Modeling LanguageUML: Unified Modeling Language
Relazioni principaliRelazioni principali
AssociationsAssociations identificano relazioni sempliciidentificano relazioni semplicitra attori e casitra attori e casi
Include Include fattorizza proprietà comuni. Èfattorizza proprietà comuni. Èsimile allsimile all’’innesto di procedure alla Pascalinnesto di procedure alla Pascal..A includes BA includes B
CommunicateCommunicate indica scambio dati tra due indica scambio dati tra dueuse caseuse case
ExtendExtend identifica comportamenti similiidentifica comportamenti simili(varianti)(varianti). A . A può essere visto come unapuò essere visto come unavariante divariante di B B
GeneralizationGeneralization si applica sia ad attori chesi applica sia ad attori chea use casea use case. A . A eredita il comportamento dieredita il comportamento diB. A B. A può essere sostituito ad ognipuò essere sostituito ad ognioccorrenza di Boccorrenza di B
<<include>>A B
<<extend>>A B
A B
<<communicate>>A B
UML: Unified Modeling LanguageUML: Unified Modeling Language
Registrazione corsiRegistrazione corsi
AllAll’’inizio dellinizio dell’’anno accademico, lanno accademico, l’’ufficioufficioamministrativo dellamministrativo dell’’università fornisce agli studentiuniversità fornisce agli studentila lista di corsi disponibili, attraverso un sistema dila lista di corsi disponibili, attraverso un sistema diregistrazione.registrazione.
Il sistema deve consentire agli studenti diIl sistema deve consentire agli studenti diselezionare quattro corsi fra quelli disponibili. Inselezionare quattro corsi fra quelli disponibili. Inaggiunta ogni studente deve indicare dueaggiunta ogni studente deve indicare duealternative.alternative.
Nessun corso può avere più di 10 studenti. Corsi conNessun corso può avere più di 10 studenti. Corsi conmeno di 3 studenti vengono cancellatimeno di 3 studenti vengono cancellatiautomaticamente.automaticamente.
UML: Unified Modeling LanguageUML: Unified Modeling Language
Registrazione corsi (Registrazione corsi (contcont.).)
I professori devono poter accedere al sistema perI professori devono poter accedere al sistema perindicare i corsi in cui vorrebbero insegnare e perindicare i corsi in cui vorrebbero insegnare e pervedere gli studenti iscritti ai loro corsi.vedere gli studenti iscritti ai loro corsi.
Il processo di registrazione dura 3 giorni.Il processo di registrazione dura 3 giorni. Il primo giorno è riservato agli studenti del primo anno.Il primo giorno è riservato agli studenti del primo anno. Il secondo giorno è riservato agli altri studenti.Il secondo giorno è riservato agli altri studenti. Durante il terzo giorno si risolvono eventuali conflitti.Durante il terzo giorno si risolvono eventuali conflitti.
Finito il processo di registrazione, le informazioniFinito il processo di registrazione, le informazionirelative ad un studente sono inviate allrelative ad un studente sono inviate all’’ufficioufficiocontabile per determinare le tasse da pagare.contabile per determinare le tasse da pagare.
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsempioEsempio(Registrazione corsi)(Registrazione corsi)
Cambio organizzazione corso
Richiesta studenti registrati
Professore
Selezione corso
Gestione professori
Gestione studenti
Archivio globale
Gestione corsi
Richiesta corsi
Cambio corsi
Studente
Scelta corsiAmministrazione
UML: Unified Modeling LanguageUML: Unified Modeling Language
ContestoContesto(Ufficio postale)(Ufficio postale)
Il primo Use CaseIl primo Use Casediagram definisce ildiagram definisce ilcontesto del modellocontesto del modello
Scelte diverse possonoScelte diverse possonoimporreimporre Attori diversiAttori diversi Use case diversiUse case diversi
Cliente
Distr. posta
Sportello
Postino
Impiegato
UML: Unified Modeling LanguageUML: Unified Modeling Language
Extend/generalizationExtend/generalization
GeneralizationGeneralization indica che uno indica che uno use use case è simile acase è simile aun altro ma è più specifico.un altro ma è più specifico.
Si descrive lo Si descrive lo use use case più specifico per differenzecase più specifico per differenzerispetto a quello più generalerispetto a quello più generale
Extend Extend e e generalizationgeneralization sono leggermentesono leggermentedifferentidifferenti
EsempiEsempi Pagamento prodotto e pagamento con carta di creditoPagamento prodotto e pagamento con carta di credito Stampa catalogo prodotti e pubblicazione catalogo suStampa catalogo prodotti e pubblicazione catalogo su
InternetInternet Calcola prezzo prodotto e calcola prezzo scontatoCalcola prezzo prodotto e calcola prezzo scontato
UML: Unified Modeling LanguageUML: Unified Modeling Language
IncludeInclude
IncludeInclude fattorizza fattorizza attività ricorrenti e condiviseattività ricorrenti e condivise Analogie conAnalogie con
Chiamata a sottoprocedura in un linguaggio diChiamata a sottoprocedura in un linguaggio diprogrammazioneprogrammazione
Scomposizione gerarchica in DFD (Si perde la condivisione)Scomposizione gerarchica in DFD (Si perde la condivisione)
EsempiEsempi La richiesta del numero di CC per ogni operazione bancariaLa richiesta del numero di CC per ogni operazione bancaria La consultazione del catalogo di una bibliotecaLa consultazione del catalogo di una biblioteca Le funzioni matematiche più complesse (sin, cos, log, ecc.)Le funzioni matematiche più complesse (sin, cos, log, ecc.)
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsempioEsempio
Utente
Impiegato
Gestione prestito
Ordine Ordine Internet
Gestione dati
<<include>>
Gestione disponibilitàGestione pagamento
<<include>>
<<include>>
<<include>>
<<extend>>
UML: Unified Modeling LanguageUML: Unified Modeling Language
Use Use casecase(Processo)(Processo)
Il processo di definizione degli Il processo di definizione degli use use case è iterativocase è iterativo Si inizia identificando il comportamento più sempliciSi inizia identificando il comportamento più semplici Si descrivono i comportamenti alternativi e più complessiSi descrivono i comportamenti alternativi e più complessi
Quando smettere?Quando smettere? Un buon livello di dettaglio facilità tutte le attivitàUn buon livello di dettaglio facilità tutte le attività
successivesuccessive Troppi dettagliTroppi dettagli
Complicherebbero inutilmente la descrizioneComplicherebbero inutilmente la descrizione Introdurrebbero prematuramente scelte progettualiIntrodurrebbero prematuramente scelte progettuali Precluderebbero la visione dPrecluderebbero la visione d’’insiemeinsieme
UML: Unified Modeling LanguageUML: Unified Modeling Language
DocumentazioneDocumentazione
Per ogni Per ogni use use case:case: TitoloTitolo: Computo tasse: Computo tasse AutoriAutori: : Pluto Pluto e Topolinoe Topolino DescrizioneDescrizione: Quando le iscrizioni di uno studente: Quando le iscrizioni di uno studente
sono state accettate si inviano le informazionisono state accettate si inviano le informazioniallall’’ufficio contabileufficio contabile
AttoriAttori: Ufficio contabile: Ufficio contabile Pre-condizioniPre-condizioni: Studente registrato: Studente registrato Post-condizioniPost-condizioni: Non identificate: Non identificate ScenariScenari:.....:.....
UML: Unified Modeling LanguageUML: Unified Modeling Language
Oltre lOltre l’’analisi dei requisitianalisi dei requisiti
Convalida del sistemaConvalida del sistema Gli Gli use use case possono essere utilizzati per ricavarecase possono essere utilizzati per ricavare
i dati di test con cui convalidare il sistemai dati di test con cui convalidare il sistema Ogni Ogni use use case rappresenta una funzionalità checase rappresenta una funzionalità che
andrebbeandrebbe verificata verificata
Gestione del progettoGestione del progetto Gli Gli use use case propongono una case propongono una ““nuovanuova”” unità di unità di
misuramisura Gli Gli use use case potrebbero essere utili percase potrebbero essere utili per
Organizzare il progettoOrganizzare il progetto Stimare la complessità (sorta di Stimare la complessità (sorta di function pointfunction point))
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsercizioEsercizio
Si definisca un semplice Si definisca un semplice Use Use Case Case DiagramDiagramper modellare il sistema informativo di unaper modellare il sistema informativo di unaimpresa edile. Il sistema deve gestire gliimpresa edile. Il sistema deve gestire glioperai, i cantieri, il parco mezzi e i clientioperai, i cantieri, il parco mezzi e i clienti
UML: Unified Modeling LanguageUML: Unified Modeling Language
ScenariScenari
Uno scenario è unUno scenario è un’’istanza di uno istanza di uno use use casecase È una È una ””esecuzioneesecuzione”” particolare dello particolare dello use use casecase Rappresenta il comportamento (le azioni e gli eventi) delRappresenta il comportamento (le azioni e gli eventi) del
sistema nel caso particolare consideratosistema nel caso particolare considerato
Gli scenari definiscono requisiti di più basso livelloGli scenari definiscono requisiti di più basso livellorispetto agli rispetto agli use use casecase
Gli scenari sono solitamente definiti in linguaggioGli scenari sono solitamente definiti in linguaggionaturalenaturale
UML propone una notazione particolareUML propone una notazione particolare
Interaction Interaction DiagramDiagram
UML: Unified Modeling LanguageUML: Unified Modeling Language
Scenari (Scenari (contcont.).)
Ogni Ogni use use case dovrebbe essere corredato da uncase dovrebbe essere corredato da uninsieme di scenariinsieme di scenari Scenari principali (più possibile)Scenari principali (più possibile)
Tutto funziona correttamenteTutto funziona correttamente
Scenari secondari (pochi e significativi)Scenari secondari (pochi e significativi) Eccezioni (eventuali problemi o malfunzionamenti)Eccezioni (eventuali problemi o malfunzionamenti)
Quanti scenari si devono definire?Quanti scenari si devono definire? Servono tanti scenari quanti sono quelli necessari perServono tanti scenari quanti sono quelli necessari per
capire il corretto funzionamento del sistema e le eccezionicapire il corretto funzionamento del sistema e le eccezioniche si ritengono significative durante lche si ritengono significative durante l’’analisianalisi
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsempioEsempio(Selezione corsi)(Selezione corsi)
Pippo sceglie Pippo sceglie i i corsicorsi: : informaticainformatica, , fisicafisica, , analisi analisi e e disegnodisegno Come Come corsi alternativi scegliecorsi alternativi sceglie: : fotografia fotografia e e giornalismogiornalismo I I corsi scelti sono immessi nel sistema corsi scelti sono immessi nel sistema di di registrazioneregistrazione Lo Lo studente viene aggiunto ai primi studente viene aggiunto ai primi 3 3 corsi principalicorsi principali Il quarto Il quarto corso corso non è non è disponibiledisponibile IF la prima IF la prima alternativa alternativa è è disponibile disponibile THENTHEN Lo Lo studente viene aggiunto studente viene aggiunto al al corsocorso ELSIF la ELSIF la seconda alternativa seconda alternativa è è disponible disponible THENTHEN Lo Lo studente viene aggiunto studente viene aggiunto al al corsocorso ELSE ELSE notifica allo studentenotifica allo studente IF not IF not notifica notifica THENTHEN Si crea Si crea la la cartella corsi dello studentecartella corsi dello studente Si mandano Si mandano le le informazioni allinformazioni all’’ufficio contabileufficio contabile
Interaction Interaction diagramdiagram
UML: Unified Modeling LanguageUML: Unified Modeling Language
Interaction Interaction diagramdiagram
Descrivono il comportamento dinamico di un gruppoDescrivono il comportamento dinamico di un gruppodi oggetti che di oggetti che ““interagisconointeragiscono”” per risolvere un per risolvere unproblemaproblema
Sono utilizzati per Sono utilizzati per ““formalizzareformalizzare”” gli scenari in gli scenari interminitermini Entità (oggetti)Entità (oggetti) Messaggi scambiati (metodi)Messaggi scambiati (metodi)
UML propone due diversi tipi di Interaction UML propone due diversi tipi di Interaction DiagramDiagram Sequence DiagramSequence Diagram Collaboration DiagramCollaboration Diagram
UML: Unified Modeling LanguageUML: Unified Modeling Language
Sequence diagramSequence diagram
Evidenziano la sequenza temporale delleEvidenziano la sequenza temporale delleazioniazioni
Non si vedono le associazioni tra oggettiNon si vedono le associazioni tra oggetti Usabili in due forme diverseUsabili in due forme diverse
La forma generica: tutte le sequenze (esecuzioni)La forma generica: tutte le sequenze (esecuzioni)possibilipossibili
La forma dLa forma d’’istanza: una sequenza particolareistanza: una sequenza particolare(consistente con quella generica)(consistente con quella generica)
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsempioEsempio((Caso specificoCaso specifico))
Pippo Selettore Informatica
Scegli informatica
Disponibile?
Aggiungi PippoConferma registrazione
Candidato perdiventare attore
Candidati perdiventare classi
Candidati per diventaremetodi
Le risposte restano impliciteLe risposte restano implicite
UML: Unified Modeling LanguageUML: Unified Modeling Language
OggettiOggetti
luciano : Persona
luciano: Persona
nome = “Luciano”cognome = “Baresi”dataNascita = “18/03/67”luogoNascita = Italia
luciano :Persona
luciano
luciano :Persona
[allegro]
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsempioEsempio((Raffinamento diagramma precedenteRaffinamento diagramma precedente))
Pippo
:Selettore Informatica: Corso
seleziona(informatica)
disponibile()
aggiungi(pippo)conferma(informatica)
{transient}
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsempioEsempio((Chiamata telefonicaChiamata telefonica))
Chiamante Mezzo Chiamato
inizio
disponibile
digita n.
...
instrada
aspetta suona
risposta
fine attesa fine attesa
ab
c
d
d’
{b-a < 1 sec.}{c-b < 10 sec.}
{d’-d < 5 sec.}
Il ritardo è dato dal mezzodi comunicazione
La conversazione inizia
UML: Unified Modeling LanguageUML: Unified Modeling Language
Sequence diagramSequence diagram((Alternative e creazione oggettiAlternative e creazione oggetti))
Obj1:C1op()
doit(z)
Obj3:C3
Obj2:C2
Obj4:C4
[x>=0] foo(x)
[x<0] bar(x)
doit(w)
more()
UML: Unified Modeling LanguageUML: Unified Modeling Language
MessagMessaggigi
SSincroniincroni Il sorgente deve aspettareIl sorgente deve aspettare
il destinatarioil destinatario Chiamate di procedure oChiamate di procedure o
chiamate innestatechiamate innestate Flusso di controllo piattoFlusso di controllo piatto
AsAsincroniincroni Il sorgente continua senzaIl sorgente continua senza
aspettare il destinatarioaspettare il destinatario Utile per sistemiUtile per sistemi
concorrenticoncorrenti(con oggetti attivi(con oggetti attivi))
CCondizioniondizioni
IteraIterazionizioni
RRisposteisposte(return)(return)
SendSend CreateCreate DestroyDestroy
[x>0] foo()
* foo()
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsercizioEsercizio
Si definisca un semplice Si definisca un semplice Sequence DiagramSequence Diagramper modellare il prelievo di denaro,per modellare il prelievo di denaro,supponiamo 200 Euro, da uno sportellosupponiamo 200 Euro, da uno sportelloBancomatBancomat
UML: Unified Modeling LanguageUML: Unified Modeling Language
Collaboration diagramCollaboration diagram
Simili a Simili a sequence diagramsequence diagram, ma, ma Evidenziano le interazioni tra le partiEvidenziano le interazioni tra le parti Maggior attenzione allo scambio messaggiMaggior attenzione allo scambio messaggi Adatti perAdatti per
Concorrenza e Concorrenza e threadthread Invocazioni innestateInvocazioni innestate Interazioni Interazioni ““sofisticatesofisticate””
Il tempo non è associato ad una dimensione precisaIl tempo non è associato ad una dimensione precisa Le sequenze si scoprono usando strane numerazioniLe sequenze si scoprono usando strane numerazioni Sequenze alternative possono essere modellate sullo stessoSequenze alternative possono essere modellate sullo stesso
diagrammadiagramma
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsempioEsempio((Precedenza tra corsiPrecedenza tra corsi))
:Selettore :Corso
1: precedenza(softEng)
true
2: precedenza(softEng)
Multioggetto
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsempioEsempio:Corso
:Selettore
info:InfoAmministrative
f1:CartellaStudente
Pippo
1: seleziona 4 corsi
2: seleziona Informatica3: seleziona Matematica4: seleziona Chimica
5: seleziona Storia
6: seleziona altri 2 corsi
7: seleziona Ing. Software8: seleziona Italiano
9: sottometti corsi
10: * corso Disponibile?11: * aggiungi Pippo
12: crea CartellaStudente
13: crea InfoAmministrative
UML: Unified Modeling LanguageUML: Unified Modeling Language
Qualcosa in più sui Qualcosa in più sui linklink
I I link link possono esserepossono essere InvocazioniInvocazioni <<create>><<create>> <<<<destroydestroy>>>> <<<<becomebecome>>>> <<copy>><<copy>>
Le estremità possonoLe estremità possonoessere dichiarateessere dichiarate <<<<associationassociation>>>> <<self>><<self>> <<<<globalglobal>>>> <<<<locallocal>>>> <<<<parameterparameter>>>>
P:Person[Candidate]
P:Person[Employee]
:Department
5:hire()
6: <<become>>
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsempioEsempio
Gunnar Overgaard, “A Formal Approach to Collaborations in the UnifiedModeling Language”. In Proceedings of UML 99
:Company :Store
:Store
:Order:Delivery
:Delivery
processOrder(o)
delivery
6: add(d)
<<local>>
d 4: delivery(o, s)
3: s := search(pNr, a)
store
<<local>>
s
<<parameter>>
o
5: deliver(d)
1: pNr := getpNr()2: a:= getAmount()
UML: Unified Modeling LanguageUML: Unified Modeling Language
Oggetti attiviOggetti attivi
B1: start(job)
job
: FactoryManager
: Robot
: FactoryJobManager
CurrentJob: TransferJob
: FactoryScheduler
1: start(job)
: Forno
A2,B2: completed(job)
A1: start(job)A2: completed(job)B2: completed(job)
{local} jobLink
Scope
Flussi di controllo
UML: Unified Modeling LanguageUML: Unified Modeling Language
Chiamate innestateChiamate innestate : OrderManager
: Order
Computer: Item SComputer: Stock
: Delivery : ManOrder
1.1.2.1: newManOrder()
1: prepare()
1.1*: prepare()
1.1.3: [check() == true] new
1.1.1: check()
1.1.2: [check() == true] remove()
1.1.2.2: new
Utile per evidenziareUtile per evidenziarechiamate innestatechiamate innestate
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsercizioEsercizio
Si definisca un semplice Si definisca un semplice CollaborationCollaborationDiagram Diagram per modellare lper modellare l’’acquisto di unacquisto di unbiglietto per assistere ad una proiezione inbiglietto per assistere ad una proiezione incinema cinema multisalamultisala
UML: Unified Modeling LanguageUML: Unified Modeling Language
RiassumendoRiassumendo
Definizione delle funzionalità principaliDefinizione delle funzionalità principali Use Use case case diagramdiagram
Uso di scenari per andare in profonditàUso di scenari per andare in profondità Liste puntateListe puntate Interaction Interaction diagramdiagram
Definizione manuale o assistita da strumentiDefinizione manuale o assistita da strumenti
CLASSICLASSI
Unified Modeling LanguageUnified Modeling LanguageClass and Class and Object diagramsObject diagrams
Davide Davide FreyFrey
Lucidi tratti dal materiale di Luciano BaresiLucidi tratti dal materiale di Luciano Baresi
PolitecnicoPolitecnicodi Milanodi Milano
Class Class DiagramDiagram
UML: Unified Modeling LanguageUML: Unified Modeling Language
Class Class DiagramDiagram
Definiscono la visione statica del sistemaDefiniscono la visione statica del sistema classiclassi relazioni tra classirelazioni tra classi
associazione (uso)associazione (uso) generalizzazione (ereditarietà)generalizzazione (ereditarietà) aggregazione (contenimento)aggregazione (contenimento)
È forse il modello più importante perchéÈ forse il modello più importante perchédefinisce gli elementi base del sistemadefinisce gli elementi base del sistema
UML: Unified Modeling LanguageUML: Unified Modeling Language
ClassiClassi
In UML una classe è composta da tre partiIn UML una classe è composta da tre parti nomenome attributi (lo stato)attributi (lo stato) metodi (il comportamento)metodi (il comportamento)
Professore
nomecognome
create()delete()
Professore
create()delete()
Professore
nomecognome
Professore
UML: Unified Modeling LanguageUML: Unified Modeling Language
AttributiAttributi
Un attributo è una caratteristica della classeUn attributo è una caratteristica della classe Gli attributi non hanno identitàGli attributi non hanno identità Ogni attributo deve essere definito in modoOgni attributo deve essere definito in modo
precisopreciso Attributi buoniAttributi buoni per Studente per Studente
Nome, Cognome, Nome, Cognome, ……
Attributi cattiviAttributi cattivi CorsiSceltiCorsiScelti
UML: Unified Modeling LanguageUML: Unified Modeling Language
AttributiAttributi(Identità)(Identità)
Gli oggetti avranno una loro identità, non bisognaGli oggetti avranno una loro identità, non bisognaaggiungerlaaggiungerla
Codice fiscale?Codice fiscale?
nomecognome
Professore
età
id nomecognome
Professore
età
UML: Unified Modeling LanguageUML: Unified Modeling Language
Attributi (Attributi (contcont.).)
Nomi che non sono diventati classi duranteNomi che non sono diventati classi durantela definizione delle classi stessela definizione delle classi stesse
Conoscenza del dominio applicativoConoscenza del dominio applicativo Persona (ambito bancario)Persona (ambito bancario)
nome, cognome, nome, cognome, codiceFiscalecodiceFiscale, , numeroContonumeroConto
Persona (ambito medico)Persona (ambito medico) nome, cognome, allergie, peso, altezzanome, cognome, allergie, peso, altezza
UML: Unified Modeling LanguageUML: Unified Modeling Language
Attributi DerivatiAttributi Derivati
Calcolati, non memorizzatiCalcolati, non memorizzati Si usano quando i loro valori varianoSi usano quando i loro valori variano
frequentemente e la correttezza (precisione)frequentemente e la correttezza (precisione)del valore è importantedel valore è importante
Il valore viene calcolato in base ai valori diIl valore viene calcolato in base ai valori dialtri attributialtri attributi età = f(età = f(dataDiNascitadataDiNascita, oggi), oggi) area, perimetro = f(vertici)area, perimetro = f(vertici)
Persona
dataNascita : Date/ età : int
{età = oggi - dataNascita}
UML: Unified Modeling LanguageUML: Unified Modeling Language
ClassClassii(Visibilit(Visibilitàà ee m molteplicitàolteplicità))
Professore
nome: String
cognome: String
età: integer
visualizza()
selezionaCorso()
ProfessoreProfessore
+ nome: String
# cognome: String
- età: integer = 0
+visualizza()
- selezionaCorso()
45
classe astrattamolteplicità
public
protected
private
scope
valore iniziale
MethodMethod ::= [ ::= [visibilityvisibility] ] namename [( [(parameterparameter list)] [: return list)] [: return typetype]]
ParameterParameter ::= [direction] ::= [direction] namename: : typetype [= [= default-valuedefault-value]]
UML: Unified Modeling LanguageUML: Unified Modeling Language
Diverse definizioniDiverse definizioni
Alla CRCAlla CRC(primi passi dello sviluppo)(primi passi dello sviluppo)
Molto dettagliataMolto dettagliata(progettazione avanzata)(progettazione avanzata)
<<constructor>>
new()
New(p: Policy)
<<process>>
Process(o: Order)
....
<<query>>
isSuspect(o: Order)
isFraudulent(o: Order)
<<helper>>
validateOrder(o: Order)
FraudAgent
Responsibilities
--determine the risk ofa customer order
-- handle customer-specific criteria forfraud
FraudAgent
UML: Unified Modeling LanguageUML: Unified Modeling Language
TemplateClass
Instantiated Class<base>
Base
Classi ParametricheClassi Parametriche((TemplateTemplate))
Modo sintetico per definire un insieme diModo sintetico per definire un insieme diclassi classi ““similisimili”” Le singole classi si ottengono Le singole classi si ottengono istanziando istanziando ii
parametri contenuti nella definizioneparametri contenuti nella definizione
<<bind>>
UML: Unified Modeling LanguageUML: Unified Modeling Language
Vettore
T,k:integer
Vettore<char,3>
Pentagono
<<bind>> <Vertice,5>
IstanziazioneIstanziazione
Rappresentazioni alternative
UML: Unified Modeling LanguageUML: Unified Modeling Language
InterfacInterfacciacia(Defini(Definizionezione))
SpecificanoSpecificano il comportamento di una classe senzail comportamento di una classe senzadarne ldarne l’’implementazioneimplementazione
String
isEqual(String): BooleanisGreater(String): Booleanlength(): Integer
<<interface>>Sortable
isEqual(Object): BooleanisGreater(Object): Boolean
String
isEqual(String): BooleanisGreater(String): Booleanlength(): Integer Sortable
UML: Unified Modeling LanguageUML: Unified Modeling Language
SortedString_List
String
isEqual(String): BooleanisGreater(String): Booleanlength(): Integer
InterfacInterfacciacia(Us(Usoo))
<<interface>>Sortable
isEqual(Object): BooleanisGreater(Object): Boolean
String
isEqual(String): BooleanisGreater(String): Booleanlength(): Integer Sortable
SortedString_List
UML: Unified Modeling LanguageUML: Unified Modeling Language
AssociazioniAssociazioni
UnUn’’associazione definisce un canale diassociazione definisce un canale dicomunicazione comunicazione bidirezionale bidirezionale fra le due classifra le due classi
La molteplicità definisce il numero di istanzeLa molteplicità definisce il numero di istanzeche prendono parte alla relazioneche prendono parte alla relazione
I I link link sono istanze delle associazionisono istanze delle associazioni Un Un link link connette due oggetticonnette due oggetti Un'associazione connette due classiUn'associazione connette due classi
UML: Unified Modeling LanguageUML: Unified Modeling Language
Corso CartellaStudenteappare
AssociazioniAssociazioni
UnUn’’associazione indica una relazione tra classiassociazione indica una relazione tra classi ad esempio persona che lavora per aziendaad esempio persona che lavora per azienda
UnUn’’associazione deve avere un nomeassociazione deve avere un nome Il nome è solitamente un verbo (un etichetta alIl nome è solitamente un verbo (un etichetta al
centro della linea che definisce lcentro della linea che definisce l’’associazione)associazione)
UML: Unified Modeling LanguageUML: Unified Modeling Language
Corso Studente
3 .. 100..*
MolteplicitàMolteplicità
La molteplicità dice:La molteplicità dice: Se lSe l’’associazione è obbligatoria oppure noassociazione è obbligatoria oppure no Il numero minimo e massimo di oggetti cheIl numero minimo e massimo di oggetti che
possono essere relazionati ad un altro oggettopossono essere relazionati ad un altro oggetto
segue
UML: Unified Modeling LanguageUML: Unified Modeling Language
Molteplicità (Molteplicità (contcont.).)
EEsattamentesattamente unouno: 1: 1 Zero o Zero o unouno: 0..1: 0..1 MMoltiolti: 0..*: 0..* UnoUno o o piùpiù: 1..*: 1..* Un numero specificoUn numero specifico: 7: 7 Un intervalloUn intervallo: 4..15: 4..15 ListListaa: 0..1, 3..4, 6..*: 0..1, 3..4, 6..*
Tutti i numeri eccettoTutti i numeri eccetto 2 2 ee 5 5
?
UML: Unified Modeling LanguageUML: Unified Modeling Language
RuoloRuolo
Definisce il ruolo svolto nellDefinisce il ruolo svolto nell’’associazioneassociazione Utile perUtile per
Auto-associazioniAuto-associazioni Associazioni multiple tra due classiAssociazioni multiple tra due classi
work forPerson Company
employee employer
1..* 0..1
Person
0..1
0..1
husband
wife
is married toUser Directory
owner
Allowed user
container
contained
0..*
0..*
0..*
0..*1
1
UML: Unified Modeling LanguageUML: Unified Modeling Language
Studente Corso
Frequenzapercentualeprofitto
1..* 1..*
Classi associazioneClassi associazione
Alcune proprietà potrebbero appartenereAlcune proprietà potrebbero appartenereallall’’associazione e non alle parti coinvolteassociazione e non alle parti coinvolte
UML: Unified Modeling LanguageUML: Unified Modeling Language
Associazioni con qualificatoreAssociazioni con qualificatore UML propoUML proponene attribut attributi i ““qualificantiqualificanti”” per dividereper dividere
ll’’insieme di oggetti in partizioniinsieme di oggetti in partizioni Attributo il Attributo il cui cui valore consente di selezionare valore consente di selezionare unun
singolo oggetto tra tutte singolo oggetto tra tutte le le istanze di oggettiistanze di oggettiinteressati dalla stessa associazioneinteressati dalla stessa associazione
Può abbassare Può abbassare la la molteplicità dellmolteplicità dell’’associazioneassociazione
Biglietto
RappresentazioneDataPosto
Spettacolo
Nome
1 0..*
BigliettoSpettacolo
NomeDataPosto
1 0..1
UML: Unified Modeling LanguageUML: Unified Modeling Language
Associazioni derivateAssociazioni derivate
Alcune associazioni posso essere derivate daAlcune associazioni posso essere derivate daaltrealtre Simili agli attributi derivatiSimili agli attributi derivati
Dipartimento
1..*
Persona
1..*
lavora per
Azienda
1..*
/ impiegato
1appartiene
1
UML: Unified Modeling LanguageUML: Unified Modeling Language
Altre associazioniAltre associazioni
CClasslassi friendi friend
DDiippendenzaendenza
A dA dipendeipende dada B B
A B
A B<<friend>>
UML: Unified Modeling LanguageUML: Unified Modeling Language
VincoliVincoli(Associazioni multiple)(Associazioni multiple)
I vincoli possono anche essere relativi adI vincoli possono anche essere relativi adaltre associazionialtre associazioni
Persona Auto
0..1guida
{sottoinsieme}
0..10..5
0..1
StudenteDormitorio
{or}
Appartamento
usa
UML: Unified Modeling LanguageUML: Unified Modeling Language
Persona Aziendaimpiegato
0..1
sottoposto 0..11..* datoreDiLavoro
0..10..*
capo
Persona.datoreDiLavoro = Persona.capo.datoreDiLavoro
Vincoli RelativiVincoli Relativi
Vincoli Vincoli ““implementativiimplementativi”” possono essere possono essereespressi come commenti particolariespressi come commenti particolari
OCL
UML: Unified Modeling LanguageUML: Unified Modeling Language
Corso Curriculum1..*
AggregazioniAggregazioni
Le aggregazioni sono una forma particolareLe aggregazioni sono una forma particolaredi associazione. Una parte è in relazione condi associazione. Una parte è in relazione conun oggetto (un oggetto (part-ofpart-of))
1
UML: Unified Modeling LanguageUML: Unified Modeling Language
SliderPanel Button
Window
1
1
1
scrollbar body close2
1
1
ComposizioniComposizioni
Una relazione di composizione è unUna relazione di composizione è un’’aggregazioneaggregazioneforteforte Le parti componenti non esistono senza il contenitoreLe parti componenti non esistono senza il contenitore
UML: Unified Modeling LanguageUML: Unified Modeling Language
ComposizioneComposizione(Notazioni Alternative)(Notazioni Alternative)
body:Panel
scrollbar: Slider
close: Button
Window
1
1
2
body
scrollbar
close
Window
1
1
2Slider
Panel
Button
UML: Unified Modeling LanguageUML: Unified Modeling Language
Aggregazione
Corso
Precedenze
Parte
Associazioni riflessiveAssociazioni riflessive
UnUn’’associazione è riflessiva se coinvolgeassociazione è riflessiva se coinvolgeoggetti della stessa classeoggetti della stessa classe
Indicano oggetti multipli della stessa classeIndicano oggetti multipli della stessa classeche sono in relazione fra loroche sono in relazione fra loro
UML: Unified Modeling LanguageUML: Unified Modeling Language
Persona
Studente Professore
Ereditarietà (Generalizzazione)Ereditarietà (Generalizzazione)
Esplicita eventualiEsplicita eventualicomportamenti comunicomportamenti comuni
È possibile dover:È possibile dover: Aggiungere nuoveAggiungere nuove
proprietà alle classiproprietà alle classi Ridefinire/modificareRidefinire/modificare
operazioni esistentioperazioni esistenti
UML: Unified Modeling LanguageUML: Unified Modeling Language
VeicoliTerrestri
Veicoli
VeicoliPropUmana
Macchina Bicicletta BarcaARemi
{propulsione}{superficie}
EreditarietàEreditarietà(Sottoclassi non disgiunte)(Sottoclassi non disgiunte)
UML: Unified Modeling LanguageUML: Unified Modeling Language
Classi AstratteClassi Astratte
Poligono{abstract}
Cerchio
Figura{abstract}
Triangolo Quadrato
{leaf}
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsercizioEsercizioUn sistema deve gestire lUn sistema deve gestire l’’anagrafica degli obiettori (nome, cognome, data di nascita eanagrafica degli obiettori (nome, cognome, data di nascita eindirizzo), il loro titolo di studio, le esperienze lavorative pregresse e la loro posizione:indirizzo), il loro titolo di studio, le esperienze lavorative pregresse e la loro posizione:domanda presentata, domanda accettata, in attesa di servizio, in servizio e serviziodomanda presentata, domanda accettata, in attesa di servizio, in servizio e serviziocompletato.completato.Il sistema gestisce anche le diverse attività svolte dallIl sistema gestisce anche le diverse attività svolte dall’’ente. Combinando le attivitàente. Combinando le attività““scopertescoperte”” con le capacità degli obiettori in servizio, ci si propone di ottimizzare con le capacità degli obiettori in servizio, ci si propone di ottimizzarell’’assegnazione degli obiettori alle diverse mansioni e, quindi, di migliorare la qualità deiassegnazione degli obiettori alle diverse mansioni e, quindi, di migliorare la qualità deiservizi offerti.servizi offerti.LL’’ente in questione mette a disposizione degli appartamenti per fornire vitto e alloggioente in questione mette a disposizione degli appartamenti per fornire vitto e alloggiodurante ldurante l’’obiezione. Il sistema, quindi, deve tenere traccia degli appartamenti disponibili,obiezione. Il sistema, quindi, deve tenere traccia degli appartamenti disponibili,della disposizione degli obiettori nei diversi appartamenti e di eventuali posti liberi.della disposizione degli obiettori nei diversi appartamenti e di eventuali posti liberi.Per gli obiettori in servizio, il sistema deve gestire anche le licenze (supponiamo per un totalePer gli obiettori in servizio, il sistema deve gestire anche le licenze (supponiamo per un totaledi 20 giorni) e i permessi (al massimo 10).di 20 giorni) e i permessi (al massimo 10).Ogni mese, il sistema deve calcolare automaticamente gli stipendi, in base ai giorni di servizioOgni mese, il sistema deve calcolare automaticamente gli stipendi, in base ai giorni di servizioeffettivo (giorni del mese meno licenze e permessi), definire i rimborsi per il vitto e alloggio,effettivo (giorni del mese meno licenze e permessi), definire i rimborsi per il vitto e alloggio,in base alle informazioni relative ai diversi appartamenti e produrre la documentazionein base alle informazioni relative ai diversi appartamenti e produrre la documentazioneriassuntiva da inviare al distretto.riassuntiva da inviare al distretto.
UML: Unified Modeling LanguageUML: Unified Modeling Language
PackagePackage
I package I package sono sono ““contenitoricontenitori””di di classiclassi
Sistemi complessi Sistemi complessi ((realireali))devono essere modellatidevono essere modellatigerarchicamentegerarchicamente Sottosistemi Sottosistemi (package) in(package) in
relazione fra lororelazione fra loro Classi allClassi all’’interno deiinterno dei
packagepackage
PackagePackage Alta Alta coesione allcoesione all’’internointerno Interfacce precise eInterfacce precise e
limitatelimitate
GUI
Server
+Database+LoggingService
Client
+OrderForm
+TrackingForm
+Order
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsempiEsempi
GeneralizGeneralizzazionizazioni AggregaAggregazionizioni
Package possono contenere altri packagePackage possono contenere altri package ImportImport AccessAccess
<<import>>
User services
Business services
Data services
GUI
MacGUIDOSGUI
<<import>>
UML: Unified Modeling LanguageUML: Unified Modeling Language
PackagePackage
Top-downTop-down Come primo strumento per abbozzare il sistema eCome primo strumento per abbozzare il sistema e
identificare i identificare i ““componenticomponenti”” principali principali Si parte con semplici Si parte con semplici ““cartellettecartellette”” vuote per poi vuote per poi
riempirle con classiriempirle con classi
Bottom-upBottom-up Come strumento per Come strumento per ““gerarchizzaregerarchizzare”” e rendere e rendere
leggibile un modello troppo complessoleggibile un modello troppo complesso Si parte dalle classi e si raggruppano in packageSi parte dalle classi e si raggruppano in package
Object DiagramObject Diagram
UML: Unified Modeling LanguageUML: Unified Modeling Language
Object DiagramObject Diagram
Rappresentano Rappresentano le le istanze istanze e i e i legami fralegami fraquestequeste
Si usano durante lSi usano durante l’’analisi analisi e e il progettoil progetto Per Per capire capire la la struttura struttura di di oggetti complessioggetti complessi Per Per esplicitare esplicitare la la struttura struttura di di oggetti complessioggetti complessi Per Per presentare presentare ““immaginiimmagini”” del del sistemasistema
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsempioEsempio
nome = “DM”
d2: Dipartimento
nome = “Giovanni”cognome = “Rossi”
p: Professore
u: Università
nome = “DEI”
d1: Dipartimento
insegna
Statechart Statechart diagramdiagram
UML: Unified Modeling LanguageUML: Unified Modeling Language
State State DiagramDiagram
Rappresentano il comportamento dei singoliRappresentano il comportamento dei singolioggetti di una classe in termini dioggetti di una classe in termini di Eventi a cui gli oggetti (la classe) sono sensibiliEventi a cui gli oggetti (la classe) sono sensibili Azioni prodotteAzioni prodotte Transizioni di statoTransizioni di stato
Identificazione degli stati interni degli oggettiIdentificazione degli stati interni degli oggetti
Possibilità di descrivere evoluzioni parallelePossibilità di descrivere evoluzioni parallele Sintassi mutuata da Sintassi mutuata da StateChart StateChart (D. (D. HarelHarel))
UML: Unified Modeling LanguageUML: Unified Modeling Language
Elementi graficiElementi grafici
StStatoato
Decomposizione Decomposizione ANANDD
Decomposizione ORDecomposizione OR
evento
azione
TransizioneTransizione
Stato inizialeStato iniziale
Stato finaleStato finale
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsempioEsempio(Telefonata)(Telefonata)
MessaggioVocale
Inattivo
TonoPronto
Compos.Numero
ProntoAConnettere
TonoLiberoConnesso
TonoOccupato
TonoTimeOut
Chiamante.Aggancia
T
TCompone(n)
NumValido
NumNonValido
Occupato
Chiamante.Aggancia
Chiamante.Sgancia
Ricevente.Sgancia
Instradato
Compone(n)
UML: Unified Modeling LanguageUML: Unified Modeling Language
Inizio e FineInizio e Fine
Inizio BiancoMuovere
NeroMuovere
Matto o Abbandono
Stallo o Accordo
MossaBianca
MossaNera
Vince Nero
Vince Bianco
Patta
Matto o Abbandono
Stallo o Accordo
UML: Unified Modeling LanguageUML: Unified Modeling Language
ProntoVerde [incrocio.stato=libero]
InCorsa
CondizioneEvento
CondizioniCondizioni
Funzioni Funzioni booleane booleane sui valori degli oggettisui valori degli oggetti Utili quando non basta l'evento, ma si vuoleUtili quando non basta l'evento, ma si vuole
aggiungere un predicatoaggiungere un predicato
UML: Unified Modeling LanguageUML: Unified Modeling Language
OperazioniOperazioni
AzioniAzioni Operazioni che hanno durata istantaneaOperazioni che hanno durata istantanea
Tipicamente produzione di eventiTipicamente produzione di eventi
Sono associate alle transizioni di stato oppureSono associate alle transizioni di stato oppureall'ingresso o all'uscita da uno statoall'ingresso o all'uscita da uno stato
AttivitàAttività Sono operazioni con durata significativaSono operazioni con durata significativa Sono associate ad uno statoSono associate ad uno stato
Continue o sequenzialiContinue o sequenziali
UML: Unified Modeling LanguageUML: Unified Modeling Language
Stato CompletoStato Completo
event3 [condizione1] / azione5
event4 [condizione2] / azione6
do / attività1entry / azione1exit / azione2event1 / azione3event2 / azione4
Nome
attributo1: tipo1 = val.inizialeattributo2: tipo2 = val.iniziale
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsempioEsempio(P(Prenotazione renotazione volivoli))
No reservationsentry/ reset()
openFlight()
Fully booked
cancel()[ reservedSeats>1 ]
reserve[ freeSeats>1 ]
cancelFlight()
reserve()
cancel()
close()
cancel()[ reservedSeats=1 ]
reserve()[ freeSeats=1 ]Closed
close()
Partiallybooked
UML: Unified Modeling LanguageUML: Unified Modeling Language
right-mouse-down(location) [location in window] /o:=pick-object(location) send o.highlight()
0 Oggettiselezionati
1 Oggettoselezionato
EventiEventi(Generati da Azioni)(Generati da Azioni)
Spesso le azioni consistono nell'inviare unSpesso le azioni consistono nell'inviare unevento ad un altro oggettoevento ad un altro oggetto evento(evento(argarg) [) [condcond] / azione ] / azione sendsend t.azione(t.azione(argarg))
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsempioEsempio((TVTV, Video Registratore e Telecomando), Video Registratore e Telecomando)
OnOff
VCR toggle power
toggle power
OnOff
TV toggle power
toggle power
ControllingTV
ControllingVCR
TV
VCR
power button/send VCR.togglePower
power button/send TV.togglePower
toggle power
toggle power
UML: Unified Modeling LanguageUML: Unified Modeling Language
Oggetti CompositiOggetti Compositi
AccendinoSerbatoio
Fornello
Vuoto
Serbatoio
Chiuso
AccesoAperto
Fornello
carica
Pieno
[gas = 0]
[gas > 0]
apri
scintilla
chiudi
UML: Unified Modeling LanguageUML: Unified Modeling Language
Interazione fra ComponentiInterazione fra Componenti
Vuoto
Serbatoio
carica
Pieno
[gas = 0]
[gas > 0]
Chiuso
AccesoAperto
Fornello
apri
[Serbatoio.stato == Pieno]
chiudi
scintilla
UML: Unified Modeling LanguageUML: Unified Modeling Language
Folle RetroMarcia
MarciaAvanti
Prima Seconda Terza
levaR
levaN
levaF levaN
accelera accelera
deceleradecelera
Cambio Automatico
Decomposizione ORDecomposizione OR
Un macro stato equivale ad una scomposizione OR degli statiUn macro stato equivale ad una scomposizione OR degli stati I sottostati ereditano le transizioni dei loro superstatiI sottostati ereditano le transizioni dei loro superstati
UML: Unified Modeling LanguageUML: Unified Modeling Language
Decomposizione Decomposizione ANDAND
Lo Lo stato complessivo stato complessivo ((aggregatoaggregato)) è è dato dalldato dall’’uunione degli statinione degli statidei vari diagrammidei vari diagrammi
UML: Unified Modeling LanguageUML: Unified Modeling Language
Decomposizione ANDDecomposizione AND
NaturalmenteAttento
do: appunti
do: sbadiglia
do: gratta
Distratto
noia ForzatamenteAttento
do: ghirigori
richiamo
UML: Unified Modeling LanguageUML: Unified Modeling Language
EsercizioEsercizio
Si definisca uno Si definisca uno State Diagram State Diagram checherappresenti gli stati rappresenti gli stati in cui in cui si potrebbesi potrebbetrovare untrovare un’’automobile automobile in in fase fase di di parcheggioparcheggioin un in un parcheggio parcheggio a a pagamentopagamento