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

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

LAATURAPORTTI Iteraatio 1

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

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

Tutkittua tietoa. Tutkittua tietoa 1

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

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

Onnistunut ohjelmistoprojekti

Ohjelmistojen mallintaminen. Luento 11, 7.12.

T SEPA päiväkirja

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

Paperiteollisuuden perustutkinto

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

Leonardo-kesäpäivät. Kumppanuushankkeet Katriina Lammi-Rajapuro Miksi lähditte mukaan hankkeeseen?

Test-Driven Development

Siimasta toteutettu keinolihas

T SEPA päiväkirja

Project group Tete Work-time Attendance Software

Ohjelmointi 1. Kumppanit

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

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

T SEPA diary. Santtu Järvi (57729J), Matti Lehtomäki (55065D) 2. maaliskuuta 2008

Software product lines

Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen

Ääni Company Oy:n nopea kokeilu Helsingin kouluissa Helsingin koulujen nopeiden kokeilujen ohjelma II, kevätlukukausi 2019

Tieto- ja viestintäteknologinen osaaminen. Ryhmä 5

Onnistunut ohjelmistoprojekti

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

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

Power Steering for ATV

Valmentajailta Harjoitteita taitojen oppimiseen

KTKO104. Luento

Julkinen loppuraportti Happia Oy:n nopea kokeilu Oulun Hintan koulussa

Four Ferries Oy:n nopea kokeilu Helsingin kouluissa Helsingin koulujen nopeiden kokeilujen ohjelma II, kevätlukukausi 2019

Test-Driven Development

MITÄ ON GEMBA-WALK? Janne Metsolahti Työnjohtaja YIT Infra Oy

S14 09 Sisäpeltorobotti AS Automaatio ja systeemitekniikan projektityöt. Antti Kulpakko, Mikko Ikonen

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

Internet-pohjainen ryhmätyöympäristö

Onnistunut SAP-projekti laadunvarmistuksen keinoin

Työelämän taitojen harjoittelu teknologian käytettävyyden arvioinnin opetuksessa

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

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

Edtech kestää aikaa!

Projektisuunnitelma Viulu

MINNO Metropolia Loppukatselmus. Kotisatama Järjestelmät

Koodaamme uutta todellisuutta FM Maarit Savolainen

15. Ohjelmoinnin tekniikkaa 15.1

Miten toteuttaa onnistunut Klubin laatualoitteen workshop

statbeatmobile PROJECT REVIEW iteration 1

VERTAISRYHMÄMENTOROINTI HANKKEEN JUURRUTTAMISEN MENETELMÄNÄ

A4.1 Projektityö, 5 ov.

verkkojakson työskentelyn aloitus

Work Pilots Oy:n nopea kokeilu Helsingin kouluissa

Oppilaiden motivaation ja kiinnostuksen lisääminen matematiikan opiskeluun ja harrastamiseen. Pekka Peura

Mitä opittiin? Service Design työpajoissa. Helena Ahola,Taina Vuorela, Päivi Aro

Digitaaliset osallistumismahdollisuudet. työvälineet. Seurakehittäjien osaamisohjelma

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

4. Lausekielinen ohjelmointi 4.1

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

Järjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet

TYÖELÄMÄTAITOJEN OPPIMISTA YLIOPISTOSSA TUTKIMUSTULOKSIA JA KEHITTÄMISTARPEITA

statbeatmobile FINAL PROJECT REVIEW

Yrittäjyys ja innovaatiotoiminta ammatillisessa koulutuksessa ja korkeakouluissa (Yrtti-arviointi)

Automaattinen yksikkötestaus

Tehokkaiden strategioiden identifiointi vakuutusyhtiön taseesta

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

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

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

LAATUDOKUMENTTI

Work Pilots Oy:n nopea kokeilu Helsingin kouluissa

COTOOL dokumentaatio Testausdokumentit

Erilaisille oppijoille selkeyttä jatkosuunnitelmiin

COTOOL dokumentaatio Riskiloki

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

ANTTI LÖNNQVIST JA MIIKKA PALVALIN NEW WAYS OF WORKING JA TIETOTYÖN TUOTTAVUUS

Työelämälähtöistä oppimista ympäristötehokkuuspajassa. Susanna Vanhamäki Lahden ammattikorkeakoulu

Koulun rooli verkostomaisessa yhteistyössä

SYSTEEMITYÖ. Tärkeitä sanoja

OPISKELIJAN MUISTILISTA

Te Startup-lukion pilottikoulut olette kyselleet meiltä runsaasti kysymyksiä, ja yritämme koostaa vastauksia niihin kaikkiin tähän dokumenttiin.

T Loppukatselmus

Kuopio Testausraportti Asiakkaat-osakokonaisuus

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut

A11-02 Infrapunasuodinautomatiikka kameralle

Ohjelmistotekniikka - Luento 2

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

17/20: Keittokirja IV

COTOOL dokumentaatio SEPA: Refaktorointi

Avoimen lähdekoodin kehitysmallit

SEPA Päiväkirja Coding Camp T Ohjelmistotuotannon erikoiskurssi (pakollinen osa kurssia T korvauskäytäntö)

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Ohjelmointi 1 / syksy /20: IDE

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

15. Ohjelmoinnin tekniikkaa 15.1

8/20: Luokat, oliot ja APIt

Hajautettu Ohjelmistokehitys

Projektioppiminen. Materiaalitekniikan sohvaprojekti

KOKEMUSASIANTUNTIJA OPINTOJEN OHJAAJANA

Transkriptio:

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.