Ohjelmistoarkkitehtuurit Johannes Koskinen. Osittavat arkkitehtuurityylit

Samankaltaiset tiedostot
Ohjelmistoarkkitehtuurit

6. Arkkitehtuurityylit

Ohjelmistoarkkitehtuurit kevät

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

6. Arkkitehtuurityylit

Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit, osa 1

Arkkitehtuurityylejä ja ratkaisumalleja

Viestinvälitysarkkitehtuurit

Viestinvälitysarkkitehtuurit Lähtökohta:

7 Viestipohjaisten yritysjärjestelmien suunnittelumallit

Arkkitehtuurityylejä ja patterneja

Ohjelmistoarkkitehtuurit, syksy

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

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuuri

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit kevät

10. Muunneltavuuden hallinta: variaatiopisteet

HOJ J2EE & EJB & SOAP &...

9. Muunneltavuuden hallinta

HSMT J2EE & EJB & SOAP &...

10. Muunneltavuuden hallinta: variaatiopisteet

Ohjelmistoarkkitehtuurit

Liiketoimintajärjestelmien integrointi

Liiketoimintajärjestelmien integrointi

Muunneltavuuden hallinta (Variability management):

10. Tuoterunkoarkkitehtuurit

Suunnitteluvaihe prosessissa

Ohjelmistoarkkitehtuurit. Kevät 2014 Kertausta

Ohjelmistoarkkitehtuurit Kevät 2014 Arkkitehtuurityylit vol 2

1.3 Katsaus ohjelmistotuotannon kehittymiseen

Palveluperustaiset arkkitehtuurityylit

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

Ohjelmistojen mallintaminen Tietovuokaaviot Harri Laine 1

Ohjelmistoarkkitehtuurit

Tietoliikenne II (2 ov)

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


Case TUHTI. Projektin tunnuslukuja. ! Suuri perusjärjestelmäuudistus! Työt alkoivat kesällä ! Java luokkia n. 5000

Tietoliikenne II (2 ov)

JHS 179 Kokonaisarkkitehtuurin suunnittelu ja kehittäminen Liite 9. Virtualisointi ja pilvipalvelut teknologia-arkkitehtuurin suunnittelussa

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

7. Tuoterunkoarkkitehtuurit

Ohjelmistoarkkitehtuurit. Kevät

Järjestelmäarkkitehtuuri (TK081702)

Muunneltavuuden hallintaa Kevät 2016 Samuel Lahtinen. Ohjelmistoarkkitehtuurit 2016

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

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

Hintatiedotus ja tietojen välitys. Loppuraportti

Kari Rouvinen Johtaja, Technology Products & Solutions. Oracle Finland Oy

Sovellusarkkitehtuurit

6. Architectural styles

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Tiedonsiirto- ja rajapintastandardit

Arkkitehtuurityylit ohjelmarakenteen perustana

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit. Syksy 2010

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Harjoitustehtävät viikolle 42

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

SOA SIG SOA Tuotetoimittajan näkökulma

Ohjelmistoarkkitehtuurit kevät Muunneltavuuden hallinta: variaatiopisteet. Ohjelmistot muuntuvat kahdessa dimensiossa

Ohjelmistokehykset (software frameworks)

Helia Ohjelmointitaito Tuomas Kaipainen Mermit Business Applications Oy Mermit Business Applications

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit Muunneltavuuden hallintaa, Ylläpidosta kevyesti, Vähän rääppeitä aiemmilta kerroilta

SOA & Ajax Sanahelinää vai toimivaa käytäntöä sähköisessä asioinnissa? Fenix hankejohtaja Harri Juuti Projektipäällikkö Teemu Karvonen

A Service-Oriented Architecture (SOA) View of IHE Profiles

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2007

Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta

Harjoitustehtävät ja ratkaisut viikolle 48

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

Työeläkeyhtiö Varma. IBM Software Day Tuukka Tusa, Digia

Facta palvelimien uusiminen Helsingin kaupunki

SAP. Lasse Metso

Koira testissä vai Racci tuotannossa O10G/IAS10 Linuxilla

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Ohjelmistojen suunnittelu

Tiedon suojaaminen ja hallinta. Sytyke seminaari

Tässä kertauksena SOA ja palvelu.

Ohjelmistoarkkitehtuurit. Kevät Johannes Koskinen.

Agenttiarkkitehtuurit. Ohjelmistoarkkitehtuurit Mikko Vartiala

