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

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

Ohjelmistoarkkitehtuurit kevät

Viestinvälitysarkkitehtuurit

Viestinvälitysarkkitehtuurit Lähtökohta:

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

6. Architectural styles

Arkkitehtuurityylejä ja ratkaisumalleja

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Suunnittelumalleja, MVC. Juha Järvensivu 2008

Graafinen käyttöliittymä, osa 1

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

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

Ohjelmistotuotanto. Luento

Harjoitustehtävät ja ratkaisut viikolle 48

Arkkitehtuurityylejä ja patterneja

Ohjelmistoarkkitehtuurit, syksy

Hirviö. Design Patterns


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

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

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

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

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

TIE Ohjelmistojen suunnittelu

Ohjelmistoarkkitehtuurit. Kevät

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

5. HelloWorld-ohjelma 5.1

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Graafisen käyttöliittymän ohjelmointi

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmistoarkkitehtuuri

4. Lausekielinen ohjelmointi 4.1

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)

Testidatan generointi

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

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

15. Ohjelmoinnin tekniikkaa 15.1

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

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

Kehyspohjainen ohjelmistokehitys

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

Hirviö. Design Patterns

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

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

2 Ohjelmistoarkkitehtuurien kuvaus

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

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

Kehittyneet ominaisuudet

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Visual Studio T4 Tyhjästä hallittuun generointiin #tddev. Kalle Launiala.

Toinen harjoitustyö. ASCII-grafiikkaa 2017

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

Harjoitustehtävät viikolle 42

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Ohjelmistoarkkitehtuurit. Kevät

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

Ohjelmistoarkkitehtuurit. Kevät 2014 Kertausta

Osio 4: Graafinen käyttöliittymä

Harjoitustyön testaus. Juha Taina

15. Ohjelmoinnin tekniikkaa 15.1

Interfacing Product Data Management System

TIE Ohjelmistojen suunnittelu

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

12. Kehysarkkitehtuurit

TIE Principles of Programming Languages CEYLON

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

Toimittajaportaalin pikaohje

Hentry. Aiheen esittely. Arkkitehtuuri ja tuotantolinja

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

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

Arkkitehtuuri. Ylätason sovellusarkkitehtuuri

käännös käännösvaiheessa tarkasettaan linkitys

Toiminnot eli käyttäytyminen. Tieto eli rakenteelliset ominaisuudet

12. Näppäimistöltä lukeminen 12.1

Copyright Observis Oy All rights reserved. Observis Oy Ville Kanerva, CTO Heikki Isotalus, COO Datasta tietoa

Olio-ohjelmointi Johdanto suunnittelumalleihin. 1. Yleistä

Ohjelmistotekniikan menetelmät, arkkitehtuuria ja rajapintoja

Java ja tietokannan käsittely (JDBC)

Tapahtumapohjainen ohjelmointi

TermBase NET versio (Beta)

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

UML- mallinnus: Tilakaavio

Harjoitus 5 (viikko 48)

CQRS, -ES, PACS, DICOM, WTF?

7 Viestipohjaisten yritysjärjestelmien suunnittelumallit

Käännös, linkitys ja lataus

7. Näytölle tulostaminen 7.1

Action Request System

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

Tiedonlouhinta rakenteisista dokumenteista (seminaarityö)

811120P Diskreetit rakenteet

Transkriptio:

Malli-näkym kymä-ohjain arkkitehtuurit (Model-View 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 1

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

Esimerkiksi Näkymä TextField Sovelluslogiikka Button Malli Ohjain 3

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 4

MVC malli Observer Model update() * update() attach(observer) detach(observer) notify() getdata() service() attach() getdata() View initialize(model) makecontroller() activate() display() update() Controller initialize(model,view) handleevent() update() attach() service() 5

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

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

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 8

Tulkkiarkkitehtuurit tarve antaa toiminnallisia kuvauksia syötteenä järjestelmälle tarve yhdistellä primitiivisia toimintoja eri tavoin, jotka eivät ole tiedossa etukäteen tarve erottaa looginen, abstrakti suoritusalusta konkreettisesta (esim. jälkimmäisen vaihtamisen helpottamiseksi) 9

Tulkkiarkkitehtuurin perusidea toimintakuvauksen sisäinen esitys Tuloste Jokin toiminnallinen kuvaus (teksti, XML, ym.) Tulkki kutsuu Konkreettinen suoritusalusta noudattaa 1 toteutus 2 Syöte Kielen määritys 10

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 11

Esimerkki 2: SQL DBMS SQL-kysely SQLtulkki Tietokanta Kyselyn tulos Sovellus 12

Esimerkki 3: Taulukkolaskenta Laskettu taulukko Taulukkoskripti Skriptitulkki Taulukkolaskenta noudattaa toteutus Taulukon alkion arvo Skriptikielen määritys 13

Esimerkki 4: DSL + alusta 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 14

Tulkin suunnittelu: Tulkki-suunnittelumalli Ongelma: miten esittää tulkittava ohjelma olioina? Ratkaisu: Tulkki-suunnittelumalli (Interpreter) Interpreter AbstractStruct interpret(rep) * TerminalStruct interpret(rep) CompositeStruct interpret(rep) 15

Tulkki-suunnittelumallin johtaminen: Kielen rakenteiden esitys luokkina Ongelma: Miten esittää kielen rakenteet luokkina? Esimerkiksi: Script ::= "SCRIPT" Action {";" Action} "END" Action ::= CondAction PrimAction CondAction ::= "IF" Expr "THEN" Action "END" PrimAction ::= identifier "(" Expr ")" (jonkin primitiivioperaation kutsu) Expr ::=... Luokkamalli? 16

Välisymbolit ja rakenteiset loppusymbolit esitetää ään n luokkina Esimerkiksi: Script, Action, PrimAction, CondAction, 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 17

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ä... 18

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

Script interpret() Esimerkki Action * interpret() 1 MOT CondAction PrimAction Expr interpret() interpret() 1 1 val(): float 1 Identifier name(): String 20

Tulkkiarkkitehtuurin edut ja ongelmat Edut: Ajoaikainen suoritusympäristö omassa hallinnassa Tulkittavaa kieltä suhteellisen helppo muuttaa Kielen merkitystä suhteellisen helppo muuttaa Suoritusympäristö voidaan helposti vaihtaa Ongelmat: Suorituskyky (epäsuora, ei-natiivi suoritus; sisäisen esityksen muodostaminen) Tilankäyttö (ohjelman sisäinen esitys voi vaatia paljon tilaa) 21