Ohjelmistoarkkitehtuurit, syksy

Samankaltaiset tiedostot
Arkkitehtuurityylejä ja ratkaisumalleja

Arkkitehtuurityylejä ja patterneja

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

Palveluperustaiset arkkitehtuurityylit

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

6. Arkkitehtuurityylit

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Ohjelmistoarkkitehtuurit kevät

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

6. Arkkitehtuurityylit

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Johannes Koskinen. Osittavat arkkitehtuurityylit

Ohjelmistoarkkitehtuurit

Viestinvälitysarkkitehtuurit

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

Viestinvälitysarkkitehtuurit Lähtökohta:

Ohjelmistoarkkitehtuurit kevät

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Ohjelmistoarkkitehtuurit

Arkkitehtuurityylit ohjelmarakenteen perustana

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Ohjelmistoarkkitehtuurit Kevät 2014 Arkkitehtuurityylit vol 2

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Ohjelmistoarkkitehtuuri

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmistojen suunnittelu

Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa k

FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen

Järjestelmäarkkitehtuuri (TK081702)

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

9 Edistynyt PHP-ohjelmointi

Uudelleenkäytön jako kahteen

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

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

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

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

7 Viestipohjaisten yritysjärjestelmien suunnittelumallit

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Ohjelmistoarkkitehtuurit. Kevät

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

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

Ohjelmistojen mallintaminen

FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen

Arkkitehtuurityylejä ja patterneja

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Ohjelmistotuotanto. Luento

Ohjelmistokehykset (software frameworks)

9. Muunneltavuuden hallinta

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

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

Arkkitehtuuri. Ylätason sovellusarkkitehtuuri

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

Test-Driven Development

Ohjelmistoarkkitehtuurit. Syksy 2008

OHJ-5010 Hajautettujen järjestelmien perusteet

Ohjelmistojen mallintaminen kertausta Harri Laine 1

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko

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

L models. Tekninen määrittely. Ryhmä Rajoitteiset

Sovellusarkkitehtuurit

Integrointi. Ohjelmistotekniikka kevät 2003

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

in condition monitoring

Suunnitteluvaihe prosessissa

Ohjelmistotekniikan menetelmät, arkkitehtuuria ja rajapintoja

Ohjelmistoarkkitehtuurit. Syksy 2007

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

Projektisuunnitelma. (välipalautukseen muokattu versio) Vesiprosessin sekvenssiohjelmointi ja simulointiavusteinen testaus

Ohjelmiston toteutussuunnitelma

6. Architectural styles

Ohjelmistoarkkitehtuurit. Kevät 2014 Kertausta

Ohjelmistotuotanto, suunnittelu Syksy Suunnittelu. Suunnittelun tulos. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi.

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari

Harjoitustehtävät viikolle 42

FuturaPlan. Järjestelmävaatimukset

Graafinen käyttöliittymä, osa 1

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

6. Suunnittelu. Suunnittelun tulos

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Rinnakkaistietokoneet luento S

Algoritmit 1. Luento 3 Ti Timo Männikkö

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistoarkkitehtuurit, syksy

Tekninen suunnitelma - StatbeatMOBILE

Suunnittelumallien käyttö ohjelmistosuunnittelussa

Harjoitustehtävät ja ratkaisut viikolle 48

11/20: Konepelti auki

UML:n yleiskatsaus. UML:n osat:

10. Muunneltavuuden hallinta: variaatiopisteet

Suunnittelumalleja, MVC. Juha Järvensivu 2008

CQRS, -ES, PACS, DICOM, WTF?

HSMT J2EE & EJB & SOAP &...

Agenttiarkkitehtuurit. Ohjelmistoarkkitehtuurit Mikko Vartiala

10. Muunneltavuuden hallinta: variaatiopisteet

Transkriptio:

