Ohjelmistotekniikka - Luento 2 Jouni Lappalainen



Samankaltaiset tiedostot
Ohjelmistotekniikka - Luento 2

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Ohjelmistotekniikka - Luento 3 Jouni Lappalainen

Ohjelmistotekniikka - Luento 3

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

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

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

Lyhyt johdatus ketterään testaukseen

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

Prosessikuvaukset ja elinkaarimallit

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

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

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

Tutkittua tietoa. Tutkittua tietoa 1

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Tapahtuipa Testaajalle...

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Onnistunut ohjelmistoprojekti

Ketterä vaatimustenhallinta

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

Ohjelmistoprosessit ja ohjelmistojen laatu kevät 2009

Ohjelmistoprojektien hallinta Vaihejakomallit

ITK130 Ohjelmistoprosessi

Ohjelmistojen suunnittelu

Unified Process (UP)

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

10 Kohti ketterää ohjelmistokehitystä

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

Ohjelmistoprojekteista. Datanomiopiskelijat 2.vuosi

2. Ohjelmistotuotantoprosessi

Ketterä projektinhallinta

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Ketterien periaatteiden merkitys projektityössä

Onnistunut ohjelmistoprojekti

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

7. Iteratiivinen ohjelmistokehitys

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

Software engineering

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

Pohdiskelujen aiheita study group työskentelyyyn Luento 1:

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

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

Työkalut ohjelmistokehityksen tukena

Siirtyminen ketterien menetelmien maailmaan! Maarit Laanti 24 October 2013!

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

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

OT-s200: Prosessimallit

PROJEKTIN SUUNNITTELU JOUNI HUOTARI, PAAVO MOILANEN, ESA SALMIKANGAS

Projektityö

Yhteenvetoa, pieniä laajennuksia, tulevaisuuden haasteita

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

Juha Taina, Marko Salmenkivi ja Kjell Lemström,

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

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

Projektin vaiheet

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

Ohjelemistotuotanto, syksy 1998 /Prosessi Prosessimallit

Kettärä organisaatio kumppanuusstrategialla

Scrumin käyttö ketterässä sovelluskehityksessä

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

OpenUP ohjelmistokehitysprosessi

Oleelliset vaikeudet OT:ssa 1/2

Testaaminen ohjelmiston kehitysprosessin aikana

Johdatus ohjelmistotuotantoon

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

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

Ohjelmistoarkkitehtuuriin vaikuttavia tekijöitä. Kari Suihkonen

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

Projektin suunnittelu

KÄYTETTÄVYYSTESTAUS OSANA KETTERÄÄ KEHITYSTÄ

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

Onnistunut SAP-projekti laadunvarmistuksen keinoin

BIMin mahdollisuudet hukan poistossa ja arvonluonnissa LCIFIN Vuosiseminaari

statbeatmobile PROJECT REVIEW iteration 1

LAATURAPORTTI Iteraatio 1

T Johdatus käyttäjäkeskeiseen tuotekehitykseen. suunnitteluprosessissa. Käyttäjän huomiointi. Iteroitu versio paljon kirjoitusvirheitä

Käyttäjäkeskeinen suunnittelu

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

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

Työn ositusmalleista. Luennon tavoitteista. Motivointia. Walker Royce, Software Project Management, A Unified Framework

Liiketoimintatarpeista toimivaksi järjestelmäksi Jari Kekkonen Chief Consulting Officer Ixonos Oyj

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

Projektityö

Ohjelmiston toteutussuunnitelma

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

Laadunhallinta ketterissä menetelmissä

Testauksen suunnittelu ja dokumentointi ketterässä testauksessa Tutkimustuloksia

KOODAAKO PROJEKTIPÄÄLLIKKÖ?

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

CT60A4600 Projektinhallinta. Luentorunko. Luento 1:Yleistä ja organisaatiot. Projektinhallinta Osa 1: yleistä. Kurssin tavoitteet

Ohjelmistoprosessi aloittavassa ohjelmistoyrityksessä

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

Koekysymyksiä. Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistojen suorituskyky

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

UCOT-Sovellusprojekti. Testausraportti

COTOOL dokumentaatio SEPA: Refaktorointi

ja -kehitysmenetelmistä Jyri Partanen, QA Manager Sulake Corporation

Johdanto. Mitä on ohjelmistotuotanto? Tämän kurssin näkökulma. Sami Kollanus TJTA330 Ohjelmistotuotanto

Transkriptio:

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen Luku 2: Prosessimallit - miten spiraalimalliin päädyttiin - spiraalimallista (R)UP malliin - oman ammattitaidon kehittäminen; PSP ja TSP mallit Luku 3: Ketterä kehitys - ketterien menetelmien 12 periaatetta - XP (extreme programming) - Scrum menetelmä - Lean menetelmä 1

Luento 2: lait ja pohdiskeluaiheet 1. Ketterät ohjelmointimenetelmät vähentävät muuttuvien vaatimusten vaikutusta / hyp_no 6, Fowler 2001 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? Voivatko Agile manifestin neljä periaatetta aiheuttaa joskus myös ongelmia? Millaisia?... Cockburn A., Using both incremental and iterative development, Crosstalk, May, 2008, pp. 27-30 2

