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

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

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

LAATUDOKUMENTTI

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

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

LAATURAPORTTI Iteraatio 1

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

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

Santeri Saarinen Korjattu testaustasoja ja tehty tarkennuksia I1-testaukseen

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

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

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

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Työkalut ohjelmistokehityksen tukena

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

Kuopio Testausraportti Asiakkaat-osakokonaisuus

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

Project group Tete Work-time Attendance Software

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

Laadunvarmistuksen suunnitelma. Ryhmä ExtraTerrestriaLs Aureolis Oy

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

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Convergence of messaging

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

T Testiraportti - integraatiotestaus

COTOOL dokumentaatio Testausdokumentit

Laadunvarmistuksen suunnitelma. Ryhmä ExtraTerrestriaLs Aureolis Oy

Automaattinen yksikkötestaus

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

UCOT-Sovellusprojekti. Testausraportti

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

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

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

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

Tapahtuipa Testaajalle...

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

Testaussuunnitelma. Dokumentti: Testaussuunnitelma.doc Päiväys: Projekti: AgileElephant Versio: V0.4

58160 Ohjelmoinnin harjoitustyö

T Testiraportti - järjestelmätestaus

AgilElephant ja CruiseControl

Ohjelmistojen testaus ja hallinta. Gradle

Laadunvarmistusdokumentti

Testaussuunnitelma. Dokumentti: Testaussuunnitelma.doc Päiväys: Projekti: AgileElephant

Testaustyökalut. Luento 11 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science

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

Menetelmäraportti Ohjelmakoodin tarkastaminen

Lohtu-projekti. Testaussuunnitelma

Laaturaportti [iteraatio 2] Ryhmä 14

PROJEKTIN OHJAUS JA SEURANTA JOUNI HUOTARI

Kuopio Testausraportti Kalenterimoduulin integraatio

Ohjelmistotestaus -09

T SEPA päiväkirja

Projektinhallintaa paikkatiedon avulla

5. HelloWorld-ohjelma 5.1

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

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

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

Good Minton QA Raportti Iteraatio 1 Sulkapalloliiton Kilpailujärjestelmä

Kurssin hallinta -työväline

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

COTOOL dokumentaatio SEPA: Refaktorointi

Verkkopokerijärjestelmä. Loppuraportti Ryhmä Kanat Ohjelmistotuotantoprojekti, syksy 2008

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

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

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

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

Valppaan asennus- ja käyttöohje

Joonas Ruotsalainen GIT PIKAOPAS. Tutkielma 2011

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

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

Ylläpito. Ylläpidon lajeja

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Projektisuunnitelma Viulu

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Projektisuunnitelma. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmointi 1 / syksy /20: IDE

4. Luokan testaus ja käyttö olion kautta 4.1

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

OHJELMISTOTEKNIIKKA LABORATORIOHARJOITUKSEN OHJEET

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Hirviö Testausraportti I2

UKJ-suunnittelun etenemisestä

Ohjelmiston testaus ja laatu. Testaustasot

Toteutusvaihe T3 Digi-tv: Edistymisraportti

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

XML tehtävien työnkulku

11/20: Konepelti auki

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

Määrittelydokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

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

CSE-C2610 Software Project I ja Accenture Luento

5. HelloWorld-ohjelma 5.1

ARVO - verkkomateriaalien arviointiin

Loppuraportti. Ryhmä 14. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan. Innofactor Oy

Harjoitus 2 (viikko 45)

Laadunvarmistuksen loppuraportti

Oodin versiot, havaittujen virheiden korjaus sekä kehitysehdotusten eteneminen

Transkriptio:

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

T-76.5158 SEPA - Pariohjelmointi 2 (7) VERSION HALLINTA Versio Päivä Tekijä Kuvaus 0.1 5.12.2006 Tuomas Tolvanen Ensimmäinen versio 0.2 8.12.2006 Timo Töyry Selitystä työkaluista lisätty 0.3 9.12.2006 Tuomas Tolvanen Koostettiin palautettava dokumentti

T-76.5158 SEPA - Pariohjelmointi 3 (7) SISÄLLYS 1. JOHDANTO...4 1.1. Staattisten analyysityökalujen käyttö...4 1.2. Katselmointi...4 1.3. Referenssit...4 2. MENETELMÄN KÄYTTÖÖNOTTO...5 2.1. Katselmointi...5 2.2. Työkalut...5 3. KOKEMUKSET JA MUUTOKSET...6 3.1. Project planning...6 3.2. Implementation 1...6 3.3. Implementation 2...7 3.4. Yhteenveto...7

