Ketterä (agile) tietojärjestelmien suunnittelu
Transcription
Ketterä (agile) tietojärjestelmien suunnittelu
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 17.2.2015 Pirkko Nykänen 1 Mitä ketteryys on? • perusteluna on jatkuva muutos • ketterät menetelmät ovat käytäntökokoelmia, jotka sopivat tietyn tyyppisiin projekteihin ja tietyn tyyppisille organisaatioille • 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ä 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 6 7 8 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ä Kaikkein tehokkain tapa välittää tietoa kehitystiimille ja kehitystiimissä on kasvokkain tapahtuva keskustelu Toimiva ohjelmisto on ensisijainen edistymisen mittari 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ä 16 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 • 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 Scrumin lähtökohta = ajatus siitä, että ohjelmistokehityksen pitäisi olla empiirinen prosessi, jolle on ominaista läpinäkyvyys, tarkastelu ja sopeuttaminen – Läpinäkyvyys tarkoittaa sitä, että kaikki osatekijät, jotka vaikuttavat ohjelmistokehitysprojektin lopputulokseen, ovat ohjelmistokehitys-projektiin osallistuvien henkilöiden tiedossa – Ohjelmistokehitysprojektiin osallistuvat henkilöt tarkastelevat näitä osatekijöitä jatkuvasti ohjelmistokehitysprojektin edetessä – sopeuttavat omaa toimintaansa tarkastelun pohjalta saavuttaakseen toivotun lopputuloksen. • Tavoitteena oleva tuote kehittyy pikkuhiljaa täydellisemmäksi ja valmiimmaksi useiden kehitysjaksojen aikana • 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ö • Scrumissa työskennellään toistavasti ja lisäävästi (iterativeincremental) ennustettavuuden optimoimiseksi ja riskien kontrolloimiseksi • Kehitysjaksoa kutsutaan sprintiksi – Sprintti on 1-4 viikon mittainen aikaraja, jonka sisällä tuotetaan “valmiin” määritelmän täyttävä, käyttökelpoinen ja potentiaalisesti julkaisukelpoinen tuoteversio – Jokaisen sprintin sisältö sovitaan sprintin suunnittelupalaverissa ennen sprintin aloitusta, ja toteutettaviksi valitaan sellaisia tuotteen kehitysjonon kohtia, joilla on sillä hetkellä suurin merkitys projektin onnistumiselle – Sprintin lopuksi järjestetään sprinttikatselmus, jossa kehitystiimi esittelee sprintin konkreettiset saavutukset (esim. ohjelmiston uusimman version) tuoteomistajalle sekä mahdollisille sidosryhmien edustajille palautteen saamiseksi ja ymmärryksen lisäämiseksi kehityksen tilasta – Ennen seuraavan sprintin aloittamista pidetään vielä sprintin retrospektiivi, jossa tarkastellaan prosessin näkökulmasta mikä sprintin aikana sujui hyvin ja mitä voitaisiin parantaa seuraavassa sprintissä Pirkko Nykänen 17 •www.ketteratkaytannot.fi Tällä erottelulla on Scrumissa keskeinen merkitys. Siat määräävät miten projektissa toimitaan, kanat voivat vain tehdä havaintoja. Pirkko Nykänen 19 Pirkko Nykänen 20 Pirkko Nykänen 21 • 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 SCRUM – edut, haasteet • Scrum on yksinkertainen ja helposti opittava viitekehys • Kehitystiimi voi käyttää vapaasti valitsemiaan prosesseja, menetelmiä, tekniikoita ja työkaluja scrumin viitekehyksen sisällä • Scrum voidaan ottaa käyttöön ohjelmistokehitysprojektin alussa tai kesken ohjelmistokehitysprojektin • Oikein noudatettuna scrum tuo useita hyötyjä ohjelmistokehitysprojekteihin ja kehittäjät pitävät työskentelystä scrumprojekteissa. • Scrumin käyttöönotto voi olla työlästä, aikaavievää ja haastavaa, kehittäjät voivat vastustaa scrumin käyttöönottoa. • Jos scrumtiimi muuttaa scrumin viitekehystä tai käyttää vain osaa viitekehyksen rooleista, tapahtumista ja tuotoksista, Pirkko Nykänen 23 scrumin hyödyt voivat jäädä toteutumatta • Scrum soveltuu parhaiten pienten kehitystiimien käyttöön, koska kehitystiimin pieni koko mahdollistaa suoran ja jatkuvan vuorovaikutuksen sekä nopean tiedon jakamisen kaikkien kehittäjien välillä • Jos kehitystiimi on liian pieni, sen vuorovaikutus, osaaminen, tehokkuus ja tuottavuus vähenevät - jos kehitystiimi on liian suuri, sen toiminta vaatii liikaa koordinointia. • Jos kehittäjät toimivat samaan aikaan useissa eri projekteissa, heidän voi olla vaikea osallistua ja sitoutua • On toivottavaa että scrum-tiimi työskentelee yhteisessä työtilassa, maisemakonttorissa, jolloin tiedonvaihto on helppoa ja jatkuvaa • Työskentely monitaitoisessa kehitystiimissä tukee kehittäjien välistä tiedon jakamista ja parantaa kehittäjien osaamista Pirkko Nykänen 24 • Osaamisen kehittyessä scrum-projektin eteneminen ei ole kiinni ainoastaan yhden kehittäjän työpanoksesta • Kukaan ei johda kehitystiimin toimintaa, vaan kehitystiimi päättää itse työnjaosta ja työskentelytavoistaan. – Työskentely itseohjautuvassa kehitystiimissä lisää kehittäjien mahdol-lisuuksia vaikuttaa omiin työtehtäviinsä ja parantaa kehitystiimin toi-minnan koordinointia ja parantaa kehittäjien motivaatiota, sitoutumista scrum-projektiin, tehokkuutta ja tuottavuutta • Jos scrumista ei ole aikaisempaa kokemusta, scrummaster ja muut scrum-projektin sidosryhmät voivat vastustaa päätöksentekovallan antamista kehitystiimille ja kehitystiimin voi olla vaikea ottaa vastuu päätöksenteosta Pirkko Nykänen 25 Ketterien menetelmien odotuksia • Uusien ratkaisumallien ylle on asetettu merkittäviä odotuksia laadun ja tuottavuuden parantamisessa – Voidaan saavuttaa huomattavia säästöjä ohjelmistoprojekteissa • • • 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 26 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 27 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 28 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 29 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 30 • 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 31 Summary • Ketterät menetelmät ja työtavat ovat tulleet jäädäkseen myös julkishallinnollisten asiakasorganisaatioiden hankkeisiin ja ketteriä menetelmiä käyttäen on mahdollista saavuttaa hyviä tuloksia, mutta myös epäonnistuneita lopputuloksia aivan sanoin kuin perinteisimmillä projektinhallinnan menetelmin johdetuilla ohjelmistoprojekteilla • Ketteryys tarkoittaa parhaimmillaan varsin joustavaa tekemisenmallia, jossa asiakas saa jatkuvasti hyviä tuloksia ja vastinetta projektityöhön sitomalleen pääomalle ja jossa toimittaja pystyy hallitsemaan työhön sidottuja resursseja entistä joustavammin sekä vakuuttamaan asiakkaan paljon perinteisiä projektinhallinnan menetelmiä tehokkaammin • Mutta toisaalta huonoimmillaan ketteryys on molemmille osapuolille riippakivi, josta halutaan eroon ja jolla työn tuottavuus on kaukana sille asetetuista tavoitteista. Pirkko Nykänen 32 www.agile.fi • Agile Finland'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