50
Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2 Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 9.2.2016 1 Ohjelmistoarkkitehtuurit 2016

Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Ohjelmistoarkkitehtuurit

Kevät 2016

Arkkitehtuurityylit vol 2

Samuel Lahtinen

http://www.cs.tut.fi/~ohar/

9.2.2016 1Ohjelmistoarkkitehtuurit 2016

Page 2: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Aikaisempaa & tänään

• Arkkitehtuurityylit

– Tuttua kamaa pipes & filters jne.

• Tänään viestinvälitys, asiakas-palvelin, tulkki…

9.2.2016Ohjelmistoarkkitehtuurit 2016 2

Page 3: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Viestinvälitysarkkitehtuurit

3

Lähtökohta:

• Järjestelmä koostuu keskenään kommunikoivista

komponenteista, mahdollisesti hajautettuja

• Komponenttien palveluja ei tiedetä tarkasti etukäteen

• Komponentteja ja niiden lukumäärää ei tiedetä tarkasti

etukäteen

• Järjestelmässä liikkuvan tiedon laatua ei tunneta tarkasti

etukäteen

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 4: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Viestinvälitysarkkitehtuuri: perusidea

4

Viesti

3) päätä vastaanottaja(t)

ja välitä viesti sille/niille

1) luo viesti

4) vastaanota

rekisteröidyt

komponentitKomponenttien

yhteinen rajapinta:

receive(Message)

Viestinvälittäjä

rekisteröidyt

komponentit

2) lähetä välittäjälle

5) tulkitse/

prosessoi

viesti

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 5: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Rajapinnat vs. viestit

5

Palvelun

pyytäjä

Rajapinta

Viesti

Palvelun

tarjoaja

toteuttaa

Palvelun

tarjoaja

lukee

Palvelun

tarjoaja

Rajapinta kertoo mitä tehdään ja millä tiedolla, viesti voi kertoa mitä tahansa (mitä

tehdään, kuka tekee, millä tiedolla).

Viestin

välittäjä

Viestinvälitysarkkitehtuurit,

palveluväylät (ESB)

Komponentit,

Asiakas-palvelin,

Web palvelut (SOA),

C++, Java

func A(X…)

ACTION = A

PAR1 = X

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 6: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Esimerkkejä

• Koneiden ohjausjärjestelmät

• Iot-himmelit

• Multimodaalisia järjestelmiä, komentokeskeiset

arkkitehtuurit

• (WPF, Qt:n osat)

• Yrityksen liiketoimintojen hallintajärjestelmä

• Yleisesti: hajautetut järjestelmät,

löyhää integrointia vaativat järjestelmät

9.2.2016Ohjelmistoarkkitehtuurit 2016 6

Page 7: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Palveluperustainen

viestinvälitysarkkitehtuuri

7

Asiakas Viestinvälittäjä Palvelija

Palvelupyyntö Palvelupyyntö

Palvelun tulosPalvelun tulos

Viestinvälittäjä huolehtii siitä, että

tulos menee oikealle komponentille

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 8: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Esimerkki: Auton viestiväylä

8

moottorinohjausajotietokone

vaihdelaatikko

jarrut

CAN väylä (Controller Area Network)

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 9: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Auto ja johdotukset ennen

väylää

9.2.2016Ohjelmistoarkkitehtuurit 2016 9

Page 10: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Väylän kera

9.2.2016Ohjelmistoarkkitehtuurit 2016 10

Page 11: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Auton huoltotarkkailujärjestelmä:

komponenttikaavio

11

MessageDispatcher

send(Msg)

register(MsgType,Component)

ServiceComponentreceive(Msg)

BrakeAdapter

CANBusExaminer

Messenger

EngineMonitor

recordUsage()

getState()

Sovitin muuntaa viestin

palvelukutsuksi

EngineAdapter

returnState

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 12: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Viestinvälitys ja viestit

9.2.2016Ohjelmistoarkkitehtuurit 2016 12

• Viestisisältö/muoto olennaisessa asemassa

• Suoritusohjeita, dataa, paluupyyntö

• Kenelle tarkoitettu

• Komponenteilla ID, id:n perusteella tehtävä

priorisointi

• Mahdollisuus useampiin eri väyliin,

viihdelaitteet, ajoneuvon hallinta,

mukavuuslaitteet

Page 13: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

9.2.2016Ohjelmistoarkkitehtuurit 2016 13

https://eewiki.net/download/attachments/27295747/CAN_Network.jpg?version=2&modificationDate=1382572042097&api=v2

Page 14: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

CAN-viestit, esimerkki

9.2.2016Ohjelmistoarkkitehtuurit 2016 14

