T Software Project Group: Tetrastone Subject: RosettaNET. Personal Software Engineering Assignment: Tetrastone

Samankaltaiset tiedostot
Opera Hotel Edition. Arvonlisäverokantojen muutos Operaan Finland. Toukokuu 2010 MICROS-Fidelio Finland Oy, Hotel Systems HelpDesk

Menetelmäraportti Ohjelmakoodin tarkastaminen

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

Group 2 - Dentego PTH Korvake. Peer Testing Report

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

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä.

Efficiency change over time

Web Services tietokantaohjelmoinnin perusteet

TU-C2030 Operations Management Project. Introduction lecture November 2nd, 2016 Lotta Lundell, Rinna Toikka, Timo Seppälä

Security server v6 installation requirements

Mittaustietojen SAF-aineistokuvaus kaasudatahubiin

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

6.3. AVR_rauta. EEPROM-muisti pva

4.6. Viestisivu (vastaanottajan valinta) 1. Lisätty lähetysmahdollisuus. kuvaavampaan, kasvatettu. 2. Valittu näkymä aina. 4.

HITSAUKSEN TUOTTAVUUSRATKAISUT

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

RAIN RAKENTAMISEN INTEGRAATIOKYVYKKYYS

Tentti: T Ohjelmoinnin peruskurssi, osa 1. Yleistä. Tehtävä 1

Visma.net Approval. Versiosaate 1.40

Security server v6 installation requirements

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Ohjelmoinnin perusteet Y Python

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

M. Merikanto 2012 XML. Merkkauskieli, osa 2

TM ETRS-TM35FIN-ETRS89 WTG

Järjestelmän kriittisimmille toiminnallisuuksille (listattu alla), toteutetaan 1

11. Javan valintarakenteet 11.1

Testaaminen ohjelmiston kehitysprosessin aikana

OptimePortal ja OptimeEvent versioiden yhteenveto joulukuu

Metsälamminkankaan tuulivoimapuiston osayleiskaava

TM ETRS-TM35FIN-ETRS89 WTG

TM ETRS-TM35FIN-ETRS89 WTG

UML -mallinnus TILAKAAVIO

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

SoleMOVE lähtevän harjoittelijan ohje

TM ETRS-TM35FIN-ETRS89 WTG

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

