Arkkitehtuurityylejä ja suunnittelutaktiikoita

Samankaltaiset tiedostot
Arkkitehtuurityylejä ja suunnittelutaktiikoita

Arkkitehtuurityylejä ja suunnittelutaktiikoita

Oppimistavoitteet. Arkkitehtuurityylejä. Microservices. Microservices. Microservices LISÄÄ ARKKITEHTUURITYYLEJÄ. Arkkitehtuurityylejä

Ohjelmistoarkkitehtuurit, syksy

Arkkitehtuurityylejä ja patterneja

Palveluperustaiset arkkitehtuurityylit

Ohjelmistoarkkitehtuurit

ITK130 Ohjelmistojen luonne

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit

9. Ohjelmistoarkkitehtuurien arviointi

Ohjelmistoarkkitehtuurien arviointi

Sytyke ry:n laivaseminaari Software Technology Transfer Pekka Forselius

Kevät Ohjelmistoarkkitehtuurit 2014

Arkkitehtuurien tutkimus Outi Räihä. OHJ-3200 Ohjelmistoarkkitehtuurit. Darwin-projekti. Johdanto

Viestinvälitysarkkitehtuurit

Yleiskuvaus - LVpalvelukerroksen. laadulliset vaatimukset Jari Kokko & Vesa Mettovaara LUVAT JA VALVONTA -KÄRKIHANKE

7 Viestipohjaisten yritysjärjestelmien suunnittelumallit

Kevät 2016 Arkkitehtuurin arviointi, ATAM. Ohjelmistoarkkitehtuurit 2016

7. Koneenohjausjärjestelmien suunnittelumallit. OhAr Veli-Pekka Eloranta

Viestinvälitysarkkitehtuurit Lähtökohta:

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

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit. Kevät

Integrointi. Ohjelmistotekniikka kevät 2003

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

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

ISO/IEC sarja (SQUARE)

Rinnakkaistietokoneet luento S

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

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

Ohjelmistoarkkitehtuurit kevät

7. Ohjelmistoarkkitehtuurien arviointi

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Ohjelmistojen suunnittelu

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

Tiedonsiirto- ja rajapintastandardit

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

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmistoarkkitehtuurit

6. Arkkitehtuurityylit

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

Harjoitustehtävät viikolle 42

Suunnitteluvaihe prosessissa

Laatukustannukset. Laadun hallinta. Laadun kustannuksista

ohjelman arkkitehtuurista.

Laadun hallinta. Laatukustannukset. Laadun kustannuksista. Sami Kollanus TJTA330 Ohjelmistotuotanto

Laadun hallinta. Laatukustannukset. Sami Kollanus TJTA330 Ohjelmistotuotanto

Ohjelmistojen mallintaminen, sekvenssikaaviot

Simulointi. Tapahtumapohjainen

Tässä kertauksena SOA ja palvelu.

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Tulevaisuuden Internet. Sasu Tarkoma

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

Ohjelmistoarkkitehtuuri

Luku 8. Aluekyselyt. 8.1 Summataulukko

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

Ohjelmistoarkkitehtuurin suunnittelu

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

Kiinnostuspohjainen topologian hallinta järjestämättömissä vertaisverkoissa

The administrative process of a cluster. Santtu Rantanen Valvoja: Prof. Jorma Jormakka

Algoritmit 1. Luento 7 Ti Timo Männikkö

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle,

Ohjelmistoarkkitehtuurit, syksy

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

Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi

Avoimen ja jaetun tiedon hyödyntäminen. Juha Ala-Mursula BusinessOulu

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Kytkentäkentät, luento 2 - Kolmiportaiset kentät

Ohjelmistotekniikan menetelmät, arkkitehtuuria ja rajapintoja

UML:n yleiskatsaus. UML:n osat:

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

Kooste kotitehtävien vastauksista. Kotitehtävä 6 - Ylläpito- ja kehittämismalli

Pitkäaikaissäilytyksen toiminta ja ylläpito

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