• SOF-start of frame

• Message id – viestin tunniste, mitä pienempi, sen korkeampi prioriteetti

• Control – protokollaan ja viestin sisällön pituuteen liittyvää tietoa

• Data (field) – viestisisältö, esim. 0-8 tavua

• CRC – (cyclic redundance check) tarkistearvo(15 bittinen)

• ACK – joku node on käsitellyt viestin (ei välttämättä tarkoitettu kohde)

• EOF (end of frame)

Page 15: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Esihistoriaa, sulautettujen

ohjelmistojen

simulointiympäristö

9.2.2016Ohjelmistoarkkitehtuurit 2016 15

kattilakattila

Pohja-

venttiili

Pohja-

venttiili

Prosessin

ohjaus

Prosessin

ohjaus

Kattilan

ctrl

Kattilan

ctrl

lämmityslämmitys

lämmitinlämmitinanturianturi

Simulaation

ohjaus

Simulaation

ohjaus

Liitin (output)

Liitin (inpout)

laitelaite

prosessiprosessi

pumppupumppu

poltinpoltin

Page 16: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Esihistoriaa…

• Sisäinen toteutus, viestinvälittäjä jokaisessa

prosessissa, laitteet rekisteröityvät sille

(viestilähteet & vastaanottajat), nämä kertovat

olemassaolostaan ohjaukselle

• Simulaation ohjaus luo simulaatiomaailman,

hallitsee sitä (esim. Ajanhallinta), tekee yhteydet

(simulation kuvauksen perusteella)

• Viestinvälitys kaikessa kommunikaatiossa, viestit

9.2.2016Ohjelmistoarkkitehtuurit 2016 16

Page 17: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Viestityyppien & sisällön

määritys

• Viestinvälitysarkkitehtuurit viestejä

• Tärkeä määritellä viestien rakenne, sisältö,

mahdollinen virheiden hallinta jne.

• Erilaisia viestejä:

– Tapahtumaviestit, pyyntö-vastaus-viestit,

komentoviestit (remote procedure), dataviestit

(tiedon siirtoa)

9.2.2016Ohjelmistoarkkitehtuurit 2016 17

Page 18: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Viestinvälitysarkkitehtuurin

etuja

• Helppo muuttaa, lisätä ja poistaa komponentteja tai sovelluksia

• Vikasietoinen (esim. jos viestillä ei vastaanottajaa), voidaan esim. toistaa viestin lähettämistä

• Joustava järjestelmäkonfiguraatio

• Sallii heterogeeniset järjestelmät, sovellusintegraation

• Sallii sekä synkronisen että asynkronisen kommunikoinnin

9.2.2016Ohjelmistoarkkitehtuurit 2016 18

Page 19: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Viestinvälitysarkkitehtuurin

haittoja

• Tehokkuus: viestien kirjoittaminen ja lukeminen

• Vaikeampi toteuttaa, testata ja ymmärtää kuin

perinteinen

• Jotkut ”tavalliset” asiat vaativat erityistukea (esim.

tuloksen palautus, synkronisuus)

• Syntyy helposti implisiittisiä riippuvuuksia yksiköiden

välille, näennäisesti toisistaan riippumattomat

komponentit vaikeita ylläpitää, muuttaa (erityisesti

jos riippuvuuksia ei dokumentoitu)

9.2.2016Ohjelmistoarkkitehtuurit 2016 19

Page 20: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Harjoitus

20

Topologia

Rajapinnat

Lineaarinen Keskitetty

Riippuu

palvelusta

1 2

Ei riipu

palvelusta

3 4

Täytä arkkitehtuurityylien nimillä

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 21: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Kysyttävää?

Page 22: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Malli-näkymä-ohjain arkkitehtuurit

(Model-View-Controller, MVC)

Interaktiivisten järjestelmien

arkkitehtuuriratkaisu, jolla käyttöliittymä

erotetaan sovelluslogiikasta.

9.2.2016Ohjelmistoarkkitehtuurit 2016 23

Page 23: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Malli-näkymä-ohjain arkkitehtuurit

(Model-View-Controller, MVC)

• Lähtökohdat:

– Sovelluksen tilasta pitäisi pystyä antamaan erilaisia

näkymiä

– Käyttöliittymän pitäisi välittömästi heijastaa

sovelluksen tilan muutoksia

– Käyttöliittymää pitäisi olla helppo muuttaa

– Sovellus pitäisi voida kohtuullisella työllä siirtää

toiselle graafiselle alustalle

9.2.2016Ohjelmistoarkkitehtuurit 2016 24

Page 24: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Vastuut

