SEPA: Staattiset menetelmät Timo Sallinen, 51134F & Risto Kunnas, 50498T. Sisällysluettelo. 1 Johdanto. 2 SEPA harjoittelu käytännössä.

Samankaltaiset tiedostot
Laadunvarmistuksen suunnitelma. Ryhmä ExtraTerrestriaLs Aureolis Oy

Laadunvarmistuksen suunnitelma. Ryhmä ExtraTerrestriaLs Aureolis Oy

T SEPA - STAATTISET MENETELMÄT Tuomas Tolvanen, 55382U Timo Töyry, 58578B

SEPA päiväkirja. Aihe: Staattiset menetelmät Tekijät: Mikko Halttunen 58198B, Mikko Närjänen 58122B Ryhmä: Neptune T Ohjelmistoprojekti I

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

T Tietojenkäsittelyopin ohjelmatyö. Testiraportti, vaihe T1. Tietokonegrafiikka-algoritmien visualisointi. Testiraportti, vaihe T1

Automaattinen yksikkötestaus

SEPA diary. Dokumentti: SEPA_diary_PK_RI.doc Päiväys: Projekti : AgileElephant Versio: V0.2

Tik Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu. LiKe Liiketoiminnan kehityksen tukiprojekti

dokumentin aihe Dokumentti: Testausraportti_I1.doc Päiväys: Projekti : AgileElephant

Santeri Saarinen Korjattu testaustasoja ja tehty tarkennuksia I1-testaukseen

T Testiraportti - järjestelmätestaus

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

Kuopio Testausraportti Asiakkaat-osakokonaisuus

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

Ohjelmistojen mallintaminen. Luento 11, 7.12.

SEPA päiväkirja. BetaTeam. Juho Mäkinen, 57796V, Jari Leppä, 42710V, Versio Pvm Tekijä Kuvaus

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaiheet 1 ja 2. Antti Jääskeläinen Matti Vuori

Good Minton QA Raportti Iteraatio 1 Sulkapalloliiton Kilpailujärjestelmä

Kuopio Testausraportti Kalenterimoduulin integraatio

Good Minton Sulkapalloliiton Kilpailujärjestelmä SEPA: Heuristinen arviointi

T Testiraportti - integraatiotestaus

Menetelmäraportti Ohjelmakoodin tarkastaminen

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Laaturaportti [iteraatio 2] Ryhmä 14

Staattinen testaus. Luento 5 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science

Testaussuunnitelma. Pizzeria - Pitseria HAAGA-HELIA ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma. WebPizza

Menetelmäraportti - Konfiguraationhallinta

T Testitapaukset TC-1

SEPA päiväkirja. Dokumentti: SEPA_diary_EM_PV.doc Päiväys: Projekti : AgileElephant Versio: V0.9

Versio Päiväys Tekijä Kuvaus Tikkanen varsinainen versio

Katselmoinnin määritelmä. Katselmoinnit osa 1. ja vielä ajatuksia katselmoinneista. Katselmointi. Katselmointi, katselmus (review) IEEE Std

Testaus käsite. Sekalaista testausasiaa. Testauksen käsitteestä. Kattavuusmitat. Jos ajatellaan, että testaus = V&V, voidaan erottaa:

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

Kontrollipolkujen määrä

VERSIONHALLINTA. PARIOHJELMOINTI Lari Ahti, 62634M Antti Kauppinen, 58390D

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Onnistunut SAP-projekti laadunvarmistuksen keinoin

LAATURAPORTTI Iteraatio 1

SEPA päiväkirja. Dokumentti: SEPA_diary_EM_PV.doc Päiväys: Projekti : AgileElephant Versio: V0.93

SALAKIRJOITUKSEN VAIKUTUS SUORITUSKYKYYN UBUNTU käyttöjärjestelmässä -projekti

Testaussuunnitelma. Ohjelmistotuotantoprojekti Nero. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

COTOOL dokumentaatio Testausdokumentit

