Ohjelmistotekniikka - Luento 3 Jouni Lappalainen

Samankaltaiset tiedostot
Ohjelmistotekniikka - Luento 3

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

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

Lyhyt johdatus ketterään testaukseen

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

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Ohjelmistotekniikka - Luento 2

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

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

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

Tutkittua tietoa. Tutkittua tietoa 1

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

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

Ohjelmistoprosessit ja ohjelmistojen laatu kevät 2009

Pohdiskelujen aiheita study group työskentelyyyn Luento 1:

Ketterä vaatimustenhallinta

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

Ohjelmistoprojekteista. Datanomiopiskelijat 2.vuosi

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

Prosessikuvaukset ja elinkaarimallit

Ketterien periaatteiden merkitys projektityössä

7. Iteratiivinen ohjelmistokehitys

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

Ohjelmistoprojektien hallinta Vaihejakomallit

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Onnistunut ohjelmistoprojekti

Onnistunut ohjelmistoprojekti

10 Kohti ketterää ohjelmistokehitystä

Siirtyminen ketterien menetelmien maailmaan! Maarit Laanti 24 October 2013!

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

Ketterä projektinhallinta

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

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

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

Tapahtuipa Testaajalle...

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

2. Ohjelmistotuotantoprosessi

Software engineering

Koekysymyksiä. Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistojen suorituskyky

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

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

Juha Taina, Marko Salmenkivi ja Kjell Lemström,

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

Scrumin käyttö ketterässä sovelluskehityksessä

Kettärä organisaatio kumppanuusstrategialla

Johdatus ohjelmistotuotantoon

Harjoitustehtävät: Ohjelmistotekniikka syksy 2015 (harjoitustyöraportin deadline ) Harjoitus 1:

ITK130 Ohjelmistoprosessi

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

Ketterämpi Sonera Matka on alkanut!

KOODAAKO PROJEKTIPÄÄLLIKKÖ?

Ohjelmistoprosessit ja ohjelmistojen laatu Kevät Ohjelmistoprosessit ja ohjelmistojen laatu. Projektinhallinnan laadunvarmistus

Projektityö

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

TIE Ohjelmistojen suunnittelu

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

statbeatmobile PROJECT REVIEW iteration 1

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

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

Testaaminen ohjelmiston kehitysprosessin aikana

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

Ohjelmistoposesseista

KETTERÄ OHJELMISTOKEHITYS

Mistä kilpailukykyä kotimaiseen tuotantoon? Tuotannon ulkomaille siirtämisen haasteet

COTOOL dokumentaatio SEPA: Refaktorointi

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

BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET.

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

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

Ketterä ohjelmistokehitys unohtuiko tietoturva?

Laadunhallinta ketterissä menetelmissä

Työkalut ohjelmistokehityksen tukena

Juha Taina, Marko Salmenkivi ja Kjell Lemström,

Harjoitustehtävät: Ohjelmistotekniikka syksy 2018 (harjoitustyöraportin deadline ) Harjoitus 1:

Ohjelmistoarkkitehtuuriin vaikuttavia tekijöitä. Kari Suihkonen

Ohjelmistoprosessi aloittavassa ohjelmistoyrityksessä

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

Harjoitustehtävät: Ohjelmistotekniikka kevät 2015 (harjoitustyöraportin deadline ) (Kalenteri-)Viikko 3:

Ohjelmistojen suunnittelu

7. Product-line architectures

Kuka käyttää?

Ketterä (agile) tietojärjestelmien suunnittelu

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

Ohjelmistotuotteen hallinnasta

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

BIMin mahdollisuudet hukan poistossa ja arvonluonnissa LCIFIN Vuosiseminaari

Ohjelmistutuotanto. Luento

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

SoberIT Software Business and Engineering institute

Projektin vaiheet

Ohjelmistotuotanto. Luento

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

Tietohallinnon liiketoimintalähtöinen toiminnanohjaus IT-ERP

ONKO ORGANISAATIOSI KYPSÄ DEVOPSIIN?

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

