![Page 1: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/1.jpg)
Ohjelmistoarkkitehtuurit
Kevät 2014, luento 3
Arkkitehtuurin kuvaus
(mallinnus)
(Samuel Lahtinen, Johannes Koskinen)
http://www.cs.tut.fi/~ohar/
![Page 2: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/2.jpg)
Ajankohtaisuuksia
2
• Huomenna ensimmäinen vierailuluento,
Janne Viitala, Sandvik
• Ensi viikon viikkoharjoitukset keskittyvät
mallintamiseen, piirtelyyn, tehdään
tietokoneluokassa (TTY:llä TC217 tai Tc205)
(infoa myöhemmin)
• Muistakaa ilmoittautua harjoitustyöhön, jos
teillä ei ole ryhmää, luokaa uusi yksin. Me
ryhmäytämme teidät dediksen jälkeen.
![Page 3: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/3.jpg)
Ohjelmistoarkkitehtuurien
kuvaaminen
3
• Arkkitehtuurin kuvaukseen liittyvät käsitteet
• Arkkitehtuurikuvaukset eri tasoilla
• Arkkitehtuurinäkökulmat ja kuvaustyypit
• UML arkkitehtuurien kuvauskielenä
• Arkkitehtuuridokumentit
• Yhteenvetoa
![Page 4: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/4.jpg)
Arkkitehtuurien kuvaaminen
4
![Page 5: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/5.jpg)
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)
![Page 6: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/6.jpg)
Arkkitehtuurin kuvaukseen liittyvät
käsitteet (IEEE 1471-2000)
6
Mission
System Environment
Stakeholder
Architecture
Concern
View
Architectural
description
Rationale has an
described by provides
has
fulfills
has organized by
identifies
1..*
1..*
1..*
1..*
1..*
1..*
1
Viewpoint
1..*
conforms to is addressed to
1..*
selects
![Page 7: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/7.jpg)
Lisäys (ISO/IEC 42010)
7
![Page 8: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/8.jpg)
Arkkitehtuuripäätökset
8
• 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)
![Page 9: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/9.jpg)
Arkkitehtuurinäkymät
9
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ä
![Page 10: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/10.jpg)
Arkkitehtuurikuvaukset eri tasoilla
10
Referenssi-
arkkitehtuuri
Meta-
arkkitehtuuri
Tuoterunko-
arkkitehtuuri
Tuote-
arkkitehtuuri
Konkreettinen
arkkitehtuuri
Yksityiskohtai-
nen suunnittelu
Lähdekoodi
perustuu
yleistys
![Page 11: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/11.jpg)
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
11
![Page 12: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/12.jpg)
Kysyttävää?
12
![Page 13: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/13.jpg)
Arkkitehtuurinäkökulmat ja kuvaustyypit
13
• 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
![Page 14: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/14.jpg)
Arkkitehtuurikuvauksen tyypit
14
• Rakenne - Käyttäytyminen
• Staattinen - Dynaaminen
• Esimerkki – Määrittelevä
Toisistaan riippuvia!
![Page 15: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/15.jpg)
UML
15
•Mitä hyvää?
•Mitä huonoa?
•Mikä on tuttua?
![Page 16: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/16.jpg)
UML arkkitehtuurien kuvauskielenä
16
Kaaviotyypit
![Page 17: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/17.jpg)
Esimerkki:
Autonvuokrausjärjestelmä
17
![Page 18: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/18.jpg)
Deliver vehicle
Return vehicle
Service
Client Clerk
<<include>>
CarRentalSystem
Service
Reserve vehicle
Skenaarionäkymä: käyttötapauskaavio
18
![Page 19: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/19.jpg)
Car
request
Make
reservation
Make bill
Pay Prepare
car
Registrate
renting
Client Clerk
Take car
:Bill
[open]
:Bill
[paid]
Tarkennettu skenaarionäkymä: aktiviteettikaavio
19
![Page 20: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/20.jpg)
Aktiviteettikaavio, elementtityypit
20
![Page 21: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/21.jpg)
RentableItem
Car
RentableStorage
regnumber
RentManager
reserve(Car,Client)
release(Car)
engage(Car)
return(Car)
update()
setReturned
setReserved
setActive
setId
PrivateClient
id
name
address
creditcard
Transaction
kind
info
setKind
setInfo
TransactionManager
handleTransaction
*
1
1
1
creates
uses
*
manages
*
1
rents
setReturned
Database Feature
code
description
*
<<interface>>
LocationControl
getPos(Car)
ItemManager 1 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
21
![Page 22: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/22.jpg)
Suhteellista…
22
![Page 23: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/23.jpg)
Metamalli ja
luokkakaaviomääritelmä
23
![Page 24: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/24.jpg)
: RentManager aCar: Car
setReturned
UI
return(aCar)
: Garage
store(aCar)
update
Looginen näkymä (käyttäytyminen):
sekvenssikaavio
24
![Page 25: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/25.jpg)
aCar: Car
: Garage
UI : RentManager 1: return(aCar)
1.2: store(aCar)
1.1: setReturned
1.3: update()
Looginen näkymä (käyttäytyminen):
yhteistoimintakaavio/…
25
Communications diagram, UML 2.0, yksinkertaistettu Collaboration diagram (UML 1.x)
Oliokaaviota, sekvenssikaaviota yhdisteltynä, linkeille numerointia kertomassa
kutsujärjestyksestä
![Page 26: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/26.jpg)
Piirrä tilakaavio
komentorivikäyttöliittymän
käytöstä (esim. Unix-konsoli):
ota mukaan
sisäänkirjautuminen, ohjelmien
käyttöä ja käytön
lopettamisesta
(uloskirjautuminen)
26
![Page 27: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/27.jpg)
Available
Service
Reserved
Active return /
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
27
![Page 28: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/28.jpg)
SiteWorkStation: Client
VehicleServer: Server
: Transaction
Manager
: Database
: GUI
: Rent
Manager <<Corba>>
: Item
Manager
Fyysinen näkymä:
sijoittelukaavio
28
![Page 29: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/29.jpg)
29
![Page 30: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/30.jpg)
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)
30
![Page 31: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/31.jpg)
Luokkakaavio & collaboration-
elementti…
31
![Page 32: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/32.jpg)
Muunneltavuusnäkymä:
luokkakaavio
32
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
![Page 33: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/33.jpg)
Harjoitus: UML ja kuvaustyypit
33
Rakenne Käyttäy-
tyminen
Staat-
tinen
Dynaa-
minen
Esimerkki Määrittelevä
Sekvenssi
kaavio
Luokka
kaavio
Tila
kaavio
![Page 34: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/34.jpg)
UML-kaavioilla kuvataan osittain
päällekkäisiä asioita
37
Sekvenssi-
kaaviot
Luokka-
kaaviot Tilakaaviot
Aktiviteetti-
kaaviot
![Page 35: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/35.jpg)
Kysyttävää?
39
![Page 36: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/36.jpg)
Metakieleen perustuva kielten määrittely
40
P in L
L in M M in M
P:n ilmentymä
noudattaa
(ilmentymä)
noudattaa
(ilmentymä)
noudattaa
(ilmentymä)
noudattaa
(ilmentymä)
M = Metakieli
L = Kieli
P = jokin kuvaus kielellä
(malli, ohjelma tms)
![Page 37: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/37.jpg)
Metamalli ja luokkakaavio…
41
![Page 38: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/38.jpg)
Vrt. tekstuaaliset kielet ja BNF
42
Produktio = Vasen ”=” Oikea
Vasen = Symboli
Oikea = Symboli*
Symboli = …
Class = ”class” id InheritanceClause ExtensionClause ”{” …
InheritanceClause = ”inherit” IdList
InheritanceClause =
class myClass inherits yourClass { …
ohjelman suorituspolku
ilmentymä
ilmentymä
ilmentymä
BNF:n määrittely
Javan määrittely
Javan-ohjelman määrittely
Java-ohjelman suoritus
![Page 39: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/39.jpg)
UML:n kieliarkkitehtuuri
43
Class
ClassUML AssociationUML Operation
Person
myCar(): Car
Car
owner(): Person
owns
Meta-metamalli
(MOF) Meta-Object Facility
UML:n
metamalli
Järjestelmän
malli
Järjestelmä
Association
<<stereotype>>
bean
<<bean>>
Account
holder(): Person
has
- ei semantiikkaa
- vrt. BNF
Yksinkertaistaen:
![Page 40: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/40.jpg)
UML:n kieliarkkitehtuuri
44
Class
ClassUML AssociationUML Operation
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:
![Page 41: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/41.jpg)
(E)MOF oikeasti (pieni otos)
45
(tämä osa
on yhteistä
UML:n meta-
mallin kanssa)
![Page 42: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/42.jpg)
Uuden kuvauskielen määrittely:
Esimerkki
46
• Oletetaan, että halutaan kuvata hierarkkisia arkkitehtuurirakenteita
graafisesti, esim.:
A B C
D E
• Miten määritellään tähän tarvittava kuvauskieli AML (Architecture Modeling Language)?
![Page 43: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/43.jpg)
Kielen määrittely
47
P in L
L in M M in M
P:n ilmentymä
noudattaa
(ilmentymä)
noudattaa
(ilmentymä)
noudattaa
(ilmentymä)
noudattaa
(ilmentymä)
yksinkertaistettu
MOF in MOF
Class AssocEnd
multiplicity
kind Association
2
* 1
1
Architecture
Subsystem
*
*
MySystem: Subsystem
A: Subsystem
MyArch: Architecture
B: Subsystem
visualisointi
A
MySystem
B
AML in MOF
MyArch in AML
![Page 44: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/44.jpg)
Yksinkertainen konkreettinen
tulkinta metamallille
Kuvittele, että olet toteuttamassa jonkin
graafisen esitystavan (laatikoita ja nuolia ym.)
editoria. Millaisen sisäisen olioesityksen
suunnittelisit tämän esitystavan mukaisille
kuville?
Metamalli = tämän olioesityksen luokkakaavio
malli = yksittäinen kuva
48
![Page 45: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/45.jpg)
Yleinen Tyyppiolio (Type
Object) suunnittelumalli
49
Tunnetaan myös nimellä
Meta Object tai
Reflection pattern
![Page 46: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/46.jpg)
Esimerkki
50
![Page 47: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/47.jpg)
Stereotyypit ja profiilit UML:ssä
51
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.)
![Page 48: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/48.jpg)
Stereotyypit
52
Class
ClassUML AssociationUML Operation
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:
![Page 49: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/49.jpg)
Esimerkki: CORBA profiili
(OMG)
53
Stereotyyppimäärittelyjä:
![Page 50: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/50.jpg)
Esimerkki: CORBA profiili (OMG)
54
Rajoitteiden määrittelyjä:
Rajoitteiden kuvauskieli: OCL (Object Constraint Language)
![Page 51: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/51.jpg)
Missäs malli/metamallijuttua
voisi käyttää?
55
![Page 52: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/52.jpg)
Kysyttävää?
56
![Page 53: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/53.jpg)
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
57
![Page 54: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/54.jpg)
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
58
![Page 55: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/55.jpg)
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
59
![Page 56: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/56.jpg)
Arkkitehtuuridokumentit
(jatkuu)
• Rajapintadokumentti • järjestelmän rajapinnan kuvaus, tyypillisesti API
• täydentää muita arkkitehtuuridokumentteja
• käytetään komponenttien suunnittelun ja
toteutuksen perustana
60
![Page 57: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/57.jpg)
Arkkitehtuuridokumentit
(jatkuu)
• Tuoterunkoarkkitehtuuridokumentti • alustan arkkitehtuuri + säännöt, joiden mukaan
sovelluksia rakennetaan
• käytetään alustan yksityiskohtaiseen suunnitteluun
ja ohjaamaan tuotekehitystä
• konkreettinen + meta-arkkitehtuuri
61
![Page 58: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/58.jpg)
Arkkitehtuuridokumentit
(jatkuu)
• Tuotearkkitehtuuridokumentti • alustan käyttö + tuotekohtaiset
arkkitehtuuriratkaisut
• käytetään tuotteen yksityiskohtaiseen
suunnitteluun, testaukseen ja ylläpitoon
• konkreettinen arkkitehtuuri
62
![Page 59: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/59.jpg)
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
63
![Page 60: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/60.jpg)
2.6 Yhteenvetoa
64
• 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.
![Page 61: Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät Ohjelmistoyksiköiden vastuut • "4+1" (Kruchten)Prosessinäkymät Prosessit ja niiden](https://reader034.vdocuments.site/reader034/viewer/2022052005/60191be01728964dc3465410/html5/thumbnails/61.jpg)
Kysyttävää?
65