Viestinvälitysarkkitehtuurit Lähtökohta:

Samankaltaiset tiedostot
Viestinvälitysarkkitehtuurit

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

Ohjelmistoarkkitehtuurit kevät

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

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Kevät 2014 Arkkitehtuurityylit vol 2

Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2

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

Palveluperustaiset arkkitehtuurityylit

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Viestinvälitysarkkitehtuurit

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Ohjelmistoarkkitehtuurit. Kevät

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Ohjelmistoarkkitehtuurit. Kevät

7 Viestipohjaisten yritysjärjestelmien suunnittelumallit

Ohjelmistoarkkitehtuurit kevät

Suunnittelumalleja, MVC. Juha Järvensivu 2008

Arkkitehtuurityylejä ja ratkaisumalleja

Graafinen käyttöliittymä, osa 1

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Johannes Koskinen. Osittavat arkkitehtuurityylit

6. Arkkitehtuurityylit

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Ohjelmistoarkkitehtuurit. Kevät 2014 Kertausta

Ohjelmistoarkkitehtuuri

6. Arkkitehtuurityylit


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

6. Architectural styles

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

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

Testidatan generointi

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

Harjoitustehtävät viikolle 42

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

Harjoitustehtävät ja ratkaisut viikolle 48

Ohjelmistotuotanto. Luento

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

Hirviö. Design Patterns

Arkkitehtuurityylejä ja patterneja

Ohjelmistoarkkitehtuurit, syksy

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

Toimittajaportaalin pikaohje

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

12. Kehysarkkitehtuurit

Kehyspohjainen ohjelmistokehitys

TermBase NET versio (Beta)

Arkkitehtuurityylejä ja suunnittelutaktiikoita

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

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

Harjoitustyön testaus. Juha Taina

Ohjelmoinnin peruskurssien laaja oppimäärä, kevät

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmistoarkkitehtuurit Kevät 2014

TIE Ohjelmistojen suunnittelu

Ohjelmistoarkkitehtuurit kevät

Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta

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

The OWL-S are not what they seem

Ohjelmistoarkkitehtuurit Johannes Koskinen.

10. Muunneltavuuden hallinta: variaatiopisteet

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Interfacing Product Data Management System

TIE Principles of Programming Languages CEYLON

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

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite

Ohjelmistoarkkitehtuurit. Kevät 2014

Ohjelmoinnin perusteet Y Python

4. Luokan testaus ja käyttö olion kautta 4.1

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

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

TIETOKANNAN SUUNNITTELU

Ohjelmistotekniikan menetelmät, arkkitehtuuria ja rajapintoja

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

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

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

9. Muunneltavuuden hallinta

811120P Diskreetit rakenteet

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

3. Komponentit ja rajapinnat

2 Ohjelmistoarkkitehtuurien kuvaus

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

Osio 4: Graafinen käyttöliittymä

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Ohjelmistoarkkitehtuurit

Hirviö. Design Patterns

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

5. HelloWorld-ohjelma 5.1

A215 Tietorakenteet. Tietojenkäsittelytieteiden laitos Tampereen yliopisto. Periodit I-II, syksy 2007

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

Toinen harjoitustyö. ASCII-grafiikkaa 2017

PerustA - Perustietovarantojen viitearkkitehtuuri. Liite 3: Tietojärjestelmäarkkitehtuurin. integraatioarkkitehtuuri

Javan perusteita. Janne Käki

T Tietojenkäsittelyopin ohjelmatyö Hirviöryhmä loppukatselmointi. Hirviö. Projektikatselmointi

Transkriptio:

Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 1 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 2 1

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 3 Rajapinnat vs. viestit Komponentit, Asiakas-palvelin, Web palvelut (SOA), C++, Java kutsuu func A(X ) Rajapinta toteuttaa Palvelun tarjoaja Palvelun pyytäjä Viestinvälitysarkkitehtuurit, palveluväylät (ESB), Smalltalk kirjoittaa 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). 4 2

