VERSIONHALLINTA PARIOHJELMOINTI Lari Ahti, 62634M Antti Kauppinen, 58390D
Versio Päivä Tekijä Kuvaus 0.1 26.10.2005 Kaarlo Lahtela Ensimmäinen versio 0.2 10.12.2006 Lauri Kiiski Suomennettu
3 (8 ) SISÄLLYS JOHDANTO... 4 MENETELMÄN KÄYTTÖÖNOTTO... 5 KOKEMUKSET JA MUUTOKSET... 6 Projektin suunnittelu... 6 Toteutus 1... 6 Toteutus 2... 6 Yhteenveto... 6
4 (8 ) JOHDANTO Pariohjelmointi on käytäntö, jossa kaksi ohjelmoijaa työskentelee samalla tietokoneella yhteistyössä. Pyrkimyksenä pariohjelmoinnissa on parantaa tuotetun koodin laatua sekä tehostaa tuottavuutta. Pariohjelmoinnissa ohjelmoijien tavoitteena on yhdessä tuottaa jokin ohjelman osa (esim. suunnitelma, algoritmi, koodi). Toinen ohjelmoijista on vastuussa ideoiden kirjoittamisesta, jolloin toinen ohjelmoija voi keskittyä tarkistamaan ja analysoimaan tuotettua materiaalia. Olennaista pariohjelmoinnissa on kummankin osapuolen aktiivinen osallistuminen ohjelmointiin, joten kirjoittavaa henkilöä on vaihdettava aika ajoin. Vahvuutena pariohjelmoinnissa on mahdollisuus tuotetun materiaalin jatkuvaan analysointiin korkealla tasolla, joten riski kehityksen ajautumisesta umpikujaan on pienempi kuin yksin ohjelmoitaessa. Lisäksi monien pienien virheiden havaitseminen on helpompaa henkilölle, joka ei joudu keskittymään ohjelman kirjoittamiseen. [1,2] Edellä mainittujen pariohjelmoinnista saavutettavien hyötyjen ohella erityisesti Dentego-projektissa on tavoitteena parantaa ja kehittää ohjelmoijien välistä kommunikaatiota ja yhteistyötä ohjelmoinnin osalta. Koska Dentegoprojekti on voimakkaasti hajautettu, pystytään pariohjelmointia soveltamalla pienentämään hajautuksesta aiheutuvia riskejä ja edesauttamaan laadukkaan ohjelmiston tuottamista. Lisäksi kokemukset pariohjelmoinnista ovat hyödyllisiä yksittäisille henkilöille, sekä uusien ohjelmointitaitojen oppimisen osalta että mahdollisesti työelämässä sovellettavan pariohjelmoinnin kannalta.
5 (8 ) MENETELMÄN KÄYTTÖÖNOTTO Dentego-projektissa pariohjelmointia sovelletaan hajautetun projektin sallimissa rajoissa. Tavoitteena on että puolet ohjelmointiin käytettävästä ajasta suoritettaisiin pariohjelmointina kaikkien kehittäjien toimesta. Ohjelmointipareja ei määrätä, koska projekti koostuu useista osista, jotka on mielekästä toteuttaa eri ohjelmointipareilla. Pariohjelmoinnin vaikutuksesta tuotettuun koodiin pyritään analysoimaan yhteistyössä Staattiset metodit SEPA parin kanssa. Näitä tavoitteita tarkennetaan kehittäjiltä saadun palautteen pohjalta projektin kuluessa, jotta pariohjelmoinnista saadaan mahdollisimman suuri hyöty projektiin. Pariohjelmoinnista pidetään viikkopalaverin yhteydessä lyhyt esitys perusperiaatteiden selvittämikseksi kaikille. Samalla kertaa käydään myös läpi alustavat parit, jotka suorittavat pariohjelmointia, sekä saadaan palautetta pariohjelmointisuunnitelmasta.
6 (8 ) KOKEMUKSET JA MUUTOKSET Projektin suunnittelu Toteutus 1 Toteutus 2 PP-iteraatio ei sisältänyt tarkoituksellista pariohjelmointia, vaikka joitain uusien teknologioiden prototyypityksia suoritettiin pareina. Suunnitelman mukaisesti pariohjelmoinnista pidettiin lyhyt esitys viikkopalaverissa. Samalla päätettiin järjestää viikoittain yhteisiä tilaisuuksia, joissa pariohjelmointa tehtäisiin. Näitä ehdittiin ensimmäisessä iteraatiossa järjestää kolme kertaa. Nämä tilaisuudet auttoivat ongelmanratkaisussa. Aina työskentelytapa ei varsinaisesti ollut pariohjelmointia vaan usein jonkinlaista ryhmätyötä. Tieto välittyi kätevästi ja keskittyminen työskentelyyn oli todennäköisesti parempaa. Myös viikkopalaveri voitiin kätevästi pitää tällaisen tilaisuuden yhteydessä, mikä oli hyvä, koska yhteisen ajan löytäminen koko ryhmälle ei aina ollut aivan helppoa. Myös koodikatselmointia tehtiin yhdessä näistä tilaisuuksista. Ongelmiakin kuitenkin esiintyi. Kannettavia ei aina ollut riittävästi. Projektin tekeminen ATK-luokassa ei olisi ollut mahdollista, koska tarvitaan koneeseen asennettu kehitysympäristö. Välillä aikaa kului myös ongelmiin työkalujen ja tekniikoiden kanssa. Kaikki ryhmän jäsenet eivät myöskään pitäneet tällaisia yhteisiä tilaisuuksia erityisen hyödyllisinä. Omasta mielestäni tästä kuitenkin oli hyötyä. Seuraavassa iteraatiossa voisi jatkaa näiden tilaisuuksien järjestämistä ja myös yrittää keskittyä enemmän varsinaiseen pariohjelmointiin, jotta aikaa kuluisi vähemmän muuhun ylimääräiseen. II Iteraatiossa pystyimme lisäämään pariohjelmoinnin määrää sekä kehittämään hyväksi havaittuja menetelmiä edelleen. Koska Maarin taloa ei koettu mielekkääksi työympäristöksi, siirrettiin ohjelmointi kokoontumiset T- talolle. Pariohjelmointia ei tarvinnut suorittaa ohjatusti, koska sopivat parit muodostuivat luonnollisesti suoritettavan tehtävän mukaan. Useamman henkilön kokoontumiset myös auttoivat tiedon välitystä sekä nopeuttivat virheiden korjauksia verrattuna hajautetusti toimimiseen. Koska useat ohjelmointitehtävät liittyivät eri osa-alueiden yhteensovittamiseen, erilaisten
7 (8 ) vaihtuvien ohjelmointiparien muodostaminen kokoontumisissa osoittautui tehokkaaksi työskentelykeinoksi. Yhteenveto Dentego-projektissa käytettiin pariohjelmointia parantamaan tuotettavan ohjelmiston laatua sekä auttamaan tiedonkulkua ryhmän jäsenten välillä. Pariohjelmointia pystyttiin soveltamaan varsinkin 2. iteraation aikana, jolloin ohjelmiston eri osa-alueiden yhdistäminen suoritettiin. Pariohjelmointia pyrittiin myös jatkuvasti kehittämään saatujen kokemuksien perusteella. Mielekkäimäksi tavaksi suorittaa pariohjelmointia muodostui yhteiset ohjelmointikokoontumiset, joissa ohjelmointiparit muodostettiin tehtävän mukaan. Lisäksi tapaamiset antoivat mahdollisuuden jakaa uusia ideoita sekä esitellä ohjelmiston eri osia. Tapaamiset olivat kohtalaisen vapaamuotoisia eikä ohjattua pariohjelmointia tarvinnut suorittaa. Tapaamisten yhteyteen voitiin myös sovittaa palaverejä tai katselmointeja. Suurimmiksi hyödyiksi pariohjelmoinnista Dentego-projektissa osoittautuivat nopeampi tiedonkulku, ohjelmiston laadun paraneminen sekä ohjelmiston eri osa-alueiden parempi tuntemus. Yhteiset tapaamiset antoivat mahdollisuuden ongelmien nopeaan selvittämiseen sekä mahdollistivat erilaisten näkökulmien esittelyn. Erityisesti tämä auttoi ohjelmiston rakenteeseen liittyvissä asioissa. Ohjelmiston laatu parani, koska tuotettu koodi on valmiiksi katselmoitu ohjelmointiparin toimesta. Erityisesti pienten ohjelmointivirheiden havainnointi helpottui jatkuvan katselmoinnin ansiosta. Ohjelman eri osaalueiden tuntemus kehittyi, koska pariohjelmointia hyödynnettiin ohjelmiston integraatiossa. Ongelmia pariohjelmoinnissa tuotti mielekkään toteutustavan löytäminen. Koska ryhmän jäsenillä ei ollut kattavaa kokemusta pariohjelmoinnista, aluksi pariohjelmointi koettiin hankalaksi tavaksi ohjelmoida. Pariohjelmoinnin hyödyt kuitenkin huomattiin projektin edetessä. Pariohjelmointi tekniikkana sopii myös paremmin ohjelmiston integraatiovaiheeseen, koska tuolloin testataan ja parannetaan eri osa-aluiden yhteistoimintaa. Pariohjelmointi Dentego-projektissa osoittautui hyödylliseksi menetelmäksi työskennellä. Myös ryhmän jäsenille pariohjelmoinnista oli hyötyä sekä suoranaisesti uudesta työskentely tekniikasta että uusista taidoista, joita opittiin pariohjelmoinni yhteydessä parilta.
8 (8 )
9 (8 ) VIITTEET [1] L. Williams, R. Kessler.2000 All I really nedd to know about pair programming I learned in kindergarten. Communications of the ACM. Volume 43 Issue. ACM Press. [2] K. Tong. Essential skills for agile development. 2004. Macau Productivity & Tech. ISBN: 9993776726.