Järjestelmä koostuu keskenään kommunikoivista komponenteista, mahdollisesti hajautettuja. Komponenttien palveluja ei tiedetä tarkasti etukäteen

Samankaltaiset tiedostot
Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit kevät

Viestinvälitysarkkitehtuurit

Viestinvälitysarkkitehtuurit Lähtökohta:

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Ohjelmistoarkkitehtuurit Kevät 2014 Arkkitehtuurityylit vol 2

Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2

Viestinvälitysarkkitehtuurit

6. Architectural styles

Palveluperustaiset arkkitehtuurityylit

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Ohjelmistoarkkitehtuurit. Kevät

7 Viestipohjaisten yritysjärjestelmien suunnittelumallit

Arkkitehtuurityylejä ja ratkaisumalleja

Johdanto Näkökulmat tuoterunkoihin perustuvaan ohjelmistokehitykseen: liiketoiminta, organisaatio, prosessi, tekninen Tuoterunkojen etuja ja ongelmia

6. Arkkitehtuurityylit

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Tapahtumapohjainen ohjelmointi

Suunnittelumalleja, MVC. Juha Järvensivu 2008


Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit. Kevät

6. Arkkitehtuurityylit

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Johannes Koskinen. Osittavat arkkitehtuurityylit

Darwin: Tutkimusprojektin esittely

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Veto-visualisointityökalu

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Graafinen käyttöliittymä, osa 1

Ohjelmistoarkkitehtuurit. Kevät 2014 Kertausta

Esimerkki: Auton toiminnan monitorointijärjestelmä

11. Tuoterunkoarkkitehtuurit

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Tuoterunkoarkkitehtuurit. Ohjelmistoarkkitehtuurit kevät Uudelleenkäyttö. Johannes Koskinen.

Ohjelmistoarkkitehtuuri

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

3. Komponentit ja rajapinnat

Harjoitustehtävät ja ratkaisut viikolle 48

Oppimistavoitteet. Arkkitehtuurityylejä ja patterneja. Tyylien ja patternien käytöstä. Kolmitasoarkkitehtuuri (N-Tier) Kolmitasoarkkitehtuuri (N-Tier)

Arkkitehtuurityylejä ja patterneja

HSMT J2EE & EJB & SOAP &...

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Ohjelmistoarkkitehtuurit Kevät Johannes Koskinen Esimerkki: Auton toiminnan monitorointijärjestelmä

Ohjelmistoarkkitehtuurit. Kevät

HOJ J2EE & EJB & SOAP &...

Hakemistojen sisällöt säilötään linkitetyille listalle.

Ohjelmistoarkkitehtuurit. Kevät

Message Broadcasting. Käyttöympäristö. Message Broadcasting -laajennuksen asentaminen. Viestien luominen

11. Tuoterunkoarkkitehtuurit

Kansallinen palveluväylä Kuntien kokonaisarkkitehtuuri -seminaari

Ohjelmistoarkkitehtuurit Kevät 2014

12. Kehysarkkitehtuurit

Ohjelmistotekniikan menetelmät, arkkitehtuuria ja rajapintoja

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

9. Ohjelmistoarkkitehtuurien arviointi

10. Muunneltavuuden hallinta: variaatiopisteet

14. Luento: Kohti hajautettuja sulautettuja järjestelmiä. Tommi Mikkonen,

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

9. Muunneltavuuden hallinta

Järjestelmäarkkitehtuuri (TK081702) SOA, Service-oriented architecture SOA,

HTML5 - Vieläkö. Antti Pirinen

Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta

Ohjelmistoarkkitehtuurit. Kevät 2014

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Aurinkoenergiajärjestelmien etäseurantajärjestelmä

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Hirviö. Design Patterns

Hirviö. Design Patterns

Android ohjelmointi Tunti 2. Käyttöliittymät ja resurssit

Ohjelmistojen mallintaminen, kesä 2010

The OWL-S are not what they seem

Sovellusarkkitehtuurit

Käyttöohje. Energent MagiCAD plugin

Kehitysohje. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

Ohjelmistojen mallintaminen, käyttötapauksiin perustuva vaatimusmäärittely