T-76.5158 SEPA - Pariohjelmointi 4 (7) 1. JOHDANTO Käytämme projektissa staattisia menetelmiä ohjelmakoodin laadunvarmistukseen. Menetelmät jakautuvat ohjelmakoodin automatisoituun analysointiin ja koodikatselmointikäytäntöihin. Sepa-aihe on valittu, koska näistä menetelmistä ei ole aikaisempaa käytännön kokemusta ja on nähty, että menetelmien käyttö olisi eduksi projektin laadunvarmistuskäytäntöjen osana. 1.1. Staattisten analyysityökalujen käyttö Automaattisessa analysoinnissa käytetään Javalle suunniteltuja analysointityökaluja, jotka analysoivat ohjelmakoodissa olevia ohjelmointivirheitä ja ohjelman kompleksisuutta. Työkalujen avulla saatujen tulosten perusteella tehdään koodiin tarvittaessa muutoksia. Analysointi pyritään integroimaan CruiseControl -järjestelmään, jolloin se voidaan suorittaa yksikkötestien yhteydessä säännöllisesti automatisoituna. 1.2. Katselmointi 1.3. Referenssit Katselmointikäytäntöihin kuuluu koodikatselmus, joka järjestetään ohjelman logiikan kannalta tärkeimmille komponenteille, kuten sovellusadapterin ja tietoliikenneadapterin keskeisimmille osille. Katselmointien tavoitteena on löytää komponenttien toteutuksesta mahdollisia ongelmia, jotka eivät ole tulleet ilmi muilla laadunvarmistusmenetelmillä. Katselmointi toteutetaan formaalina koodikatselmointina, jossa katselmointiin osallistuvat henkilöt tutustuvat katselmuksen kohteena olevaan koodiin ennen katselmointia. Katselmointitilaisuudessa katselmoinnin tulokset käydään läpi luokka ja metodi kerrallaan ja päätetään vaativatko löytyneet ongelmat jatkotoimenpiteitä. Katselmoinnin tulokset kirjataan ylös ja niiden perusteella tutkitaan SEPA:ssa katselmointikäytännön tehokkuutta. Referenssinä koodikatselmoinnin osalta on käytetty kirjaa: I.Burnstein: Practical Software Testing, Springer Professional Computing Lisäksi materiaalina on käytetty luentomateriaalia kurssilta: T-76.5613 Ohjelmistojen testaus ja laadunvarmistus

T-76.5158 SEPA - Pariohjelmointi 5 (7) 2. MENETELMÄN KÄYTTÖÖNOTTO 2.1. Katselmointi 2.2. Työkalut Ennen Iteraatio I:n päätöstä suoritetaan koodikatselmointi Tietoliikenneadapterin tietoliikenne-toiminnallisuudelle sekä Sovellusadapterin viestinkäsittely-toiminnoille. Iteraatio I:n lopussa syntyneelle koodille suoritetaan myös ohjelmallinen staattinen analysointi. Katselmoitavalle lähdekoodille tehdään tag versionhallintaan ja katselmointi kohdistuu tässä tagissa olevaan versioon lähdekoodista. Ryhmän jäsenet suorittavan katselmoinnin omatoimisesti ja kirjaavat havaintonsa kirjauslomakkeelle. Tulokset tarkastetaan katselmointitilaisuudessa, jossa lähdekoodi käydään läpi järjestyksessä ja päätetään vaatiko kukin kirjattu havainto jatkotoimenpiteitä. Koodikatselmoinnissa huomio keskittyy toiminnallisten virheiden lisäksi koodin kommentointiin ja luettavuuteen. Katselmointikäytännöistä järjestetään ryhmälle koulutus ennen ensimmäisen katselmoinnin suorittamista Ohjeet katselmointiin löytyvät ryhmän wikistä osoitteesta: http://wiki.dentego.com/index.php/materiaali#koodikatselmointi Iteraatio I:n aikana on tarkoitus testata seuraavia staattisen analyysintyökaluja: CCCC FindBugs Javancss Jlint. Näistä on tavoitteena löytää ainakin yksi työkalu, jonka voisi integroida osaksi CruiseControl-järjestelmää. Toimiviksi havaitut työkalut otetaan käyttöön koodin staattiseen analyysiin toisessa iteraatiossa. CCCC tuottaa koodista html-muotoisen raportin, josta ilmenee monia koodin tasoa kuvaavia lukuja. FindBugs sisältää oman suhteellisen selkeän käyttöliittymän, jolla koodia voi analysoida. FindBugs:sta on lisäksi olemassa plugini Eclipseen. Javancss pitäisi tuottaa samat osittain samoja lukuja kuin CCCC:n sillä erolla, että CCCC:n raportti on selkeämpi ja tarkempi. Jlint on kaiketi CCCC:n ja Javancss:n tapainen työkalu. Tarkempaa tietoa ei toistaiseksi ole, koska emme ole toistaiseksi onnistuneet saamaan Jlint:iä toimimaan. Iteraatio I:n jälkeen soveltuvimmat työkalut integroidaan osaksi CruiseControl-järjestelmää.