Tietokanta (database)

Tekninen suunnitelma - StatbeatMOBILE

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

Avoimen lähdekoodin ohjelmistot julkisessa hallinnossa

VMU-C EM. Asennus ja käyttö

Ohjelmistotekniikan menetelmät, UML

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistoarkkitehtuurit kevät

Tietorakenteet ja algoritmit - syksy

T Harjoitustyöluento

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

SEPA - Design Patterns

9. Ohjelmistoarkkitehtuurien arviointi

Kela Kanta-palvelut Terveydenhuollon todistusten välitys Toiminnalliset prosessit

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Toiminnallinen turvallisuus

Transkriptio:

Arkkitehtuurityylejä ja suunnittelutaktiikoita Luento 5 17.9.2013 581385 Ohjelmistoarkkitehtuurit 1 Arkkitehtuurityylejä Oppimistavoitteet jaettu tietovarasto, viestinvälitysarkkitehtuurit, vertaisverkkoarkkitehtuuri, map-reduce Suunnittelutaktiikoita laatuominaisuuksien saavuttamiseksi Suorituskyky- ja muunneltavuustaktiikat 17.9.2013 581385 Ohjelmistoarkkitehtuurit 2 1

ARKKITEHTUURITYYLIT (OSA 2) 17.9.2013 581385 Ohjelmistoarkkitehtuurit 3 Jaettuun tietovarastoon perustuva arkkitehtuuri Data centered - Shared state - Repository Joukko komponentteja ylläpitää yhteistä tilaa tietovarastossa Erilaisia muunnelmia sen mukaan, kuinka aktiivinen rooli tietovarastolla on Kahdenlaisia komponentteja Keskitetty tietorakenne: tietovarasto Asiakaskomponentit: hakevat tietoa tietovarastosta ja muokkaavat sitä Järjestelmän kontrolli määräytyy tietovaraston tilan mukaan 17.9.2013 581385 Ohjelmistoarkkitehtuurit 4 2

Jaetun tietovaraston arkkitehtuuri processor 1 processor 2 state Käsittelijät toisistaan riippumattomia 17.9.2013 581385 Ohjelmistoarkkitehtuurit 5 Jaetun tietovaraston arkkitehtuuri Vuorovaikutus käsittelijöiden välillä tapahtuu ainoastaan tietovaraston kautta Käsittelijöiden tietovarastoon tekemät muutokset johtavat vaiheittain haluttuun lopputulokseen Käsittelijän aktivointi Käsittelijät voivat pollata tietovarastoa tutkiakseen onko tila sellainen, mistä käsittelijä pystyy jatkamaan toimintaa jos on, käsittelijä tuottaa tuloksia, jotka kirjaa tietovarastoon Tietovarasto voi aktivoida käsittelijän jonkin säännön perusteella, esimerkiksi sisällön muuttumisen perusteella vrt tietokantatriggerit 17.9.2013 581385 Ohjelmistoarkkitehtuurit 6 3

Jaetun tietovaraston arkkitehtuuri Käsittelijät voivat toimia rinnakkain Edellyttää samanaikaisuuden hallintaa: tiedon lukitus miten estetään yhtä käsittelijää varaamasta koko tietovarastoa itselleen (liian pitkäksi aikaa)? Esimerkkejä Tekoälysovellukset (blackboard-arkkitehtuuri), Wikit, Google docs, MS Sharepoint, muut verkkotyöalustat 17.9.2013 581385 Ohjelmistoarkkitehtuurit 7 Jaetun tietovaraston arkkitehtuuri Etuja Muunneltavuus & laajennettavuus (itsenäiset, toisistaan riippumattomat käsittelijät) Rinnakkaisuuden hyödyntäminen Haittoja Rinnakkaisuuden ja päällekäisten päivitysten hallinta on mietittävä tarkkaan 17.9.2013 581385 Ohjelmistoarkkitehtuurit 8 4

