Johdanto 1. Projektille esiteltävä versio. Kokemukset ja muutokset 3. Projektille esiteltävä versio. Iteraatio 2., suunnitelma

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

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

T SEPA päiväkirja

Tutkittua tietoa. Tutkittua tietoa 1

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

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

COTOOL dokumentaatio Testausdokumentit

Napa vertaistestaus TESTISESSIO-CHARTER. BetaTeam

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

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

ELM GROUP 04. Teemu Laakso Henrik Talarmo

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

LAATURAPORTTI Iteraatio 1

Ohjelmistojen mallintaminen. Luento 11, 7.12.

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

Kuopio Testausraportti Kalenterimoduulin integraatio

Kurssin sisältö. Kurssilla vähemmän. Johdatus ohjelmistotekniikkaan. Mitä on ohjelmistotekniikka? Miten ohjelmistoja suunnitellaan ja toteutetaan?

Harjoitustyön testaus. Juha Taina

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

15. Ohjelmoinnin tekniikkaa 15.1

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

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

15. Ohjelmoinnin tekniikkaa 15.1

Työkalut ohjelmistokehityksen tukena

SEPA päiväkirja. BetaTeam. Kauko Huuskonen, 54396W, Hannu Kankaanpää, 58605L,

Pariohjelmointi. Ryhmä Rajoitteiset

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Kuopio Testausraportti Asiakkaat-osakokonaisuus

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

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Harjoitus 3 Case Face Wash. Raine Mäki, Laura Takkinen, Marika Östman, Otto Kataja

T SEPA päiväkirja

Onnistunut ohjelmistoprojekti

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Automaattinen yksikkötestaus

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

Enterprise SOA. Nyt. Systeemi-integraattorin näkökulma

11/20: Konepelti auki

13/20: Kierrätys kannattaa koodaamisessakin

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

Tapahtuipa Testaajalle...

Koodaamme uutta todellisuutta FM Maarit Savolainen

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

Ohjelmoinnin peruskurssien laaja oppimäärä

Test-Driven Development

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

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

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

Project group Tete Work-time Attendance Software

Ohjelmoinnin perusteet, syksy 2006

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

Projektisuunnitelma. (välipalautukseen muokattu versio) Vesiprosessin sekvenssiohjelmointi ja simulointiavusteinen testaus

IT2015 EKT ERITYISEHTOJA OHJELMISTOJEN TOIMITUKSISTA KETTERIEN MENETELMIEN PROJEKTEILLA LUONNOS

Good Minton QA Raportti Iteraatio 1 Sulkapalloliiton Kilpailujärjestelmä

Project group Tete Work-time Attendance Software

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

Projektiryhmä Tete Work-time Attendance Software. Henkilökohtainen SE harjoitus: loppuraportti

T Ohjelmistoprojektien hallinta Tehtävän 3 ratkaisu. Maija Kangas, Kimmo Stålnacke ja Outi Syysjoki

Prolog kielenä Periaatteet Yhteenveto. Prolog. Toni ja Laura Fadjukoff. 9. joulukuuta 2010

Onnistunut ohjelmistoprojekti

T SEPA - CALIBERRM Aleksi Airola, 39054L Kaarlo Lahtela, 61439P

Sote-uudistuksen kriittisiä onnistumisen edellytyksia Jari Stenvall HTT Hallintotieteen professori Johtamiskorkeakoulu/Tampereen yliopisto

11.4. Context-free kielet 1 / 17

COTOOL dokumentaatio Riskiloki

Kombinatorinen optimointi

Good Minton Sulkapalloliiton Kilpailujärjestelmä SEPA: Heuristinen arviointi

LIITE 1 HANKITTAVAT KOULUTUKSET POHJOIS-POHJANMAAN ELY-KESKUS Koulutuksen nimi ja koulutuskuvauksen numero Paikkakunta

Valintamuotoilu ja nudging vaikuttamisen keinona I Markus Kanerva Kokeileva Suomi -hanke / Politiikka-analyysiyksikkö

COTOOL dokumentaatio SEPA: Refaktorointi

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

1 Tehtävän kuvaus ja analysointi

TESTIRAPORTTI - VYM JA KANTA Virtuaaliyhteisöjen muodostaminen Versio 1.0

Opiskelija osaa suunnitella ohjelmiston toteuttamisen, toteuttaa, testata ja dokumentoida ohjelmiston.

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

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

PROJEKTIN OHJAUS JA SEURANTA JOUNI HUOTARI

