Ohjelmistotekniikka - Luento 3

Samankaltaiset tiedostot
Ohjelmistotekniikka - Luento 3 Jouni Lappalainen

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Ville Isomöttönen. Agile. Jyväskylän Yliopisto Sivu 1 Tietotekniikan laitos

Agile. Jyväskylän Yliopisto Sivu 1 Tietotekniikan laitos

Lyhyt johdatus ketterään testaukseen

Ohjelmistotekniikka - Luento 2

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Ketteryys pähkinänkuoressa. Kokopäivän Scrum-kurssin sisältö tislattuna ja tiivistettynä kolmeen varttiin

Scrum is Not Enough. Scrum ei riitä. Ari Tanninen & Marko Taipale. Nääsvillen oliopäivä 2009 Tampereen teknillinen yliopisto 9.12.

Globaalisti Hajautettu Ohjelmistokehitys Mitä, Miksi & Miten? Maria Paasivaara

Prosessiajattelu. Organisaation prosessikuvaus - CMMI. Prosessikuvaukset ja elinkaarimallit. Organisaation prosessien määritys CMMI käytänteet

Tutkittua tietoa. Tutkittua tietoa 1

Prosessiajattelu. Prosessikuvaukset ja elinkaarimallit. Organisaation prosessikuvaus - CMMI. Sami Kollanus TJTA330 Ohjelmistotuotanto 3.4.

Ohjelmistoprosessit ja ohjelmistojen laatu kevät 2009

Ohjelmistoprojekteista. Datanomiopiskelijat 2.vuosi

PROJEKTI- PÄÄLLIKÖSTÄ PRODUCT OWNERIKSI MEERI CEDERSTRÖM

Arkkitehtuuritietoisku. eli mitä aina olet halunnut tietää arkkitehtuureista, muttet ole uskaltanut kysyä

7. Iteratiivinen ohjelmistokehitys

Ketterä vaatimustenhallinta

Testausta vai määrittelyä? Hyväksymistestaus ja jatkuva integraatio ketterässä ohjelmistokehityksessä

Ketterien periaatteiden merkitys projektityössä

Prosessikuvaukset ja elinkaarimallit

Ohjelmistoprojektien hallinta Vaihejakomallit

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Onnistunut ohjelmistoprojekti

10 Kohti ketterää ohjelmistokehitystä

Onnistunut ohjelmistoprojekti

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Siirtyminen ketterien menetelmien maailmaan! Maarit Laanti 24 October 2013!

Ohjelmistoprosessi. Ohjelmistotuotanto. Yleiset ohjelmistotuotannon osatehtävät. Ohjelmistoprosessimalli. Vaihejaon ominaispiirteitä

Kun scrum ei riitä - skaalaa ketterä tuotekehitys SAFe lla Nestori Syynimaa Sovelto Oyj

Pohdiskelujen aiheita study group työskentelyyyn Luento 1:

Tapahtuipa Testaajalle...

Koekysymyksiä. Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistojen suorituskyky

Ketterä projektinhallinta

Ohjelmistotuotanto, prosessit Syksy Ohjelmistotuotantoprosessi. Prosessimalli. Prosessimallien perustehtävät. Prosessimallin vaihejako

Scrumin käyttö ketterässä sovelluskehityksessä

Kettärä organisaatio kumppanuusstrategialla

Johdatus ohjelmistotuotantoon

TIE Ohjelmistojen suunnittelu

Yrittäjäkasvatuksen polku - sivusto. Yksityiskohtainen suunnittelu Huhtikuu 2018

Hajaantuminen. Juha Taina, Marko Salmenkivi ja Kjell Lemstöm, Ohjelmistotuotanto 30

Juha Taina, Marko Salmenkivi ja Kjell Lemström,

Ketterä ohjelmistokehitys unohtuiko tietoturva?

Ketteryys kokeilemalla. Leo Malila Kehittämispäällikkö, Kela

2. Ohjelmistotuotantoprosessi

Projektityö

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

PROSESSIT JA LAATU PERSONAL SOFTWARE PROCESS. Ohjelmistoprosessit ja ohjelmistojen laatu Kevät Prosessit ja laatu. Laadun vaikutusketju

Ohjelmistoarkkitehtuuriin vaikuttavia tekijöitä. Kari Suihkonen

EXTREME PROGRAMMING. Akseli Lajunen. Tietojärjestelmätieteen kandidaatintutkielma

ITK130 Ohjelmistoprosessi

Ohjelmistoposesseista

KETTERÄT MENETELMÄT. Tomi Airaksinen. Tietojärjestelmätieteen Kandidaatin tutkielma

