Ohjelmistoarkkitehtuurit Kevät 2014 Arkkitehtuurityylit vol 2

Samankaltaiset tiedostot
Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit kevät

Viestinvälitysarkkitehtuurit Lähtökohta:

Viestinvälitysarkkitehtuurit

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

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

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

Viestinvälitysarkkitehtuurit

6. Architectural styles

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Ohjelmistoarkkitehtuurit kevät

Arkkitehtuurityylejä ja ratkaisumalleja

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Johannes Koskinen. Osittavat arkkitehtuurityylit

6. Arkkitehtuurityylit

Ohjelmistoarkkitehtuurit. Kevät

7 Viestipohjaisten yritysjärjestelmien suunnittelumallit

Suunnittelumalleja, MVC. Juha Järvensivu 2008

6. Arkkitehtuurityylit

Graafinen käyttöliittymä, osa 1

Ohjelmistoarkkitehtuurit. Kevät 2014 Kertausta

Ohjelmistoarkkitehtuuri

Ohjelmistojen mallintaminen kertausta Harri Laine 1

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

Testidatan generointi

Ohjelmistoarkkitehtuurit, syksy

Arkkitehtuurityylejä ja patterneja

Ohjelmistotuotanto. Luento

Harjoitustehtävät viikolle 42


Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

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

TIE Ohjelmistojen suunnittelu

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

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

Harjoitustehtävät ja ratkaisut viikolle 48

Ohjelmistoarkkitehtuurit. Kevät 2014

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

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

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

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

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Hirviö. Design Patterns

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

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

10. Muunneltavuuden hallinta: variaatiopisteet

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit Johannes Koskinen.

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

11. Tuoterunkoarkkitehtuurit

Ohjelmistoarkkitehtuurit. Kevät

Arkkitehtuurityylejä ja suunnittelutaktiikoita

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

Kehyspohjainen ohjelmistokehitys

The OWL-S are not what they seem

9. Muunneltavuuden hallinta

Graafisen käyttöliittymän ohjelmointi Syksy 2013

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

TIE Ohjelmistojen suunnittelu

Harjoitustyön testaus. Juha Taina

Ohjelmistoarkkitehtuurit

10. Tuoterunkoarkkitehtuurit

Ohjelmistoarkkitehtuurit Kevät 2014

12. Kehysarkkitehtuurit

TIETOKANNAN SUUNNITTELU

Esimerkki: Auton toiminnan monitorointijärjestelmä

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

10. Muunneltavuuden hallinta: variaatiopisteet

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

TermBase NET versio (Beta)

11. Tuoterunkoarkkitehtuurit

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Ohjelmistotekniikan menetelmät, arkkitehtuuria ja rajapintoja

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmistoarkkitehtuurit kevät

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

8. Näppäimistöltä lukeminen 8.1

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

TIE Ohjelmistojen suunnittelu. Luento 8..9: moniperintä

Ohjelmistoarkkitehtuurit. Kevät

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

Ohjelmistojen mallintaminen, kesä 2009

Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta

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

Ohjelmistoarkkitehtuurit

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

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

Toimittajaportaalin pikaohje

Toinen harjoitustyö. ASCII-grafiikkaa 2017

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

Hirviö. Design Patterns

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

Interfacing Product Data Management System

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

9. Ohjelmistoarkkitehtuurien arviointi

Transkriptio:

Ohjelmistoarkkitehtuurit Kevät 2014 Arkkitehtuurityylit vol 2 Samuel Lahtinen (Johannes Koskinen) http://www.cs.tut.fi/~ohar/ 1

Yleisesti Huomenna ei luentoa, tapaaminen TC103:ssa Muistakaa harkkavälinäyttöilmo ja aloittakaa suunnittelu Suunnitelman palautus, kaksi arkipäivää ennen välinäyttöä Viime luennolta tuttua: Arkkitehtuurityylit, kerrosarkkitehtuuri, pipes&filters 2

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 3

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

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). 5

Esimerkkejä Koneiden ohjausjärjestelmät Älykoti 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 6