Ohjelmistoteknologioiden koulutus: Web-sovelluskehitys, Java Server. Infotilaisuus klo 10:00

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

Teemu Kerola Orientointi Syksy 2018

Paikkatiedon tulevaisuus

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

Suorituskyvyn varmistaminen sovelluskehityksen eri vaiheissa Paavo Häkkinen, Presales Teamleader Compuware Finland

Web Services tietokantaohjelmoinnin perusteet

Arkkitehtuuri. Ylätason sovellusarkkitehtuuri

.NET 2006 ja sen jälkeen

13/20: Kierrätys kannattaa koodaamisessakin

Tekninen suunnitelma - StatbeatMOBILE

Ohjelmistoarkkitehtuurit. Kevät

Risto Pelin Microsoft Project 2002 projekti- ja yritystason järjestelmänä

9 Edistynyt PHP-ohjelmointi

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

Transkriptio:

Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 1 Arkkitehtuurityylit Osittavat arkkitehtuurityylit Kerrosarkkitehtuurit (rakenteen ositus) Tietovuoarkkitehtuurit (toiminnan ositus) Palveluihin perustuvat arkkitehtuurityylit Asiakas-palvelin arkkitehtuurit Viestinvälitysarkkitehtuurit Erikoisarkkitehtuurityylit MVC arkkitehtuurit Tulkkiarkkitehtuurit 2 1

Mitä ovat arkkitehtuurityylit? Arkkitehtuurityyli = yleinen malli, joka kertoo miten järjestelmä organisoidaan ylimmällä abstraktiotasolla, määräten järjestelmän yleisen teknisen luonteen Arkkitehtuurityylit eivät sulje toisiaan pois! Kysymyksiä, jotka voivat johtaa arkkitehtuurityylin valintaan: - Koostuuko järjestelmä komponenteista, jotka ovat selvästi eri käsitetasoilla? - Onko järjestelmän päätarkoitus jalostaa tietoa? - Jaetaanko järjestelmässä jotain resurssia tai tietoa erillisille sovelluksille? - Koostuuko järjestelmä joukosta komponentteja, jotka kommunikoivat keskenään etukäteen tuntemattomilla tavoilla? Ovatko komponentit usein vaihtuvia? 3 Kerrosarkkitehtuurit Kerrosarkkitehtuuri: Järjestelmän organisointi käsitetasoltaan nouseviin kerroksiin.. 4 2

Abstraktiotasojen rikkominen ja ohitus Ohitus käyttää toteuttamiseen Abstraktiotasojen rikkominen 5 Takaisinkutsut kerrosarkkitehtuurissa Sovelluskerros normaali kutsu takaisinkutsu Alustakerros Takaisinkutsulla voidaan rikkoa kerrosarkkitehtuurin periaatetta ilman, että alempi kerros riippuu ylemmästä 6 3

Kerrosarkkitehtuurien kuvaus: hampurilainen Ei ohituksia Ohituksia Ohituksia 7 Kerrosten rajapinnat Kerros A Comp1 Comp2 Comp3 Kerros B Comp4 Comp5 Comp6 Ks. Fasaadi 8 4

Esimerkki: tyypillinen liiketoimintajärjestelmä Käyttöliittymä Sovelluskohtainen logiikka Sovellusaluekohtainen logiikka Tietokanta 9 10 5

Kerrosarkkitehtuuri voi olla moniulotteinen Core GUI Default GUI App GUI GUI Käyttöliittymä Core Logic Default Logic App Logic Logic Core Support Default Support App Support Support Peruspalvelut 11 Kerrosarkkitehtuuri voi olla moniulotteinen Core GUI Default GUI App GUI Core Logic Core Support Default Logic Default Support App Logic App Support Yleiskäyttöinen Tuotekohtainen Core Default App Domain-Yritys-Tuote 12 6

Kerrosten riippuvuusanalyysi rivikerros riippuu sarakeker P1 P2 P3 P4 P5 P1 X X P2 X X P3 X X OK, ohitusaste = 1 P4 X P5 13 Kerrosten riippuvuusanalyysi row depends on col P1 P2 P3 P4 P5 P1 X X P2 P3 X X X P4 P5 X X Ei OK, mitä tehdä? Vaihdetaan P2:n ja P3:n paikat, jos P2 ei ole selvästi korkeammalla käsitetasolla 14 7

