Koskinen, J. (toim.). Ohjelmistojen ylläpidon seminaari – 2003. (259 s.). Jyväskylän yliopisto, Tietojenkäsittelytieteiden laitos.

 

SISÄLLYSLUETTELO

 

I

JOHDANTO

I-1

Jussi Koskinen: Ohjelmistojen ylläpidon seminaari - tausta ja tuotokset

II

YLLÄPIDON YLEINEN LUONNE

II-1

Tuija Vilpunaho, Minna Metsälä, Heidi Rajala: Ylläpidon luonne

III

YLLÄPIDON TEHTÄVÄT

III-1

Timo Hautala, Ari Kuusio: Ylläpidon palvelunäkökulma

III-2

Tuomo Partanen, Matti Sysmäläinen: Ylläpidon huomiointi ohjelmiston kehityksessä

III-3

Riitta Partala, Anna Piippo, Hanna Nurkka: Kokemuksen vaikutus ylläpitoon

III-4

Tomi Räsänen, Jukka Partanen, Anne-Mari Karttunen: Ylläpitotehtävät

III-5

Laura Markova: Ylläpitäjien tiedonhankintatavat

III-6

Matti Kanervo, Matti Kinnunen, Ville Rytkönen: Korjaava ylläpito

III-7

Arto Ojala: Komponenttien ymmärtäminen

IV

YLLÄPIDON KUSTANNUSTEN ARVIOINTI

IV-1

Timo Niemeläinen, Tomi Airaksinen: Ylläpidon metriikat

IV-2

Topi Hyttinen, Teemu Yliselä: Ohjelman rakenteen vaikutus

IV-3

Riikka Keränen, Maunu Tuomainen, Maija Örnmark: Ohjelmistojen kompleksisuus

IV-4

Petri Marttinen, Eetu Niemi, Antti Niiles: Prosessimetriikat

IV-5

Sami Kankaanpää, Jukka Ojala: Oliosuuntautuneet metriikat

IV-6

Jussi Muilu: Kompleksisuus ja ylläpidon vaikeus

IV-7

Lotta Hannonen, Elli Nojonen: Yleiset kustannusmallit

IV-8

Jani Lirkki, Perttu Lähdesmäki, Timo Pitkänen: Ylläpitostrategiat

IV-9

Olli Sandberg, Annamaija Viik: Kustannusmallien validointi

IV-10

Raija Ijäs, Maria Syvälahti: Ylläpitotehtävien kustannukset

IV-11

Vesa Kortteinen: Työmäärän arviointi

IV-12

Matti Matikainen, Tero Anttila: Ylläpidon ja testauksen dynaaminen malli

IV-13

Juuso Hietalahti: Työmääräarvioiden luotettavuus

IV-14

Milla Helen, Kaisu Lappalainen, Pekka Lehtinen, Markus Makkonen: Toimintopistemenetelmä - 1

IV-15

Pia Seromaa, Hanna Viinikka: Toimintopistemenetelmä - 2

IV-16

Ville Törmälä, Olli Pietilä: Ylläpidettävyyden arviointi - 1

IV-17

Vesa-Antti Iltola, Teemu Vuorinen: Ylläpidettävyyden arviointi - 2

IV-18

Riitta Jantunen, Seija Mäntynen, Timo Rantanen: Ylläpidettävyyden arviointi - 3

IV-19

Venla Räty, Jukka Ojaniemi: Ylläpidettävyyden arviointi - 4

IV-20

Heli Pietarinen, Katariina Sipari: Ylläpitohankkeen laajuus

IV-21

Juha Karvonen, Henry Silvennoinen: Ohjelmamuutosten vaikutus

IV-22

Tommi Raunio, Harri Eränen, Mikael Koskinen: Ohjelmistojen uudelleenkirjoittamisen kannattavuus

IV-23

Timo Riipinen, Mikko Sihvonen: Uudelleenkonstruoinnin vaikutus

IV-24

Teemu Koivisto, Martti Kontula: Uudelleenmuotoilun vaikutus

V

MODERNISOINTI

V-1

Mika Ukkonen: Modernisointi

V-2

Katri Kääriäinen, Liisa Välijärvi: Uudelleenkonstruointiprojektit

V-3

Maija Mustonen, Sanna Teiskonen: Oliosuuntautunut migraatio - 1

V-4

Tommi Lehtonen: Oliosuuntautunut migraatio - 2

V-5

Esa Virtanen, Tommi Peltola, Jukka Lahtinen: Mallipohjainen migraatio

V-6

Sauli Hiippavuori, Veli-Markus Hänninen: Käyttöliittymien uudelleenkonstruointi

V-7

Joonas Kiiminki, Jaakko Hyvärinen: Olio-ohjelmien uudelleenkonstruointi

V-8

Jukka Lampinen, Markus Oljemark: Käsitteelliset kyselyt

VI

KÄÄNTEISTEKNIIKAT

VI-1

Joonas Kesäniemi: Käänteistekniikkatyökalujen luokittelu

VI-2

Markku Hunnakko: SHriMP -työkalu

VI-3

Ari Vuorenmaa: Ohjelmien visualisointi

VI-4

Henri Hämäläinen, Jaakko Kuoppa: Suunnittelumallien automaattinen tuottaminen

VI-5

Mika Hirvasoja: Web-sovellusten analysointi

VI-6

Tero Lehmonen, Sauli Siekkinen: Ohjelmistojen dokumentoinnin tuki

 

OSIO I

JOHDANTO

 

I-1. OHJELMISTOJEN YLLÄPIDON SEMINAARI – TAUSTA JA TUOTOKSET

Jussi Koskinen

 