Arkkitehtonisista tyyleistä ja ratkaisumalleista Ohjelmistoarkkitehtuurit Arkkitehtonisista tyyleistä ja ratkaisumalleista Taylor:n määritelmän mukainen arkkitehtoninen ratkaisumalli (architectural pattern) on otettavissa käyttöön kun mallissa olevat parametroidut komponentit korvataan sovelluskohtaisilla. Spesifejä ratkaisutapoja suhteellisen rajattuun joukkoon ongelmia. Arkkitehtoninen tyyli on yleisluonteisempi ratkaisuperiaate eikä ole yhtä suoraviivaisesti otettavissa käyttöön. Periaateratkaisuja, joilla kuitenkin omat sovellusalueensa. Sovellusalue voi olla laaja Raja tyylin ja ratkaisumallin välillä ei ole selvä eri lähteissä on erilaisia tulkintoja ja määritelmiä esim. Koskimies & Mikkonen rinnastaa käsitteet ja käyttää niistä termiä arkkitehtuurityyli. 11.9.2012 1 11.9.2012 2 Kolmitasoarkkitehtuuri Three-tier / state-logic-display Service requests Data requests display business' logic State (database) Values to display data values Model-View-Controller [malli-näkymä-ohjain] Sovellusalue: monimuotoisia käyttöliittymänäkymiä sisältävät interaktiiviset järjestelmät Motivaatio: Ohjelmistolla on erilaisia käyttäjiä ja näillä erilaisia tarpeita käyttöliittymään liittyen Samaa informaatiota pitää pystyä esittämään ja käsittelemään eri muodoissa Käyttöliittymän tulisi olla helposti muutettavissa Krasner, G., Pope S: Cookbook for Using the Model-View- Controller User Interface Paradigm in Smalltalk-80, JOOP Aug./Sep.,1988. 11.9.2012 3 11.9.2012 4 Kolmenlaisia komponentteja Malli-komponentit ovat vastuussa laskentaan liittyvän tiedon (tai tilan) säilytyksestä Näkymä-komponentit ovat vastuussa tiedon esittämisestä käyttäjälle Ohjain-komponentit ovat vastuussa käyttäjän ja järjestelmän välisen vuorovaikutuksen ohjaamisesta Ottavat esimerkiksi vastaan hiiren näpäyksiä, näppäimen painamisia jne. ja muuntavat nämä mallikomponenttien tilaan vaikuttaviksi operaatioiksi Malli-komponentit eivät riipu mistään (tietystä) näkymä- tai ohjainkomponentista Muutokset malli-komponenteissa välitetään näkymille Tarkkailijasuunnittelumallin mukaisesti (eli niille näkymille, jotka ovat ilmaisseet kiinnostuksensa muutoksiin) 11.9.2012 5 11.9.2012 6 Harri Laine 1

Eräs variaatio MVC-mallista (Buschman: Architectural patterns): Model attach(observer) detach(observer) notify() getdata() service() * attach( ) getdata() Observer update() Controller initialize(model, View) handleevent() update() Controller Model View handleevent service notify update getdata update display attach( ) service() View initialize(model) makecontroller() activate() display() update() 11.9.2012 7 display getdata 11.9.2012 8 Etuja: Useita näkymiä samaan tietoon Näkymiä on helposti lisättävissä jopa dynaamisesti Ohjaimen voi helposti vaihtaa Voi toimia perustana sovelluskehykselle (Smalltalk) Ongelmia: Lisää mutkikkuutta Yksinkertainen käyttäjätoimenpide saattaa aiheuttaa monia päivityksiä näkymään (päivityksen laajuutta voi olla vaikea kontrolloida) Monesti ei ole tarpeen erottaa ohjainta ja näkymää Erityisesti, jos kullakin näkymällä olisi joka tapauksessa oma ohjain, jonka kautta voidaan suoraan manipuloida näkymää Päivitys näkymään (ja malliin) Malli ilmoittaa muutoksesta (muille) näkymille Ts. komponentti voi toimia sekä näkymä- että ohjainkomponenttina. Yhteen malliin voi liittyä monta <näkymä, ohjain> -paria. 11.9.2012 9 11.9.2012 10 Arkkitehtonisista tyyleistä Yleiskäyttöisiä periaatteita Voivat määrittää koko järjestelmän rakennetta tai jonkin osa-alueen rakennetta Erilaisia luokitteluja tyyleille Tyylit kokemuspohjaisia tilanteeseen hyviksi havaittuja ratkaisuperiaatteita Yleisiä sovellusaluekohtaisia yrityskohtaisia Yksinkertaisia - monimutkaisia Arkkitehtonisista tyyleistä Eri lähteet luokittelevat tyylejä eri tavoin Seuraavassa noudatetaan Taylorin luokitusta (ei mitenkään kattava - luokat eivät pistevieraita) Tarkastellaan vain muutamaa esimerkkiä eri luokista Tietovuopohjaiset Kerrosrakenteiset Tulkkaavat Epäsuoran aktivointiin perustuvat 11.9.2012 11 11.9.2012 12 Harri Laine 2