Kerrosten riippuvuusanalyysi row depends on col P1 P2 P3 P4 P5 P1 X X P2 X X Ei OK, mitä tehdä? P3 X X X P4 X Yhdistetään P2 ja P3? P5 15 Kerrosten riippuvuusanalyysi Kerros P2 Yksittäisten komponenttien siirto Comp1 Comp2 Comp3 Kerros P3 Siirto OK, jos ei käsitetason ristiriitaa Comp4 Comp5 Comp6 16 8

Kerrosten riippuvuusanalyysi Kerros P2 Yksittäisten komponenttien vaihto Comp1 Comp2 Comp3 Kerros P3 Ei voi siirtää Comp4 Comp5 Comp6 17 Harjoitus Suunnittele kerrosarkkitehtuuri seikkailupelille. Järjestelmään kuuluvat seuraavat osat: - Yleinen seikkailupelilogiikka (AL) - Tietokanta (DB) - Pelikäyttöliittymä (GUI) - Graafinen tuki seikkailupeleille (GS) - Pelitietokantapalvelut (GB) - Pelin logiikka (GL) - Yleinen graafinen kirjasto (G) Sijoita nämä osat kerroksiin. 18 9

GB DB G GL AL GS - Yleinen seikkailupelilogiikka (AL) - Tietokanta (DB) - Pelikäyttöliittymä (GUI) - Graafinen tuki seikkailupeleille (GS) - Pelitietokantapalvelut (GB) - Pelin logiikka (GL) - Yleinen graafinen kirjasto (G) GUI 19 Kerrosarkkitehtuurien edut ja ongelmat Etuja Melkein aina sovellettavissa Tukee järjestelmän ymmärtämistä ja hallintaa Vähentää riippuvuuksia (ylläpidettävyys, muunneltavuus) Helppo liittää yrityksen organisaatioon (Conway) Tukee uudelleenkäyttöä (tuoterunkoarkkitehtuurin pohjana) Ongelmia Suorituskyky voi heikentyä (epäsuoruus) Saattaa johtaa tarpeettomaan/moninkertaiseen laskentaan Poikkeusten käsittely 21 10

Esimerkki (patologinen) GUI OrderApplication OrderPlatform OrderApplication:orderCheck(XMLdoc apporder) parse apporder check apporder (app specific checking) g = make XMLdoc genorder generalordercheck(g) OrderPlatform:generalOrderCheck(XMLdoc genorder) parse genorder check genorder(general checking) 22 Kysyttävää? 11

Tietovuoarkkitehtuurit Tietovuoarkkitehtuuri koostuu komponenteista (filter), jotka tuottavat ja kuluttavat tietoalkioita, ja tietoalkioita komponentilta toiselle kuljettavista väylistä (pipe). filter pipe filter pipe filter pipe pipe filter pipe filter 24 Tyypillistä tietovuoarkkitehtuurille Prosessointiyksiköt toimivat toisistaan riippumattomasti (eivät jaa tilatietoa) Prosessointiyksiköt eivät tunne toisiaan, ainoastaan väylien vaatiman tietoformaatin Tieto voidaan prosessoida paloittain Yksiköt ovat tilattomia 25 12

Erikoistapaus: liukuhihnatyyli (pipeline) pipe pipe filter filter filter 26 Kontrollin toteutus liukuhihnatyylissä: työntävä tapa Source Filter1 Filter2 Sink push(data) process push(data) process push(data) push(data) process 27 13

Kontrollin toteutus liukuhihnatyylissä: vetävä tapa Source Filter1 Filter2 Sink pull data pull pull process data process data pull 28 Rinnakkaiset yksiköt: puskurointi Puskuri filter filter Kukin yksikkö omassa prosessissaan Hitain yksikkö määrää kokonaisajan Puskurien koko on kriittinen tekijä Puskuri on tyypillisesti jonorakenne 29 14

Esimerkki: äänenkäsittelyjärjestelmä Raaka äänidata Lataaja Käsittelyyksikkö... Kaiuttimet Markku Reunanen: Äänijärjestelmän ohjelmistoarkkitehtuuri. D-työ, TTY, 2002. 30 Esimerkki: yksivaihekääntäjä Selaaja Jäsentäjä Koodin generointi merkkejä tekstialkioita kielen rakenteita koodi ongelma: ohjelmatekstin kontekstisidonnainen käsittely ratkaisu: (i) tietoa kerätään globaaliin symbolitauluun (data) (ii) jäsentäjä toimii pääohjelmana (kontrolli) 31 15

