kaaviotekniikoista (erityisesti uml)systa/jotu2013/06notaatiotjaumlweb.pdf• uml = unified modeling...
Post on 26-Oct-2020
0 Views
Preview:
TRANSCRIPT
Kaaviotekniikoista (erityisesti UML)
Kari Systä 30.9.2013
9/30/2013 Jotu2013/KSY 1
Tiedotettavaa
• Tämän viikon harjoitukset salissa TC217!
• Tarvitaan ”lintulan” tunnukset; kaavakkeet ja postilaatikko salin TC217 edessä.
• Ensi viikolla vierailuluento
9/30/2013 Jotu2013/KSY 2
Kaaviotekniikoista
• Mahdollistavat todellisuuden havainnollistamisen ja yksinkertaistamisen
• Sallivat eri abstraktiotasot, laajuudet ja näkökulmat
• Auttavat ymmärtämään sovellusaluetta
• Ohjaavat kysymään oikeita kysymyksiä
• Helpottavat kommunikointia koskien järjestelmää ja sovellusaluetta
• Dokumentoivat asioita
9/30/2013 Jotu2013/KSY 3
Historiaa • UML = Unified Modeling Language • Yhdistelmä viimeisten 30-40 vuoden aikana kehitetyistä notaatioista (ER,
SA/RT, SDL,..) • Standardoi piirtotavan • UML ei ole menetelmä, vaan kaavioidenpiirtostandardi • Päätekijät (the "three amigos"): Grady Booch, Jim Rumbaugh and Ivar • Jacobson (www.rational.com) • OMG:n standardoima
– 1997 version 1.1 – 1998-2003 Fix releases 1.2-1.5 – 2.8.2003: kokonaan uusittu versio 2.0 – uusin versio (2.3.) keväällä 2010
• Laaja standardi, käytännön kannalta erot 1.1-version ja 2.0 version välillä ovat melko vähäisiä
• Tosiasiallinen standardi työkaluissa, kirjallisuudessa, teollisuudessa
• Tällä kurssilla pikku detaljeille ei ole merkitystä
9/30/2013 Jotu2013/KSY 4
9/30/2013 5
Use case
driver
Handle tree
Cut log
Sequence diagram
pine:Tree :Log
Driver
Cut<<create>>
calcullate
FeedsetMeasures
Collaboration diagram
pine:Tree
:Log
Driver
1. Cut
2. Feed
1.1. <<create>>
1.2. calculate
2.1. setMeasures
Activity diagram
H
H
Select tree
variety
Catch hold of tree
Fall the tree
Feed&saw
State machine diagram
(State chart)
H
H
Saw idle
Saw
operational
Cut /
^Start chain
CutOK /
^StopChain
Class/Package/Object diagrams
LogTree
1..*
pine: Tree :Tree
Component diagram
Production
ProductionH.U.I.
LogTree
Production
Deployment diagram
<<Laptop>>
H.U.I.
Production
H.U.I.
<<processor>>
Main Unit
<<CAN>>
Kaaviotyypit (UML 1.x)
popularity: 3, complexity: 1 popularity: 2, complexity: 1 popularity: 3, complexity: 1 popularity: 3, complexity: 3
popularity: 1, complexity: 2 popularity: 2, complexity: 2 popularity: 2, complexity: 3 popularity: 2, complexity: 3
Use case diagram
Käyttötapauskaavio
Sijoittelukaavio Komponenttikaavio Tilakaavio Aktiviteettikaavio
Yhteistyökaavio Tap.sekv.kaavio Luokkakaavio
Jotu2013/KSY
9/30/2013 6
UML 2.0 kaaviotyypit Diagram
Structure diagram
Class
Diagram Object
Diagram
Deployment
Diagram
Component
Diagram
Composite
Structure
Diagram
Behavior Diagram
Interaction Diagram
State Machine
Diagram
Use Case
Diagram
Activity
Diagram
Package Diagram
Timing
Diagram
Interaction
Overview
Diagram
Collaboration
Diagram
Sequence
Diagram
Jotu2013/KSY
9/30/2013 7
Esimerkki tyypillisestä käytöstä
• Selvitellään asiakkaan ongelmaa (asiakasvaatimuksia) • Tuotetaan sovellusalueen luokkakaavioita (analysis
level, problem level, problem domain) • Käytetään käyttötapauksia selvittelemään kuvausta
asiakasvaatimuksista järjestelmävaatimuksiksi. • Iteroidaan, protoillaan... • Tuotetaan toiminnallinen määrittely, joka dokumentoi
asiakasvaatimukset, järjestelmävaatimukset ja käyttötapaukset.
• Määritellään arkkitehtuuri (alijärjestelmät) ja tärkeimmät rajapinnat (luokkakaaviot, tapahtumasekvenssikaaviot)
• Määritellään alijärjestelmät (luokkatasolle) ja luokkien rajapinnat (luokka- ja tapahtumasekvenssikaaviot)
Huom. Kaavioilla ei juurikaan päästä
käsiksi ei-toiminnallisiin
ominaisuuksiin.
Jotu
oliot,
ohj-
arkki
-
teht.
Jotu2013/KSY
Kaksi eri käyttöä
• Ongelman ja ympäristön kuvaaminen
• Tuoteutettavan järjestelmän kuvaaminen
9/30/2013 8 Jotu2013/KSY
9/30/2013 9
Kaavioiden käyttötavoista • Kaavioita voidaan käyttää (mm.) esitutkimuksessa,
määrittelyssä ja suunnittelussa. – Esitutkimus ja määrittely: sovellusalueen käsitteet (domain
object model), järjestelmän rajaus, analysis object model, järjestelmän tietosisällön määrittely (käsitekaavio, conceptual model), usein myös tietokannan rakenne.
– Suunnittelu: ohjelman rakenne (design object model), tietokannan rakenne (esimerkiksi relaatiokannan graafinen esitys).
– Kaavio dokumentoi "sanaston", jolla asioista voi keskustella. • Kaavio kertoo, millaiset tilanteet ovat mahdollisia. • Kaavio ohjaa kysymään oikeita kysymyksiä. • Voidaan käyttää (rajoitetusti) koodin generointiin
(luokkamäärittelyt, tietokannan luonti). • Voidaan käyttää takaisinmallinnukseen (reverse
engineering).
Jotu2013/KSY
9/30/2013 10
Kaavioiden ilmaisuvoimasta
• Kaikkien sallittujen tilanteiden olisi oltava kaaviossa mukana?
• Kaikkia rajoituksia ei aina pysty ilmaisemaan => Lisätään rajoitteita ja kommentteja.
• Kaavioita voi testata hakemalla siitä vastauksia kysymyksiin ja piirtelemällä kuvia esimerkkitilanteista.
• Mahtavatkohan asiakkaat ymmärtää kaavioita?
Jotu2013/KSY
Työkaluista • Jos et osaa paperilla ja kynällä ei välineestä ole apua. • Välineet voidaan karkeasti jakaa case-välineisiin ja piirto-ohjelmiin, käytännössä
rajanveto ei ole helppoa: Rational Rose, Rational Software Architect, Prosa, Rhapsody, Together, Enterprise Architect, MagicDraw, Visio …
• CASE-välineet – Hinta yleensä korkea (2-20k euroa). – Perustuvat tietokantaan, johon talletetaan kaikki malliin liittyvät tiedot, kaaviot ovat – vain “näkymiä” tietokantaan. – “Ymmärtävät” kaavioiden semantiikkaa ainakin jossain määrin. – Reverse Engineering+Forward Engineering = Round Trip Engineering. – Tukevat dokumentointia. – Tukevat ryhmätyötä. – Demot ja pienet ohjelmaesimerkit antavat usein liian ruusuisen kuvan. – Oppimiskynnys korkeahko.
• Piirto-ohjelmat (esim. MS Visio) – Hinta muutamia satoja eroja. – Ainakin Visiossa melko hyvä UML-tuki, lähestyy CASE-välineen ominaisuuksia. – Hyvä valinta, jos ei tarvitse CASE-välineen tietokannan tuomia lisäetuja. – Julkisohjelmiakin löytyy verkosta (esim. ArgoUML)
• Tällä kurssilla saa piirtää millä haluaa, saatavissa MagicDraw, Rose ja RSA – MagicDraw:n käyttöä harjoitellaan harjoituksissa
9/30/2013 Jotu2013/KSY 11
Käyttötapauskaaviot
driver
Handle tree
Cut log
Log Tree
1..*
pine: Tree :Tree
pine:Tree :Log
Driver
Cut <<create>>
calcullate
Feed setMeasures
H
H
Saw idle
Saw operational
Cut / ^Start chain
CutOK / ^StopChain
9/30/2013 Jotu2013/KSY 12
Ohjaaja
Laitoksen johtaja
Lisää uusi
opiskelija
Etsi ehdot
täyttävät
opiskelijat
Kirjoita
lausunto
Tee
palaverimuistio
Tarkastele
tilastoja
Lisää/poista
ohjaaja
Lisää uusi
kenttä
Dipparekisteri
KT2
KT3
Aktori1
<<include>>
KT1
<<extend>>
Järjestelmä X
KT4
Aktori2
<<actor>>
SAP
Tilakaaviot
Käytetään esimerkiksi
• elektromekaanisten laitteiden toiminnan mallintamiseen
• perinteinen oliomallintamiseen ja olioiden elinkaarien selvittelyyn
• algoritmien ja liiketoimintasääntöjen kuvaamiseen
• liiketoimintaprosessien selvittelyyn.
9/30/2013 Jotu2013/KSY 15
Tilan nimi
entry/action
exit/action
do/action
eventName/action
eventName/defer
eventName(par)[guard]/action
tila
Notaatiosta
9/30/2013
Jotu2013/KSY 16
Soitin
Alusta
do/luukku auki
Soita Auki
play/luukku kiinni, aloita soitto
stop tai levy loppu/avaa luukku
Virtakatkaisin
pause/keskeytä soitto
play/jatka soittoa
Yksinkertainen esimerkki
9/30/2013
Jotu2013/KSY 17
9/30/2013
Soitin
Alusta
do/luukku auki Soita
Auki
play
stop
Virtakatkaisin
play
Pause
Hierarkkiset tilat
Jotu2013/KSY 18
9/30/2013
Soitin
Alusta
Do
/luukku auki Soita
Auki
play
stop
Virtakatkaisin
play
Pause
Rinnakkaiset tilat
Pois
Herätys
Päällä
Jotu2013/KSY 19
9/30/2013
Notaation "hienouksia“
State name
entry/action
exit/action
do/action
eventName/action
eventName/defer
Alkutila
Lopputila
Suoritetaan tilaan
saavuttaessa
Suoritetaan tilasta
poistuttaessa
Suoritetaan tilassa
ollessa
Suoritetaan tapah-
tuman sattuessa
Estetty tapahtuma
eventName(par)[guard]/action
Vahti: tilasiirtymä
mahdollinen jos tosi
toiminto
Jotu2013/KSY 20
aktiviteettikaaviot
9/30/2013
Jotu2013/KSY 21
avaa
do/avaa ilmoittautuminen
jouten
notOK
OK-ilmoitus
sulje ilmoittautuminen
Kurssi::ilmoittaudu/
Kurssi::tarkasta esitiedot /ilmLkm=0
[else]
[OK]/ilmLkm=ilmLkm+1
do/lisää yhteys käyttäjän
ja kurssin välille
do/informoi käyttäjää
when (time=ilmPäättymisAika)/
do/sulje ilmoittautuminen
do/informoi
käyttäjää
Rinnakkaisuus aktiviteettikaavioissa
9/30/2013
Valmistele tietokannat
Koosta raportti
Haku kannasta 3 Haku kannasta 2 Haku kannasta 1
Jotu2013/KSY 22
Sekvenssikaaviot
9/30/2013
Jotu2013/KSY 23
9/30/2013
Esimerkki tapahtumasekvenssistä
elämänlanka
: opiskelija : ohjaava professori
: ohjaaja työpaikalla
Tiedekunta
aiheanomus allekirjoitettu aiheanomus
aihe OK
valmis työ
valmis työ
lausunto
lausunto
hyväksyminen, arvosana
Aihetta pohdiskellaan työpaikalla proffan kanssa
Dippatyötä tehdään, palavereita ohjaajien kanssa
Molemmat ohjaajat tekevät lausunnon
tiedekuntaneuvoston kokous hyväksyy työn
Jotu2013/KSY 24
9/30/2013
Notaatio
: Sovellus : Tdstojärjestelmä : Laiteajuri : Levyohjain
lue tdston tavut 1200-1209
palauta lohko 523
palauta halutut 10 tavua
Päättele tavunumeroista
vastaavan levylohkon numero
(esimerkiksi 523)
Muunna 523 levypinnan, uran ja sektorin
numeroksi (esimerkiksi (1, 36, 56))
Odota keskeytystäSiirrä lukipää oikealle
uralle
Odota oikeaa sektoria, lue
sektoriOdota keskeytystä
lue lohko 523
käynnistä seek uralle 34
i/o-keskeytys
käynnistä sektorin luku
i/o-keskeytys
Asynkroninen
kommunikointi
Funktiokutsu, synkroninen
kommunikointi
Paluu funktiosta
(ei pakollinen)
”Focus of control”
Jotu2013/KSY 25
9/30/2013
…notaatio
: C2
x: C1
op1(x)
op2()
true
sisäinen kutsu
olion tuhoaminen
(myös stereotyyppi
<<destroy>>)
olion luonti,
voi ilmaista myös
stereotyypillä
<<create>>
: C2
<<create>>
<<destroy>>
TAI:
op3(x)
takaisinkutsu (call back)
Jotu2013/KSY 26
: View
: Controller
formInit checkScreen
: C2
<<create>>
<<destroy>>
initializationOK
getTemperatures
dataChange
changedData
finalizeForm
9/30/2013
Jotu2013/KSY 27
9/30/2013
alt [Negotiation OK]
[Negotiation not OK]
•Operaattorit
•ref: viittaus alikaavioon
•alt: if-then-else
•opt: if-then
•break: hyppy ulos
•loop: silmukka
•par: rinnakkainen suoritus
•seq: heikko järjestys (voi
tapahtua muussakin
järjestyksessä)
•strict: tarkasti määritelty
järjestys
•neg: kielletty
kommunikointitapa
•critical: kriittinen alue
•ignore, consider, assert
sd Varmista esitiedot
Customer Sales System
signOn
ref Negotiate
ref handlePurchase
ref handleFailure
loop [while Negotiations left]
Jotu2013/KSY 28
Käsitekaaviot
• Tiedon ja käsitteiden kuvaamiseen
9/30/2013 Jotu2013/KSY 29
Esitetään useimmiten graafisesti
• Oliokaavio
• Luokkakaavio (UML)
• ER-kaavio (entity-relationship kaavio)
• Tietoyhteyskaavio
• Käsitekaavio
• Kohdekaavio
Jotu2013/KSY 30 9/30/2013
Käsitekaavio (UML:n luokkakaavio)
Nimi
Ominaisuudet
Metodit
Nimi
Ominaisuudet
Metodit
nimi
lkm lkm
Jotu2013/KSY 31 9/30/2013
Esimerkki
Kurssi
-luentosali -luentoajat -vastuuhenkilö
Opintojakso
-opMaara -kuvaus
*
esitietovaatimus
*
1
*
osallistuu
*
*
kuvaa
Suoritus
-arvosana -pvm
Opiskelija
-nimi -osoite
-opiskelijaNro
*
* -ilmPäättymisAika
-ilmLkm
9/30/2013 Jotu2013/KSY 32
9/30/2013 33
navigointisuunta
Esimerkki
assosiatioluokka
lukusuunta
UML 2.x
navigointi
Undefined Navigable direction
Non-navigable direction
suoritus
arvosana
ov-määrä
pvm
opettaja
nimi
osoite
henkilöNro
opintojakso
kuvaus
kurssi
kurssitunnus
periodit
lukukausi
0..1
0..*
0..1
0..* luennoi
1 0..* 1 0..*
<kuvaa
tentti
1
0..*
1
0..*
kuuluu
Opiskelija
nimi
op.nro
osoite
ilmoittaudu()
0..* 1..* 0..* 1..*
osallistuu
0..*
0..*
0..*
0..*
suoritus
Jotu2013/KSY
9/30/2013 34
Periyttäminen, yleistäminen, erikoistaminen (kuva 6.3)
luotollinen tili
luottoraja
otto()
tili
tiliNro
saldo
otto()
pano()
saldoKysely()
1
0..1
1
0..1
käyttötili
1
0..1
1
0..1
{xor}
luotollinen tili
luottoraja
otto()
tili
tiliNro
saldo
otto()
pano()
saldoKysely()
käyttötili
tili
tiliNro
saldo
otto()
pano()
saldoKysely()
luotollinen tili
luottoraja
otto()
käyttötili
TAI: rajoite
Jotu2013/KSY
Tietovuokaaviot
• Tietovuokaaviot olivat yleisiä ennen UML:ää
• Niillä on edelleen ”faninsa”
9/30/2013 Jotu2013/KSY 35
Vaara-anturi
Liukuhihna
Maalisäiliö
Operaattori
Käsi
MaaRo
käynnistä
maaliloppu
ohjaus
Vaara-alue
Liukuhihna
Maalisäiliö
Operaattori
Käsi
siirrä hihnaa
5*
vaara
käynnistä
maaliloppu
käden
ohjaus
asema
tilanne
komento
ohjaus = [seis | siirrä | käsikäyttö | automaatti] status = [seis | seis&siirtää | käsikäytössä | maalaa | maalaa&siirtää]
ohjaa robottia
1*
Käyttöliit- tymä
2*
maalaa manuaali-
sesti
3*
maalaa automaat-
tisesti
4*
maalausreitti
ohjaus
e/d
e/d
status
valmis
pysäytä hihna
6*
top related