ohjelmistoarkkitehtuurit kevät 2016 arkkitehtuurityylit vol...
TRANSCRIPT
![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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/34.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/35.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/36.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/37.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/38.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/39.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/40.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/41.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/42.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/43.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/44.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/45.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/46.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/47.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/48.jpg)
Ää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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/49.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022050505/5f969ade9428b64041002d0d/html5/thumbnails/50.jpg)
Kysyttävää?