Tämä moniste sisältää Jyväskylän yliopiston Tietojenkäsittelytieteiden laitoksella järjestetyn Ohjelmistojen ylläpidon kevään 2003 seminaarin lopputuotokset. Seminaari järjestettiin osana Ohjelmistotekniikka (TJT C25) kurssia.

 

1. YLLÄPIDON YLEINEN LUONNE

Ylläpito on ohjelmistojen elinkaaren eniten aikaa vievä ja kustannuksia aiheuttava osa. Ylläpidon osuus tietojärjestelmien kehittämisen kokonaiskustannuksista on yleensä luokkaa 50-75%. Ylläpitoon kuitenkin kiinnitetään usein liian vähän huomiota ohjelmistotuotannon opetuksessa. Osin tähän on syynä se, että ohjelmistotekniikan perusoppikirjat käsittelevät tätä aihealuetta vain hyvin suppeasti. Tämän vuoksi ylläpidon seminaari on varteenotettava opetuksen organisoinnin vaihtoehto.

          Ylläpitoon liittyviä ongelmia voidaan lieventää monilla keinoilla. Näitä ovat ensinnäkin panostus laatuun ja sen osatekijöihin jo varsinaisen kehityksen aikana. Varsinaisessa ylläpidossa keskeistä on olemassaolevien ohjelmien hallittu muuttaminen. Ohjelmakoodin lukeminen, sen tulkinta ja ohjelman rakenteen, toiminnan ja toteutusperusteiden ymmärtäminen on välttämätöntä tyypillisten ylläpitotehtävien menestykselliselle suorittamiselle. Suurten, heikosti dokumentoitujen tai muuten vaikeasti ylläpidettävien ohjelmistojen ylläpidossa tarvitaan lisäksi apuvälineitä ja -tekniikoita. Koska ylläpidon osuus tietojärjestelmien elinkaarikustannuksista on huomattavan suuri, on lisäksi tärkeää pyrkiä arvioimaan ylläpidon edellyttämää työmäärää. Tämä on tärkeä, mutta vaikea tutkimuskohde.

 

2. SEMINAARIN RAKENNE

Seminaarissa keskityttiin aihealueen tieteellisesti ja teoreettisesti mielenkiintoisiin kysymyksenasetteluihin. Seminaarityön tavoitteina olivat, kuten edellisinäkin vuosina:

·        tietämyksen syventäminen valitulla ohjelmistojen ylläpidon osa-alueella,

·        analyysin tulosten esittäminen muille seminaariin osallistuville,

·        kertyneen tietämyksen dokumentointi raportin muodossa,

·        yhden toisen ryhmän työhön tutustuminen ja sen arviointi.

 

Seminaariin liittyen 1-4 hengen ryhmät analysoivat keskeisiä, englanninkielisiä, tieteellisiä ohjelmistojen ylläpitoon liittyviä artikkeleita. Suurin osa ryhmistä esitti referaatin alkuperäisartikkelista ja analyysinsä lopputulokset seminaarissa. Ryhmälle antoivat palautetta luennoitsija (allekirjoittanut) ja tehtävää varten nimetty opponenttiryhmä. Tämän palautteen ja yleisen keskustelun perusteella 46 ryhmää muokkasi lopulliset, tässä monisteessa esitettävät, raporttinsa. Kunkin luvun alkusivulla on esitetty viite alkuperäislähteeseen, johon referaatti perustuu.

 

3. MONISTEEN RAKENNE