statbeatmobile PROJECT REVIEW iteration 1

Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistoprosessit ja ohjelmistojen laatu (4op)

Ketterämpi Sonera Matka on alkanut!

KETTERÄ OHJELMISTOKEHITYS

SCRUM- JA XP-KÄYTÄNTEIDEN KÄYTTÖ: HAASTATTELUTUTKIMUS

Software engineering

Ohjelmistojen suunnittelu

KOODAAKO PROJEKTIPÄÄLLIKKÖ?

COTOOL dokumentaatio SEPA: Refaktorointi

Juha Taina, Marko Salmenkivi ja Kjell Lemström,

Ketterä (agile) tietojärjestelmien suunnittelu

Vaatimusmäärittely- ja hallinta. Peruskäsitteet. Syyt aikataulun ja budjetin ylitykseen. TJTA330 Ohjelmistotuotanto

ONKO ORGANISAATIOSI KYPSÄ DEVOPSIIN?

- - - A - Missä vaiheessa projektia on vielä järkevää vaihtaa projektille valittuja teknologiavalintoja, joista on koitunut paljon ylimääräistä työtä?

Ketterä projektikulttuuri on avain menestykseen - valmennuksella kohti ketterää kulttuuria

Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen

Scrumjatkuvan palvelun DWprojektissa-case. Niina Mäkiranta & OP-scrum-tiimi Aureolis Oy

Johdattelua, motivointia, eli missä ollaan ja kuinka siihen on tultu

Prosessimalli. 2. Ohjelmistotuotantoprosessi. Prosessimallin vaihejako. Prosessimallien perustehtävät. Ohjelmiston suunnittelu. Vaatimusmäärittely

Työkalut ohjelmistokehityksen tukena

Yhteenvetoa, pieniä laajennuksia, tulevaisuuden haasteita

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

Ohjelmistutuotanto. Luento

Kuka käyttää?

Ohjelmistotuotteen hallinnasta

Petri Mattila KÄYTTÄJÄKESKEISEN SUUNNITTELUN INTEGROINTI KETTERÄN KEHITTÄMISEN PROSESSIIN JA ROOLEIHIN

Ketterien ohjelmistokehitysmallien analyysi käyttäen SEMS 4CC viitekehystä

Testauksen suunnittelu ja dokumentointi ketterässä testauksessa Tutkimustuloksia

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

Laadunhallinta ketterissä menetelmissä

PROJEKTINHALLINTA. Käyttäjälähtöinen suunnittelu

Vaatimusmäärittely- ja hallinta

Ohjelmistoprosessi aloittavassa ohjelmistoyrityksessä

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori

Ohjelmistotuotanto. Luento

Projektin vaiheet

Ketterät menetelmät ja julkinen hankinta

7. Product-line architectures

Tietohallinnon liiketoimintalähtöinen toiminnanohjaus IT-ERP

Ketterät menetelmät ja laadunhallinta

Lakki. Lisää ot sik k o osoit t am alla. Nöyrästi vain lakki kourassa... Jussi Vänskä Espotel Oy. vierailuluentosarja OTM kurssi 2010

Testausoppeja toimialavaihdoksesta

1.3 Katsaus ohjelmistotuotannon kehittymiseen

Ohjelmistojen mallinnus, s2008 HY/TKTL, 28/10/2008. Harri Laine 1. Ohjelmisto

Ajatuksia ketterästä ohjelmistokehityksestä ja laadusta

Aluksi. Riskien hallinta. Riskityyppejä. Riskillä on kaksi ominaisuutta. Reaktiivinen strategia. Proaktiivinen strategia

Transkriptio:

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) termi ohjelmistojen kehittämisen yhteydessä tarkoittaa (agile manifest) Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan 2

Ketteryyden vaikutus muutoskustannuksiin Muutoskustannukset Muutoskustannukset, kun käytetään perinteistä (waterfall) kehitysprosessia Todelliset muutoskustannukset, kun käytetään ketterää kehitysprosessia Tavoite, kun käytetään ketterää kehitysprosessia Projekti edistyy 3

Ketterien menetelmien 12 periaatetta (Agile Alliance, 2003) 1. Tärkeimpänä periaatteena on toteuttaa asiakkaan toiveet ensimmäisestä toimituksesta alkaen ja jatkaa tätä ohjelmiston valmistumiseen 2. Muuttuvia vaatimuksia otetaan vastaan jopa kehityksen loppuvaiheessa. Ketterien menetelmien tarkoituksena on edistää asiakkaan kilpailuetua. 3. Toimivia ohjelmaversioita toimitetaan jatkuvasti. Toimitusvälit vaihtelevat muutamasta viikosta muutamaan kuukauteen. 4

