Koskinen, J. (toim.). Ohjelmistojen ylläpidon seminaari – 2003. (259 s.).
Jyväskylän yliopisto, Tietojenkäsittelytieteiden laitos.
|
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
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.