Suorituskyky ja ohjelmistokehitys Suorituskykymallit Luento 2 58153003 Ohjelmistojen suorituskyky 1 SUORITUSKYKYISTEN OHJELMISTOJEN KEHITTÄMINEN 58153003 Ohjelmistojen suorituskyky 2 Helsingin Yliopisto / Tktl 1
Työ Ohjelmiston elinkaari ja suorituskyky konseptointi kehitys Käyttöönotto Tuotanto & jatkokehitys Aika Tunnista ja analysoi suorituskykyvaatimukset Kehittele ja analysoi teknologia-ja arkkitehtuuriratkaisuja/valintoja - Hylkää ilmiselvästi huonot Suorituskyvyn hallinnan käytäntöjen kehitys -Instrumentointi -Työkalut -Mittaukset -Takaisinkytkentä kehitykseen Jatkuva mittaaminen ja seuranta Ongelmien selvittäminen ja Sk:n parantaminen Muutosten sk-vaikutusten arviointi 58153003 Ohjelmistojen suorituskyky 3 Proaktiivinen ja reaktiivinen suorituskyvyn hallinta Proaktiivinen Tilanteiden ennakointi ja niihin valmistautuminen etukäteen Reaktiivinen Tilanteisiin reagointi vasta niiden tullessa konkreettisesti eteen 58153003 Ohjelmistojen suorituskyky 4 Helsingin Yliopisto / Tktl 2
Proaktiivisuus vs. reaktiivisuus Proaktiivisen suorituskyvyn kehittämisen ja hallinnan kannattajat korostavat Vaatimusten huolellista analysointia Arkkitehtuuri- ja teknologiavaihtoehtojen analyyttistä arviointia (mallit, prototyypit) suorituskyvyn kannalta ennen sitoutumista niihin Selkeää roolitusta ja sovittuja vastuita suorituskyvyn hallinnassa Kehittäjien kouluttamista ja tukemista 58153003 Ohjelmistojen suorituskyky 5 Proaktiivisuus vs. reaktiivisuus Reaktiivisen lähestymistavan edustajat korostavat Mittaamista, mikä yleensä vaatii konkreettista implementaatiota jota mitata Luotettavien arvioiden saamisen vaikeutta abstraktien mallien perusteella Luottamusta teknologia- ja laitteistotoimittajien kokemukseen ja kykyihin Ongelmien korjaamista ja säätämistä tarpeen mukaan Reaktiivinen hallintakin vaatii yleensä jonkin verran ennakointia onnistuakseen Implementaation instrumentointi alusta lähtien, työkalujen kehitys jne. 58153003 Ohjelmistojen suorituskyky 6 Helsingin Yliopisto / Tktl 3
SPE Smith & Williams ovat proaktiivisten menetelmien kannattajia Heidän SPE -menetelmänsä (Software Performance Engineering) keskittyy ohjelmistojärjestelmän arkkitehtuuri-, suunnittelu- ja implementaatiovaihtoehtojen evaluointiin Tasapainottelu (trade-off) vaatimusten, resurssien ja ohjelmiston suunnitteluratkaisujen välillä Mallien käyttö vaihtoehtoisten ratkaisujen evaluointiin jo ennen implementoinnin aloittamista SPE ohjaa myös vaatimusten ja arvioinneissa tarvittavan datan hankintaa sekä evaluointien läpivientiä ja antaa neuvoja hyvistä ja huonoista ratkaisumalleista (performance patterns and anti-patterns) 58153003 Ohjelmistojen suorituskyky 7 SPE SPE:n tavoitteena on pystyä vastaaman jo kehitysprojektin aikaisessa vaiheessa seuraaviin kysymyksiin Pysyvätkö tärkeimpien toimintojen vastausajat vaadituissa rajoissa? Pystyvätkö laitteisto ja tietoliikenne yhteydet kantamaan odotetun kuorman? Skaalautuuko järjestelmä tuleviin tarpeisiin? 58153003 Ohjelmistojen suorituskyky 8 Helsingin Yliopisto / Tktl 4
SPE:n suorituskykymallit SPE käyttää toteutettavan järjestelmän malleja suorituskykyarviointien perusteena Malleilla on rajoituksensa mutta niitä voidaan laatia melko vähällä vaivalla arkkitehtuuriratkaisuja mietittäessä Mallien ei tarvitse olla kattavia eikä kovin yksityiskohtaisia, kunhan ne tavoittavat suorituskyvyn kannalta oleelliset piirteet ja vuorovaikutukset järjestelmän komponenttien toiminnasta sekä laitteistosta 58153003 Ohjelmistojen suorituskyky 9 SPE:n mallinnusstrategiat (1) Yksinkertaisten mallien käyttö Projektin alkuvaiheessa yksinkertaisilla malleilla pyritään saamaan nopeaa palautetta eri ohjelmistoratkaisuista Tavoitteena on laatia mahdollisimman yksinkertaisia malleja, joiden avulla voidaan kuitenkin havaita arkkitehtuurin tai implementaatioratkaisujen ilmeisimmät suorituskykyongelmat ( show stoppers ) Jos jo yksinkertainen malli osoittaa ratkaisun toimittamattomaksi, ei yksityiskohtaisempi malli tilannetta muuksi muuta 58153003 Ohjelmistojen suorituskyky 10 Helsingin Yliopisto / Tktl 5
SPE:n mallinnusstrategiat (2) Pahimman ja parhaan tilanteen mallit Alkuvaiheen mallien suorituskykyparametrien (laitteiston nopeus, tietokantaoperaatioiden vaatima levyhakujen määrä) arviot ovat epävarmoja ja niillä voi olla laaja haarukka Haarukan ylä- ja alarajojen pohjalta laaditaan parhaimman ja pahimman tapauksen mallit Jos parhaimman tapauksen malli ennustaa suorituskykyongelmia, on tutkittava ratkaisuvaihtoehtoja, kunnes tyydyttävä ratkaisu löytyy Pahimman tapauksen mallin antaessa tyydyttävän tuloksen voidaan olla melko luottavaisia ratkaisun toimivuudesta Mallien avulla voidaan tunnistaa komponentit joilla on suhteellisesti suurin vaikutus esimerkiksi vastausaikoihin 58153003 Ohjelmistojen suorituskyky 11 SPE:n mallinnusstrategiat (3) Täsmentyvät mallit Kehitystyön edetessä yksinkertaisia malleja voidaan täsmentää ja tarkentaa, kun suorituskykyparametreista ja ohjelmiston yksityiskohdista saadaan lisää ja tarkempaa tietoa 58153003 Ohjelmistojen suorituskyky 12 Helsingin Yliopisto / Tktl 6
SPE:n käyttämät mallityypit UML:n käyttötapaukset ja skenaariot sekvenssikaavioilla kuvattuna Ohjelmasuoritusmallit (Software Execution Models) Skenaarioiden kulku ja vastausaikojen haarukointi yksittäisten käyttötapausten näkökulmasta Järjestelmäsuoritusmallit (System Execution Models) Suoritustehon ja vastausaikojen haarukointi, kun järjestelmässä on samaan aikaan useita käyttäjiä, joiden pyynnöt kilpailevat samoista resursseista 58153003 Ohjelmistojen suorituskyky 13 SPE -prosessi Aktiviteettikaavio, joka kuvaa SPEmenetelmän yleisen kulun (Smith&Williams 2002, Kuva 2-1, s.28) 58153003 Ohjelmistojen suorituskyky 14 Helsingin Yliopisto / Tktl 7
RUP ja suorituskyky Laskaritehtävänä saat selvittää, miten suorituskykyä hallitaan ja kehitetään Rational Unified Process viitekehyksen mukaisessa iteratiivisessa kehitysprosessissa http://en.wikipedia.org/wiki/performance_en gineering ja ketterässä kehityksessä 58153003 Ohjelmistojen suorituskyky 15 UML:n käyttötapausten ja skenaariokaavioiden käyttö OHJELMISTOJEN SUORITUSKYKYMALLIT 58153003 Ohjelmistojen suorituskyky 16 Helsingin Yliopisto / Tktl 8
Suorituskykymallit Ohjelmistojärjestelmiä voidaan mallintaa monesta näkökulmasta ja monella tasolla Oleellisia malleja ovat Suorituskyvyn kannalta tärkeimpien käyttötapausten (skenaarioiden) suorituksen mallinnus (~ vastausajat) Järjestelmän laite- ja ohjelmistoresursseja kuvaavat mallit, joita käyttäen voidaan arvioida koko järjestelmän suorituskykyä (~ suoritusteho) erilaisten työkuormien resurssitarpeiden perusteella ja resursseista käytävä kilpailu huomioonottaen Ohjelmistokomponenttien laitteistosijoittelua ja kommunikaatioväyliä kuvaavat mallit 58153003 Ohjelmistojen suorituskyky 17 SPE ja UML SPE on alun perin kehitetty oliopohjaiset ohjelmistot mielessä, joten UML:n käyttö on luontevaa osana menetelmää SPE käyttää lähinnä UML:n käyttötapauksia ja sekvenssikaavioita ja sijoittelukaavioita UML:ää käytetään suorituskyvyn kannalta tärkeimpien skenaarioiden (käyttötapauksen suoritus) tunnistamiseen ja määrittelyyn 58153003 Ohjelmistojen suorituskyky 18 Helsingin Yliopisto / Tktl 9
SPE ja UML UML:n käyttötapausten ja sekvenssikaavioiden perusteet oletetaan tunnetuiksi Jos ovat unohtuneet, kertaa asiat esim. Ohjelmistotuotannon menetelmät kurssin materiaaleista Seuraavassa keskitytään niiden käyttöön SPE:ssä 58153003 Ohjelmistojen suorituskyky 19 Käyttötapaukset ja skenaariot Käyttötapauksilla mallinnetaan melko karkealla tasolla, mitä ohjelmisto tekee ulkopuolisten toimijoiden (actors, käyttäjät, operaattorit, toiset järjestelmät) näkökulmasta Millä tavoin he käyttävät järjestelmää saavuttaakseen jonkin tavoitteensa (työtehtävä, informaation saaminen, digitaalisen sisällön kuluttaminen jne.) Käyttötapauksilla on selvä lähtökohta sekä lopputilanne, joka on merkityksellinen käyttäjän kannalta 58153003 Ohjelmistojen suorituskyky 20 Helsingin Yliopisto / Tktl 10
Käyttötapaukset ja skenaariot Järjestelmän kaikkien käyttötapausten joukosta pitää tunnistaa suorituskyvyn kannalta kriittiset kt:t Ovat järjestelmän toiminnan ja mission kannalta kriittisiä (joiden ehdottomasti pitää toimia halutulla tavalla) Vaikuttavat käyttäjän käsitykseen järjestelmän responsiivisuudesta Joiden suorituskykytavoitteisiin liittyy riskejä 58153003 Ohjelmistojen suorituskyky 21 Käyttötapaukset ja skenaariot Karkean tason käyttötapaukset (jotka oikeastaan sisältävät vain kuvaavan nimen ja käyttäjäroolit) täytyy tarkentaa asteittain skenaarioksi eli konkreettisiksi tapahtumakuluiksi, jotka Kuvaavat aluksi käyttäjäroolien ja järjestelmän välisen vuorovaikutuksen ajassa Black-box skenaariot Tarkentuvat sitten järjestelmän komponenttien välisen vuorovaikutuksen (sisäisen prosessoinnin) kuvauksella White-box skenaariot 58153003 Ohjelmistojen suorituskyky 22 Helsingin Yliopisto / Tktl 11
Esimerkki ATM (eli pankkiautomaati) Käyttötapauksia voidaan jakaa ryhmiin ja luokitella, ja niiden välille voidaan määritellä erilaisia assosiaatioita (sisältyvyys, erikoistus, laajennos) 58153003 Ohjelmistojen suorituskyky 23 ATM black box skenaario yksi mahdollinen tapahtumakulku (skenaario jatkuu, ei näytetä tässä kuvassa loppuun asti) 58153003 Ohjelmistojen suorituskyky 24 Helsingin Yliopisto / Tktl 12
Toisto ja valinta kaikki vaihtoehtoiset kulut Viittaus toiseen sekvenssikaavioon 58153003 Ohjelmistojen suorituskyky 25 Withdrawal sekvenssi avattuna 58153003 Ohjelmistojen suorituskyky 26 Helsingin Yliopisto / Tktl 13
Ajoitus UML sekvenssikaavioihin on mahdollista liittää viestien lähetykseen ja vastaanottoa koskevai aikarajoitteita Käytetään lähinnä joidenkin tapahtumien välisen keston minimi- ja maksimiaikojen määrittelyyn Timeout Tavoiteaikoja voidaan myös mallintaa samalla mekanismilla, jos käytetään myös kommenttilappua selittämään, miten rajoite pitää tulkita 58153003 Ohjelmistojen suorituskyky 27 Aikarajoitteet 58153003 Ohjelmistojen suorituskyky 28 Helsingin Yliopisto / Tktl 14
Rinnakkaisuus Aktiiviset objektit ovat olioita, joilla on oma suoritussäie (thread of execution) Ne yleensä aktiivisesti ohjaavat ja kontrolloivat muiden olioiden toimintaa ja vuorovaikutusta Luokille on määritelty stereotyypit <<Process>> ja <<Thread>> Vastaavat samoja käyttöjärjestelmätason käsitteitä Sijoittelukaavioissa määritellään ohjelmistokomponenttien suoritusaikainen sijoittelu laitteiston prosessointiyksiköihin (nodes) Komponentti ~kokoelma yhteenkuuluvia toimintoja ja palveluita, implementaation yksikkö 58153003 Ohjelmistojen suorituskyky 29 Rinnakkaisen toiminnan kuvaus Rinnakkain suoritettavia toimintoja, joitten tapahtumat (viestit) saavat lomittua muuten vapaasti, mutta fragmentin sisäisen järjestyksen silti säilyttäen 58153003 Ohjelmistojen suorituskyky 30 Helsingin Yliopisto / Tktl 15