Moniste jakaantuu kuuteen osioon: Osio I on tämä johdanto. Osio II kuvaa ylläpidon yleistä luonnetta. Osio III kuvaa ylläpidon tehtäviä. Tämän vuotisen seminaarin erityisteemana oli ylläpidon kustannusten arviointi ja siihen liittyvät metriikat - Osio IV. Tämä osio muodostaa pääosan raportista, käsitellen ylläpidon metriikoita, kustannusmalleja, toiminto-pistemenetelmää, ylläpidettävyyden arvioinnin menetelmiä sekä muita ylläpidon kustannusten arvioinnissa huomioitavia seikkoja. Osio V käsittelee ohjelmistojen modernisointia ja uudelleenkonstruointia. Usein pitkän elinkaaren omaavista, liiketaloudellisesti merkittävistä järjestelmistä ei ole tarkoituksenmukaista luopua, vaan niiden elinkaarta voidaan pyrkiä pidentämään niiden modernisoinnilla. Osio VI käsittelee käänteistekniikoita. Ideaalitilanteessa käänteistekniikkatyökalujen avulla voidaan laajasta ohjelmistosta poimia tarkasteltavaksi ylläpitäjälle tietyssä tilanteessa tärkeät osat ja niiden väliset riippuvuudet sopivalla abstraktiotasolla.

          Osio I toimii johdantona ylläpidon yleiseen aihealueeseen ja ylläpidon hallintaan ja kuvaa seminaarin yleisen taustan ja yhteenvedon sen tuotoksista.

          Osio II kuvaa ylläpidon yleistä luonnetta.

          Luku II-1 kuvaa monien ylläpidon tutkijoiden yhteisyrityksen luoda ylläpidon ontologia, joka edesauttaisi alan empiirisiin tutkimuksiin vaikuttavien osatekijöiden tunnistamisessa. Aiempi tutkimus osoittaa, että on olemassa tarvetta muodostaa viitekehys ylläpitoon vaikuttaville asioille, joka mm. edesauttaisi tutkijoiden välistä kommunikaatiota, tulosten tulkintaa ja luokittelua. Tutkimuksen tarkoituksena on myös mm. auttaa ohjelmiston ylläpitoa suorittavaa organisaatiota tunnistamaan ne ylläpidon elementit, jotka ovat olennaisia sen nykyisessä ylläpitotilanteessa.

          Osio III kuvaa ylläpidon tehtäviä.

          Luku III-1 kuvaa palvelunäkökulmasta eroja ohjelmistojen kehittämisen ja ylläpidon välillä. Ylläpitoa voidaan tarkastella palveluna, kun taas kehittämistä valmistuksena. Tutkimushankkeessa kehitetään empiiristen kokemusten perusteella tietotekniikkapalveluiden kypsyysmalli sekä ohjeita ylläpidon laadun parantamiseen.

          Luku III-2 kuvaa ylläpidon tarpeet huomioivan ohjelmistonkehitysprosessin. Tarpeet huomioidaan kaikissa vaiheissa. Prosessi koostuu toimintatavasta, jota noudatetaan kaikissa vaiheissa ja tietorakenteesta, joka päivitetään kunkin vaiheen yhteydessä. Prosessin avainkohdat ovat: yleiskäyttöisyys, luontainen (jatkuva) ylläpito sekä yhdenmukaisuus eri vaiheissa.

          Luku III-3 kuvaa tutkimuksen, jossa selvitetään kuinka paljon ja milloin ohjelmiston ylläpitäjät oppivat kokemuksesta.  Kohdejärjestelmien toteutuskieliä olivat mm. COBOL ja C. Tietolähteinä olivat ylläpitäjät (N=54). Kerättävän tiedon kohteita olivat mm. ylläpitäjien eri tyyppisen kokemuksen määrä, itsevarmuus, odottamattomat ongelmat, ongelmien ennustetarkkuus sekä tehtävien koko. Tutkimuksen tulokset tukivat muiden aiempien tutkimusten näkemyksiä.

          Luku III-4 kuvaa laajahkon (N>100) empiirisen ylläpitotehtävien kartoituksen. Kerättävää tietoa olivat mm. ohjelman koko ja ikä, ylläpitotehtävän tyyppi, koodimuutokset ja niiden koko, käytetty työmäärä, tuottavuus, tehtävän tärkeys, monimutkaisuus, ylläpitäjän luottamus taitoihinsa, tietolähteet, kokemus ja muutokset ylläpidettävyydessä. Tutkimuksessa testattiin yhteensä 33 hypoteesia. Yllättävin tulos oli se, että työn tuottavuus ei näyttäisi laskevan ohjelman koon kasvaessa.

          Luku III-5 kuvaa yhden harvoista ylläpitäjien tiedonhankintatavoista tehdyn empiirisen tutkimuksen. Tutkimuksessa kartoitettiin sitä, mitä ylläpitäjät pitävät tietolähteinä ja millä perusteella tietolähdettä pidettiin hyvänä. Tietoa kerättiin kahdesta yrityksestä (yhteensä N=45). Ongelmana oli heikko vastausprosentti toisen yrityksen osalta. Kohdejärjestelmät oli kirjoitettu C-, C++ ja Fortran-kielillä.

          Luku III-6 kuvaa tutkimuksen korjaavan ylläpidon ongelmien kypsyysmallin (CM3) kehityksestä. Mallia on kehitetty ABB:n organisaatiossa ja kehitetty ja testattu 17:n muun yrityksen kanssa. CM3:sta voidaan käyttää korjaavan ylläpidon prosessin kehittämisessä. Malli koostuu kolmesta kypsyystasosta: alkutaso, määrittelytaso ja optimaalinen taso. Tutkimuksessa on kartoitettu osallistujaorganisaatioiden prosessien kypsyyttä.

          Luku III-7 esittää mallin ohjelmistokomponenttien ymmärtämisprosessille. Malli perustuu aiemmin esitettyyn yleiseen ohjelmien ymmärtämisen malliin, jossa on seuraavat tasot: kohdealuetaso, tilannetaso ja ohjelmataso. Näitä malleja sovellettiin kolmeen komponenttien kehitysprosessiin (relaatiomalliperusteinen, automaattinen liittymien tunnistus ja ns. katalyysimalli). Tutkimuksen tuloksena oli suositus käyttää katalyysimallia komponenttien ymmärtämisprosessissa.

          Osio IV kuvaa ylläpidon kustannusten määrittämiseen käytettävissä olevia lähestymistapoja.

          Luku IV-1 kuvaa Lehmanin artikkelin, jossa hän yhdistää aiempien tutkimustensa tuloksia useilta vuosikymmeniltä. Lehman on esittänyt ns. Lehmanin lait ohjelmistoevoluutiolle. Tutkimuksessa kuvataan FEAST/1 projektia ja kohdeohjelmistojen kehittymistä. Kerättyä tietoa on organisoitu käyttäen ohjelmiston julkistus/versionumeroa (release sequence number). Lisäksi on kerätty tietoa mm. seuraavista asioista: järjestelmän koko, julkistamisaikaväli ja käytettyjen/lisättyjen/muutettujen/poistettujen elementtien lukumäärä.

          Luku IV-2 kuvaa klassisen tutkimuksen COBOL-kielisten järjestelmien ylläpidosta. Tutkimuskohteita olivat: hyppylauseiden poistamisen, kontrollirakenteiden rajoittamisen, redundanssin poistamisen ja abstraktiotason noston vaikutus ylläpitäjien suorituskykyyn. Tutkimuksen tulokset ennakoivat, että parannukset järjestelmän rakenteessa johtavat parempaan ylläpidon suorituskykyyn.

          Luku IV-3 kuvaa survey:n ohjelmistojen kompleksisuuden ja ylläpidon aihealueelta tehtyihin tutkimuksiin. Katsaus jakautuu kahteen osaan: kompleksisuuden arvioimisen ja ylläpidon suhteiden tutkimukseen ja olemassaolevien ohjelmistojen ymmärtämisen edistämisen tutkimukseen. Rakenteisessa ohjelmoinnissa modulaarisuus on keskeisessä roolissa. Tärkeitä asioita ovat mm. moduulin koko ja moduulien riippuvuussuhteet. Ohjelmistojen modulaarisuudella on tietty optimitasonsa. Metriikoiden osalta tutkimuksissa on pitkälti keskitytty ohjelmiston koosta riippuvien ongelmien arviointiin. Lisäksi tarvittaisiin laaja-alaisempaa tutkimusta.

          Luku IV-4 kuvaa prosessimetriikoita Pressman:in kirjan pohjalta. Ohjelmistometriikat voidaan jakaa koko- ja toimintosuuntautuneisiin. Toimintosuuntautuneista metriikoista huomattavin on ns. toimintopisteet, joista on olemassa useita variantteja. Ohjelmiston laadun mittaamisessa ylläpitoon liittyen eräs tapa on tehokkuus, jolla lopullisesta tuotteesta poistetaan virheitä (DFE= Defect Removal Efficiency). Prosessimetriikoiden tehokas hyödyntäminen edellyttää organisaatiossa perustyötä, jonka osana määritellään organisaation prosessit ja kerätään systemaattisesti ja pitkäjänteisesti metriikkatietoa.

          Luku IV-5 kuvaa olio-ohjelmoinnin metriikoita Pressman:in kirjan pohjalta. Nämä metriikat keskittyvät luokkiin, jotka ovat olio-ohjelmoinnin peruskäsite. Näitä metriikoita on esitetty eri tutkijoiden toimesta lukuisia. Erikoistuneisiin metriikoihin ovat johtaneet lokalisaatio, kapselointi, tiedon kätkeminen ja periytyminen. Metriikoita olio-ohjelmien suunnitteluun ovat esim.: monimuotoisuus, elementtien liitokset, abstraktion riittävyys, komponenttien yhtenäisyys, operaatioiden primitiivisyys, luokkien samanlaisuus ja muutosten vaikutus järjestelmän vakauteen. Lisäksi on olemassa luokkasuuntautuneita, operaatiosuuntautuneita ja testaussuuntautuneita oliometriikoita.

          Luku IV-6 kuvaa empiirisen tutkimuksen ohjelmistojen kompleksisuuden ja ylläpidon vaikeuden välisestä suhteesta. Tutkimuksessa on eriytetty ns. tuotemittarit (esim. operaattorien ja operandien lukumäärä, ajettavien lausekkeiden lukumäärä, syklomaattinen kompleksisuus) ja prosessimittarit (esim. lisätyt/poistetut/siirretyt ohjelmarivit, havaitut virheet ja muutosten määrä). Näille on suoritettu ns. kanoninen korrelaatioanalyysi. Koska tutkimus perustuu vain yhden projektin tietoihin on sen tulosten yleistettävyys kuitenkin hyvin rajallinen.

          Luku IV-7 kuvaa yleisiä ohjelmistotuotannon kustannusmalleja. Toisinnetun empiirisen tutkimuksen kohteena oli ESA:n (European Space Agency) tietokanta, joka kattaa 166 projektia ja 69 organisaatiota. Tutkimuksessa verrattiin toisiinsa viittä eri arviointitapaa (OLS - Ordinary Least-Square regression analysis, ANOVA - Stepwise Analysis of Variances, analogiatekniikka, CART-tekniikka - Classification and Regression Tree ja niiden yhdistelmä). OLS:n ja ANOVA:n virhetermi (MRE= Magnitude of Relative Error) oli pienin, joten ne olivat tämän tutkimuksen tapauksessa parhaat arviointitavat.

          Luku IV-8 kuvaa tutkimuksen ohjelmistojen päivityksen strategisista vaihtoehdoista. Ylläpitotoimet jaetaan seuraaviin luokkiin: takuu, huolto ja päivitys. Näiden toimien analysoinnin puitteet määrittää markkinatilanne. Huomioitavia tekijöitä ovat: järjestelmä, järjestelmän laatu, markkinoiden muuttuvuus, toimittaja, tulorakenne, asiakkaiden odotukset sekä teknologia. Esitettävä malli määrittää takuulle, huollolle ja päivitykselle toiminnan raja-arvot perustuen mm. asiakastyytyväisyyteen. Em. valintoja on tutkittu 3,840:n perustilanteen tapauksessa. Tutkimus esittää peruslinjat eri käytännöille. Tutkimus muodostaa yhteyden asiakastyytyväisyyden ja pitkäaikaisen voiton välille ja käyttää sitä ylläpitokäytäntöjen muodostuksessa.

          Luku IV-9 kuvaa joidenkin yleisten ohjelmistojen kustannusmallien empiirisen validoinnin. Tutkitut mallit olivat: SLIM, COCOMO, toimintopistemenetelmä ja ESTIMACS. Empiirinen tieto kerättiin yhdestä yrityksestä, liittyen 15:een projektiin. Tutkimuskysymyksiä olivat: mallien yleistettävyys, koodiriviperusteisten mallien paremmuus ja julkisten ja patentoitujen mallien paremmuus. Ensimmäisen kysymyksen osalta vastaus on, että mallien luotettava käyttö edellyttää kalibrointia organisaatiossa. Toisen kysymyksen osalta tulokset hajautuivat. Kolmanteen kysymykseen ei saatu selkeää vastausta.

          Luku IV-10 kuvaa ylläpitotehtävien kustannusten arviointiin kehitettyä Sneed:in SOFTCALC-mallia. Mallia sovelletaan käymällä läpi seuraavat prosessit. 1) Ohjelmiston koon, kompleksisuuden ja laadun määrittäminen automatisoidusti. 2) Ylläpitotehtävän vaikutusalueen määrittäminen. 3) Vaikutusalueen koon määritys. 4) Koon suhteuttaminen kompleksisuuteen. 5) Koon suhteuttaminen laatutekijöihin. 6) Koon suhteuttaminen tuottavuustekijään. 7) Suhteutetun mitoituksen muuntaminen ylläpidon vaatimaksi työmääräksi. Tutkimuksessa sovelletaan mallia COBOL- ja Assembler-kielillä toteutettujen ohjelmistojen muutosten vaatiman työmäärän arviointiin.

          Luku IV-11 kuvaa laajojen ylläpitotehtävien vaatiman työmäärän määrittämiseen keskittyvän tutkimuksen. Sovelluskohteena oli 40,000:sta ohjelmakomponentista koostuva ohjelmisto, jota oli tarkoitus muuttaa, johtuen vuoteen 2000 liittyvästä problematiikasta. Metriikoina käytettiin: ohjelmistokomponenttien määrää, koodirivien määrää ja syklomaattista kompleksisuutta. Mallia testattiin empiirisesti. Tutkijoiden mukaan selitysvoima ei ollut erinomainen, mutta silti riittävän hyvä osoittamaan, että malli on toimiva ja käyttökelpoinen.

          Luku IV-12 kuvaa dynaamisen mallin ohjelmistojen ylläpidon ja testauksen vaatiman työmäärän arviointiin. Tutkimuksessa sovelletaan Shimazu:n aiemmin kehittämää saalistajien ja saaliiden populaatioiden dynamiikkaa kuvaavaa mallia. Ohjelmistotekniikan asiayhteydessä saaliita ovat ohjelmointivirheet ja saalistajia virheiden korjaajat. Tutkimuksessa on kerätty pitkäjänteisesti tietoa ylläpitopyynnöistä ja siinä annetaan kaksi käytännön esimerkkiä mallin soveltamisesta. Tulokset olivat kohtuullisen hyvät, ennusteissa ei ylitetty 30%:n virhemarginaalia.

          Luku IV-13 kuvaa ylläpidon työmäärän arviointiin kehitettyjä malleja. Tutkimuksessa käytettiin seuraavia kolmea lähestymistapaa: regressioanalyysiä, neuraaliverkkoja ja hahmontunnistusta. Perusmalli oli yksinkertainen: työmäärä = laajuus/tuottavuuden keskiarvo. Ennustemallien vertailussa käytettiin suhteellista virhettä (MRE). Kaikkien testattujen mallien keskimääräinen MRE oli kuitenkin asiantuntijoiden mukaan liian suuri. Tutkijat eivät usko, että formaalit ennustemallit korvaisivat asiantuntijaennusteet. Suositeltavaa on sen sijaan käyttää niitä asiantuntija-arvioiden tukena.

          Luku IV-14 kuvaa erään tutkimuksen toimintopistemenetelmän soveltamisesta ylläpidon vaatiman työmäärän arviointiin. Yhteensä tutkimuksessa kerättiin tietoa 36:sta ylläpitoprojektista. Keskeisimmäksi tekijäksi nousi ennustemallien syötteenä toimivan toiminnallisen koon luotettava määrittäminen. Tähän tarkoitukseen käytettiin COSMIC-FFP -nimistä menetelmää. Tutkimuksen osana oli kaksi erillistä kenttätutkimusta. Vaikka ennustemallit tarjosivat kiinnostavaa tietoa molempiin kenttätutkimuksiin liittyen, niiden avulla ei pystytty riittävän luotettavasti mallintamaan toiminnallisen koon ja vaadittavan ylläpitotyömäärän välistä suhdetta. Myös muut tekijät siis todennäköisesti vaikuttavat vaadittavaan työmäärään.

          Luku IV-15 kuvaa kaksi tapaustutkimusta ylläpidon vaatiman työmäärän arvioinnista. Tietoa kerättiin muutosten määrästä, järjestelmän koon kasvusta, moduulimuutoksista, muutettujen komponenttien määrästä, ja lisätyn koodin määrästä. Datalle tehtiin pääkomponenttianalyysi ja regressioanalyysi. Osatutkimusten tulokset olivat vertailukelpoisia. Muutosten koko ja tarvittava työmäärä olivat samaa luokkaa. Standardoidun prosessin systemaattinen käyttö on tutkijoiden mukaan edellytys onnistuneelle mittausohjelmalle.

          Luku IV-16 kuvaa ohjelmistojen ylläpidettävyyden arviointiin tarkoitettuja malleja. Tutkimuksessa käytettyjä lähestymistapoja olivat: ns. hierarkkinen moniulotteinen malli, polynominen regressiomalli, entropia-perusteinen malli, pääkomponenttianalyysi ja faktorianalyysi. Tehtyjen testien perusteella tutkijat toteavat, että automaattisen ylläpidettävyyden arvioinnin tulokset ovat yhteneviä ylläpidon ammattilaisten subjektiivisten näkemysten kanssa. Muutoksia seuraamalla saadaan selville komponentit, jotka vaativat jatkuvaa ylläpitoa ja jotka tulisi suunnitella uudelleen.

          Luku IV-17 kuvaa tutkimuksen ylläpidettävyyden mittaamisesta. Tutkimuksessa testattiin lukuisia malleja, joista paras koostui seuraavista neljästä moduulikohtaisesti laskettavasta muuttujasta: Halsteadin volyymin keskiarvo, laajennettu syklomaattinen kompleksisuus, koodirivien keskiarvo ja kommenttirivien keskiarvo. Näiden perusteella määritettiin ns. ylläpidettävyysindeksi (MI). MI määritettiin C-kieliselle esimerkkiohjelmalle neljän muutostoimen yhteydessä. MI-mallin parhaita puolia ovat tuloksien yksiselitteisyys ja yksinkertaisuus.

          Luku IV-18 kuvaa Törnin lähestymistavan ylläpidettävyyden mittaamiseen. Keskeisimmät parametrit tässä mallissa ovat vaaditun ylläpidon määrä ja ylläpidosta johtuvan kompleksisuuden lisääntyminen. Malli pyrkii myös ennustamaan ylläpidon aiheuttamia kustannuksia. Tutkijoiden mukaan mallia voidaan käyttää päätöksenteon tuen välineenä. Kuitenkin, koska empiirinen tieto kerättiin suhteellisen pienestä organisaatiosta, ei tutkimuksen tuloksia voida yleistää.

          Luku IV-19 kuvaa luokkahierarkioiden ylläpidettävyysmetriikoita. Metriikoita ovat esittäneet Chidamber ja Kemerer (WMC= Weighted Methods per Class, DIT= Depth of Inheritance Tree, NOC= Number of Children, CBO= Coupling Between Object classes, RFC= Response For a Class, LCOM= Lack of Cohesion in Methods), Li (NAC= Number of Ancestor Classes, NDC= Number of Descendent Classes) ja Henderson-Sellers (AID= Average Inheritance Depth). Lisäksi tässä tutkimuksessa esitetään metriikat ymmärrettävyydelle (TU= Total Understandability) ja muunneltavuudelle (TM= Total Modifiability).

          Luku IV-20 kuvaa tutkimuksen ylläpitohankkeen laajuuden vaikutuksesta ohjelmiston ylläpidon tuottavuuteen. Tutkimuksessa käsiteltiin 27:ää ylläpitoprojektia. Kohdejärjestelmät on kirjoitettu COBOL:lla. Tutkimuksessa tarkasteltiin hankkeen koon ja tuottavuuden suhdetta käyttäen DEA (Data Envelopment Analysis) menetelmää. Tuloksien mukaan esimerkkiprojektit olisivat voineet olla tuottavampia, jos ne olisivat olleet suurempia. Sopivalla koolla on taloudellista merkitystä.

          Luku IV-21 kuvaa tutkimuksen ohjelmamuutosten vaikutusten arvioinnista. Tutkimuksessa annetaan kaavat: ohjelmamoduulin ja järjestelmän suhteelliselle monimutkaisuudelle (nykyisessä, aiemmassa myöhemmässä kehitysversiossa), koodin delta-arvolle, kokonaismuutokselle ja koodin vaihtuvuudelle (moduuli- ja järjestelmätasolla eri versioiden välillä). Tutkimuksessa esitetään esimerkkijärjestelmän avulla yhteys koodin vaihtuvuuden, koodin delta-arvon ja virheiden määrän välillä. Muutokset lisäsivät lähes poikkeuksetta ohjelmakoodin monimutkaisuutta. Esitellyn menetelmän menestys perustuu sen kykyyn löytää korvaava mittari ohjelmistovirheille.

          Luku IV-22 kuvaa yksityiskohtaisen matemaattisen mallin, jonka tarkoituksena on mahdollistaa optimaalisen ohjelmistojen uudelleenkirjoittamisen tai korvauksen ajankohdan määrittäminen. Mallin käyttö edellyttää suhteellisen paljon lähtötietoja. Mallia ei ole varsinaisesti empiirisesti validoitu, joten sen mahdollinen selitysvoima käytännön tilanteissa ei ole tiedossa. Mallin käyttöä on kuitenkin havainnollistettu COBOL-kielisellä esimerkkisovelluksella. Teoreettisilla perusteilla tutkijat ovat lisäksi päätyneet esittämiinsä neljään uudelleenkirjoitusta koskevaan yleiseen suositukseen.

          Luku IV-23 kuvaa Sneedin mallin uudelleenkonstruoinnin systemaattiselle suunnittelulle. Tutkimuksessa tarkastellaan uudelleenkonstruointiprojektin perustelua, liiketoiminta-arvon määrittämistä, portfolioanalyysiä, kustannusten arviointia ja kustannushyötyanalyysiä. Uudelleenkonstruointiprojektia kannattaa harkita, jos järjestelmän liiketoiminta-arvo on suuri, mutta sen tekninen laatu on heikko. Lisäksi tulee kuitenkin pohtia, tuleeko kokonaan uuden järjestelmän rakentaminen pitkällä tähtäyksellä edullisemmaksi, kuin vanhan järjestelmän uudelleenkonstruointi.

          Luku IV-24 kuvaa tutkimuksen uudelleenmuotoilun (uudelleenfaktoroinnin) vaikutusten arvioinnista. Esitettävä matemaattinen malli perustuu metodien ns. palautusarvoliitoksen, parametriliitoksen ja jaetun muuttujan liitoksien määrittämiseen. Mallia on havainnollistettu esimerkeillä, mutta ei varsinaisesti empiirisesti validoitu.

          Osio V kuvaa ohjelmistojen modernisointia ja uudelleenkonstruointia.

          Luku V-1 kuvaa katsauksen tietojärjestelmien modernisoinnin sisäisiin (black-box) lähestymistapoihin. Näitä tekniikoita ovat mm. käyttöliittymien modernisointi, tietokantarajapinnan uudistaminen, XML:n käyttö, toiminnallinen modernisointi, CGI:n käyttö, olioperusteinen uudistaminen ja komponenttien uudistaminen.

          Luku V-2 kuvaa tutkimuksen menestyksekkäiden uudelleenkonstruointiprojektien profiloinnista. Tutkimuksessa annetaan malli uudelleenkonstruointiprojektin vaiheille. Menestyksekkäiden hankkeiden profilointi perustui empiiriseen kyselytutkimukseen (N=239, vastaustaso=28%). Tutkijoiden mukaan ns. mullistavat projektit olivat keskimäärin onnistuneimpia. Tämä tarkoittaa sitä, että organisaation avaintoimintojen huomattava muutos johtaa todennäköisesti onnistuneimpaan lopputulokseen. Tutkimuksen tulokset ovat tutkijoiden mukaan yleistettävissä, joskin kohdeprojektijoukko ei välttämättä ole edustava otos kaikista mahdollisista uudelleenkonstruointiprojekteista.

          Luku V-3 kuvaa oliosuuntautunutta migraatiota. Tutkimuksessa pyritään laatukeskeiseen uudelleenkonstruointiin. Tutkimuksessa käytetään ns. Soft-Goal riippuvuuskaavioita, joilla mallinnetaan laatutekijöiden ja lähdekoodin ominaisuuksien välisiä riippuvuuksia. Tutkimuksessa esitetään riippuvuuskaaviot uudelleenkäytettävyydelle ja ylläpidettävyydelle. Teoriakehyksen oikeellisuutta on testattu tapaustutkimuksella, jossa Gnu-AVL Tree Library on siirretty alkuperäisestä proseduraalisesta toteutuksesta oliosuuntautuneeksi. Tutkimuksessa oletetaan, että migraatio koostuu transformaatioista, jotka aiheuttavat järjestelmän tilasiirtymiä, joita voidaan mallintaa Markovin malleilla.

          Luku V-4 kuvaa mallin olemassaolevien olioperusteisten tietojärjestelmien ei-toiminnallisten vaatimusten muuttamiseen siten, että toiminnallisten vaatimusten toteutus helpottuisi. Tutkimuksen osana esitetään hierarkkinen malli ylläpidettävyyden osatekijöille.  Lisäksi esitetään kerroksittainen malli, jolla tutkijoiden mukaan järjestelmiä saadaan muutettua siten, että ne käyttävät entistä paremmin hyväkseen oliolähestymistavan tarjoamia mahdollisuuksia.

          Luku V-5 kuvaa tutkimuksen, jossa pyritään lohkomaan kohdeohjelmisto osiin ja luomaan niille komponenttipohjainen arkkitehtuuri. Tapaustutkimuksen kohteena on ollut C:llä, C++:lla ja Javalla kirjoitettu dokumenttienhallintajärjestelmä. Tutkimuksessa kuvataan arkkitehtuurin mallikieli. Tavoitteena on luoda joustava arkkitehtuuri asteittain. Komponenteiksi pilkkominen pidentää ohjelmistotuotteen ikää ja parantaa sen mukautuvuutta uusien tekniikoiden käyttöönotolle. Silti, ennen tämänkaltaiseen projektiin ryhtymistä pitää harkita tarkkaan todennäköistä tuotto-odotusta.

          Luku V-6 kuvaa käyttöliittymien uudelleenkonstruointia, erityisesti uudelleenkonstruointiprosessin määrittämistä, joka mahdollistaisi siirtymisen merkkipohjaisesta graafiseen käyttöliittymäparadigmaan. Mallin osia ovat: alkuperäisen järjestelmän ymmärtäminen, käyttöliittymäspesifikaatiot, parannukset käyttöliittymään, uuden graafisen käyttöliittymän generointi ja uuden käyttöliittymän integrointi vanhaan järjestelmään. Tutkimuksessa käytetään AUIDL:ää (Abstract User Interface Description Language). Kohdejärjestelmässä käytettiin COBOL:ia, CICS:iä ja BMS:ää. Menetelmä erottaa ohjelmakoodin ja käyttöliittymän toisistaan, mutta perustuu vain staattiseen analyysiin.

          Luku V-7 kuvaa olio-ohjelmien uudelleenkonstruointia (C++) käsittelevän tutkimuksen. Tutkimuksen osana suunniteltiin ja toteutettiin kolme uudelleenkonstruoinnin työkalua. Kokemukset työkalujen käytöstä osoittivat, että tehdyillä koodin transformaatioilla on mahdollista parantaa ohjelman rakennetta tehokkaasti. Tällaiset työkalut ovat erittäin tarpeellisia, mutta yllättävän vaikeita toteuttaa.

          Luvussa V-8 kuvataan lähestymistapa moduulitason kyselyiden suorittamiseen liittyen ohjelmien uudelleenkonstruointiin. Ns. käsitteelliset moduulit auttavat uudelleen-konstruoinnissa tarvittavan tiedon esittämisessä. Tutkimuksessa on myös vertailtu toteutettua työkalua muihin perinteisiin aihealueen välineisiin. Lähestymistapa täydentää aiempia malleja ja työkaluja.

          Osio VI kuvaa käänteistekniikoita.

          Luku VI-1 kuvaa luokittelun käänteistekniikkatyökaluille. Työkalujen taustalla olevat tekniikat jaetaan päätasolla formaaleihin ja ei-formaaleihin. Lisäksi työkaluja voidaan arvioida ja luokitella seuraavien ominaisuuksien avulla: semanttinen etäisyys, semanttinen paikkansapitävyys, semanttinen tarkkuus ja semanttinen jäljitettävyys. Tutkimuksessa kuvaillun viitekehyksen avulla voidaan helpottaa sopivan työkalun valitsemista.

          Luku VI-2 kuvaa erään käänteistekniikkatyökalun - SHriMP:in empiirisen arvioinnin. SHriMP soveltaa graafista “kalansilmänäkymää” laajojen ohjelmien sisältämien elementtien esittämisessä ylläpitäjille ja liittyy Rigi käänteistekniikkatyökaluun. Empiirisessä osassa (N=12) vertailtiin komentorivi-, moni-ikkuna- ja SHriMP-esitysmuotojen käytettävyyttä. SHriMP:n käytön suurin ongelma oli sen hitaus. Tutkimus antoi tietoa SHriMP:n jatkokehitystä varten.

          Luku VI-3 kuvaa erään lähestymistavan ohjelmien visualisointiin. Tutkijat ovat toteuttaneet prototyyppijärjestelmän nimeltä Context Viewer, joka toimii SPOOL-ympäristössä. Context Viewer:n toimintaa esitellään kolmen käyttötapausskenaarion avulla. Context Viewer:ia on myös jossain määrin vertailtu tunnettuihin kaupallisiin käänteistekniikkatyökaluihin (Discover, SNiFF, Source Navigator ja Understand for C++).

          Luku VI-4 kuvaa suunnittelumallien automaattista tuottamista ratkaisuna ohjelmistojen ylläpidon ongelmiin. Esitellyssä lähestymistavassa suunnittelumallit luodaan ohjelman ASG (Abstract Syntax Graph) kuvauksen pohjalta. FUJABA (From UML to Java And Back Again) ympäristö tukee käytettyä notaatiota. Toteutettua työkalua on arvioitu kahden suuren Java-ohjelmakirjaston (AWT, 114 KLOC ja JGL, n. 9 KLOC) tapauksessa. Työkalu selvisi testeistä hyvin, mutta sitä voidaan myös edelleen kehittää monin tavoin.

          Luku VI-5 kuvaa Web-sovellusten arkkitehtuurin takaisinmallinnusta kuvaavan tutkimuksen. Tutkimuksessa käytetään puoli-automaattista lähestymistapaa sovellusten loogisen rakenteen selvittämiseen. Ns. ekstraktoreiden kokoelma analysoi ohjelmakoodin. Niiden tuottaman tuloksen ja järjestelmä-asiantuntijan antaman tiedon perusteella tuotetaan kaavio ohjelma-arkkitehtuurille. Tieto voidaan esittää ns. skeemojen (ELS, CLS, ALS) muodossa. Lähestymistapaa on jossain määrin vertailtu muihin vastaaviin, mutta empiirinen lisävalidointi on jatkotutkimuskohde.

          Luku VI-6 kuvaa erään hypertekstiperusteisen lähestymistavan ohjelmistojen dokumentoinnin tukeen. Kehitetyllä SLEUTH-järjestelmällä pyritään automatisoimaan ohjelmistodokumentaation hallintaa. Järjestelmä tukee navigointia ja tiedonhakua. Järjestelmä luo tarvittavat hypertekstilinkit automaattisesti. SLEUTH perustuu FrameMarker-järjestelmään. Tutkimus sisältää myös katsauksen muihin, aiemmin kehitettyihin dokumentaationhallintajärjestelmiin.

 

