Aalto-yliopisto Teknillinen korkeakoulu Informaatio- ja luonnontieteiden tiedekunta Informaatioverkostojen tutkinto-ohjelma Jakub Järvenpää Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Diplomityö Espoossa 14. kesäkuuta 2010 Valvoja Ohjaaja Professori Tapio Takala FM Vesa-Matti Mäkinen Aalto-yliopisto Teknillinen korkeakoulu Informaatio- ja luonnontieteiden tiedekunta Informaatioverkostojen tutkinto-ohjelma Diplomityön tiivistelmä Tekijä Jakub Järvenpää Työn nimi Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Sivumäärä 62 Päiväys 14. kesäkuuta 2010 Professuuri Vuorovaikutteinen digitaalinen media ja sisällöntuotanto Julkaisukieli suomi Koodi T-111 Työn valvoja Professori Tapio Takala Työn ohjaaja FM Vesa-Matti Mäkinen Monien tietokonesovellusten käyttöliittymäongelmat tulevat usein esille vasta sovelluksen käyttöönoton yhteydessä, kun sovelluksen käyttäjät yrittävät suorittaa sovelluksella niitä tehtäviä, johon ko. sovellus on suunniteltu. GUIDe-prosessimalli on suunniteltu siten, että käyttäjien todelliset tavoitteet toimivat käyttöliittymäsuunnittelun pohjana. GUIDe-prosessimallilla luodulla käyttöliittymällä pystyy suorittamaan tehokkaasti ne tehtävät, johon käyttöliittymä on suunniteltu. GUIDen oleellinen piirre on käyttäjien oikeiden käyttötilanteiden simulointi suunnittelutyössä. Työn ensimmäinen tavoite on osoittaa, että GUIDe tuottaa tehokkaampia käyttöliittymiä kuin sellaiset menetelmät, joissa ei käytetä simulointia suunnittelutyössä. Ohjelmistoyritys Reaktorilla on vuosina 2005–2010 toteutettu sisäisissä ja asiakashankkeissa noin 30 sovellusta GUIDe-määrittelyn pohjalta. Toteutustyötä on tehty kahdella eri tavalla, Guide-Scrumilla ja Guidedflow’lla. Guide-Scrum on näistä kahdesta pidempään harjoitettu tapa. Työn toinen tavoite on analysoida molempia tapoja ja löytää syitä, miksi Guided-flow on Reaktorilla hiljalleen saamassa jalansijaa Guide-Scrumilta. Analysoin tapoja mm. lean-ajattelun hukkakäsitteillä. Totean, että GuideScrumissa on monia hukan lähteitä, joita on eliminoitu Guided-flow’ssa. Täten Guided-flow on lean-ajattelun näkökulmasta tehokkaampi tapa toteuttaa tietokoneohjelmia GUIDe-määrittelyn pohjalta, mikä osaltaan selittää Guided-flow’n hiljalleen kasvavaa suosiota Reaktorin hankkeissa. Lean-ajattelu paljastaa Guided-flow’ssa myös puutteita, joita dokumentoin tässä työssä. Joihinkin ongelmiin esitän ratkaisuehdotuksia. Asiasanat Käyttöliittymäsuunnittelu, GUIDe, Scrum, lean-ajattelu Aalto University School of Science and Technology Faculty of Information and Natural Sciences Degree programme of Information Networks Abstract of the Master’s Thesis Author Jakub Järvenpää Title Implementing a software application based on a GUIDe specification Number of pages 62 Päiväys 14 June 2010 Professorship Interactive Digital Media and Contents Production Language Finnish Code T-111 Supervisor Professor Tapio Takala Instructor Vesa-Matti Mäkinen, M.Sc. The user interface (UI) problems of many software applications become evident when the users attempt to accomplish tasks for which the application has been designed for. GUIDe is a UI design process which incorporates the users' real goals as the basis of user interface design. A user interface designed using GUIDe is efficient for executing the tasks for which it has been designed for. The simulation of the users' real use situations during the design of the user interface is the discerning feature of GUIDe. The first goal of this thesis is to demonstrate that GUIDe produces more efficient user interfaces than design processes that do not integrate simulation into the design process. Approximately 30 applications based on a GUIDe specification have been implemented in internal and customer ventures by the software company Reaktor during 2005-2010. The implementation work has been managed using two processes, Guide-Scrum and Guided-flow. The second goal of this thesis is to analyse both processes and find reasoning for the growing popularity of Guided-flow at Reaktor. I analyze both processes using the notions of waste, a concept originating from Lean thinking. I conclude that Guide-Scrum has many sources of waste that have been eliminated in Guided-flow. In terms of Lean thinking, Guided-flow is a more efficient way to implement applications based on GUIDe specifications, which, for its part, accounts for the growing popularity of Guided-flow at Reaktor. Lean thinking detects shortcomings in Guided-flow as well. I document these shortcomings and propose corrective actions for some of them. Asiasanat User interface design, GUIDe, Scrum, Lean thinking Alkulause Kiitän professori Tapio Takalaa työn laadukkaasta ja kannustavasta valvonnasta. Kiitän Vesa-Matti Mäkistä ja Karri-Pekka Laaksoa työn virallisesta ja epävirallisesta ohjaamisesta ja myös ammatillisesta valmentamisesta, joka toivottavasti jatkuu vielä pitkään. Kiitän suunnittelija Outi Hölttää tutkintooni liittyvien asioiden kärsivällisestä hoitamisesta vuosien varrella. Kiitän työnantajaani Reaktoria, jolle tämä työ on tehty. Kiitän myös kaikkia reaktorilaisia, joiden kanssa olen tehnyt töitä ja käynyt lukemattomia keskusteluja siitä, miten tietokoneet voisivat olla hyödyllisempiä meille ihmisille. Tämä työ on omistettu mamalle. Käsitteitä ja lyhenteitä GUIDe. Käyttötilanteiden simulaatioon perustuva tietokonesovellusten määrittelymenetelmä Lean. Johtamisfilosofia, joka pyrkii toiminnan jatkuvalla parantamisella minimoimaan valmistuksessa syntyvän jätteen määrän ja maksimoimaan asiakkaalle tuotetun arvon. Pull-periaate. Lean-valmistusprosessi tuottaa artefaktin vain jos sille on todettu kysyntä. ROI. Return on investment, sijoitetun pääoman tuotto Scrum. Iteratiivinen ohjelmistokehitysprosessi Sprintti. Scrum-prosessin vakiopituinen työrupeama WIP. Work in progress, keskeneräinen työ Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Sisällysluettelo 1. Johdanto 2. Guided-flow’n taustalla vaikuttavat prosessit 2.1. GUIDe 2.1.1. Tavoitepohjaisten käyttötapausten selvittäminen 2.1.2. Käyttöliittymän suunnittelu 2.1.3. Käyttöliittymäratkaisun arviointi 2.2. Lean-ajattelu 2.2.1. Lean-ohjelmistokehityksen seitsemän periaatetta 2.2.2. Muri, mura ja muda-hukkakäsitteet 2.2.3. Wardin tietämyshukan kolmas variaatio: toiveajattelu 2.3. Luotetun neuvonantajan malli 2.4. Scrum-prosessikehys 2.4.1. Filosofia ja fokus 2.4.2. Peruskäsitteet 3. Käyttöliittymien tehokkuudesta 3.1. Tehokkuusjärjestys 3.2. Esimerkkejä käyttöliittymien tehokkuuseroista 3.2.1. Toisu 3.2.2. Lakipalvelut 3.2.3. Johtopäätöksiä 4. Guided-flow 4.1. Guide-Scrum ja sen ongelmat 4.2. Guide-Scrumin ongelmien korjaaminen lean-käsitteiden avulla 4.2.1. Työlistan sisältö vastaamaan käyttäjien tarpeita 4.2.2. Sprintin suunnittelu pois 4.2.3. Toiminnallinen katsaus valmiin määritelmäksi 4.2.4. Sprintin käsite pois 4.3. Guided-flow tiivistetysti 4.4. Guided-flow yksityiskohtaisesti 4.5. Syitä Guided-flow’n suosiolle 4.6. Havaittuja puutteita Guided-flow’ssa 4.6.1. Riippuvuus toiminnallisesta määrittelijästä 4.6.2. Tutkivan testauksen käynnistyskulut 4.6.3. Retrospektion ajoitus 5. Johtopäätökset 6. Yhteenveto 1 4 4 5 9 10 10 10 12 14 14 16 17 17 24 24 26 26 36 37 38 39 40 40 40 41 41 42 44 50 51 52 54 55 57 60 Viitteet 61 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää 1. Johdanto Ohjelmistoyritys Reaktorilla aloitettiin ketterien menetelmien käyttöönotto vuonna 2004. Ensimmäiset tekniikat, jotka otettiin järjestelmällisesti käyttöön asiakasprojekteissa, olivat testivetoinen ohjelmistokehitys (TDD) (Järvenpää 2006) ja Scrum-prosessikehys (Lindström 2006). Reaktorin Scrumilla ja TDD:llä toteutetuissa hankkeissa toteutui usein seuraava riski: “Monet käyttöliittymäongelmat tulevat usein esille vasta ohjelmiston valmistumisen jälkeen, kun järjestelmällä yritetään ensimmäistä kertaa saada tehtyä käyttäjien todellisia työtehtäviä. Pahimmassa tapauksessa käyttötarkoituksen kannalta keskeistäkin toiminnallisuutta voi puuttua järjestelmästä kokonaan. Osa eteen tulevista ongelmista puolestaan on käytettävyysongelmia: tehottomista ja vaikeaselkoisista käyttöliittymäratkaisuista syntyvää ajanhukkaa, virheitä ja turhaa koulutustarvetta. Osa käyttöliittymän puutteista on niin pahoja, että ne on joka tapauksessa korjattava ennen käyttöönottoa.” (Laakso et Laakso 2004, sivu 1) Yksi esimerkki tästä on ammattikorkeakoulujen toiminnansuunnittelujärjestelmä Toisu, joka määriteltiin rautalankamalleilla, toteutettiin Scrumilla ja todettiin käyttöönotossa käyttäjien toimesta pääosin käyttökelvottomaksi. Toisun ensimmäinen versio oli määritelty väärin, koska sillä ei pystynyt tekemään niitä tehtäviä, joihin se oli suunniteltu. Ohjelmistotuotantoon pätee 1:10:100-sääntö: virheen korjaamisen kustannus kasvaa kertaluokilla mitä myöhäisemmässä vaiheessa virhe korjataan. Ei ole samantekevää, missä vaiheessa ohjelmistokehityshanketta virheet korjataan. Halvinta on huomata virheet suunnitteluvaiheessa. Ohjelmiston vaatimusten oikeellinen määrittely projektin alkuvaiheessa on vaikeaa. On arvioitu, että jopa 25–70 prosenttia valmiiden ohjelmistojen ongelmista johtuu määrittelyvaiheen virheistä tai puutteista, ja näistä ongelmista kaksi kolmasosaa havaitaan vasta ohjelmiston valmistuttua (Robinson et al. 2003). GUIDe-menetelmä (Laakso et Laakso 2004) on suunniteltu siten, että käyttäjien todelliset tavoitteet toimivat käyttöliittymäsuunnittelun pohjana. GUIDe-menetelmällä luodulla käyttöliittymällä pystyy suorittamaan tehokkaasti ne tehtävät, johon käyttöliittymä on suunniteltu. 1 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Käyttöliittymien tehokkuuden järjestelmällinen mittaaminen on jäänyt vähälle huomiolle. GUIDe-määrittelyjen pohjalta tehtyjen tietokoneohjelmien tehokkuus ja hyödyllisyys on ollut selvää GUIDea käyttäville käyttöliittymäsuunnittelijoille ja GUIDella suunniteltujen sovelluksien käyttäjille, mutta vertailua oikeassa käytössä olevien tietokoneohjelmien tehokkuuseroista ei ole dokumentoitu. Työn ensimmäinen tavoite on osoittaa, että GUIDe tuottaa tehokkaampia käyttöliittymiä kuin sellaiset menetelmät, joissa ei käytetä simulointia suunnittelutyössä. Ehdotan määritelmää käyttöliittymän tehokkuudelle ja käytän määritelmää samoihin tehtäviin tarkoitettujen käyttöliittymien tehokkuuden vertailuun. Vertailen ammattikorkeakoulujen toiminnansuunnittelujärjestelmä Toisun eri versioita keskenään ja kahta online-lakipalvelua keskenään. Molemmissa tapauksissa GUIDella määritelty sovellus on huomattavasti tehokkaampi annetun tehokkuuden määritelmän puitteissa. Jotta Reaktorin tekemissä hankkeissa ei kärsittäisi virheellisistä ja puutteellisista määrittelyistä johtuvista ongelmista, GUIDe-menetelmä otettiin käyttöön vuonna 2005. Reaktorilla on viimeisen viiden vuoden aikana (vuosina 2005–2010) toteutettu sisäisissä ja asiakashankkeissa noin 30 sovellusta GUIDe-määrittelyn pohjalta. GUIDe-prosessi ei kuitenkaan ota kantaa, miten syntyneen määrittelyn pohjalta toteutetaan järkevällä tavalla toimiva tietokoneohjelma. Toteutustyötä on Reaktorilla tehty pääasiassa kahdella eri tavalla, Guide-Scrumilla ja Guidedflow’lla. Guide-Scrum on pidempään harjoitettu tapa. Työn toinen tavoite on analysoida molempia tapoja ja löytää syitä, miksi Guided-flow on Reaktorilla hiljalleen saamassa jalansijaa Guide-Scrumilta. Analysoin Guide-Scrumia mm. lean-ajattelun hukkakäsitteillä. Totean, että Guide-Scrumissa on monia hukan lähteitä, joita on eliminoitu Guided-flow’ssa. Täten Guided-flow on lean-ajattelun näkökulmasta tehokkaampi tapa toteuttaa tietokoneohjelmia GUIDe-määrittelyn pohjalta, mikä osaltaan selittää Guidedflow’n hiljalleen kasvavaa suosiota Reaktorin hankkeissa. Tehokkaampi ja ennustettavampi prosessi on mieluisampi alalla, jonka hankkeissa budjetit tyypillisesti ylittyvät ja ennustettavuus on huono. Guided-flow’n eräs erityispiirre on se, että tietokonesovelluksen tilaavan tahon (asiakkaan) ja käyttöliittymäsuunnittelijan (toiminnallisen määrittelijän) interaktioon on kiinnitetty erityistä huomiota. Guided-flow’n kehityskaaren 2 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää aikana on huomattu, että erityisesti toiminnallisen määrittelijän ja asiakkaan on pystyttävä luomaan jo hankkeen alkuvaiheessa luottamukselliset suhteet, jotta riittävä jaettu ymmärrys ongelmasta ja sen ratkaisutavoista saavutetaan. Tämän osan käytäntöjä analysoidaan David Maisterin luotetun neuvonantajan mallin (Maister 1988) käsittein. Lean-käsittein analysointi paljastaa myös puutteita Guided-flow’ssa, joita dokumentoin tässä työssä. Joihinkin ongelmiin esitän ratkaisuehdotuksia. 3 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää 2. Guided-flowʼn taustalla vaikuttavat prosessit 2.1. GUIDe Hyvä käyttöliittymä saadaan aikaan selvittämällä käyttäjien tavoitteet ja käyttötilanteet ja tekemällä tilanteiden hoitamisesta mahdollisimman suoraviivaista ja itsestään selvää. Käyttäjille päivittäin eteen tulevat tilanteet ovat testitapauksia, joiden suorittamista tarkastelemalla hyvät käyttöliittymäratkaisut erottuvat huonoista (käytettävyys), tarvittava tietosisältö erottuu tarpeettomasta ja hyödylliset toiminnot hyödyttömistä. (Laakso et Latva-Koivisto 2006, esipuhe) GUIDe-prosessimallilla tietokoneohjelma saadaan suunniteltua siten, että se ratkaisee mahdollisimman hyvin niitä tosielämän tilanteita, joita käyttäjillä tulee vastaan. Keskeisenä työkaluna käytetään käyttötilanteiden simulointia ja konkreettisia käyttöliittymäkuvia, jotka visualisoivat vaatimusmäärittelyn testauskelpoiseen muotoon: järjestelmässä tarvittava toiminnallisuus ja tietosisältö sekä käyttäjän kannalta optimaalinen järjestelmän rajaus näkyvät käyttöliittymäsuunnittelun tuloksena syntyvistä kuvasarjoista. Käyttäjän näkökulmasta tehty käyttöliittymän kuvaus toimii havainnollisena kommunikointivälineenä tilaajan, toimittajan ja käyttäjien välillä. Käyttöliittymän kuvauksen valmistuttua kaikille on selvää, minkälaisesta tietokoneohjelmasta on kyse: mitä tarkalleen se ratkaisee ja mitä se ei ratkaise. GUIDe-mallin keskeisimmät vaiheet (kuva 1) ovat • konkreettisiin käyttötilanteisiin perustuvien käyttötapausten määrittely, • käyttöliittymän simulointipohjainen suunnitteluprosessi ja • käyttöliittymän testaus. GUIDe-mallissa käyttöliittymän kuvauksen valmistumisen jälkeen alkaa toteutusvaihe. GUIDe ei itsessään kuitenkaan ota kantaa, miten käyttöliittymän kuvauksen mukainen tietokoneohjelma toteutetaan. 4 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Kuva 1. GUIDen vaiheet. 2.1.1. Tavoitepohjaisten käyttötapausten selvittäminen Projektin alussa käyttöliittymäsuunnittelijat selvittävät käyttäjien konkreettisia työnkulkuja ja tavoitteita tyypillisesti kenttätutkimusten avulla. Tässä vaiheessa ei ryhdytä laatimaan luetteloita järjestelmän toiminnoista, vaan tarvittava toiminnallisuus selviää myöhemmin käyttöliittymän kuvauksesta. Kenttätutkimusvaiheessa tehdään tyypillisesti kontekstuaalisia käyttäjähaastatteluja (contextual interviews) ja käyttäjätarkkailuja (user observations), jotka paljastavat käyttäjien olemassa olevia työnkulkuja, työtehtäviä ja niiden takana olevia tavoitteita. Selville saaduista työnkuluista poimitaan tavoitepohjaisia käyttötilanteita, jotka havaitun työnkulun lisäksi sisältävät käyttäjän tavoitteen. Tavoitteen tunnistaminen on tärkeää, koska pelkästään työnkulkukuvausten avulla on vaikeaa päästä irti nykykäytännöistä ja suunnitella samojen tavoitteiden saavuttamiseksi tehokkaampia työtapoja ja käyttöliittymäratkaisuja. Skenaarioiden takaa on osattava katsoa riittävän (muttei liian) korkean tason tavoitteita, jotka ovat juuri ja juuri suunniteltavan järjestelmän toimintojen yläpuolella. Käyttäjää tarkkaillessa ei siis pyritä selvittämään, millä tavalla hän käyttää jotain tiettyä työkalua, vaan mitä hän pyrkii saamaan aikaan kaikilla käyttämillään työkaluilla ja tiedoilla, jotka hänellä on käytössään. 5 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Tavoitepohjaisten käyttötapausten tyypilliseksi formaatiksi on vakiintunut seuraavanlainen kuvaus: Tarkkaillun henkilön titteli tai työnkuva Hyvin lyhyt kuvaus tilanteesta Tavoitteen tai ongelman kuvaus Tilatietoja Tarkkailussa havaittu toteuma Tarkkailun aikana otetut valokuvat Alla on esimerkki tavoitepohjaisesta käyttötapauksesta, joka on laadittu onlinelakipalvelun käyttöliittymäsuunnittelua varten. Tämän työn tekivät toiminnalliset määrittelijät Jakub Järvenpää ja Eero Anttila keväällä 2009. Käyttötapauksessa ei jäädä erilaisten juridisten dokumenttien tai muun materiaalin löytämisen tasolle, vaan etsitään järjestelmän yläpuolella oleva konkreettinen tavoite. Tarkkailun aikana otetut kuvat on tässä jätetty pois tilanpuutteen vuoksi. 6 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Sopimusjuristi #2 Reaktorin uuden brandin suojaaminen Tavoite Reaktor Innovations (RI) on vaihtamassa brandiaan pelkäksi Reaktoriksi. RI haluaa varmistaa, että ainakaan Suomen markkinoilla kukaan ei voi toimia nimellä Reaktor IT-konsultoinnin alalla. Ben Steinpilz on saanut soiton RI:n toimitusjohtaja Vesa Lauroselta, joka tiedustelee mahdollisista muutokseen liittyvistä ongelmista. Vesa on kertonut Benille, että Norjasta löytyy Reaktor-niminen IT-konsultoinnin huippuasiantuntijayritys. Ben ei tiedä liittyykö asiaan juridisia ongelmia. Tilatietoja Ben tietää, että brandin suojaamiseksi kannattaa selvittää, ovatko seuraavat toimenpiteet mahdollisia: Voiko sanamerkin Reaktor rekisteröidä EU-tuotemerkiksi? Jos ei, voiko sanamerkin Reaktor rekisteröidä Suomessa? Ben tietää, että EU-tasoisen kuviomerkin rekisteröinti ei ole ongelma. Toteuma Ben miettii, että voisiko asian ratkaista muttaa yrityksen nimi Reaktor Oy:ksi, mutta hänen kollegansa Hans Ahlström muistuttaa, että reaktor on ruotsinkielinen vastine suomenkielen sanalle reaktori, joten yleisnimenä se ei kelpaa yrityksen nimeksi. Ben ilmoittaa Vesalle, että yrityksen nimi ei voi olla Reaktor. Vesa ehdottaa aputoiminimen Reaktor rekisteröimistä. Ben selvittää PRH:n sivuilta mitä rajoituksia tai ongelmia aputoiminimen käyttöön voi liittyä. Selviää, että aputoiminimellä voi harjoittaa vain osaa toiminnasta. Seuraava vaihtoehto on rekisteröidä tavaramerkkeinä sanamerkki Reaktor sekä kuviomerkki uudelle logolle (logo + mahdollinen teksti) EU:n laajuisesti. Suomesta Ben tarkistaa samankaltaisten sanamerkkien olemassaoloa seuraavista paikoista: Yritys- ja yhteisötietojärjestelmä: löytyykö Suomesta samankaltaisella nimellä rekisteröityjä yrityksiä, joilla on sama yritysmuoto? Sellaisia ei löytynyt. 7 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää PRH:n tavaramerkkitietokanta: löytyykö nimellä "reaktor" tai "reactor" sanahaulla tai asiakasnimellä rekisteröityä tavaramerkkiä? Ei löytynyt täältäkään. Kansainvälisistä palveluista hän käy läpi seuraavat: Office for Harmonization in the Internal Market: Onko yhteysömerkki Reaktor varattu IT-toimialalta EU:n alueella? Ei samalta alalta. World Intellectual Property Organization: Onko yhteysömerkki Reaktor varattu IT-toimialalta kansainvälisesti? Ei samalta alalta. Ben toteaa, ettei edellä olevista lähteistä ole löytynyt mitään mikä estäisi Reaktor-sanamerkin rekisteröimisen Suomessa. Ben ottaa käsiinsä Tavaramerkki-kirjan ja kertaa sieltä tavaramerkin vakiintumisen edellytykset sekä tarkistaa viitteen TMerkkiL 2 §:n 3 mom Finlexistä. Tavaranerkki-teoksesta selviää, että Reaktor-nimen vakiintuminen voidaan osoittaa esim. lehtileikkeillä. Niinpä hän pyytää RI:n tiedotusjohtajalta tapausta puoltavia lehtileikkeitä. Seuraavaksi hän katsoo, mitä tavaramerkkilaki sanoo tuotemerkin erottuvuudesta. Ben toteaa, ettei edellä olevista lähteistä ole löytynyt mitään mikä estäisi Reaktor-sanamerkin rekisteröimisen Suomessa. Ben ottaa käsiinsä Tavaramerkki-kirjan ja kertaa sieltä tavaramerkin vakiintumisen edellytykset sekä tarkistaa viitteen TMerkkiL 2 §:n 3 mom Finlexistä. Tavaramerkki-teoksesta selviää, että Reaktor-nimen vakiintuminen voidaan osoittaa esim. lehtileikkeillä. Niinpä hän pyytää RI:n tiedotusjohtajalta tapausta puoltavia lehtileikkeitä. Lopuksi Ben kirjoittaa Vesalle sähköpostin, jossa em. asiat ovat tiivistetty toimintaohjeiksi. Tavoitepohjaisia käyttötapauksia laadittaessa saattaa aluksi vaikuttaa siltä, että näin konkreettisten käyttötapausten määrittely on turhaa, koska erilaisia käyttötapauksia näyttää löytyvän kymmeniä tai satoja. Todellisuudessa kuitenkin käyttötapaukset kategorisoituvat hämmästyttävän pieneen edustavaan otokseen, jolla on yllättävän suuri kattavuus (Laakso et Laakso 2004). 8 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Havaitut käyttötilanteet kategorisoidaan. Esimerkiksi käyttötilanteet “Opiskelija: Tavaramerkkilaki 4 §” ja “Yritysjuristi: Osakeyhtiölaki: 22. luku, 1 §” kuuluvat samaan kategoriaan; kategorian yksittäiset käyttötilanteet ovat variaatioita. Tyypillisesti tarkkailut lopetetaan, kun kahdessa viimeisimmässä tarkkailussa ei enää havaita juuri muuta kuin aikaisemmin havaittujen käyttötilanteiden variaatioita. Esimerkiksi Online-lakipalvelun tapauksessa määrittelijät totesivat kahdeksannen tarkkailun jälkeen, että käyttötilanteista on riittävä tietämys. Käyttötilanteita näistä kahdeksasta tarkkailusta kertyi 17 kappaletta, joiden pohjalta syntyi kahdeksan käyttötilannekategoriaa. 2.1.2. Käyttöliittymän suunnittelu Käyttöliittymän suunnittelu alkaa siten, että toiminnallinen määrittelijä valitsee yhden käyttötilanteen ja suunnittelee käyttöliittymäratkaisun simuloimalla ko. käyttötilannetta. Tavoitteena on käyttökäyttöliittymäratkaisu, jossa ko. käyttötilanteen tavoitteen saavuttaminen on mahdollisimman tehokasta. Kun käyttötilanteen voi suorittaa tehokkaasti käyttöliittymäratkaisussa, sanotaan että käyttötilanteelle on tuki käyttöliittymäratkaisussa. Kun tuki ensimmäiselle käyttötilanteelle on saavutettu, käyttöliittymäsuunnittelija valitsee seuraavan käyttötilanteen ja toistaa edellä mainitun prosessin olemassaolevan käyttöliittymäratkaisun päälle. Tavoitteena on käyttöliittymäratkaisu, jossa ensimmäiselle ja toiselle käyttötilanteelle on tuki. Kun toinenkin käyttötilanne on tuettu, varmistetaan, että syntyneet muutokset eivät ole huonontaneet edellisten käyttötilanteiden tukea. Tämä varmistus tehdään simuloimalla kaikki tuetut käyttötilanteet. Näin jatketaan, kunnes kaikki käyttötilanteet ovat tuettuja käyttöliittymäratkaisussa. Suunniteltavaan järjestelmään ei voi syntyä toimintoja (features), joita ei tarvita minkään käyttötilanteen suorittamisessa, koska jokaisen käyttötilanteen kohdalla laaditaan vain ko. tavoitetta palvelevat toiminnot ja niiden käyttöliittymäratkaisut. Jos suunnitteluryhmälle tai asiakkaalle tulee projektin aikana mieleen muita potentiaalisia hyödyllisiä toimintoja, ne asetetaan toiminnallisten määrittelijöiden tutkittavaksi: onko löydettävissä jokin huomiotta jätetty tavoitepohjainen käyttötapaus, jossa tätä uutta toimintoa tarvittaisiin? Jos tarvetta toiminnon käytölle ei ole, se dokumentoidaan tarpeettomaksi, kunnes joku pystyy osoittamaan käyttötilanteen, jossa ko. toiminto tuo lisäarvoa käyttäjälle. (Laakso et Laakso 2004) 9 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Käyttöliittymäsuunnittelu tehdään pääasiassa kynällä ja paperilla ja siinä käytetään aina havaittujen käyttötilanteiden realistista dataa. Syntyvä käyttöliittymäratkaisu on paperiprototyyppi, jolla voidaan simuloida yksityiskohtaisesti havaittujen käyttötilanteiden tukea. 2.1.3. Käyttöliittymäratkaisun arviointi Koska toiminnalliset määrittelijät ovat hyvin harvoin suunniteltavan järjestelmän potentiaalisia käyttäjiä, he eivät ole suunniteltavan järjestelmän erikoisalan asiantuntijoita. Kun kyse on vähänkin vieraammasta erikoisalasta, toiminnallisten määrittelijöiden ymmärrys alasta saattaa hyvinkin rajoittua käyttäjätarkkailuiden aikana kertyneeseen ymmärrykseen. Puuttuvat toiminnallisuudet, puutteet ratkaisussa olevassa toiminnallisuudessa ja tehokkuusongelmat saadaan selville kustannustehokkaasti käyttäjien kanssa tehtävien käyttöliittymän läpikäyntien avulla. Läpikäyntipalaverin aikana tulee hyvin esille puutteita ja väärinkäsityksiä työtehtävien ymmärtämisessä sekä mm. sellaisia poikkeustapauksia, joihin ei olla aiemmissa käyttäjätarkkailuissa osuttu. (Laakso et Laakso 2004) Jokaisen läpikäynnin jälkeen löytyneet ongelmat korjataan ja käyttöliittymäratkaisua päivitetään. Käyttöliittymäratkaisut ja järjestelmässä tarvittava toiminnallisuus on edelleen olemassa vain paperiprototyyppinä, jonka muuttaminen testitulosten perusteella on nopeaa. Kun läpikäynneissä löytyneet ongelmat on korjattu, on saavutettu riittävä varmuus siitä, että prototyypin mukainen tietokoneohjelma tulee olemaan hyödyllinen käyttötilanteissa esitettyjen tavoitteiden saavuttamiseen. Tällöin toteutustyö voidaan aloittaa. 2.2. Lean-ajattelu Lean-ajattelussa keskitytään arvoketjuihin eli toisiinsa liittyviin aktiviteetteihin jotka luovat arvoa. Keskeistä on luoda käyttäjille arvokkaita asioita ja minimoida valmistuksesa syntyvä jäte tai hukka. (Ward, 2007) 2.2.1. Lean-ohjelmistokehityksen seitsemän periaatetta Mary ja Tom Poppendieck ovat formalisoineet Lean-ajattelun soveltamisen ohjelmistokehitykseen. Poppendieckit esittävät seitsemän periaatetta, jotka ovat ajattelun apuvälineitä parhaiden käytäntöjen löytämiseksi (Poppendieck et 10 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Poppendieck, 2003). Tiivis esitys löytyy Wikipediasta (Wikipedia: Lean software development). Eliminoi jäte. Jäte on mitä tahansa, joka ei lisää asiakkaan havaitsemaa arvoa tuotteessa. Ohjelmistokehityksessä tyypillistä jätettä ovat määrittelydokumentit, joista ei seuraa mitään, vastuun siirrot, osittain toteutetut ominaisuudet tai täysin käyttämättömät ominaisuudet. Vahvista oppimista. Tuotekehityksen ja tuotteen valmistamisen eroa voidaan kuvata reseptin kehittämisen ja reseptin mukaan kokkaamisen metaforalla. Vaikka molempia prosesseja voidaan parantaa (reseptiä voidaan parantaa ja reseptin mukaan tehtyä ruokaa voidaan tehdä nopeammin tai raaka-aineiden suhteen tehokkaammin), toimenpiteet ovat aivan erilaiset. Parhaan reseptin löytymiseksi on tehtävä monta kokeilua ja opittava kokeilujen tuloksista. Sama pätee tuotekehitykseen. Parhaiten menestyvät tuotekehitysorganisaatiot pystyvät luomaan ympäristöjä, joissa kokeilua tehdään ja kokeilujen tuloksista opitaan. Päätä mahdollisimman myöhään. Ohjelmistokehitykseen liittyy aina tietty määrä epävarmuutta: tietyllä hetkellä on tietynlainen näkemys siitä, mitä ominaisuuksia tarvitaan seuraavaksi tuotteeseen; tämä tietämys saattaa muuttua radikaalisti päivienkin aikavälillä. Niinpä on hyvä rakentaa ohjelmistokehitysprosessi siten, että siinä voidaan tehdä sitovia päätöksiä mahdollisimman myöhään. Mitä myöhempään sitovia päätöksiä voidaan tehdä, sitä paremmalla liiketoiminnallisella tietämyksellä nämä päätökset voidaan tehdä. Toimita mahdollisimman nopeasti. Jokainen tietokoneohjelmaan toteutettu toiminnallisuus on tehty investointi, jonka tuotto on nolla, kunnes se saatetaan käyttäjien käyttöön. Toiminnallisuuksiin tehdyillä investoinneilla on sitä parempi tuotto (ROI), mitä aikaisemmin ne saadaan käyttäjille. Valtuuta tiimi. Etenkin ohjelmistokehityksessä detaljit ratkaisevat. Abstraktit, korkean tason kuvaukset järjestelmästä ovat joko toivottoman riittämättömiä tai mahdottomia kommunikoida muuten kuin toimivan tietokoneohjelman muodossa. Lean-ohjelmistokehityksessä tunnustetaan se käytännön tosiasia, että hyvän tietokoneohjelman tuottamiseen liittyvä detaljien tuntemus voi olla vain toteuttavan tiimin jäsenillä. Tällöin valta detaljeista tulee olla tiimillä. Tiimi tunnustetaan primääriksi arvoa tuottavaksi yksiköksi, jolloin mm. projektinhallinta nähdään tiimiä tukevana toimintona, ei ohjaamisena tai käskyttämisenä. 11 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Sisällytä eheys järjestelmään. Tuotekehitysorganisaatiolla on kaksi eheyden käsitettä. 1) Havaittu eheys tarkoittaa sitä, miten hyvin tuotekehitystä tilaava taho ymmärtää tuotekehitysorganisaation. Tämä kattaa sen, miten tuotekehitystä esitellään, miten tuotekehityksen tuloksia toimitetaan, miten tuotekehitystä tilataan, minkälaisia kuluja tuotekehityksesta seuraa ja minkälaisia ongelmia organisaatio ratkaisee. 2) Käsitteellinen eheys tarkoittaa sitä, että organisaation palat toimivat hyvin yhteen ja että organisaatio on riittävässä määrin joustava, ylläpidettävä, tehokas ja responsiivinen. Näe kokonaisuus. Tietokoneohjelmia ei enää kannata tarkastella itsenäisenä yksikkönä vaan suhteessa ympäristöönsä: tietokoneohjelma on se itse ja sen interaktio ympäristönsä kanssa. Mitä isompi järjestelmä, sitä enemmän on osia, joiden on toimittava yhdessä, jotta tavoitteet saavutetaan. Kokonaisuuden tunnistaminen ja toimivien rajapintojen muodostaminen on oleellista. 2.2.2. Muri, mura ja muda-hukkakäsitteet Toyota-tapa on Toyota-autovalmistajan kehittämä johtamiskulttuuri, jolla johdetaan autojen valmistusprosessia (Wikipedia: Toyota production system). Toyota-tapa on geneerisemmän Lean-ajattelun esimuoto. Toyota-tapa tuntee kolme erilaista hukan käsitettä. Muri (Wikipedia: Muri) on japanikielinen termi ylikuormitukselle, kohtuuttomuudelle ja absurdiudelle. Murilla tarkoitetaan hukan muotoa, joka johtuu työn standardoinnin puutteesta. Jotta työ voidaan standardoida, työn tulokselle tulee määritellä standardiehto. Kun standardiehto on olemassa, työ voidaan standardoida ja ohjeistaa siten, että kaikki työn tulos tähtää standardiehdon täyttämiseen. Jos jonkun henkilön vastuulla on vaihtaa sairaalan vuodeosaston lakanat kerran päivässä, muri-hukkaa olisi esimerkiksi se, että vuodevaatevarastosta ei löydy puhtaita lakanoita ja ko. henkilö joutuu selvittämään, mistä niitä löytyy (Rosenthal 2008). Mura on japaninkielinen termi epätasaisuudelle ja epäjohdonmukaisuudelle. Mura-hukka vältetään rakentamalla tuotantojärjestelmä, joka takaa sen, että tuotantoprosessi saa tarvitsemansa komponentit oikeaan aikaan kuitenkaan rakentamatta suuria varastoja. (Wikipedia: Mura) Muda (Wikipedia: Muda) on japaninkielinen termi toiminnalle, joka tuhlaa resursseja tai ei tuota arvoa. Erityisesti muda on hyödyllinen hukkakäsite 12 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää ohjelmistotuotannon kannalta. Mudalla on seitsemän erilaista tunnistettua muotoa: Ylituotanto on joko liikaa tai liian aikaisin tuottamista. Pyrkimys on tuottaa juuri sen verran, että tarve saadaan tyydytettyä. Tällöin resursseja käytetään tuotannossa optimaalisesti. Ylituotanto ohjelmistokehityksessä kattaa erityisesti määrittelydokumentit, joista ei seuraa mitään ja käyttämättömät ominaisuudet. Tarpeettomat varastot syntyvät ylituotannon myötä. Asiakkaan tarvetta mukaillaan rakentamalla tuotantojärjestelmä vetäväksi eikä työntäväksi. Kun tuote valmistetaan esim. vasta tilauksen synnyttyä, varasto voidaan minimoida. Tällöin varastoon sidottu pääoma saadaan minimoitua. Ohjelmistokehityksessä varasto on käytännössä keskeneräiset (eli työn alla olevat) ominaisuudet. Keskeneräisestä työstä käytetään yleisesti kirjainlyhennettä WIP (work in progress). Turhat liikkeet ovat tuotannot puolella tyypillisesti ergonomiaan liittyviä puutteita. Valaistus on huono, työkalut eivät ole saatavilla helposti jne. Ohjelmistokehityksen ergonomia on abstraktimpi mutta perusteltu käsite. Kaikenlaiset automatisoitavissa olevat manuaaliset toimenpiteet, jotka liittyvät esimerkiksi ohjelmointityöhön, voidaan nähdä turhina liikkeinä. Tällaisia ovat esimerkiksi testien suorittaminen manuaalisesti tai monimutkainen, ihmisen väliintuloa vaativa tuotantoonsiirto. Tehtävien vaihtuminen voi häiritä merkittävästi henkilön keskittymistä ja täten tuottavuutta. Tehtävien vaihdolla on keskittymisen menettämisen ja uudelleen hankkimisen kustannuksen lisäksi aina arvoketjun katkaisemiseen liittyvä kustannus: potentiaalisesti koko arvoketju saattaa kärsiä. Virheet ohjelmistotuotannossa tarkoittavat sitä, että tietokoneohjelma ei toimi tarvittavalla tavalla, jolloin se ei tuota optimaalisella tavalla arvoa käyttäjälleen. Odottaminen katkaisee arvoketjun. Ohjelmistotuotannossa tyypillisiä syitä odotukselle ovat toiminnallisuuden hyväksynnän viivästyminen, määrittelyiden puuttuminen, prioriteettien puuttuminen ja tekniset esteet. Turhaa kuljettamista ohjelmistotuotannossa vastaavat tietämyksen siirrot. Ward painottaa, että tietämyksen siirtoon liittyvät tietämyshukat ovat merkittävimpiä (Ward, 2007). Tietämyksen, vastuun, toiminnan ja palautteen erottaminen toisistaan on suurin tietämyshukan lähde. Jos esimerkiksi yksi henkilö tekee vaatimusanalyysiä, toinen vaatimusmäärittelyä ja kolmas 13 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää toiminnallisuuksien toteutusta määrittelyn pohjalta, näiden kolmen henkilön välillä tapahtuu tietämyksen siirtoa, jossa on kaikelle ihmiskommunikaatiolle luonnollista virhealttiutta ja tehottomuutta, kun kommunikoidaan monimutkaisia käsitteitä. 2.2.3. Wardin tietämyshukan kolmas variaatio: toiveajattelu Ward esittelee mallin, jolla tuotekehityksessä kerätyn tietämyksen piirissä olevaa hukkaa voidaan luokitella (Ward, 2007). Mallissa tietämyshukka jaetaan kolmeen eli kategoriaan: hajontaan, siirtoihin ja toiveajatteluun. Toiveajattelu kattaa kaikenlaisen päätöksenteon perustuen puutteelliseen tietämykseen. Toiveajattelu on erityisen relevantti käsite tietokonesovellushankkeiden määrittelymateriaalin validiuden analyysissä. On tyypillistä, että määrittelymateriaalia pidetään valmistuttuaan lähtökohtaisesti validina, vaikka liiketoimintaympäristö on ehtinyt määrittelytyön aikana ehtinyt muuttua merkittävästi. 2.3. Luotetun neuvonantajan malli Guided-flow’ssa olennaista on se, että tietokonesovelluksen tilaavan tahon (asiakkaan) ja käyttöliittymäsuunnittelijan (toiminnallisen määrittelijän) interaktion syvyys nähdään kriittisenä hankkeen onnistumisen kannalta. Erityisesti toiminnallisen määrittelijän ja asiakkaan on pystyttävä luomaan jo hankkeen alkuvaiheessa luottamukselliset suhteet, jotta riittävä jaettu ymmärrys ongelmasta ja sen ratkaisutavoista saavutetaan. Luotetun neivonantajan malli (Maister, 1988) on merkittävällä tavalla vaikuttanut Guided-flow’lla tehtävien hankkeiden alkupään käytäntöihin. David Maister esittää teoksessaan The Trusted Advisor asiantuntijuuden päälle rakennettavaa luotetun neuvonantajan mallia (Maister, 1988). Mallin perusolettamus on se, että mitä syvempi luottamus asiakkaan ja toimittajan välillä on, sitä laajemmista ja syvemmistä asioista asiakas on valmis puhumaan asiantuntijan kanssa. Tämä on molemmille osapuolille hyödyllistä: Asiakas voi löytää vaikeisiin ongelmiinsa ratkaisuja, jolloin suuren lisäarvon syntyminen hänelle voi olla mahdollista. Asiantuntija voi päästä käyttämään asiantuntemustaan koko laajuudessaan. Mallissa tunnistetaan neljä asioimisen tasoa: palvelun tarjoamiseen perustuva taso, tarpeeseen perustuva taso, ihmissuhteeseen perustuva taso ja luottamukseen perustuva taso (kuva 2). 14 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Kuva 2. Luotetun neuvonantajan mallin asioinnin tasot (Maister, 1988). Tyypillisesti asiantuntijaorganisaatiot tyytyvät palvelun tarjoamisen tai tarpeeseen perustuvan asioinnin tasoon (tasot 1 ja 2). Tällöin asiantuntija tarjoaa ja asiakas on valmis vastaanottamaan vastauksia, asiantuntemusta tai ratkaisuja asiakkaan määrittelemiin ongelmiin. Hyödyllisimmillään asiantuntija voi olla asiakkaalleen, kun hän pystyy tarjoamaan näkemyksiään ja todella ymmärtää asiakkaan ongelmia. Jotta asiakas pystyy vastaanottamaan näkemyksiä tai jakamaan todella vaikeita ongelmia asiantuntijan kanssa, tietty määrä luottamusta pitää olla osapuolien välillä (tasot 3 ja 4). Mitä enemmän asiakas luottaa asiantuntijaan, sitä useammin asiakas muun muassa • pyytää asiantuntijan neuvoa, • on taipuvainen toimimaan asiantuntijan neuvojen mukaan, • on halukas jakamaan arkaluontoista informaatiota, joka helpottaa ongelmien ratkaisemisessa, • on valmis antamaan anteeksi, kun virheitä tapahtuu ja • pyytää asiantuntijaa riittävän aikaisessa vaiheessa mukaan ongelmanratkaisuun. Luotetun neuvonantajan malli tarjoaa työkaluja luottamuksen systemaattiseen rakentamiseen. Esimerkkejä: • Kuvaile ja kerro, älä sanele. 15 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää • Yritä selvittää, mikä tässä tapauksessa on erityislaatuista, ei tuttua. • Varmista, että neuvoasi halutaan. • Ansaitse oikeus antaa neuvoja. • Kysy. • Ole kiinnostunut itse henkilöstä. • Pyydä apua, kun sitä tarvitset. Reaktorin kaltaisessa ohjelmistoalan konsultointiyrityksessä on liiketoiminnan kannalta hyödyllistä, että asiakassuhteissa luottamus syvenee ajan myötä. Tyypillisesti Reaktorin asiakkaiden vaikeimmat ongelmat liittyvät pitkäaikaisten liiketoimintaprosessien tukemiseen tietokoneiden avulla, jolloin onnistuakseen asiakassuhteet ovat pitkiä ja ratkaistavat ongelmat ovat vaikeita. Luottamus on tällöin kanssakäymistä ja asioiden aikaansaamista merkittävästi helpottava tekijä. Maister painottaa, että luottamus on aina kahden henkilön välisen suhteen ominaisuus; organisaatiot tai yritykset eivät luota toisiinsa (Maister, 1988). Tietokoneilla ratkaistavia ongelmia tyypillisesti ratkotaan usein kokonaisen asiantuntijatiimin toimesta ja asiakkaana on joukko asiakasyrityksen edustajia. Tästä huolimatta luottamuksen rakentaminen on edelleen henkilöiden välinen prosessi. Tämä on otettava luottamuksen rakentamisen jaksottamisessa. Erityisen tärkeää on hankkeiden alussa tunnistaa, keiden tulee muodostaa nopeasti luottamusta toisiinsa. 2.4. Scrum-prosessikehys Scrum on prosessikehys, jonka Ken Schwaber ja Jeff Sutherland formalisoivat vuonna 1993. Scrum on saanut erittäin paljon vaikutteita artikkelista “New new product development game” (Takeuchi et Nonaka, 1986), joka vertailee perinteisiä tuotekehitysmenetelmiä viestijuoksuksi ja esittää paremman metodin analogiaksi rugbya. “Scrum” on rugbyn käsite, joka tarkoittaa rugbyjoukkueen etenemistä yhdessä pelikentällä. Scrum on yleisimmin käytetty ketterä prosessikehys. Sitä käyttävät pienet startup-yritykset ja globaalit suuryritykset (Sutherland et Schwaber, 2007; VersionOne, 2008). 16 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Tässä osassa esittelen Scrumin perustan. Lähteenä on käytetty teoksia (Deemer et al., 2009) ja (Schwaber et Sutherland, 2009). Vaikka Scrumin variaatioita on yhtä monta kuin sen käyttäjiä, alla kuvataan ne yhteiset piirteet ja peruskäsitteet, jotka ovat Scrumin perusedellytykset. Erityistä painoa kuvauksessa annetaan niille piirteille, jotka ovat Guided-flow’hun erityisen relevantteja. 2.4.1. Filosofia ja fokus Scrum nojaa empiirisen prosessikontrolliteoriaan (Schwaber et Sutherland, 2009). Perusolettamus on, että tuotekehitystyön ympäristö ei ole vakaa vaan jatkuvasti muuttuva. Perinteiset mallit keskittyvät hankkeisiin, jotka saattavat sisältää useita tuotteita. Scrum on tiukasti tuotekeskeinen ja määrittelee, miten yksittäistä tuotetta kehitetään jatkuvasti. 2.4.2. Peruskäsitteet Scrumissa työ on organisoitu vakiopituisiin työrupeamiin, joita kutsutaan pyrähdyksiksi tai sprinteiksi (engl. sprint); jälkimmäinen on vakiintunein suomenkielinen nimitys. Tyypillinen sprintin kesto on yhdestä neljään viikkoa. Jokaisen sprintin päätteeksi oletetaan uusia ominaisuuksia tuotteeseen. Työ organisoidaan siten, että työtahti on kestävä. Kestävällä työtahdilla (engl. sustainable pace) tarkoitetaan sitä, että sprinttejä voidaan tehdä toistensa perään määrämättömän monta ja niiden väliin ei tarvita taukoja. Kuvassa 3 on esitetty Scrumin perustyösyklit. 17 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Kuva 3. Scrumin perustyösyklit. Tuoteomistajan (engl. product owner) vastuu on maksimoida tuotekehitykseen tehtyjen investointien tuotto. On tunnettua, että ohjelmistotuotteen kehityksen kulujen valtaosa muodostuu henkilökuluista ja ne ovat varsin ennustettavia lyhyellä aikavälillä. Tuoteomistajan vastuu on tietyin väliajoin päättää, miten ohjelmistokehitystiimin tehty investointi käytetään. Tuoteomistaja päättää, mitä tehdään. Ohjelmistokehitystiimin tekemän työn tuottoa on suoraan vaikea mitata. Tuoton arviointi on monitahoinen ongelma, joka vaatii ymmärrystä tarvituista inkrementeistä, teknisistä riskeistä ja inkrementtien välisistä riippuvuuksista. Tuoteomistajan näkemyksiin saattaa vaikuttaa suurikin joukko tahoja. Scrum sanelee kuitenkin yhden säännön: tuoteomistaja on yksi henkilö, ei koskaan ryhmä henkilöitä. Tähän on kaksi tärkeää syytä: 1) Tiimi tarvitsee ristiriidatonta informaatiota, jotta se voi keskittyä arvon tuottamiseen (eikä informaation kaivamiseen). 2) Koska kasvokkain käytävällä keskustelulla on keskeinen funktio prosessissa, tiimillä tulee olla päivittäinen mahdollisuus keskustella tuoteomistajan kanssa. Tämä on helpointa järjestää yksittäisen henkilön kanssa. 18 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Tiimi on keskeisin arvoa tuottava yksikkö Scrumissa. Tiimi luo tuotteen, josta asiakas on valmis maksamaan. Tiimien täysivaltaisuus ja itseorganisoituminen tarkoittaa sitä, että tiimillä on oikeus päättää, miten tuoteomistajan toivoma tietokoneohjelman toiminnallisuus rakennetaan. Koska toimivat inkrementit tietokoneohjelmassa ovat edistyksen mittari, tiimin taitopaletissa tulee olla ne kaikki tekijät, jotka tarvitaan toivotun tietokoneohjelman tekemiseen. Tiimin koko ei määräydy pelkästään teknisillä ja aikatauluvaatimuksilla vaan myös ihmisten kommunikaatiorajoitteilla. Itseorganisoitumisen perusedellytys on, että yhdessä työskentelevät ihmiset pystyvät tehokkaasti kommunikoimaan hankkeen nykytilaa toisilleen. Tämä kommunikointi alkaa menettää nopeasti tehoaan, kun tiimin koko on yli yhdeksän. Scrum suositteleekin optimaaliseksi tuotekehitystiimin kooksi seitsemää. Scrum-mestari (engl. Scrum master) on henkilö, joka pitää huolta siitä, että prosessia noudatetaan ja omista toimista oppimista tapahtuu tuotekehitysprosessin aikana. Kokemattoman tiimin kanssa scrum-mestarin pääasiallinen vastuu on pitää huolta siitä, että Scrumin työskentelytapojen noudatetaan. Tiimin kehittyessä päävastuu on enemmänkin toiminnan parantamisen fasilitointi. Keskeisin informaatiorakenne Scrumissa on tuotteen työlista (engl. product backlog). Sen avulla kommunikoidaan mihin investointeja ollaan tekemässä ja mitä on saatu aikaiseksi. Työlista muuttuu koko tuotteen kehityskaaren ajan liiketoiminnallisten tarpeiden mukaan. Jollei työlista heijasta parasta ymmärrystä siitä, millä inkrementeillä on paras tuotto, työlista ei ole ajantasainen. Tällöin päätöksenteko siitä, mitä seuraavaksi tulee toteuttaa, ei perustu parhaaseen tietämykseen. Työlista on priorisoitu lista tuotteen ominaisuuksia. Listan järjestys kuvaa näkemystä siitä, mikä ominaisuuksien tuotto on suhteessa toisiinsa: mitä ylempänä ominaisuus on, sitä parempi tuotto sillä on suhteessa muihin ominaisuuksiin. Ominaisuuden tuotto on periaatteessa hyvin yksinkertainen: ominaisuuden arvo asiakkaalle jaettuna ominaisuuden kehityskululla. Käytännössä ominaisuuden arvoa asiakkaalle on tyypillisesti vaikea arvioida. Tällöin liiketoiminnallisella näkemyksellä on suuri vaikutus työlistan järjestykseen. 19 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Scrumin suosittelema formaatti ominaisuuksille on käyttäjätarina (engl. user story) (Cohn, 2004). Käyttäjätarinat koostuvat kolmesta osasta: kortista, keskustelusta ja vahvistuksesta. Kortissa on virke, joka kirjoitetaan tietyn formaatin muotoon ja joka identifioi kyseessä olevan ominaisuuden, mutta ei dokumentoi sitä. Täysi tieto ominaisuuden yksityiskohdissa saavutetaan sprintin suunnittelussa, jossa tiimi ja tuoteomistaja keskustelevat. Ominaisuuden lopullinen dokumentointi on itse toteutettu ja vahvistettu ominaisuus. Valmiin määritelmä (engl. definition of done). Scrum vaatii, että työlistan jokainen ominaisuus on joko valmis tai ei-valmis. Scrumissa ei siis hyväksytä esimerkiksi 95-prosenttisesti valmiita ominaisuuksia. Toki ei-valmis ominaisuus voi olla jossain työvaiheessa, jonka tunnistaminen on arvokasta kehitysvaiheessa, mutta tämä on tiimin sisäinen käytäntö. Scrum vaatii siis valmiin määritelmän, mutta ei ota millään tavalla kantaa, mikä se on. Julkaisun edistymiskaavio (engl. release burndown chart). Ennustaminen Scrumissa perustuu empiiriseen mittaan, jota kutsutaan vauhdiksi (engl. velocity). Tuotekehitystyön alussa tapahtuvan oppimisen jälkeen oletetaan, että tiimin tuottavuus vakioituu tietylle tasolle. Ominaisuuksille annetaan pistearvio, joka kuvastaa ominaisuuden suhteellista toteutuskustannusta muihin ominaisuuksiin verrattuna. Jos ominaisuus A on yhden pisteen kokoinen ja ominaisuus B kolmen pisteen kokoinen, ominaisuuden B toteuttamiseen kuluu tiimin arvion mukaan kolme kertaa enemmän resursseja. Tiimin vauhti on sprintissä valmiiksi saatujen ominaisuuksien pisteiden summa. Julkaisulla tarkoitetaan sellaista joukkoa ominaisuuksia, jonka valmistumisen myötä tuotteesta tehdään uusi versio käyttäjille. Kun julkaisuun sisältyvät ominaisuudet on pisteytetty, voidaan tiimin vauhdilla arvioida, kuinka monta sprinttiä pitää tehdä, jotta toivotut julkaisun ominaisuudet ovat valmiita. Kuvan 4 esimerkissä on tehty seitsemän sprinttiä ja niiden aikana on toteutettu 180 pisteen edestä toiminnallisuuksia. Koko julkaisun laajuus on 400 pistettä, jolloin tarvitaan arviolta 15 sprinttiä julkaisun toiminnallisuuden valmistamiseksi. 20 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Kuva 4. Esimerkki julkaisun edistymiskaaviosta. Sprintin suunnittelussa (engl. sprint planning) tuoteomistaja ja tiimi määrittelevät seuraavan sprintin sisällön ja sitoutuvat siihen. Sprintin suunnittelu pidetään välittömästi edellisen sprintin loputtua. Tuoteomistalla on tuotteen (priorisoitu) työlista. Ominaisuuksia käydään läpi työlistan kärjestä lähtien. Tuoteomistaja selittää ominaisuuksien liiketoiminnalliset perusteet ja hyödyt käyttäjälle. Avoimella keskustelulla pyritään varmistamaan mahdollisimman nopeasti yhteisymmärrys siitä, mitä ominaisuus tarkoittaa. Jos keskustelun aikana ilmenee jotain sellaista, joka estää tiimiä toteuttamasta ko. toiminnallisuutta, ominaisuus palautetaan tuoteomistajalle tarkennettavaksi. Perustuen edellisten sprinttien vauhtiin suunniteltuun sprinttiin otetaan sopiva määrä toiminnallisuuksia työlistasta. Valinnan jälkeen tiimi analysoi ominaisuudet pienemmiksi tehtäviksi. Kun sprintin sisältö on päätetty, tiimi saa sprintin ajaksi työrauhan. Sprintin sisältöä ei muuteta paitsi erityisellä poikkeusmenettelyllä eli abnormaalilla sprintin keskeytyksellä (engl. abnormal sprint termination). Tällöin tuoteomistaja ottaa sen riskin, että kaikki sprintin aikana jo tehty työ menee hukkaan. 21 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Sprintin koskemattomuuden idea on luoda tiimille edellytykset keskittyä lisäarvon tuottamiseen. Jos tätä rauhaa ei ole, tyypillisesti tiimin työtä keskeytetään lukemattomilla eri tavoilla. Tiimi ei voi sitoutua tavoitteisiin, jos käytettävissä oleva työpanos ei ole ennustettavissa. Kun sprintti on keskeytyksetön, tuoteomistaja menettää kontrollin sprintin sisällä, mutta vastineeksi hän saa luotettavampia arvioita tulevaisuudesta ja suuremman toimitusvarmuuden. Tiimi kokoontuu joka päivä samaan aikaan palaveriin, jota kutsutaan päivittäiseksi palaveriksi seisten (engl. daily standup), jossa ollaan tyypillisesti seisten ja jokainen tiimin jäsen vastaa vain seuraaviin kysymyksiin: 1. Mitä tehtäviä olen saanut valmiiksi sitten viime dailyn? 2. Mitä tehtäviä aion tehdä ennen seuraava dailya? 3. Mitä esteitä työlleni on? Palaverin vakiintunut nimi on daily. Vain tiimin jäsenet osallistuvat dailyyn. Dailyn tarkoitus on ylläpitää työn tekemisen rytmiä ja poistaa ominaisuuksien valmistumisen esteitä. Dailyjen pohjalta tiimi voi myös arvioida sprintin työmäärän realistisuutta. Jos työtä on selvästi liikaa, tuoteomistajaa pyydetään valitsemaan, mikä ominaisuus jätetään tekemättä. Sprinttikatsaus (engl. sprint review). Sprintillä on aina määrätty pituus, joten se myös loppuu aina ennalta määrätyllä hetkellä. Katsauksessa tiimi esittelee tuoteomistajalle ja muille sidosryhmille valmistuneet ominaisuudet. Tiimi ei saa esittää keskeneräisiä toiminnallisuuksia. Katsauksen jälkeen tuoteomistaja merkitsee tehdyt ominaisuudet tuotteen työlistassa valmiiksi. Sprintin retrospektiivi (engl. sprint retrospective). Sprinttikatsaus on kaikille sidosryhmille avoin tilaisuus, jossa edistymistä voidaan arvoida ja käydä läpi monien tahojen toimesta. Sprintin retrospektiivi on tiimin keino parantaa toimintatapojaan tarkastelemalla kuluneen sprintin tapahtumia ja oppimalla niistä. Tyypillisesti tiimit käyttävät ulkopuolisia fasilitaattoreita luomaan strukturoitua keskustelua menneistä tapahtumista ja auttamaan tiimiä sitoutumaan konkreettisiin tiimin toimintaa parantaviin tavoitteisiin. Tiimi pyrkii fasilitaattorin avulla tunnistamaan työskentelytavoissaan asioita, joista halutaan pitää kiinni ja joita halutaan parantaa. Tyypillisesti tiimi sitoutuu tekemään pieniä kontrolloituja muutoksia toimintaansa, jotta niiden efektiä voidaan 22 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää arvioida seuraavan sprintin retrospektiivissa. Tämä on fundamentaalein osa Scrumin empiirisen prosessikontrolliteoriaan perustuvaa filosofiaa. Muutoksia ei tehdä, ellei niiden efektiä voida todeta. 23 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää 3. Käyttöliittymien tehokkuudesta 3.1. Tehokkuusjärjestys Jotta eri käyttöliittymiä voidaan vertailla keskenään, tarvitaan olla suureet työnkulkujen vaativuudelle. Määritän seuraavat mitat: Mekaaninen kuorma Työnkulun aikana tehtyjen datan syöttöjen, valintojen ja siirtymien yhteenlaskettu määrä. Muistikuorma Niiden asioiden määrä, joita työnkulkua suorittava henkilö joutuu referoimaan muistista (työmuistissa tai muistiinpanovälineissä) useammin kuin kerran työnkulun aikana. Näiden kahden suureen avulla määritän käyttöliittymille tehokkuusjärjestyksen. Olkoon • KT käyttötilanne • KÄLI1 ja KÄLI2 käyttöliittymiä • Mech(KT, KÄLI) käyttötilanteen KT työnkulun mekaaninen kuorma käyttöliittymällä KÄLI • Mem(KT, KÄLI) käyttötilanteen KT työnkulun muistikuorma käyttöliittymällä KÄLI. 24 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Tehokkuusjärjestys KÄLI1 on tehokkaampi kuin KÄLI2, jos ja vain jos Mech(KT, KÄLI1) ≤ Mech(KT, KÄLI2) ja Mech(KT, KÄLI1) ≤ Mech(KT, KÄLI2) mutta ei kuitenkaan Mech(KT, KÄLI1) = Mech(KT, KÄLI2) ja Mech(KT, KÄLI1) = Mech(KT, KÄLI2). KÄLI1 on yhtä tehokas kuin KÄLI2, jos ja vain jos Mech(KT, KÄLI1) = Mech(KT, KÄLI2) ja Mech(KT, KÄLI1) = Mech(KT, KÄLI2). Esitetyn järjestyksen puitteissa käyttöliittymät voidaan järjestää seuraavissa tilanteissa: • Jos käyttötilanteen KT työnkulun mekaaninen ja muistikuorma ovat molemmat pienempiä KÄLI1:ssä kuin KÄLI2:ssa, KÄLI1 on tehokkaampi. • Jos käyttötilanteen KT työnkulun mekaaninen kuorma on pienempi KÄLI1:ssä kuin KÄLI2:ssa, mutta muistikuormat ovat samat, KÄLI1 on tehokkaampi. • Jos käyttötilanteen KT työnkulun muistikuorma on pienempi KÄLI1:ssä kuin KÄLI2:ssa, mutta mekaaniset kuormat ovat samat, KÄLI1 on tehokkaampi. • Jos käyttötilanteen KT työnkulun mekaaninen ja muistikuorma ovat yhtä suuret KÄLI1:ssä ja KÄLI2:ssa, KÄLI1 ja KÄLI2 ovat yhtä tehokkaita. Jos käyttötilanteen KT työnkulun mekaaninen kuorma on pienempi KÄLI1:ssä ja muistikuorma pienempi KÄLI2:ssa, käyttöliittymien tehokkuutta ei voi tämän järjestyksen puitteissa määrittää. Oletetaan, että käyttötilanteessa KT KÄLI1 on tehokkaampi kuin KÄLI2. Oletetaan myös, että KÄLI1:n mekaaninen kuorma käyttötilanteen KT työnkulussa on M1 ≠ 0 ja KÄLI2:n M2. Tällöin on mielekästä verrata käyttöliittymien mekaanista tehokkuutta määrällisesti: Mekaaninen tehoero KÄLI1 on mekaanisesti M2/M1 kertaa tehokkaampi kuin KÄLI1 käyttötilanteessa KT. 25 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Jos esimerkiksi KÄLI1:n mekaaninen kuorma on 20 ja KÄLI2:n 100 käyttötilanteessa KT, KÄLI1 on mekaanisesti 100/20 = 5 kertaa tehokkaampi kuin KÄLI1 käyttötilanteessa KT. Vastaava määrittely tehdään muistikuormalle. 3.2. Esimerkkejä käyttöliittymien tehokkuuseroista 3.2.1. Toisu Toisu on Reaktorilla toteutettu ammattikorkeakoulujen toiminnansuunnittelujärjestelmä. Järjestelmällä suunnitellaan ammattikorkeakoulujen opetusta ja hallinnoidaan käytettävissä olevia henkilöja taloudellisia resursseja. Toisu on osittain tehty kahteen kertaan. Ensimmäinen versio (Toisu1) tehtiin menetelmällä, jossa suunnittelutyötä ei tehdä simuloimalla käyttäjien oikeita käyttötilanteita. Määrittelyprojektin tuloksena syntyi sanallinen vaatimusmäärittely, käyttötapaukset ja rautalankamallit. Toteutuksessa käytettiin Scrum-prosessia. Ne Toisu1:n osuudet, joilla suunnitellaan opetusta, hylättiin käyttökelvottomina ja korvattiin Toisu2:lla. Toinen versio (Toisu2) tehtiin GUIDe-prosessin mukaan Reaktorin toiminnallisten määrittelijöiden Karri-Pekka Laakson ja Vesa-Matti Mäkisen toimesta. Määrittelyvaiheessa tehtiin kaksi käyttäjätarkkailua ja neljä läpikäyntiä käyttäjien kanssa. Toteutuksessa käytettiin Scrum-prosessia. Tehokkuuseroa perinteisen määrittelyn ja GUIDe-määrittelyn pohjalta tehdyissä työkaluissa voidaan valaista suorittamalla samankaltaisia käyttötilanteita Toisu1:ssä ja Toisu2:ssa. Käyttötilanteet Toisu2:n Rakennusfysiikan perusteet -käyttötilanne on käyttäjätarkkailussa havaittu ja täten täysin realistinen. Kyseinen käyttötilanne ei mene läpi Toisu1:ssä, joten Toisu1:ä simuloidaan yksinkertaisemmalla mutta mahdollisimman realistisella Matriisi- ja differentiaalilaskenta käyttötilanteella. 26 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Koulutussuunnittelija Matriisi- ja differentiaalilaskenta Toisu1:ssä Tavoite Koulutussuunnittelija Anssi Virtasen tulee suunnitella sähkötekniikan vuosikurssin 2005–2009 peruskurssit lukuvuodelle 2005–2006. Kursseja on yhteensä 14. Matriisi- ja differentiaalilaskenta S -kurssin suunnitelma on seuraava: • Vastuuhenkilö on Juha Takkula. • Kurssi järjestetään ensimmäisellä periodilla. • Kurssilla on 20 h luentoja. Koulutussuunnittelija Rakennusfysiikan perusteet Toisu2:ssa Tavoite Koulutussuunnittelija Sanna Heikkisen tulee suunnitella lukuvuoden 2006– 2007 rakennustekniikan kurssit toisen vuosikurssin opiskelijoille. Kursseja on yhteensä 15. Rakennusfysiikan perusteet -kurssin suunnitelma on seuraava: • Kurssin vastuuhenkilö on Mikko Pekkarinen. • Kurssi järjestetään kolmannella ja neljännellä periodilla. • Luennot on tarkoitettu koko ryhmälle. Lähiopetustunteja on 92 h ja suunnittelutunteja 20 h. • Harjoitukset pidetään kolmessa osaryhmässä. Lähiopetustunteja on 32 h ja suunnittelutunteja 6 h per ryhmä. • Kurssin harjoitukset alkavat vasta luentojen jälkeen. • Kurssin suunnittelu on kesken, koska Mikko Pekkariselta ei ole varmistettu, että hän pystyy pitämään luennot. 27 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Toisu1:n ja Toisu2:n tehokkuuden vertailu yksittäisten kurssien suunnittelulla Rakennusfysiikan perusteet -käyttötilanteen työnkulku on havainnollistettu kuvassa 5, “Rakennusfysiikan perusteet -kurssin suunnittelu Toisu2:lla”. Matriisi- ja differentiaalilaskenta -käyttötilanteen työnkulku on havainnollistettu kuvassa 6, “Matriisi- ja differentiaalilaskenta -kurssin suunnittelu Toisu1:lla”. Em. kuvissa on esitetty työnkulkujen suoritukset kuvasarjoina. Kuvasarjojen pituudet kuvaavat karkealla tasolla työnkulkujen suoritusten mekaanista kuormaa. Työnkulkujen suoritus kuvissa etenee ylhäältä alas, vasemmalta oikealle. Kuva 5. Rakennusfysiikan perusteet -kurssin suunnittelu Toisu2:lla. 28 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää 29 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Kuva 6. Matriisi- ja differentiaalilaskenta -kurssin suunnittelu Toisu1:lla. 30 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Toisu1:ssä suoritetun työnkulun mekaaninen kuorma on 83 toimenpidettä ja muistikuorma 5 referoitavaa asiaa: kurssin vastaavan nimi, luennot-tehtävän tunnus, periodin alkupäivämäärä, periodin loppupäivämäärä ja luentojen tuntimäärä. Toisu2:ssa suoritetun työnkulun mekaaninen kuorma on 19 toimenpidettä ja muistikuorma 0 referoitavaa asiaa. Kyseisessä käyttötilanteessa Toisu2 on mekaanisesti yli neljä kertaa tehokkaampi kuin Toisu1. Toisu1:ssä on viisi referoitavaa asiaa enemmän. Ks. kuvat 7 ja 8. Mekaaninen kuorma yksittäisen kurssin suunnittelussa Toisu1 Toisu2 0 23 45 68 90 Kuva 7. Toisujen mekaaniset kuormat yksittäisen kurssin suunnittelussa. 31 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Muistikuorma yksittäisen kurssin suunnittelussa Toisu1 Toisu2 0 1 3 4 5 Kuva 8. Toisujen muistikuormat yksittäisen kurssin suunnittelussa. Toisu1:n tehottomuuden syitä Toisu1 kärsii hyvin monista tehottomuuden lähteistä, joista esitän kaksi: • Toisu1 ei muista periodien alku- ja loppupäivämäärää. • Toisu1:ssä päivämäärän syöttö on mekaanisesti tehotonta. Kuvassa 6a on esitetty yksityiskohta kurssin ajankohdan määrittelystä. Käytännössä kaikki kurssit pidetään periodien määrääminä ajanjaksoina; on hyvin harvinaista, että kursseilla on periodeista eroava aikataulu. Silti Toisu1 pakottaa käyttäjän määrittämään kurssin ajankohdan päivän tarkkuudella ikään kuin periodeja ei olisi olemassakaan. Lisäksi yksittäisen päivämäärän syöttäminen on hyvin tehotonta: käyttäjä joutuu avaamaan päivämäärän valitsimen ja valitsemaan kuukauden, vuoden ja päivän. Sama toimitus tehdään sekä kurssin aloitus- että lopetuspäivälle. Vastaavat toimenpiteet useaan kertaan toistettuna selittävät suuren osan Toisu1:n tehottomuudesta. Toisu1 sisältää myös paljon vältettävissä olevaa navigointia näkymästä toiseen. 32 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Kuva 6a. Matriisi- ja differentiaalilaskenta -kurssin ajankohdan määrittely Toisu1:lla. Toisu1:n ja Toisu2:n tehokkuuden vertailu yksittäisten koulutusohjelmien vuosikurssin kurssitarjonnan suunnittelulla Oletetaan, että Toisu1:lla ja Toisu2:lla suunnitellaan saman koulutusohjelman tietyn vuosikurssin kurssitarjonta. Oletetaan myös, että kurssitarjonta on 19 kurssia ja kurssien suunnittelu on työmäärältään keskimäärin samanlainen kuin yllä kuvatuissa käyttötilanteissa. Oletetaan myös, että molemmilla järjestelmillä suunnitellaan lukuvuotta ensimmäistä kertaa; vanhoja lukukausia, joita voisi käyttää hyödyksi, ei ole. Tälloin tehokkuusero mekaanisen kuorman suhteen pysyy samana (Toisu1: 1577, Toisu2: 361), mutta muistikuorma kasvaa Toisu1:ssä 59 asiaan. Toisu1 on tässä käyttötilanteessa muistikuormaltaan vielä tehottomampi suhteessa Toisu2:een. 33 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Toisu1:n ja Toisu2:n tehokkuuden vertailu yksittäisten koulutusohjelmien vuosikurssin kurssitarjonnan suunnittelulla historiatiedon avulla Oletetaan, että Toisu1:lla ja Toisu2:lla suunnitellaan edelleen koulutusohjelman tietyn vuosikurssin kurssitarjonta, mutta erona edelliseen tilanteseen oletetaan, että molemmilla järjestelmillä on suunniteltu jo ennestään edellinen lukuvuosi. Yksinkertaisuuden vuoksi oletetaan myös, että lukuvuoden suunnitelma on sama kuin viime vuonna, mutta periodit ovat luonnollisesti eri ajanjaksoilla kuin edellisenä lukuvuotena. On huomattava, että kyseinen käyttötilanne on hieman spekulatiivinen, koska käytännössä lukuvuosi ei ikinä ole edellisen kopio. On kuitenkin hyödyllistä simuloida tämä käyttötilanne, koska simuloiden saamme suuntaa-antavan arvion tämänkaltaisen realistisen käyttötilanteen vaativuudesta. Kun lukuvuosi on määritelty ja edellinen lukuvuosi on pohjana, Toisu1:ssä kurssitarjonnan suunnittelu on yhtä vaativaa kuin ilman edellistä lukuvuotta, koska käyttäjä ei pysty käyttämään edellistä lukuvuotta pohjana. Mekaanisten operaatioiden määrä on siis edelleen 1577. Toisu2:ssa edellisen lukuvuoden pohjalta suunnittelu on otettu huomioon. Siinä on toiminto, jolla voi kopioida yhdellä mekaanisella operaatiolla koko koulutusohjelman opettajat ja tunnit edellisvuoden vastineryhmiltä (kuva 8). 34 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Kuva 8. Kopiointi edellisvuodelta Toisu2:ssa. 35 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Tässä käyttötilanteessa Toisu2 on mekaanisesti tyrmäävät 1577 kertaa tehokkaampi kuin Toisu. Erään Toisu1:n käyttäjän kommentti onkin varsin kuvaava: “[Toisu1] ole suunnittelujärjestelmä, koska sillä ei voi suunnitella.” 3.2.2. Lakipalvelut Alla oleva käyttötilanne on havaittu Suomenlaki.com-palvelun uudistushankkeen käyttäjätarkkailuissa Jakub Järvenpään ja Eero Anttilan toimesta keväällä 2009. Opiskelija #2 Lakiviite Tavoite Kim Parviainen on valmistautumassa Kauppaoikeuden tenttiin. Hän on lukemassa teosta Haarmann et al.: Immateriaalioikeuden perusteet (2007), jossa viitataan tavaramerkkilain 4 §:ään. Kim uskoo, että tavaramerkkilaissa on jotain tentistä suoriutumisen kannalta relevanttia informaatiota, joten hänen tulee selvittää, mitä ko. pykälässä säädetään. Tilatietoja Kim on kotisohvallaan. Kimillä on internet-yhteydellä varustettu tietokone. Toteuma Käyttäjä avaa selaimeen Finlexin, seuraa linkkejä “Lainsäädäntö”, "Ajantasainen lainsäädäntö", “2009” , siirtää fokuksen hakukenttään, kirjoittaa hakukenttään "tavara*", painaa Hae-nappia, vierittää ensimmäistä hakutulossivua kolme kertaa, siirtyy seuraavalle hakutulossivulle, vierittää toista hakutulossivua kerran, klikkaa tavaramerkkilakilinkkiä “10.1.1964” ja haki selaimella "4 §":ää ja vieritti sivua nähdäkseen pykälän. Vertaan Finlexin (http://www.finlex.fi) ja Suomenlaki.comin (http:// www.suomenlaki.com) tehokkuutta Lakiviite-käyttötilanteella. Finlex Käyttötilanteen työnkulku Finlexissä on sama kuin käyttötilanteen toteuma, koska käyttötilanteessa käyttäjä käytti Finlexiä. 36 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Mekaaninen kuorma on 15. Muistikuorma on 0. Suomenlaki.com Käyttötilanteen työnkulku on seuraava: Käyttäjä avaa selaimeen Suomenlaki.comin, kirjoittaa hakukenttään “tavara”, valitsee toisen osuman ja klikkaa sisällysluettelosta kohtaa “4 §”. Mekaaninen kuorma on 4. Muistikuorma on 0. 3.2.3. Johtopäätöksiä Sekä Toisun että lakipalveluiden tapauksessa on ilmiselvää, että määritellyn tehokkuusjärjestyksen puitteissa GUIDella määritetyt sovellukset ovat merkittävästi tehokkaampia kuin muilla tavoilla määritellyt sovellukset. 37 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää 4. Guided-flow Ohjelmistoyritys Reaktorilla on viimeisen viiden vuoden aikana (vuosina 2005– 2010) toteutettu sisäisissä ja asiakashankkeissa noin 30 sovellusta GUIDemäärittelyn pohjalta. Toteutustyötä GUIDe-määrittelyjen pohjalta on tehty kahdella eri tavalla, Guide-Scrumilla ja Guided-flow’lla. Guide-Scrum on näistä kahdesta pidempään harjoitettu tapa. Guided-flow on Reaktorilla hiljalleen saamassa jalansijaa Guide-Scrumilta: viimeisimmät viisi hanketta, joissa on ihmiselle tarkoitettu käyttöliittymä, on toteutettu käyttäen Guided-flow’ta. Yhtään uutta Guide-Scrum-hanketta ei ole aloitettu vuonna 2010. Määrittely- ja toteutusmenetelmien historia Reaktorilla vuodesta 2004 eteenpäin on karkeasti seuraava: • Hankkeen toteutusprosessi on Scrum ja määrittelyt on tehty perinteisillä tavoilla, esim. käyttäjätarinoina, sanallisina kuvauksina, rautalankamalleina jne. • Vuonna 2005 preferoiduksi määrittelymenetelmäksi valitaan GUIDe. Hankkeiden toteutusprosessi on pääasiassa Scrum. Tätä yhdistelmää kutsutaan Guide-Scrumiksi. Tämä on pitkään vallitseva metodi Reaktorin hankkeissa. • Vuonna 2008 eräässä asiakashankkeessa kokeillaan työskentelyä ilman sprinttejä. Ko. hankkeen määrittelyt on tehty GUIDella. Sprinteistä luopumisesta saadaan hyviä kokemuksia, ja Reaktorin toiminnallisten määrittelijöiden toimesta alkaa uusien hankkeiden puitteissa yrityksen ja erehdyksen kautta Scrumin käytäntöjen validiuden tutkiminen. • Tutkimuksen avuksi otetaan syksyllä 2008 lean-ajattelun käsitteitä, minkä myötä käytettävien menetelmien validiuden tutkiminen on aiempaa systemaattisempaa. Lean-käsitteiden käyttöönottoa voidaan pitää Guidedflow’n systemaattisen kehityksen alkupisteenä. Guided-flow on adoptoinut monia Scrumin käytäntöjä ja käsitteitä, mutta myös hylännyt Scrumin olennaisia osia. Hyviä kokemuksia Guided-flow'sta on yhden tiimin ja yhden työlistan hankkeista, mutta sen toimivuudesta tai toimimattomuudesta useiden tiimien hankkeissa ei ole merkittävää kokemusta. Tässä kappaleessa analysoin molempia tapoja ja etsin syitä, miksi Guidedflow’ta nykytietämyksellä preferoidaan toteutusvaiheen menetelmänä. 38 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää 4.1. Guide-Scrum ja sen ongelmat Scrumin suosittama tapa jäsentää ja kommunikoida kehitettävän sovelluksen toiminnallisuuksia perustuu käyttäjätarinoihin (Schwaber et Sutherland 2009). Guide-Scrum on käytännössä Scrum, jossa käyttäjätarinat on korvattu työlistalla, joka muodostetaan purkamalla GUIDe-prosessilla tuotettu käyttöliittymän kuvaus toiminnallisuuksiksi. GUIDen ja Scrumin yhdiste on todettu Reaktorin hankkeissa monella tavalla ongelmalliseksi. Esitän alla havaitut ongelmat ja esitän niihin löydetyt ratkaisut seuravassa aliluvussa. • Tuotteen työlistan omistajuus on hajanainen: vaikka alkuperäinen työlista sisältää vain käyttöliittymän kuvauksesta peräisin olevia toiminnallisuuksia, myös toteuttajat ja tuoteomistaja lisäävät työlistaan omasta näkökulmastaan relevantteja toiminnallisuuksia. Työlistassa on toiminnallisia, teknisiä ja liiketoiminnallisia käsitteitä, jotka ovat keskenään erilaatuisia ja usein (priorisointimielessä) vertailukelvottomia. • Sprintin suunnittelut ovat osallistujien kokemuksen mukaan uuvuttavia ja usein ohkaisia anniltaan: suunnittelut venyvät usein kokonaisen päivän pituisiksi eivätkä ne tarjoa juurikaan uutta relevanttia informaatiota tehtävistä toiminnallisuuksista. • Sprinttiin otetut toiminnallisuudet pyritään toteuttamaan, koska niiden toteuttamista on pidetty realistisena tavoitteena sprintin suunnittelussa. Tämä aiheuttaa tyypillisesti sprintin loppuvaiheissa ylitöiden tekemistä tai laadusta lipsumista. Kiireessä toiminnallisilta määrittelijöiltä kysytään “Kelpaako tämä?”, tai joskus ei edes kysytä ja toteuttajat toteavat itse toiminnallisuuden valmiiksi. Valmiin määritelmä on hyvin hutera. • Kun sprintin suunnittelussa otetaan sprintin työlistaan tuotteen työlistan viisi ylimpänä olevaa toiminnallisuutta, saatetaan sprintin aikana tehdä ensimmäiseksi viidenneksi tärkein ja jättää ensimmäinen tekemättä. Sprintin sisällä hukataan alkuperäinen (tuotteen työlistan mukainen) järjestys. • Asiat eivät tule sprintin puitteissa valmiiksi, vaan ne valuvat seuraaviin sprintteihin. Seuraavan sprintin sisältö on tyypillisesti kasa edellisen sprintin keskeneräisiä toiminnallisuuksia ja muutama uusia. Etenemistä on vaikea seurata ja hallita. 39 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää • Kun toiminnallisuus valmistuu, sitä ei tyypillisesti julkaista ennen kuin sprintti loppuu. 4.2. Guide-Scrumin ongelmien korjaaminen leankäsitteiden avulla Edellä kuvatun konfiguraation puutteiden korjaaminen lean-ajattelun näkökulmasta aloitti Guided-flow-menetelmän muodostumisen. 4.2.1. Työlistan sisältö vastaamaan käyttäjien tarpeita Työlistan sisältö ja prioriteetti pitää saada pull-periaatteen mukaiseksi. Toiminnallinen määrittely tuottaa luotettavaa tietoa siitä, mitä käyttäjät tarvitsevat. Toteuttamalla vain sitä, mitä käyttäjät tarvitsevat, tehdyt investoinnit ovat mahdollisimman hyviä. Tuoteomistajana (ja täten työlistan omistajana) tulee olla asiakkaan edustaja, jolla on toiminnallisen määrittelijän tietämys käyttäjien tarpeista mahdollisimman hyvin sisäistettynä. Nimenomaan toiminnallisen määrittelijän tietämyksen huomioon ottaminen priorisointipäätöksissä on erilaista suhteessa aiempiin toimintatapoihin. Priorisointipäätösten tekeminen huomioimatta toiminnallisen määrittelyn aikana tehtyjä havaintoja on Wardin tietämyshukkamallin (Ward, 2007) mukaan toiveajattelua. On huomattava, että yksin toiminnallisella määrittelijällä ei voi olla priorisointivastuuta, koska hänellä tyypillisesti ei ole riittävää tietämystä liiketoiminnallisista prioriteeteista. 4.2.2. Sprintin suunnittelu pois Scrumiin liittyvä sprintin suunnittelu on lean-periaatteiden vastainen: Suunnittelussa jaetaan tietämystä toiminnallisuuksista, jotka • tulevat työn alle mahdollisesti sprintin loppupuolella, mikä voi olla viikkojen päässä, jolloin ihmiset ehtivät unohtaa asioita tai hankittu tietämys saattaa olla vanhentua • eivät tule työn alle ollenkaan, jos liiketoiminnalliset prioriteetit muuttuvat tai sprintti loppuu kesken. Sprintin suunnittelulla luodaan lean-ajattelun näkökulmasta tarpeetonta varastoa. Johtopäätös on poistaa sprintin suunnittelu ja käydä läpi vain seuraavaksi työn alle tuleva toiminnallisuus pull-periaatteella. 40 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää 4.2.3. Toiminnallinen katsaus valmiin määritelmäksi Muri-hukkakäsitteen näkökulmasta epäselvä valmiin määritelmä tarkoittaa työn tuloksen standardiehdon puuttumista. Tämän hukan saa eliminoitua määrittelemällä valmiin määritelmäksi toiminnallisen katsauksen läpäisemisen: työn tulos vastaa hyödylliseksi todettua käyttöliittymäratkaisua. Tämä valmiin määritelmä voisi hyvinkin olla käytössä myös Guide-Scrumissa, mutta sen noudattamista vaikeuttaa mm. vakiomittainen kehityssykli. 4.2.4. Sprintin käsite pois Sprintin käsitteen poistamiseen on useita syitä. • Sprintin lopun lähestyessä tavoitteet halutaan saavuttaa, jolloin on taipumusta tehdä ylitöitä tai tinkiä laadusta (kuvat 9 ja 10). Ylitöiden tekeminen ja laadusta tinkiminen ovat mura-hukkaa. Taipumus tempoiluun ja kompromissien tekoon saadaan poistettua luopumalla keinotekoisesta aikarajasta: työtä voidaan tehdä aina standardimäärä päivässä ja toiminnallisuus on valmis kun se on valmis standardiehdon mukaan (kuva 11). Keskeneräistä ei siirretä valmiiksi, koska sprintin loppumisen painetta ei ole. Työn siirtäminen sprintistä toiseen myös lisää muri-hukkaa: työn tekemisessä on enemmän poikkeustilanteita, jolloin työn standardi on heikompi. • Kun sprintin käsite poistetaan, tuotteen työlistan prioriteettia kunnioitetaan: työn alle otetaan aina työlistan ylin ominaisuus. • Etenemistä on hyvin helppo seurata, koska oikein tehdyn toiminnallisen katsauksen jälkeen asiat ovat todella valmiita. • Sprintissä valmistuneet toiminnallisuudet, jotka julkaistaan sprintin lopuksi, muodostavat tarpeettoman varaston. Kun luovutaan sprintin käsitteestä ja vahvistetaan valmiin määritelmää lisäämällä ehdoksi tuotantoonsiirto, (leanajattelusta tuttua) tarpeetonta varastoa käyttöönottoa vaille valmiille toiminnallisuuksille ei tarvitse ylläpitää. 41 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Kuva 9. Työtahdin tyypillinen vaihtelu sprintin Kuva 10. Sprintissä valmistuvien toiminnallisuuksien laadun tyypillinen vaihtelu sprintin sisällä. Kuva 11. Toiminnallisuuksien valmistuminen standardiehdon mukaan, kun sprintin käsite poistetaan. Guided-flow’n ensimmäisenä muotona voidaan pitää sellaista Guide-Scrumia, josta on poistettu lean-näkökulmasta haitallisista aikarajatuista kehitysjaksoista (eli sprinteistä) ja tulevaisuuden ennustamisesta ja ja reaalioptioiden rajaamisesta (eli sprinttien suunnittelusta). 4.3. Guided-flow tiivistetysti Guided-flow on kokoelma käytäntöjä, jotka on todettu hyödyllisiksi erityisesti lean-näkökulmasta ja luotetun neuvonantajan mallin näkökulmasta katsottuna. Guided-flow jatkaa siitä, mihin haitallisista käsitteistä riisuttu Guide-Scrum jää. 42 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Esitän Guided-flow’n käytännöt ensin pääpiirteissään, sitten analysoin kutakin käytäntöä puoltavia syitä. • Toiminnalliset määrittelijät osallistuvat aktiivisesti ja hyvin aikaisessa vaiheessa uuden asiakkuuden luomiseen tähtäävään myyntityöhön. • Hankkeen aluksi tehdään GUIDe-menetelmällä toiminnallinen määrittely, mikä takaa tehokkaan tavan tutustua asiakkaan alaan ja liiketoiminnallisiin prioriteetteihin. • Toiminnallisen määrittelyn tuloksena syntyy käyttöliittymän määrittely, joka on erinomainen keskustelun väline. • Laadukas keskustelu asiakkaan ongelmista luo hyvin nopeasti luottamusta. • Käyttöliittymän läpikäynneillä asiakkaan kanssa saamme sitoutettua asiakasta yhteiseen tavoitteeseen. • Laadukas keskustelu, luottamus ja yhteiseen tavoitteeseen sitoutuminen helpottavat huomattavasti tavoitteeseen pääsyä. • Ennen varsinaista toteutustyötä toiminnallinen määrittelijä purkaa toteuttavan tiimin avustuksella käyttöliittymän kuvauksen tuotteen työlistaksi. • Kun tuotteen työlista on muodostettu, jokainen listan toiminnallisuus on sellainen, jonka kaikki hankkeen osapuolet ymmärtävät. • Kun työlista on asiakkaan ja toiminnallisen määrittelijän yhdistetyn tietämyksen valossa priorisoitu, toteutustyö voi alkaa. • Kun työt aloitetaan, toteuttajat ottavat parhaan näkemyksensä mukaan pienimmän määrän toiminnallisuuksia työn alle. Ennen toiminnallisuuden toteuttamisen aloittamista, toteuttajat käyvät toiminnallisuuden läpi toiminnallisen määrittelijän kanssa, jotta on selvää, mitä ollaan tekemässä. • Kun toiminnallisuus on tiimin mielestä valmis, se toimitetaan toiminnalliseen katsaukseen. Toiminnalliselle määrittelijälle toimitetaan tuotantoversio tai sitä riittävällä tarkkuudella vastaava versio ohjelmasta ja hän tutkii, onko toiminnallisuus toteutettu kuten oli määritelty. • Toiminnallisuuksia toteutetaan, kunnes saavutetaan ensimmäinen julkaisuraja. 43 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää • Tämän jälkeen ohjelma julkaistaan jokaisen toiminnallisuuden valmistuttua, ellei ole erityisiä syitä olla julkaisematta. • Näin jatketaan, kunnes asiakas ilmoittaa, että ohjelman kehitys voidaan lopettaa. 4.4. Guided-flow yksityiskohtaisesti Toiminnalliset määrittelijät osallistuvat aktiivisesti ja hyvin aikaisessa vaiheessa uuden asiakkuuden luomiseen tähtäävään myyntityöhön. Tyypillisesti asiakas haluaa aloittaa asiakassuhteen tilaamalla täsmäratkaisun itse tunnistamaansa tai kokemaansa ongelmaan. Tällöin työskennellään luotetun neuvonantajan mallin ensimmäisellä tasolla, palvelun tarjoamiseen perustuvan asioinnin tasolla (Maister 1988). Tämä on luonnollista, kun luottamusta ei ole vielä kerääntynyt ihmisten välillä. Usein asiakkailla on kiire, minkä myötä asiantuntijalla voi olla kova paine toteuttaa asiakkaan idea tai tarjota pikaisesti hahmoteltu vaihtoehtoinen ratkaisu. Tässä kohtaa hedelmällisempi lähtökohta on noudattaa luotetun neuvonantajan mallin ohjeita: asiantuntijat kuuntelevat asiakkaan näkemyksiä ongelmasta ja sen ratkaisusta, kysyvät avoimia kysymyksiä ja selvitettävät, mikä tässä tapauksessa on asiantuntijan näkökulmasta erilaista verrattuna heidän aikaisempiin asiakkuuksiinsa. Tyypillisesti jo näitä neuvoja noudattamalla asiakas on valmis antamaan asiantuntijoille mahdollisuuden esittää vaihtoehtoinen lähestymistapa, Guidedflow, tietysti sillä varauksella, että se soveltuu asiakkaan ongelmaan. Jos Guided-flow on asiakkaan mielestä alustavasti järkevä tapa lähestyä ongelmaa, keskusteluja asiantuntijoiden ja asiakkaan välillä jatketaan. Jos keskusteluiden myötä päädytään ratkaisemaan asiakkaan ongelmaa Guided-flow’lla, jatketaan seuraavaan vaiheeseen. Guided-flow’n alkupäässä on GUIDe-mallin mukainen käyttäjätarkkailu. Usein asiakas on tehnyt heikkolaatuisia käyttäjähaastatteluja, joissa käyttäjien todelliset tavoitteet ovat tyypillisesti selvittämättä. Tyypillisesti asiakas pitää näiden käyttäjähaastatteluiden tietosisältöä validina ja täten arvokkaana. Asiakas on sortunut Wardin tietämyshukkamallin mukaiseen toiveajatteluun: tehtyjen käyttäjähaastattelujen pohjalta ollaan valmiita etenemään seuraavaan vaiheeseen, vaikka edellytyksiä siihen ei GUIDe-määrittelijöiden mielestä ole. Alustavan luottamuksen puitteissa asiakkaalta pyydetään lupa suorittaa käyttäjätarkkailut uudestaan. Jos lupa saadaan, alkaa GUIDe-prosessin ensimmäinen vaihe. 44 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Hankkeen aluksi tehdään toiminnallinen määrittely, jonka myötä toiminnalliset määrittelijät saavat tietystä näkökulmasta erittäin syvällisen näkemyksen asiakkaan ongelmiin. Tyypillisesti toiminnalliset määrittelijät ymmärtävät asiakastaan paremmin, mikä ongelma tarvitsee ratkaisun, ja lähes aina (ellei aina) toiminnalliset määrittelijät tietävät paremmin, miten ongelma kannattaa ratkaista. Toiminnallinen määrittely menetelmänä tarjoaa erittäin tehokkaan tavan tutustua asiakkaan erikoisalaan syvällisesti. Käyttäjätarkkailuissa keskitytään yleisen työnkulun lisäksi systemaattisesti ja hyvin tarkasti työnkulkujen yksityiskohtiin, jolloin toiminnallisille määrittelijöille kertyy usein sellaista detaljitason tietämystä käyttäjien ongelmista, josta asiakas ei tyypillisesti ole edes tietoinen. Asiakas arvostaa suuresti sitä, että asiantuntijat ovat tutustuneet aiheeseen perinpohjaisesti ja osaavat tuoda aiemmin pimentoon jääneitä asioita esiin. Tyypillisesti asiakkaalla on huterahko tietämys omien asiakkaidensa (eli käyttäjien) todellisista tarpeista. Tässä on hyvä erottaa, mitä käyttäjä haluaa (tai on ilmoittanut haluavansa) ja mitä käyttäjä tarvitsee. Uuden informaation tarjoaminen käyttäjistä lisää toiminnallisten määrittelijöiden ja asiakkaan välistä luottamusta. Käyttäjätarkkailuissa kerääntyy myös tietämystä liiketoiminnallisista prioriteeteista: mihin ongelmiin on arvokkainta löytää ratkaisu? Kun riittävän monta tarkkailua on suoritettu, toiminnalliselle määrittelijälle syntyy alustava tietämys siitä, mitkä asiat ovat kriittisimpiä tai toistuvat usein. Tyypillisesti asiakkaalla ei ole tällaista tietämystä, joten he ovat varsin kiinnostuneita keskustelemaan aiheesta toiminnallisen määrittelijän kanssa. Jälleen toiminnalliset määrittelijät tarjoavat uutta informaatiota, tällä kertaa siitä, mitä asiakkaan asiakkaat kokevat arvokkaaksi. Laadukas keskustelu asiakkaan ongelmista luo hyvin nopeasti luottamusta ja sitoutumista yhteiseen tavoitteeseen. Mitään ei tarvitse vielä ratkaista. Toiminnallisen määrittelyn tuloksena syntyy käyttöliittymän kuvaus, joka on erinomainen keskustelun väline. Kyseessä on konkreettinen kuvaus tehtävästä tietokoneohjelmasta, jota on helppo kommentoida ja josta on helppo löytää mahdolliset puutteet. Luotetun neuvonantajan mallin mukaan luottamuksen rakentamisen kannalta on oleellista, että asiantuntijat eivät esiinny kaikkitietävinä, vaan pyytävät apua, kun eivät tiedä tai eivät ole varmoja (Maister 1988). Toiminnallisen määrittelyn hyödyllisyysläpikäynnit antavat toiminnallisille määrittelijöille mahdollisuuden 45 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää pyytää apua asiakkaalta ja varmistaa, että he ovat ymmärtäneet asiakkaan ongelman oikein detaljitasolla. Myös tämä osaltaan lisää luottamusta ja läpinäkyvyyttä prosessiin. Ennen varsinaista toteutustyötä toiminnallinen määrittelijä purkaa toteuttajien avustuksella käyttöliittymän kuvauksen tuotteen työlistaksi. Työlistan käsite on lainattu suoraan Scrumista. On erityisen tärkeää, että nimenomaan toiminnallinen määrittelijä johtaa tätä purkutyötä. Toiminnallisen määrittelijän johdolla syntynyt työlista sisältää vain käyttäjän kannalta relevantteja toiminnallisuuksia eli toiminnallisuus saadaan valmiiksi, sovellus on jollain tavalla hyödyllisempi käyttäjälle käyttöliittymäratkaisun suunnittelutyön pohjana olleiden käyttötilanteiden valossa. Kun työlista on muodostettu, jokainen toiminnallisuus on sellainen, jonka kaikki hankkeen osapuolet ymmärtävät. Osapuolia ovat • asiakas, • toiminnallinen määrittelijä ja • toteuttajat. Kun toiminnallinen määrittelijä on johtanut työlistan muodostusta ja tarkkaillee työlistalle lisättäviä toiminnallisuuksia, refaktorointi- ja tekniset toiminnallisuudet pysyvät pääasiassa pois työlistalta. Tämä on hyvä asia, koska tällöin toiminnallisuudet ovat sellaisia, joille asiakkaan on suhteellisen helppo muodostaa prioriteetteja. Asiakkaalle on tyypillisesti mahdotonta muodostaa valistuneita näkemyksiä esim. teknisen velan maksun ja toiminnallisuuksien toteuttamisen suhteesta. Lähes yksinomaan huonoja kokemuksia on siitä, että asiakas priorisoi teknisen työn ja toiminnallisuuksien toteuttamisen välillä. Kun työlista on asiakkaan ja toiminnallisen määrittelijän yhdistetyn tietämyksen valossa priorisoitu, toteutustyö voi alkaa. Työlistan priorisointi on jatkuva prosessi, ja tietyn ajan kuluttua priorisointia auttavat myös toteuttajat, koska he osaavat toteutettujen itemien valossa antaa arvioita tulevien itemien vaativuudesta. Hyvin harvoin asiakkaat vaativat työmääräarvioita toiminnallisuuksille työlistan muodostuksen yhteydessä. Myös tuoteomistajan käsite on lainattu Scrumista. Tuoteomistaja on asiakkaan edustaja, jota toiminnallinen määrittelijä avustaa merkittävästi. 46 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Priorisoinnin jälkeen vedetään asiakkaan ja toiminnallisen määrittelijän tietämyksen pohjalta ensimmäisen julkaisun raja. Ensimmäisen julkaisun raja pyritään vetämään siihen kohtaan, jossa ohjelma on käyttäjilleen hyödyllinen tai parempi suhteessa kilpailijoihin. Perustuen käyttöliittymän kuvaukseen, alustaviin työmääräarvioihin ja aikatauluvaatimuksiin muodostetaan toteutustiimi. Kriittistä on lähinnä taitoportfolio ja koko. Tekniikat valitaan alustavasti kokeneimpien ohjelmoijien suositusten perusteella. Muun muassa tekniikkavaatimusten pohjalta valitaan toteuttajat. Aikataulujen ja työmääräarvioiden pohjalta päätetään tiimin koko. Toki tiimin kokoonpanoa muutetaan hankkeen edetessä ja liiketoimintaympäristön muuttuessa. Kun työt aloitetaan, tiimi ottaa parhaan näkemyksensä mukaan pienimmän määrän toiminnallisuuksia työn alle. Tämä on linjassa lean-ajattelun tarpeettomien varastojen minimoinnin kanssa. Ottamalla pienin mahdollinen määrä toiminnallisuuksia työn alle WIP (work in progress, keskeneräinen työ) on minimissään. Kun toiminnallisuus tulee työn alle, se käydään toiminnallisen määrittelijän kanssa läpi, jotta on selvää, mitä ollaan tekemässä. Myös tässä lean-ajattelu on läsnä: ei kannata käydä läpi muita kuin työn alle tulevia toiminnallisuuksia, muutoin luodaan tarpeetonta varastoa. Lisäksi ko. varasto mätänee nopeasti: ihmiset unohtavat asioita. Scrumista on lainattu myös vaatimus valmiin määritelmästä. Myös Guidedflow’ssa jokainen toiminnallisuus on joko valmis tai ei-valmis. Ei-valmiilla toiminnallisuuksilla on kolme erilaista tilaa: • ei aloitettu, • työn alla ja • toiminnallisessa katsauksessa. Ei aloitettu tarkoittaa sitä, että tiimi ei ole tällä hetkellä ole toteuttamassa tätä toiminnallisuutta. Työn alla tarkoittaa sitä, että tiimi toteuttaa tällä hetkellä tätä ominaisuutta. 47 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Toiminnallisessa katsauksessa oleva toiminnallisuus on tiimin näkemyksen mukaan valmis. Jos toiminnallinen määrittelijä toteaa toiminnallisuuden oikein toteutetuksi, toiminnallisuudesta tulee valmis. Kun toiminnallisuus tulee toiminnalliseen katsaukseen, toiminnalliselle määrittelijälle toimitetaan tuotantoa vastaava versio ohjelmasta ja hän katsoo, onko toiminnallisuus toteutettu kuten oli määritelty. Jos mitään huomioita ei tule, toiminnallinen määrittelijä merkitsee toiminnallisuuden valmiiksi. Jos toteutuksessa on jotain huomautettavaa, ko. huomio kommunikoidaan toteuttajille ja toiminnallisuus siirretään takaisin työn alla -tilaan. Näin toimitaan, kunnes toiminnallisuus on toteutettu kuten oli määritelty toiminnallisen määrittelijän näkemyksen mukaan. Lean-ajattelun mukaisesti kaikella työllä on toteuttajien näkökulmasta selkeä standardiehto, toiminnallinen katsaus. Jotta arvoketju ei katkea, toiminnallinen katsaus pyritään tekemään mahdollisimman nopeasti. Kuvassa 12 on pieni siivu Product Backlog Tool -nimisen sovelluksen työlistasta. Toiminnalliselle määrittelijälle on kerääntynyt joukko toiminnallisuuksia katsaukseen, mikä on epäoptimaalista: arvoketju on katkennut. Toteuttajat ovat tehneet kaikki työn alla olevat toiminnallisuudet näkemyksensä mukaan valmiiksi eivätkä ole aloittaneet seuraavien toiminnallisuuksien toteuttamista. Näkyvissä olevista 20 toiminnallisuudesta vain kaksi on teknisiä: toiminnallisuudet 608 ja 614: vaihtoehtoisen toteutustekniikan evaluaatio (608) ja viestintäprotokollien muuttaminen (614). Ideaalitilanteessa tällaisia toiminnallisuuksia ei ole työlistassa, mutta käytännössä niitä on silloin tällöin. Tärkeää on kuitenkin pitää ne minimissä, koska tekninen toiminnallisuus on hyvin harvoin tuoteomistajan näkökulmasta verrattavissa käyttäjän kannalta relevantteihin toiminnallisuuksiin. Jos teknisiä toiminnallisuuksia on liikaa, työlistan priorisointi muodostuu hyvin vaikeaksi tuoteomistajalle. 48 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Kuva 12. Työlista, jossa on Guided-flow’n määrittelemät tilat. Teknisten toiminnallisuuksien poissa pitäminen työlistasta auttaa myös siinä, että toiminnallisen katsauksen prosessi on toimiva ja tehokas. Toiminnallisella määrittelijällä ei ole tyypillisesti motiivia tai halua ottaa kantaa toteutuksen yksityiskohtiin (esimerkiksi viestintäprotokolliin). Tarkasta vastuurajasta pyritään pitämään kiinni, koska joskus, esimerkiksi vaikeiden toiminnallisuuksien kohdalla, toteuttajilla on taipumusta luistaa käyttöliittymäratkaisun mukaan toteuttamisesta perustuen implementaatiovaikeuksiin: “Tämä on liian vaikea ja kallis toteuttaa, koska 49 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää käyttämämme tekninen framework ei tue tällaista ratkaisua luontevasti”. Kun toiminnallisen määrittelijän kanssa teknisistä detaljeista keskustelu ei ole tavanomaista, käyttöliittymäratkaisun paikallisista toteutusvaikeuksista valitetaan vähemmän. Tällöin myös teknisesti vaikeimmat toiminnallisuudet saadaan toteutettua käyttöliittymäratkaisun mukaisesti. Tyypillisesti asiantuntevat toteuttajat osaavat itse balansoida tarvittavan määrän refaktorointia ja teknista tekemistä toiminnallisuuksien toteutuksen lomaan. Tähän ei tarvita asiakkaan tai toiminnallisen määrittelijän mielipidettä, eikä heillä myös ole kompetenssia ottaa kantaa tällaisiin asioihin. Toiminnallisuuksia toteutetaan, kunnes saavutetaan ensimmäinen julkaisuraja. Jos mitään erityistä syytä ei ole, ohjelma julkaistaan käyttäjille. Tämän jälkeen ohjelma julkaistaan jokaisen toiminnallisuuden valmistuttua, ellei ole erityisiä syitä olla julkaisematta. Julkaisematta jättäminen on periaatteessa leanajattelun vastaista, koska julkaisemattomat toiminnallisuudet muodostavat tarpeettoman varaston. Täten on tarkkaan analysoitava syitä, miksi toiminnallisuuksia ei julkaista heti niiden valmistuttua. Näin jatketaan, kunnes tuoteomistaja ilmoittaa, että ohjelman kehitys voidaan lopettaa. Tämä on myös lean-ajattelun mukaista. Toiminnallisuuksia toteutetaan pull-, ei push-periaatteen mukaan. Guided-flow'n peruskäytäntöjen lisäksi toteuttajat soveltavat muita hyväksi todettuja käytäntöjä, esimerkiksi • daily, • retrospektiivi, • toteuttajien aloitteesta tehtävän työlistan läpikäynti, • pariohjelmointi jne. 4.5. Syitä Guided-flowʼn suosiolle Guided-flow'n mukaan työtä tehdessä asiakkaan kanssa kommunikointi ja oikeiden asioiden tekeminen on sekä toiminnallisten määrittelijöiden ja toteuttajien mielestä vaivattomampaa ja varmempaa kuin Scrum-pohjaisilla käytännöillä. Tärkeimmät asiat menestyksekkään ohjelmistokehityshankkeen läpiviemiseksi ovat Guided-flow-hankkeisiin osallistuneiden (Reaktor 2010a) mielestä 50 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää 1. riittävän laadukkaan keskusteluyhteyden muodostaminen asiakkaaseen, 2. relevantin asian tunnistaminen: simulaatiopohjainen toiminnallinen määrittely, 3. selkeä ja riittävä valmiin määritelmä: toiminnallinen katsaus ja tuotantoon vienti ja 4. inkrementaalinen, ei iteratiivinen, toteutustapa: pieniä paloja yksi kerrallaan valmiiksi bisnesinformaation sanelemassa järjestyksessä. Scrum ei itsessään millään tavalla ota huomioon luottamuksen merkitystä hankkeiden onnistumisessa. Luottamuksen rakentaminen riippuu puhtaasti siitä, miten hankkeen asiantuntijat suhtautuvat luottamuksen rakentamiseen. Guided-flow’ssa luottamuksen rakentaminen on osa prosessia, koska ilman sitä tärkeää tietoa jää vaihtamatta ja puitteet riittävän esiselvitystyön eli GUIDemäärittelyn tekemiselle eivät ole kunnossa. Hankkeen alussa hankittu luottamus on hyödyllinen koko hankkeen elinkaaren ajan. Toteuttajat arvostavat sitä, että sovelluksen toiminnallisuuksien oikeellisuuden vastuu ei ole heillä, vaan käyttöliittymäasiantuntijoilla. Tämä vastuunjako vapauttaa toteuttajat keskittymään omaan erikoisalaansa eli toteuttamiseen. Systemaattinen hukan eliminointi kaikesta toteutusvaiheen työstä tekee Guided-flow’sta toteuttajien ja asiakkaan näkökulmasta tehokkaamman, luotettavamman ja ennustettavamman tavan toteuttaa määrittelyjen pohjalta tietokonesovelluksia. Modernissa ohjelmistokehityksessä nimenomaan tehokkuus (ajan ja kulujen suhteen), luotettavuus (tasainen eteneminen) ja ennustettavuus (etenkin kulujen suhteen) ovat arvostettuja piirteitä. Selkeää standardiehtoa toteuttajien työlle arvostetaan paljon. Ei ole tavatonta, että Scrum-vetoisissa hankkeissa valmiin määritelmä on hutera. Guided-flow tarjoa erittäin jämerän työn standardiehdon toteuttajan näkökulmasta: valmiin määritelmä ei tyypillisesti muutu hankeen aikana eikä hankkeiden välistäkään variaatiota standardiehdossa esinny kovin paljon; erot tulevat lähinnä tuotaantoonvientiin liittyvissä yksityiskohdissa. 4.6. Havaittuja puutteita Guided-flowʼssa Lean-ajattelun myötä monia asioita on saatu tehostettua GUIDe-määrittelyn toteutuksessa toimivaksi sovellukseksi. Paras tietämys tällä hetkellä on edellä esitetty Guided-flow, mutta tälläkin hetkellä menetelmässä on lean-ajattelun 51 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää näkökulmasta monia käytännön puutteita ja tehottomuuksia, joita ei ole saatu vielä ratkaistua. Dokumentoin alla tämän työn puitteissa havaitsemani puutteet. 4.6.1. Riippuvuus toiminnallisesta määrittelijästä Product backlog toolin (PBT:n) (kuva 13) kehityshistoria on hyvä esimerkki siitä, kuinka riippuvainen Guided-flow on toiminnallisesta määrittelijästä. PBT on Reaktorin sisäinen hanke, jossa kehitetään työkalua ohjelmistohankkeiden työlistojen hallintaan. PBT:n määrittely on tehty GUIDella ja sen toteutus on ollut lähes alusta asti Guided-flow’n periaatteiden mukaista. Kuva 13. Product backlog tool. PBT:n kehitys aloitettiin alkuvuodesta 2008 ja ensimmäinen julkaisu tuli loppuvuodesta 2008. Tämän jälkeen Guided-flow’n mukaan sovelluksesta pitäisi tulla tiheään uusia julkaisuja, periaatteessa jokaisen valmistuvan toiminnallisuuden myötä. Näin ei kuitenkaan käynyt; ensimmäisen julkaisun jälkeen tuli vain neljä julkaisua 50 viikossa. Tämän jälkeen seuraavan 30 viikon sisällä tuli 15 julkaisua. Julkaisutahdissa tapahtui siis dramaattinen muutos, aluksi yksi julkaisu keskimäärin 13 viikossa, lopuksi yksi julkaisu keskimäärin kahdessa viikossa. 52 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Kuvassa 14 on PBT-hankkeeseen käytetyt työtunnit ja julkaisut aikajanalla. Työtunnit on jaoteltu toiminnalliseen määrittelyyn ja toteutustyöhön. Julkaisut on merkitty harmailla pystyviivoilla. Kuva 14. PBT:n työtunnit ja julkaisut. Tulkitsen graafia seuraavasti: Toteutus alkaa viikolla 12/2008 ja toiminnallinen määrittelijä hyväksyy toiminnallisuuksia sitä mukaa kun toteuttajat saavat toiminnallisuuksia mielestään valmiiksi. Ensimmäinen julkaisu tehdään viikolla 48/2008. Tälloin toiminnallinen määrittelijä joutuu jättämään hankkeen muiden kiireiden vuoksi. Toteuttava tiimi saa tehtyä toiminnallisen määrittelijän poissaolon aikana vain yhden julkaisun 14 viikon aikana. Viikoilla 12–22/2009 toiminnallinen määrittelijä on hankkeen käytettävissä, jolloin saadaan kolme julkaisua tehtyä. Tämän jälkeen toiminnallinen määrittelijä on jälleen muiden kiireiden takia yhdeksän viikkoa poissa hankkeesta; tänä aikana ei saada yhtään julkaisua tehtyä. Tämän jälkeen toiminnallinen määrittelijä on jälleen hankkeen käytettävissä, jolloin saadaan tehtyä 15 julkaisua 30 viikossa. Toiminnallisen määrittelijän läsnäolo ja työpanos näyttävät vaikuttavan siis oleellisesti siihen, kuinka paljon hankkeessa saadaan toimitettua loppukäyttäjälle hyödyllisiä inkrementtejä. Käytännössä toiminnallisen määrittelijän olisi sitouduttava koko hankkeen elinkaaren ajaksi, jotta hyödyllisiä inkrementtejä saataisiin tasaisena virtana 53 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää käyttäjille. Tilanne tällä hetkellä ongelmallinen Reaktorilla, koska toiminnallisia määrittelijöitä on vain muutama. Ongelmaan ei ole vielä keksitty kestävää ratkaisua. Ward esittää seuraavanlaisen ajatuksen: tietämystä, vastuuta, toimintaa ja palautetta ei kannata erottaa toisistaan, koska silloin esiintyy tietämyshukasta johtuvia ongelmia (Ward, 2007). Guided-flow'n kontekstissa tämä tuntuu ilmenevän seuraavasti: • Tietämys toiminnallisen määrittelyn tuloksista (mm. käyttötilanteet, käyttöliittymäratkaisun logiikka) on pitkälti vain toiminnallisella määrittelijällä. • Vastuu (hankkeen onnistumisesta) on jaettu toiminnalliselle määrittelijälle ja toteuttajille. • Toiminnan (eli toteuttamisen) vastuu on pitkälti toteuttajilla. • Palaute kohdistetaan koko tiimille. Wardin termein Guided-flow’ssa on sisäänrakennettu tietämyshukkaa luova mekanismi. Seuraavia toimenpiteitä on ehdotettu tietämyshukan vähentämiseksi (Reaktor 2010b): • käyttötilanteiden tarkka läpikäynti kehittäjille, • kehittäjien ottaminen mukaan tarkkailuihin ja • simulointityö kehittäjien kanssa. Näillä toimenpiteillä toiminnallisen määrittelijän tiedossa olevia asioita saataisiin jaettua ainakin yhdelle kehittäjälle, jolloin toiminnalliseen määrittelijään liittyvä tietämyshukkariski pienenisi huomattavasti. On otettava huomioon, että kehittäjien ottaminen mukaan tarkkailuihin ja simulointityön tekeminen vaativat toiminnallisen määrittelyn perustekniikoiden hyvää hallintaa. Näitä toimenpiteitä ei ole vielä kokeiltu käytännössä. 4.6.2. Tutkivan testauksen käynnistyskulut Toiminnallisen määrittelijän tekemä toiminnallinen katsaus on käytännössä kriteeri sille, todetaanko toiminnallisuus valmiiksi. Toiminnallisessa katsauksessa toiminnallisuus todetaan toimivaksi tai toimimattomaksi 54 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää tyypillisiä työnkulkuja läpikäymällä. Vaikka kyseessä on huomattava parannus aiempiin työn standardiehtoihin, se ei edelleenkään ole riittävä. On tyypillistä, että valmiiksi todetussa toiminnallisuudessa huomataan virheitä epätavallisissa tilanteissa. Toiminnallisuuden oikeellisuus poikkeustilanteissa saadaan varsin hyvin varmistettua suorittamalla tutkivaa testausta. Tutkiva testauskaan ei aukottomasti todista toiminnallisuutta oikeaksi, mutta se vähentää dramaattisesti käyttäjien havaitsemia virheitä. (Wikipedia: Exploratory testing, Bach 2003) Guided-flow’n tämänhetkisestä työn standardiehdosta puuttuu uusille toiminnallisuuksille tehtävä tutkiva testaus. Tämä johtuu tutkivien testaajien saatavuuden ja tarpeen epäjatkuvuudesta: tutkivia testaajia on vaikea saada paikalle silloin, kun heitä tarvitaan, ja tarve on huonosti ennustettava. Tämä ongelma on yleisemmin tunnettu puute just-in-timetuotantojärjestelmissä (Wikipedia: Mura). Koska just-in-time-järjestelmissä pyritään rakentamaan myös kaikki järjestelmän aliprosessit pull-ajattelun mukaiseksi, ongelmia tulee sellaisten komponenttien kohdalla, joissa toimitusaika, engl. lead time (Wikipedia: Lead time), on välttämättä pitkä tai komponentin valmistuksen aloittaminen on kallista. Tällöin ainoa asia, mitä voidaan tehdä, on yrittää ennustaa vaikeasti tai hitaasti valmistettavan komponentin tarvetta. Käytännössä tutkiva testaus suoritetaan Guided-flow’ssa prosessin ulkopuolella eli epäsäännöllisin väliajoin koko sovellukselle painottaen uusimpia valmiita toiminnallisuuksia. Tämä lähestymistapa on tietysti lean-ajattelun vastainen, koska se sekoittaa työn standardiehtoa: valmiiksi saatu toiminnallisuus saattaakin osoittautua keskeneräiseksi huomattavasti “valmistumista” myöhemmin. 4.6.3. Retrospektion ajoitus Scrumin eräs hyvä puoli on se, että siinä on hyvin luonteva paikka retrospektiolle: sprintin loppuminen. Kuten aiemmin on mainittu, Scrum nojaa empiirisen prosessikontrolliteoriaan, jolloin siihen on sisäänrakennettu mekanismi toiminnan parantamiseen. Guided-flow’ssa ei ole mitään vakiintunutta hetkeä, jona tiimin tulisi pitää retrospektiivi. Guided-flow’lla ei ole sisäänrakennettua tasaista rytmiä kuten 55 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Scrumin sprintit. Käytännössä Guide-flow’ta käyttävät tiimit ovat pitäneet retrospektiivejä siinä pisteessä, kun kun tiimin jäsenistä tuntuu siltä, että on liian monta asiaa, joihin pitäisi puuttua. Tyypillisesti tämä on liian myöhäistä, sillä tällaisessa tilanteessa korjattavia asioita on niin paljon, että retrospektiivitilaisuuksissa käsiteltävien asioiden määrä on jo liian suuri, jotta edes tärkeimmiksi koettuja asioita ehdittäisiin fasilitoida hyödyllisiksi toimenpiteiksi. Yksi kehitysmahdollisuus on kokeilla retrospektiivien pitämistä jokaisen valmistuneen toiminnallisuuden yhteydessä, jolloin retrospektiivejä tulisi hyvin usein. Tätä ei ole vielä kokeiltu. Olisi tutkimisen arvoista, miten esimerkiksi Toyota-tavassa retrospektiot on järjestetty ja yrittää soveltaa sieltä hyväksi todettuja käytäntöjä ohjelmistokehitykseen Guided-flow’n puitteissa. 56 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää 5. Johtopäätökset Olen asettanut työssäni kaksi kysymystä: Ovatko GUIDe-määrittelyyn perustuvat sovellukset tehokkaampia kuin muilla tavoilla määritellyt sovellukset? Määritellyn tehokkuusjärjestyksen puitteissa GUIDella määritetyt sovellukset ovat huomattavasti tehokkaampia kuin muilla menetelmillä samaan ongelmaan määritellyt sovellukset. Seuraavat seikat kannattaa ottaa huomioon: • Tehokkuusvertailu on tehty vain kahdelle sovellusparille. Näin pienestä joukosta ei luotettavasti voi vetää vedenpitäviä johtopäätöksiä. • Vertailupareiksi on saatu “patologisia” tapauksia eli GUIDella määritellyn ja toimivaksi todetun sovelluksen vertailupariksi on saatu käytössä erittäin tehottomaksi todettuja sovelluksia. Tällöin tehokkuuserot ovat todella räikeitä. Mielenkiintoista olisi vertailla kahta käytössä todella hyväksi todettua sovellusta, joista toinen on määritelty GUIDella. • Määritetty tehokkuusjärjestys on johdettu GUIDen suunnitteluperiaatteista: mitä tehokkaampi ja suoraviivaisempi käyttöliittymä, sitä parempi se on. Menetelmä tuottaa suoraviivaisia ja tehokkaita käyttöliittymiä, mutta minkälainen yhteys suoraviivaisuudella ja tehokkuudella on käyttäjien kokemukseen? Jos yhteys on vahva, määritetty tehokkuusjärjestys ennustaa hyvin myös käyttäjien kokemuksen. Jos yhteys on heikko, tehokkuusjärjestyksen käsite ei välttämättä ole hyvä tapa mitata käyttöliittymien soveltuvuutta annettuihin tavoitteisiin. • GUIDe-määritettyjä hankkeita ei ole Reaktorin hankehistoriassa kertaakaan jouduttu uudelleenmäärittämään: sovelluksen alkuperäisen määrittelyn pohjalta on saatu aikaan sovellus, jonka käyttäjät ovat todenneet poikkeuksetta hyödylliseksi. Toteutusvaiheen aikana kertyvän lisäinformaation ja käyttäjäpalautteen pohjalta on jouduttu tekemään vain pieniä ja paikallisia muutoksia alkuperäiseen määrittelyyn. Muiden määrittelymenetelmien kanssa hyvinkin dramaattisia muutoksia on jouduttu tekemään, äärimmäisenä esimerkkinä Toisu. Tämä osaltaan tukee Reaktorin toiminnallisten määrittelijöiden kokemukseen perustuvaa näkemystä: GUIDemäärittely on systemaattinen tapa tuottaa hyviä käyttöliittymiä. 57 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Mitkä syyt puoltavat Guided-flow’n mukaisia käytäntöjä hankkeissa, joissa toteutetaan GUIDe-määrittelyn pohjalta tietokonesovellus? • Prosessien täysin luotettava vertailu vaatisi käytännössä identtisten hankkeiden toteuttamista vertailtavien prosessien avulla. Tällöin variaatiot hankkeiden lähtökohdissa eivät voisi olla syynä erilaisille lopputuloksille. Tällaisia tilanteita on käytännössä hyvin vaikea järjestää. • Paremmin arvoa tuottava prosessi on taloudellisista syistä parempi, koska sijoitetulle pääomalle saadaan parempi tuotto. Jos luotetaan siihen, että leanajattelun mukaisesti toimiminen tuottaa prosesseja, jotka tuottavat enemmän arvoa kuin ei-leanit verrokit, systemaattisesti lean-periaatteiden mukaan parannettu eli leanattu prosessi on tuottaa enemmän arvoa kuin sellainen prosessi, jota ei ole systemaattisesti parannettu lean-periaatteiden mukaan. Koska Guided-flow on leanattu versio Guide-Scrumista, on hyvä syy luottaa siihen, että Scrum-flow tuottaa enemmän arvoa asiakkaille kuin Guide-Scrum. Tällöin taloudelliset syyt puoltavat Guided-flow’n käyttöä. • Myös toteuttajien preferenssiä voidaan pitää luotettavana indikaatiota prosessin tehokkuudesta: ne menetelmät ja prosessit, joissa toteuttajat kokevat olevansa tehokkaampia, ovat usein tehokkaampia arvon tuottamisessa. Tästä hyviä esimerkkejä ovat esimerkiksi Extreme programming (XP) ja Agile-liike, jotka ovat saaneet merkittävää jalansijaa ohjelmistotuotannon alalla. Kahden tutkimuskysymyksen lisäksi olen raportoinut Guided-flow’hun liittyviä ongelmia. • Riippuvuus toiminnallisesta määrittelijästä saattaa hyvinkin johtua vain siitä, että Reaktorilla on noin sataa kehittäjää, mutta vain kuusi toiminnallistä määrittelijää. Voi olla, että koko ongelmaa ei ole, jos riittävän usea reaktorilainen hallitsee riittävän hyvin toiminnallisen määrittelyn erikoistaidot. Sama saattaa päteä tutkivan testauksen käynnistyskuluihin: Reaktorilla on kolme tutkivan testauksen asiantuntijaa. Tämäkin ongelma saattaa poistua, jos riittävän moni reaktorilainen hallitsee tutkivan testauksen erikoistaidot. • Retrospektion ajoitus tuntuu olevan aidosti Guided-flow’hun sisäänrakennettu ongelma, jonka ratkaisu mitä luultavimmin vaatii erilaista lähestymistä. Kyseessä on vakava ongelma, koska sekä lean-ajattelussa että 58 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Scrumissa korostetaan käytäntöjen jatkuvaa parantamista perustuen havaintoihin omasta toiminnasta. 59 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää 6. Yhteenveto GUIDe on vakiintunut hankkeiden määrittelymenetemäksi Reaktorilla, koska GUIDella määritellyt sovellukset eivät ole vaatineet merkittäviä muutoksia määritelmiin toteutusvaiheessa ja sovellukset ovat toimineet hyvin käyttäjien työn tukena julkaisun jälkeen. GUIDen paremmuutta suhteessa muihin menetelmiin on kuitenkin vaikea todistaa, koska se vaatisi tilastollisesti identtisiä hankkeita, joissa erona olisi vain määrittely- ja toteutusmenetelmät. Muutamien tapausten pohjalta ei voi aukottomasti vetää johtopäätöksiä paremmuudesta, koska ohjelmistokehityshankkeissa on myös monia muita asioita, jotka vaikuttavat lopputuloksen hyödyllisyyteen. Tehtyjen tehokkuusvertailujen pohjalta voi varovasti sanoa, että GUIDe tuottaa parempia käyttöliittymiä kuin sellaiset menetelmät, jotka eivät sisällä simulointiin perustuvaa suunnittelua ja testausta käyttäjien oikeiden käyttötilanteiden avulla. Tulos on vain alustava, koska vertailujen otos on hyvin pieni. Guided-flow’n jalansijan kasvaminen perustuu pitkälti määrittely- ja toteutustyötä tekevien reaktorilaisten hyviin kokemuksiin menetelmän käytöstä ja sijoitetun pääoman parempaan tuottoon tehokkaammassa prosessissa. Myös Guided-flow’n paremmutta on systemaattisesti vaikea todistaa. Syyt ovat samat kuin GUIDen paremmuuden argumentoinnissa. Kokemusten perusteella molemmat menetelmät tuntuvat olevan huomattavasti parempia kuin aiemmin käytetyt. Guided-flow eliminoi monta Guide-Scrumissa esiintyvää ongelmaa, mutta erityisesti retrospektion ajoituksen ongelma Guided-flow’ssa on merkittävä ratkaisematon ongelma, jota ei esiinny Guide-Scrumissa. 60 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Viitteet Bach, 2003. Exploratory Testing Explained. www.satisfice.com/articles/etarticle.pdf. Viitattu 8.6.2010. Cohn, 2004. User Stories Applied: For Agile Software Development. Addison Wesley. ISBN 9780321205681. Deemer et al, 2009. The scrum primer. http://scrumtraininginstitute.com/ home/stream_download/scrumprimer. Viitattu 6.6.2010. Interacta, 2010. Interactan etusivu. http://interacta.fi/. Viitattu 7.6.2010. Järvenpää, 2006. Test-Driven Development. http://www.reaktor.fi/web/fi/ teknologia-ja-tutkimus/tdd. Viitattu 14.5.2010. Laakso et Laakso 2004. Hyvän käyttöliittymän varmistaminen GUIDeprosessimallilla. http://www.cs.helsinki.fi/u/salaakso/papers/GUIDesuomeksi.pdf. Viitattu 5.6.2010. Laakso et Latva-Koivisto, 2006. Käyttöliittymät. http://www.cs.helsinki.fi/u/ salaakso/papers/Kayttoliittymat-opetusmoniste-2006.pdf. Viitattu 5.6.2010. Lindström, 2006. Scrum. http://www.reaktor.fi/web/fi/teknologia-jatutkimus/scrum. Viitattu 14.5.2010. Maister, 2001. The Trusted Advisor. Free Press. ISBN 0743212347. Poppendieck et Poppendieck, 2003. Lean Software Development: An Agile Toolkit. Addison Wesley. ISBN 9780321150783. Reaktor, 2010a. Keskustelu aiheesta “Miksi preferoitte Guided-flow’ta?”. Keskusteluun osallistuivat Reaktorilta Jakub Järvenpää, Vesa-Matti Mäkinen, Karri-Pekka Laakso, Mikko Koponen, Miki Leskinen, Eero Anttila ja Joni Freeman. Keskustelu on käyty 3.5.2010. Reaktor, 2010b. Keskustelu aiheesta “Karpo-123-flow'n hand-offeihin liittyvät ongelmat”. Keskusteluun osallistuivat Reaktorilta Jakub Järvenpää, Samuli Karjula, Antti Mattila, Karri-Pekka Laakso ja Jari Mäkelä. Keskustelu on käyty 27.5.2010. Robinson et al., 2003. Requirements interaction management. http:// portal.acm.org/citation.cfm?id=857079. Viitattu 14.4.2010. 61 Diplomityö Tietokoneohjelman toteuttaminen GUIDe-määrittelyn pohjalta Jakub Järvenpää Rosenthal, 2008. Mura, muri (and muda) in heathcare. http:// theleanthinker.com/2008/01/29/mura-muri-and-muda-in-health-care/. Viitattu 7.6.2010. Schwaber et Sutherland, 2009. Scrum guide.http://www.scrum.org/ scrumguides. Viitattu 6.6.2010. Sutherland et Schwaber, 2007. The scrum papers: Nuts bolts, and origins of an agile process. http://scrumtraininginstitute.com/home/stream_download/ scrumpapers. Viitattu 6.6.2010. Takeuchi et Nonaka, 1986. The new new product development game. Harvard Business Review, 64(1):137–146, 1986. ISSN 00178012. VersionOne, 2008. The State of Agile Development. http:// www.versionone.com/pdf/3rdAnnualStateofAgile_FullDataReport.pdf. Viitattu 6.6.2010. Ward, 2007. Lean Product and Process Development. Lean Enterprises Inst Inc. ISBN 9781934109137. Wikipedia: Exploratory testing. http://en.wikipedia.org/wiki/ Exploratory_testing. Viitattu 6.6.2010. Wikipedia: Lead time. http://en.wikipedia.org/wiki/Lead_time. Viitattu 6.6.2010. Wikipedia: Lean software development. http://en.wikipedia.org/wiki/ Lean_software_development. Viitattu 6.6.2010. Wikipedia: Muda. http://en.wikipedia.org/wiki/Muda_%28Japanese_term %29. Viitattu 6.6.2010. Wikipedia: Mura. http://en.wikipedia.org/wiki/Mura_%28Japanese_term%29. Viitattu 6.6.2010. Wikipedia: Muri. http://en.wikipedia.org/wiki/Muri_%28Japanese_term%29. Viitattu 6.6.2010. Wikipedia: Toyota production system. http://en.wikipedia.org/wiki/ Toyota_Production_System. Viitattu 6.6.2010. 62
© Copyright 2024