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