Viestinvälitysarkkitehtuurit Implicit invocation Komponentit kommunikoivat lähettämällä toisilleen viestejä Viesti voidaan lähettää tietylle kohteelle tai yleislähetyksenä kaikille tunnetuile kohteille tai kaikille kiinnostuneille kohteille Viestintä voi olla sykronista (lähettäjä jää odotamaan) tai asynkronista (lähettäjä jatkaa toimintaansa) 17.9.2013 581385 Ohjelmistoarkkitehtuurit 9 Viestinvälitysarkkitehtuurit Julkaisija Tilaaja (Publish Subscribe) Tuottaja Kuluttaja (Supplier- Consumer) Yksinkertaisimmillaan julkaisija pitää kirjaa vastaanottajista ja tietosisällön muuttuessa välittää tiedon tilaajille proseduurikutsun välityksellä. Tilaaja rekisteröityy vastaanottajaksi ja toimittaa rekisteröinnin yhteydessä vastaanottorajapinnan (callback) Yllä oleva toimii ohjelman sisäisesti Verkkoratkaisussa tarvitaan kommunikointiprotokolla ja välittäjä (broker) huolehtimaan viestinvälityksestä 17.9.2013 581385 Ohjelmistoarkkitehtuurit 10 5

Viestinvälitysarkkitehtuurit Julkaisija-Tilaaja Välittäjä tietää vastaanottajat (rekisteröityminen tai konfigurointi) Julkaisija toimittaa viestin välittäjälle Välittäjä toimittaa viestin edelleen siitä kiinnostuneille tilaajille Tilaaja käsittelee viestin 17.9.2013 581385 Ohjelmistoarkkitehtuurit 11 Viestinvälitysarkkitehtuurit Julkaisija-Tilaaja Arkkitehtuurissa määriteltävä seuraavat asiat: Keskenään kommunikoivat komponentit Viestit, joiden avulla kommunikointi tapahtuu ilman, että lähettäjä tuntee vastaanottajan (tai vastaanottaja lähettäjän) sijaintia Operaatiot, joilla komponentit reagoivat viesteihin (komponenttien ymmärtämä kieli) Säännöt, joiden avulla komponentit ja viestit rekisteröidään järjestelmälle 17.9.2013 581385 Ohjelmistoarkkitehtuurit 12 6

Viestinvälitysarkkitehtuurit Julkaisija-Tilaaja Säännöt, joiden perusteella välittäjä tietää, mille komponentille viesti on lähetettävä Viestin vastaanottajan selvittäminen: yleisviesti (multiple dispatch; viesti kaikille, jotkut käsittelevät, toiset eivät) etu: vastaanottajan ei tarvitse etukäteen kertoa, mitä viestejä se haluaa vastaanottaa komponentit kertovat rekisteröinnin yhteydessä, mitä viestejä ne haluavat vastaanottaa (tai keneltä) 17.9.2013 581385 Ohjelmistoarkkitehtuurit 13 Viestinvälitysarkkitehtuurit Julkaisija-Tilaaja Rinnakkaisuus: missä määrin välittäjä ja komponentit toimivat rinnakkain viestinvälittäjillä ja vastaanottajilla viestijonot (välittäjän laatikko, vastaanottajan laatikko) Puskurointi, palvelutasot 17.9.2013 581385 Ohjelmistoarkkitehtuurit 14 7

Viestinvälitysarkkitehtuurit Tapahtumapohjaiset arkkitehtuurit (event-based, event driven) Komponentit kommunikoivat aiheuttamalla tapahtumia (event) Tapahtumat voivat välittyä kaikille muille komponenteille, joista jotkut käsittelevät ja toiset eivät noteeraa Tapahtumien lähetys voidaan myös rajoittaa julkaisija tilaaja rakenteen tapaan tapahtuma lähetetään vain tapahtuman tyypistä kiinnostuneille komponentteja ei ole kuitenkaan lokeroitu joko julkaisijoiksi tai tilaajiksi vaan komponentti voi toimia kumpanakin 17.9.2013 581385 Ohjelmistoarkkitehtuurit 15 Viestinvälitysarkkitehtuurit Tapahtumapohjainen :Component :Component :Component Väylä / Event bus :Component :Component publish subscribe 17.9.2013 581385 Ohjelmistoarkkitehtuurit 16 8

