Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 ... · (use case view) • Loogiset näkymät...

Preview:

Citation preview

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

Recommended