Scrumin käyttö ketterässä sovelluskehityksessä 9.4.2008 Janne Kuha Manager, Java Services Descom Oy Janne Kuha Manager, Java Services janne.kuha@descom.fi Kuka? Descom Oy:llä, sitä ennen Wanadu Inc., Mountain View, CA, US 1
Descom? Liiketoiminta aluuet Lotus Notes/Domino Java/Java EE Portlet/Portal development Support Services Toimittanut yli 250 sovellusta, joilla yli 600 000 käyttäjää kuudella mantereella. Perustettu 1997 2006 liikevaihto n. 5.5M Noin 50 työntekijää IBM Premier Business Partner Viimeaikoina Vuoden 2006 IBM ohjelmistokumppani Jyväskylän vuoden yrittäjä 2007 Scrumin käyttö ketterässä sovelluskehityksessä 9.4.2008 Janne Kuha Manager, Java Services Descom Oy 2
Sisältö Mitä on Agile? Agile menetelmien tunnusmerkkejä Agile vs. perinteinen Scrum Roolit Välineet Prosessin eteneminen Sprint Päivittäinen Scrum palaveri Scrum visualisointi Testauksen merkitys alusta lähtien Haasteet MITÄ ON AGILE? Varmaankin useimmat kuulleet Agile menetelmistä, usein suomennettu termillä ketterät menetelmät. Agile Manifest (vapaasti suomennettuna) korostaa: Yksilöitä ja vuorovaikutusta enemmän kuin prosesseja ja työkaluja Toimivaa ohjelmistoa enemmän kuin kattava dokumentaatiota Yhteistyötä asiakkaan kanssa enemmän kuin sopimusneuvotteluita Muutoksiin vastaamista enemmän kuin suunnitelman noudattamista Vaikkakin oikealla olevilla asioilla on arvoa, me arvostamme vasemmalla olevia asioita enemmän. 3
Agile menetelmien tunnusmerkkejä Useimmissa menetelmissä on myös määritelty, että sovelluskehitys on iteratiivista, vaikka sitä ei erityisesti mainitakaan Agilemanifestissä. Asiakas määrittele mikä on hänelle tärkeintä. Läheinen yhteistyö asiakkaan kanssa. Matala organisaatio suhteessa projektitiimiin. Suhtautuminen t muutoksiin toteutustiimin t t tii i puolelta. llt Agile menetelmät (ainakin Agile manifestin mukaiset) puolestaan ottavat sen näkemyksen, että muutoksia tulee ja ne hyväksytään osana projektin etenemistä. Agile vs. perinteinen Ero Agile menetelmien käytöstä verrattuna perinteisempiin ohjelmistokehitysmenetelmiin on, että Agile menetelmiä käytettäessä rajalliset resurssit suunnataan sinne, missä niistä on eniten hyötyä. Käytännön tasolla siis toimiva ja laadukas ohjelmisto on se mihin keskitytään ja kaikki epäoleellinen pyritään jättämään pois. Ei tietenkään tarkoita, että asiakasvaatimuksista joustetaan (esimerkiksi dokumentaatio). 4
Scrum Tarjoaa hyvän lähtökohdan ja kehyksen sovelluksien kehittämisellä ottamatta liikaa kantaa siihen mitä työkaluja tai millä tavalla erityisesti sovelluksia kehitetään. Voidaan yhdistää muihin ketteriin sovelluskehitysmenetelmiin, joista tunnetuin extreme Programming. Scrum on sovelluskehitysmalli, jonka tarkoituksena on tarjota sovelluskehitysprojektista asiakkaalle paras mahdollinen hyöty. Muutoksiin vastaaminen. Scrum tarjoaa oivan pohjan sille, miten vaatimukset priorisoidaan ja miten sovelluksen kehittäminen etenee. Suomessa eniten Scrum osaajia suhteessa väkilukuun. Scrum roolit Product Owner Tekee päätökset projektin prioriteettien suhteen. Määrittelee vaatimukset. Yleensä asiakkaan edustaja Scrum tiimi Yhdessä Product Ownerin kanssa määrittelevät Sprinttien sisällöt. Tiimi on itseorganisoituva ja yhteinen vastuut tuotoksista. Scrum Master Toimii valmentajana tiimille. Huolehtii, ettei tiimin työlle ole esteitä. Eri asia kuin projektipäällikkö 5
Scrum välineet Product Backlog Lista sovelluksien kaikista toiminnallisuuksista, jotka halutaan toteuttaa. Toisin sanoen sovelluksen toteuttamattomat asiat. Yleensä sitä karkeammalla tasolla, mitä pidemmällä tulevaisuudessa asiat ovat. Sprint Backlog Lupaus siitä, mitä toteutustiimi aikoo toteuttaa seuraavan Sprintin i aikana. Sisältää tarkempiin osiin jaettuna Product Backlogista valitut asiat. Seurataan yleensä Sprint Burn Down graafin avulla. Molemmat priorisoituja listoja Vaiheet Product Backlogin luonti Sprint Planning Sprintit n kappaletta Päivittäinen Scrum palaveri Tuotoksien esittely Sprint Review Prosessin eteneminen 6
Sprint Yleensä noin neljän viikon (2 6vk) pituinen iteraatio, jonka aikana on tarkoitus kehittää sovellukseen joku joukko ominaisuuksia. Tehtävät toteutetaan prioriteettijärjestyksessä Sprintin jälkeen sovellus tulisi olla vietävissä tuotantoon, ts. (Kaikki) tehtävät toteutettu ja tiedossa Asiakkaan hyväksymä Testattu Dokumentoitu Valmis tuotantoon Ennen ja jälkeen Sprint Planning ja Sprint Review Päivittäinen Scrum palaveri Yleensä päivän alussa lyhyt palaveri, jonka avulla kyseisen päivän sisältö tulee kaikille selville. Pyritään kunkin osalta vastaamaan kolmeen kysymykseen Mitä teit eilen? Mitä teet tänään? Oliko esteitä, ongelmia tai haasteita? Palaverissa ei kuitenkaan pyritä ratkaisemaan näitä ongelmia. Kesto maksimissaan 15 minuuttia. 7
Scrum visualisointi Projektin tilan selvittäminen Burn Down graafi on helppo tapa seurata 100 projektin etenemistä 90 80 yleisellä tasolla. 70 60 Usein kullakin tiimillä on 50 40 oman tyylisensä graafi, joka 30 20 toistuu sprintistätoiseen. Scrum Burn Down graafi 10 0 1 2 3 4 5 6 7 8 9 10 Peruslinja Työmäärä jäljellä Testauksen merkitys alusta lähtien Useat Agile menetelmät myös määrittelevät, että laatu pitäisi rakentaa sisään sovellukseen, eikä jättää loppuun esimerkiksi testausvaiheeseen. Asiakkaan tarpeisiin vastaaminen ei siis voi myöskään onnistua puolivillaisella toteutuksella. Joka tapauksessa ohjelmiston ensimmäisessä versiossa tulee olemaan virheitä, oli testausta kuinkapaljon tahansa. 8
Haasteet Suomalaisessa liiketoimintakulttuurissa on usein se valitettava oletus, että asiakkaan riskien minimoimiseksi asiakkaan tulisi ostaa ohjelmistoja kiinteillä tarjouksilla. Kiinteä tarjouksia (fixed bid) on tietysti monenlaisia, mutta tässä kirjassa sillä tarkoitetaan tarjousta jolla kiinteät vaatimukset, kiinteä hinta ja usein vielä kiinteä aikataulu. Tarjouksessa on määritelty jollakin tasolla alustavat vaatimukset ja asiakas vaatii että toteuttava ohjelmistoyritys vastaa tarjoukseen sitovalla kustannusarviolla ja aikataululla. Muutoksia tulee joka tapauksessa. Kirja tulossa ;) Tehokas Java EE sovellustuotanto sovelluskehykset, kehitysmallit ja agileperiaatteet. Teos on suunnattu sovelluskehittäjille, jotka hallitsevat Java kielen perusteet ja joilla on halu siirtyä seuraavalle tasolle. Teos pohjautuu ketteriin (Agile) periaatteisiin ja sovelluskehyksiin, joiden avulla Java EE sovelluksia voidaan rakentaa ammattimaisemmin. Tietokantojen tehokas käsittely (mm. Hibernate ja Java Persistence API) Sovelluslogiikan rakentaminen (mm. Spring Framework Web palveluiden rakentaminen (mm. Wicket) Testaus (JUnit) Tärkeät kehitystyökalut (Maven, Eclipse ja Subversion) Docendo / WsoyPRO 9