JHS XXX ICT-palvelujen kehittäminen: Laadunvarmistus Liite 6: Katselmointi

Project group Tete Work-time Attendance Software

Convergence of messaging

Katselmoinnit. review) Katselmoinnit (review( Mitä ovat katselmoinnit? Katselmoinnin määritelmä (IEEE 1988)

58160 Ohjelmoinnin harjoitustyö

T Tietojenkäsittelyopin ohjelmatyö Hirviöryhmä loppukatselmointi. Hirviö. Projektikatselmointi

Ohjelmiston testaus ja laatu. Testaustasot

Onnistunut Vaatimuspohjainen Testaus

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

Hirviö Testausraportti I2

T Testiraportti - integraatiotestaus

T Projektikatselmus

TESTIRAPORTTI - VYM JA KANTA Virtuaaliyhteisöjen muodostaminen Versio 1.0

KOKONAISARKKITEHTUURIN ARVIOINTI

T SEPA - päiväkirja: Design Patterns. ETL työkalu

Dynaaminen analyysi III

AS Automaatio- ja systeemitekniikan projektityöt - Projektisuunnitelma

Testaus-tietoisku: Tärkeimpiä asioita testauksesta projektityökurssilaisille

Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

S09 04 Kohteiden tunnistaminen 3D datasta

TESTIRAPORTTI - JÄRJESTELMÄ, ADMIN Virtuaaliyhteisöjen muodostaminen Versio 1.0

Loppuraportti. Virtuaali-Frami, CAVE-ohjelmisto. Harri Mähönen projektiassistentti Seinäjoen ammattikorkeakoulu. Versio

TIE Ohjelmistojen testaus 2016 Harjoitustyö Vaiheet 1 ja 2. Antti Jääskeläinen Matti Vuori

IT2015 EKT ERITYISEHTOJA OHJELMISTOJEN TOIMITUKSISTA KETTERIEN MENETELMIEN PROJEKTEILLA LUONNOS

Luku 8 Rakennusvaihe. Detailed Design. Programming. Moduulisuunnittelu. Ohjelmointi

Tik Projektiryhmä: TeamAhma. Projektin HAYABUSA opponointi. Opponointisuunnitelma

Ohjelmointi 1 / syksy /20: IDE

T Testiraportti TR-2. ETL-työkalu

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Project group Tete Work-time Attendance Software. Henkilökohtainen SE harjoitus: loppuraportti

Dynaaminen analyysi IV

Testitapaukset - Siirtoprotokolla

ELM GROUP 04. Teemu Laakso Henrik Talarmo

UCOT-Sovellusprojekti. Testausraportti

Ohjelmiston testaus ja laatu. Testausmenetelmiä

LOPPURAPORTTI Paperikonekilta Versio 1.0

Projektityö

CS-C2130 / CS-C2140 / CS-E4910 Software Project 1 / 2 / 3 ja Accenture Luento

Johdantoluento. Ohjelmien ylläpito

Työkalut ohjelmistokehityksen tukena

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori

SEPA päiväkirja. Dokumentti: SEPA_diary_EM_PV.doc Päiväys: Projekti : AgileElephant

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Harjoitustyön testaus. Juha Taina

Siimasta toteutettu keinolihas

L models. Testisuunnitelma. Ryhmä Rajoitteiset

Ylläpito. Ylläpito. Ylläpidon lajeja Ohjelmistotuotanto, syksy 1998 Ylläpito

Testaussuunnitelma Labra

T SEPA - päiväkirja: Design Patterns. ETL työkalu

Ohjelmistotuotantoprojekti

TESTIRAPORTTI - XMLREADER LUOKKA Virtuaaliyhteisöjen muodostaminen Versio 1.0

Transkriptio:

Sivu 1 (5) SEPA: Staattiset menetelmät Timo Sallinen, 51134F & Risto Kunnas, 50498T Versio Päiväys Tekijä Kuvaus 0.1 27.10.2004 Timo Sallinen Ensimmäinen versio 1.0 31.10.2004 Timo Sallinen Korjauksia, lisäyksiä Johdantoon 1.1 1.11.2004 Risto Kunnas Korjauksia, lisätty IEEE-viite 2.0 30.11.2004 Timo Sallinen I1-vaiheen kokemukset 2.1 07.02.2005 Risto Kunnas I2-vaiheen katselmoinnin kokemukset 2.2 08.02.2005 Timo Sallinen Lisätty suunnitelmaa DE-vaiheen osalta 2.3 10.03.2005 Timo Sallinen Päivitystä DE-vaiheen osalta 2.4 14.03.2005 Timo Sallinen Yhteenveto 2.5 15.03.2005 Risto Kunnas Lisätty kommentteja Sisällysluettelo 1 Johdanto...1 2 SEPA harjoittelu käytännössä... 1 3 Kokemukset ja muutokset... 2 3.1 Vaihe PP projektin suunnittelu...2 3.2 Vaihe I1 Implementaatio 1... 2 3.3 Vaihe I2 Implementaatio 2... 3 3.4 Vaihe DE Toimitus & Viimeistely... 4 3.5 Yhteenveto...4 4 Viitteet... 5 1 Johdanto Valitsemamme SEPA-aihe on ohjelmakoodin läpikäynti katselmointimenetelmällä ilman koodin suorittamista. Tarkempi kuvaus menetelmästä ja sen eduista verrattuna funktionaaliseen eli ohjelmakoodia suorittamalla tapahtuvaan testaukseen löytyy kurssin T-76.613 Ohjelmistojen testaus ja laadunvarmistus kurssimateriaalista[1]. Testauskurssilla käytiin läpi katselmointitekniikkaa, ja se tuntui tehokkaalta menetelmällä. Ajatus formaalista dokumentin tai koodin läpikäynnistä tuntuu kiinnostavalta ajatukselta. Yleisesti pelkällä funktionaalisella testauksella ei pystytä testaamaan kattavasti ohjelman toimintaa, kaikkia suorituspolkuja ei saada parhaimmillaankaan ajettua laajoissa järjestelmissä. Katselmointimenettelyssä havaitaan myös sovelluskoodin laatuun liittyviä virheitä, esim. huonot ohjelmointikäytännöt, ei pelkästään suorituksenaikaisia virheitä. 2 SEPA harjoittelu käytännössä Koodin katselmointia käytetään toiminnaltaan monimutkaisempien moduulien testauksessa, sekä moduulien välisten rajapintojen testaukseen. Tarkempi arvio siitä, mihin koodikatselmointia käytetään, tehdään arkkitehtuurisuunnittelun ja testaussuunnittelun yhteydessä.

Sivu 2 (5) Katselmoinnin kulku on kuvattu projektisuunnitelmassa, ja se noudattaa mahdollisuuksien rajoissa IEEE-standardia katselmoinnista [2]. Koodin katselmoinnissa katselmoitavat osat rajataan maksimissaan 500 koodiriviin. Kaikkea koodia ei käydä läpi vaan katselmoitavat ohjelmakooditiedostot valitaan automaattisilla työkaluilla (kuten CCCC, JavaNCSS) tehtyjen raporttien perusteella. Katselmoitava ohjelmakoodi käydään läpi formaalissa katselmointitilaisuudessa, jonka tulokset merkitään normaalin menettelyn mukaisesti virhetietokantaan. 3 Kokemukset ja muutokset 3.1 Vaihe PP projektin suunnittelu Koodikatselmointeja ei käytetty suunnitteluvaiheessa. 3.2 Vaihe I1 Implementaatio 1 SEPAn tarkoituksena oli alun perin ohjelmakoodin testaaminen staattisilla metodeilla, erityisesti katselmoimalla. Tässä vaiheessa projektia ei kuitenkaan ollut sellaista koodia, jota olisi ollut järkevä katselmoida, sillä kaikki koodi oli prototyyppimäistä. Katselmointia suoritettiin kuitenkin mm. testitapauksille sekä tekniselle spesifikaatiolle. Katselmoinneissa ei ohjeistuksesta huolimatta päästy kovinkaan lähelle formaalia katselmointiprosessia [2]. Osasyynä tähän oli siinä, että katselmoitavat dokumentit, varsinkin tekninen spesifikaatio, olivat osittain keskeneräisiä. Suuri osa dokumentoitavista asioista oli jollain tavalla auki, ja katselmointitilaisuudesta muodostui tällöin aivoriihi. Oikeampi tapa olisi ollut kirjata puuttuva asia ja määrittää sille myöhemmin vastuuhenkilö tai erillinen aivoriihi. Lisäksi katselmoinneissa ajauduttiin välillä turhaan keskusteluun aiheesta, joka olisi vain voitu merkitä tarkennusta kaipaavaksi. Katselmoinnit pyrittiin pitämään ajan säästämiseksi pienissä ryhmissä, mikä tuntui aluksi järkevältä ajatukselta. Pienessä ryhmässä (3-4 henkilöä) formaali katselmointimenetelmä ei kuitenkaan ole niin tehokas ajansäästäjä kuin suuremmassa (7 henkilöä tai enemmän). Pienessä ryhmässä on mahdollista toimia vapaammin, ilman, että kenenkään aikaa menee hukkaan. Kaikille katselmointiin osallistujille ei ehkä näin muodostunut oikeaa kuvaa katselmoinnin hyödyllisyydestä, ja siitä, miksi katselmoinnin kulku on niin tiukasti määritelty. Virheitä katselmointimenetelmällä löydettiin paljon, mutta vertailudataa ei juuri ole, jotta voitaisiin sanoa tarkemmin, kuinka hyvin katselmointi onnistui. Seuraavissa vaiheissa pyritään käyttämään vertailudatana muita testimenetelmiä. Dokumenteissa voidaan harkita ns. error seeding tekniikkaa, eli tehdään dokumentteihin tahallaan virheitä, ja katsotaan kuinka moni näistä löydetään. Keskimäärin katselmointitilaisuudet kestivät reilun tunnin, ja katselmointeihin osallistujat käyttivät valmistautumiseen hiukan alle kaksi tuntia. Katselmoitavan dokumentin vastuuhenkilöt eivät kuitenkaan juuri valmistautuneet katselmointiin. Katselmointimenetelmä tuntuu sopivan hyvin dokumenttien virheiden etsimiseen, ja se on oikeastaan ainoa keino tekstinkäsittelyohjelman oikoluvun lisäksi. Dokumenteista ei kuitenkaan aina tiedä, että mitä siinä tulisi olla, kun taas ohjelmakoodista on yleensä olemassa jokin speksi, josta näkee mitä ohjelmakoodin tulisi tehdä. Joissain tapauksissa tarkistuslistat, joita käytettiin teknisen spesifikaation katselmoinnissa, dokumenttipohjat ja standardit auttavat hieman.

Sivu 3 (5) 3.3 Vaihe I2 Implementaatio 2 Katselmointitilaisuus 21.01.05 Katselmointitilaisuudessa oli tarkoituksena arvioida Join toimenpiteen toteutusta. Pääpaino oli dokumentoinnin ja luettavuuden parantaminen. Tämä nähtiin tärkeäksi, sillä Join oli tähän mennessä pisimmälle kehitetty toimenpide, ja sen dokumentointi ja koodin tyyli olisi esimerkkinä muille toimenpiteille. Myös mahdollisten bugien etsiminen koodista oli yksi katselmoinnin tavoitteista. Katselmoinnin kattavuutta päätettiin arvioida ns. error seedin eli virheiden kylvö menetelmällä. Toimenpiteen vastuuhenkilö Teemu teki tahallisesti toimenpiteeseen kolme virhettä, joiden avulla voidaan arvioida, kuinka monta prosenttia olemassa olevista virheistä löydettiin. Virheiden kylvöstä tiesivät Teemu sekä Risto, muille katselmointiin osallistuneille ei asiasta kerrottu etukäteen. Katselmoinnissa tehtiin useita huomioita paremmasta ohjelmointityylistä, puutteellisesta kommentoinnista, sekä yleisesti eri komponenttien käyttötavoista. Varsinaisia virheitä löydettiin vain muutama, jotka liittyivät erikoistilanteisiin, joita ei vielä oltu funtionaalisesti missään vaiheessa ajettu tai testattu. Erikoisesti katselmoinnin aikana paljastui virhe eräässä toisessa toimenpiteessä (Export) mahdollisesti olevassa väärin käytetystä metodikutsusta, kun heräsi keskustelua, mihin erästä metodia tulee käyttää. Yhtään kylvettyä virhettä ei kuitenkaan löydetty. Tähän on monia syitä: Katselmoijat eivät olleet harjaantuneet katselmoimaan, katselmoitavaa koodia oli enemmän kuin on suositeltavaa, kylvetyt virheet olivat sellaisia jotka yleensä huomaa ajon aikana ja joita ei normaalisti osaa etsiä ellei siihen ole syytä sekä koodin osittain vaikea luettavuus. Katselmointitilaisuuden perusteella näyttäisi siltä, että tietyn tyylisiä virheitä on vaikeaa ainakin harjaantumattoman ihmisen vaikea löytää, ellei ole jotain syytä olettaa, että jossain kohtaa koodia on virhe. Toisaalta, sellaisia virheitä, joita on vaikea simuloida koodia ajamalla, löytyvät katselmoimalla vähemmällä vaivalla. Aivan mitä tahansa koodia ei kannata katselmoida. Error seedingin käyttö sen sijaan yllätti positiivisesti, sillä ilman tämän kaltaista mittaria katselmointitilaisuuden onnistumisesta olisi hyvin vaikea sanoa mitään. Nyt ei jäänyt kattavuudesta turhan yltiöpositiivista kuvaa, mikä on usein vaarana, jos virheitä kuitenkin löydetään. Metriikkojen kerääminen Vaiheen lopussa otettiin käyttöön Eclipsen Metrics-plugin [3]. Plugin mahdollistaa reaaliaikaisen koodin seurannan, ja erilaisten statiikkojen keräämisen. Näitä ovat muunmassa: Koodin syklinen kompleksisuus Ylipitkät metodit Metodit, joiden parametrimäärä ylittää suositeltavan rajan Lausekkeiden suuri määrä metodissa Koheesion puute tai liialliset kytkökset Näiden perusteella voidaan arvioida luokkakohtaisesti koodin laatua. Testien perusteella mitään todella merkittäviä laadullisia ongelmia koodissa ei havaittu. Selkeästi yleisin ongelma oli ylipitkät metodit, mutta näissäkin rivimäärä oli keskimäärin reilusti alle 100. Kokemukset pluginin käytöstä

Sivu 4 (5) olivat varsin positiivisia, automaattinen koodin arvointi helpottaa tyypillisten ongelmakohtien löytämistä koodista. Toki näiden tulosten arviointi vaatii ihmissilmää. DE-vaiheessa suoritetaan vielä yksi koodikatselmointi, katselmoinnin kohde valitaan em. metriikkojen perusteella. 3.4 Vaihe DE Toimitus & Viimeistely Alkuperäisestä suunnitelmasta poiketen uutta muodollista koodikatselmointitilaisuutta ei enää järjestetty. Tähän oli syynä se, että yleisesti painopiste siirtyi järjestelmätestaukseen, eikä aikaisempien kokemusten perusteella staattisesta katselmoinnista ollut juurikaan hyötyä koodin osalta. Järjestelmän yleisen luonteen takia yksittäisten luokkien tai koodilohkojen testaaminen on jossain määrin ongelmallista ja vain järjestelmätestauksella voidaan saada riittäviä tuloksia. Projektin aikana löydetyt virheet olivat suureksi osaksi virheitä koko prosessissa tai ongelmia siinä, ettei järjestelmä toipunut poikkeustilanteista esim. lähdedatan suhteen. Näiden havaitseminen muuten kuin ajonaikana on hankalaa. Sinänsä hyväksi havaittua dokumentaation katselmointia ei ollut mahdollista suorittaa, koska dokumentaatioon tuli vielä merkittäviä muutoksia viime metreille asti. I2-vaiheessa käyttöön otettua Eclipsen Metrics-pluginia käytettiin yleiseen koodin laadun parantamiseen. Tämän näyttämien varoitusten perusteella korjattiin projektista ylipitkiä metodeja ja poistettiin turhia kytkentöjä. Menettely helpottaa laajassa projektissa mahdollisten ongelmakohtien löytämistä, kokemuksen perusteella virheiden todennäköisyys kasvaa ylipitkissä ja huonosti suunnitelluissa metodeissa. Lisäksi DE vaiheessa käytiin pintapuolisesti läpi ohjelmakoodin kommentointi. Kommentoinnin ohella pyrittiin kiinnittämään huomiota monimutkaisiin ja mahdollisesti myös virhealtiisiin rakenteisiin. Kommentointia tuntui olleen riittävästi, mutta Javadoc kommentit puuttuivat monesta paikasta. 3.5 Yhteenveto Kokemusten perusteella formaali katselmointi sopii verrattain hyvin dokumentaation läpi käymiseen. Haasteena tässä on se, että katselmointi lipsuu helposti aivoriiheksi, jos formaalia tekniikkaa ei saada ylläpidettyä. Tällöin tilaisuudesta ei saada niin paljon irti. Koodin katselmoinnin kannalta ongelmaksi muodostui arvioijien kokemattomuus, virheiden löytäminen vaatii harjaantumista. Sen sijaan laadullisesti virheet ja puutteet kommentoinnissa löytyvät helpommin. Oleellista on myös koodin luonne, jos potentiaaliset virheet ovat luonteeltaan sellaisia, jotka tulevat helposti esille ajonaikana, ei katselmointi liene paras mahdollinen menetelmä testaamiseen. Jatkossa staattista arviointia on varmasti mahdollista hyödyntää. Erityisesti kokemattomien ohjelmoijien kyseessä olleessa katselmoinnilla voitaisiin eliminoida huonoja ratkaisuja tai mahdollisesti väärin opittuja tekniikoita. Kurssin puitteissa tätä mahdollisuutta ei ollut. Dokumentaation läpikäynnissä saavutetaan kokemusten perusteella merkittävästi parempi lopputulos kuin pintapuolisella silmäilyllä, joka ei ohjaa muodolliseen ja huolelliseen virheiden etsimiseen. Katselmoinnissa kannattaa keskittyä kriittisimpiin osiin. Ongelma on tällöin krittisimmän osan määrittely. Tässä SEPA:ssa kokeilluilla työkaluilla se on mahdollista, mutta tämän projektin

Sivu 5 (5) puitteissa ei oikein löytynyt sellaista kriittisistä kriittisintä osaa, vaan kaikki toiminnallisuus oli riippuvaista toisista, joten järkevän katselmointikohteen löytäminen oli lähinnä arpapeliä. Katselmoinnilla ei voida kuitenkaan korvata funktionaalista testausta eikä päinvastoin: molemmissa löytyy erityyppisiä virheitä. 4 Viitteet [1] Juha Itkonen. 2004. Reviews and Inspections Lecture Slides. [Viitattu: 27.10.2004] Saatavissa: http://www.soberit.hut.fi/t-76.613/2004/material/t76613_lecture7_04.pdf [2] IEEE Standard for software reviews. Document number IEEE 1028-1997 [3] http://www.teaminabox.co.uk/downloads/metrics/