Data flow styles Pääpaino siinä miten tieto liikkuu riippumattomien komponenttien välillä Erätöiden sarja (batch sequential) Perinteinen eräajosovellus Tiedon käsittely jakautuu vaiheisiin, Lopputulos valmis kun kaikki vaiheet on suoritettu Ei rinnakkaisuutta Erätöiden sarja jatkuu: Tieto liikkuu kokonaisuuksina vaiheelta toiselle esimerkiksi ajastetusti, vuonohjauskielen tai käyttäjän ohjaamana Vaiheelle voi tulla useita syöttöaineistoja ja se voi tuottaa useita tulosaineistoja Vaihe käsittelee syöttöaineistot kokonaisuudessaan ennen tulosaineiston luovutusta eteenpäin seuraavalle vaiheelle Sovellusalueita: Monivaiheiset tiedonjalostusprosessit, jossa aineistoa ei voi käsitellä osina XML-muunnokset käyttäen dokumenttipuuta 11.9.2012 13 11.9.2012 14 Väylät ja suodattimet (pipes and filters) Väylät ja suodattimet jatkuu Koostuu prosessointiyksiköistä (filters) ja niitä yhdistävistä tietovirtaa kuljettavista väylistä (pipes) Prosessointiyksiköt käsittelevät aktiivisesti tietoa Väylät siirtävät tietoa eteenpäin passiivisesti Prosessointiyksiköt ovat ( puhtaassa tapauksessa ) täysin itsenäisiä Lukevat syötevirtaa ja tekevät sen perusteella laskentaa lähettävät eteenpäin muokatun syötevirran 11.9.2012 15 11.9.2012 16 Väylät ja suodattimet jatkuu Väylät ja suodattimet jatkuu Kukin prosessointiyksikkö pitää voida toteuttaa itsenäisenä entiteettinä Ei jaettua tilatietoa Prosessointiyksikkö riippuu ainoastaan oman syötteensä muodosta Prosessointi tapahtuu yhdessä vaiheessa pala kerrallaan: tietoalkion (esimerkiksi tekstirivin) prosessointi ei saisi riippua jonkin tulevan tietoalkion prosessoinnista tällöin suodattimet voivat toimia rinnakkain Unix-väyliin kytketyt käsittelyvaiheet ovat usein sellaisia, että rinnakkaisuus estyy käsittely voi edetä vasta kun koko aineisto saatu, esim järjestäminen suodattimena Tietoa voidaan puskuroida, mutta laajamittainen puskurointi rikkoo arkkitehtuurin perusajatuksen, ja vaikeuttaa esimerkiksi syötteen rinnakkaista prosessointia Liukuhihna (pipeline architecture ) Erikoistapaus väylät ja suodattimet mallista: Ei haarautumisia Helppo synkronoida, voi edetä työntämällä (push) prosessointiyksikkö kutsuu seuraavan yksikön palvelua ja välittää tietoa eteenpäin (alkaa alusta) tai vetämällä (pull) prosessointiyksikkö kutsuu edellisen yksikön palvelua (rekursiivisesti). 11.9.2012 17 11.9.2012 18 Harri Laine 3

