Ohjelmistoarkkitehtuurin sisällyttäminen ketteriin ohjelmistotuotantomenetelmiin
|
|
- Eeva Lattu
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 hyväksymispäivä arvosana arvostelija Ohjelmistoarkkitehtuurin sisällyttäminen ketteriin ohjelmistotuotantomenetelmiin Tero Huomo Helsinki Kandidaatin tutkielma HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
2 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta Fakultet Faculty Laitos Institution Department Matemaattis-luonnontieteellinen Tekijä Författare Author Tero Huomo Työn nimi Arbetets titel Title Tietojenkäsittelytieteen laitos Ohjelmistoarkkitehtuurin sisällyttäminen ketteriin ohjelmistotuotantomenetelmiin Oppiaine Läroämne Subject Tietojenkäsittelytiede Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages Kandidaatin tutkielma sivua Tiivistelmä Referat Abstract Ketterän ohjelmistokehitys myötä ohjelmistosuunnittelu ja ohjelmistoarkkitehtuurin merkitys on muuttunut. Perinteisessä vesiputousmallissa suunnittelulle ja määrittelylle varattiin kuukausia ennen ohjelmoinnin aloittamista. Ketterässä ohjelmistotuotannossa ei tehdä raskasta suunnitteluprosessia etukäteen, vaan järjestelmän rakenne muotoutuu asiakkaan ja kehitysryhmän valitsemien toteutettavien ominaisuuksien mukaan. Arkkitehtuuri muodostuu inkrementaalisesti kehitysjaksosta toiseen. Tarpeen vaatiessa järjestelmän rakennetta refaktoroidaan, eli sitä muutetaan yksinkertaisemmaksi ja selkeämmäksi muuttamatta järjestelmän toiminnallisuutta. Osa ohjelmistokehittäjistä pitää ketterän ohjelmistokehityksen suhdetta suunnitteluun haastavana. Järjestelmän rakenteen luominen inkrementaalisesti vaatii tietoa ja taitoa, ja kehitysympäristön mahdolliset rajoitteet tulevat esiin vasta ohjelmoinnin aikana. Ketterässä kehityksessä ei ole luonnollista tilaa ohjelmistoarkkitehtuurille. Ketterä ohjelmistokehitys antaa liian vähän neuvoja rakenteen suunnittelulle ja toteutukselle. Toisinaan ketterää ohjelmistokehitystä käyttävät yhtiöt ovat sopeutuneet erilaisilla käytännöillä, joilla oppikirjan mukaisia kehitystapoja on muokattu huomioimaan paremmin ohjelmistoarkkitehtuurin haasteet. Tässä tutkielmassa käsitellään viittä käytäntöä, joita suositellaan tai käytetään ohjelmistoarkkitehtuurin sisällyttämiseksi ketteriin ohjelmistotuotantomenetelmiin. Käytännöt antavat vaihtoehtoisia tapoja järjestelmän arkkitehtuurin tuottamiseen, mutta eivät välttämättä ole linjassa ketterien periaatteiden kanssa. ACM Computing Classication System (CCS): D.2.11 [Software Architectures] D.2.9 [Management - Software Process Models] Avainsanat Nyckelord Keywords Ohjelmistoarkkitehtuuri, ketterä ohjelmistokehitys, suunnittelu Säilytyspaikka Förvaringsställe Where deposited Muita tietoja övriga uppgifter Additional information
3 Sisältö ii 1 Johdanto 1 2 Suunnittelu ketterässä ohjelmistotuotannossa Julkaisun suunnittelu Iteraation suunnittelu Kehitysjaksossa tapahtuva suunnittelu Arkkitehtuuriyhteisön kritiikki 5 4 Käytänteet arkkitehtuurin sisällyttämiseen Sprint Arkkitehtuuri erillisenä prosessina Suunnittelupiikit Arkkitehtuurijaksot Arkkitehtuuritarinat Yleistä käytännöistä Yhteenveto 15 Lähteet 17
4 1 1 Johdanto Ohjelmiston arkkitehtuuri voidaan ajatella ohjelman pohjapiirustuksina. Arkkitehtuuri on korkean tason kuvaus järjestelmän komponenteista, komponenttien yhteyksistä sekä järjestelmän osien fyysisestä sijainnista [Iee00]. Arkkitehtuuri käsittää myös järjestelmän rakennetta koskevat päätökset sekä järjestelmän laajuiset ohjelmointikäytänteet. Vesiputousmalli on ohjelmistotuotannon prosessimalli, jossa arkkitehtuuri on suuressa osassa. Ohjelmisto suunniteltiin kokonaisuudessaan etukäteen. Järjestelmän rakenteen ja sen yksityiskohtien suunnitteluun varattiin kuukausien mittainen suunnitteluvaihe. Tarkan suunnitelman pohjalta ohjelmoinnin oli tarkoitus olla lähes mekaanista työtä. Vesiputousmallin käsitys ohjelmistotuotantoprosessista on ongelmallinen. Ongelmia erittelee esimerkiksi Craig Larman [Lar03]. Vesiputousmallin ongelmiin ratkaisuja tarjoaa ketterä ohjelmistokehitys, jonka myötä suunnittelun rooli ohjelmistotuotannossa on muuttunut. Ketterän ohjelmistokehityksen julistus [BBB01a] kuvaa ketterän ohjelmistokehityksen arvot. Ketterässä ohjelmistotuotannossa on lähtökohtana jakaa projekti kehitysjaksoihin, joissa keskitytään vain pieneen osaan järjestelmän toiminnallisuutta. Tavoitteena on tuottaa tasaisin väliajoin asiakkaalle arvokasta ohjelmistoa. Tärkeä ketterä arvo on muutosvalmius [BBB01b]. Jatkuviin muutoksiin varautumista arvostetaan muuttumatonta suunnitelmaa enemmän. Ketterää ohjelmistokehitystä ja arkkitehtuurilähtöistä ohjelmistotuotantoa pidetään usein vastakkainasetteluna. Ketterä ohjelmistokehitys hylkää perinteisen arkkitehtuurisuunnittelun ja järjestelmän rakentamisen lähes kokonaan, sillä tiukka suunnitelmallisuus ei ole ketterien arvojen mukainen. Esimerkiksi Extreme Programming kieltää tuottamasta ylimääräistä ohjelmakoodia, jos sitä ei tarvita juuri kyseisellä hetkellä [BeC04]. Osa ohjelmistokehittäjistä pitää ketterälle ohjelmistokehitykselle tyypillistä inkrementaalista järjestelmän rakentamista haastavana. Haasteiksi nähdään esimerkiksi järjestelmän skaalautuvuus, kehityksen jakaminen usean kehitysryhmän välille sekä järjestelmän suunnittelun vaikeus [Boe02]. Ketterän ohjelmistokehityksen arvoihin [BBB01b] kuuluu projektiryhmien mukautuvuus ympäristön vaatimuksiin. Projektiryhmät ovat omaksuneet erilaisia tapoja huomioida ohjelmistoarkkitehtuuri ja arkkitehtuurisuunnittelu ketterässä ohjelmistokehityksessä. Tapoja ovat eritelleet erityisesti Pekka Eloranta ja Kai Koskimies [ElK13]. Tässä tutkielmassa kuvataan näitä tapoja ja muita vaihtoehtoisia käytänteitä, joilla ketterässä ohjelmistokehityksessä voidaan ottaa ohjelmistoarkkitehtuuri
5 2 paremmin huomioon. Käytänteiden esittelyn lisäksi tarkastellaan kritiikkiä, jota arkkitehtuuriyhteisö esittää puhdasta oppikirjojen mukaista ketterää ohjelmistokehitystä vastaan. Ketterän ohjelmistokehityksen rajoituksien tarkastelu auttaa hahmottamaan sitä, miten käytänteet vastaavat osaan esitetystä kritiikistä. Käytänteiden yhteydessä käsitellään kuitenkin myös sitä, mitä ketterän kehityksen perimmäisiä arvoja uudet tavat mahdollisesti rikkovat tai saattavat rikkoa väärin käytettyinä. Luvussa 2 eritellään tarkemmin suunnittelun eri osat ketterässä ohjelmistokehityksessä. Käsittely on rajattu Extreme Programmingiin sekä Scrumiin. Luvussa 3 käsitellään kritiikkiä, joka koskee luvussa 2 esiteltäviä suunnittelumenetelmiä ja niiden rajoittuneisuutta ohjelmistoarkkitehtuurin kannalta. Luvussa 4 kuvataan käytäntöjä, joilla arkkitehtuuri ja arkkitehtuurin suunnittelu on mahdollista liittää osaksi ketterää tuotantoprosessia kritiikin kumoamiseksi. Yhteenveto aiheesta esitetään luvussa 5. 2 Suunnittelu ketterässä ohjelmistotuotannossa Tässä luvussa käsitellään karkeasti suunnittelua suosituimmissa ketterän ohjelmistokehityksen suuntauksissa. Tutkielmassa keskitytään Scrumiin [ScB01] ja Extreme Programmingiin (XP) [BeC04], jotka ovat vuoden 2011 käytetyimmät ketterän ohjelmistokehityksen mallit [Ver11]. Yhteensä kahta lueteltua menetelmää käytti yli 60% ketteriä menetelmiä hyödyntävistä projekteista. Scrumia ja Extreme Programmingia käytetään erikseen ja yhdistettynä. Osa harvinaisemmin käytetyistä ketteristä menetelmistä saattaa antaa toisenlaisia ohjeita suunnittelulle, mutta ketterän ohjelmistokehityksen julistuksen [BBB01a] pohjalta ne noudattavat useita samoja tapoja. Ketterissä menetelmissä projekti tuotetaan iteraatioissa. Pitkä projekti jaetaan lyhyisiin tuotantojaksoihin. Scrumissa pyrähdykseksi (sprint) kutsutun jakson suositeltava pituus on tyypillisesti kahdesta neljään viikkoon [ScB01]. Extreme Programmingissa puolestaan suositellaan pituudeksi 1-3 viikkoa [BeC04, s. 120]. Jokaisen tuotantojakson tavoitteena on toimiva ja käytettävä ohjelma. Tämä mahdollistaa ohjelmiston käyttöönoton jo tuotannon varhaisessa vaiheessa, vaikka järjestelmä sisältäisi vasta murto-osan lopullisen tuotteen toiminnallisuudesta. Tuotantojaksoissa toteutetaan aina muutamia asiakkaan vaatimia ominaisuuksia.
6 3 Scrumissa toteuttavat vaatimukset valitsevat tuotantoryhmä ja asiakas yhteistyössä. Samoin toimii myös Extreme Programming. Valinnassa asiakkaan mielipide on tärkein, sillä hän asettaa vaatimuksensa tärkeysjärjestykseen. Järjestelmä rakentuu inkrementaalisesti, kun tuotantojaksoon valitut toiminnot liitetään osaksi aiemmissa jaksoissa toteutettua järjestelmää. Järjestelmän laajetessa ja vaatimusten muuttuessa ohjelman sisäistä rakennetta muokataan, jos rakennetta voidaan siten selkeyttää ja parantaa. Ketterässä ohjelmistokehityksessä tapahtuvan suunnittelun voi jakaa karkeasti kolmeen osaan: Julkaisun suunnittelu (release planning) Iteraation suunnittelu (iteration planning) Kehitysjakson aikana tapahtuva suunnittelu 2.1 Julkaisun suunnittelu Julkaisun suunnittelusta käytetään Scrumissa sekä Extreme Programmingissa nimeä release planning. Molemmissa suuntauksissa järjestetään projektin aluksi lyhyt suunnitteluvaihe, jossa kerätään, kartoitetaan ja määritellään asiakkaan vaatimukset. Vaatimukset kerätään usein käyttäjätarinoina (user story), joista yksittäinen tarina selvittää yhden ohjelmalta vaaditun toiminnallisuuden. Esimerkiksi "opiskelija kirjautuu järjestelmään"ja "opiskelija ilmoittautuu laskuharjoitusryhmään"voisivat olla kaksi erillistä käyttäjätarinaa ilmoittautumisjärjestelmässä. Käyttäjätarinat kerätään tärkeysjärjestyksessä pidettävään työlistaan, jota Scrumissa kutsutaan nimellä backlog [Sch04, s. 10]. Listan alkupäähän sijoitetaan tärkeimmät ja yksityiskohtaisimmin määritellyt ominaisuudet. Tärkeysjärjestyksen päättää asiakas. Suunnittelutilaisuudessa arvioidaan myös käyttäjätarinoiden ohjelmoimiseen kuluvaa aikaa [Kni07]. Ajan perusteella voidaan arvioida ja suunnitella projektin alustava aikataulu. Julkaisun suunnittelu on projektin lähtöpiste, mutta sitä ei lopeteta aloituksen jälkeen. Asiakkaalla on aina mahdollisuus priorisoida työlistaa uudestaan sekä lisätä listaan uusia vaatimuksia. Ketterien menetelmien olettamus on, ettei asiakas välttämättä tiedä vielä projektin alussa, mitkä ovat hänen tarkat vaatimuksensa järjestelmältä. Vaatimukset tarkentuvat ja lisääntyvät projektin edetessä. Ketterien kehitysryhmien tulee varautua alati muuttuviin vaatimuksiin [BBB01b].
7 4 2.2 Iteraation suunnittelu Iteraation suunnittelu on toiselta nimeltään pyrähdyksen suunnittelu (sprint planning). Ennen jokaista kehitysjaksoa Scrumissa järjestetään lyhyt kaksiosainen suunnittelutilaisuus [Kni07]. Extreme Programming ei tee kaksiosaista jakoa, mutta Beck ja Fowler [BeF00] kuvailevat hyvin samankaltaisen lähestymistavan. Ensimmäisessä osassa on tarkoitus selvittää seuraavan tuotantojakson tavoite. Seuraavaan tuotantojaksoon valitaan toteutettavat käyttäjätarinat, joiden määrittelyä tarkennetaan tarpeen vaatiessa. Käyttäjätarinoita voi myös pilkkoa tai järjestää uudestaan, jotta asiakas ja kehitysryhmä pääsevät yhteisymmärrykseen toteutettavista ominaisuuksista [Kni07]. Kehitysryhmä sitoutuu valittujen vaatimusten toteuttamiseen. Käyttäjätarinat voivat selkeästi liittyä toisiinsa ja muodostaa järjestelmän osia. Iteraation suunnittelun ensimmäisessä osassa voidaan kiinnittää huomiota siihen, että kehitysjaksoon otetut käyttäjätarinat liittyisivät selkeästi toisiinsa ja muodostaisivat isompia kokonaisuuksia järjestelmästä. Kehitysjakson suunnittelun toinen vaihe käytetään suunnitellessa sitä, miten kehitysjakson tavoitteet saavutetaan [Kni07]. Kehitysryhmä suunnittelee ja miettii tarvittavalla tasolla, miten vaatimukset toteutetaan ja mitä niiden toteuttaminen vaatii. Scrumissa on myös tapana pilkkoa käyttäjätarinat vielä pienemmiksi, maksimissaan yhden työpäivän vieviksi työtehtäviksi (task). Työtehtäviä voi olla esimerkiksi yksittäisen komponentin toteuttaminen, yksikkötestien kirjoittaminen tai tietokantapalvelimen pystyttäminen. 2.3 Kehitysjaksossa tapahtuva suunnittelu Kehitysjakson aikana tapahtuvaan suunnitteluun ketterät ohjelmistokehitysmetodiikat antavat vähiten ohjeita. Scrum-oppaat eivät ota lainkaan kantaa kehitysjakson sisäiseen suunnitteluun tai suunnittelutilaisuuksiin. Scrum luottaa ryhmän itseorganisoituvuuteen ja yksilöiden taitoihin. Itseorganisoituvuus ja ryhmään luottaminen ovat osa ketterän julistuksen periaatteeita [BBB01b]. Ketterän kehityksen julistuksen perusperiaatteissa luetellaan myös yksinkertaisuuden vaaliminen. Extreme Programmingin ohje kehitysjaksossa tapahtuvaan suunnitteluun on turhan työn minimointi. Kent Beck painottaa järjestelmän rakentamisessa mahdollisimman yksinkertaista lähestymistapaa [BeC04]. Kun kehittäjä saa työtehtäväkseen uuden toiminnallisuuden, tulisi se liittää järjestelmään aluksi niin yksinkertaisesti kuin mahdollista. Ylimääräistä työtä ei saa tehdä, vaikka ylimääräiset
8 5 lisäykset saattaisivat vaikuttaa tulevaisuuden kannalta hyödyllisiltä. Extreme Programming korostaa myös refaktoroinnin tärkeyttä. Refaktorointi on järjestelmän rakenteen muokkaamista yksinkertaisemmaksi ja selkeämmäksi ilman, että järjestelmän toiminnallisuus muuttuu. Martin Fowlerin mukaan jatkuvalla refaktoroinnilla saavutetaan mahdollisimman yksinkertainen rakenne [Fow01]. Järjestelmään voi toteuttaa esimerkiksi tunnetun suunnittelumallin, jos se tekee ohjelmasta selkeämmän ja ylläpidettävämmän. 3 Arkkitehtuuriyhteisön kritiikki Ketterän kehityksen ja arkkitehtuurivetoinen ohjelmistokehityksen vastakkainasettelu tiedostetaan useassa lähteessä. Varsinaisia syitä vastakkainasettelulle esitetään kuitenkin harvoin. Esimerkiksi vastakkainasettelua käsittelevät Abrahamsson ja kumppanit [ABK10] sekä Kruchten [Kru10] kyseenalaistavat koko vastakkainasettelun tarpeellisuuden. Artikkelit keskittyvät siihen, miten vastakkainasettelua pitäisi tutkia, tai onko ajatus vastakkainasettelusta tarpeeton. Tässä luvussa keskitytään arkkitehtuuriyhteisön kritiikkiin ketterästä ohjelmistokehityksestä, jotta syyt luvussa 4 esiteltävien käytäntöjen taustalla ovat selvät. Käsite arkkitehtuuriyhteisö tarkoittaa tässä yhteydessä ohjelmistokehittäjiä, jotka painottavat kehitystyössä ohjelmistoarkkitehtuurin ja suunnitelmallisuuden merkitystä, mutta joiden mielestä ketterä kehitys ei kiinnitä niihin huomiota riittävästi. Tutkielmassa sivuutamme ketterän ohjelmistokehityksen puolestapuhujien vastaukset esitettyyn kritiikkiin. Ohjelmistoarkkitehtuurille ei ole tarkkaa yksiselitteistä ja kaikkien hyväksymää määritelmää. Yksi tapa määritellä ohjelmistoarkkitehtuuri on kutsua sitä järjestelmän pohjapiirustuksiksi. IEEE:n standardin [Iee00] mukaan arkkitehtuuriin kuuluu järjestelmän korkean tason rakenne, joka sisältää järjestelmän osat, osien väliset suhteet sekä tiedon osien yhteistyöstä. Arkkitehtuuri keskittyy järjestelmän keskeisiin osiin ja teknisiin kysymyksiin, kuten järjestelmän hajautukseen, skaalautuvuuteen sekä tietoturvaan. Arkkitehtuuri määrittelee järjestelmän suuret linjat. Ketterän kehityksen pääpaino on toteuttaa järjestelmän rakenne inkrementaalisesti pienissä osissa. Barry Boehm pitää järjestelmän pilkkomista ja osista yhtenäisen järjestelmän koostamista haastavana taitona [Boe02]. Ketterä kehitys vaatii tuntemusta ohjelmoitavasta laitealustasta, suunnittelumalleista sekä yleisimmistä järjes-
9 6 telmärakenteista. Ilman erillistä suunnitteluvaihetta projekti vaatii kokeneita työntekijöitä. Boehm muistuttaa, että 49,9% ohjelmoijista ovat keskimääräistä huonompia. Myös Larry Constantine yhtyy ajatukseen siitä, että maailmassa on vain rajattu määrä kokeneita ja osaavia ohjelmoijia [Con01]. Ohjelmointia edeltäneessä suunnitteluvaiheessa on yleensä selvitetty rakenteen ja vaatimusten lisäksi ympäristön ja kohdelaitteiston asettamat rajoitteet. Suunnitteluvaiheen puuttuessa rajoitteet ja vaatimukset tulevat esille vasta kehityksen aikana. Järjestelmän rakenteen suunnitteluun ja rajoitteiden kartoittamiseen varatun suunnitteluvaiheen puuttuminen onkin yhtiöille suurin syy olla siirtymättä ketterään kehitykseen [Ver11]. Erillisen suunnitteluvaiheen puute voi tehdä projektista vaikean jakaa usealle kehittäjäryhmälle. Kehityksen aikana eri ryhmille jaetuista osista voi paljastua yllättäviä riippuvaisuuksia. Kehitysryhmien välisten riippuvaisuuksien vuoksi ryhmät joutuvat odottamaan tai jäljentämään toisen kehitysryhmän työtä. Esimerkki tapauksesta on MSLite-projekti [NOS12]. Se jouduttiin aloittamaan alusta yllättävien riippuvuussuhteiden vuoksi. Ohjelmiston alustavan rakenteen puuttuminen voi luoda myös tarpeen suurelle määrälle muokkaamista ja uudelleen tehtävää työtä. Mahdollisimman yksinkertainen arkkitehtuuri ei välttämättä skaalaudu asiakkaan tarpeisiin. Vastaavasti lisätyötä tuottaa se, jos rakenne pidetään liian joustavana ja skaalautuvana jatkokehitystä tai uusia omanaisuuksia varten [Boe02]. Ketterät menetelmät usein arvostavat muokkaavaa työtä refaktoroinnin muodossa, mutta järjestelmän laajuinen refaktorointi vie aikaa ja voi viivästyttää projektia. Extreme Programming painottaa myös turhan työn minimointia, kuten esitettiin luvussa 2. Tapaa perustellaan ennalta-arvaamattomilla muutoksilla ja asiakkaan usein huonosti määrittelemillä vaatimuksilla. Boehmin [Boe02] mukaan käytäntö on kuitenkin huono silloin, jos vaatimukset ovat tarkasti tiedossa. Käytäntö hylkää aikaisin tehtävät järjestelmän kannalta tärkeät lisäykset, vaikka niiden lisääminen myöhemmin olisi varmaa. Boehm huomauttaa myös ongelmista asiakkaiden kanssa, jos kehitysryhmä ei luota asiakkaan vaatimusten muuttumattomuuteen. Tämä voi herättää asiakkaassa vastaavaa epäluottamusta kehitysryhmää kohtaan. Turhan työn välttäminen voi tavoitella myös sitä, että tärkeät päätökset jätetään viimeiseen mahdolliseen hetkeen [BeC04, s. 23]. Kun päätökset tehdään viimeisenä mahdollisena hetkenä, on kohdelaitteistosta ja järjestelmästä eniten tietoa. Uuden tiedon perusteella tehdään todennäköisimmin oikeat valinnat. Abrahamsson ja
10 7 kumppanit huomauttavat, että liian myöhäiset päätökset järjestelmän rakenteesta voivat johtaa projektin kaaokseen [ABK10]. Eloranta ja Koskimies uskovat, että ketterästä ohjelmistokehityksestä puuttuu luonnollinen tila järjestelmän rakenteen suunnittelulle [ElK11]. Järjestelmän sisäinen rakenne ei ole asiakkaalle suoraan hyödyksi, joten ketterä ohjelmistokehitys ei anna ohjelmistoarkkitehtuurille sen vaatimaa arvoa. Järjestelmäsuunnittelun puuttuminen olisi syy kehitysryhmien luomiin ja omaksumiin käytänteisiin, jotka ottavat huomioon myös ohjelmistoarkkitehtuurin merkityksen ohjelmistokehityksessä. 4 Käytänteet arkkitehtuurin sisällyttämiseen Yhtenä ketterän ohjelmistokehityksen julistuksen kahdestatoista periaatteista ryhmän olisi mukauduttava ollakseen tehokkaampi [BBB01b]. Jokainen kehitysryhmä ja projekti on yksilöllinen - kaikille projekteille ei sovi samanlaiset kehitystavat. Periaate antaa luvan muokata ryhmän toimintaa tarpeen vaatiessa projektin ja ympäristön vaatimuksiin soveltuvaksi. Periaatetta voi hyödyntää myös ratkaisuna kritiikkiin, jota arkkitehtuuriyhteisö esittää ketterää ohjelmistokehitystä vastaan. Tässä luvussa esitellään käytäntöjä tai metodiikkojen laajennoksia, joilla ohjelmistoarkkitehtuurin työn voi sisällyttää osaksi ketterää ohjelmistokehitystä. Käsittelyssä otetaan huomioon käytänteiden ja ketterien periaatteiden väliset eroavaisuudet sekä ristiriidat. Esiteltävät käytänteet eivät ole täysin ristiriidattomia suosituimpien ketterien ohjelmistokehitysmetodiikkojen tai ketterän ohjelmistokehityksen julistuksen kanssa. Käytänteiden yhteydessä eritellään tärkeimmät periaatteet ja ohjenuorat, joita käytänteet rikkovat. Käsittelyssä käytetään hyväksi erityisesti Elorannan ja Koskimiehen kyselytutkimuksen raporttia [ElK11] sekä sen pohjalta kirjoitettua artikkelia [ElK13], jotka listaavat kolme tämän tutkielman käsittelemistä viidestä tavasta. 4.1 Sprint 0 Ketterän kehityksen lyhyitä kehitysjaksoja kutsutaan Scrumissa pyrähdyksiksi eli sprinteiksi. Ne numeroidaan järjestyksessä yhdestä eteenpäin. Rawsthorne esitteli vuonna 2007 käsitteen Sprint 0 [Raw07]. Se on projektin aloitustoimiin suunnattu pyrähdys ennen varsinaisia kehitysjaksoja.
11 8 Rawsthornen ohjeissa Sprint 0 on kehitystyön alustamiseen tarkoitettu jakso. Ennen ensimmäistä varsinaista kehitysjaksoa siinä voidaan esimerkiksi konguroida työntekijöiden kehitystietokoneet, asentaa tarpeelliset palvelimet sekä hoitaa muut projektin aloituksen kannalta tärkeät toimenpiteet. Rawsthorne määritteli jakson noin viikon pituiseksi. Rawsthorne suositteli myös muutaman konkreettisen koodirivin kirjoittamista, jotta kehitystyö saadaan alkuun. Kirjoituksen kommenteissa Rawsthornen lähestymistapa herättää kysymyksiä ja kritiikkiä. Miten alustusjaksossa tehtävät toimet eroavat niistä, mitä normaalisti tehdään ensimmäisen kehitysjakson aikana? Architech Solutionsin toisenlaisessa näkökulmassa Sprint 0 voidaan suunnata etukäteen suoritettavaan järjestelmän rakenteen suunnitteluun [Arc10]. Sprint 0:ssa luodaan korkean tason suunnitelma ohjelmiston arkkitehtuurista. Elorannan ja Koskimiehen tutkimuksessa Architech Solutionsin kaltainen Sprint 0 oli käytössä useassa yhtiössä [ElK11]. Käytännössä Sprint 0 rajataan usein samaan 2-4 työskentelyviikkoon kuin muut tuotantojaksot. Ero Vesiputousmallin pitkään ja tarkkaan suunnitteluvaiheeseen on myös se, ettei arkkitehtuurin ole tarkoitus olla lopullinen. Tarpeen vaatiessa sitä laajennetaan ja muutetaan myöhemmissä kehitysjaksoissa. Lisäksi varhaisen arkkitehtuurin luo erillisten ohjelmistoarkkitehtien sijasta sama kehitysryhmä, joka vastaa ohjelmistojärjestelmän toteuttamisesta. Käytäntöä seuraavat yhtiöt väittävät, että ilman sitä ne olisivat pulassa. Jaksossa käytetään aikaa esimerkiksi entuudestaan tuntemattoman laitteiston vaatimusten ja rajoitusten kartoittamiseen. Hieman vastaavaa käytäntöä on käytetty myös Leanohjelmistotuotantoa (Lean software development) hyödyntäneessä MSLite-projektissa. Siinä varhainen arkkitehtuurisuunnitelma oli myös tapa koordinoida järjestelmän osien kehitys useilla projektiryhmille [NOS12]. Suosiostaan huolimatta Sprint 0 on Scrumin ja XP:n käytänteiden vastainen. Esimerkiksi Ken Schwaber ei tunnista termiä lainkaan [Sch10]. Schwaberin mielestä Sprint 0 on tekosyy viivästyttää projektia. Kaikki Sprint 0:ssa tehtävä työ voidaan aivan yhtä hyvin tehdä myöhemmissä iteraatioissa. Schwaberin mukaan paras tapa tutustua kohdelaitteistoon tai uuteen teknologiaan on työskennellä sen parissa. Ketterän kehityksen julistuksen periaatteiden mukaisesti asiakkaalle tulisi toimittaa toimivaa järjestelmää mahdollisimman aikaisin [BBB01b]. Sprint 0 ei vielä tuota toimivaa ohjelmistoa, toisin kuin ensimmäiset kehitysjaksot normaalisti. Ohjelman sisäinen arkkitehtuuri ei tuota asiakkaalle suoraa arvoa, joten Sprint 0 ei täytä ketterän tuotantojakson vaatimuksia. Etukäteen tehtävä arkkitehtuurisuunnittelu voi
12 9 myös väärinkäytettynä johtaa liian lopulliseen järjestelmän rakenteeseen. jolloin rakenteen muuttamisesta tulee työlästä. Kehitysryhmä ei välttämättä pysty vastaamaan projektin vaatimusten muutoksiin. 4.2 Arkkitehtuuri erillisenä prosessina Ketterässä ohjelmistokehityksessä järjestelmän rakenne muodostuu usein kehitysjaksojen aikana. Ohjelmistoarkkitehtuuri voidaan myös eriyttää omaksi prosessikseen [Lef07, s. 209]. Arkkitehtuurin suunnittelee ja mahdollisesti myös osin toteuttaa erilliset arkkitehdit. Arkkitehtiryhmä noudattaa omaa prosessimalliaan ja aikatauluaan. Arkkitehtiryhmä sitoutuu kehitysryhmän aikataulun perusteella määriteltyihin tarkistuspisteisiin, jolloin tietty osa järjestelmän rakenteesta täytyy olla valmis kehitysryhmää varten. Arkkitehtiryhmän huomio keskittyy vaatimuksiin, jota ohjelmistolta halutaan myöhemmissä kehitysjaksoissa. Ryhmän vastuu on suunnitella järjestelmän rakenne, joka tukee seuraavia lisättäviä toimintoja. Dean Lengwellin mallissa arkkitehtuuriryhmä ei yritä luoda järjestelmää kerralla, vaan valmistelee sitä juuri riittävästi tukemaan seuraavia toiminnallisuuksia [Lef07]. Järjestelmän rakenne muodostuu toiminnallisuuksien tapaan iteratiivisesti ja inkrementaalisesti. Ennen rakenteen toteuttamista arkkitehdit todistavat suunnitelmansa sopivaksi esimerkiksi prototyypeillä tai rakennetta demonstroivalla ohjelmakoodilla. Tyypillisesti osa arkkitehtiryhmän jäsenistä kuuluu myös toiminnallisuuksia ohjelmoivaan kehitysryhmään [ElK13]. Siten molemmat ryhmät pysyvät ajantasalla siitä, mitä järjestelmän rakenteelta vaaditaan, ja miten rakenne rajoittaa ohjelmointia. Jos arkkitehtuurin implementoinnista järjestelmään huolehtii kehitysryhmä, molempiin ryhmiin kuuluva jäsen tietää, miten rakenne toteutetaan seuraavassa kehitysjaksossa. Arkkitehtiryhmän ei tarvitse noudattaa ketterää prosessimallia, kunhan se pystyy noudattamaan kehitysryhmän prosessimallin määrittämiä aikatauluja. Yksi tapa on kuitenkin se, että myös arkkitehtuuriryhmä noudattaa esimerkiksi Scrumia. Tällöin ohjelmiston toiminnallisuuden kehittäjät ovat ikään kuin asiakkaan roolissa järjestelmän rakenteesta vastaavalle ryhmälle. Abrahamssonin ja kumppanien [ABK10] mukaan jopa pienimmät päätökset nähdään usein virheellisesti järjestelmän rakenteen kannalta merkittävinä. Eriytetyssä arkkitehtuuriprosessissa on tärkeää ymmärtää, mitkä ovat arkkitehtuurisesti mer-
13 10 kittäviä kysymyksiä ja päätöksiä. Siten saadaan eroteltua arkkitehtuuriryhmän ja kehitysryhmän vastuualueet. Koskimiehen ja Elorannan tutkimuksissa esiintyi muutamia projekteja, joissa käytettiin arkkitehtuuri oli eriytetty omaksi prosessikseen. Yhtiöt käyttivät lähestymistapansa perusteluna sitä, etteivät ne halunneet sotkea arkkitehtuurilla oppikirjan mukaista Scrumin prosessimallia [ElK13]. Scrumia käyttävä kehitysryhmä pystyi täysin keskittymään prosessimallin noudattamiseen sekä ohjelman toiminnallisuuksiin. Extreme Programmingia käyttäessä arkkitehtuurin eriyttäminen on vaikeaa, sillä XP:n mukaan [BeC04] järjestelmän rakenne ilmaantuu ohjelmoitaessa. Järjestelmä ei enää todennäköisesti olisi mahdollisimman yksinkertainen, jos sitä suunnittelee toinen ryhmä. Toisaalta arkkitehtiryhmä vastaa siitä, että järjestelmä tukee seuraavia laajennoksia, joten kehitysryhmällä on pienempi tarve lisätä ohjelmaan yksinkertaisuuden periaatteen vastaista tulevaisuuteen varautuvaa ohjelmakoodia. Arkkitehtuuri eriytettynä prosessina varaa ohjelmistoarkkitehtuurille aikaa huomattavasti tavallista ketterää kehitystä enemmän. Arkkitehtiryhmän on mahdollista tuottaa ohjelmalle useita vaihtoehtoisia arkkitehtuureja [ElK11]. Vaihtoehdoista valitaan tilanteeseen sopivin ennen seuraavan kehitysjakson alkua. Parhaimmassa tapauksessa noudatetaan Extreme Programmingin neuvoa viimeisestä mahdollisesta hetkestä tärkeille valinnoille. Eriytetty arkkitehtuuriprosessi voi kuitenkin johtaa siihen, ettei se huomioi riittävän hyvin järjestelmän muuttuvia vaatimuksia. Asiakas voi vaatia seuraavaan kehitysjaksoon toteutettavaksi vaatimukset, joihin suunniteltu järjestelmän rakenne ei ota kantaa. Jos ohjelmiston kehittäjiä ei kuulu arkkitehtiryhmään, voi kehitysryhmä ja arkkitehtiryhmä ymmärtää vaatimukset tai ryhmien vastuut eri tavoin. Tämä voi luoda järjestelmälle rakenteen, joka rajoittaa kehitysryhmän mahdollisuuksia tai tekee vaatimusten täyttämisen mahdottomaksi. Ketterän ohjelmistokehityksen julistus [BBB01a] painottaa, että parhaat arkkitehtuurit ja suunnitelmat kumpuavat itseorganisoituvista kehitysryhmistä. Lisäksi pitäisi luottaa, että kehitysryhmät hoitavat työn, johon ne ovat sitoutuneet. Jos arkkitehtuuri on eriytetty kokonaan omaksi prosessikseen, ei järjestelmän rakenteessa ole välttämättä lainkaan kehitysryhmän työpanosta. Järjestelmän rakenteen suunnittelua ei tällöin ole luotettu kehitysryhmälle.
14 Suunnittelupiikit Suunnittelupiikit (design spike) ovat iteraation aikana suoritettavia työjaksoja, joissa ratkotaan järjestelmän laajentamisesta koituvia ongelmia, suunnittelun haasteita sekä uuden teknologian vaikutusta järjestelmään. Dean Lengwell määrittelee suunnittelupiikit kohdeltaviksi kuten käyttäjätarinat - ne priorisoidaan, estimoidaan ja suoritetaan [Lef07, s. 209]. Suunnittelupiikit auttavat ymmärtämään käytettävän teknologian yksityiskohtia. Suunnittelupiikkejä käytetään myös tutkittaessa vaihtoehtoisia lähestymistapoja. Extreme Programming hyväksyy suunnittelupiikit käytäntönä. Wells luettelee piikit yhtenä XP:n säännöistä [Wel99]. Wells määrittelee piikit yksinkertaisina ohjelmina, joilla kokeillaan potentiaalisia ratkaisuja vaikeisiin teknisiin tai rakenteellisiin ongelmiin. Tavoitteena on vähentää teknisten ongelmien riskiä sekä lisätä käyttäjätarinoiden aika-arvioiden luotettavuutta. Suunnittelupiikkiin voi muutama kehittäjä varata aikaa jopa yhdeksi tai kahdeksi viikoksi. Piikit eivät suoraan ole ristiriidassa ketterän kehityksen periaatteiden kanssa. Tutkimustyö ja piikkien käyttö kuitenkin vie kehitysryhmältä resursseja [Lef07]. Ryhmän työvauhti laskee yksittäisissä jaksoissa, jos liian moni kehittäjä osallistuu suunnittelupiikkeihin. Jos resursseja uhrataan liikaa, voi kehitysjakson tavoitteet jäädä toteuttamatta. Tavoitteiden viivästyessä usein koko projekti viivästyy, jos suunnittelupiikki ei auta kirimään menetettyä aikaa. ChannelAdvisor on esimerkki yhtiöstä, jonka onnistuneessa ketterässä ohjelmistoprojektissa sallittiin piikit [Ish08]. Projektissa piikkeihin käytetty aika rajattiin. Lisäksi piikeille määriteltiin selkeä hyväksymistavoite, joka piti piikit organisoituina ja tuottavina. Eloranta ja Koskimies eivät erikseen huomioineet artikkelissaan suunnittelupiikkien käyttöä. 4.4 Arkkitehtuurijaksot Lengwell esittelee kokonaisten kehitysjaksojen käytön järjestelmän rakenteen suunnitteluun, kehitykseen ja toteuttamiseen [Lef07, s ]. Tarvittaessa tavallisen kehitysjakson sijasta suoritetaan arkkitehtuurijakso (architecture sprint). Arkkitehtuurijaksoa voidaan pitää laajennettuna variaationa suunnittelupiikistä. Etuna on koko kehitysryhmän sitoutuminen toimintaan, jolloin noudatetaan ketterien periaatteiden mukaista luottamusta ryhmään ja sen itseorganisoituvuuteen.
15 12 Eloranta ja Koskimies eivät havainneet yhtiöitä, jotka käyttäisivät ohjelmistotuotannossaan tätä käytäntöä. Hieman vastaavaa käyttäytymistä kuitenkin havaittiin yhtiössä, joka oli ottanut käyttöönsä niin kutsutun team sprintin [ElK11]. Team sprintissä asiakas ei valitse kehitysjaksossa toteutettavia vaatimuksia. Valinnat suorittaa kehitysryhmä. Nämä kehitysjaksot ovat olleet ensisijaisesti tapa antaa vapaus kehitysryhmän innovaatiolle ja luovuudelle. Team sprint -kehitysjaksoon valittiin usein työtehtäviä, jotka jäisivät muuten tärkeysjärjestyksen vuoksi kokonaan toteuttamatta. Jos kehitysryhmä ottaisi team sprintissä toteutettavakseen ainoastaan järjestelmän rakenteen kannalta keskeisiä vaatimuksia, olisi team sprint arkkitehtuurijaksoa vastaava jakso. Arkkitehtuurijaksojen ongelmat ovat yhtäläiset kuin luvun 4.1 Sprint 0:ssa. Arkkitehtuurijakson lopputuloksena on vähäisesti tai ei lainkaan asiakasta hyödyttäviä konkreettisia ominaisuuksia. Asiakas voi myös olla vaikeasti suostuteltavissa ohjelman sisäiseen rakenteeseen keskittyviin tuotantojaksoihin, jotka viivästyttävät ominaisuuksien valmistusta. 4.5 Arkkitehtuuritarinat Vaatimukset määritellään ketterissä menetelmissä usein käyttäjätarinoina. Konkreettisessa maailmassa ne ovat pieniä lappuja, joihin kirjoitetaan toiminnallisuus ja toiminnallisuuden toteuttamiseen kuluva aika. Aika-arvion tekee kehitysryhmä. Yksittäinen käyttäjätarina pitää määrittelee pienen toiminnallisuuden. Käyttäjätarinoissa on perinteisesti esitetty nimenomaan järjestelmän eri käyttäjien konkreettisia toimintoja. Tarinat pilkotaan edelleen pienemmiksi työtehtäviksi, kun ne otetaan työstettäväksi kehitysjaksossa. Arkkitehtuuritarinat (architecture stories) tai kehittäjätarinat (developer stories) ovat käyttäjätarinoita vastaavia vaatimuksia, mutta niitä kirjaavat asiakkaan sijasta järjestelmää kehittävä ryhmä [JMS06]. Arkkitehtuuritarinat kuvaavat järjestelmän rakenteen vaatimuksia, jotka eivät näy asiakkaalle. Esimerkkeinä arkkitehtuuritarinoista on jonkin järjestelmän komponentin suunnittelu, järjestelmän osien refaktorointi tai suunnittelumallien toteuttaminen järjestelmään. Arkkitehtuuritarinoiden viemä aika estimoidaan käyttäjätarinoiden tavoin. [JMS06] Ne priorisoidaan samaan työlistaan kuin käyttäjätarinat. Toisinaan suositellaan myös kokonaan omaa työlistaa arkkitehtuuritarinoille [BNO10]. Arkkitehtuuritarinoiden ideana on tuoda esille järjestelmän refaktoroinnin ja suunnittelun konkreettiset vaa-
16 13 timukset. Ne toimivat kehitysryhmälle myös muistutuksena ja tietona järjestelmän rakenteesta [JMS06]. Käyttäjätarinoiden aika-arvioiden perusteella pystytään arvioimaan kehitysryhmän työvauhtia (velocity). Ensimmäisen kehitysjakson jälkeen voidaan laskea toteutuneiden käyttäjätarinoiden aika-arviot yhteen, jolloin saadaan tietää ryhmän työvauhti [Kni07]. Työvauhdin avulla arvioidaan, kuinka monta käyttäjätarinaa seuraavassa kehitysjaksossa ehditään toteuttaa. Toteutettavia vaatimuksia valittaessa ryhmän työvauhti voidaan jakaa käyttäjä- ja arkkitehtuuritarinoiden välille [NOS12]. Esimerkiksi käyttäjätarinoiden toteuttamiselle voidaan varata kaksi kolmasosaa ja arkkitehtuuritarinoille yksi kolmasosa ryhmän kokonaistyövauhdista. Lähestymistavan etuna on se, että järjestelmän rakenteelle ja toiminnallisuudelle varataan aikaa tasaisesti jokaiseen kehitysjaksoon. Työvauhtia jakaessa järjestelmän rakenteen vaatima aika ei jää huomioimatta. Oleellinen osa arkkitehtuuritarinoita on työtehtävien näkyvyys työtiloissa. Ketterissä menetelmissä suosittu väline on Kanban-taulu. Se on valkotaulu, joka jaetaan osiin [Aro01]. Taulun vasemmalle puolelle sijoitetaan kehitysjaksoon valitut vaatimukset ja niistä pilkotut työtehtävät. Seuraavat taulun osat ovat kyseisellä hetkellä työstettävät tehtävät sekä testaukseen ehtineet tehtävät. Aivan taulun oikeassa reunassa ovat testauksen läpäisseet, valmistuneet työtehtävät. Käyttäjätarinoita ja työtehtäviä kuvaavat laput kiinnitetään taululle ja niitä siirretään oikeille paikoilleen kehitysjakson edessä. Lappujen on tarkoitus kulkea taulun vasemmasta reunasta oikeaan. Ipek Ozkaya ja Robert Nord korostavat arkkitehtuuritarinoiden näkyvyyden tärkeyttä Kanban-taululla [BNO10]. Näkyvyys auttaa erottamaan selkeästi järjestelmän rakenteen kannalta oleelliset työtehtävät. Erottamiseen on muutamia tapoja [NOS12]. Ensimmäinen tapa on jakaa taulu vaakaviivalla kahteen osaan, joista ylempään liitetään tavalliset käyttäjätarinat ja alempaan arkkitehtuuritarinat. Toinen tapa on värikoodata työtehtävät. Esimerkiksi käyttäjätarinat voitaisiin kirjoittaa keltaisille lapuille ja rakenteeseen liittyvät tarinat sinisille. Jensen ja kumppanit [JMS06] väittävät, ettei kehittäjätarinat ole ristiriitaisia Extreme Programmingin käytänteiden kanssa. Nord ja Ozkaya suosittelevat myös arkkitehtuuritarinoita, joita voidaan työstää useassa kehitysjaksossa [NOS12]. Suosituimpien ketterien ohjelmistokehityksen metodiikkojen määritelmä käyttäjätarinoille on kuitenkin se, että niiden tulisi olla toteutettavissa yhden kehitysjakson aikana. Tarpeen vaatiessa käyttäjätarinoita tulisi pilkkoa pienemmiksi. Sama ohje on sovellet-
17 14 tavissa myös arkkitehtuuritarinoihin. Arkkitehtuuritarinat eivät ole ketterän ohjelmistokehityksen julistuksen vastaisia. Ne saattavat jopa auttaa kiinnittämään huomiota jatkuvaan tekniseen erinomaisuuteen sekä yrityshenkilöstön ja ohjelmistokehittäjien yhteistyöhön, joita ketterät periaatteet [BBB01b] vaalivat. Arkkitehtuuritarinat voivat selkeyttää myös asiakkaalle sitä, millaista lisätyötä hänen vaatimuksensa tuottavat. Teknisesti taitamatonta asiakasta voi olla hankala saada sopimaan menetelmästä, jossa työlistaan otetaan myös asiakkaan kannalta merkityksettömiä työtehtäviä, tai jaksojen työtehtävät valittaisiin tasaisesti käyttäjä- ja arkkitehtuuritarinoista. 4.6 Yleistä käytännöistä Käytäntöjen vertailu tai paremmuusjärjestyksen tekeminen on haastavaa, ellei mahdotonta. Yhtä oikeaa valintaa ei ole. Käytäntöjen käyttöä tai niiden välttämistä vertailevaa empiiristä tutkimusta ei ole. Elorannan ja Koskimiehen tutkimuksissa käytänteitä hyödyntäneet projektiryhmät olivat myös pääosin tyytyväisiä valintoihinsa. Tutkimukset eivät kuitenkaan maininneet kehitysryhmistä, jotka olisivat kokeilleet useita vaihtoehtoisia tapoja. Käytäntöjen käsittelyn yhteydessä mainittiin lisäksi joitakin yksittäisiä projekteja, jotka käyttivät tapoja onnistuneesti. Vastaavasti on varmasti yhtä paljon tapauksia, joissa projektit ovat onnistuneet puhtaalla ketterällä ohjelmistokehityksellä. Käytännöt eivät useinkaan ole keskenään ristiriidassa. Projektissa olisi mahdollista hyödyntää montaa käytäntöä. Esimerkiksi kehitysryhmästä eriytetty arkkitehtuuriryhmä voisi todistaa suunnittelemansa rakenteen toimivaksi prototyypein ja ohjelmakoodein, mutta siirtää vastuun arkkitehtuurin toteuttamisesta kehitysryhmälle arkkitehtuuritarinoiden muodossa. Sprint 0:lla aloittanut ryhmä voisi tukeutua suunnittelupiikkeihin, jos alustavaa arkkitehtuuria täytyy muuttaa. Käytäntöjen yhdistelemisestä ei kuitenkaan ole tutkimuksia. Liian monen käytännön sisällyttäminen ohjelmistotuotantoprosessiin ei välttämättä ole enää lainkaan ketterän ohjelmistokehityksen periaatteiden mukainen, vaan ketterien periaatteiden hukkuessa se voi olla enemmänkin arkkitehtuuriorientoitunut prosessimalli. Vaihtoehtoisesti ketterien menetelmien ja käytänteiden yhdistelmästä voisi luoda täysin uudenlaisen prosessimallin. Yhdistelevä tuotantoprosessi voi myös lukeutua Leanohjelmistotuotannoksi, jos se noudattaa sopivasti Lean-ohjelmistotuotannon periaatteita.
18 15 5 Yhteenveto Arkkitehtuurivetoinen ohjelmistokehitys ja ketterä ohjelmistokehitys nähdään usein vaihtoehtoisina tai ristiriitaisina lähestymistapoina. Ketterä ohjelmistokehitys luottaa siihen, että sopiva järjestelmän rakenne ja selkeät osien yhteydet kumpuavat kehittäessä ohjelmaa vastaamaan niitä vaatimuksia, joita sen hetkiseen kehitysiteraatioon on valittu. Usein sopivaan arkkitehtuuriin ohjeistetaan yksinkertaisuuden vaalimisella ja turhan työn välttämisellä. Osa ketterän kehityksen metodiikoista, esimerkiksi Scrum, ei ota järjestelmän rakenteen suunnitteluun lainkaan kantaa. Arkkitehtuuriyhteisön mielestä ketterän kehityksen suhde järjestelmän rakenteen suunnitteluun on haastava. Arkkitehtuuriyhteisö vaatiikin ketterältä prosessilta aikaa myös järjestelmän rakenteen määrittelyyn, suunnitteluun ja toteuttamiseen. Ketterä kehitys ei huomioi riittävästi järjestelmän ei-toiminnallisia vaatimuksia. Järjestelmän laajetessa vaaditaan huomattavasti refaktorointia, jotta järjestelmä pysyy ylläpidettävänä ja riittävän laajennettavana. Ilman suunnitteluvaihetta kehitysympäristön ja kohdelaitteiston rajoitukset eivät aina ole selvät. Järjestelmän rakenteen kehitys ja suunnittelu on haastavaa erityisesti kokemattomammille ohjelmistokehittäjille, jotka eivät tunne kohdelaitteistoa tai kaikkia yleisesti käytettyjä suunnittelumalleja. Projektin aloitusta edeltävän suunnitteluvaiheen puuttuminen on suurimpia syitä olla vaihtamatta ketteriin ohjelmistokehitysmetodeihin. Ketterän ohjelmistokehityksen periaatteisiin kuuluu kehitysryhmän mukautuvuus. Käytännön työelämässä kehitysryhmät ovatkin luoneet käytänteitä, joilla arkkitehtuurin suunnittelun ja toteutuksen voi liittää osaksi ketterää ohjelmistokehitystä. Niistä osa tapahtuu varsinaisten ketterien kehitysjaksojen ulkopuolella, osa taas on toteutettavissa itse iteraatioissa. Sprint 0 on perinteistä suunnitteluvaihetta korvaava jakso, joka on usein tavallisen kehitysjakson mittainen. Siinä voidaan suunnitella ohjelmalle rakenne, jonka ei ole tarkoitus olla lopullinen. Rakennetta muutetaan tarpeen vaatiessa, mutta se toimii alustavana runkona projektin alkaessa. Rakenteen suunnittelee ja toteuttaa yleensä samat ohjelmiston kehittäjät, jotka toteuttavat myös järjestelmän toiminnallisuudet. Arkkitehtuuri eriytettynä prosessina siirtää vastuun järjestelmän rakenteesta erilliselle arkkitehtiryhmälle. Se voi noudattaa omaa prosessimalliaan, mutta välietapit on synkronoitava toiminnallisuuksista vastaavan ryhmän kanssa. Kommunikoinnin helpottamiseksi arkkitehtiryhmään kuuluu yleensä muutama henkilö kehitysryhmäs-
19 16 tä. Arkkitehtiryhmä voi toteuttaa myös useita vaihtoehtoisia arkkitehtuureja, joista kehitysryhmä valitsee sopivimman. Suunnittelupiikit ovat kehitysjakson sisäisiä lyhyitä ajanjaksoja, joissa suunnitellaan ja kokeillaan vaihtoehtoja vaativille teknisille tai rakenteellisille ongelmille. Piikeissä voidaan testata useita vaihtoehtoisia järjestelmän rakenteita ja teknologioita pienten esimerkkiohjelmien avulla. Yleensä suunnittelupiikit rajataan ajallisesti. Aikarajat vaihtelevat suuresti, kahdesta päivästä jopa viikkoihin. Suunnittelupiikkeihin osallistuu usein vain muutama kehitysryhmän jäsen, jotta piikit eivät vaadi liikaa resursseja. Arkkitehtuurijaksot ovat jatkettu varitaatio suunnittelupiikeistä. Arkkitehtuurijaksoissa suunnittelemiseen ja testaamiseen osallistuu koko ryhmä. Arkkitehtuurijaksoissa myös yleensä refaktoroidaan testatut rakenteelliset muutokset järjestelmään. Arkkitehtuurijaksoja järjestetään tarpeen vaatiessa normaalin kehitysjakson sijasta. Arkkitehtuuritarinat ovat ei-toiminnallisten vaatimusten vastine toiminnallisille vaatimuksille eli käyttäjätarinoille. Toiminnallisuuden sijasta arkkitehtuuritarinoissa ilmaistaan järjestelmän teknisiä ja rakenteellisia vaatimuksia. Arkkitehtuuritarinat auttavat varaamaan riittävästi aikaa järjestelmän haasteille, jotka eivät näy asiakkaalle. Tarinoihin liittyy oleellisesti niiden näkyvyys ja erottaminen normaaleista käyttäjätarinoista. Usein käytetty menetelmä on pitää työtehtävistä kirjaa Kanbantaululla, johon arkkitehtuuri- ja käyttäjätarinoista kirjoitetut laput liitetään. Arkkitehtuuritarinoiden näkyvyyttä voi parantaa esimerkiksi arkkitehtuuritarinoille varatulla omalla työlistalla tai värikoodaamalla arkkitehtuuritarinoiden laput. Ei ole olemassa yhtä ohjetta sille, mikä käytänteistä on paras tai hyödyllisin. Käytänteet ovat usein jonkin verran ristiriidassa suosituimpien ketterien menetelmien tai ketterän ohjelmistokehityksen julistuksen periaatteiden kanssa. Siitäkin huolimatta käytänteitä käyttävät monet ohjelmistoyritykset, jotka ovat olleet pääasiassa tyytyväisiä valintoihinsa. Tieteellistä vertailua käytäntöjen paremmuudesta tai vaikutuksista ketterään ohjelmistokehitykseen ei juuri ole. Ketterän ohjelmistokehityksen julistus painottaa projektiryhmän ja yhtiön muutosvalmiutta ja sopeutuvuutta. Käytännöt voivatkin olla suunnitteluorientoituneiden tai isojen yhtiöiden tapa sopeutua prosessimallin muutoksiin ja ketterän ohjelmistokehityksen haasteisiin.
20 17 Lähteet ABK10 Abrahamsson, P., Babar, M. A. ja Kruchten, P., Agility and architecture: Can they coexist? IEEE Softw., 27,2(2010), sivut Arc10 Sprint zero - where your software project begins, URL Sprint-Zero-Where-Your-Software-Project-Begins.pdf Haettu Aro01 BeC04 BBB01a BBB01b Arora, N., Kanban Guide: Demand Scheduling for Lean Manufacturing. Add ValueConsulting Inc., Beck, K. ja Andres, C., Extreme Programming Explained: Embrace Change (2nd Edition). Addison-Wesley Professional, Beck, K., Beedle, M., van Bennekum, A., Cockburn, A., Cunningham, W., Fowler, M., Grenning, J., Highsmith, J., Hunt, A., Jeries, R., Kern, J., Marick, B., Martin, R. C., Mellor, S., Schwaber, K., Sutherland, J. ja Thomas, D., Manifesto for agile software development, URL Haettu Beck, K., Beedle, M., van Bennekum, A., Cockburn, A., Cunningham, W., Fowler, M., Grenning, J., Highsmith, J., Hunt, A., Jeries, R., Kern, J., Marick, B., Martin, R. C., Mellor, S., Schwaber, K., Sutherland, J. ja Thomas, D., Principles behind the agile manifesto, URL Haettu BeF00 Beck, K. ja Fowler, M., Planning Extreme Programming. Addison- Wesley Longman Publishing Co., Inc., Boston, MA, USA, ensimmäinen painos, BNO10 Brown, N., Nord, R. ja Ozkaya, I., Enabling agility through architecture. Boe02 Boehm, B., Get ready for agile methods, with care. Computer, 35,1(2002), sivut Con01 Constantine, L., Methodological agility. Software Development.
21 18 ElK11 ElK13 Fow01 Iee00 Ish08 JMS06 Kni07 Kru10 Lar03 Lef07 NOS12 Eloranta, V.-P. ja Koskimies, K., Sulava scrum survey. Tekninen raportti, Department of Software Systems, Eloranta, V.-P. ja Koskimies, K., Software architecture practices in agile enterprises. sivut Fowler, M., Extreme programming examined. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2001, luku Is design dead?, sivut 317. Ieee recommended practice for architectural description of softwareintensive systems. IEEE Std , sivut 123. Isham, M., Agile architecture is possible you rst have to believe! Proceedings of the Agile 2008 Conference. IEEE Computer Society, 2008, sivut Jensen, R. N., Møller, T., Sönder, P. ja Tjørnehøj, G., Architecture and design in extreme programming; introducing "developer stories". Proceedings of the 7th international conference on Extreme Programming and Agile Processes in Software Engineering, XP'06, Berlin, Heidelberg, 2006, Springer-Verlag, sivut Kniberg, H., Scrum and XP from the Trenches: Enterprise Software Development. Lulu.com, Kruchten, P., Software architecture and agile software development: a clash of two cultures? ICSE (2), 2010, sivut Larman, C., Agile and Iterative Development: A Manager's Guide. Pearson Education, Lengwell, D., Scaling Software Agility: Best Practices for Large Enterprises (The Agile Software Development Series). Addison-Wesley Professional, Nord, R. L., Ozkaya, I. ja Sangwan, R. S., Making architecture visible to improve ow management in lean software development. IEEE Software, 29,5(2012), sivut Raw07 Rawsthorne, D., URL sprint-zero. Haettu
22 19 ScB01 Sch04 Schwaber, K. ja Beedle, M., Agile Software Development with Scrum. Prentice Hall PTR, Upper Saddle River, NJ, USA, ensimmäinen painos, Schwaber, K., Agile Project Management With Scrum. Microsoft Press, Redmond, WA, USA, Sch10 Schwaber, K., URL assessmentdiscussion/post/ Keskustelua Scrumin käytänteistä, Haettu Ver11 VersionOne, 6th annual state of agile survey, URL Development_Survey_Results.pdf. Haettu Wel99 Wells, D., Create a spike solution, URL extremeprogramming.org/rules/spike.html. Haettu
arvostelija OSDA ja UDDI palveluhakemistoina.
Hyväksymispäivä Arvosana arvostelija OSDA ja UDDI palveluhakemistoina. HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto Fakultet/Sektion Faculty/Section Laitos Institution
Selainpelien pelimoottorit
Selainpelien pelimoottorit Teemu Salminen Helsinki 28.10.2017 Seminaaritutkielma Helsingin yliopisto Tietojenkäsittelytiede ! 1 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta
Ketterien periaatteiden merkitys projektityössä
Ketterien periaatteiden merkitys projektityössä Suvi Jentze-Korpi Helsinki 18.10.2012 Kandidaatintutkielma-kurssin aine HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö i 1 Johdanto 1 2 Lineaarinen
Käyttäjätarinat perinteisessä hankkeessa. Sisältö ja käytännöt
Käyttäjätarinat perinteisessä hankkeessa Sisältö ja käytännöt Helsingin kaupunki 21/03/17 Käyttäjätarinat perinteisessä hankkeessa Mikä on käyttäjätarina Käyttäjätarina perinteisessä hankkeessa Käyttäjätarinan
Tutkittua tietoa. Tutkittua tietoa 1
Tutkittua tietoa T. Dybå, T. Dingsøyr: Empirical Studies of Agile Software Development : A Systematic Review. Information and Software Technology 50, 2008, 833-859. J.E. Hannay, T. Dybå, E. Arisholm, D.I.K.
Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistoprosessit ja ohjelmistojen laatu (4op)
581361 Ohjelmistoprosessit ja ohjelmistojen laatu (4op) Ohjelmistojärjestelmien syventävien opintojen kurssi Myös ohjelmistotekniikan profiilin pakollinen kurssi eli ohjelmistotekniikka-aiheisen gradun
Ville Isomöttönen. Agile. Jyväskylän Yliopisto Sivu 1 Tietotekniikan laitos
Agile Jyväskylän Yliopisto Sivu 1 Tietotekniikan laitos Manifesto of Agile Software Development(2001): We are uncovering better ways of developing software by doing it and helping others doit.throughthisworkwehavecometovalue:
Ohjelmistojen suunnittelu
Ohjelmistojen suunnittelu 581259 Ohjelmistotuotanto 154 Ohjelmistojen suunnittelu Software design is a creative activity in which you identify software components and their relationships, based on a customer
Agile. Jyväskylän Yliopisto Sivu 1 Tietotekniikan laitos
Agile Jyväskylän Yliopisto Sivu 1 Tietotekniikan laitos Manifesto of Agile Software Development (2001): We are uncovering better ways of developing software by doing it and helping others do it. Through
Arkkitehtuurinen reflektio
Arkkitehtuurinen reflektio Toni Ruokolainen Toni.Ruokolainen@cs.helsinki.fi Helsinki 6.10.2003 Tiivistelmä HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET
4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T
SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen
OpenUP ohjelmistokehitysprosessi
OpenUP ohjelmistokehitysprosessi Sami Männistö Helsinki 14.11.2008 Seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos i HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET Tiedekunta/Osasto Matemaattis-luonnontieteellinen
Ohjelmistojen mallintaminen. Luento 11, 7.12.
Ohjelmistojen mallintaminen Luento 11, 7.12. Viime viikolla... Oliosuunnittelun yleiset periaatteet Single responsibility eli luokilla vain yksi vastuu Program to an interface, not to concrete implementation,
Aika/Datum Month and year Kesäkuu 2012
Tiedekunta/Osasto Fakultet/Sektion Faculty Laitos/Institution Department Filosofian, historian, kulttuurin ja taiteiden tutkimuksen laitos Humanistinen tiedekunta Tekijä/Författare Author Veera Lahtinen
Globaalisti Hajautettu Ohjelmistokehitys Mitä, Miksi & Miten? Maria Paasivaara
Globaalisti Hajautettu Ohjelmistokehitys Mitä, Miksi & Miten? Maria Paasivaara Mitä? Mitä? Yrityksen sisäinen Mitä? Yrityksen sisäinen Alihankinta Mitä? Yrityksen sisäinen Open Source -kehitys Alihankinta
Ohjelmistojen mallintaminen, mallintaminen ja UML
582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti
Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit
Ohjelmiston testaus ja laatu Ohjelmistotekniikka elinkaarimallit Vesiputousmalli - 1 Esitutkimus Määrittely mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot millainen järjestelmä täyttää
Scrum is Not Enough. Scrum ei riitä. Ari Tanninen & Marko Taipale. Nääsvillen oliopäivä 2009 Tampereen teknillinen yliopisto 9.12.
Scrum is Not Enough Scrum ei riitä Ari Tanninen & Marko Taipale Nääsvillen oliopäivä 2009 Tampereen teknillinen yliopisto 9.12.2009 Ari Tanninen Vanhempi ohjelmistoinsinööri Marko Taipale Teknologiajohtaja,
Ohjelmistojen laadun parantaminen refaktoroinnilla Simo Mäkinen Tietojenkäsittelytieteen laitos Helsingin yliopisto
Ohjelmistojen laadun parantaminen refaktoroinnilla Simo Mäkinen Tietojenkäsittelytieteen laitos Helsingin yliopisto Mäkinen / Ohjelmistojen laadun parantaminen / Ohjelmistoprosessit ja ohjelmistojen laatu
Sisäänrakennettu tietosuoja ja ohjelmistokehitys
Sisäänrakennettu tietosuoja ja ohjelmistokehitys Petri Strandén 8. kesäkuuta, 2018 Agenda Ohjelmistokehitys Ohjelmistokehitys vs. konsultointi Vaatimukset Tietosuoja Tietosuoja ohjelmistokehityksessä kiteytettynä
Sisäänrakennettu tietosuoja ja ohjelmistokehitys
Sisäänrakennettu tietosuoja ja ohjelmistokehitys Petri Strandén 14. kesäkuuta, 2018 Petri Strandén Manager Cyber Security Services Application Technologies Petri.stranden@kpmg.fi Petri vastaa KPMG:n Technology
Ohjelmistotekniikka - Luento 2
Ohjelmistotekniikka - Luento 2 Luku 2: Prosessimallit - miten spiraalimalliin päädyttiin - spiraalimallista (R)UP malliin - oman ammattitaidon kehittäminen; PSP ja TSP mallit 1 Luento 2: Prosessimallit
Määrittely- ja suunnittelumenetelmät
Menetelmädokumentti Määrittely- ja suunnittelumenetelmät Versio Päiväys Tekijä Kuvaus 0.01 5.12.01 Pekka Koskinen Alustava sisällysluettelo 0.1 7.12.01 Pekka Koskinen Ensimmäinen luonnos 1.0 11.12.01 Pekka
Ohjelmistoarkkitehtuurit. Syksy 2008
Ohjelmistoarkkitehtuurit Syksy 2008 Kai Koskimies 1 Tervetuloa Kuopion yliopisto, Oulun yliopisto, Tampereen yliopisto, Teknillinen korkeakoulu, Turun yliopisto, Vaasan yliopisto, Tampereen teknillinen
Copyright by Haikala. Ohjelmistotuotannon osa-alueet
Copyright by Haikala Ohjelmistotuotannon osa-alueet Ohjelmiston elinkaari 1. Esitutkimus, tarvekartoitus, kokonaissuunnittelu, järjestelmäsuunnittelu (feasibility study, requirement study, preliminary
Software engineering
Software engineering Alkuperäinen määritelmä: Naur P., Randell B. (eds.): Software Engineering: A Report on A Conference Sponsored by the NATO Science Committee, NATO, 1968: The establishment and use of
Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages
Tiedekunta/Osasto Fakultet/Sektion Faculty Laitos Institution Department Tekijä Författare Author Työn nimi Arbetets titel Title Oppiaine Läroämne Subject Työn laji Arbetets art Level Aika Datum Month
Test-Driven Development
Test-Driven Development Ohjelmistotuotanto syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole
Ohjelmistotekniikka - Luento 2 Jouni Lappalainen
Ohjelmistotekniikka - Luento 2 Jouni Lappalainen Luku 2: Prosessimallit - miten spiraalimalliin päädyttiin - spiraalimallista (R)UP malliin - oman ammattitaidon kehittäminen; PSP ja TSP mallit 1 Luento
Koht dialogia? Organisaation toimintaympäristön teemojen hallinta dynaamisessa julkisuudessa tarkastelussa toiminta sosiaalisessa mediassa
Kohtdialogia? Organisaationtoimintaympäristönteemojenhallinta dynaamisessajulkisuudessatarkastelussatoiminta sosiaalisessamediassa SatuMariaPusa Helsinginyliopisto Valtiotieteellinentiedekunta Sosiaalitieteidenlaitos
Koekysymyksiä. Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistojen suorituskyky
Koekysymyksiä Ohjelmistoprosessit ja ohjelmistojen laatu 30.4.2015 58153003 Ohjelmistojen suorituskyky 1 Kurssikokeeseen tulee neljä koetilaisuudessa vastattavaa kysymystä KOKEESSA VASTATTAVAT KYSYMYKSET
Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA. Karoliina Ljungberg
Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA Karoliina Ljungberg 16.04.2009 Ohjaajat: Ari Venäläinen, Jouni Räisänen
T Johdatus käyttäjäkeskeiseen tuotekehitykseen. suunnitteluprosessissa. Käyttäjän huomiointi. Iteroitu versio paljon kirjoitusvirheitä
Käyttäjäkeskeinen suunnittelu Käyttäjän huomiointi suunnitteluprosessissa Iteroitu versio 1.1 muutettu klo12.10 - paljon kirjoitusvirheitä Käyttäjäkeskeinen suunnittelu Perusidea: käyttäjät huomioidaan
Käyttäjäkeskeinen suunnittelu
Käyttäjäkeskeinen suunnittelu Käyttäjän huomiointi suunnitteluprosessissa Iteroitu versio 1.1 muutettu klo12.10 - paljon kirjoitusvirheitä Käyttäjäkeskeinen suunnittelu Perusidea: käyttäjät huomioidaan
Ohjelmistoprojekteista. Datanomiopiskelijat 2.vuosi
Ohjelmistoprojekteista Datanomiopiskelijat 2.vuosi Yleistä projekteista Projekti on selkeästi asetettuihin tavoitteisiin pyrkivä, ajallisesti rajattu kertaluonteinen hanke, jonka toteuttamisesta vastaa
Arkkitehtuuritietoisku. eli mitä aina olet halunnut tietää arkkitehtuureista, muttet ole uskaltanut kysyä
Arkkitehtuuritietoisku eli mitä aina olet halunnut tietää arkkitehtuureista, muttet ole uskaltanut kysyä Esikysymys Kuinka moni aikoo suunnitella projektityönsä arkkitehtuurin? Onko tämä arkkitehtuuria?
Käytettävyyssuunnitelman toteuttaminen Scrum-prosessimallissa
Käytettävyyssuunnitelman toteuttaminen Scrum-prosessimallissa Linda Hellman Helsinki 04.03.2008 Pro gradu -tutkielma HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS
Automaattinen yksikkötestaus
Teknillinen Korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Automaattinen yksikkötestaus Ryhmä Rajoitteiset Versio Päivämäärä Tekijä
Ryhmädynamiikka ja ketterät menetelmät
Ryhmädynamiikka ja ketterät menetelmät Ohjelmistoprojektien johtaminen ja ryhmädynamiikka 13.2.2018 Fabian Fagerholm Scrumban-tiimin päiväkokous (Flickr, Creative Commons) Johdanto Fabian Fagerholm fabian.fagerholm@helsinki.fi
Ohjelmistoarkkitehtuurit. Syksy 2010
Ohjelmistoarkkitehtuurit Syksy 2010 Kai Koskimies Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto, Vaasan yliopisto Kurssin tavoitteet Arkkitehtuurin roolin
Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.
Sisällys Ratkaisumallien historia Jaakko Vuolasto 25.1.2001! Ratkaisumalli! Christopher Alexander! Ohjelmistotuotannosta arkkitehtuuriin! Henkilöhistoriaa! Ensimmäisiä käyttökokemuksia! Yhteenveto 25.1.2001
Tutkittu totuus globaalista ohjelmistokehityksestä
Tutkittu totuus globaalista ohjelmistokehityksestä Kalle Varisvirta Seminaariraportti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Helsinki, 24. marraskuuta 2013 HELSINGIN YLIOPISTO HELSINGFORS
! #! %! & #!!!!! ()) +
! #! %! & #!!!!! ()) + Tiedekunta/Osasto Fakultet/Sektion Faculty Humanistinen tiedekunta Laitos Institution Department Taiteiden tutkimuksen laitos Tekijä Författare Author Matti Pesonen Työn nimi Arbetets
Ohjelmistoarkkitehtuurit. Kevät
Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto 2 Kurssin tavoitteet
Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1
Ohjelmistoarkkitehtuurit Syksy 2009 Kai Koskimies Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 Tervetuloa Kuopion yliopisto, Oulun yliopisto (Kajaani), Tampereen yliopisto, Turun yliopisto,
Yrittäjäkasvatuksen polku - sivusto. Yksityiskohtainen suunnittelu Huhtikuu 2018
Yrittäjäkasvatuksen polku - sivusto Yksityiskohtainen suunnittelu Huhtikuu 2018 Sisällys 1. Sivuston tavoitteet 2. Tausta 3. Näkemys työn tekemisestä ja etenemisestä 4. Roolit ja vastuut -ehdotus 5. Ylätason
Ketteristä menetelmistä ja niiden ryhmädynamiikasta. Ohjelmistotuotantoprojektien johtaminen ja ryhmädynamiikka Fabian Fagerholm
Ketteristä menetelmistä ja niiden ryhmädynamiikasta Ohjelmistotuotantoprojektien johtaminen ja ryhmädynamiikka 25.11.2014 Fabian Fagerholm Tohtorikoulutettava ohjelmistojärjestelmät-linjalla Tutkimusaihe:
Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg
Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg Matematiikan ja tilastotieteen laitos Tietojenkäsittelytieteen laitos Kisällioppiminen = oppipoikamestari
Ohjelmistotekniikka - Luento 3 Jouni Lappalainen
Ohjelmistotekniikka - Luento 3 Jouni Lappalainen Luku 3: Ketterä kehitys - ketterien menetelmien 12 periaatetta - XP (extreme programming) - Scrum menetelmä - Lean menetelmä 1 Luku 3: Ketterä kehittäminen
TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)
TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu
Test-Driven Development
Test-Driven Development Syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole keksiä kaikkia mahdollisia
Juha Taina, Marko Salmenkivi ja Kjell Lemström,
Ohjelmistotuotanto Johdattelua, motivointia, eli missä ollaan ja kuinka siihen on tultu Kuinka valmistaa laadukkaita ja tehokkaita ohjelmistoja mahdollisimman edullisesti? Ohjelmistotuotanto (Software
IT2015 EKT-ehtojen käyttö
-ehtojen käyttö Erityisehtoja ohjelmistojen toimituksista ketterillä menetelmillä Näiden ohjeiden tavoitteena on helpottaa sopimista ketterien menetelmien käytöstä IT-alalla ja nostaa esiin keskeisiä sopimusta
Scrum-käytännöt ja käyttäjäkokemustyö ohjelmistoalan yrityksessä. Marie-Elise Kontro
Scrum-käytännöt ja käyttäjäkokemustyö ohjelmistoalan yrityksessä Marie-Elise Kontro 25.03.2015 Sisältö 1. Tutkimuskysymykset 2. Scrum ja käyttäjäkokemustyö 3. Tutkimusmenetelmä 4. Tulokset 5. Luotettavuuden
Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia
Ohjelmistojen mallintaminen, kurssikoe 15.12. esimerkkivastauksia Tehtävä 1 a: Ohjelmistotuotantoprosessi sisältää yleensä aina seuraavat vaiheet: määrittely, suunnittelu, toteutus, testaus ja ylläpito.
Johdattelua, motivointia, eli missä ollaan ja kuinka siihen on tultu
Johdattelua, motivointia, eli missä ollaan ja kuinka siihen on tultu 581259 Ohjelmistotuotanto 1 Ohjelmistotuotanto Kuinka valmistaa laadukkaita ja tehokkaita ohjelmistoja mahdollisimman edullisesti? Ohjelmistotuotanto
COTOOL dokumentaatio SEPA: Refaktorointi
Table of Contents Refaktorointi................................................................................ 1 1 Tehtävänanto.............................................................................
Maailman muutosta tallentamassa Marko Vuokolan The Seventh Wave -valokuvasarja avauksena taidevalokuvan aikaan
Maailman muutosta tallentamassa Marko Vuokolan The Seventh Wave -valokuvasarja avauksena taidevalokuvan aikaan Pro gradu -tutkielma 31.1.2012 Helsingin yliopisto Humanistinen tiedekunta Filosofian, historian,
arvostelija Turvallisuuskriittisissä, sulautetuissa järjestelmissä esiintyvien ohjelmistovaatimusten virheanalyysi Jarkko-Juhana Sievi
hyväksymispäivä arvosana arvostelija Turvallisuuskriittisissä, sulautetuissa järjestelmissä esiintyvien ohjelmistovaatimusten virheanalyysi Jarkko-Juhana Sievi Helsinki 6.4.2005 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen
Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:
Dokumentaatio, osa 1 Tehtävämäärittely Kirjoitetaan lyhyt kuvaus toteutettavasta ohjelmasta. Kuvaus tarkentuu myöhemmin, aluksi dokumentoidaan vain ideat, joiden pohjalta työtä lähdetään tekemään. Kuvaus
Ketterä projektinhallinta
Ketterä projektinhallinta Petri Heiramo Agile Coach, CST 1 Petri Heiramo Ikä: 37 (vielä pari päivää ) Oma koulutus- ja valmennusyritys, Agilecraft Oy, reilut 3 viikkoa Lähes 10v ohjelmistokehitys- ja -prosessitausta
Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa
Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 8.1.2014 1 1 Johdanto 1.1 Mikä on ohjelmistoarkkitehtuuri? 1.2 Ohjelmistoarkkitehtuuri ja laatuvaatimukset 1.3
Ohjelmistoarkkitehtuurit Kevät käytäntöjä
Ohjelmistoarkkitehtuurit Kevät 2014 -käytäntöjä Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 8.1.2014 1 Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto
Projektityö
Projektityö 21.10.2005 Projektisuunnitelma Työn ositus Projektisuunnitelman sisältö Kurssin luennoitsija ja projektiryhmien ohjaaja: Timo Poranen (email: tp@cs.uta.fi, työhuone: B1042) Kurssin kotisivut:
Kun scrum ei riitä - skaalaa ketterä tuotekehitys SAFe lla Nestori Syynimaa Sovelto Oyj
Kun scrum ei riitä - skaalaa ketterä tuotekehitys SAFe lla 28.10.2016 Nestori Syynimaa Sovelto Oyj 1 Puhujasta Seniori-konsultti Nestori Syynimaa SAFe, Scrum, Lean IT, ITIL, kokonaisarkkitehtuuri,.. PhD
Petri Mattila KÄYTTÄJÄKESKEISEN SUUNNITTELUN INTEGROINTI KETTERÄN KEHITTÄMISEN PROSESSIIN JA ROOLEIHIN
Petri Mattila KÄYTTÄJÄKESKEISEN SUUNNITTELUN INTEGROINTI KETTERÄN KEHITTÄMISEN PROSESSIIN JA ROOLEIHIN JYVÄSKYLÄN YLIOPISTO TIETOJENKÄSITTELYTIETEIDEN LAITOS 2014 TIIVISTELMÄ Mattila, Petri Käyttäjäkeskeisen
Laskennallinen yhteiskuntatiede
Laskennallinen yhteiskuntatiede Matti Nelimarkka Helsinki 5.5.2011 LuK tutkielma HELSINGIN YLIOPISTO Tietojenkasittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta
Ohjelmistotekniikka - Luento 3
Ohjelmistotekniikka - Luento 3 Luku 3: Ketterä kehitys - ketterien menetelmien 12 periaatetta - XP (extreme programming) - Scrum menetelmä Lean menetelmä 1 Luku 3: Ketterä kehittäminen Ketterä (agile)
Luonnontieteiden popularisointi ja sen ideologia
Luonnontieteiden popularisointi ja sen ideologia Tapauksina Reino Tuokko ja Helsingin Sanomat 1960-luvulla Ahto Apajalahti Helsingin yliopisto Humanistinen tiedekunta Suomen ja Pohjoismaiden historia Pro
SEPA päiväkirja. BetaTeam. Juho Mäkinen, 57796V, Jari Leppä, 42710V, Versio Pvm Tekijä Kuvaus
SEPA päiväkirja BetaTeam Juho Mäkinen, 57796V, jvmakine@cc.hut.fi Jari Leppä, 42710V, jleppa@cc.hut.fi Versio Pvm Tekijä Kuvaus 0.1 10.11.2005 Juho Mäkinen Johdanto 1. 0.2 11.11.2005 J.Mäkinen, Käytäntöön
Onnistunut ohjelmistoprojekti
Onnistunut ohjelmistoprojekti 2.12.2008 Hermanni Hyytiälä Reaktor Innovations Oy Agenda Yritysesittely Keinoja onnistuneeseen ohjelmistoprojektiin Ihmiset Menetelmät Käytännöt ja työkalut Tulevaisuuden
Project group Tete Work-time Attendance Software
Project group Tete Work-time Attendance Software Henkilökohtainen SE harjoitus: etenemisraportti Versionhallinta BitKeeper-työkalun avulla Tuomas Heino Muutosloki Versio Pvm Tekijä Kuvaus 1.0 01.12.2003
Hajaantuminen. Juha Taina, Marko Salmenkivi ja Kjell Lemstöm, Ohjelmistotuotanto 30
Hajaantuminen tällä hetkellä ohjelmistotuotantoa kuvaa hajaantuminen ja erikoistuminen perusperiaatteet ovat säilyneet ennallaan, mutta yritykset käyttävät omia räätälöityjä prosessimalleja, menetelmiä
Lyhyt johdatus ketterään testaukseen
TTY:n Testauspäivät, Tampere 15.8.2006 Lyhyt johdatus ketterään testaukseen eli Ketterän ohjelmistokehityksen laatukäytäntöjä Juha Itkonen SoberIT Teknillinen korkeakoulu Juha.Itkonen@tkk.fi Ketterä ohjelmistokehitys
Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen
Tarjolla tänää: Ohjelmiston toteutuksesta JOT2007 CRC-kortit Testilähtöinen kehittäminen Uudelleenrakentaminen Voisiko ohjelmointi olla sittenkin suunnittelua? Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit
Juha Taina, Marko Salmenkivi ja Kjell Lemström,
Hajaantuminen tällä hetkellä ohjelmistotuotantoa kuvaa hajaantuminen ja erikoistuminen perusperiaatteet ovat säilyneet ennallaan, mutta yritykset käyttävät omia räätälöityjä prosessimalleja, menetelmiä
Yhteenvetoa, pieniä laajennuksia, tulevaisuuden haasteita
Yhteenvetoa, pieniä laajennuksia, tulevaisuuden haasteita 581259 Ohjelmistotuotanto 378 Lemström, 2006-2011 581259 Ohjelmistotuotanto Kiitos Tuomolle kuvasta 379 Ohjelmistotuotannon perustehtävät projektinhallinta:
CMM Capability Maturity Model. Software Engineering Institute (SEI) Perustettu vuonna 1984 Carnegie Mellon University
CMMI Sami Kollanus TJTA330 Ohjelmistotuotanto 13.3. CMM Capability Maturity Model Software Engineering Institute (SEI) www.sei.cmu.edu Perustettu vuonna 1984 Carnegie Mellon University 1985 SEI aloitti
CMMI CMM -> CMMI. CMM Capability Maturity Model. Sami Kollanus TJTA330 Ohjelmistotuotanto Software Engineering Institute (SEI)
CMMI Sami Kollanus TJTA330 Ohjelmistotuotanto 13.3. CMM Capability Maturity Model Software Engineering Institute (SEI) www.sei.cmu.edu Perustettu vuonna 1984 Carnegie Mellon University 1985 SEI aloitti
Siimasta toteutettu keinolihas
AS 0.3200 Automaatio ja systeemitekniikan projektityöt Projektisuunnitelma: Siimasta toteutettu keinolihas Laura Gröhn 224417 Mikko Kyllönen 221177 Lauri Liukko Sipi 84702A Susanna Porkka 225131 3.2.2015
CMMI CMMI CMM -> CMMI. CMM Capability Maturity Model. Sami Kollanus TJTA330 Ohjelmistotuotanto
CMM Capability Maturity Model CMMI Sami Kollanus TJTA330 Ohjelmistotuotanto 16.1.2007 Software Engineering Institute (SEI) www.sei.cmu.edu Perustettu vuonna 1984 Carnegie Mellon University 1985 SEI aloitti
Scrumin käyttö ketterässä sovelluskehityksessä
Scrumin käyttö ketterässä sovelluskehityksessä 9.4.2008 Janne Kuha Manager, Java Services Descom Oy Janne Kuha Manager, Java Services janne.kuha@descom.fi Kuka? Descom Oy:llä, sitä ennen Wanadu Inc., Mountain
Oleelliset vaikeudet OT:ssa 1/2
Oleelliset vaikeudet OT:ssa 1/2 Monimutkaisuus: Mahdoton ymmärtää kaikki ohjelman tilat Uusien toimintojen lisääminen voi olla vaikeaa Ohjelmista helposti vaikeakäyttöisiä Projektiryhmän sisäiset kommunikointivaikeudet
Ketteryys pähkinänkuoressa. Kokopäivän Scrum-kurssin sisältö tislattuna ja tiivistettynä kolmeen varttiin
Ketteryys pähkinänkuoressa Kokopäivän Scrum-kurssin sisältö tislattuna ja tiivistettynä kolmeen varttiin Empiirinen prosessinhallinta Iteraatiot ja inkrementit riskienhallinnassa Imuohjaus Ketteryyden
PROJEKTINHALLINTA. Käyttäjälähtöinen suunnittelu
PROJEKTINHALLINTA Käyttäjälähtöinen suunnittelu PROJEKTINHALLINTA OSANA KURSSIA Opettaja: Tomi Jokitulppo email: Tomi.Jokitulppo@metropolia.fi puhelin: 040 5430197 4 opetuskertaa: 2.10., 9.10., 16.10.
E-kirjan kirjoittaminen
1 E-kirjan kirjoittaminen Ohjeet e-kirjan kirjoittamiseen Tämän ohjeistuksen tavoitteena on auttaa sinua luomaan yksinkertainen e-kirja (pdftiedosto) asiakkaallesi. Kirja näyttää hänelle kuinka hyvin ymmärrät
Onnistunut ohjelmistoprojekti
Onnistunut ohjelmistoprojekti ICT-ajankohtaisseminaari 15.4.2009 Hermanni Hyytiälä Reaktor Innovations Oy Agenda Yritysesittely Keinoja onnistuneeseen ohjelmistoprojektiin Ihmiset Menetelmät Käytännöt
Hyvin määritelty on puoliksi tehty kuinka vältetään turha tekeminen jo alussa
1 Hyvin määritelty on puoliksi tehty kuinka vältetään turha tekeminen jo alussa Passion leads to design, design leads to performance, performance leads to SUCCESS! OLLI NIEMI Yoso Oy Mitä määrittelyltä
Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä
hyväksymispäivä arvosana arvostelija Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä Tuomas Husu Helsinki 20.2.2010 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö i 1 Johdanto
SCRUM- JA XP-KÄYTÄNTEIDEN KÄYTTÖ: HAASTATTELUTUTKIMUS
Hanna Kuirinlahti SCRUM- JA XP-KÄYTÄNTEIDEN KÄYTTÖ: HAASTATTELUTUTKIMUS Tietojärjestelmätieteen pro gradu tutkielma 1.11.2011 Jyväskylän yliopisto Tietojenkäsittelytieteiden laitos Jyväskylä 1 TIIVISTELMÄ
Ohjelmistotuotanto, prosessit Syksy Ohjelmistotuotantoprosessi. Prosessimalli. Prosessimallien perustehtävät. Prosessimallin vaihejako
2. Ohjelmistotuotantoprosessi peruskäsitteet: prosessimalli: mahdollisimman yleisesti sovellettavissa oleva ohjeisto ohjelmistojen tuottamiseen ohjelmistotuotantoprosessi: yrityksessä käytössä oleva tapa
Scrumjatkuvan palvelun DWprojektissa-case. Niina Mäkiranta & OP-scrum-tiimi Aureolis Oy
Scrumjatkuvan palvelun DWprojektissa-case OP-Pohjola Niina Mäkiranta & OP-scrum-tiimi Aureolis Oy Agenda Scrum lyhyesti Jatkuvan palvelun DW-projekti- Case OP-Pohjola Lähtötilanne ennen Scrumia Scrumin
Siirtyminen ketterien menetelmien maailmaan! Maarit Laanti 24 October 2013!
Siirtyminen ketterien menetelmien maailmaan! Maarit Laanti 24 October 2013! Sisältö! 1. Tilanne nyt: waterscrumming! 2. Kokonaisvaltainen ketteryys mitä sillä haetaan, mitä sillä saadaan?! 3. Ketterän
Ohjelmistoarkkitehtuurit. Syksy 2007
Ohjelmistoarkkitehtuurit Syksy 2007 Kai Koskimies 1 Tervetuloa Tampereen yliopisto, Teknillinen korkeakoulu, Turun yliopisto 2 Kurssin tavoitteet Arkkitehtuuritason peruskäsitteiden ymmärtäminen Arkkitehtuurien
EXTREME PROGRAMMING OHJELMISTOKEHITYKSESSÄ
EXTREME PROGRAMMING OHJELMISTOKEHITYKSESSÄ Case: Tietokonepakettilaskurisovellus (Data Group Jyväskylä) Eeva Hänninen Opinnäytetyö Huhtikuu 2010 Tietojenkäsittely Luonnontieteiden ala OPINNÄYTETYÖN KUVAILULEHTI
UCOT-Sovellusprojekti. Testausraportti
UCOT-Sovellusprojekti Testausraportti Ilari Liukko Tuomo Pieniluoma Vesa Pikki Panu Suominen Versio: 0.02 Julkinen 11. lokakuuta 2006 Jyväskylän yliopisto Tietotekniikan laitos Jyväskylä Hyväksyjä Päivämäärä
Oletko sinä seuraava cimcorpilainen?
Oletko sinä seuraava cimcorpilainen? Cimcorpin kanssa voit kasvaa, oppia ja valloittaa maailmaa kasvuyrityksen mukana. Mukavien työkavereiden ja yhteishengen ansioista työtä tehdään isolla sydämellä ja
Urban Design Management ja lisäarvo - Integroiva suunnitteluoperaatio. Tommi Mäkynen 14.12.2007 maekynen@arch.ethz.ch
Urban Design Management ja lisäarvo - Integroiva suunnitteluoperaatio Tommi Mäkynen 14.12.2007 maekynen@arch.ethz.ch Mitä arvo on? Arvo on subjektiivinen ja asiakas moninainen Helsinki Design District?
Testilähtöinen ohjelmistokehitys. Testilähtöinen ohjelmistokehitys. TDD Testilähtöinen ohjelmistokehitys. Testi! Testi
Testilähtöinen ohjelmistokehitys Kevät 2008 Jonne Itkonen Jyväskylän yliopisto Testilähtöinen ohjelmistokehitys Test-Driven Development, TDD Tehdään ensin testi, sitten vasta koodi. TDD Testilähtöinen