Web-sovelluksen arkkitehtuurin kehitys ja ylläpito
Nurminen, Robert (2016)
Nurminen, Robert
2016
Tietotekniikan koulutusohjelma
Tieto- ja sähkötekniikan tiedekunta - Faculty of Computing and Electrical Engineering
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2016-05-04
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tty-201604203845
https://urn.fi/URN:NBN:fi:tty-201604203845
Tiivistelmä
Kun ohjelmisto on saatu ylläpitovaiheeseen, vaatii ohjelma edelleen työpanosta. Ohjelman konteksti muuttuu ja sen kautta ohjelmaan tulee uusia toiminnallisia vaatimuksia. Ohjelmasta löytyy myös virheitä, jotka tulee korjata. Sekä uusien toiminnallisuuksien toteuttaminen, että bugien korjaaminen on välttämätöntä, jotta ohjelma saadaan pidettyä jatkuvasti tuotantokäytössä. Muutoksien tuloksena ohjelman koodin laatu tippuu, ellei laadun ylläpitämiseksi tehdä erikseen toimenpiteitä.
Tässä diplomityössä on tutkittu erään ylläpitovaiheessa olevan web-sovelluksen arkkitehtuuria ja sen laatua. Tarkasteltavassa sovelluksessa on runsaasti ajan mittaan kerääntynyttä teknistä velkaa, jota on kertynyt siksi, että järjestelmää tehdessä on panostettu huomattavasti enemmän uusien toiminnallisuuksien tekoon, kuin olemassa olevan koodin refaktorointiin. Teknisen velan vähentämiseksi haettiin lähdekirjallisuudesta tyypillisiä ratkaisuja suunnitteluongelmiin sekä suunnittelumallien että koodin hajujen näkökulmista. Lisäksi työssä pyrittiin tutkimaan arkkitehtuuriratkaisuja, jotka tukevat järjestelmän tulevaisuudensuunnitelmia. Kirjallisuudesta opittua teoriaa kokeiltiin käytännössä kahdella eri tehtävällä, jolla saatiin tuettua työssä tehtyä oppimista. Ensimmäisessä käytännön osassa refaktoroitiin yksi osa sovelluksen koodista ja toisessa osassa luotiin REST-rajapinta.
Työssä havaittiin, että tarkasteltavassa järjestelmässä on paljon ongelmia, jotka johtuvat erityisesti liian suurista luokista ja pitkistä metodeista. Liian suuret luokat aiheuttavat tarkasteltavassa järjestelmässä myös sen, että monilla luokilla on useita vastuualueita. Liian pitkät metodit taas vaikeuttavat huomattavasti koodin luettavuutta erityisesti sisäkkäisten ehtolausekkeiden vuoksi. Pitkissä metodeissa joutuu myös ymmärtämään paljon koodia kerralla, mikä hidastaa koodin ymmärtämistä. Ongelmat ovat pohjimmiltaan teknistä velkaa ja johtuvat osittain siitä, että koodia tehdessä ei ole täysin ymmärretty tarvetta tehdä yksinkertaisempia luokkia ja metodeja. Suunnittelumallien ja arkkitehtuuriratkaisujen osalta työssä saavutettiin uutta osaamista, jonka avulla voidaan tulevaisuudessa kehittää järjestelmään yhä parempia ratkaisuja.
Tässä diplomityössä on tutkittu erään ylläpitovaiheessa olevan web-sovelluksen arkkitehtuuria ja sen laatua. Tarkasteltavassa sovelluksessa on runsaasti ajan mittaan kerääntynyttä teknistä velkaa, jota on kertynyt siksi, että järjestelmää tehdessä on panostettu huomattavasti enemmän uusien toiminnallisuuksien tekoon, kuin olemassa olevan koodin refaktorointiin. Teknisen velan vähentämiseksi haettiin lähdekirjallisuudesta tyypillisiä ratkaisuja suunnitteluongelmiin sekä suunnittelumallien että koodin hajujen näkökulmista. Lisäksi työssä pyrittiin tutkimaan arkkitehtuuriratkaisuja, jotka tukevat järjestelmän tulevaisuudensuunnitelmia. Kirjallisuudesta opittua teoriaa kokeiltiin käytännössä kahdella eri tehtävällä, jolla saatiin tuettua työssä tehtyä oppimista. Ensimmäisessä käytännön osassa refaktoroitiin yksi osa sovelluksen koodista ja toisessa osassa luotiin REST-rajapinta.
Työssä havaittiin, että tarkasteltavassa järjestelmässä on paljon ongelmia, jotka johtuvat erityisesti liian suurista luokista ja pitkistä metodeista. Liian suuret luokat aiheuttavat tarkasteltavassa järjestelmässä myös sen, että monilla luokilla on useita vastuualueita. Liian pitkät metodit taas vaikeuttavat huomattavasti koodin luettavuutta erityisesti sisäkkäisten ehtolausekkeiden vuoksi. Pitkissä metodeissa joutuu myös ymmärtämään paljon koodia kerralla, mikä hidastaa koodin ymmärtämistä. Ongelmat ovat pohjimmiltaan teknistä velkaa ja johtuvat osittain siitä, että koodia tehdessä ei ole täysin ymmärretty tarvetta tehdä yksinkertaisempia luokkia ja metodeja. Suunnittelumallien ja arkkitehtuuriratkaisujen osalta työssä saavutettiin uutta osaamista, jonka avulla voidaan tulevaisuudessa kehittää järjestelmään yhä parempia ratkaisuja.