ohjelmistoarkkitehtuurit kevät 2014, luento 3 ... · (use case view) • loogiset näkymät...
TRANSCRIPT
Ohjelmistoarkkitehtuurit
Kevät 2014, luento 3
Arkkitehtuurin kuvaus
(mallinnus)
(Samuel Lahtinen, Johannes Koskinen)
http://www.cs.tut.fi/~ohar/
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.
Ohjelmistoarkkitehtuurien
kuvaaminen
3
• Arkkitehtuurin kuvaukseen liittyvät käsitteet
• Arkkitehtuurikuvaukset eri tasoilla
• Arkkitehtuurinäkökulmat ja kuvaustyypit
• UML arkkitehtuurien kuvauskielenä
• Arkkitehtuuridokumentit
• Yhteenvetoa
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 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
Lisäys (ISO/IEC 42010)
7
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)
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ä
Arkkitehtuurikuvaukset eri tasoilla
10
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
11
Kysyttävää?
12
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
Arkkitehtuurikuvauksen tyypit
14
• Rakenne - Käyttäytyminen
• Staattinen - Dynaaminen
• Esimerkki – Määrittelevä
Toisistaan riippuvia!
UML
15
•Mitä hyvää?
•Mitä huonoa?
•Mikä on tuttua?
UML arkkitehtuurien kuvauskielenä
16
Kaaviotyypit
Esimerkki:
Autonvuokrausjärjestelmä
17
Deliver vehicle
Return vehicle
Service
Client Clerk
<<include>>
CarRentalSystem
Service
Reserve vehicle
Skenaarionäkymä: käyttötapauskaavio
18
Car
request
Make
reservation
Make bill
Pay Prepare
car
Registrate
renting
Client Clerk
Take car
:Bill
[open]
:Bill
[paid]
Tarkennettu skenaarionäkymä: aktiviteettikaavio
19
Aktiviteettikaavio, elementtityypit
20
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
Suhteellista…
22
Metamalli ja
luokkakaaviomääritelmä
23
: RentManager aCar: Car
setReturned
UI
return(aCar)
: Garage
store(aCar)
update
Looginen näkymä (käyttäytyminen):
sekvenssikaavio
24
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ä
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
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
SiteWorkStation: Client
VehicleServer: Server
: Transaction
Manager
: Database
: GUI
: Rent
Manager <<Corba>>
: Item
Manager
Fyysinen näkymä:
sijoittelukaavio
28
29
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
Luokkakaavio & collaboration-
elementti…
31
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
Harjoitus: UML ja kuvaustyypit
33
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
37
Sekvenssi-
kaaviot
Luokka-
kaaviot Tilakaaviot
Aktiviteetti-
kaaviot
Kysyttävää?
39
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)
Metamalli ja luokkakaavio…
41
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
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:
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:
(E)MOF oikeasti (pieni otos)
45
(tämä osa
on yhteistä
UML:n meta-
mallin kanssa)
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)?
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
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
Yleinen Tyyppiolio (Type
Object) suunnittelumalli
49
Tunnetaan myös nimellä
Meta Object tai
Reflection pattern
Esimerkki
50
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.)
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:
Esimerkki: CORBA profiili
(OMG)
53
Stereotyyppimäärittelyjä:
Esimerkki: CORBA profiili (OMG)
54
Rajoitteiden määrittelyjä:
Rajoitteiden kuvauskieli: OCL (Object Constraint Language)
Missäs malli/metamallijuttua
voisi käyttää?
55
Kysyttävää?
56
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
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
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
Arkkitehtuuridokumentit
(jatkuu)
• Rajapintadokumentti • järjestelmän rajapinnan kuvaus, tyypillisesti API
• täydentää muita arkkitehtuuridokumentteja
• käytetään komponenttien suunnittelun ja
toteutuksen perustana
60
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
Arkkitehtuuridokumentit
(jatkuu)
• Tuotearkkitehtuuridokumentti • alustan käyttö + tuotekohtaiset
arkkitehtuuriratkaisut
• käytetään tuotteen yksityiskohtaiseen
suunnitteluun, testaukseen ja ylläpitoon
• konkreettinen arkkitehtuuri
62
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
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.
Kysyttävää?
65