Malli• Tarjoaa sovellukseen liittyvät loogiset toiminnot ja tiedot

• Rekisteröi sovelluksen tilasta kiinnostuneet näkymäkomponentit

• Ilmoittaa rekisteröityneille komponenteille tilan muutoksista

Näkymä• Huolehtii sovelluksen tilan näyttämisestä näytöllä

Ohjain• Ottaa vastaan käyttäjän komentoja

• Muuntaa komennot sovelluksen toiminnoiksi

9.2.2016Ohjelmistoarkkitehtuurit 2016 25

Page 25: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

MVC vuorovaikutus

26

Controller Model View

handle-

Event

service

notify

updatedisplay

getData

suorita toiminto

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 26: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

MVC:n edut ja ongelmat

Etuja• Helppo toteuttaa useita näkymiä samaan tietoon

• Kaikki näkymät ovat automaattisesti synkronoituja

• Uusia näkymiä voidaan ajoaikana liittää järjestelmään

• Käyttöliittymän ulkoasu suhteellisen helposti vaihdettavissa

Ongelmia• Mahdollisesti turhia näkymien päivityskutsuja

• Mallidatan kyselyt voivat lisätä suoritusaikaa

• (yksinkertaiset sovellukset, paljon ylimääräistä työtä)

9.2.2016Ohjelmistoarkkitehtuurit 2016 27

Page 27: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Kysyttävää?

Page 28: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Tulkkiarkkitehtuurit

Tarve antaa toiminnallisia kuvauksia syötteenä

järjestelmälle, esimerkiksi:

• tarve yhdistellä primitiivisiä toimintoja eri tavoin,

jotka eivät ole tiedossa etukäteen

• tarve erottaa looginen, abstrakti suoritusalusta

konkreettisesta (esim. jälkimmäisen vaihtamisen

helpottamiseksi)

9.2.2016Ohjelmistoarkkitehtuurit 2016 29

Page 29: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Tulkkiarkkitehtuurin perusidea

30

Jokin toiminnallinen

kuvaus

(teksti, XML, graafinen,

ym.)

Tulkki

Syöte

Tuloste

Konkreettinen

suoritusalusta

Kielen määritys

noudattaa

toimintakuvauksen

sisäinen esitys

kutsuu

toteutus

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 30: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Esimerkki 1: Java

31

Java-ohjelma JVM

Ohjelman

syöte

Ohjelman

tulokset

Javan määritys

noudattaa

toimintakuvauksen

sisäinen esitys

kutsuu

Tavukoodi

Suoritusalusta

(C ympäristö)

toteutus

käännös

(C-ohj)

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 31: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Esimerkki 2: Taulukkolaskenta

32

Taulukkoskripti Skripti-

tulkki

Taulukon

alkion arvo

Laskettu

taulukko

Taulukko-

laskenta

Skriptikielen

määritys

noudattaatoteutus

sis.esitys

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 32: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Esimerkki 3: SQL kyselyt

33

SQL-kyselySQL-

tulkki

Kyselyn

tulos

Tietokanta

Sovellus

DBMS

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 33: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Esimerkki 4: Tulkitseva DSL

34

Sovelluksen kuvaus

DSL-kielellä Tulkki

Syöte

Tuloste

API

DSL-kielen

määritys

noudattaa

toimintakuvauksen

sisäinen esitys

kutsuuAlusta

DSL = Domain-Specific Language

toteutus

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 34: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Esimerkki 4: modattavissa

olevat pelit

35

Pelin data,

toimintaskriptitSkripti-

tulkki

Pelimoottori

Skriptikielen

Määritys

datatyypit

Häk-häk toteutus

sis.esitys

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 35: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Pelien modaus ja laajennokset

• Skyrim: http://www.creationkit.com/Main_Page

– työkalut karttojen, henkilöiden, tarinoiden, jne. luomiseen, Papyrus-

skriptit

– (myös Fallout 3/New Vegas, Oblivion)

• Medieval Total War 2:

http://medieval2.heavengames.com/m2tw/mod_portal/tutorials/inde

x.shtml

– Joukkojen, rakennusten määrittely tekstiasetustiedostojen avulla

• Civilization 5: http://modiki.civfanatics.com/index.php/Main_Page

– XML, Lua-skriptit

9.2.2016Ohjelmistoarkkitehtuurit 2016 36

Page 36: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Qt ja QtScript (Javascript)

• http://doc.qt.io/qt-5/qtscript-index.html

• QML-puoli c++:n ja QML-maailman, jossa myös

JavaScript-tuki, yhdisteleminen

9.2.2016Ohjelmistoarkkitehtuurit 2016 37

Page 37: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Kysyttävää?