Salasanan vaihto uuteen / How to change password

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Tynnyrivaara, OX2 Tuulivoimahanke. ( Layout 9 x N131 x HH145. Rakennukset Asuinrakennus Lomarakennus 9 x N131 x HH145 Varjostus 1 h/a 8 h/a 20 h/a

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

The CCR Model and Production Correspondence

WindPRO version joulu 2012 Printed/Page :47 / 1. SHADOW - Main Result

Capacity Utilization

SOA SIG SOA Tuotetoimittajan näkökulma

TM ETRS-TM35FIN-ETRS89 WTG

TM ETRS-TM35FIN-ETRS89 WTG

LAADUSTA KANSAINVÄLISTÄ KILPAILUKYKYÄETUA ESITELMÄN SISÄLTÖ: 1. SABRISCAN-TARINA 2. TULOKSET 3. YHTEENVETO

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

TM ETRS-TM35FIN-ETRS89 WTG

TIEKE Verkottaja Service Tools for electronic data interchange utilizers. Heikki Laaksamo

Lentokelpoisuustarkastajien kertausseminaari

T Projektikatselmus

Ohjelmoinnin perusteet Y Python

Tietorakenteet ja algoritmit

Ohjelmoinnin perusteet Y Python

Teknillinen korkeakoulu T Tietojenkäsittelyopin ohjelmatyö. Testausraportti Smartmeeting opponointi

SENAATTILA uudistuu keväällä 2015

Ketterä vaatimustenhallinta

Tietuekuva. Aineistosiirrot XML ISO XML pain MT101 sanomasäännöt

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssi Y1

Palaute - Koha-Suomi - Support #1510 Tukipyynnöt: Kohan raportit

,0 Yes ,0 120, ,8

Listarakenne (ArrayList-luokka)

Miten PIC koodin rekisteröityminen tehdään? PIC = Personal Identification Code URF = Unique Registration Facility Participant Portal CIMO

Muuttujien määrittely

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

( ( OX2 Perkkiö. Rakennuskanta. Varjostus. 9 x N131 x HH145

Makrojen mystinen maailma lyhyt oppimäärä

TIETORAKENTEET JA ALGORITMIT

Tietokanta.java Luokka tarjoaa välineet tietokannan lukemiseen. Haetuista tiedoista muodostetaan kurssi- ja opetus-olioita.

Rakennukset Varjostus "real case" h/a 0,5 1,5

Kuva liikennemerkistä 1. Aleksanteri Numminen. ITKP101

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

Evaluointidokumentti

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssien laaja oppimäärä

TM ETRS-TM35FIN-ETRS89 WTG

Baswaren tukiportaalin (SRM) käyttöohje

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

VeRan laboratoriotietojen siirtoformaatti

TM ETRS-TM35FIN-ETRS89 WTG

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin perusteet, syksy 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006

Ohjelmoinnin perusteet Y Python

Tietorakenteet ja algoritmit

T Projektikatselmus

add_action( wordcamp_jkl, johdatus_filttereihin );

Hops-ohjaajan ohje Opiskelijan hopsit.

14. Hyvä ohjelmointitapa 14.1

Ohjelmoinnin perusteet Y Python

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

TESTIRAPORTTI - XMLREADER-LUOKKA Virtuaaliyhteisöjen muodostaminen Versio 1.0 (luonnos 2)

Tietorakenteet (syksy 2013)

Museo 2015 järjestelmä ja Museoiden luettelointiohjeet

Sukupuu -ohjelma. Ossi Väre ( ) Joni Virtanen ( )

Transkriptio:

Personal Software Engineering Assignment: Tetrastone Name of the group (Tetrastone) tetrastone@soberit.hut.fi Subject: PSEA 4.4.2004

Document history Version Date Author Description 1.0 1.4.2004 Henry Niveri Initial version of this report

Sisällys 1 Johdanto... 4 2 Järjestelyt... 4 3 Tulokset... 4 4 Kokemukset... 4 5 Lyhenteet... 5 6 Liite 1. Inspection Data Summary... 6 Inspection issue Log... 9 Inspection issue Log...10

1 Johdanto Henkiloökohtainen menetelmäharjoitukseni aiheena oli koodin staattinen analysointi. Harjoituksen tavoitteena oli löytää virheitä ryhmämme koodista ja näin parantaa tuotteen laatua. Lisäksi harjoituksen etuna oli se, että tarkastettavan koodin toiminta tuli selkeäksi kaikille muillekkin, paitsi itse ohjelmoijalle. 2 Järjestelyt Koska koodin staattinen analysointi on aikaavievää ja ryhmämme aikaresurssit oli rajoitetut, päätettiin käyttää menetelmää vain kerran. Lisäksi tarkastajia kehoitettiin tutkimaan koodia ad hoc tyyliin eli käyttämään koodin tuntemustaan hyväksi ja etsimään virheitä paikoista, joissa tarkastaja uskoi niitä olevan. Tarkastettava koodi oli yksi luokka, ManagePIPProcess.aspx, joka käsittää PIP:n luonnin ja muokkauksen sysadmin tasolla. Luokka oli n.500 riviä pitkä. Koodia lukiessa tarkastajia kehoitettiin käyttämään tarkastuslistaa, josta löytyi mahdollisia virheiden paikkoja. Koodintarkastuskokous(code inspection) pidettiin 29.1.2004 Teknillisen korkeakoulun tietotekniikka talolla. Kokoukseen osallistui kaikki ryhmän jäsenet. Kaikki kokoukseen osallistuneet olivat valmistautuneet tarkastamalla koodia riittävällä tarkkuudella. Koodi käytiin läpi selaamalla sitä videotykin avustuksella. Kun selatessa tultiin kohtaan, josta tarkastaja oli havainnut virheen, merkittiin virhe ylös. Tämä helpotti kokouksen jälkeistä työtäni, koska tiesin tarkasti, mitä virhettä tarkastaja oli tarkoittanut. 3 Tulokset Virheitä löytyi 36 kappaletta, joista todellisia virheitä oli 24 kappaletta. Menetelmä olis siis hyvinkin tehokas löytämään virheitä. Löytyneistä virheistä 2 oli major-luokan virheitä, 7 oli minor-luokan virheitä ja loput 27 olivat parannusehdotuksia. Jälkitarkastelussa nostin yhden minor virheistä major luokkaan ja koska monet tarkastajat olivat löytäneet samoja virheitä jäi todellisten parannusehdotusten määräksi vain 15. Kokonaisuudessa aikaa tarkastuksen suunnitteluun, virheiden etsimiseen ja virheiden kirjaamiseen kului 10h. Virheiden löytymisajaksi tuli siis 2,4 virhettä/tunti. Luku on aika hyvä mutta ryhmämme rajallisten resurssien vuoksi emme voineet käyttää menetelmää useammin kuin kerran. Tarkemmat tiedot tarkastuksen tunnusluvuista ja metriikoista löytyvät liitteestä 1. 4 Kokemukset Kuten aluksi epäilin, staattinen koodin analysointi on liian raskas menetelmä näin pieneen projektiin. Aikaa kului yli 10 tuntia, joka on melkein 1% koko käytettävästä ajasta. Tuossa ajassa saimme tarkistettua koko projektin koodista ehkä n. 5%. Koko koodin tarkastaminen pienemmälläkin tarkastusryhmällä olisi vienyt aivan liikaa aikaa. Löytyneiden virheiden määrä yllätti kuitenkin minut positiivisesti. Ennen tarkastusta suhtauduin menetelmään hyvin epäilevästi ja uskoin tulosten jäävän pieniksi. Virheitä löytyi kuitenkin paljon ja uskon että riittävillä resursseilla ja osaavilla tarkastajilla projektin alkuvaiheessa staattinen koodin analysointi on tehokkaampi menetelmä kuin perinteinen mustalaatikkotestaus.

Myös muiden dokumenttien staattiset tarkastukset olisivat olleet mielenkiintoisia. Valitettavasti emme ehtineet tekemään niitä. 5 Lyhenteet Lyhenne Kuvaus PIP RosettaNet Partner Interface Processes (PIPs ) define business processes between trading partners. Taulu 4: Lyhenteet

6 Liite 1. Inspection Data Summary Date 29.1.2004 _ Inspection ID tetrainsp1 Inspection leader Henry Niveri Product Document reference ManagePIPProcess.aspx.cs _ Total LOC _n.500 Planning time _3h (work-hours) Individual checking results (to be reported during the entry process of the logging meeting) Inspector 1 Anssi Rajaniemi 2 Kimmo Toivola 3 Hanna Koivu 4 Mikko Savolainen 5 Kjell Holmberg 6 Mikael Riska Hours check LOC studi ed issue s issue s Improv m. Questio ns Check rate LOC/hou r 0,5 500 2 2 6 1 500/h 0,5 500 - - - - 1000/h 0,5 500 - - 7-1000/h 0,5 500-5 8-1000/h 1 500 - - 4-1000/h 0,5 500 - - 1-1000/h Totals 3,5 500 2 7 26 1 Totals for all inspectors: Checking time 3,5h_ (work-hours) Average checking rate 917 (LOC/hour)

Logging No of people 7 Logging duration (hrs) 0,5 Logging time 3,5 (wkhrs) issues logged issues logged Improvement suggestions s of intent New items found in the meeting 2 7 26 1 0 Logging rate _0,17_ (items/min) Detection-time _7h (wk-hrs) Logging-meeting rate _1000(LOC/h) Editing, follow-up and Exit No of major defects 3 No of minor defects _6 No of improvements 15 Efficiency of finding real bugs (defects/wk-hrs) 2,4

Inspection issue Log Item No Line No/ Location Type (circle) Check list/ Rule tag Desc-ription No of occurrence s Editor notes 1 13-14 Turhat määrittelyt 2 26,36,4 3,45,56-59,63-65 Huono muuttujan nimi 3 51 4 82 5 75-80 6 114 Static muuttujat Puuttuu tarkistus session olemassaolosta Voisi siirtää parempaan paikkaan, esim. DrawGUI Siirrettävä seuraavan ehdon perään, jolloin pip on varmasti validi. 122 rivillä on tarkistus eli sen jälkeen. 7 133 8 125 9 92 Tarkistus puuttuu Turha tarkistus ehdossa. Mikä pip on? pip_id, pip vai mikä? Eli huono nimi pip. 10 154 Siirrä parempaan paikkaan, esim. DrawGUI Subtotals: issues logged 2 issues logged 2 Improvement suggestions logged 6 s of intent logged

Inspection issue Log Item No Doc page Line No/ Location Type (circle) Check list/ Rule tag Desc-ription No of occurrences Editor notes 11 193 Switch case olisi parempi rakenne 12 273 Buttonit pitäisi disabloida 13 279 Funktion nimi ei kuvaava 14 291 Pitäisi validoida, että kentässä on varmasti jotain 15 301-302 Turhia 16 298 17 320 18 320 adopted_name on huono nimi, koska namea ei ole vielä tässä vaiheessa adoptoitu eli muutettu Stepit saatava dropdown listaan kannasta. Dropdown listat siirrettävä DrawGUIhin 19 327 Turha else if 20 398 Käytä valmista funktiota eikä byte taulukkoon lukemista. Tämä poistaa ongelman joka syntyy erilaisista merkistöistä. Subtotals: issues logged 1 issues logged 2 Improvement suggestions logged 7 s of intent logged

Inspection issue Log Document reference tag (version): ManagePIPProcess.aspx.cs Item No Doc page Line No/ Location Type (circle) Check list/ Rule tag Desc-ription No of occurrences Editor notes 21 458-459 Turhia 22 461 Response.Redirect server.transfer 23 479 Try catch puuttuu 24 Koko koodi Kommentteja puuttuu ja tyhjät funktiot pois. 29 30 Subtotals: issues logged issues logged 2 Improvement suggestions logged 2 s of intent logged