Luku 2: Prosessimallit Työkalut Menetelmät Prosessi Sitoutuminen laatuun Tasoittainen eteneminen Prosessikehikon aktiviteetit kommunikointi projektisuuunnittelu mallintaminen rakentaminen toimitus, jakelu, käyttöön vieminen (deployment) 3

Ohjelmistoprosessien kehittyminen Leffingwell D., Agile Software Requirements, 2011 4

Prosessityypit Kommunikointi Proj. suunnnittelu Mallintaminen Rakentaminen Toimitus Lineaarinen prosessi Kommunikointi Proj. suunnnittelu Mallintaminen Rakentaminen Toimitus Iteratiivinen prosessi Proj. suunnnittelu Kommunikointi Toimitus Lisäys (inkrementti) Kommunikointi Proj. suunnnittelu Mallintaminen Mallintaminen Rakentaminen Evolutionaarinen prosessi Rinnakkainen prosessi Rakentaminen Toimitus 5

Prosessikehyksestä prosessimalleihin Ohjelmistotuotannon yleiset käytännöt Ymmärrä ongelma How to solve it Polya 1945 kommunikointi ja analyysi Suunnittele ratkaisu mallintaminen ja ohjelmistosuunnittelu Toteuta suunnitelma koodin generointi Testaa toteutusta testaus ja laadunvarmistus Prosessikehyksen aktiviteetit» Pressman 2005 kommunikointi projektisuuunnittelu mallintaminen rakentaminen toimitus, käyttöön vieminen (deployment) 6

Käyttäjän tarpeet Vesiputousmalli Vaatimusmäärittely Toiminnallinen suunnittelu - käyttöliittymän suunnittelu - käyttötapausanalyysi Ohjelmisto- suunnittelu Toteutus Integrointi ja testaus Käyttöönotto ja ylläpito 7

V-malli Käyttäjän tarpeet Ohjelmisto käytössä Vaatimusmäärittely Hyväksymis- testaus Toiminnallinen suunnittelu - käyttöliittymän suunnittelu - käyttötapaus-analyysi Ohjelmisto- suunnittelu Toiminnallinen testaus Integrointi- testaus Järjestelmä- testaus Koodaus Yksikkö- testaus 8

Lisäyksin etenevä kehittäminen (inkrementaalinen) Kommunikointi Projektin suunnittelu Mallintaminen Lisäys n Rakentaminen Ohjelmiston toiminnallisuus ja ominaisuusdet Lisäys 1 Lisäys 2 Lisäyksen 1 toimitus Lisäyksen 2 toimitus Toimitus Lisäyksen n toimitus Projektin kalenteriaika 9

Nopea sovelluksen kehittäminen (RAD, Rapid Application Development) Tiimi n Kommunikointi Projektin suunnittelu Tiimi 1 Mallintaminen - liiketoiminta - tieto - prosessi Tiimi 2 Mallintaminen - liiketoiminta - tieto - prosessi Mallintaminen - liiketoiminta - tieto - prosessi Rakentaminen - komponenttien uudelleenkäyttö - automaattinen koodigenerointi - testaus Rakentaminen - komponenttien uudelleenkäyttö - automaattinen koodigenerointi - testaus Rakentaminen - komponenttien uudelleenkäyttö - automaattinen koodigenerointi - testaus Toimitus - integrointi - jakelu - palautteet 60-90 päivää 10

Nopea sovelluksen kehittäminen (RAD, Rapid Application Development) Milloin vaikeuksia? isoissa projekteissa RAD vaatii tarpeeksi henkilöitä, jotta saadaan riittävä määrä tiimejä jos projektihenkilöt eivät ole sitoutuneita tiukkaan aikatauluun, projekti voi epäonnistua jos järjestelmää ei voida jakaa aidosti moduleihin, komponenttien rakentaminen vaikeutuu jos pyritään korkeaan suorituskykyyn, joka vaatii komponenttien viritystä (loppuvaiheessa), RAD ei välttämättä toimi RAD ei ole paras malli, jos tekniset riskit ovat suuret (esim. kun käytettävä teknologia on uutta) 11

Evolutionaariset prosessimallit Evolutionaariset mallit ovat iteratiivisia Tuottavat joka iteraatiolla hieman täydellisemmän ohjelmistoversion Protoilu kun asiakas voi kiinnittää yleiset tavoitteet ohjelmistolle, mutta ei pysty kertomaan yksityiskohtia, prototyypin kehittäminen auttaa iteraatio suunnitellaan ja toteutetaan nopeasti tärkeää sopia asiakkaan kanssa periaatteista, esim. proto palvelee vaatimusten määrittelyä, lopullinen ohjelmisto rakennetaan noudattamaan myös laatutavoitteita Spiraalimalli yhdistää protoilun ja vesiputousmallin piirteitä sopii suurten ohjelmistojen/järjestelmien kehittämiseen jopa kattamaan tuotteen koko elinjakson riskivetoinen prosessimalli, jossa kaksi perusperiaatetta syklisyys: joka kierroksella tuotetaan tarkempi määrittely ja vähennetään riskiä etapit: sidosryhmät sitoutuvat kierroksella esitettyyn ratkaisuun 12

