Project group Tete Work-time Attendance Software Henkilökohtainen SE harjoitus: etenemisraportti Versionhallinta BitKeeper-työkalun avulla Tuomas Heino
Muutosloki Versio Pvm Tekijä Kuvaus 1.0 01.12.2003 Tuomas Heino Eka versio X2.0 04.04.04 Tuomas Heino
1.Arvionti I1-vaiheessa Menetelmän käyttö aloitettiin jo PP-vaiheessa, lokakuun alussa, jolloin sekö sen nopeahkosta käyttöönotosta että työvälineen tuntemattomuudesta johtuen törmättiin alussa sen ongelmiin kohtuullisen usein. Eniten hämmennystä on aiheuttanut versionhallinnassa olevien dokumenttien peilauksessa www-sivuille käytetyn skriptin ajoittainen yhteistyöhaluttomuus. Skripti on ajoittain unohtanut versionhallintatyökalun lisenssitiedot, joten I2-iteraation alussa siitä otetaan käyttöön uusi versio, jossa ongelma oletettavasti eliminoituu toisen lähestymistavan (sen sijaan että koko kannan peilataan push:lla, peilataan vain snapshot export:lla ja generoidaan seurantatiedosto) ansiosta. Toinen havaittu ongelma on työtiloissa olevien tiedostojen muuttaminen versionhallinnan ohi tätä on havaittu lähinnä dokumenttien osalta cygwin-ympäristössä. Ongelman voisi eliminoida muuttamalla työtilojen käytännön sellaiseksi, että tiedostot täytyy erikseen hakea kannasta lukemista/muuttamista varten. Tällaisesta ratkaisun hyöty voisi kuitenkin jäädä merkityksettömäksi sen aiheuttamiin hankaluuksiin nähden. Käytetyn työkalun hyödyistä muihin työkaluihin verrattuna ei ole tässä vaiheessa vielä tarkempia tietoja, sillä rinnakkaiset muutokset samoihin tiedostoihin ovat olleet vielä toistaiseksi harvinaisia. Toisaalta havaittujen ongelmien määrää (arviolta noin viittä erilaista ongelmaa esiintynyt kymmenkunta kertaa) voidaan pitää kohtuullisen pienenä. Tarkempi henkilökohtainen erottelu tehdyistä muutoksista on saatavilla(util/bk_prs_stat); alla vain yhteenveto muutoksista eri vaiheissa. Tarkempiin johtopäätöksiin kerätty tilastotieto ei vielä riitä ja henkilökohtainen tilasto tässä olisi liian helposti väärinymmärrettivissä. 1.1. Versionhallinnan käyttöastemetriikkaa projektin alkupuolella Vaihe Muutoskokonaisuuksia Muutoksia PP-iteraatio 99 207 I1-iteraatio 143 381 Taulukko 1 Ohjelmiston muutoksien jakautuminen eri iteraatioihin. Muutoksilla tarkoitetaan tässä muutoskokonaisuudessa olevien muutettujen tiedostojen lukumäärään summaa. 2.Arvionti projektin lopussa Eräänä syynä kehittyneemmän versionhallintatyökalun käyttöönotossa oli työmäärän säästäminen mahdollisissa yhtäaikaa muutettujen tiedostoversioiden yhdistelemisessä. Versionhallintatyökaluna käytetyn BitKeeper:n lokilta pystyy suurimmalta osin päättelemään miten hyvin tässä on onnistuttu, sillä siinä on merkinnät kaikista kerroista, jolloin se on hoitanut yhdistelyt automaattisesti sekä käsityönä hoidettujen yhdistelyjen osalta selkeähköt kommentit käsin yhdistelyn syistä. Tämä raportti toimitetaan vasta tässä vaiheessa (DE) johtuen kirjoittajan sairastumisesta flunssaan I3-vaiheen loppupuoliskolla ja kyseisen flunssan vielä palattua myöhemmin, joten tilastotietoja on sitten otettu mukaan myös DE-iteraation osalta.
2.1. Versionhallinnan käyttöastemetriikkaa koko projektin ajalta Vaihe Muutoskokonaisuuksia Muutoksia I2-iteraatio 335 866 I3-iteraatio 99 554 DE-iteraatio 68 195 Koko projekti 774 2304 Yhdistellyt versiot (merget) 180 242 Joista käsityönä yhdisteltyjä 39 Taulukko 2 Ohjelmiston muutoksien jakautuminen eri iteraatioihin. Muutoksilla tarkoitetaan tässä muutoskokonaisuudessa olevien muutettujen tiedostojen lukumäärään summaa (checkin:ien lukumäärä). 2.2. Kokemuksia ja johtopääköksiä Käsityötä (lähinnä käyttöön otettavien muutoksien valintsemista yhdistelyeditorissa) rinnakkaisesti muutettujen tiedostojen yhdistelyssä on siis tarvittu verrattain harvoin, 242:sta rinnakkaisesta muutoksesta vain 39:n (16%) tapauksessa on ohjelma kysynyt käyttäjältä ohjeita yhdistelyyn. Näistä yhdistelyistä suurin osa on ollut nopeita tehdä, mutta muutamissa tapauksissa kehittäjillä on ollut ongelmia ymmärtää joko tehtyjä muutoksia tai yhdistelyeditorin käyttöliittymää. Eniten käsityötä aiheuttanut tilanne oli koodaustyylin noudattamatta jättäminen tabulaattorin käytön osalta, jolloin BitKeeper ei suoraan tunnistanut muutoksen koostuvan sekä sisennys- että sisältömuutoksista (kehitysehdotus aiheesta lähetetty eteenpäin). Versionhallinnan käyttöönotto sujui PP-iteraatiossa aikataulun mukaisesti, mutta hieman suunniteltua työläämmin. Alunperin ajatuksena ollut IEEE Std 828-1998:n mukaisen versionhallintasuunnitelman ylläpito jätettiin tekemättä johtuen sen liian suuresta työmäärästä suhteessa projektin laajuuteen. Käytännössä henkilökohtainen SE-harjoitus rajattiin siis lähinnä ennalta tuntemattoman versionhallintajärjestelmän käyttöönottoon (alustava versionhallintasuunnitelma kirjoitettiin, mutta sen päivittämistä ei nähty tarpeelliseksi projektin kannalta). Muut arkkitehtuuriin liittyvät asiat rajattiin SE-harjoituksen ulkopuolelle, sillä niille oli projektissa nimetty toinen vastuuhenkilö. Projektin kuluessa ehdittiin törmätä muutamaan BitKeeperin tunnettuun bugiinkin, joista osaan tuli korjauksetkin projektin kuluessa. Korjatut versiot (3.0.3 ja 3.0.4) versionhallintatyökalusta otettiin käyttöön testipalvelimella korjattujen bugien mahdollisesti aiheuttamien ongelmien välttämiseksi. Yksittäisillä työasemilla päivityksiä ei tehty päivityksien riskialttiuden (työmäärän osalta windows-puolen cygwinosuuden asennus on välillä työlästä) takia. Lisäksi sekalaisia pieniä versionhallintaan liittyviä ongelmia esiintyi pääosin I1-vaiheessa ja I2-vaiheen alkupuolella. I3- ja DE-vaiheissa ei enää ilmennyt merkittäviä ongelmia versionhallinnan kanssa. Käytetty versionhallintatyökalu osoittautui jopa hieman ennakko-odotuksia paremmin viimeistellyksi tuotteeksi, joten voin suositella sen käyttöä muissakin projekteissa. Työelämässä CVS:n käyttöönottoa
seuranneena olen erittäin positiivisesti yllättynyt siitä, että projektin aikana BitKeeperin käytössä ilmaantuneiden ongelmien määrä ja vakavuusaste oli jopa pienempi kuin hieman suuremman pilottiprojektin ensimmäisen kuukauden aikana (kyseinen pilottiprojekti oli yhden kuukauden laajudeltaan ja työntekijöiden määrältään samaa suuruusluokkaa kuin nyt toteutettu järjestelmä).