ohjelmistoarkkitehtuurit kevät 2014, luento 3 ... · (use case view) • loogiset näkymät...

61
Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 Arkkitehtuurin kuvaus (mallinnus) (Samuel Lahtinen, Johannes Koskinen) http://www.cs.tut.fi/~ohar/

Upload: others

Post on 29-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

: 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Kysyttävää?

65