1 Darwin: Tutkimusprojektin esittely Tutkimusongelma: voidaanko ohjelmistoarkkitehtuuri generoida automaattisesti? Suomen Akatemian rahoittama tutkimusprojekti 2009-2011 TTY & TaY yhteistyö Ks. http://practise.cs.tut.fi/project.php?project=darwin
Lähtökohtia 2 Oletetaan, että on annettu nolla-arkkitehtuuri, järjestelmän toiminnallisuuden osittaminen huomioimatta laatuvaatimuksia on olemassa (suuri) joukko standardiratkaisuja, joilla voidaan vaikuttaa järjestelmän laatuominaisuuksiin (patternit, tyylit ym.) arkkitehtuurin suunnittelu tarkoittaa näiden ratkaisujen soveltamista nollaarkkitehtuuriin on olemassa tapa mitata miten hyvä arkkitehtuuri on suhteessa tiettyihin laatuvaatimuksiin (esm. muunneltavuus, tehokkuus, yksinkertaisuus). Ohjelmistoarkkitehtuurin suunnittelu voidaan ymmärtää etsintäongelmana: hae standardiratkaisujen kombinaatio, joka optimoi arkkitehtuurin hyvyyden Suuri hakuavaruus => heuristinen hakumenetelmä. Tässä projektissa valittu geneettinen algoritmi (GA)
3 Geneettiset algoritmit risteytyminen eliitti sukupolvi i luonnon valinta: sukupolvi i+1 fitness-arvon laskeminen mutaatio
Lopputulos 4 Tulos: Viimeisen sukupolven paras yksilö Sukupolvi 0 Sukupolvi 1 Sukupolvi n
Soveltaminen arkkitehtuureihin 5 Yksilö: Luokkakaaviona esitetty arkkitehtuuri Alkupopulaatio (sukupolvi 0): Nolla-arkkitehtuurista satunnaisesti mutatoituja arkkitehtuuriyksilöitä Mutaatiot: Viestinvälittäjä, Viestipohjainen kommunikointi, Asiakas-palvelin tyyli, Edustaja, Sovitin, Fasaadi, Välittäjä, Strategia, Operaatiorunko Mutaatio: ratkaisun lisääminen tai poistaminen Risteytyminen: Lapset saavat osan arkkitehtuurista isältä, osan äidiltä Satunnaisristeytyminen: vanhemmat ja jakokohta valittu satunnaisesti Valikoiva risteytyminen: vanhemmat valittu toisiaan täydentävinä, jakokohta valittu niin että kummankin hyvä osa tulee lapsiin
Fitness 6 sf1 positiivinen muunneltavuus sf2 negatiivinen muunneltavuus sf3 positiivinen tehokkuus sf4 negatiivinen tehokkuus sf5 kompleksisuus Painoja wi säätämällä voidaan ilmaista laatuominaisuuksien suhteellista tärkeyttä Lisäksi fitness-funktioon voidaan ottaa mukaan nk. muunneltavuusskenaarioita: tarkempia tietoja joidenkin toimintojen muutosherkyyksistä ja muutosten todennäköisyyksistä Projektissa tarkasteltu myös nk. Pareto-optimaalisuutta: ei yhtä painotettua fitness-funktiota, vaan kullekin laatuominaisuudelle oma fitness funktio, tuotetaan monta ratkaisua, joissa eri asiat ovat hyviä (nk. Pareto rintama)
7 Geneettinen arkkitehtuurin syntetisointi
Toiminnalliset vaatimukset sekvenssikaavioina 8
Sekvenssikaavioista voidaan johtaa nollaarkkitehtuuri 9 Osa nollaarkkitehtuurista:
10 Fitnessin kehittyminen Tool workshop 22.4.2009
Tulos: nolla-arkkitehtuuri + ratkaisut 11
Työkalu 12 Use case diagram Evolution controls Class diagram Family tree Settings view Evolution explorer Menu group Mutations view Scenarios view Weights view Generation view
Koe: kuinka hyviä arkkitehtuureja näin saadaan? 13 Mitä tarkoittaa hyvä arkkitehtuuri? 10 opiskelijalle annettiin arkkitehtuurin suunnittelutehtävä (valittu satunnaisesti 38:sta) Samoilla lähtötiedoilla tuotettiin geneettisesti 10 ratkaisua Ratkaisut paritettiin satunnaisesti (opiskelijan ratkaisu, GA ratkaisu) Parit annettiin koetehtävävastauksina neljän asiantuntijan arvioitavaksi (pisteet 0, 3, 5)
14 Tulokset e1,, e4: asiantuntijat ai: automaattisesti tuotettu ratkaisu mi: opiskelijan tuottama ratkaisu Parittainen vertailu:
15 Yhteenvetoa Kohtuullinen ohjelmistoarkkitehtuuri on mahdollista tuottaa automaattisesti tietyin edellytyksin: 1) Nolla-arkkitehtuuri (tai tarkennetut käyttötapaukset) voidaan antaa lähtötietona 2) Kattava kokoelma potentiaalisia standardiratkaisuja on käytettävissä 3) Arkkitehtuuria tarkastellaan sellaisten laatuominaisuuksien kannalta, jotka ovat mitattavissa arkkitehtuurin esityksestä