Ketterien menetelmien 12 periaatetta... 4. Liiketoiminnan edustajat ja ohjelmistokehittäjät työskentelevät yhdessä päivittäin ja läpi projektin. 5. Rakenna projekti motivoituneiden henkilöiden varaan. Anna heidän käyttöön tarvittava toimintaympäristö, tue heidän tarpeita ja luota heihin. 6. Kasvokkain käytävä keskustelu on tehokkain tapa välittää informaatiota. 7. Toimiva ohjelmisto on tärkein kehityksen mittari. 8. Ketterät prosessit tukevat kestävää kehitystä. Hankkeen omistajien, kehittäjien ja käyttäjien tulisi pystyä kehittämään toimintaansa jatkuvasti. 5

Ketterien menetelmien 12 periaatetta... 9. Jatkuva huomion kohdistaminen tekniseen laatuun ja hyvään suunnitteluun edistää ketteryyttä. 10. Yksinkertaisuus tekemättä jätettävän työn maksimointi (ei tehdä turhaa työtä) on oleellista. 11. Itseorganisoituvat tiimit tuottavat parhaita arkkitehtuuriratkaisuja, vaatimusmäärittelyjä ja suunnitelmia. 12. Tiimi tarkastelee omaa toimintaansa säännöllisin väliajoin ja miettii tehokkaampia toimintatapoja. 6

Mitä ominaisuuksia vaaditaan tiimiltä ja sen jäseniltä Kompetenssi Yhteinen tavoite Kyky yhteistyöhön Kyky päätöksentekoon Kyky ratkaista sumeita ongelmia Jäsentenvälinen luottamus ja kunnioitus Kyky järjestää tiimin asiat (itseorganisoitua) 7

Ketteriä menetelmiä ovat esim. extreme Programming (XP) http://www.extremeprogramming.org/ Scrum http://www.controlchaos.com/ Lean http://www.poppendieck.com/ Feature Driven Development http://www.agilealliance.org/articles/ Crystal http://www.crystalmethodologies.org/ Agile Modeling http://www.agilemodeling.com/ http://en.wikipedia.org/wiki/agile_methods 8

extreme Programming (XP) Olettamus ohjelmiston vaatimukset ovat muuttuvia ja muutosten määrä sekä ominaisuudet ovat ennalta arvaamattomia. turhaa suunnitella arkkitehtuuria tulevaisuutta varten, koska tulevaisuudessa suunnittelulähtökohdat saattavat kuitenkin olla täysin erilaiset. 9

XP käytännöt (12 kpl, Beck 2000) 1. suunnittelupeli (planning game) 2. pienet julkaisut (small releases) 3. metafora (metaphor) 4. yksinkertainen suunnittelu (simple design) 5. testaus (testing), 6. refaktorointi (refactoring) 7. pariohjelmointi (pair programming) 8. kollektiivinen koodin omistaminen (collective ownership) 9. jatkuva integrointi (continuous integration) 10. 40-tuntinen viikko (40-hour week) 11. on-site asiakas (on-site customer) 12. ohjelmointistandardit (coding standards). 10

Uusi XP (2005) 1. Vaatimusten analysointi ja suunnittelu 1. Kertomukset (stories), kuvaavat järjestelmän toiminnan 2. Viikkosykli (weekly cycle), viikon alussa valitaan toteutettavat kertomukset 3. Kvartaalisykli (quarterly cycle), suunnitellaan toimintaa pidemmällä tähtäimellä 4. Löysä aikataulu (slack), pidä aikataulu sopivan löysänä, jotta ennakoimattomat ongelmat ehditään ratkaista 11

Uusi XP (2005) Tiimi- ja ihmistekijät 5.Yhdessä tilassa (sit together), tiimin tulisi toimia yhdessä tilassa, jotta kommunikointi olisi tehokasta 6.Koko tiimi (whole team), tiimissä tuli olla monenlaista osaamista ja yhteishenki 7.Informatiivinen työtila (informative workspace), työtilassa tulisi olla esim. postereita, jotka kertovat projektin tilasta 8.Innostava työ (energized work), ylitöitä tulisi minimoida, jotta suunnittelijat pysyvät virkeinä 9.Pariohjelmointi (pair programming), koodaamiseen osallistuu aina kaksi ohjelmoijaa 12