4. JOHTOPÄÄTÖKSIÄ

Tämä oli kolmas vuotuinen seminaari aihealueelta. Kokemukset ovat olleet positiivisia. Ryhmien esitykset aktivoivat toimintaa kurssin loppupuolella. Seminaari oli nyt laajempi, kuin edellisenä vuonna. Sen kesto oli tällä kertaa n. 14 tuntia. Kuten kurssilla tehtävä harjoitustyö, myös seminaarityö lisää yhteistyötä opiskelijoiden välillä. Tieteellisen näkökulman ja raportoinnin esilletuonti jo tässä vaiheessa toivottavasti myös tukee tutkinnon loppupuolen opintoja. Nämäkin aiheet antavat omalta osaltaan lähtökohtia kandidaatintutkielmien ja gradujen tekoon.

          Tieteellisten, englanninkielisten artikkelien käsittely edellyttää tarkkaa ohjeistusta. Raportointia ja opponointia varten on ollut käytettävissä erilliset ohjeet. Survey –tyyppiset, hyvin organisoituja empiirisiä töitä kuvaavat ja teknisesti ajankohtaiset artikkelit vaikuttaisivat soveltuvan parhaiten analysoinnin kohteiksi tämän tyyppisessä seminaarissa. Tämän vuotinen pääteema: ohjelmistojen ylläpidon kustannusten arviointi, on aihealueena vaativa ja joidenkin aiheiden hallinta edellyttää suhteellisen vankkaa matemaattista taustaa. Mm. tämän vuoksi ryhmät ovat valinneet aiheet varausperiaatteella, intressiensä mukaisesti. Kuten harjoitustyöstä, myös seminaarityöstä opiskelijat ovat saaneet hyvityspisteitä. Tulokseen ja hyvityspisteiden määrään ovat vaikuttaneet raportin laatu, esityksen laatu sekä muut tekijät, kuten aiempina vuosina.

 

Ylläpitoseminaarin web-osoite on: http://www.cs.jyu.fi/~koskinen/ypsem.htm

 

Jyväskylässä, 17.7.2003

Yliassistentti Jussi Koskinen

 

Updated: 11-Aug.-2003 by Jussi Koskinen.