Tietojenkäsittelytieteiden koulutusohjelma. Tietojenkäsittelytieteiden laitos Department of Information Processing Science

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

Katselmoinnit. review) Katselmoinnit (review( Mitä ovat katselmoinnit? Katselmoinnin määritelmä (IEEE 1988)

Enterprise SOA. Nyt. Systeemi-integraattorin näkökulma

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

Transkriptio:

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 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, kun käytetään perinteistä kehitysprosessia Muutoskustannukset Projekti edistyy Todelliset muutoskustannukset, kun käytetään ketterää kehitysprosessia Tavoite, kun käytetään ketterää kehitysprosessia 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) 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) julkaisu ohjelmiston lisäys (inkrementti) - lasketaan projektin nopeus (montako kertomusta julkaisussa toteutettiin) Planning Yksinkertainen suunnittelu - CRC kortit Test Hyväksymistestaus Refaktorointi Yksikkötesti Design Coding Jatkuva integrointi Kokeilut (spike solutions) - prototyypit Pariohjelmointi 15

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

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

XP kehityssykli Day by Day Iteration plan Tasks Failed Acceptance Tests Unfinished Tasks Too much to do Stand up Meeting Share Next Task or Failed Acceptance Test Learn and Communicate Pair Programming Refactor Mercilessly Move People Around CRC cards Collective Code Ownership 100% Unit Tests Passed Acceptance Test Passed New Functionality 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 näistä tarkemmin seuraavilla sivuilla sprintin katselmointi julkistuksen kehityksen lopetus 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) Sprintin tehtävälista: - ominaisuudet yhteen Sprint kierrokseen Kehitä, paketoi, katselmoi, sovita (ei vaadita peräkkäisyyttä) Päivittäin 30 päivää Tuotteen kehitysjono(backlog): - asiakkaan haluamat ominaisuudet 15-30 minuutin päivittäinen Scrum tapaaminen ( tilannekatsaus) Ei projektipäällikköä, Scrum master valvoo prosessin noudattamista Uusi toteutettu ominaisuus 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 1. 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ä ohjelmistokehityksessä tulisi käyttää molempia kehittämistapoja? Cockburn A., Using both incremental and iterative development, Crosstalk, May, 2008, pp. 27-30 27

Luento 3: lait ja pohdiskeluaiheet Voivatko Agile manifestin neljä periaatetta aiheuttaa joskus myös ongelmia? Millaisia? Tarkastele Turnerin (oheinen paperi) listaa ketterille ominaispiirteille. Mitkä ovat näiden ominaispiirteiden yhteydet ketterien menetelmien 12 periaatteeseen? Turner R., Towards Agile systems engineering process, Crosstalk, April, 2007, pp. 11-15 28

Harjoitustehtävät: 1 kerta 1. Lue paperit McConnell S., and Tripp L., Professional Software Engineering: Fact or Fiction, IEEE Software, Nov/Dec, 1999, pp. 13-18 Davis M., Will Software Engineering Ever Be Engineering?, Communications of the ACM, vol 54, no 11, 2011, pp. 32-34 ja kirjoita noin 700 sanan paperi aiheesta; Voiko ohjelmistotekniikka koskaan tulla insinööritaidoksi (engineering)? Voit tarkastella myös kysymyksiä: Mitä elementtejä kypsään ammattikuvaan tarvitaan? Mitä puutteita ohjelmistotekniikassa kypsän ammattikuvan kannalta tunnetaan? 2. Lean Software Development menetelmässä on seitsemän periaatetta. Valitse niistä yksi (ei kuitenkaan eliminate waste ) ja kuvaa, miten se sovitetaan ohjelmistokehitykseen ketterässä ohjelmistoprojektissa. 3. Toimit projektipäällikkönä ohjelmistoyrityksessä. Tehtävänäsi on hallita laajassa käytössä olevan tekstinkäsittelysovelluksen seuraavan sukupolven version kehittämistä. Työlle on suunniteltu ja hyväksytty tiukka aikataulu. Millaisen prosessimallin valitset ja miksi? 29