Viestinvälitysarkkitehtuurit Tapahtumapohjainen Tapahtuma Tilanne, joka voi sattua ohjelman suorituksen aikana Edellyttää reagointia joiltain järjestelmän osilta Lähde = tapahtuman synnyttävä komponentti Tarkkailija = tapahtumaan reagoiva komponentti Lähde lähettää tapahtumailmoituksen sitä tarkkailemaan rekisteröityneelle tarkkailijalle Esimerkiksi Signals & Slots 1 Qt-sovelluskehyksen olioarkkitehtuurissa Lähde tietää dynaamisesti tarkkailijoidensa olemassaolon, mutta ei niiden tarkkaa tyyppiä Tapahtumaväylää käytettäessä lähteet eivät tiedä tarkkailijoistaan (vrt. MVC, Observer -mallit) Ilmoituksen lähetys voidaan hoitaa proseduurikutsuna tai sanomanvälityksenä (event bus, message bus) proseduurikutsu synkroninen (esim Qt Signals & Slots) Sanomajono asynkroninen/synkroninen 1 http://en.wikipedia.org/wiki/signals_and_slots, http://qt-project.org/doc/qt-5.0/qtcore/signalsandslots.html 17.9.2013 581385 Ohjelmistoarkkitehtuurit 17 EventObject Javan tapahtumamalli Vapaasti toteutettavissa EventListener MyEvent EventSource ListenerContainer addeventlistener(evli) notifyall Observer calls EventListenerInterface eventhappened(myevent) update implements ConcreteEventListerner Ev1 creates ES1 addeventlistener( ) eventhappened(event) Instance of calls CEL-1 eventhappened( ) 17.9.2013 581385 Ohjelmistoarkkitehtuurit 18 9

Etuja Viestinvälitysarkkitehtuurit Joustavuus, muunneltavuus, modulaarisuus Uusien tuottajien/julkaisijoiden ja kuluttajien/tilaajien dynaaminen lisääminen Välittäjän/väylän tekemät automaattiset esitystapamuunnokset, erilaisia palvelutasoja toteutettavissa (varmistettu perillemeno vs. fire and forget) Komponenttien omatahtinen evoluutio Paljon käytettyjen välittäjä-/väyläratkaisujen hyväksi kehittynyt laatu Luotettavuus, skaalautuvuus, suorituskykyoptimoinnit, jne. 17.9.2013 581385 Ohjelmistoarkkitehtuurit 19 Haittoja Viestinvälitysarkkitehtuurit Välittäjän tai tapahtumaväylän tuoma suoritusrasite (overhead) verrattuna suoriin (point-to-point) yhteyksiin 17.9.2013 581385 Ohjelmistoarkkitehtuurit 20 10

Vertaisverkkoarkkitehtuuri peer-to-peer Verkko, jonka solmut voivat toimia sekä asiakkaina että palvelimina Puhtaassa vertaisverkossa kaikki solmut ovat tasavertaisia Verkko on symmetrinen ja ei-hierarkinen 17.9.2013 581385 Ohjelmistoarkkitehtuurit 21 Vertaisverkkoarkkitehtuuri Palvelupyyntö etenee verkossa solmusta solmuun kunnes löytyy solmu, joka kykenee täyttämään pyynnön Rakenteettomassa verkossa pyynnön eteneminen sokeaa Solmut tuntevat suorat naapurinsa, mutta eivät näiden tarjoamia palveluita Rakenteellisessa solmut jakavat rakennetietoa palveluista ja tätä käytetään ohjaamaan etenemistä Edellyttää verkkoprotokollaa 17.9.2013 581385 Ohjelmistoarkkitehtuurit 22 11