Kehyspohjainen ohjelmistokehitys

Ohjelmistotuotanto. Luento

Osio 4: Graafinen käyttöliittymä

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

Graafisen käyttöliittymän ohjelmointi

Ohjelmoinnin perusteet Y Python

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Ohjeita informaation saavutettavuuteen

Ohjelmistoarkkitehtuurit kevät

4. Lausekielinen ohjelmointi 4.1

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

- Valitaan kohta Asetukset / NAT / Ohjelmallinen palvelin - Seuraavassa esimerkki asetuksista: valitaan käytössä oleva ohjelmistorajapinta

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VIII Suunnittelumallit Observer ja State

LaCRIS-ohjeet tiedekuntien ja yksiköiden henkilöstöhallinnolle Liisa Hallikainen

Integrointi. Ohjelmistotekniikka kevät 2003

2 Ohjelmistoarkkitehtuurien kuvaus

Helia Ohjelmointitaito Tuomas Kaipainen Mermit Business Applications Oy Mermit Business Applications

TIE Ohjelmistojen suunnittelu

Valikot ja työkalupalkit. 2008

Transkriptio:

Viestinvälitysarkkitehtuurit 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 Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Rajapinnat vs. viestit Komponentit, Asiakas-palvelin, Web palvelut (SOA), C++, Java func A(X ) Rajapinta toteuttaa Palvelun tarjoaja Palvelun pyytäjä Viestinvälitysarkkitehtuurit, palveluväylät (ESB), Smalltalk Viesti ACTION = A PAR1 = X lukee Viestin välittäjä Palvelun tarjoaja Palvelun tarjoaja Rajapinta kertoo mitä tehdään ja millä tiedolla, viesti voi kertoa mitä tahansa (mitä tehdään, kuka tekee, millä tiedolla). Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 2

Viestinvälitysarkkitehtuuri: perusidea rekisteröidyt komponentit 1) luo viesti 2) lähetä välittäjälle 3) päätä vastaanottaja(t) ja välitä viesti sille/niille Viesti Viestinvälittäjä Komponenttien yhteinen rajapinta: receive(message) rekisteröidyt komponentit 4) vastaanota 5) tulkitse/ prosessoi viesti Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 3

Esimerkkejä Koneiden ohjausjärjestelmät Älykoti Yrityksen liiketoimintojen hallintajärjestelmä Yleisesti: hajautetut järjestelmät, löyhää integrointia vaativat järjestelmät Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 4

Palveluperustainen viestinvälitysarkkitehtuuri Asiakas Palvelupyyntö Palvelupyyntö Asiakas Viestinvälittäjä Palvelija Palvelun tulos Palvelun tulos Asiakas Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 5

Esimerkki: Auton huoltotarkkailujärjestelmä moottori cpu jarrut vaihdelaatikko CAN väylä (Controller Area Network) Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 6

Auton huoltotarkkailujärjestelmä: komponenttikaavio CANBusExaminer MessageDispatcher send(msg) register(msgtype,component) Messenger ServiceComponent receive(msg) BrakeUnit recordusage() checkcondition() getstate() setstate() EngineUnit recordusage() checkcondition() getstate() setstate() Sovitin muuntaa viestin palvelukutsuksi ja toisin päin. Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 7

Palveluväylä (ESB) Kanavat toteutetaan yhtenäisellä väyläarkkitehtuurilla Voi sisältää palvelurekisterin (a la SOA) Sisältää eri reititysmahdollisuuksia Koko käsittelyprosessia ohjaa oma yksikkönsä ( Välittäjä ) Vastauksen vaativat kommunikaatiot edellyttävät erityisiä ratkaisuja Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 8

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 Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 9

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) Olemassaoleva infratuki teknologiariippuvaista Syntyy helposti implisiittisiä riippuvuuksia yksiköiden välille Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 10

Harjoitus Topologia Lineaarinen Keskitetty Riippuu palvelusta Kerros Asiakas-palvelin Rajapinnat Ei riipu palvelusta Tietovuo Viestinvälitys Täytä arkkitehtuurityylien nimillä Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 11

