Reflektio ja aspektiohjelmointi behavioraalisten suunnittelumallien toteutuksessa
Reijonen, Matti (2013-05-27)
Reijonen, Matti
M. Reijonen
27.05.2013
© 2013 Matti Reijonen. Tämä Kohde on tekijänoikeuden ja/tai lähioikeuksien suojaama. Voit käyttää Kohdetta käyttöösi sovellettavan tekijänoikeutta ja lähioikeuksia koskevan lainsäädännön sallimilla tavoilla. Muunlaista käyttöä varten tarvitset oikeudenhaltijoiden luvan.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:oulu-201306061570
https://urn.fi/URN:NBN:fi:oulu-201306061570
Tiivistelmä
Reflektio ja aspektipohjainen ohjelmointi ovat vielä kohtalaisen uusia käsitteitä, joiden hyödyllisyyttä on käsitelty useissa julkaisuissa. Sekä behavioraalista reflektiota että aspektipohjaista ohjelmointia voidaan käyttää ohjelmistojen virheiden hallintaan ja lokikirjauksiin liittyvän ohjelmakoodin modularisoimiseen.
Reflektiota ja aspektipohjaista ohjelmointia on myös sovellettu perinteisiin GoF-ohjelmistosuunnittelumalleihin. Varsinkin aspektipohjaisen ohjelmoinnin soveltamisesta suunnittelumalleihin on tehty useita julkaisuja, joissa esitettyjä suunnittelumallien muunnelmia tarkastellaan lähemmin käyttäen erilaisia ohjelmistometriikoita. Aspektipohjaista ohjelmointia varten on myös kehitelty omia metriikoita, mutta kyseisiä metriikoita tukevia työkaluja on hyvin vähän.
Aikaisemmasta tutkimuksesta poiketen tässä tutkielmassa verrataan aspektipohjaista ohjelmointia perinteisten oliopohjaisten ohjelmointiratkaisujen lisäksi reflektiivisiin ratkaisuihin. Tutkielma rajoittuu tutkimaan GoF-suunnittelumallien behavioraalista alaryhmää. Alkuperäisinä oliopohjaisina malleina, joihin muunneltuja malleja verrataan, käytetään Hannemannin ja Kiczalesin vuonna 2002 julkaisemia versioita kyseisistä suunnittelumalleista. Vertailussa käytettävät aspektipohjaiset mallit ovat myös peräisin samasta lähteestä. Tutkielmassa käytettävät vastaavat reflektiiviset mallit on toteutettu siten että niiden toiminnallisuus vastaa Hannemannin ja Kiczalesin esittämien oliopohjaisten mallien toiminnallisuutta. Ohjelmointikielissä tutkielma rajoittuu suurelta osin tutkimaan suunnittelumalleja Java-ohjelmointikielessä ja sen AspectJ-laajennuksessa.
Reflektiivisten mallien toteutus pohjautuu suurelta osin kahdessa julkaisussa esitettyihin ratkaisuihin. Behavioraaliseen reflektioon perustuvat suunnittelumallien modifikaatiot on toteutettu Hassounin, Johnsonin ja Counsellin vuonna 2004 julkaiseman teknisen raportin perusteella. Rakenteelliseen reflektioon perustuvat modifikaatiot sen sijaan perustuvat suurelta osin Palsbergin ja Jayn vuonna 1998 esittämiin parannuksiin Visitor-suunnittelumallissa.
Ohjelmointiratkaisuja arvioitiin käyttäen aopmetrics-työkalua, joka on tällä hetkellä ainoa työkalu, joka on vapaasti käytettävissä ja joka tukee aspektipohjaisten metriikka-arvojen mittausta. Ohjelmointiratkaisuja arvioitiin myös sen mukaan kuinka uudelleen käytettävää ohjelmointiratkaisuilla aikaan saatu ohjelmakoodi oli.
Aspektiohjelmoinnin hyödyt katsottiin olevan suurimmillaan suunnittelumalleissa, joiden osapuolten välillä oli paljon vuorovaikutusta keskenään. Behavioraalisen reflektion hyödyt olivat osittain samoilla suunnittelumalleilla kuin aspektiohjelmoinnissakin. Muista menetelmistä poiketen introspektio paransi huomattavasti Memento-suunnittelumallia.
Reflektiota ja aspektipohjaista ohjelmointia on myös sovellettu perinteisiin GoF-ohjelmistosuunnittelumalleihin. Varsinkin aspektipohjaisen ohjelmoinnin soveltamisesta suunnittelumalleihin on tehty useita julkaisuja, joissa esitettyjä suunnittelumallien muunnelmia tarkastellaan lähemmin käyttäen erilaisia ohjelmistometriikoita. Aspektipohjaista ohjelmointia varten on myös kehitelty omia metriikoita, mutta kyseisiä metriikoita tukevia työkaluja on hyvin vähän.
Aikaisemmasta tutkimuksesta poiketen tässä tutkielmassa verrataan aspektipohjaista ohjelmointia perinteisten oliopohjaisten ohjelmointiratkaisujen lisäksi reflektiivisiin ratkaisuihin. Tutkielma rajoittuu tutkimaan GoF-suunnittelumallien behavioraalista alaryhmää. Alkuperäisinä oliopohjaisina malleina, joihin muunneltuja malleja verrataan, käytetään Hannemannin ja Kiczalesin vuonna 2002 julkaisemia versioita kyseisistä suunnittelumalleista. Vertailussa käytettävät aspektipohjaiset mallit ovat myös peräisin samasta lähteestä. Tutkielmassa käytettävät vastaavat reflektiiviset mallit on toteutettu siten että niiden toiminnallisuus vastaa Hannemannin ja Kiczalesin esittämien oliopohjaisten mallien toiminnallisuutta. Ohjelmointikielissä tutkielma rajoittuu suurelta osin tutkimaan suunnittelumalleja Java-ohjelmointikielessä ja sen AspectJ-laajennuksessa.
Reflektiivisten mallien toteutus pohjautuu suurelta osin kahdessa julkaisussa esitettyihin ratkaisuihin. Behavioraaliseen reflektioon perustuvat suunnittelumallien modifikaatiot on toteutettu Hassounin, Johnsonin ja Counsellin vuonna 2004 julkaiseman teknisen raportin perusteella. Rakenteelliseen reflektioon perustuvat modifikaatiot sen sijaan perustuvat suurelta osin Palsbergin ja Jayn vuonna 1998 esittämiin parannuksiin Visitor-suunnittelumallissa.
Ohjelmointiratkaisuja arvioitiin käyttäen aopmetrics-työkalua, joka on tällä hetkellä ainoa työkalu, joka on vapaasti käytettävissä ja joka tukee aspektipohjaisten metriikka-arvojen mittausta. Ohjelmointiratkaisuja arvioitiin myös sen mukaan kuinka uudelleen käytettävää ohjelmointiratkaisuilla aikaan saatu ohjelmakoodi oli.
Aspektiohjelmoinnin hyödyt katsottiin olevan suurimmillaan suunnittelumalleissa, joiden osapuolten välillä oli paljon vuorovaikutusta keskenään. Behavioraalisen reflektion hyödyt olivat osittain samoilla suunnittelumalleilla kuin aspektiohjelmoinnissakin. Muista menetelmistä poiketen introspektio paransi huomattavasti Memento-suunnittelumallia.
Kokoelmat
- Avoin saatavuus [34237]