Aspektiohjelmointi

Wikipediasta
Siirry navigaatioon Siirry hakuun

Aspektiohjelmointi (engl. aspect-oriented programming, lyh. AOP) on ohjelmointiparadigma ja osa ohjelmistotuotantoa jonka tavoitteena on saada ohjelmistoissa toistuvat, ns. läpileikkaavat (cross cutting) toiminnallisuudet määriteltyä erillisenä osana varsinaisesta ohjelmakoodista, tehden mm. varsinaisesta ohjelmakoodista (perusohjelma) siistimpää. Läpileikkaavilla ominaisuuksilla tarkoitetaan toiminnallisuuksia jotka toistuvat ohjelman eri osissa. Sana "aspekti" tarkoittaa suomeksi näkökohtaa tai näkökantaa. Aspektiohjelmoinnissa aspektilla tarkoitetaan asiaa tai ongelmaa jota yksittäinen aspektikuvaus pyrkii käsittelemään. Esimerkkejä yleisistä erilaisista aspekteista voisivat olla erilaiset tietoturvaan liittyvät asiat, tunnistautuminen, lokitus, virheenkäsittely tai muu ohjelmistolle ominainen ns. bisneslogiikka.

Aspektiohjelmointi on tuettuna ja käytettävissä erillisenä lisäosana esimerkiksi ohjelmistokehys Springssä.[1]

Pankkiohjelmistossa on toteutettuna funktio joka siirtää rahaa pankkitililtä toiselle. Tämän funktion suoritukseen kuuluu mm. pankkitilin saldon tarkistus, virheenkäsittely sekä eri turvatarkastukset. Yksittäisestä funktiosta tulee yllättäen pitkä ja mahdollisesti vaikeasti hallittava prosessi. Aspektiohjelmoinnin avulla nämä (myös muualla ohjelmistossa toistuvat) eri toiminnallisuudet voidaan pilkkoa aspekteihin, jotka sittemmin liitetään suoritettavaksi osaksi tätä funktiota.

Keskeisiä termejä

[muokkaa | muokkaa wikitekstiä]
  • kehote (advice): Aspektin ohjelmakoodi, aliohjelma.
  • liitoskohta (join point): Kohta ohjelman suorituksessa (esim. funktiokutsun yhteydessä) jossa kehote aktivoituu. Kehote voi määrityksestä riippuen aktivoitua esimerkiksi vasta liitoskohdan jälkeen.
  • liitoskohtamääritys (point cut): Määritys jolla kerrotaan millä logiikalla aspektien kehotteet punotaan perusohjelmaan. Esimerkiksi kaikki funtktiot tietyssä tiedostossa joiden nimessä esiintyy sana aseta_.
  • punominen (weaving): Prosessi jossa aspektiohjelmoinnin osat liitetään (eli punotaan) osaksi perusohjelmaa.

Edut ja haitat

[muokkaa | muokkaa wikitekstiä]

Askepktiohjelmoinnin etuja ovat mm. toistuvien toimintojen modularisointi, kehitystyön nopeutuminen, aspektikuvausten uudelleenkäytettävyys, ohjelmakoodin pysyminen selkeämpänä, selkeämpi vastuunjako ohjelmistokehittäjien välillä. Mahdollisia haittoja voivat olla ohjelmiston rakenteen ja suorituksen seuraamisen monimutkaistuminen. Aspektikuvausten olemassaolo ei myöskään välttämättä aina ole selvää ohjelmoijalle sillä aspektikoodi lisätään ohjelmakoodin joukkoon vasta ohjelman punomisvaiheessa. Myös eri aspektien suoritusjärjestys saattaa aiheuttaa ongelmia, ellei sitä ole erikseen hallittu.

  1. Aspect Oriented Programming with Spring :: Spring Framework docs.spring.io. Viitattu 23.10.2024.