Kommunikointi Projektisuunnittelu Suunnittelu - työmäärä - aikataulu - riskianalyysi Asiakkaan kommentit ja muutosvaatimukset Vaatimusten analyysi ja projektin suunnittelu Riskianalyysi Asiakkaan vaatimusten määrittely Asiakkaan tekemä arviointi Toimittaminen - jakelu - palautteet Asiakkaan tekemä arviointi Ensimmäisen proton rakentaminen Rakentaminen Rakentaminen - koodaus - testaus Asiakkaan vaatimuksiin liittyvien riskien arviointi Ensimmäisen proton suunnittelu Suunnittelu Mallintaminen - analyysi - suunnittelu Kehittynyt spiraalimalli, Boehm 1998 13

Inception (aloitus) - tuotteen ominaisuudet - alustavat käyttötapausmallit - alustava projektihakemisto - alustava liiketoimintacase - alustavat riskit - projektisuunnitelma - vaiheet ja iteraatiot - yksi tai useampia protoja julkaisu ohjelmiston lisäys (inkrementti) (Rational) Unified Process kommunikointi suunnittelu toimitus Production (tuotanto) mallintaminen rakentaminen Transition (siirto) - valmis ohjelmiston osa - Beta testauksen raportit - käyttäjän palautteet Elaboration (kehittäminen) - käyttötapausmallit - tarkentavat vaatimukset - (myös laatu) - analyysimalli - arkkitehtuurikuvaus - arkkitehtuuriin perustuva suoritettava prototyyppi - tarkennettu riskilista - alustava suunnittelumalli - tarkennettu projektisuunnitelma - alustava käyttöohje Construction (rakentaminen) - suunnittelumalli - ohjelmistokomponentit - integroitu ohjelmiston uusi osa - testisuunnitelmat - testitapaukset - tukidokumentit, ohjeet - käyttöönotolle - käytölle - osan kuvaus 14

Project Projektin vaiheet Iteraatiot Inception Elaboration Construction Transition 1 2 3 4 5 6 7 8 Requirements Analysis Design Implementation Test Työnkulut Neliön koko kertoo aktiviteettiin käytetystä ajasta time 15

Vesiputousmallin erot RUP malliin Vesiputousmallissa vaiheet ja työnkulut on yhdistetty Esimerkiksi vaatimusmäärittelyvaiheessa suoritetaan vain vaatimusmäärittelyn aktiviteetteja Kaikki vaatimusmäärittelyn aktiviteetit tulisi olla tehtynä, ennenkuin analyysivaihe alkaa Iteratiivisessa projektin elinjaksossa huomataan, että osa vaatimusmäärittelyjen työstä tapahtuu rinnakkain analyysin kanssa 16

PSP menetelmä PSP (Personal Software Process) Humphreyn (1996) esittämä menetelmä, joka tavoitteena on henkilökohtaisen osaamisen parantaminen Menetelmässä henkilö pyrkii parantamaan työnsä laatua seuraavissa työvaiheissa Projektisuunnittelu Korkean tason suunnittelu Korkean tason suunnittelun katselmointi Kehittäminen Projektin jälkeinen katselmointi (postmortem) PSP tarjoaa kurinalaisen ja metriikkapohjaisen tavan oppia hyviä ohjelmistotekniikan käytänteitä. Ideana on oppia tekemistään virheistä. 17

TSP menetelmä TSP (Team Software Process) Humphreyn (2000) esittämä menetelmä, joka tavoitteena on ryhmätyön parantaminen Menetelmässä tiimi pyrkii parantamaan työnsä laatua seuraavissa työvaiheissa (aktiviteeteissa) Projektin käynnistys Korkean tason suunnittelu Toteutus Integrointi ja testaus Projektin jälkeinen katselmointi (postmortem) TSP tarjoaa kurinalaisen tavan oppia rakentamaan ohjelmistoja ja miten samalla kvantitatiivisesti mitataan sekä prosessia että tuotetta. TSP menetelmä perustuu skriptien käytölle, joilla ohjataan edellä mainittujen aktiviteettien suorittamista. TSP tunnistaa itseohjautuvat tiimit parhaiksi, niissä tiimi asettaa tavoitteet, sovittaa prosessin tavoitteisiin, valvoo aikataulua ja keräämiensä mittatietojen perusteella pyrkii parantamaan prosessia. 18

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 19

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 20

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. 21

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. 22

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. 23

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) 24

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 25

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. 26

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). 27

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 28

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 29

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 30

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 31

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 32

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 33

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 34

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 35

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 36

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 37

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 38

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 39

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 40

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) 41

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

Luento 2: 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 43

Luento 2: 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 44

Luento 2: 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 45

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? 46