Vertaisverkkoarkkitehtuuri Etuja Saatavuus paranee, jos palvelu/resurssi on hajautettu useina (osa-)kopioina verkon solmuihin (esimerkiksi jonkin mediatiedoston fragmentit) Vikasietoisuus kasvaa, koska yksittäisen solmun vikaantuminen ei ole kriittistä (tiedon/palvelun toisteisuus, vaihtoehtoiset saantipolut) Skaalautuvuus ja laajennettavuus ovat hyvät, ei yksittäistä kriittistä komponenttia (no single point of failure) 17.9.2013 581385 Ohjelmistoarkkitehtuurit 23 Haittoja Vertaisverkkoarkkitehtuuri Verkkoon voi muodostua saaria tai klikkejä, jonka solmut eivät ole yhteydessä klikin ulkopuolisiin solmuihin Yksittäiset haut saattavat aiheuttaa paljon turhaa liikennettä (resurssia etsitään turhaan, tai se löytyy monista solmuista) Verkon rakenne ei ole vakaa (solmuja tulee ja lähtee) 17.9.2013 581385 Ohjelmistoarkkitehtuurit 24 12

Vertaisverkkoarkkitehtuuri Vertaissolmujen rinnalle onkin usein pakko luoda pysyviä Super- tai Ultra-solmuja jotka Liittävät uusia solmuja verkkoon Kytkeytyvät suoraan moniin alempiin solmuihin ja toisiinsa hakujen optimoimiseksi Katso esimerkiksi Gnutella, Skype 17.9.2013 581385 Ohjelmistoarkkitehtuurit 25 Map-Reduce -arkkitehtuuri Motivaatio Hyvin suuren datamäärän hajautettu tallennus ja prosessointi Data ja käsittelyoperaatiot suhteellisen yksinkertaisia, mutta niitä on todella paljon Perusperiaate Koko datamassa jaetaan pienempiin osiin (splits) Osien käsittely jaetaan rinnakkain suoritettaviin tehtäviin, jotka tuottavat paikallisen välituloksen (map-operaatio) Välitulokset yhdistetään globaaliksi tulokseksi (reduceoperaatio) 17.9.2013 581385 Ohjelmistoarkkitehtuurit 26 13

Etuja Map-Reduce -arkkitehtuuri Skaalautuvuus, saatavuus, suorituskyky Katso esim. Rackspace esimerkki 1. luennolta Huomattavaa Suoritusnopeus riippuu siitä, miten map-operaatio onnistuu jakamaan syötedatan yhtä vaativiin palasiin 17.9.2013 581385 Ohjelmistoarkkitehtuurit 27 SUUNNITTELUTAKTIIKAT 17.9.2013 581385 Ohjelmistoarkkitehtuurit 28 14

Laatutekijät arkkitehtuurisuunnittelussa Onnistunut arkkitehtuuri on edellytys järjestelmän keskeisten laatuvaatimusten saavuttamiseksi Pelkät arkkitehtuuritason ratkaisut eivät kuitenkaan takaa laatuvaatimusten täyttymistä Myös yksityiskohdat ja toteutustapa vaikuttavat, mutta eivät voi parantaa huonoa arkkitehtuuriratkaisua Onnistuneen järjestelmän edellytyksenä on sekä kokonaisuuden (~ arkkitehtuuri) että yksityiskohtien (~ toteutus) laadun varmistaminen 17.9.2013 581385 Ohjelmistoarkkitehtuurit 29 Laatutekijät arkkitehtuurisuunnittelussa Laatuominaisuudet (a.k.a laatuattribuutit, laatutekijät) vaikuttavat toisiinsa Esimerkiksi millä tahansa muulla laatuattribuutilla on yleensä negatiivinen vaikutus suorituskykyyn (vrt. esim. muokattavuus, turvallisuus, saatavuus, ) Laatuominaisuuksien tasapainottelua (trade-off) ei voi yleensä välttää (esim. Rackspace tapaus 1. luennolta) Ei voida keskittyä laatuattribuutteihin yksittäin, vaan kokonaisuus ratkaisee 17.9.2013 581385 Ohjelmistoarkkitehtuurit 30 15

