Ohjelmistoarkkitehtuurit Kevät 2016, luento 3 Arkkitehtuurin kuvaus (mallinnus) Samuel Lahtinen http://www.cs.tut.fi/~ohar/
Ohjelmistoarkkitehtuurit
Kevät 2016, luento 3
Arkkitehtuurin kuvaus
(mallinnus)
Samuel Lahtinen
http://www.cs.tut.fi/~ohar/
Ajankohtaisuuksia
2
• Perjantaina ensimmäinen vierailuluento, Janne Viitala,
Sandvik
• Tulevia, Veli-Pekka Eloranta, lääketieteellisen ohjelmiston
erikoisvaatimuksia
• Ensi viikon viikkoharjoitukset keskittyvät mallintamiseen,
piirtelyyn
• Oma läppäri mukaan, jos haluaa tehdä paikanpäällä
TTY, UTU, Oulussa tietokoneluokassa
• Muistakaa ilmoittautua harjoitustyöhön
Piirtely/mallinnusohjemia
• TTY:llä Magic Draw:
– http://www.cs.tut.fi/software/win32/MagicDraw/
– https://www.cs.tut.fi/~otupk/harjoitukset/MagicDrawOhjeOpiskelijoille.p
df
– TC217 salissa & virtuaalikoneen kautta ohjsuun.cs.tut.fi
• Microsoft Visio
– Office 365-paketissa mukana
– Luokissa pitäis olla asennettuna ainakin TTY:llä
• Dia http://sourceforge.net/projects/dia-installer/
• ArgoUML: http://argouml.tigris.org/
• WhiteStarUML: http://sourceforge.net/projects/whitestaruml/
• Online-piirtelyä: Drawi.io : https://www.draw.io/
3
Arkkitehtuurien kuvaaminen
4
Arkkitehtuurikuvauksen
merkityksestä
5
• Oletetaan, että järjestelmän arkkitehtuurin kuvaus ja järjestelmän
toteutus ovat ristiriidassa. Mikä on järjestelmän arkkitehtuuri?
• Oletetaan, että järjestelmällä ei ole mitään arkkitehtuuri- tai
suunnitteludokumentteja, eivätkä sen suunnittelijat ole saatavilla,
vain lähdekoodi. Mikä on järjestelmän arkkitehtuuri?
• Arkkitehtuurikuvaus on järjestelmän keskeinen artifakti, joka on
verifioitavissa (vasten vaatimuksia)
Arkkitehtuurin kuvaamisesta
• Wanha vitsi(?) Mies lentää kuumailmapallolla ja huomaa, että on eksyksissä. Hän pudottaa korkeutta ja huomaa alapuolellaan olevalla pellolla miehen
ja huutaa:
"Anteeksi, voisitteko auttaa? Lupasin eräälle ystävälleni, että tapaisin hänet tunti sitten, mutta en tiedä missä olen."
Mies alapuolella vastaa: "Tottakai voin, olet kuumailmapallossa, leijuen noin 10m tämän pellon yläpuolella. Sijaintisi on 40 ja 41:n
asteen välillä pohjoista pituutta, 59 ja 60:n asteen välillä itäistä pituutta."
"Sinun täytyy olla insinööri", sanoo kuumailmapalloilija.
"Niin olen" vastaa mies "mutta mistä tiesit?"
"No, kaikki mitä kerroit, on kyllä teknisesti totta. Mutta minulla ei ole aavistustakaan mitä tehdä informaatiollasi ja totuus on, että olen
edelleen eksyksissä."
Mies alapuolella vastaa: "Sinun täytyy olla johtaja."
"Niin olen", palloilija vastaa, "mutta mistä tiesit?"
"No, et tiedä missä olet ja minne olet menossa. Olet tehnyt lupauksen josta sinulla ei ole minkäänlaista käsitystä miten sen voisit pitää
ja odotat että minä ratkaisen ongelmasi. Totuus on, että olet täsmälleen samassa tilanteessa kuin ennen tapaamistamme, mutta nyt se
on jostain syystä minun vikani."
6
Oikea abstraktiotaso, tyyli,
oikeellisuus• Eri näkökulmat, turisti, suunnistaja, keskustelu,
paikantaminen (vs. koodari, pomoporras, järjestelmän
ylläpitäjä, alijärjestelmän suunnittelija)
• Missä on Amarante?
– ~Portugalissa tai 60km Portosta itään tai Cepelosista 2 km pohjoiseen
Lufrein lähistöllä
• Entä Oravanpolku Tampereella?
– Kalevassa, Sorsapuiston kentän vieressä vs.Nyyrikintiestä seuraava
samansuuntainen tie
• Miten pääsen täältä Tamppi Areenalle?
7
8
Ajo-ohje Tamppi Areenalle viime vuonna
(ongelmat väärä abstraktio kevyen liikenteen väylä & autotieVanhentunutta tietoa, epätarkkuus)
Tämän vuotinen versio
(edelleen virheellinen sijainti)
9
Kuvan lähde: http://www.interrailnet.com/interrail-railway-great-britain
Eri abstraktiot samaan asiaan
http://www.tfl.gov.uk/gettingaround/14091.aspx
Eri abstraktiot samaan asiaan
12
Eri abstraktiot samaan asiaan
13
Eri abstraktiot samaan asiaan
Arkkitehtuuridokumentit
• Alustava arkkitehtuuridokumentti• korostaa kaikkein kriittisimpiä ratkaisuja,
vaihtoehtoisia ratkaisuja ja niihin liittyviä
etuja/haittoja
• käytetään alustaviin työmääräarvioihin,
liiketoimintapäätöksiin
• lähtökohta järjestelmäarkkitehtuurin suunnittelulle
• konkreettinen (+ referenssi) arkkitehtuuri
14
Arkkitehtuuridokumentit
• Järjestelmäarkkitehtuuridokumentti• järjestelmän ylimmän tason arkkitehtuuri
• käytetään projektisuunnitteluun,
työmääräarviointiin, järjestelmätestauksen
suunnitteluun, ylläpitoon
• lähtökohta alijärjestelmien arkkitehtuurien
suunnittelulle
• konkreettinen (+ meta) arkkitehtuuri
15
Arkkitehtuuridokumentit
(jatkuu)
• Alijärjestelmäarkkitehtuuridokumentti• alijärjestelmän arkkitehtuuri
• käytetään tehtävien suunnitteluun, tarkennettuihin
työmääräarvioihin, yksikkötestauksen
suunnitteluun, ylläpitoon
• lähtökohta alijärjestelmien yksityiskohtaiselle
suunnittelulle ja toteutukselle
• konkreettinen arkkitehtuuri
• Esim. MVC:n eri osat, weppikäyttöliittymäpuoli/
palvelimen toteutus, hyttiyksikkö harvesterissa…16
Arkkitehtuuridokumentit
(jatkuu)
• Rajapintadokumentti (dokumentit)• järjestelmän rajapinnan kuvaus, tyypillisesti API
• täydentää muita arkkitehtuuridokumentteja
• käytetään komponenttien suunnittelun ja
toteutuksen perustana
• Toinen vaihtoehto, kuvataan muille miten oman
järjestelmän kanssa kommunikointi onnistuu tai
miten omaa järjestelmää voidaan laajentaa/käyttää
osana muissa projekteissa
• Esimerkki: https://docs.mopidy.com/en/latest/api/17
Arkkitehtuuridokumentit
(jatkuu)
• Tuoterunkoarkkitehtuuridokumentti• alustan arkkitehtuuri + säännöt, joiden mukaan
sovelluksia rakennetaan
• käytetään alustan yksityiskohtaiseen suunnitteluun
ja ohjaamaan tuotekehitystä
• konkreettinen + meta-arkkitehtuuri
18
Arkkitehtuuridokumentit
(jatkuu)
• Tuotearkkitehtuuridokumentti• alustan käyttö + tuotekohtaiset
arkkitehtuuriratkaisut
• käytetään tuotteen yksityiskohtaiseen
suunnitteluun, testaukseen ja ylläpitoon
• konkreettinen arkkitehtuuri
19
Arkkitehtuuridokumentit
(jatkuu)
• Referenssiarkkitehtuurit• Miten meidän järjestelmällä kannattaa lähteä
tekemään asioita?
• Mitä pitää huomioida, jos teet jotain vastaavaa?http://www.microsoft.com/en-us/sqlserver/solutions-technologies/data-warehousing/reference-architecture.aspx
20
Arkkitehtuuridokumentin
sisältö
Seuraavat asiat (soveltuvin osin) tulisi ilmetä dokumentista:
• Identifiointi: mistä organisaatiosta, järjestelmästä ja dokumentista on kyse
• Konteksti: liiketoimintatavoitteet, sidosryhmät, kehitysympäristö
• Vaatimukset: arkkitehtuurin kannalta merkittävät vaatimukset
• Rajoitteet
• Toimintaympäristö
• Näkymät: kuvauksen ydin – valittujen näkökulmien mukaiset näkymät,
mallit
• Tärkeimmät arkkitehtuuriratkaisut ja niiden perustelut
• Analyysi: arkkitehtuurin arvioinnin tulokset
21
Tarjolla tänään:
Ohjelmistoarkkitehtuurien
kuvaaminen
22
• Arkkitehtuurin kuvaukseen liittyvät käsitteet
• Arkkitehtuurikuvaukset eri tasoilla
• Arkkitehtuurinäkökulmat ja kuvaustyypit
• UML arkkitehtuurien kuvauskielenä
• Arkkitehtuuridokumentit
• Yhteenvetoa
Arkkitehtuurikuvauksen
merkityksestä
23
• Oletetaan, että järjestelmän arkkitehtuurin kuvaus ja järjestelmän
toteutus ovat ristiriidassa. Mikä on järjestelmän arkkitehtuuri?
• Oletetaan, että järjestelmällä ei ole mitään arkkitehtuuri- tai
suunnitteludokumentteja, eivätkä sen suunnittelijat ole saatavilla,
vain lähdekoodi. Mikä on järjestelmän arkkitehtuuri?
• Arkkitehtuurikuvaus on järjestelmän keskeinen artifakti, joka on
verifioitavissa (vasten vaatimuksia)
Arkkitehtuurin kuvaukseen liittyvät
käsitteet (IEEE 1471-2000)
24
Mission
SystemEnvironment
Stakeholder
Architecture
Concern
View
Architectural
description
Rationalehas an
described byprovides
has
fulfills
has organized by
identifies
1..*
1..*
1..*
1..*
1..*
1..*
1
Viewpoint
1..*
conforms tois addressed to
1..*
selects
Lisäys (ISO/IEC 42010)
25
Arkkitehtuuripäätökset
26
• Arkkitehtuuri voidaan ymmärtää arkkitehtuuritason
päätösten summana (esim. Bosch)
• Arkkitehtuuripäätöksille voidaan antaa puoliformaali
esitystapa
• Arkkitehtuuripäätökset liittyvät yleensä johonkin
vaatimukseen, huolenaiheeseen, rajoitteeseen ym.
• Arkkitehtuuripäätöksillä on aina jokin perustelu (rationale)
• Arkkitehtuuripäätökset tulisi kirjata arkkitehtuurin
kuvaukseen
• Arkkitehtuuripäätösten kuvauksia tarvitaan myös
arkkitehtuurin arvioinnissa (palataan myöhemmin)
Arkkitehtuurinäkymät
27
Arkkitehtuurikuvaus
Toimiva järjestelmä
Näkymä kuvaa
tietyn arkkitehtuuriin
liittyvän asian tietyllä
abstraktiotasolla
Näkymien kuvaamat
asiat ovat osittain
päällekkäisiä
järjestelmän kannalta
Näkymä
Näkymä
Näkymä
Arkkitehtuurikuvaukset eri tasoilla
28
Referenssi-
arkkitehtuuri
Meta-
arkkitehtuuri
Tuoterunko-
arkkitehtuuri
Tuote-
arkkitehtuuri
Konkreettinen
arkkitehtuuri
Yksityiskohtai-
nen suunnittelu
Lähdekoodi
perustuu
yleistys
Arkkitehtuurikuvaukset eri tasoilla
• Meta-arkkitehtuuri: välineet arkkitehtuurien kuvaukseen
• Referenssiarkkitehtuuri: jonkin sovellusalueen
malliarkkitehtuuri
• Konkreettinen arkkitehtuuri: yksittäisen järjestelmän
arkkitehtuuri
• Tuoterunkoarkkitehtuuri: jonkin tuotealustan arkkitehtuuri
• Tuotearkkitehtuuri: tuotealustan päälle rakennetun
ohjelmistotuotteen arkkitehtuuri
29
Kysyttävää?
30
Arkkitehtuurinäkökulmat ja kuvaustyypit
31
• Skenaarionäkymät
Vuorovaikutus ulkomaailman kanssa
(use case view)
• Loogiset näkymät
Ohjelmistoyksiköiden vastuut
• Prosessinäkymät
Prosessit ja niiden vuorovaikutus
• Kehitysnäkymät
Järjestelmän jakaminen eri kehittäjille
• Fyysiset näkymät
Ohjelmiston jako eri laiteyksiköille, verkko
• Muuntelunäkymät
Ohjelmiston laajentaminen ja muuntelu
Näkökulmat:
"4+1" (Kruchten)
UML
Arkkitehtuurikuvauksen tyypit
32
• Rakenne - Käyttäytyminen
• Staattinen - Dynaaminen
• Esimerkki – Määrittelevä
Toisistaan riippuvia!
UML
33
•Mitä hyvää?
•Mitä huonoa?
•Mikä on tuttua?
kaaviokysely
34
Kysymys 1:
Kysymys 2:
Kysymys 3:
Kysymys 5:
Kysymys 4:
Kysymys 6:
Kysymys 7:
35
UML arkkitehtuurien kuvauskielenä
36
Kaaviotyypit
Esimerkki:
Autonvuokrausjärjestelmä
37
Deliver vehicle
Return vehicle
Service
ClientClerk
<<include>>
CarRentalSystem
Service
Reserve vehicle
Skenaarionäkymä: käyttötapauskaavio
38
Aktiviteettikaavio, elementtityypit
39
Car
request
Make
reservation
Make bill
PayPrepare
car
Registrate
renting
Client Clerk
Take car
:Bill
[open]
:Bill
[paid]
Tarkennettu skenaarionäkymä: aktiviteettikaavio
40
Syntaksista
41
RentableItem
Car
RentableStorage
regnumber
RentManager
+reserve(Car,Client)
+release(Car)
+engage(Car)
+return(Car)
+update()
+return()
+reserve()
+setActive()
+setId()
PrivateClient
id
name
address
creditcard
Transaction
+kind
+info
TransactionManager
+handleTransaction()
*
1
1
1
creates
uses
*
manages
*
1
rents
+return()
Database Feature
code
description
*
<<interface>>
LocationControl
+getPos(Car)
ItemManager1 0..1
+setCar(Car)
+start()
+stop()
+reserve()
+release()
+engage()
+return()
+lost()
+recover()
*
creates
Garage
GPSService
controller
Client
Store service
information
Looginen näkymä (rakenne): luokkakaavio
42
Suhteellista…
43
Metamalli ja
luokkakaaviomääritelmä
44
45
asynkroninen
luontiviesti
Looginen näkymä (käyttäytyminen):
sekvenssikaavio
aCar: Car
: Garage
UI : RentManager1: return(aCar)
1.2: store(aCar)
1.1: return
1.3: update()
Looginen näkymä (käyttäytyminen):
yhteistoimintakaavio/…
46
Communications diagram, UML 2.0, yksinkertaistettu Collaboration diagram (UML 1.x)
Oliokaaviota, sekvenssikaaviota yhdisteltynä, linkeille numerointia kertomassa
kutsujärjestyksestä
Piirrä tilakaavio
opiskelijaruokalassa
asioinnista (jonotus, ruuan
valinta & annostelu,
maksaminen, mahdollinen
ruuan myrkyttäminen
chilikastikkeella, syöminen,
jne.)
47
Available
Service
Reserved
Activereturn /
stopTiming
reserve
engage/startTiming
For a ItemManager object:
do/makeReport
release
Vulnerable
[suspect location]
Lost
LocCheck
do/warning
recover
do/check location
recover
after(1 day)do/announcement
lost
after(1 hour)
Prosessinäkymä: tilakaavio
48
SiteWorkStation: Client
VehicleServer: Server
: Transaction
Manager
: Database
: GUI
: Rent
Manager<<Corba>>
: Item
Manager
Fyysinen näkymä:
sijoittelukaavio
49
50
“Communication path”
Kehitysnäkymä: pakkauskaavio
(package diagram)
(ajoaikainen composite structure diag)
51
Items
Storage
+Garage+Car
+Feature <<import>>
DB
+Transaction
+TransactionManager
-Database
Core
+RentManager
+CarManager
+Rentable
+RentableStorage
+LocationControl
+Client
Clients
+PrivateClient
+Company
<<import>>
<<import>>
GPS
+GPSService
<<import>>
<<import>>
Kehitysnäkymä: pakkauskaavio
(package diagram)
(ajoaikainen composite structure diag)
52
+julkinen näkyvyys
-privaatti
http://www.uml-diagrams.org/package-diagrams.html
http://www.uml-diagrams.org/package-diagrams-overview.html
53http://www.uml-diagrams.org/examples/java-servlet-25-api-package-diagram-example.html?context=pkg-
examples
Java Servlet 2.5 API
Tärkeimmät rajapinnat
ja luokat
Luokkakaavio & collaboration-
elementti…
54
Muunneltavuusnäkymä:
luokkakaavio
55
NewFeature
Feature
code
description
setIcon(FeatureIcon)
price(): Integer
price(): Integer
FeatureIcon
draw
NewFeatureIcon
draw
FeaturePalette
add(Feature)
1
*
Main
initialize()
...
f = new NewFeature(...);
fi = new FeatureIcon(...);
f.setIcon(fi);
featurePalette.add(f);
...
Adding new
item feature palette
initCode
initializer
myIcon
iconInterface
feature
myFeature
Harjoitus: UML ja kuvaustyypit
56
Rakenne Käyttäy-
tyminen
Staat-
tinen
Dynaa-
minen
Esimerkki Määrittelevä
Sekvenssi-
kaavio
Luokka-
kaavio
Tila-
kaavio
UML-kaavioilla kuvataan osittain
päällekkäisiä asioita
60
Sekvenssi-
kaaviot
Luokka-
kaaviotTilakaaviot
Aktiviteetti-
kaaviot
Kysyttävää?
62
Stereotyypit ja profiilit UML:ssä
63
Stereotyyppi• jonkin UML:n metamalliin kuuluvan luokan (metaluokan) laajennos
Profiili• joukko stereotyyppejä ja niihin liitettyjä rajoitteita
• räätälöity UML-pohjainen mallintamiskieli johonkin
erityistarkoitukseen (esim. jollekin sovellusalueelle,
arkkitehtuurityylille tms.)
Stereotyypit
64
Class
ClassUML AssociationUMLOperation
Person
myCar(): Car
Car
owner(): Person
owns
ilmentymä
ilmentymä
Meta-metamalli
(MOF)
UML:n
metamalli
Järjestelmän
malli
Järjestelmäilmentymä
Association
<<stereotype>>
bean
<<bean>>
Account
holder(): Person
has
- ei semantiikkaa
- vrt. BNF
Yksinkertaistaen:
Stereotyypit
Esimerkki: CORBA profiili
(OMG)
66
Stereotyyppimäärittelyjä:
Esimerkki: CORBA profiili (OMG)
67
Rajoitteiden määrittelyjä:
Rajoitteiden kuvauskieli: OCL (Object Constraint Language)
Yhteenveto
68
2.6 Yhteenvetoa
69
• Arkkitehtuurikuvaus jakaantuu näkymiin (4+1)
• UML:ää voidaan käyttää eri näkymien esittämiseen
• UML perustuu metamallintamiseen
• UML:ää voidaan tarvittaessa laajentaa stereotyypeillä
• Mallit, kaaviot: mahdollisuus tarkistaa koodia (vastaako
toteutus suunniteltua?)
• Mutta…mutta, aina
arkkitehtuuridokumentaatiossa/kuvauksessa ei aina
tarvita/käytetä UML-malleja, kaavioita jne.
Kysyttävää?
70