Esimerkkejä Koneiden ohjausjärjestelmät Älykoti Yrityksen liiketoimintojen hallintajärjestelmä Yleisesti: hajautetut järjestelmät, löyhää integrointia vaativat järjestelmät 5 Palveluperustainen viestinvälitysarkkitehtuuri Palvelupyyntö Palvelupyyntö Asiakas Viestinvälittäjä Palvelija Palvelun tulos Palvelun tulos Viestinvälittäjä huolehtii siitä, että tulos menee oikealle komponentille 6 3

Esimerkki: Auton huoltotarkkailujärjestelmä moottori cpu jarrut vaihdelaatikko CAN väylä (Controller Area Network) 7 Auton huoltotarkkailujärjestelmä: komponenttikaavio CANBusExaminer MessageDispatcher send(msg) register(msgtype,component) Messenger recordusage() getstate() ServiceComponent receive(msg) Sovitin muuntaa viestin palvelukutsuksi BrakeAdater EngineAdapter EngineMonitor returnstate 8 4

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 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 10 5

Harjoitus Topologia Lineaarinen Keskitetty Rajapinnat Riippuu palvelusta Ei riipu palvelusta Täytä arkkitehtuurityylien nimillä 11 Kysyttävää? 6

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

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 16 Perusajatus komento vaste Ohjain Näkymä sovelluksen toiminto Malli sovelluksen tilan muutos 17 8

Esimerkki Näkymä TextField Tarkkailija Malli Sovelluslogiikka Button Tarkkailija Ohjain 18 Esimerkki (Spring MVC) http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html 19 9

MVC malli Observer Model update() * update() attach(observer) detach(observer) notify() getdata() service() attach() getdata() View activate() display() update() Controller handleevent() update() attach() service() 20 MVC vuorovaikutus Controller Model View handle- Event service suorita toiminto notify update getdata display 21 10

Kerroksittainen MVC (Esim. verkonhallintasovellukset) Näkymä Käyttäjän komennot Toiminto pyynnöt Ohjain Sovelluslogiikka Model Sovellusaluelogiikka Näytä tulokset Tuota tulokset 22 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 23 11

Kysyttävää? 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) 25 12

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 26 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 27 13

Esimerkki 2: Taulukkolaskenta Laskettu taulukko sis.esitys Taulukkoskripti Skriptitulkki Taulukkolaskenta noudattaa toteutus Skriptikielen määritys Taulukon alkion arvo 28 Esimerkki 3: SQL kyselyt DBMS SQL-kysely SQLtulkki Tietokanta Kyselyn tulos Sovellus 29 14

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 30 Kysyttävää? 15

Tulkin suunnittelu: Tulkkisuunnittelumalli (Interpreter) Ongelma: miten esittää tulkittava ohjelma olioina? Ratkaisu: Interpreter AbstractStruct interpret(rep) * TerminalStruct interpret(rep) CompositeStruct interpret(rep) 32 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? 33 16

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) 34 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ä... 35 17

Vaihtoehtoiset rakenteet aliluokiksi A ::= B C D E => A ::= A1 A2 A1 ::= B C A2 ::= D E A A1 A2 B C D E 36 Rekursiiviset rakenteet Statement ::= CompoundStatement AssignmentStatement CompoundStatement ::= { StatementList } StatementList ::= {Statement ; } Statement * AssignmentStatement CompoundStatement Rekursiokooste 37 18

Esim. Script interpret() 1..* Action interpret() 1 Script ::= "SCRIPT" Action {";" Action} "END" Action ::= CondAction PrimAction CondAction ::= "IF" Expr "THEN" Action "END" PrimAction ::= identifier "(" Expr ")" Expr ::=... CondAction PrimAction 1 Expr 1 interpret() interpret() val(): float 1 Identifier name(): String 38 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) 39 19

Yhteenvetoa Arkkitehtuuri ~ Domain-tietämys + Tekninen tietämys Domain-tietämys ~ domain-malli Tekninen tietämys ~ arkkitehtuurityylit, suunnittelumallit, yleiset hyvät käytännöt 40 Kysyttävää? 20