Laatutekijät arkkitehtuurisuunnittelussa Laatuattribuutteja accessibility, accountability, accuracy, adaptability, administrability, affordability, auditability, autonomy, availability, credibility, process capabilities, compatibility, composability, configurability, correctness, customizability, degradability, determinability, demonstrability, dependability, deployability, distributability, durability, efficiency, evolvability, extensibility, failure transparency, fault-tolerance, fidelity, flexibility, installability, Integrity, interchangeability, interoperability, learnability, maintainability, mobility, modularity,nomadicity, operability. orthogonality, portability, precision, predictability. provability. recoverability, relevance, reliability, repeatability, reproducibility, resilience, responsiveness, reusability, robustness, safety, scalability, seamlessness, self-sustainability, serviceability, securability, simplicity, stability, standards compliance, survivability, sustainability, tailorability, testability, timeliness, traceability, ubiquity, understandability, upgradability, usability (Wikipedia) Ohjelmistojen laatumalli: ISO 25000 standardisarja (a.k.a SQuaRE, luettavissa Kumpulan tiedekirjastossa) 17.9.2013 581385 Ohjelmistoarkkitehtuurit 31 Laatutekijät arkkitehtuurisuunnittelussa Bass et al. 1 ovat määritelleet taktiikoita laatuominaisuuksien saavuttamiseen Taktiikka on suunnittelupäätös, joka suoraan vaikuttaa laatuominaisuuden toteutumiseen Tyylejä ja malleja yksityiskohtaisempia ja lähempänä toteutusta Tarkastellaan esimerkkeinä suorituskykyä ja ylläpidettävyyttä 1 http://etutorials.org/programming/software+architecture+in+practice,+second+edition/ Part+Two+Creating+an+Architecture/Chapter+5.+Achieving+Qualities/ 17.9.2013 581385 Ohjelmistoarkkitehtuurit 32 16

Laatutekijät arkkitehtuurisuunnittelussa Suorituskykytaktiikoiden tavoitteena on saavuttaa määrätty reaktio- /vastausaika johonkin järjestelmän vastaanottamaan tapahtumaan Vastausaika riippuu 1. resurssien käytöstä 2. odotusajasta Kilpailu resursseista resurssin saatavuus Riippuvuus muusta toiminnasta Resurssitarpeeseen vaikuttavat taktiikat laskennan tehostaminen (algoritmi, välitulosten käsittely) yleisrasitteen vähentäminen (esim. etäkutsut paikallisiksi) tapahtumamäärän vähentäminen tapahtumien vastaanoton kontrollointi käsittelyajan rajoittaminen jonojen koon rajoittaminen 17.9.2013 581385 Ohjelmistoarkkitehtuurit 33 Laatutekijät arkkitehtuurisuunnittelussa Resurssien hallintataktiikat Rinnakkaisuuden lisääminen Toiminnan / datan monistaminen Resurssien lisääminen Resurssien allokointitaktiikat jono prioriteettijono dynaaminen prioriteettijono staattinen allokointi 17.9.2013 581385 Ohjelmistoarkkitehtuurit 34 17

