Ohjelmistoarkkitehtuurit Kevät 2016, luento 3 Arkkitehtuurin...

Preview:

Citation preview

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

Recommended