Ohjelmistoprojektin lähdekoodin visualisointi
Leppäniemi, Panu (2017)
Leppäniemi, Panu
Metropolia Ammattikorkeakoulu
2017
All rights reserved
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-201704064345
https://urn.fi/URN:NBN:fi:amk-201704064345
Tiivistelmä
Insinöörityön tarkoituksena oli tarkastella ohjelmistoprojektin laajuuden ja monimutkaisuuden hahmottamista eri sidosryhmien näkökulmasta sekä kokeilla, voiko lähdekoodia visualisoimalla helpottaa kokonaiskuvan muodostumista ohjelmistoprojektista. Työn motivaationa oli havainto, ettei jo 1960- ja 1970-luvulla esitettyjä ohjelmointiin liittyviä edistyksellisiä ajatuksia (esimerkiksi visualisoinnin hyödyntäminen osana ohjelmointia) näy vieläkään arkipäivässä.
Projekti tehtiin itsenäisenä toteutuksena, mutta sen tuloksena syntynyttä prototyyppisovellusta testattiin oikeiden asiakasprojektien lähdekoodilla. Insinöörityöprosessi jakautui taustatutkimukseen, toteutukseen ja jatkokehitysideoiden pohtimiseen.
Taustatutkimuksessa käytiin läpi erilaisia ohjelmistojen visualisointiin painottuvia ohjelmistoja. Lisäksi pohdittiin ohjelmistojen käyttötarkoituksia, hyötyjä ja mahdollisia puutteita insinöörityön tavoitteiden näkökulmasta. Ohjelmistoista saatiin ideoita prototyyppisovelluksen käyttöliittymää varten.
Insinöörityössä toteutettiin prototyyppisovellus, jonka avulla voitiin todeta, onko ohjelmistokoodin sisäisten riippuvuuksien lukeminen ylipäätään mahdollista Scala-ohjelmointikielellä ja minkälaisia hyötyjä toteutuksesta saattaa olla. Prototyyppiin osa-alueisiin kuuluu ohjelma, jolla Scala-ohjelmointikielellä toteutetun ohjelmistoprojektin sisäiset riippuvuudet voidaan lukea. Lisäksi toteutettiin selainpohjainen käyttöliittymä, joka visualisoi nämä riippuvuudet.
Insinöörityö antoi perspektiiviä siihen, miten ohjelmistokehitys on edennyt teknologian osalta vuosien mittaan. Konkreettinen tulos oli ohjelmistoprojektin lähdekoodin visualisointisovelluksen prototyyppi. Yksi sovelluksen tunnistettu hyöty oli subjektiivinen kokemus kohdeprojektin lähdekoodin kokonaisuuksien hahmottamisen helppoudesta. Lisäksi erilaisten lähestymistapojen mahdollisuuksien vertailu suhteessa orgaanisesti ajan myötä syntyneisiin ja vakiintuneisiin ohjelmoinnin perusmekanismeihin tuotti ideoita siitä, miten jatkossa voidaan paremmin tukea lähdekoodin rakenteen hahmottamista ja suunnittelua. Esimerkiksi uusia paradigmoja, kuten virtuaalista tai laajennettua todellisuutta, hyödyntämällä voitaisiin tukea ohjelmointia sekä ohjelmistojen laajuuden ja monimutkaisuuden hahmottamista.
Projekti tehtiin itsenäisenä toteutuksena, mutta sen tuloksena syntynyttä prototyyppisovellusta testattiin oikeiden asiakasprojektien lähdekoodilla. Insinöörityöprosessi jakautui taustatutkimukseen, toteutukseen ja jatkokehitysideoiden pohtimiseen.
Taustatutkimuksessa käytiin läpi erilaisia ohjelmistojen visualisointiin painottuvia ohjelmistoja. Lisäksi pohdittiin ohjelmistojen käyttötarkoituksia, hyötyjä ja mahdollisia puutteita insinöörityön tavoitteiden näkökulmasta. Ohjelmistoista saatiin ideoita prototyyppisovelluksen käyttöliittymää varten.
Insinöörityössä toteutettiin prototyyppisovellus, jonka avulla voitiin todeta, onko ohjelmistokoodin sisäisten riippuvuuksien lukeminen ylipäätään mahdollista Scala-ohjelmointikielellä ja minkälaisia hyötyjä toteutuksesta saattaa olla. Prototyyppiin osa-alueisiin kuuluu ohjelma, jolla Scala-ohjelmointikielellä toteutetun ohjelmistoprojektin sisäiset riippuvuudet voidaan lukea. Lisäksi toteutettiin selainpohjainen käyttöliittymä, joka visualisoi nämä riippuvuudet.
Insinöörityö antoi perspektiiviä siihen, miten ohjelmistokehitys on edennyt teknologian osalta vuosien mittaan. Konkreettinen tulos oli ohjelmistoprojektin lähdekoodin visualisointisovelluksen prototyyppi. Yksi sovelluksen tunnistettu hyöty oli subjektiivinen kokemus kohdeprojektin lähdekoodin kokonaisuuksien hahmottamisen helppoudesta. Lisäksi erilaisten lähestymistapojen mahdollisuuksien vertailu suhteessa orgaanisesti ajan myötä syntyneisiin ja vakiintuneisiin ohjelmoinnin perusmekanismeihin tuotti ideoita siitä, miten jatkossa voidaan paremmin tukea lähdekoodin rakenteen hahmottamista ja suunnittelua. Esimerkiksi uusia paradigmoja, kuten virtuaalista tai laajennettua todellisuutta, hyödyntämällä voitaisiin tukea ohjelmointia sekä ohjelmistojen laajuuden ja monimutkaisuuden hahmottamista.