Laatutekijät arkkitehtuurisuunnittelussa Muunneltavuustaktiikat (modifiability tactics) Ohjelmiston muunneltavuutta mitataan laskemalla aikaa ja kustannuksia, jotka kuluvat ohjelmistomuutosten toteuttamiseen, testaamiseen ja käyttöönottoon Muunneltavuutta lähellä olevia tekijöitä: adaptability, evolvability, maintainability Muunneltavuustaktiikat voidaan jakaa kolmeen ryhmään Muutosten lokalisointiin perustuvat taktiikat Heijastusvaikutusten (ripple effect) estämiseen perustuvat taktiikat Sidonnan viivästämiseen perustuvat taktiikat 17.9.2013 581385 Ohjelmistoarkkitehtuurit 35 Muunneltavuustaktiikat Muutosten lokalisointi Tavoitteena rajoittaa odotettavissa olevien muutosten vaikutus mahdollisimman pieneen joukkoon komponentteja Määrätään komponenttien vastuut siten, että odotettavissa olevat muutokset koskevat rajattua joukkoa komponentteja Lokalisointitaktiikkoja: Komponentin vastuiden semanttinen yhtenäisyys (semantic coherence) Vastuut hoidettavissa ilman laajaa ulkopuolista kommunikointia Yleiskäyttöisten palvelujen eristäminen omiin moduuleihin Odotettavissa oleviin muutoksiin varautuminen Yleistäminen ja parametrisointi Erikoistaminen parametrien kautta parametrien tulkinta Vaihtoehtojen rajoittaminen 17.9.2013 581385 Ohjelmistoarkkitehtuurit 36 18

Muunneltavuustaktiikat Heijastusvaikutusten esto Ohjelmamuutoksen heijastusvaikutukset (ripple effects) tarkoittavat muutoksia, jotka täytyy tehdä moduuleihin, joita varsinainen muutos ei suoraan koske Jos moduulia A muutetaan, niin moduulia B joudutaan muuttamaan vain siksi, että A:ta on muutettu ei siksi että B:n ominaisuuksia on ollut tarve muuttaa Tämä heijastusvaikutus johtuu siitä, että B:n toteutuksessa on jokin riippuvuus A:n toteutukseen 17.9.2013 581385 Ohjelmistoarkkitehtuurit 37 Muunneltavuustaktiikat Heijastusvaikutusten esto Moduulien välisiä riippuvuustyyppejä: Syntaktinen (muotoa koskeva) riippuvuus koskien dataa tai palveluja Yhteinen formaatti datalle, palveluiden kutsumuodot Semanttinen (merkitystä koskeva) riippuvuus koskien dataa tai palveluja Datan/palvelun käyttäjän on tulkittava merkitys samoin kuin tuottajan Järjestysriippuvuus koskien dataa tai kontrollia Datan saapuminen tietyssä järjestyksessä Palveluiden suorittaminen tietyssä järjestyksessä, esim. A.n pitää olla suorittanut palvelu A1 ennen kuin B voi suorittaa palvelun B1 Rajapinnan identiteetti tunnettava Nimi tai kahva ( handle ) oltava tiedossa käännös ja suoritusaikana 17.9.2013 581385 Ohjelmistoarkkitehtuurit 38 19

Muunneltavuustaktiikat Heijastusvaikutusten esto Moduulien välisiä riippuvuustyyppejä Suoritusaikainen sijainti tunnettava Esim. IP-osoitteen tietäminen Datan tai palvelun laatutaso tunnettava esim. tarkkuus (onko sentit mukana?) Komponentin olemassaolon edellyttäminen Ei voida luoda dynaamisesti Moduulin käyttämien resurssien tunteminen 17.9.2013 581385 Ohjelmistoarkkitehtuurit 39 Muunneltavuustaktiikat Heijastusvaikutusten esto Semanttisiin riippuvuuksiin perustuvia heijastusvaikutuksia on yleisesti ottaen vaikea estää Voi olla epätarkoituksenmukaista tarjota kaikille käyttäjille semantiikaltaan täsmälleen samanlaista rajapintaa ja käyttäytymistä kuin ennen muutoksia Vanhan implementaation muuttamiseen on yleensä painavia syitä Kahta erillistä implementaatiota voidaan joutua ylläpitämään siirtymäkauden ajan (vanhaa uuden rinnalla) Seuraavassa esitetyistä taktiikoista mikään ei välttämättä estä semanttisiin riippuvuuksiin perustuvia heijastusvaikutuksia 17.9.2013 581385 Ohjelmistoarkkitehtuurit 40 20

