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 J Leppä Kokemukset ja muutokset 3. 2.0 05.12.2005 J Mäkinen J Leppä Projektille esiteltävä versio
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. 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.
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 Viikolla 46 o Hannu ja Juho Ohjelmointi; Fortran osuuksia; asiakkaan nykyjärjestelmän ohjelmakoodin muokkausta Systeemi-integraatio Testaus; buildin integraatiotestaus Viikolla 47 Testaus; Integraatiotestaus Viikolla 48 Testitapausten suunnittelua o Hannu ja Juho Testitapausten suunnittelua
IMPLEMENTAATIO II Projektin toista vaihetta ei ole tällä hetkellä tarkoin määritelty osittain siksi, että projektimme on tutkimusluonteinen. Toisin sanoen riippuu ykkösvaiheen tuloksista ja kokemuksista, mitä jatkovaiheessa tullaan tai joudutaan toteuttamaan. Päivitämme tämän suunnitelman projektisuunnitelman tarkentumisen jälkeen. Täydennämme tätä suunnitelmaa toisen iteraation projektin suunnitteluvaiheessa. 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
Odotamme innokkaasti lisää kokemuksia toiselta iteraatiokierrokselta. 3.4 Yhteenveto Sepan aikataulusta johtuen, emme päässeet soveltamaan pariohjelmointia täysipainoisesti. Käyttöönottaminen tapahtui vasta ensimmäisen iteraatiokierroksen puolivälissä. Toisen kierroksen aikana otamme menetelmän alusta lukien huomioon. Eritoten uuteen järjestelmään perehdyttäessä, totesimme pariohjelmoinnista olevan eniten hyötyä. Menetelmä todettiin joka tapauksessa tutustumisen arvoiseksi.