Pull: selaaja getchar selaaja Looginen liukuhihna (pipeline) jäsentäjä Pull: nexttoken jäsentäjä Fyysinen toteutus Semattinen analyysi Push: check Semattinen analyysi koodin generointi Push: generate Koodin generointi Lähdekoodi Tuloskoodi Lähdekoodi Tuloskoodi 11.9.2012 19 Push: write Layered architectures Kerrosarkkitehtuuri koostuu tasoista, jota on järjestetty jonkin abstrahointiperiaatteen mukaan nousevaan järjestykseen Usein abstrahointi tapahtuu akselilla ihminen-laite Usein kerrokset ovat luonteeltaan niin teknisiä, että eri abstraktiotasojen nimeäminen ja erottaminen käsitteellisesti toisistaan on hankalaa 11.9.2012 20 Virtuaalikoneet (virtual machines) Perusajatus: Taso toimii virtuaalikoneena, joka tarjoaa palveluita ylemmän tason korkeamman abstraktion virtuaalikoneelle. Ylemmän tason tarjoamat palvelut toteutetaan välittömästi alemman tason palveluita hyväksikäyttäen. Ajatus toteutuu vain puhtaassa (strict) kerrosarkkitehtuurissa Käytännössä puhtaasta kerrosarkkitehtuurista voi olla kahdenlaisia poikkeamia: Palvelukutsuja tehdään alemmasta kerroksesta ylempään kerrokseen Palvelukutsu ohittaa kerroksia kulkiessaan ylhäältä alaspäin ( avoin kerrosarkkitehtuuri) Kerrosten ohittaminen on tarpeen useimmiten tehokkuussyistä (tai sitten välissä oleva kerros ei toteuta tiettyä palvelua, joka löytyy alemmalta kerrokselta) Kerroksen ohittamisesta aiheutuva ongelma: Tietty kerros tulee riippuvaiseksi myös muista kuin suoraan sen alapuolella olevasta kerroksesta Kerroksen vaihtaminen hankalaa Palvelukutsun tekeminen alemmasta kerroksesta ylempään päin voi olla merkki vakavasta ongelmasta arkkitehtuurissa Alempi kerros saattaa olla riippuvainen ylemmästä 11.9.2012 21 11.9.2012 22 Joskus alemman kerroksen on kuitenkin tarpeen kutsua ylemmän kerroksen koodia Alemman kerroksen täytyy mukauttaa toimintaansa ylemmän kerroksen mukaan Jotta alempi kerros ei tulisi (liian) riippuvaiseksi ylemmästä kerroksesta, voidaan hyödyntä takaisinkutsuperiaatetta (callback) Alempi kerros tarjoaa rekisteröintioperaation, jonka avulla ylempi kerros rekisteröi takaisinkutsussa kutsuttavan koodin alemman kerroksen käyttöön Ei ohiteta kerroksia: Ohitetaan kerroksia: 11.9.2012 23 11.9.2012 24 Harri Laine 4

Kun kerrosten väliset rajapinnan on selkeästi määritelty, kerros voidaan vaihtaa toiseksi ilman, että se vaikuttaa muuhun järjestelmään rajapintojen/ kerrosten toimintojen standardointilisää vaihdettavuutta Kerros 1 A B C Kerros 2 rajapinta D E F 11.9.2012 25 11.9.2012 26 11.9.2012 27 Vastinkerrokset kommunikoivat samalla abstraktiotasolla (yhteisellä protokollalla) 11.9.2012 28 Kokonaiskuva Jokainen kerros lisää oman palansa viestiin sen kulkiessa kerrosten läpi 11.9.2012 29 11.9.2012 30 Harri Laine 5

Virtuaalikone esimerkkejä Virtuaalikoneella rajapinta tai kieli (esim. Java bytecode), jonka avulla konetta käytetään kätkee toteutuksen, mahdollistaa useita alustoja Sovellusrajapinnat palveluihin (API, application programming interface) Esimerkiksi käyttöjärjestelmillä, luokkakirjastoilla kätkee yksityiskohdat, parantaa siirrettävyyttä arkkitehtuuri 2-tasoinen kerrosarkkitehtuuri etäproseduurikutsut kommunikoinnissa Yksi yleisimmistä tyyleistä hajautetuissa järjestelmissä Komponentit ovat joko asiakkaita (client) tai palvelimia (server) Sovelluslogiikka on jaettu asiakkaiden ja palvelimien kesken (kaksi kerrosta 2-tiered architecture ) Esim: asiakkaat hoitavat tiedon esittämisen ja palvelin hoitaa liiketoimintalogiikan ja tiedon pysyvän talletuksen 11.9.2012 31 11.9.2012 32 Käyttökelpoinen melkein aina kun sovelluksen logiikka on tarpeen jakaa kahteen kerrokseen Palvelin tarjoaa palveluita asiakkaille, mutta ei pyydä palveluita asiakkaalta Asiakkaat tarvitsevat palvelimen tarjoamia palveluita Palvelin ei tiedä ennalta asiakkaiden määrää eikä asiakkaiden identiteettejä Asiakkaat tietävät palvelimen identiteetin (esim. IP-osoite ja portti) Asiakkaat ja palvelin sijaitsevat usein eri laitteilla (tai ainakin eri säikeissä) Asiakkaiden ja palvelimen välinen kommunikointi toteutettu etäproseduurikutsuna 11.9.2012 33 Palvelin kapseloi hallitsemansa resurssin siten, että asiakkaiden ei tarvitse huolehtia resurssin käyttöön liittyvistä teknisistä ongelmista (esim. rinnakkaisuus) Asiakasta varten luodaan tyypillisesti istunto, jonka puitteissa kommunikointi palvelimen kanssa tapahtuu Tilatieto: esimerkiksi avoimet kahvat, joiden kautta palvelimen resurssia käytetään Transaktiot (varmistetaan, että tapahtumat suoritetaan kokonaisuudessaan tai ei ollenkaan) Resurssien vapautus istunnon päättyessä Säikeistys: Palvelimen tehostamiseksi jokaista saapuvaa asiakasta varten voidaan luoda oma palvelinsäie 11.9.2012 34 Etuja Selkeä työnjako asiakkaan ja palvelimen välillä Palvelin ei ole riippuvainen asiakkaista (mitä tapahtuu, jos asiakas kaatuu?) Asiakas ei ole suoraan riippuvainen palvelimesta (voi mahdollisesti toipua, vaikka palvelin kaatuisi) Ongelmia Etäkutsut (esim. RMI) ovat huomattavasti hitaampia/tehottomampia kuin paikalliset metodikutsut Toiminnan tehokkuus saattaa riippua ulkoisista tekijöistä (lähinnä asiakkaan ja palvelimen välisen kommunikaatioväylän kuormituksesta) 11.9.2012 35 App 1 App 2 App N-2 App N-1 App N Palvelu A Palvelu B Palvelu C Peruspalvelut Lisäpalvelu C1 Lisäpalvelu C2 Kerrosmaiset arkkitehtuurit muodostavat usein ikään kuin kärjellään seisovan pyramidin Tyypillisesti lähempänä sovellustasoa on enemmän ja erikoistuneempia palveluja kuin lähellä laitteistotasoa 11.9.2012 36 Harri Laine 6

