OHJ-3200 Ohjelmistoarkkitehtuurit 1 Arkkitehtuurien tutkimus Outi Räihä 2 Darwin-projekti Darwin-projekti: Akatemian rahoitus 2009-2011 Arkkitehtuurisuunnittelu etsintäongelmana Geneettiset algoritmit Perusajatus Valikoiva risteytys Monioptimointi 3 Johdanto Ohjelmistokehitys on iso bisnes ja ohjelmistojen suunnitteluun käytetään paljon aikaa ja rahaa Yleensä arkkitehdillä tapana käyttää tuttuja ratkaisuja arkkitehtuuri todennäköisesti toimii kohtuullisen hyvin ja säästetään aikaa, mutta rajoittaa luovia ratkaisuja Ohjelmat saadaan toimiviksi monella tavalla, mutta kaikki tavat eivät ole yhtä laadukkaita Laatua arvioidaan monen eri ominaisuuden suhteen, esim. käytettävyys, luotettavuus, muunneltavuus, tehokkuus Kilpailun kovetessa laatu saattaa kärsiä Voitaisiinko laatua parantaa helposti ja halvalla? 1
Arkkitehtuurisuunnittelu etsintäongelmana 4 Oletus: Arkkitehtuuri on yhdistelmä suunnittelumalleja ja tyylejä Laadukkain arkkitehtuuri saadaan, kun oikeita suunnittelumalleja/tyylejä käytetään oikeissa paikoissa Tehtävänä on löytää se yksilö, jossa on paras kombinaatio suunnittelumalleja ja -tyylejä optimointiongelma Optimointi on työlästä ihmiselle käytännössä ei ole mahdollista käydä läpi kaikkia vaihtoehtoja Voisiko etsinnän automatisoida? Etsintäalgoritmit Optimointiongelmiin käytetään etsintäalgoritmeja Etsintäalgoritmit käyvät läpi suurta ratkaisujoukkoa siirtyen satunnaisesti ratkaisusta toiseen Geneettinen algoritmi pohjautuu Darwinistiseen ajatukseen luonnonvalinnasta Huonot yksilöt karsitaan pois, parhaat jäävät jäljelle Parhaita yksilöitä jatkojalostetaan ja aikaa myöden saavutetaan yhä parempia yksilöitä Geneettiset algoritmit Ratkaisu ongelmaan = yksilö Ratkaisuja tietysti useita kaikkia ei käsitellä kerralla, vaan uusia ratkaisuja haetaan evoluution kautta. Käsiteltävä ratkaisujoukko tietyllä hetkellä on populaatio. Yksilö mallinnetaan kromosomina, joka koostuu geeneistä Geeni = ominaisuus Yksilöä jalostetaan mutaatioilla Yksilön jokin ominaisuus muuttuu Risteytys tuottaa yksilöitä, joilla on ominaisuuksia molemmilta vanhemmilta Lapsilla on geenejä kummaltakin vanhemmalta Hyvyys indikoi yksilön elinkelpoisuutta Siirtyykö seuraavaan sukupolveen? Mutaatio Risteytys Hyvyysarviointi Luonnon valinta sykliä toistetaan, kunnes ollaan tyytyväisiä (tai kunnes katsotaan, että parempaan ei pystytä) Sukupolvirajoitus Laaturajoitus 2
Geneettinen algoritmi - peruskäsitteet 7 Etsitään geneettisen algoritmin avulla parasta (tai lähes parasta) arkkitehtuuria kaikkien mahdollisten arkkitehtuurien (suunnittelumallikombinaatioiden) joukosta Etsitään geneettisen algoritmin avulla parasta (tai lähes parasta) arkkitehtuuria kaikkien mahdollisten arkkitehtuurien (suunnittelumallikombinaatioiden) joukosta Yksilö = arkkitehtuuri Lähtökohtana pelkät toiminnan toteuttavat komponentit, ns. nollaarkkitehtuuri Nolla-arkkitehtuuri saadaan sekvenssikaavioista tai käyttötapauskaavioista 3
10 nolla-arkkitehtuuri 11 nolla-arkkitehtuuri Etsitään geneettisen algoritmin avulla parasta (tai lähes parasta) arkkitehtuuria kaikkien mahdollisten arkkitehtuurien (suunnittelumallikombinaatioiden) joukosta Yksilö = arkkitehtuuri Mutaatio = suunnittelumallin/tyylin lisäys/poisto Toiminta pysyy samana, mutta laatu paranee (tai huononee!) Käytetyt tyylit ja mallit: viestinvälittäjä, asiakas-palvelin, sovitin, välittäjä, fasaadi, strategia ja operaatiorunko 4
mutaatiot 13 Etsitään geneettisen algoritmin avulla parasta (tai lähes parasta) arkkitehtuuria kaikkien mahdollisten arkkitehtuurien (suunnittelumallikombinaatioiden) joukosta Yksilö = arkkitehtuuri Mutaatio = suunnittelumallin/tyylin lisäys/poisto Risteytys = yhdistetään osia kahdesta eri arkkitehtuurista - risteytys 5
Etsitään geneettisen algoritmin avulla parasta (tai lähes parasta) arkkitehtuuria kaikkien mahdollisten arkkitehtuurien (suunnittelumallikombinaatioiden) joukosta Yksilö = arkkitehtuuri Mutaatio = suunnittelumallin/tyylin lisäys/poisto Risteytys = yhdistetään osia kahdesta eri arkkitehtuurista Elinkelpoisuus = miten hyvin vastaa laatuvaatimuksiin Laatuattribuutteina käytetty muunneltavuutta, tehokkuutta ja kompleksisuutta, jokaista voi painottaa erikseen Otettu huomioon koheesio, luokkien väliset riippuvuudet, viestinvälityksen ja serverin vaikutus sekä suunnittelumallien suotuisa vaikutus muunneltavuuteen - laadunarviointi 17 Etsitään geneettisen algoritmin avulla parasta (tai lähes parasta) arkkitehtuuria kaikkien mahdollisten arkkitehtuurien (suunnittelumallikombinaatioiden) joukosta Yksilö = arkkitehtuuri Mutaatio = suunnittelumallin/tyylin lisäys/poisto Risteytys = yhdistetään osia kahdesta eri arkkitehtuurista Elinkelpoisuus = miten hyvin vastaa laatuvaatimuksiin Laatuattribuutteina käytetty muunneltavuutta, tehokkuutta ja kompleksisuutta, jokaista voi painottaa erikseen Otettu huomioon koheesio, luokkien väliset riippuvuudet, viestinvälityksen ja serverin vaikutus sekä suunnittelumallien suotuisa vaikutus muunneltavuuteen Milloin ollaan tyytyväisiä? Käytetään sukupolvirajoitusta, eli ennaltamäärätty määrä iteraatioita. Lopputulos = viimeisen iteraation paras arkitehtuuri 6
19 valikoiva risteytys 20 Normaali risteytys yhdistelee satunnaisesti osia kahdesta arkkitehtuurista halki, poikki ja pinoon Voitaisiinko ottaa rodunjalostusperiaatteet käyttöön? Haetaan huippuyksilöt eri ominaisuuksin Tehokas isä ja muunneltava äiti Annetaan risteytyä vapaasti tai käytetään vielä geeniteknologiaa ja yhdistetään optimoidut geenit Tasapainoinen arkkitehtuuri nopeammin Tietyt suunnitteluratkaisut pääsevät pinnalle, kun korostetaan toispuoleisesti ominaisuuksia Esimerkkitapaus: viestinvälittäjä valikoiva risteytys 21 7
valikoiva risteytys 22 monioptimointi 23 Pareto-optimaalisuus Arvioi laatuominaisuuksia toisistaan erillään Laatuja ei lasketa yhteen Tehokkuus+muunneltavuus == omenat+appelsiinit Tuloksena Pareto-rintama Rintamaan pääsee sellaiset arkkitehtuurit, joille ei ole joka suhteessa parempaa vaihtoehtoa. Arkkitehti voi valita painotuksen lopputuloksen perusteella, ei arvailemalla - monioptimointi 24 8
- monioptimointi 25 - monioptimointi 26 27 Tarjoaa käyttöliittymän GA-pohjaiseen arkkitehtuurisynteesiin Sekvenssi/käyttötapauskaavioiden syöttö/luonti 9
28 29 30 Tarjoaa käyttöliittymän GA-pohjaiseen arkkitehtuurisynteesiin Sekvenssi/käyttötapauskaavioiden syöttö/luonti Nolla-arkkitehtuuri automaattisesti kaavioista 10
31 32 Tarjoaa käyttöliittymän GA-pohjaiseen arkkitehtuurisynteesiin Sekvenssi/käyttötapauskaavioiden syöttö/luonti Nolla-arkkitehtuuri automaattisesti kaavioista Mutaatioiden painotukset (voidaan suosia tiettyjä suunnittelumalleja, jos halutaan) Laatuominaisuuksien painotukset Periodit alussa voidaan suosia esim. tyylejä, myöhemmin matalan tason patterneja 33 11
34 35 Tarjoaa käyttöliittymän GA-pohjaiseen arkkitehtuurisynteesiin Sekvenssi/käyttötapauskaavioiden syöttö/luonti Nolla-arkkitehtuuri automaattisesti kaavioista Mutaatioiden painotukset (voidaan suosia tiettyjä suunnittelumalleja, jos halutaan) Laatuominaisuuksien painotukset Periodit alussa voidaan suosia esim. tyylejä, myöhemmin matalan tason patterneja Näyttää laatuarvot ja lopputuloksena saadun arkkitehtuurin Muitakin arkkitehtuureita voi tutkia! 36 12
37 38 Tarjoaa käyttöliittymän GA-pohjaiseen arkkitehtuurisynteesiin Sekvenssi/käyttötapauskaavioiden syöttö/luonti Nolla-arkkitehtuuri automaattisesti kaavioista Mutaatioiden painotukset (voidaan suosia tiettyjä suunnittelumalleja, jos halutaan) Laatuominaisuuksien painotukset Periodit alussa voidaan suosia esim. tyylejä, myöhemmin matalan tason patterneja Näyttää laatuarvot ja lopputuloksena saadun arkkitehtuurin Muitakin arkkitehtuureita voi tutkia! Mahdollisuus tutkia arkkitehtuurien sukupuuta miten arkkitehtuuri on kehittynyt Voidaan syöttää valmis arkkitehtuuri, jota GA lähtee kehittämään Voidaan jäädyttää haluttuja ratkaisuja GA tekee loput Inkrementaalinen kehitys Tuloksia 39 Verrattiin opiskelijoiden ratkaisuja GA:n ratkaisuihin Yhtä hyviä! Verrattiin Pareto-rintamaa skenaarioilla arvioituihin arkkitehtuureihin Onko skenaarioiden perusteella tehokas arkkitehtuuri myös rintaman tehokkain? Tilastollisesti ei merkittävää eroa, eli jakauma vastaa skenaarioiden mukaan saatua jakaumaa 13