Data Sailors - COTOOL dokumentaatio Riskiloki

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

Teknologiaa arjen ehdoilla? Ikääntyneiden kokemuksia kotiteknologiakokeilusta

Figure 1: Projektipäälliköt Juha-Pekka Honkavaara ja Juha Mattila

Algoritmi III Vierekkäisten kuvioiden käsittely. Metsätehon tuloskalvosarja 7a/2018 LIITE 3 Timo Melkas Kirsi Riekki Metsäteho Oy

Convergence of messaging

Rakenteisen oppimateriaalin tuottaminen verkossa esimerkki Rhaptos. Antti Auer Koordinaattori, HT Jyväskylän yliopisto Virtuaaliyliopistohanke

Ryhmäharjoitus III: Mitä on koodaaminen? A. TIEY4 Tietotekniikkataidot, kevät 2017 Tehdään ryhmäharjoitustunnilla 20.3.

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

T Projektikatselmus

Simulaattoriavusteinen ohjelmistotestaus työkoneympäristössä. Simo Tauriainen

Laadunvarmistusdokumentti

Test-Driven Development

Käytännön haasteita ja ratkaisuja integraation toteutuksessa. Jukka Jääheimo Teknologiajohtaja Solita Oy

Ohjelmiston toteutussuunnitelma

Tähtitieteen käytännön menetelmiä Kevät 2009

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

Miten minun tulisi toimia, jotta toimisin oikein?

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

COTOOL dokumentaatio SEPA: Käytettävyystestaus

Menetelmäraportti Ohjelmakoodin tarkastaminen

Omia appeja AppInventorilla. Jenna Tuominen Resurssikeskus Linkki, LumA, HY

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

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

Transkriptio:

SEPA päiväkirja BetaTeam Juho Mäkinen, 57796V, jvmakine@cc.hut.fi Jari Leppä, 42710V, jleppa@cc.hut.fi Versio Pvm Tekijä Kuvaus 0.1 10.11.2005 Juho Mäkinen Johdanto 1. 0.2 11.11.2005 J.Mäkinen, Käytäntöön soveltaminen 2. J.Leppä 1.0 14.11.2005 Juho Mäkinen Projektille esiteltävä versio 1.1 01.12.2005 J Mäkinen Kokemukset ja muutokset 3. 2.0 05.12.2005 J Mäkinen J Mäkinen 2.1 17.01.2006 J Mäkinen 2.2 13.02.2006 Projektille esiteltävä versio Iteraatio 2., suunnitelma Iteraatio 2. kokemukset

SEPA päiväkirja Pariohjelmointi Juho Mäkinen, 57796V & Jari Leppä, 42710V Sisältö 1. Johdanto 2. Käytäntöön soveltaminen 3. Kokemukset 1. Johdanto Me valitsimme SEPA aiheeksemme pariohjelmoinnin. Tämä on ohjelmointitekniikka jossa kaksi kehittäjää toimii saman tietokoneen ääressä, toinen aktiivisesti ohjelmoiden ja toinen vierestä seuraten ja kommentoiden. Ohjelmoijat vaihtavat säännöllisin väliajoin roolejaan, ja näin ohjelmakoodi syntyy ohjelmoijien tiiviin yhteistyön tuloksena. Pariohjelmointi on osa laajempaa Extreme Programming käytäntöperhettä. Katsomme että pariohjelmointi tuo monenlaisia hyötyjä ohjelmistokehitykseen. Virheiden määrä ohjelmakoodissa vähenee, kun koodia tarkkailee kaksi silmäparia yhden sijasta. Myös vaikeat solmukohdat ratkeavat helposti kun niitten ratkaisusta voi keskustella parin kanssa ja vaihtaa erilaisia mielipiteitä erilaisten ratkaisumenetelmien hyödyllisyydestä. Parhaimmillaan pariohjelmointi on silloin kun toinen ohjelmoija on huomattavasti kokeneempi kuin toinen. Tällöin ohjelmoijien välillä on eräänlainen mestari oppipoika -suhde, jolloin kokemattomampi ohjelmoija pääsee näkemään miten kokenut kollega ratkaisee erilaisia käytännön ongelmia. Myös kokenut ohjelmoija saattaa saada kokemattomammalta uudenlaisia ratkaisuehdotuksia joita hän ei ole aiemmin osannut ottaa huomioon. Pariohjelmointi edesauttaa hyvää työmoraalia ja motivaatiota, halukkuus pitää taukoja kesken työn on pienempi ja fokusoituminen ongelmanratkaisuun on korkeampi. Pariohjelmointiin liittyviä artikkeleita olemme lukeneet internet sivulta http://www.pairprogramming.com/. Erityisesti Professori Randall W. Jensen:in artikkelia osoitteessa http://www.stsc.hill.af.mil/crosstalk/2003/03/jensen.html pidimme erittäin informatiivisena. Tarkastelimme myös artikkelia: Wikipedia, Pair Programming http://en.wikipedia.org/wiki/pair_programming

