Web-ohjelmiston uudistaminen funktionaalisella paradigmalla
Mäki, Jermu (2019)
Mäki, Jermu
2019
Tietotekniikan DI-ohjelma - Degree Programme in Information Technology
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
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ä
2019-11-07
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-201910234065
https://urn.fi/URN:NBN:fi:tuni-201910234065
Tiivistelmä
Ohjelmistot vanhenevat ajan saatossa. Vanheneminen johtuu ympäristön muutoksista. Ohjelmistoja voidaan ylläpitää, mutta jossain vaiheessa muuttuneet vaatimukset poikkeavat niin paljon alkuperäisistä tai muutosten tekeminen on niin hankalaa, että ohjelmiston uudistaminen on kannattavampaa. Uudistus toimii investointina, jonka hyöty realisoituu myöhemmässä vaiheessa. Uudistamiseen voidaan päätyä lisäksi paremman joustavuuden ja ylläpidon saavuttamiseksi.
Ohjelmiston uudistaminen voidaan jaotella sen vaikutusten mukaan. Pienimmillään uudistus koskettaa vain tiettyä osakokonaisuutta kuten käyttöliittymää ja suurimmillaan uudistus voi koskea koko järjestelmää. Ohjelmien uudistamisen tekeminen pohjautuu uudistettavan ohjelman tutkimiseen eri tasoilla. Alkuperäisen ohjelman lähdekoodi ja suunnitteludokumentit tukevat uudelleensuunnittelua. Suunnittelun lopputuloksena syntyy uusi korkeamman tason arkkitehtuurimalli, jota aletaan toteuttaa.
Tässä työssä tutkitaan laajan web-järjestelmän erään osakokonaisuuden uudistamista. Toiminnalliset vaatimukset ovat muuttuneet alkuperäisistä ohjelman elinkaaren aikana. Ylläpito ja uusien muutosten tekeminen ovat osoittautuneet hankaliksi. Uudistus tehdään korvaamalla vanha järjestelmä uusien määrittelyiden perusteella, mutta myös tutkimalla vanhan järjestelmän lähdekoodia. Vanhan järjestelmän oliopohjainen Java-kieli vaihdetaan funktionaalista paradigmaa noudattavaan ja ilmaisuvoimaisempaan Clojureen.
Ohjelman arkkitehtuuri suunniteltiin uudelleen ja ohjelmointikieli vaihdettiin paremmin datankäsittelyyn soveltuvaksi ja yleiskäyttöisemmäksi. Näillä muutoksilla saavutettiin yksinkertaisempi ohjelman tekninen rakenne ja huomattava vähennys lähdekoodin rivimäärässä. Ohjelmistometriikoin, kyselyn ja haastattelujen perusteella arvioituna uudistettu ohjelma oli erityisesti ylläpidon ja suorituskyvyn kannalta onnistunut. Funktionaalinen ohjelmointikieli koettiin sopivan datankäsittelyä sisältävän web-järjestelmän tekemiseen.
Lopputuloksena oli selkeästi parempi järjestelmä. Tärkeimmät tavoitteet olivat parempi ylläpidettävyys, mahdollisuus korjata virheellistä dataa ja parempi suorituskyky. Näihin tavoitteisiin päästiin. Vanhan datan migraatio uuteen järjestelmään oli työlästä ja se vei enemmän aikaa kuin alun perin ennakoitiin. Kaiken kaikkiaan uudistus oli onnistunut ja funktionaalinen ohjelmointiparadigma sopii web-ohjelmistojen toteutukseen ja runsaasti ohjelmallista datankäsittelyä sisältäviin ohjelmiin. Tärkeää on kuitenkin myös ohjelmistosuunnittelu, laadukas ohjelmakoodi ja hyvät ohjelmointikäytännöt.
Ohjelmiston uudistaminen voidaan jaotella sen vaikutusten mukaan. Pienimmillään uudistus koskettaa vain tiettyä osakokonaisuutta kuten käyttöliittymää ja suurimmillaan uudistus voi koskea koko järjestelmää. Ohjelmien uudistamisen tekeminen pohjautuu uudistettavan ohjelman tutkimiseen eri tasoilla. Alkuperäisen ohjelman lähdekoodi ja suunnitteludokumentit tukevat uudelleensuunnittelua. Suunnittelun lopputuloksena syntyy uusi korkeamman tason arkkitehtuurimalli, jota aletaan toteuttaa.
Tässä työssä tutkitaan laajan web-järjestelmän erään osakokonaisuuden uudistamista. Toiminnalliset vaatimukset ovat muuttuneet alkuperäisistä ohjelman elinkaaren aikana. Ylläpito ja uusien muutosten tekeminen ovat osoittautuneet hankaliksi. Uudistus tehdään korvaamalla vanha järjestelmä uusien määrittelyiden perusteella, mutta myös tutkimalla vanhan järjestelmän lähdekoodia. Vanhan järjestelmän oliopohjainen Java-kieli vaihdetaan funktionaalista paradigmaa noudattavaan ja ilmaisuvoimaisempaan Clojureen.
Ohjelman arkkitehtuuri suunniteltiin uudelleen ja ohjelmointikieli vaihdettiin paremmin datankäsittelyyn soveltuvaksi ja yleiskäyttöisemmäksi. Näillä muutoksilla saavutettiin yksinkertaisempi ohjelman tekninen rakenne ja huomattava vähennys lähdekoodin rivimäärässä. Ohjelmistometriikoin, kyselyn ja haastattelujen perusteella arvioituna uudistettu ohjelma oli erityisesti ylläpidon ja suorituskyvyn kannalta onnistunut. Funktionaalinen ohjelmointikieli koettiin sopivan datankäsittelyä sisältävän web-järjestelmän tekemiseen.
Lopputuloksena oli selkeästi parempi järjestelmä. Tärkeimmät tavoitteet olivat parempi ylläpidettävyys, mahdollisuus korjata virheellistä dataa ja parempi suorituskyky. Näihin tavoitteisiin päästiin. Vanhan datan migraatio uuteen järjestelmään oli työlästä ja se vei enemmän aikaa kuin alun perin ennakoitiin. Kaiken kaikkiaan uudistus oli onnistunut ja funktionaalinen ohjelmointiparadigma sopii web-ohjelmistojen toteutukseen ja runsaasti ohjelmallista datankäsittelyä sisältäviin ohjelmiin. Tärkeää on kuitenkin myös ohjelmistosuunnittelu, laadukas ohjelmakoodi ja hyvät ohjelmointikäytännöt.