Uusi XP (2005) Suunnittelu 10. Paloittain suunnittelu (incremental design), suunnitelma koodataan heti kuin mahdollista, näin saadaan nopeasti palautetta ja järjestelmää voidaan parantaa jatkuvasti 11.Testit ensin ohjelmointi (test-first programming), testit kirjoitetaan ennen koodin päivitystä ja lisäystä Koodaus ja julkaisu 12. Kymmenen minuutin kooste (ten-minute build), järjestelmän koostaminen ja testien suoritus tulisi tehdä 10 minuutissa 13. Jatkuva integrointi (continuous integration), kehittäjien tulisi integroida muutokset kahden tunnin välein 13

Uusi XP (2005) Lisäkäytänteet Real customer involvement Incremental Deployment Negotiated scope contract Pay-per-use Team continuity Shrinking team Root-cause analysis Code and test Shared code Single code base Daily deployment 14

XP prosessi Käyttäjäkertomukset - arvot (priorisointi) - hyväksymistestauskriteeerit Iteraatioiden suunnittelu (mitä toteutetaan seuraavassa julkaisussa) Yksinkertainen suunnittelu - CRC kortit Kokeilut (spike solutions) - prototyypit Design Planning Refaktorointi Coding julkaisu ohjelmiston lisäys (inkrementti) - lasketaan projektin nopeus (montako kertomusta julkaisussa toteutettiin) Test Hyväksymistestaus Yksikkötesti Jatkuva integrointi Pariohjelmointi 15

XP projekti Test scenarios User Stories Requirements New user story project velocity Bugs Architectural Spike System metaphor Release Planning Release plan Iteration Latest version Acceptance Test Customer approval Small Releases Uncertain estimates Confident estimates Next iteration Spike Exploration phase Planning phase Iterations to Release phase Productionizing phase Maintenance phase http://www.agilemodeling.com/essays/agilemodelingxplifecycle.htm 16

XP iteraatiosykli New user stories, Project velocity Release plan User stories Unfinished Tasks Learn and Communicate New Functionality Next iteration Project Velocity Iteration Planning Iteration Plan Development Bug Fixes Latest version Failed Acceptance Tests Day by Day Bugs http://www.agilemodeling.com/essays/agilemodelingxplifecycle.htm 17

XP kehityssykli Iteration plan Tasks Unfinished Tasks Too much to do Share Learn and Communicate Pair Programming Refactor Mercilessly Move People Around CRC cards New Functionality 100% Unit Tests Passed Day by Day Failed Acceptance Tests Stand up Meeting Next Task or Failed Acceptance Test Collective Code Ownership Acceptance Test Passed Bug Fixes http://www.agilemodeling.com/essays/agilemodelingxplifecycle.htm 18

Scrum Nimi tulee rugbyn pelitaktiikkapalavereista reagoidaan nopeasti ympäristön tarpeisiin Menetelmä ei ota kantaa tekniikoihin, kuten XP, vaan painottaa iteratiivista suunnittelua ja edistymisen seurantaa Ei projektipäällikköä vaan itsenäistä työtä yhteisin tavoittein Scrum master ohjaa prosessia Työlistat (backlog) tuotteelle, julkistukselle ja sprintille Scrum kehitys on jaettu viiteen vaiheeseen julkistussuunnitelman katselmointi tuotestandardien jakelu, katselmointi ja sovitus sprintti sprintin katselmointi julkistuksen kehityksen lopetus näistä tarkemmin seuraavilla sivuilla 19

Scrum Kehitystyö ositetaan sprintteihin, pyrähdyksiin aktiviteetit: kehitä, paketoi, katselmoi, sovita aktiviteettien ei tarvitse noudattaa peräkkäistä järjestystä Sprintin pituus on max 4 viikoa / 30 päivää, mutta päivittäin pidetään 15-30 minuutin päiväpalaveri (daily scrum), jossa käydään läpi tehty työ ja seuraava työ Scrum master kysyy mitä kukin on tehnyt onko ongelmia mitä seuraavaksi 20

Scrum prosessi (sprintti ja sen katselmointi) Kehitä, paketoi, katselmoi, sovita (ei vaadita peräkkäisyyttä) Sprintin työlista: - ominaisuudet yhteen Sprint -kierrokseen Päivittäin 30 päivää 15-30 minuutin päivittäinen Scrum tapaaminen ( tilannekatsaus) Ei projektipäällikköä, Scrum master valvoo prosessin noudattamista Uusi toteutettu ominaisuus Tuotteen työlista (backlog): - asiakkaan haluamat ominaisuudet Sprintin katselmointi: sidosryhmä osallistuu 21