T-76.5158 SEPA - Pariohjelmointi 6 (7) 3. KOKEMUKSET JA MUUTOKSET 3.1. Project planning Suunniteltiin katselmointikäytäntöjä ja tutustuttiin alustavasti staattisiin työkaluihin. Staattisten analyysityökalujen testaus päätettiin suorittaa iteraatio 1:n aikana, sitten kun on tuotettu saatu aikaiseksi jonkin verran koodia, johon työkaluja voisi testata. Päätettiin toteuttaa koodikatselmointi Iteraatio 1. loppupuolella. 3.2. Implementation 1 Toteutettiin koodikatselmointi Koodikatselmointi toteutettiin 7.12. Tällöin katselmointiin svn:ään tagattusta haarasta Source/Dentego/tags/0.1.2-inspection/ oleellisimmat luokat sovellusja tiedonsiirtoadaptereista. Tiedonsiirtoadapterista katselmoitiin tiedostot FinvoiceServise.java ja OpenCDAService.java. Sovellusadapterista katselmointiin tiedostot MessageService.java, MessageController.java, RFDISMessageHandler.java ja QueryMessageHandler.java. Katselmoiduista tiedostoista löytyi odotetusti huomautettavaa, joita ei oltu havaittu normaalissa yksikkötestauksessa. Havainnot liittyivät toiminnallisiin yksityiskohtiin ja koodin kommentointiin ja luettavuuteen. Katselmoinnin havainnot kirjattiin ylös ja katselmoinnin jälkeen jaettiin tehtävät ongelmien korjaukseksi. Osa havatuista ongelmista oli jo korjattu ennen katselmointia, koska kehitystyötä jatkettiin normaalisti katselmointi version taggaamisen jälkeen. Loput havaitut ongelmat päätettiin korjata suurimaksi osaksi vielä ennen iteraation päättymistä. Testattiin staattisia analyysityökaluja Testattiin muutamia staattisia analyysityökaluja. Näistä lupaavilta vaikuttivat CCCC ja findbugs. Näistä ainakin CCCC pitäisi pystyä integroimaan CruiseControl:liin suhteellisen helposti. Findbug:sia ei välttämättä voida integroida CruiseControl:liin vaan se jäänee erilliseksi työkaluksi koodissa mahdollisesti olevien bugien metsästykseen. FindBugs vaikutti varsin kivalta työkalulta koodin laadun nopeaan tarkistukseen. FindBugs:n käyttöliittymässä ilmeni mystinen ongelma, käyttöliittymä ei jostain syystä suostunut näyttämään lähdekoodia sille varatussa paikassa. FindBugs:n Eclipse plugin vaikuttaa kätevältä, kun bugien metsästyksen voi liittää suoraan kehitys ympäristöön eikä tarvita erillistä ohjelmaa. Pluginin ongelmana on kuitenkin, että se lisää löytämänsä ongelmat Eclipse:n Problems-välilehdelle, josta ne saattaa olla vaikea havaita jos koodi tuottaa jo muutenkin paljon varoituksia (esim. javadoc:n puuteesta). FindBugs:n Eclipse plugin:n käyttöä tullaan varmasti jatkamaan Iteraatio II:ssa. Javancss:sää ei saatu toimimaan kunnolla, jonka takia sillä ei saatu luotua muuta kuin tyhjä raportti. Tyhjästäkin raportista selviää Javancss:n tuottamat

T-76.5158 SEPA - Pariohjelmointi 7 (7) 3.3. Implementation 2 arvot, jotka eivät näytä poikkeavan kovin paljoa CCCC:stä muuten kuin että Javancss:n tulokset vaikuttaisivat olevan huomattavasti suppeamia. Jlint:n kanssa oli pahoja ongelmia emmekä onnistuneet kääntämään sitä windows:lle. Eikä netistä saatavassa paketissa näemmä ollut binaareita valmiina vaikka niin ohjelma kotisivulla väitettiin. Tutkitaan vielä jatkossa saataisiinko ohjelma käännettyä tai löytyisikö valmiit binaarit jostain. 3.4. Yhteenveto A summary of the experiences. Evaluation of the suitability of the practice to your project, and ideas of the reasons if the practice was not suitable in this project.