Palveluperustainen viestinvälitysarkkitehtuuri Palvelupyyntö Palvelupyyntö Asiakas Viestinvälittäjä Palvelija Palvelun tulos Palvelun tulos Viestinvälittäjä huolehtii siitä, että tulos menee oikealle komponentille 7

Esimerkki: Auton viestiväylä moottori cpu jarrut vaihdelaatikko CAN väylä (Controller Area Network) 8

Auton huoltotarkkailujärjestelmä: komponenttikaavio CANBusExaminer Messenger ServiceComponent receive(msg) MessageDispatcher send(msg) register(msgtype,component) recordusage() getstate() Sovitin muuntaa viestin palvelukutsuksi BrakeAdater EngineAdapter EngineMonitor returnstate 9

Viestinvälitys ja viestit Viestisisältö/muoto olennaisessa asemassa Suoritusohjeita, dataa, paluupyyntö Kenelle tarkoitettu 10

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 11

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 12

Harjoitus Topologia Lineaarinen Keskitetty Rajapinnat Riippuu palvelusta Ei riipu palvelusta 1 2 3 4 Täytä arkkitehtuurityylien nimillä 13

Kysyttävää?

Malli-näkymä-ohjain arkkitehtuurit (Model-View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. 16

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 17

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 18

Perusajatus komento vaste Ohjain Näkymä sovelluksen toiminto Malli sovelluksen tilan muutos 19

Esimerkki Näkymä TextField Tarkkailija Malli Sovelluslogiikka Button Tarkkailija Ohjain 20

Esimerkki (Spring MVC) http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html 21

MVC malli Observer Model update() * update() attach(observer) detach(observer) notify() getdata() service() attach() getdata() View activate() display() update() Controller handleevent() update() attach() service() 22

MVC vuorovaikutus Controller Model View handle- Event service suorita toiminto notify update getdata display 23

Kerroksittainen MVC (Esim. verkonhallintasovellukset) Näkymä Käyttäjän komennot Toiminto pyynnöt Ohjain Sovelluslogiikka Model Sovellusaluelogiikka Näytä tulokset Tuota tulokset 24

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ä) 25

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) 27

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 28

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 29

Esimerkki 2: Taulukkolaskenta Laskettu taulukko sis.esitys Taulukkoskripti Skriptitulkki Taulukkolaskenta noudattaa toteutus Skriptikielen määritys Taulukon alkion arvo 30

Esimerkki 3: SQL kyselyt DBMS SQL-kysely SQLtulkki Tietokanta Kyselyn tulos Sovellus 31

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 32

Esimerkki 4: modattavissa olevat pelit sis.esitys Pelin data, toimintaskirptit Skriptitulkki Pelimoottori Häk-häk toteutus Skriptikielen Määritys datatyypit 33

Kysyttävää?

Tulkin suunnittelu: Tulkkisuunnittelumalli (Interpreter) Ongelma: miten esittää tulkittava ohjelma olioina? Mikä suunnittelumalli on samanlainen? Ratkaisu: Interpreter AbstractStruct interpret(rep) * TerminalStruct interpret(rep) CompositeStruct interpret(rep) 35

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? 36

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) 37

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: 1 B A 1 C 38

Mitä tuotossääntö merkitsee luokkien kannalta? Ehdotus: Tuotossääntö merkitsee sitä, että oikean puolen luokat ovat osa-suhteessa vasemman puolen luokkiin. entä A ::= B C D E? A 0..1 0..1 B C 0..1 D 0..1 E 39

Vaihtoehtoiset rakenteet aliluokiksi A ::= B C D E => A ::= A1 A2 A1 ::= B C A2 ::= D E A A1 A2 B C D E 40

Rekursiiviset rakenteet Statement ::= CompoundStatement AssignmentStatement CompoundStatement ::= { StatementList } StatementList ::= {Statement ; } Statement * AssignmentStatement CompoundStatement Rekursiokooste 41

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 Expr interpret() interpret() 1 1 val(): float 1 Identifier name(): String 42

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) 43

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 44

Kysyttävää?