Lean (hoikka, kevyt) software development Eliminoi hukka (Eliminate Waste) vältä virheitä, turhia piirteitä, töiden ketjutusta, odottelua, osittain tehtyjä töitä, tarpeettomia prosesseja Rakenna laatua (Build Quality in) luo testitapaukset, testaa mahdollisimman aikaisessa vaiheessa ja jatkuvasti, automatisoi testaus Tehosta oppimista, Luo tietämystä (Amplify Learning, Create Knowledge) Ohjelmistokehityksessä tehdään tuotetta, jollaista ei olla aiemmin tehty => se vaatii uuden asian oppimista Talleta tiimin tietämys niin että sen löytää helposti, esim. kommentteina koodiin 22

Lean (hoikka, kevyt) software development Päätä mahdollisimman myöhään (Defer Commitment) parhaat päätökset tehdään, kun tietoa on riittävästi Toimita nopeasti (Deliver Fast) kehitä piirteitä paloittain ja lyhyissä iteraatioissa Arvosta ihmisiä (Respect People) luota ihmisten kykyyn suorittaa tehtävät ja parantaa prosessia Optimoi kokonaisuus (Optimize the Whole) paikallisen prosessin optimointi ei riitä, pyri optimoimaan mahdollisimman suuri osa arvoketjusta 23

Feature Driven Development (FDD) Suositellut käytännöt (best practices) Sovellusalueen mallintaminen (domain object modeling) Piirreperustainen kehittäminen (developing by feature) Luokan omistajuus (Individual class ownership) Piirrekohtaiset ryhmät (feature teams) Tarkastukset (inspections) Säännölliset julkistukset (regular builds) Versionhallinta (configuration management) Tulosten raportointi (reporting of results) 24

Feature Driven Development (FDD) Kehitä kokonaismalli Muodosta lista halutuista ominaisuuksista Ominaispiirrekohtainen toteutuksen suunnittelu Ominaispiirrekohtainen ohjelmiston suunnittelu Ominaispiirrekohtainen ohjelmiston rakentaminen 25

Luento 3: lait ja pohdiskeluaiheet Ketterät ohjelmointimenetelmät vähentävät muuttuvien vaatimusten vaikutusta / hyp_no 6, Fowler 2001 asiakkaat eivät ymmärrä alussa kaikkia tarpeitaan -> vaatimukset muuttuvat läsnäolevat asiakkaat nopea kehityssykli mahdollistaa osittain valmiiden järjestelmien esittelyn 26

Luento 3: lait ja pohdiskeluaiheet Millaisille projekteille protoilumalli ja vesiputousmalli soveltuvat parhaiten? Cockburn esittelee oheisessa paperissa inkrementaalisen ja iteratiivisen kehittämisen ominaisuuksia. Miksi myös ketterässä ohjelmisto- kehityksessä tulisi käyttää molempia kehittämistapoja? Cockburn A., Using both incremental and iterative development, Crosstalk, May, 2008, pp. 27-30 27

Tuoretta tietoa Teemu Karvonen: Jatkuva ohjelmistotuotanto ohjelmistopainotteisessa tuotekehityksessä (väitöskirja) Continuous software engineering in the development of software-intensive products Web-kehityksessä yleisesti hyödynnettyä jatkuvaa ohjelmistojulkaisua (continuous deployment) ja asiakaskokeiluja (customer experimentation) hyödynnetään vain harvoin tuotepainotteisessa ohjelmistotuotannossa. Teknisten haasteiden lisäksi perinteiset jäykät liiketoimintamallit ja hitaat, pitkäkestoiset projektikäytännöt ovat usein esteenä nopeille asiakaskokeiluille ja ohjelmistojulkaisuille ohjelmistoyritykset ovatkin panostaneet voimakkaasti tuotekehityskäytäntöjen uudistamiseen ja tekniseen kyvykkyyteen, kuten jatkuvaan integrointiin (continuous integration) ja automatisoitujen testijärjestelmien kehittämiseen tuoteohjelmissa ja kehitystiimeissä. Yritystasolla ja liiketoimintamalleissa kyvykkyyttä jatkuvaan toimittamiseen ja asiakaskokeiluihin kuitenkin hyödynnetään hajanaisesti vain joissakin tuote- ja asiakasprojekteissa. 28

Yhteenveto Tärkeää on olla yhteinen visio, tavoite Tärkeää on kommunikoida Tärkeää on tietää miten aiomme toimia yhdessä Valitaan joku kehitysparadigma joka sopii ongelmaan ja joka osataan enemmän tai vähemmän hyvin, ja joka sopii asiakasyhteistyöhön ja varmistetaan että kaikki tietävät miten toimitaan, mitä toimitetaan ja milloin 29