OTM viikoilla 18 ja 19 Ma 27.5: Vierailuluento Risto Kurki-Suonio (Juridiikka) Vappu peruutettu: luento peruutettu vappuaattona harjoitukset kuitenkin normaalisti Ma 4.5: Viimeinen varsinainen luento tuotteenhallinta kertaus (tulosta luentomateriaalisivulta kertausbingo-lomake) To 7.7: viimeinen luento, Riku Granat, globaali ohjelmistokehitys Harjoitustyön palautuksen takaraja pe 8.5 klo 16 Tentti: 14-05-2009 klo 17-20 1 Tuotteenhallinta Esimerkki kehityssyklistä Johdanto: tuotteenhallinnan osa-alueet Komponentit, konfiguraatiot ja julkaisut Versioituminen Sovelluksen variointi Muutosten hallinta Työkalut Yhteenveto 2
Tuotteenhallinta Tuote käsittää niin koodin kuin siihen liittyvät vaihetuotteet ja tukidokumentaation (sekä myös testitapaukset, testiympäristöt, komentotiedostot jne...) Tuotteet kehittyvät ajan kuluessa (versioituminen) Erilaisia toimituskonfiguraatioita eli tuotejulkaisuja (release, build). Iteratiivisesti kehitettäessä tuotejulkaisuja tulee paljon. Tuotteenhallinta: tuoterakenteen monimutkaisuuden hallitsevat menettelytavat Komponenttien hallinta (versiot) Konfiguraatioiden hallinta (versiot) Muutosten tekeminen Kurinalainen hallintaprosessi Tuotteenhallinnan merkitystä korostavia asioita Iteratiivinen kehitys, ketterä kehitys (jatkuva integrointi, Test Driven Development, koodin yhteinen omistajuus) Hajautettu kehitys Tuotevariaatiot, tuoteperheet 3 Tuotekehitysnäkökulma vs. asiakasnäkökulma Tuotekehitysprosessin kannalta keskeisin tavoite on antaa tuotekehitystiimille stabiili ja kontrolloitavissa oleva ympäristö => versionhallinta, pelisäännöt, työskentely-ympäristö, testiversioiden rakentaminen. Asiakasprosessin (toimitusten) kannalta keskeisin tavoite on asiakastoimitusten konfiguraatioiden hallinta: mitä tarkkaan ottaen asiakkaalle toimitetaan / on toimitettu, miten toimitettava kokonaisuus kootaan ja paketoidaan. Joku #@! on muuttanut moduulia X siten, että se ei enää toimi (kuka, milloin). Korjattu virhe ilmaantuu uudelleen. Kehitetty ja testattu piirre katoaa. Versioräjähdys (useita korjauksia samaan moduuliin samanaikaisesti). 4
Tuoteenhallinnan ongelmia Ongelma asiakkaalla X, tuote Y, versio a.b.c On pystyttävä rakentamaan versio a.b.c (konfiguraation versio, komponenttien versiot). Kun korjaus on suunniteltu ja tehty syntyy muutettujen komponenttiversioiden uudet versiot ja tuotteen uusi versio. On vielä aikamoinen urakka selvittää: Missä muissa korjattujen komponentien versioissa esiintyy sama virhe. Johtaako virheen korjaus muutoksiin virheellistä komponenttia hyödyntäneissä komponenteissa. Ja lopulta, kun kaikki muutettavat komponentit on löydetty: mihin muille asiakkaille toimitettuihin tuotteen versioihin korjaukset vaikuttavat. Seuraavia ongelmatilanteita ei siis pitäisi syntyä Tuotteen versiota X on päivitetty, versio Y lakkaa toimimasta. Asiakkaan raportoima virhe on korjattu, mutta asiakas ei pysty ottamaan järjestelmän korjattua versiota käyttöön, koska hänellä on liian vanha versiolaitteistosta/ käyttöjärjestelmästä/ tietokantajärjestelmästä jne... Moduulin X versiosta Y on löytynyt vakava virhe. Mille asiakkaille pitää toimittaa korjattu versio? 5 Johdanto: tuotteenhallinnan osa-alueet (Kuva 13.1) Komponentit Tuotteenhallinta Konfiguraatiot - Versiointi: Komponentit mitä versioita on olemassa, Konfiguraatiot - Versiointi: mitä versioita on olemassa, miten -vanhoihin Versiointi: mitä versioita versioihin on olemassa, päästään - Versiointi: mitä versioita on olemassa, miten vanhoihin versioihin päästään miten vanhoihin miten versioihin päästään päästään käsiksi... käsiksi... käsiksi (esimerkiksi tuottamalla ne - komponentti tämä on, käsiksi uudelleen)... (esimerkiksi tuottamalla ne - Identifiointi: mitä ominaisuuksia mikä sillä komponentti on,... tämä on, - Identifiointi: mikä konfiguraatio tämä on, - Tuottaminen: millä työkalulla ja miten uudelleen)... mitä komponentteja ja komponenttien mitä ominaisuuksia sillä on,... komponentti tuotetaan (esimerkiksi versioita on asiakkaan x järjestelmän - Identifiointi: mikä konfiguraatio tämä on, - Tuottaminen: kääntäjän versio millä ja käännöskomento). työkalulla ja miten tietyssä versiossa. - Muutosten hallinta: miten estetään mitä komponentteja - Tuottaminen: miten asiakkaan ja komponenttien x komponentti samanaikainen tuotetaan muutosten teko(esimerkiksi konfiguraatio a.b.c saadaan Toimintatavat komponenttiin, mitä muutoksia on tehty versioita rakennettua. on asiakkaan x järjestelmän kääntäjän... versio ja käännöskomento). - Komponenttien välisten riippuvuuksien tietyssähallinta versiossa. (yhteensopivuus) - Vastuut Muutosten ja toimintavaltuudet. hallinta: miten estetään - Tuottaminen: - Muutosten hallinta: miten mihinasiakkaan x samanaikainen muutosten teko komponentteihin ja niiden versioihin ehdotettu muutos vaikuttaa, mihin - Miten komponenttiin, vaihetuotteet mitä muutoksia siirtyvät vaiheesta konfiguraatio on tehty toiseen. a.b.c saadaan konfiguraatioihin muutos vaikuttaa... rakennettua. - Miten... uudet versiot hyväksytään - Komponenttien ja julkistetaan. välisten riippuvuuksien Toimintatavat - Miten -muutosesitykset Vastuut ja toimintavaltuudet. ja virheraportit hallinta tehdään (yhteensopivuus) ja käsitellään. - Miten vaihetuotteet siirtyvät vaiheesta toiseen. - Muutosten hallinta: mihin - Miten uudet versiot hyväksytään julkistetaan. - Miten -arkistointi Miten muutosesitykset ja javarmistuskopiointi virheraportit tehdäänkomponentteihin käsitellään. hoidetaan. ja niiden versioihin - Miten arkistointi ja varmistuskopiointi hoidetaan. -... -... ehdotettu muutos vaikuttaa, mihin konfiguraatioihin muutos vaikuttaa... 6
Komponentit, konfiguraatiot, julkaisut (~Kuva 13.2) Konfiguraatio X Komponentti A Komponentti B Konfiguraatio Y 7 Hallinta-alkio (Kuva 13.3) hallinta-alkio komponentt i konfiguraatio 1 on versio versio 1 on versio komponentin versio konfiguraation versio 8
Vaihetaso (baseline) (Kuva 13.5) Termiä käytetään useilla eri tavoilla, yleisimmässä merkityksessä mikä tahansa sovittu kiinteä lähtökohta seuraavaksi tehtävälle työlle. komponentti A B C D E F konfiguraatio, baseline, vaihetaso baseline Muita termejä: release (julkaisu), yleensä asiakkaalle toimitettava build, mikä tahansa suoritettava vaihetaso merkkaus, tagging, julkaisuun liittyvien versioiden merkkaaminen versionhallintatyökalussa 9 Versionhallinta Kaikilla hallinta-alkioilla on versio Versionumero on 1-4 numeroinen (1.), esimerkiksi 1 taso on jos on tehty uudelleen suurimmalta osalta 2 taso kertoo jos on tehty toiminnallisia muutoksia 3 taso kertoo virheiden korjaamisesta (4 taso on tuotekehityksen välitallennuksia varten) Hallitaan versionhallintatyökaluilla Voidaan käyttää myös hallittavia hakemistorakenteita ja sovittuja toimintatapoja 10
Versioituminen (Kuva 13.4) pätee kaikkiin hallinta-alkioihin rinnakkainen versio=variaatio peräkkäinen versio=revisio..2.1 2.0.2.2 11 Sovelluksen variointi Sovelluksen ydin ja sovelluslogiikka Perussovellus Versionhallinnalla Asiakaskohtaiset toiminnallisuudet ja parametrit Useita sovellusvariaatioita -> hallinta vaikeutuu Mietittävä, mitä valintoja pitää pystyä tekemään suoritusaikana (järjestelmää pysäyttämättä) järjestelmää käynnistettäessä asiakaskohtaista konfiguraatiota luotaessa... Asiakaskohtaiset parametrit Asiakaskohtaiset toiminnallisuudet Sovelluslogiikka Sovelluksen ydin (sovelluskehys) 12
Sovellusvariaatioiden luominen Versionhallinta erilaisia variaatioita komponenteista erilaisia komponenttikonfiguraatioita Ehdollinen kääntäminen Kääntäjän parametrit Kompleksista hallita Koodigenerointi Käyttöjärjestelmä / ympäristövariaatiot Periyttäminen ja koostaminen Erilaiset käyttäytymisvariaatiot Tuotekohtaiset konfigurointi yms. tiedostot Käyttäjäkohtaiset muutokset... 13 Muutosten hallinta (Kuva 13.6) M uutospyyntö, vikaraportti M uutospyynnön hyväksyminen..2.1 Muutoksen toteuttam inen 2.0 2.0 2.0.2.2 Testaus ja hyväksyminen 2.1 2.1 2.1 14
Muutosten hallinta (Kuva 13.6) M uutospyyntö, vikaraportti M uutospyynnön hyväksyminen..2.1 Muutoksen toteuttam inen 2.0.2.2 Testaus ja hyväksyminen 2.1 15 Työn kulku projektissa (esimerkki) kehitystiimi 1) muutettavat komponen tit Versionhallinta Työn Change allatasks olevat komponentit 2) muutetut komponentit testing OK uusi "baseline" 3) palaute Koostaminen (build) & automaattiset testit "Sopiva kooste" "release candidate" Järjestelmätestaus testing OK julkaisu (release) build manager" testaajat 16
Työkalut Versioituminen (historiaa: SCCS, RCS) PVCS, CVS, Subversion, Git, Source Safe, Perforce... Konfiguraatioiden hallinta Komentotiedostot (Shellscript), Make, Ant, Maven... Tuotteenhallintatyökalut ClearCase, CM-Synergy (Continuus) Toimintatavat, prosessi Komentotiedostot, sähköposti, asianhallintajärjestelmät (work flow management) Bugzilla, Jira... 17 Lopuksi Tuotteenhallinnassa on paljon tylsää byrokratiaa, mutta...tuotteenhallinta helpottaa elämää Laatujärjestelmä määrittelee hallinnan yleisellä tasolla Tuotteenhallinnan menettelyt ovat usein projekti- ja/tai tuotelinjakohtaisia => tuotteenhallintasuunnitelma (voi olla myös osana projektisuunnitelmaa) Pyritään mahdollisimman näkymättömään byrokratiaan, jotta se ei häiritse vaan helpottaa työtä ISO 9001 vaatii muodollisia menettelyitä muutostenhallintaan, esimerkiksi Tiedettävä jokaisen komponentin nykyinen versio ja sen tila Tiedettävä jokaisen tuotejulkaisun komponenttien versiot Estettävä version samanaikainen päivittäminen Tunnettava tuotteen versiovaatimukset muiden tuotteiden suhteen Kirjattava jokainen muutos ehdotuksesta tuotteeseen tehtävään muutokseen asti 18