Page 38: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Huom.

• Oman kielen ja tulkkijärjestelmän teko ei

välttämättä järkevin vaihtoehto, tarkasta aina

kelpaako joku olemassa oleva

9.2.2016Ohjelmistoarkkitehtuurit 2016 39

Page 39: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Tulkin suunnittelu: Tulkki-

suunnittelumalli (Interpreter)

40

InterpreterInterpreter

AbstractStruct

TerminalStruct CompositeStruct

interpret(rep) interpret(rep)

interpret(rep)

*

Ongelma: miten esittää tulkittava ohjelma olioina?

Mikä suunnittelumalli on samanlainen?

Ratkaisu:

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 40: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Tulkki-suunnittelumallin

johtaminen: Kielen rakenteiden

esitys luokkina

41

Ongelma: Miten esittää kielen rakenteet luokkina?

Esimerkiksi:

Script ::= "SCRIPT" Action {";" Action} "END"

Action ::= "IF" Expr "THEN" Action "END" | identifier "(" Expr ")”

Expr ::= ...

Luokkamalli?

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 41: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Välisymbolit ja rakenteiset

loppusymbolit esitetään luokkina

42

Esimerkiksi:

Script, Action, Expr, identifier => luokkia

Ei-rakenteiset loppusymbolit (avainsanat, erikoismerkit ym.):

SCRIPT

END

IF

THEN

;

(

)

Näitä tarvitaan vain jäsennyksen (ja lukemisen) tueksi,

eivät olennaisia (nk. konkreettinen syntaksi)

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 42: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Mitä tuotossääntö merkitsee

luokkien kannalta?

43

Ehdotus: Tuotossääntö merkitsee sitä, että oikean puolen luokat ovat

osa-suhteessa vasemman puolen luokkiin.

A

A ::= B C tarkoittaa:

C

B

1

1

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 43: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Mitä tuotossääntö merkitsee

luokkien kannalta?

44

Ehdotus: Tuotossääntö merkitsee sitä, että oikean puolen luokat ovat

osa-suhteessa vasemman puolen luokkiin.

entä A ::= B C | D E ?

A

C

B

ED

0..1

0..1

0..10..1

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 44: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Vaihtoehtoiset rakenteet

aliluokiksi

45

A ::= B C | D E => A ::= A1 | A2 A1 ::= B C A2 ::= D E

A

B C

A2A1

D E

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 45: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Rekursiiviset rakenteet

46

Statement ::= CompoundStatement | AssignmentStatement

CompoundStatement ::= ”{” StatementList ”}”

StatementList ::= {Statement ”;”}

Statement

AssignmentStatement CompoundStatement

*

Rekursiokooste

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 46: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Esim.

47

Script

Action

1..*

CondAction PrimAction Expr

Identifier

val(): floatinterpret()interpret()

interpret()

interpret()

name(): String

1

1

1

1

Script ::= "SCRIPT" Action {";" Action} "END"

Action ::= CondAction | PrimAction

CondAction ::= "IF" Expr "THEN" Action "END"

PrimAction ::= identifier "(" Expr ")"

Expr ::= ...

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 47: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Tulkkiarkkitehtuurin edut ja

ongelmat

Edut:

• Ajoaikainen looginen suoritusympäristö omassa hallinnassa

• Tulkittavaa kieltä suhteellisen helppo muuttaa

• Kielen merkitystä suhteellisen helppo muuttaa

• Alla oleva ympäristö voidaan helposti vaihtaa

Ongelmat:

• Suorituskyky (epäsuora, ei-natiivi suoritus; sisäisen esityksen muodostaminen)

• Tilankäyttö (ohjelman sisäinen esitys esim. Tulkki-mallilla voi vaatia paljon tilaa)

• Tulkkiosuuden toteutus ja suunnittelu, työläys, vaativuus (tulevaisuuden ennustaminen)

9.2.2016Ohjelmistoarkkitehtuurit 2016 48

Page 48: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Ääripäästä toiseen

• Hard-coding vs. soft-coding

9.2.2016Ohjelmistoarkkitehtuurit 2016 49

Page 49: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Yhteenvetoa

50

Arkkitehtuuri ~ Domain-tietämys + Tekninen tietämys

Domain-tietämys ~ domain-malli

Tekninen tietämys ~ arkkitehtuurityylit, suunnittelumallit, yleiset hyvät

käytännöt

9.2.2016Ohjelmistoarkkitehtuurit 2016

Page 50: Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2ohar/materiaali2016/luento07_tyylit2.pdf · 2016-02-09 · sisäinen esitys kutsuu Alusta DSL = Domain-Specific Language

Kysyttävää?