2. Käytäntöön soveltaminen Hajautettu projektimme aiheuttaa haastetta pariohjelmoinnin käytäntöön soveltamisessa. Projektillamme ei ole vakituista yhteistä toimipaikkaa, kuten esimerkiksi oikeassa työelämässä yleensä on. Asiakkaamme on kuitenkin antanut käyttöömme yhden kannettavan työaseman, joka tässä tapauksessa korvaa puutetta. Toinen rajoitteemme on, että projektiryhmässämme on vain kolme kehittäjää. Kolme on sekä pieni että pariton lukumäärä. Päätimme edellä mainituista huolimatta testata menetelmää tässä projektissa, koska oletamme sen kuitenkin antavan kokemusta kyseisestä käytännöstä tämänkin kaltaisessa ympäristössä. Projektimme teknologiassa on osuuksia, joista ei kenelläkään ole tietämystä. Päätimme soveltaa pariohjelmointia näissä kohteissa. Myös testauksessa näimme mahdollisuuden hyödyntää paritestausmenetelmää. Lopuksi myös integraatiovaiheessa aiomme soveltaa pariohjelmointia. Pariohjelmoinnin ajatus on, että toinen parista on aktiivinen ja toinen häntä tukeva ohjelmoija. Roolit vuorottelevat sessiosta toiseen. Sessio projektissamme tarkoittaa kahden tunnin yhtämittaista työskentelyjaksoa, jonka jälkeen roolit vaihdetaan. Uuden työjakson alussa roolit on aina vaihdettava. IMPLEMENTAATIO I Suunnitelma Viikolla 46 Ohjelmointi; Fortran osuuksia; asiakkaan nykyjärjestelmän ohjelmakoodin muokkausta Systeemi-integraatio o Kauko ja Raine Testaus; buildin integraatiotestaus Viikolla 47 o Kauko ja Raine Testaus; Integraatiotestaus Viikolla 48 o Kauko ja Raine Testitapausten suunnittelua Testitapausten suunnittelua

IMPLEMENTAATIO II Suunnitelma Viikolla 3 ja 4 o Requirement F6: Query generating for specific data objects by user options Viikolla 3 ja 4 o Requirement F7: Query to partially match an object s contents Viikolla 4 ja 5 o Tietokannan valinta Napan käyttöliittymässä Viikolla 6 ja 7 o Paritestaus o Kauko Juho 3. Kokemukset ja muutokset 3.1 Projektin suunnittelu Projektin aloitusvaiheessa SEPA aihe ei ollut vielä selvillä. Uskomme myös, että pari ohjelmointi metodia ei olisi voinutkaan hyödyntää projektin suunnittelussa. 3.2 Implementaatio 1 Saimme myönteisiä kokemuksia niistä ohjelmointiosuuksista, joihin olimme aikoneet soveltaa pari-ohjelmointia. Erityisesti asiakkaan Fortran koodin muokkaamisessa oli eniten etua tästä menetelmästä, koska kyseinen ohjelmointikieli ei ollut kummallekaan entuudestaan tuttua. Taustatekijöistä voimme todeta, että molemmat ohjelmoijat olivat samalla lähtötasolla Fortranin suhteen. Kokonaisuudessaan koko asiakkaan järjestelmä oli tuntematon, joten menetelmä tarjosi hyötyä myös siihen tutustumisessa. Käytännössä tuli todetuksi, että inhimillisistä syistä johtuen ei aina ollut selkeää roolijakoa aktiivisen ja tätä tukevan ohjelmoijan välillä. Toisinaan syntyi tilanne, että näppäimistöllä oli enemmänkin kuin sallitut kaksi kättä. Edellä mainittuun pyrittiin kuitenkin reagoimaan.