Muunneltavuustaktiikat Heijastusvaikutusten esto Tiedon piilotus (Information hiding) Odotettavissa oleviin muutoksiin varautumista Todennäköisesti muuttuvien ominaisuuksien piilottaminen on moduulijaon yhtenä pääperiaatteena Olemassa olevien rajapintojen säilytys (Maintain existing interfaces) Jos B riippuu A:n tarjoaman rajapinnan nimestä tai kutsumuodoista, rajapinnan ja syntaksin säilyttäminen tarkoittaa, ettei B:tä tarvitse muuttaa A:n päivityksen yhteydessä Ei välttämättä auta, jos riippuvuudet ovat semanttisia tai palveluiden/datan laatutasoon tai resurssien käyttöön liittyviä Rajapintojen lisääminen, sovittimen (adapter) tai edustajaolion käyttö (proxy) 17.9.2013 581385 Ohjelmistoarkkitehtuurit 41 Muunneltavuustaktiikat Heijastusvaikutusten esto Kommunikaatioväylien rajoittaminen Rajoitetaan niiden moduulien määrää, joiden kanssa tietty moduuli käyttää samaa dataa Rajoitetaan niiden moduulien määrää, jotka tuottavat tietyn moduulin käyttämää dataa tai jotka käyttävät sen tuottamaa dataa Välittäjän käyttö Jos B:n riippuvuus A:sta ei ole semanttista tyyppiä, on aina mahdollista lisätä välittäjä B:n ja A:n väliin Välittäjä piilottaa riippuvuuden konkreettisen ilmentymän ja tarjoaa B:lle muuttumattoman näkymän A:han Välittäjä vastuulla on vain riippuvuuden hallinta, ei mitään muuta Erilaisia välittäjiä eri tarpeisiin: nimipalvelin, resurssimanageri 17.9.2013 581385 Ohjelmistoarkkitehtuurit 42 21

Muunneltavuustaktiikat Sidonnan viivästäminen Edellä kuvatut taktiikat pyrkivät vähentämään muutosten kustannuksia pienentämällä muutettavien moduulien määrää Niistä ei kuitenkaan ole hyötyä, jos halutaan lisätä ohjelmiston muunneltavuutta koskien moduulien käyttöönottotapaa ja aikaa tai halutaan mahdollistaa muiden kuin kehittäjien tekemän muutokset 17.9.2013 581385 Ohjelmistoarkkitehtuurit 43 Muunneltavuustaktiikat Sidonnan viivästäminen Sidonnan viivästäminen tukee molempia tavoitteita Periaate: lisäominaisuus tai muunneltu toiminnallisuus voidaan ottaa käyttöön ja kytkeä muuhun ohjelmistoon ajoaikana (vs. koostamisaika, build-time) Nopeuttaa käyttöönottoa: järjestelmää ei tarvitse ajaa alas (ja käynnistää uudelleen) Vaatii lisäinfrastruktuuria -> kasvattaa kustannuksia 17.9.2013 581385 Ohjelmistoarkkitehtuurit 44 22

Muunneltavuustaktiikat Sidonnan viivästäminen Ajonaikainen rekisteröinti (runtime registration) mahdollistaa plug-and-play operaatiot. Rekisteröinti aiheuttaa lisäkustannuksia. Tuottaja/kuluttaja rekisteröinti voidaan tehdä ajoaikaisesti tai latauksen yhteydessä. Konfigurointitiedostoissa voidaan säädellä käynnistyksen yhteydessä tehtäviä sidontoja ja parametreja. Polymorfismi mahdollistaa metodikutsujen myöhäisen sidonnan. Komponentin korvaus mahdollistaa latausaikaisen sidonnan. Protokollien noudattaminen mahdollistaa prosessien ajonaikaisen sidonnan 17.9.2013 581385 Ohjelmistoarkkitehtuurit 45 23