Etuja: Kerrosarkkitehtuuri on yleinen malli, jota voidaan soveltaa lähes kaikissa järjestelmissä pienessä tai isossa mittakaavassa Jakaa järjestelmän korkealla tasolla osiin, joiden muodostamana kokonaisuutena järjestelmä on helppo ymmärtää Intuitiivinen, helposti ymmärrettävä voidaan käyttää kommunikointiin hyvin erilaisten sidosryhmien välillä Ohjaa ohjelmiston riippuvuuksien minimointiin muutosten paikallisuus helppo ylläpidettävyys, muutettavuus, vaihdettavuus, standardoitavuus Kerrosarkkitehtuuri tukee ohjelmiston uudelleenkäyttöä Kukin kerros toteuttaa tietyn abstraktion pohja työn jakamiselle tasokohtaista erikoistumista Ongelmia: Tehokkuushäviö Palvelukutsu ei välity suoraan palvelun toteuttavalle kerrokselle, vaan kulkee välissä olevien kerrosten kautta Palvelukutsun parametrit mahdollisesti muutetaan joka kerroksen välillä uuteen esitysmuotoon Toteutustaakka: periaatteessa jokainen palvelu on toteutettava joka tasolla (vaikkakin osa toteutuksesta delegoidaan alemmalle kerrokselle) Oikean (toimivan) tasojaon keksiminen on hankalaa Mihin kerrokseen tietty palvelu pitäisi liittää? 11.9.2012 37 11.9.2012 38 Kerrosarkkitehtuurin suunnittelu Ongelmia: Poikkeusten käsittely Kutsu ylemmältä kerrokselta poikkeus kerrosrakenteen pohjalla palataan kutsupinossa taaksepäin kunnes löytyy käsittelijä poikkeukselle poikkeuksen käsittely ylemmällä tasolla kuin missä poikkeus tapahtui käsittelijä ei välttämättä pysty korjaamaan tilannetta Ääritapaus: poikkeus palaa käyttäjälle saakka antaen mystisen virheilmoituksen Miksei sitten poikkeuksia käsitellä aina siellä missä ne syntyvät? Määrittele perusteet tasojaolle (esim. etäisyys laitteistosta, operaatioiden luonne, ) Määrää tasojen lukumäärä Nimeä tasot ja niiden tehtävät Määrittele tasoille palvelut Iteroi edellisiä vaiheita ja korjaa puutteet Määrittele tasojen rajapinnat Määrittele tason sisäinen rakenne Määrittele tasojen välinen kommunikointi Huolehdi tasojen riippumattomuudesta Ongelmat: alempi kerros riippuu ylemmästä, sykliset riippuvuudet Suunnittele poikkeustilanteiden käsittely Tavoite: poikkeuskäsittely samalla tasolla kuin poikkeus 11.9.2012 39 11.9.2012 40 Harri Laine 7