Koska kumpikin ohjelmoija oli samalla kokemustasolla, niin tässä tapauksessa ei voitu havaita mestari-oppipoika pariohjelmointihyötyjä. Yleisesti ottaen projektissa käytettiin Java-ohjelmointikieltä. Koska molemmat ohjelmoijat olivat kokeneita Java ohjelmoijia, niin pariohjelmointia ei nähty välttämättömäksi soveltaa näissä osuuksissa. Toisaalta tätä rajoitti myös hajautetun projektin luonteesta johtuvat olosuhdetekijät. Tekemämme suunnitelma ei täysin täsmännyt siihen, miten toteutus syntyi. Ohjelmointitehtävät Fortranin osalta suoritettiin, kuten oli ajateltu. Systeemi-integraatiota ei kuitenkaan varsinaisesti sisältynyt projektiin, vaikka olimme niin olettaneet. Testauksen osalla aiheutui suurimmat poikkeamat suunnitelmaan, koska esimerkiksi testitapausten suunnitteluun ei käytännön syistä voitu käyttää tätä filosofiaa. Projektin osalta testaus viivästyi joka tapauksessa, ja lopulta ei jäänyt riittävästi aikaa käydä tätä menetelmää lävitse. Toisessa vaiheessa meillä on enemmän siinä tarvittavia resursseja toteutuksen suunnitteluun. 3.3 Implementaatio 2 Kokemuksemme toisella iteraatiokierroksella olivat suurelta osin saman kaltaisia kuin ensimmäisellä kierroksellakin. Java ohjelmointikieltä sisältäneet ohjelmointiosuudet toteutettiin erillistyönä kuten aiemminkin. Fortrania ja C-kieltä käsittäneet osat suoritettiin osittain pariohjelmoiden, koska kyseiset kielet eivät olleet kovinkaan tuttuja. Suurin osa käytetystä pariohjelmointiajasta kohdistui ohjelmavirheiden metsästämiseen, jolloin toinen pariohjelmoija toimi koodin review osapuolena. Esimerkkinä mainittakoon Fortrankoodissa ollut virhe, jonka löytäminen oli poikkeuksellisen hankalaa yksinään toimineelle ohjelmoijalle havaittiin pariohjelmoidessa hyvin tehokkaasti. Suunnitelma ei toteutunut aivan täsmällisesti, koskien ennakkoon oletettuja aihealueita. Suunnitelmaan aiheutti eniten poikkeamaa ennakoimaton EXE käännösongelma, joka aiheutti päänvaivaa kehittäjille. Tässä pariohjelmointia käytäntöön sovellettaessa ongelma saatiin kuitenkin hyvin haltuun. Implementoiduista vaatimuksista toteutettiin pariohjelmointimetodia käyttäen F6 (Requirement F6: Query generating for specific data objects by user). Tietokannan valinta Napan käyttöliittymästä ratkesi (Requirement F16) samassa yhteydessä ponnisteltaessa EXE käännöksen kansa. Paritestauksen osalta emme odotuksistamme huolimatta saaneet käytännön kokemuksia. Syynä tähän keskeisimmin saattoi olla koordinoinnissa olleet puutteet projektin tehtävien jakautumisessa, josta emme syytä kuitenkaan mitään osapuolta.

3.4 Yhteenveto Sepan aikataulusta johtuen, emme päässeet soveltamaan pariohjelmointia täysipainoisesti 1. implementaatiossa. Käyttöönottaminen tapahtui vasta ensimmäisen iteraatiokierroksen puolivälissä. Toisen kierroksen aikana olemme ottaneet menetelmän alusta lukien huomioon. Eritoten uuteen järjestelmään perehdyttäessä, totesimme pariohjelmoinnista olevan eniten hyötyä. Menetelmä todettiin joka tapauksessa tutustumisen ja kokeilemisen arvoiseksi. Toisen kierroksen kuluessa pääsimme hyödyntämään pariohjelmointia huomattavasti konkreettisemmin. Myös jälkimmäisessä iteraatiossa kokemukset olivat vähintään yhtä myönteisiä kuin aiemmin. Tulevaisuutta silmällä pitäen kokeilusta jäi hyvä maku. Miettimisen aihetta tuotti kuitenkin se, että onko usein järkevää asettaa kahta ohjelmoijaa saman ongelman kimppuun. Perinteinen individuaalinen ohjelmointitapa saattaa olla silti mahdollisempi soveltaa kuin pariohjelmointi. Työn tuottavuus voi olla kahden summaa pienempi, silloin kun käsillä oleva ongelma ei ole kovin monimutkainen.