Ketterä (agile) tietojärjestelmien suunnittelu Abrahamsson P, Conboy B and Wang X, Lots done, more to do: the current state of agile systems development research European Journal of Information Systems 18, 2009, 281-284 Lan Cao, Kannan Mohan, Peng Xu and B Ramesh, A framework for adapting agile development methodologies. European Journal of Information Systems 18, 2009, 332-343 Li Jiang and Armin Eberlein, Towards A Framework for Understanding the Relationships between Classical Software Engineering and Agile Methodologies APOS 2008 ACM Workshop 10.3.2014 Pirkko Nykänen 1
Mitä ketteryys on? perusteluna on jatkuva muutos ohjelmistokehityksen tärkeimmät asiat kiteytetty 4 arvoon 12 pääperiaatetta kertovat tavat miten arvot realisoidaan Käytännöt (engineering practices) kertovat miten periaatteet toteutetaan käytännössä ketterät menetelmät ovat käytäntökokoelmia, jotka sopivat tietyn tyyppisiin projekteihin ja tietyn tyyppisille organisaatioille Pirkko Nykänen 2
AGILE MANIFESTO 2001 Me etsimme parempia keinoja ohjelmistojen kehittämiseen tekemällä sitä itse ja auttamalla siinä muita Ketteryyden 4 arvoa Arvostamme: Yksilöitä ja vuorovaikutusta enemmän kuin prosesseja ja työkaluja Toimivaa sovellusta enemmän kuin kokonaisvaltaista dokumentaatiota Asiakasyhteistyötä enemmän kuin sopimusneuvotteluja Muutokseen reagoimista enemmän kuin suunnitelman noudattamista www.agilemanifesto.org Pirkko Nykänen 3
Ketteryyden 12 periaatetta 1 Tärkeintä on täyttää asiakkaan vaatimukset julkaisemalla jatkuvasti ja aikaisin uusia hyödyllisiä versioita ohjelmistosta 2 Hyväksytään ja otetaan vastaan muuttuvat vaatimukset, jopa kehityksen loppuvaiheessa, ketterät menetelmät valjastavat muutokset asiakkaan kilpailueduksi. 3 Luovutetaan toimivia versioita kehitettävästä ohjelmistosta säännöllisesti, mielellään lyhyin väliajoin (muutamasta viikosta kuukauteen) 4 Liiketoiminnan ammattilaisten ja kehittäjien täytyy työskennellä päivittäin yhdessä koko projektin ajan Pirkko Nykänen 4
5 Rakennetaan projektit motivoituneiden yksilöiden ympärille ja annetaan heille ympäristö ja tuki jota he tarvitsevat sekä luotetaan että he saavat työn tehtyä 6 Kaikkein tehokkain tapa välittää tietoa kehitystiimille ja kehitystiimissä on kasvokkain tapahtuva keskustelu 7 Toimiva ohjelmisto on ensisijainen edistymisen mittari 8 Ketterät menetelmät suosivat kestävää kehitystä. Rahoittajien, kehittäjien ja käyttäjien tulisi kyetä pitämään jatkuvasti yllä tasainen työtahti. Pirkko Nykänen 5
9 Jatkuva huomion kiinnittäminen tekniseen laatuun, sekä hyvään rakenteeseen ja suunnitteluun, lisää ketteryyttä 10 Yksinkertaisuus taito maksimoida työn määrä, jota ei tarvitse tehdä, on olennaista 11 Parhaat arkkitehtuurit, vaatimukset ja suunnitelmat nousevat itseorganisoituvista tiimeistä 12 Tasaisin väliajoin tiimi miettii miten voisi tulla entistä tuottavammaksi, ja siten säätää ja muokkaa toimintaansa sen mukaan Pirkko Nykänen 6
Ketterät käytännöt, www.ketteratkaytannot.fi Mahdollistavat työn tekemisen ketteryyden periaatteiden mukaisesti Arvovirtakartoitus Arvovirran ja siihen kuuluvien prosessin kartoitus, arvovirta on esim virhekorjauksen läpimenoaika (kuinka paljon tehdään hyödyllistä, arvoa tuottavaa työtä) Jatkuva integraatio koko ohjelmisto koostetaan ja integroidaan jatkuvasti, komponentteja integroidaan koko kehitysvaiheen ajan Jälkitarkastelu Retrospective meeting/reflection workshop, mietitään ovatko toimintatavat ja käytännöt ok vai olisiko parannettavaa Koodikatselmointi varmistetaan tuotetun koodin toteutuskäytäntöjen mukaisuus ja annetaan palautetta ohjelmoijille, jaetaan tietoa toteutetuista komponenteista Pirkko Nykänen 7
Käyttäjätarinat ei tehdä vaatimusmäärittelyä etukäteen, vaatimukset tarkentuvat työn kuluessa Alkuun lähdetään käyttäjätarinoilla (user stories), kuvataan KUKA tekee, MITÄ tekee, MIKSI tekee, tarinankirjoitussessiot, iteroidaan ja tarkennetaan Pariohjelmointi kaksi ohjelmoijaa työskentelee yhdessä yhdellä koneella, toinen pääohjelmoija, toinen seuraa vierestä, rooleja vaihdetaan Pienet julkaisut asennuspaketit ovat kooltaan pieniä ja niitä tehdään usein, ketterän kehityksen inkrementit ovat yleensä 1-6 viikon mittaisia, kukin inkrementti on oltava laadultaan asennuskelpoinen
Prosessin muotoilu millaisia käytäntöjä juuri tässä projektissa, juuri tällä tiimillä, juuri tälle asiakkaalle, juuri tällä teknologiaalustalla tarvitaan Päiväpalaveri Päivittäinen tapaaminen jossa koko tiimi koolla Päiväpalaverissa käydään läpi: Mitä teit edellisenä päivänä, mitä aiot tehdä tänään, mitkä seikat haittaavat työskentelyäsi Refaktorointi ohjelmakoodin muuttamista niin ettei toiminnallisuus muutu, parannetaan koodin ylläpidettävyyttä
Tasainen tahti (sustainable pace) Työtahti tasainen (40t/v), ylitöitä ei suositella Testivetoinen kehitys ohjelmiston kehitys testivetoisesti, virheiden määrä pyritään pitämään koko ajan minimissä Toteutuskäytännöt pelisäännöt sille millaista koodia tuotetaan, kaikkien koodi mahdollisimman samanlaista Yhteisomistus koodi on tiimin yhteisessä omistuksessa Yksikkötestaus kehittäjätestaus, matalan tason testaus, koodi toimii ohjelmoijan tarkoittamalla tavalla
Ketterät menetelmät Pyritään minimoimaan riskejä jakamalla ohjelmistokehitys lyhyisiin vaiheisiin, iteraatioihin, kukin iteraatio on pieni projekti, joka sisältää kaikki ohjelmistokehityksen vaiheet ja tuottaa periaatteessa julkaisukelpoisen / toimivan ohjelmiston jokaisen iteraation lopussa arvioidaan mitä on saatu aikaan ja päätetään seuraavasta iteraatiosta Pirkko Nykänen 11
Ketterät menetelmät ovat työskentelytapoja, joilla tehostetaan ohjelmistotuotantoa ja kehitetään ohjelmistot vastaamaan paremmin asiakkaan todellisia tarpeita Ketterien menetelmien tärkein uusi tekijä on koko organisaation läpileikkaava uusi ajattelumalli, jossa arvot, periaatteet ja käytäntö kohtaavat saumattomasti Myös tuottavuus ja ohjattavuus on nostettu entistä keskeisempään asemaan Uudet menetelmät mahdollistavat huomattavasti joustavamman ja tehokkaamman tuotekehitysprosessin, koska menetelmällä voi tehdä muutoksia ohjelmistoihin jokaisessa prosessin vaiheessa Tämä on tarpeen, koska maailma muuttuu kiivaassa tahdissa ja asiakkaan tarpeet sen mukana Pirkko Nykänen 12
Ketterien menetelmien filosofiaa Seurausta RAD-metodeista ja nopeista prototyyppilähestymistavoista Perusfilosofia: ohjelmointi on voima eikä teollisuusprosessi, luovaa työtä eikä tuotteen valmistamista Ketterät menetelmät vastavoima mekaanisille, epäinhimillisille suunnitelmavetoisille metodologioille Pirkko Nykänen 13
Ketteryyden perustelua Ketteryyttä vaaditaan liiketoiminnassa yhä enemmän niin yrityksissä kuin julkisella sektorillakin, myös teknologian muutotokset ovat nopeita ICT-projektien pitää sopeutua nopeasti muuttuviin tilanteisiin tarvitaan uudenlaisia ohjelmistokehitysprosesseja, jotka tuottavat valmiita sovelluksia aikaisempaa nopeammin, mutta kuitenkin laadukkaasti Tunnetuimmat ketterät brändit ovat Extreme Programming (XP), Scrum ja Lean Software Development Pirkko Nykänen 14
Scrum Scrum tarjoaa sovelluskehitykseen mallin, jonka mukaan projektia ohjataan Scrum ei ota kantaa matalan tason insinöörikäytäntöihin, vaan keskittyy ennen muuta projektin vaiheistamiseen ja jatkuvaan kontrolliin projektin etenemisestä Scrum kuten kaikki muutkin ketterät mallit näkee ohjelmistokehityksen rakentuvan erimittaisten syklien ympärille. Tärkeimmät syklit ovat sprintti ja päivä Sprintillä tarkoitetaan yhtä kehitysjaksoa, jonka jälkeen tuote on ainakin periaatteessa julkaisuvalmis. Tyypillisesti sprintin kesto on yksi kuukausi, mutta sen pituus vaihtelee organisaation tarpeiden mukaan viikosta kahteen kuukauteen www.ketteratkaytannot.fi
Scrum Scrum-projektissa esiintyy vain kolme eri roolia: Tuotteen omistaja, Scrummestari ja tiimi Tuotteen omistaja on henkilö, joka viime kädessä vastaa tuotteen ominaisuuksista, siis "omistaa" tuotteen Tuotekehitysprojekteissa omistaja on tyypillisesti tuotepäällikkö, asiakasprojekteissa se voi olla asiakkaan edustaja tai toimittajan tekninen projektipäällikkö, omistajan tehtävänä on tehdä kaikki päätökset tuotteen ominaisuuksista ja toiminnallisuuksiin vaikuttavista seikoista Scrum-mestarin tehtävänä on huolehtia siitä, että tiimi voi tehdä työtään optimaalisella tavalla Tiimiläiset raportoivat päivittäin ongelmista, jotka hidastavat töiden etenemistä ja mestarin tehtävänä on ratkoa nämä ongelmat, hän johtaa päivittäiset aamupalaverit ja vastaa siitä, että Scrumia noudatetaan oikein Tiimiin kuuluvat kaikki henkilöt, jotka projektia ovat tekemässä Tiimin sisältä ei erikseen nimitetä arkkitehteja, ohjelmoijia, testaajia tai käyttöliittymäsuunnittelijoita, vaan tiimiin kasataan henkilöitä, joilla on tarvittava osaaminen, tiimi yhdessä rakentaa tuotteen, halutaan korostaa kunkin tiimiläisen olevan projektin kannalta yhtä tärkeä ja että tiimi yhdessä vastaa tuotteen kaikista puolista, ei koskaan yksittäinen henkilö
www.ketteratkaytannot.fi Tällä erottelulla on Scrumissa keskeinen merkitys. Siat määräävät miten projektissa toimitaan, kanat voivat vain tehdä havaintoja.
Scrum Scrumissa kaikki ihmiset jaetaan kahteen ryhmään: sikoihin ja kanoihin Sikoja ovat kaikki, joilla on jokin rooli projektissa (tuotteen omistaja, scrum-mestari tai tiimiläinen) kanoja ovat muut, jotka ovat kiinnostuineita projektista. Nämä voivat olla esimerkiksi ylempää johtoa tai toisen Scrum-tiimin jäseniä. "A chicken and a pig are walking down the road. The chicken says to the pig: "Do you want open a restaurant with me?" The pig considers the question and replies: "Yes, I'd like that. What do you want to call the restaurant?" The chicken replies: "Ham and eggs!" The pig stops, pauses and replies:"on second thought, I don't think I want to open a restaurant with you. I'd be committed, but you'd only be involved." Tällä erottelulla on Scrumissa keskeinen merkitys. Siat määräävät miten projektissa toimitaan, kanat voivat vain tehdä havaintoja
Ketterien menetelmien odotuksia Uusien ratkaisumallien ylle on asetettu merkittäviä odotuksia laadun ja tuottavuuden parantamisessa Nykyiset avainsanat ovat tehokkuus, jatkuva muutosvalmius ja erittäin lyhyet tuotantosyklit Perinteisten painopistealueiden prosessien, dokumentoinnin ja sopimusten väitetään jäykistävän organisaatioita ja kehitystiimejä siten, että liiketoimintaedut jäävät saamatta Suomen ohjelmistoteollisuutta uhkaa tuotannon siirtyminen halpoja tuotantokustannuksia tarjoaviin maihin, joten uusia innovaatioita ja ohjelmistojen toiminta- ja kehitysmalleja on omaksuttava ripeästi käyttöön Ketterän ohjelmistotuotannon menetelmillä suomalaisilla yrityksillä on entistä paremmat kilpailumahdollisuudet alan globaalilla kilpailukentällä Lupaava alue tulevaisuudessa: ketteryyden ja käyttäjäkeskeisyyden yhdistäminen Pirkko Nykänen 19
Ketteryys Tavoitehakuinen ketteryys, tilannekatsaus, uusien keinojen tunnistaminen, joilla päästään parhaiten tavoitteeseen Kokeileva ketteryys, tunnistaa mahdollisuuksia ja tekee niiden perusteella mahdollisuuksia jatkosta Pirkko Nykänen 20
ketterä prosessi: nopea syklinen ketterä prosessin räätälöinti: projektia käynnistettäessä räätälöidään nopeasti projektimallia valitsemalla siihen sopivat menettelytavat ketterästi tehtävät työt: systemaattisen ennakkosuunnitellun prosessimallin vaiheissa tehdään työtä ketterällä tavalla tutkivat prosessit: exploratory processes, tehdään havaintoja ja edetään sen mukaan Pirkko Nykänen 21
Agiilit versus traditionaaliset menetelmät Jakavat saman filosofisen perustan, ovat teknisesti toisiaan täydentäviä ja tukevia AGILITY The continual readiness of an entity to rapidly or inherently, proactively or reactively, embrace change, through high quality, simplistic, economical components and relationships with its environment. Conboy & Fitzgerald 2004 Pirkko Nykänen 22
Ketteryys ja käyttäjäkeskeisyys Molemmat iteratiivisia ja nostavat asiakkaan ja käyttäjät keskeiseen rooliin ohjelmistotuotantoprosessissa onko näiden yhdistäminen järkevää? Pirkko Nykänen 23
Käyttäjäkeskeisyys Kantava ajatus: käyttäjä on keskeinen osa ohjelmistokehitysprosessissa käyttäjiä haastatellaan, käyttäjiä tarkkaillaan heidän työssään, tutkitaan ja analysoidaan käyttäjäryhmän tietoja käyttäjä kokeilee prototyyppejä palautteiden, tietojen ja havaintojen avulla löydetään uusia vaatimuksia, parannuksia ja ymmärretään eri osien / toimintojen merkitys ja tärkeys etukäteissuunnittelua tehdään paljon: kuvataan kohdekäyttäjiä, tehdään käyttöliittymäsuunnittelua etc kaikki suunnittelu ja kehitys dokumentoidaan perusteellisesti Pirkko Nykänen 24
ketteryys vs käyttäjäkeskeisyys ketterät menetelmät eivät korosta etukäteissuunnittelua ja dokumentointi on kevyttä Molemmissa: luodaan useita prototyyppejä, joista haetaan palautetta ja jatketaan kehitystyötä eteenpäin palaute tulee ketterissä menetelmissä asiakkaan vastuulliselta edustajalta, käyttäjäkeskeinen suunnittelu hakee palautteen loppukäyttäjiltä yhdistely toisi palautteen molemmilta Pirkko Nykänen 25
Ketteryyden ja käyttäjäkeskeisyyden yhdistäminen Käyttäjäkeskeinen suunnittelu projektin alussa yhtenäisen käyttöliittymän suunnittelu, muttei liikaa suunnittelua rajaavia päätöksiä iteroiden ja testaten haetaan käytettävyydeltään oikeanlainen käyttöliittymä paperiprotot ja käyttäjien kanssa kommunikointi >> käyttöliittymän yleinen rakenne Ongelmallista: käytettävyyssuunnittelijoiden ja kehittäjien välinen kommunikaatio me ja ne muut- ajattelu, erilaiset ajatusmallit Pirkko Nykänen 26
Ketterillä menetelmillä saatavissa jopa 70 prosentin säästöt VTT:n läpimurto niin kutsuttujen ketterien ohjelmistokehitysmenetelmien (Agile Software Development) kehittämisessä merkitsee parannusta suomalaisen ohjelmistoteollisuuden kannattavuudelle Uudet menetelmät mahdollistavat huomattavasti joustavamman ja tehokkaamman tuotekehitysprosessin, koska menetelmällä voi tehdä muutoksia ohjelmistoihin jokaisessa prosessin vaiheessa. Tulokset ovat niin merkittäviä, että ne voivat lisätä tarvetta siirtää ohjelmistoteollisuuden tuotantoa takaisin Suomeen halventuvien tuotantokustannuksien takia. VTT:n Mobile-D -nimisellä ketterällä menetelmällä saavutettuja tuloksia on siirretty nopealla tahdilla teollisuuteen. Ohjelmistoteollisuuden piloteissa Mobile-D :llä on säästetty jopa 70% tuotevalmistuksen kustannuksissa sekä uusien tuotteiden markkinoille pääsemisen aikatauluissa www.vtt.fi Pirkko Nykänen 27
www.agilefinland.com Agile Filand's mission is to help the development and application of Agile Software Development in Finland The Agile and Leadership Academy is an initiative between Agile Finland and University of Helsinki to bring some of the key practitioners in our community and some of the best experts world-wide together. Through a learning process that will support those of us in the community that have some years experience with Agile and are looking for the next step. Check it out in the site: www.acla.fi