Malli-näkymä-ohjain arkkitehtuurit (Model-View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. 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 Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 12

Perusajatus komento vaste Ohjain Näkymä sovelluksen toiminto Malli sovelluksen tilan muutos Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 13

Esimerkiksi Näkymä TextField Malli Sovelluslogiikka Button Kuuntelija Ohjain Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 14

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 Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 15

MVC malli Observer Model update() * update() attach(observer) detach(observer) notify() getdata() service() attach() getdata() View activate() display() update() Controller handleevent() update() attach() service() Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 16

MVC vuorovaikutus Controller Model View handle- Event service suorita toiminto notify update getdata display Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 17

Kerroksittainen MVC (Esim. verkonhallintasovellukset) Näkymä Käyttäjän komennot Toiminto pyynnöt Ohjain Sovelluslogiikka Model Sovellusaluelogiikka Näytä tulokset Tuota tulokset Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 18

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 Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 19

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) Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 20

Tulkkiarkkitehtuurin perusidea toimintakuvauksen sisäinen esitys Tuloste Jokin toiminnallinen kuvaus (teksti, XML, graafinen, ym.) Tulkki kutsuu Konkreettinen suoritusalusta noudattaa toteutus Syöte Kielen määritys Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 21

Esimerkki 1: Java käännös toimintakuvauksen sisäinen esitys Tavukoodi Ohjelman tulokset Java-ohjelma JVM (C-ohj) kutsuu Suoritusalusta (C ympäristö) noudattaa toteutus Ohjelman syöte Javan määritys Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 22

Esimerkki 2: Taulukkolaskenta Laskettu taulukko sis.esitys Taulukkoskripti Skriptitulkki Taulukkolaskenta noudattaa toteutus Skriptikielen määritys Taulukon alkion arvo Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 23

Esimerkki 3: SQL kyselyt DBMS SQL-kysely SQLtulkki Tietokanta Kyselyn tulos Sovellus Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 24

Esimerkki 4: Tulkitseva DSL toimintakuvauksen sisäinen esitys Tuloste Sovelluksen kuvaus DSL-kielellä Tulkki kutsuu API Alusta noudattaa toteutus Syöte DSL-kielen määritys DSL = Domain-Specific Language Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 25

Tulkin suunnittelu: Tulkki-suunnittelumalli (Interpreter) Ongelma: miten esittää tulkittava ohjelma olioina? Ratkaisu: Interpreter AbstractStruct interpret(rep) * TerminalStruct interpret(rep) CompositeStruct interpret(rep) Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 26

Tulkki-suunnittelumallin johtaminen: Kielen rakenteiden esitys luokkina Ongelma: Miten esittää kielen rakenteet luokkina? Esimerkiksi: Script ::= "SCRIPT" Action {";" Action} "END" Action ::= "IF" Expr "THEN" Action "END" identifier "(" Expr ") Expr ::=... Luokkamalli? Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 27

Välisymbolit ja rakenteiset loppusymbolit esitetään luokkina 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) Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 28

Mitä tuotossääntö merkitsee luokkien kannalta? Ehdotus: Tuotossääntö merkitsee sitä, että oikean puolen luokat ovat osa-suhteessa vasemman puolen luokkiin. A ::= B C tarkoittaa: OK, mutta entä A ::= B C D E? A 1 1 B C 0..1 A 0..1 0..1 0..1 B C D E Ei hyvä... Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 29

Vaihtoehtoiset rakenteet aliluokiksi A ::= B C D E => A ::= A1 A2 A1 ::= B C A2 ::= D E A A1 A2 B C D E Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 30

Rekursiiviset rakenteet Statement ::= CompoundStatement AssignmentStatement CompoundStatement ::= { StatementList } StatementList ::= {Statement ; } Statement * AssignmentStatement CompoundStatement Rekursiokooste Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 31

Script interpret() 1..* Action interpret() 1 Esimerkki Script ::= "SCRIPT" Action {";" Action} "END" Action ::= CondAction PrimAction CondAction ::= "IF" Expr "THEN" Action "END" PrimAction ::= identifier "(" Expr ")" Expr ::=... CondAction PrimAction Expr interpret() interpret() 1 1 val(): float 1 Identifier name(): String Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 32

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) Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 33