Esimerkki: MapReduce http://aws.amazon.com/ 32 Tietovuoarkkitehtuurien edut ja ongelmat Etuja: Mutkikas tiedon käsittelyprosessi voidaan jakaa helpommin hallittaviin palasiin Tukee uudelleenkäyttöä: prosessointiyksiköitä voidaan kombinoida eri tavoin Tukee ylläpitoa: prosessointiyksikköä voidaan helposti muuttaa Tukee rinnakkaisuutta Ongelmia: Ei sovi interaktiivisille järjestelmille Tiedon tulkinnasta tulee suorituskykyrasitetta Virhetilanteiden käsittely voi olla vaikeaa 33 16

Kysyttävää? Palveluihin perustuvat arkkitehtuurityylit Oliot (1970-luku) olio lista lisää Käyttävä yksikkö poista 35 17

Palveluihin perustuvat arkkitehtuurityylit Komponentit (1980-luku) Suomenkielen tavutus komponentti Tavutusrajapinta Tekstijärjestelmä 36 Palveluihin perustuvat arkkitehtuurityylit Asiakas-palvelin (1990-luku) Palvelun pyytäjä Palvelun tarjoaja Palvelun pyytäjä Esim. EJB verkko 37 18

Palveluihin perustuvat arkkitehtuurityylit Service-Oriented Architecture (SOA) (2000-luku) kysyy palvelua Palvelurekisteri verkko rekisteröityy Palvelun pyytäjä palvelun saaminen Palvelun tarjoaja Esim. Web services 38 Palveluihin perustuvat arkkitehtuurityylit Palveluväylä (Enterprise Service Bus, ESB) Sovellus Sovellus Sovellus Sovellus Sovitin Sovitin Sovitin Sovitin Väylä - sovellukset tarjoavat palvelujaan väylän kautta - idea: viestin reititys riippuu viestistä -> ei synny riippuvuuksia sovellusten välille 39 19

SOA (looginen kuva) http://www.ibm.com/developerworks/architecture/library/ar-logsoa/ 40 Asiakas-palvelin arkkitehtuurit Asiakas-palvelin arkkitehtuuri: järjestelmä koostuu jotakin resurssia kontrolloivista ja siihen liittyviä palveluja tarjoavista palvelimista (server) ja palveluja tarvitsevista asiakkaista (client). 41 20

Asiakas-palvelin arkkitehtuurit Palvelut tarjotaan istunnoissa, tiettyyn kokonaisuuteen kuuluvat palvelut annetaan saman yhteyden aikana kontrolloidusti (transaktioina) Asiakkaat ja palvelimet toimivat omissa prosesseissaan, tyypillisesti hajautettuina Asiakkaat ovat tyypillisesti omia sovelluksia, jotka eivät tunne toisiaan Palvelimet eivät tunne asiakkaita Palvelimet tyypillisesti hallinnoivat jotain resurssia tai tietovarastoa 42 Esimerkkejä Tietovarastopalvelimet Sovelluspalvelimiin perustuvat järjestelmät Sähköpostipalvelimet, Web palvelimet 43 21

Tietovarasto- ja sovelluspalvelimet Asiakas Asiakas Käyttöliittymä Sovelluskohtainen logiikka Sovellusaluekohtainen logiikka Palvelin Tietokanta Käyttöliittymä Palvelin Sovelluskohtainen logiikka Sovellusaluekohtainen logiikka Tietokanta 44 Asiakas-palvelin arkkitehtuurien edut ja ongelmat Etuja Helpottaa yhteisen resurssin hallintaa (esim. tietoturva) Helpottaa ylläpitoa ja muunneltavuutta (esim. palvelimen vaihto) Hyvä teknologinen tuki Ongelmia Verkkoliikenteestä johtuvat suorituskykyongelmat Palvelinkeskeisyys: kriittisen palvelimen vikaantuminen Poikkeusten käsittely 45 22

Yhteenvetoa Kerrosarkkitehtuuri osittaa järjestelmän käsitetasojen mukaan Tietovuoarkkitehtuuri osittaa järjestelmän työstämisvaiheiden mukaan Palvelupohjaiset järjestelmät ovat kehittyneet olioohjelmoinnista lähtien kohti palveluväyläratkaisuja ja pilvijärjestelmiä 46 Kysyttävää? 23