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

Samankaltaiset tiedostot
Ohjelemistotuotanto, syksy 1998 /Prosessi Prosessimallit

OT-s200: Prosessimallit

Ohjelmistotekniikka - Luento 2

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

2. Ohjelmistotuotantoprosessi

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

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

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

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

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmistojen suunnittelu

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

ITK130 Ohjelmistoprosessi

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

Oleelliset vaikeudet OT:ssa 1/2

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

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

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Yhteenvetoa, pieniä laajennuksia, tulevaisuuden haasteita

Ohjelmistotekniikka - Luento 3

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

Johdantoluento. Ohjelmien ylläpito

Juha Taina, Marko Salmenkivi ja Kjell Lemström,

Ohjelmistotekniikka - Luento 3 Jouni Lappalainen

Ohjelmistoprosessit ja käyttöliittymäsuunnittelu

Ohjelmistoprojektien hallinta Vaihejakomallit

Kurssin aihepiiri: ohjelmistotuotannon alkeita

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Käytettävyyden huomiointi ohjelmisto prosessissa testausta lisäämällä

Prosessikuvaukset ja elinkaarimallit

Tietojärjestelmän osat

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

Software engineering

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Test-Driven Development

Verkkopokerijärjestelmä. Loppuraportti Ryhmä Kanat Ohjelmistotuotantoprojekti, syksy 2008

Koodaa ja korjaa -malli

Testaaminen ohjelmiston kehitysprosessin aikana

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

Projektisuunnitelma Nero-ryhmä

Ohjelmistojen mallintaminen. Matti Luukkainen

Ohjelmistoprosessit ja ohjelmistojen laatu kevät Suunnitelmakeskeiset prosessit (lukuisia lähteitä)

Ohjelmistoprosessit ja ohjelmistojen laatu kevät 2009

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Projektityö

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

Testausprosessin vaatimukset. 2. Testausprosessi (Artikkelit) Vesiputousmallin ongelmia. V-mallin neljä osavaihetta. Testausprosessimalli V-malli

Tutkittua tietoa. Tutkittua tietoa 1

Valtioneuvoston kanslia VAIN VIRKAKÄYTTÖÖN Hallinto- ja palveluosasto/hallintoyksikkö Terja Ketola PTJ2008-työsuunnitelma 1 (5)

Test-Driven Development

Uudelleenkäytön jako kahteen

Onnistunut ohjelmistoprojekti

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

Käyttäjäkeskeinen suunnittelu

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Projektinhallinta SFS-ISO mukaan

Tapahtuipa Testaajalle...

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

Ylläpito. Ylläpito. Ylläpidon lajeja Ohjelmistotuotanto, syksy 1998 Ylläpito

58160 Ohjelmoinnin harjoitustyö

Hyvin määritelty on puoliksi tehty kuinka vältetään turha tekeminen jo alussa

T Projektikatselmus

Ohjelmistotekniikka kevät 2003 Laatujärjestelmät

Ohjelmiston testaus ja laatu. Testaustasot

KONEAUTOMAATION LAATU JA TURVALLISUUS Marko Varpunen

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Tarkastusten rakenne. 10. Tarkastukset. Tuotoksen tekijän rooli. Tarkastustiimi. Tarkastusprosessin vaiheet. Tarkastusprosessi

10. Tarkastukset. Tarkastusten rakenne

Testiautomaatio tietovarastossa. Automaattisen regressiotestauksen periaate ja hyödyt

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Dokumentointi ketterissä menetelmissä

Kontrollipolkujen määrä

Ohjelmistotuotantoprojekti

Ohjelmistojen mallintaminen, mallintaminen ja UML

T Tietojenkäsittelyopin ohjelmatyö Tietokonegrafiikka-algoritmien visualisointi Vaatimustenhallinta

10 Kohti ketterää ohjelmistokehitystä

Unified Process (UP)

T Tietojenkäsittelyopin ohjelmatyö. Testiraportti, vaihe T1. Tietokonegrafiikka-algoritmien visualisointi. Testiraportti, vaihe T1

Projektityö

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

Projektisuunnitelma. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

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

Avoimen ja yhteisen rajapinnan hallintasuunnitelma v.1.4

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Ohjelmistojen mallintaminen. Luento 2, pe 5.11.

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

Ohjelmistojen mallintaminen kertausta Harri Laine 1

ABB Drives and Controls, Koneenrakentajan ja laitetoimittajan yhteistoiminta toiminnallisen turvallisuuden varmistamisessa

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

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

Ohjelmiston testaus ja laatu. Testaus käytettävyys

Tilannekatsaus Opintopolku.fi

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

Luku 8 Rakennusvaihe. Detailed Design. Programming. Moduulisuunnittelu. Ohjelmointi

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

Suunnitteluvaihe prosessissa

Määrittely- ja suunnittelumenetelmät

Työkalujen merkitys mittaamisessa

Avoimen ja yhteisen rajapinnan hallintamalli

Transkriptio:

Ohjelmistoprosessi Ohjelmistotuotanto Ohjelmistoprosessi Ohjelmiston elinkaari Ohjelmiston rakentamisen vaiheet ja niiden tulokset Ohjelmiston elinkaaren määrittely Yleisrakenne sille, miten ohjelmisto tuotetaan Yleensä prosessilla ymmärretään toistettavaa toimintamallia voiko uniikkituotannossa olla prosesseja? 1 Harri Laine, Jukka Paakki 2 Ohjelmistoprosessimalli Prosessimalli on ohjelmiston elinkaaren rakenteen määrittely ts. kuvaus sille, millaisten vaiheiden kautta ohjelmisto kehittyy ideasta hautaan mahdollisimman yleisesti sovellettavissa oleva ohjeisto ohjelmistojen tuottamiseen ei konkreettisia yksityiskohtaisia toimintasääntöjä vaan pelkkäyleisrakenne malli muokattavissa organisaatiolle ja sovellusalueelle sopivaksi Yleiset ohjelmistotuotannon osatehtävät Määrittely Suunnittelu Ohjelmointi Testaus Käyttö ja ylläpito Harri Laine, Jukka Paakki 3 Harri Laine, Jukka Paakki 4 Elinkaaren vaihejako On keskeisin apuväline prosessimallissa Määrittelee prosessin tärkeimmät osavaiheet Määrittelee osavaiheiden suoritusjärjestyksen Määrittelee osavaiheiden keskinäiset vaikutussuhteet Määrittelee osavaiheiden keskinäisiin rajapintoihin liittyvät toimenpiteet kuten dokumentoinnin, tarkastukset, yms. Vaihejaon ominaispiirteitä jokainen vaihe tuottaa jonkin määritellyn tuloksen vaiheen tulos toimii syötteenä seuraavalle vaiheelle kumuloituvat osatulokset ohjaavat seuraavan vaiheen suoritusta vaiheen tulokset ovat jollakin määritellyillä kriteereillä hyväksyttävissä tai hylättävissä jokaisen vaiheen alkuja loppu ovat selvästi havaittavissa usein vaihetarkentaa sitä edeltäneiden vaiheiden tuloksia Harri Laine, Jukka Paakki 5 Harri Laine, Jukka Paakki 6 1

Vaihejaon ominaispiirteitä keskeistä useissa prosessimalleissa on vaiheen toisto ja silmukallinen iterointieli toisto käytännössä prosessi on aina iteratiivinen prosessiin liittyy implisiittisestijoukko yleisiä, kaikille osavaiheille yhteisiä tukitoimenpiteitä dokumentointi laadunvarmistus tuotteenhallinta projektinjohto,... Prosessityypit Rakentaminen peräkkäiset työvaiheet, joista jokaisen tuloksena syntyy jokin vaihetuote' määrittely - - toteutus edellinen vaihepohjanaseuraavalle Kasvattaminen pikaisesti toimivaan systeemiin, jota muokataan, kunnes tulos on tyydyttävä Kokoaminen kootaan uudelleenkäytettävistä osista Harri Laine, Jukka Paakki 7 Harri Laine, Jukka Paakki 8 1. Lineaarinen malli (vesiputous, waterfall) Ohjelmiston tuottaminen on sarjallinen, järjestyksessä etenevä prosessi, jossa on seuraavat vaiheet (huom. vaiheet vaihtelevat eri lähteissä) järjestelmä (system engineering) etsitään halutusta kokonaisjärjestelmästä ohjelmistokomponentitja hahmotetaan niiden rooli järjestelmässä selvitetään koko järjestelmän tehtävä ja sen jako osiin tulos dokumentoidaan vaatimusmäärittely (analysis) määritellään ohjelmisto kiinnittämällä sen päätoiminnot, ulkoisetvaatimukset ja rajoitukset, liittymät, suorituskykyvaatimukset tuloksena vaatimusdokumentti Lineaarinen malli (vesiputous, waterfall) (design) suunnitellaan ohjelmiston tekninen rakenne, pääkomponentit, arkkitehtuuri, tietorakenteet, tietoliikenne, käyttöliittymä tuloksena dokumentti toteutus (implementation / coding) suunnitelman realisointi toimivaksi ohjelmistoksi tuloksena ohjelmat ja toteutusdokumentti testaus (testing) toimivuuden ja vaatimusten täyttymisen varmistaminen ohjelmaa suorittamalla virheiden korjaus ja dokumentointi tuloksena testausdokumentti Harri Laine, Jukka Paakki 9 Harri Laine, Jukka Paakki 10 Lineaarinen malli (vesiputous, waterfall) käyttöönotto käyttäjien koulutus, asennukset, tietojen siirrot, ylläpito (maintenance) haluttujen muutosten tai tarvittavien korjausten toteuttaminen, sopeuttaminen Vaiheet voidaan jakaa edelleen alivaiheisiin, esim. testaus ={yksikkötestaus, integrointitestaus, järjestelmätestaus} Lineaarinen malli (vesiputous, waterfall) Idealistinen tilanne: prosessi etenee järjestyksessä vaiheesta toiseen (vesiputous) dokumentti Harri Laine, Jukka Paakki 11 Harri Laine, Jukka Paakki 12 2

Lineaarinen malli (vesiputous, waterfall) selkeä, yksinkertainen, perinteinen malli tulosdokumentti päättää vaiheen vasta vaiheen lopussa olevan tark istuspisteen jälkeen voidaan edetä seuraavaan vaiheeseen käytännössä: vaiheilla riippuvuuksia vaiheen suoritus saattaa paljastaa edellisessävaiheessa tehtyjä virheitä prosessia tulee peruuttaa -> prosessi muuttuu iteratiiviseksi palattava toistamaan aikaisempia vaiheita etenemisjärjestys muutoin säilyttäen Lineaarinen malli (vesiputous, waterfall) Todellinen tilanne dokumentti Harri Laine, Jukka Paakki 13 Harri Laine, Jukka Paakki 14 Lineaarinen malli - ongelmia iteratiivisuus on huonosti kuvattu kiinnittää tarkistuspisteet ja dokumentit vaiheiden rajapinnoille -> käytännön peruutus hankalaa prosessin loppupäässä käynnistyvä peruutus (esim. ylläpito --> ) saattaa olla todella kallis operaatio (suuri osa vaiheista ja niiden tuloksista uusittava) toimiva järjestelmä saadaan asiakkaan tutkittavaksi hyvin myöhään Dokumentointi lineaarisen mallin yhteydessä vaatimusmäärittely esitutkimusraportti vaatimusdokumentti toimintojen kuvaukset hyväksymistestaussuunnitelma luonnos käyttöohjeesta järjestelmäarkkitehtuuri järjestelmätestaussuunnitelma liittymämäärittelyt moduulisuunnitelmat integrointitestaussuunnitelma Harri Laine, Jukka Paakki 15 Harri Laine, Jukka Paakki 16 Dokumentointi lineaarisen mallin yhteydessä toteutus ohjelmakoodi yksikkötestaussuunnitelmat tekniset dokumentit testaus yksikkötestausraportit integrointitestausraportti järjestelmätestausraportti hyväksymistestausraportti Dokumentointi lineaarisen mallin yhteydessä Tiukasti dokumentteihin sidotun etenemisen ongelmia: dokumenttien sovittu aikataulu ei välttämättä vastaa prosessin aikataulua iterointi hankaloituu (onko uusittavavai tehtävä korjausliitteitä?) dokumenttien I/O-olemus liian suoraviivainen näkemys prosessista joskus tarkan dokumentin tekeminen on mahdotonta Harri Laine, Jukka Paakki 17 Harri Laine, Jukka Paakki 18 3

Lineaarisen mallin plussat yksinkertainen tunnetuin yleisesti hyväksytty modularisoi hyvin ohjelmistotuotantoprosessin tarjoaa pohjan kehittyneemmille malleille 2. Prototyyppimalli Prototyyppi = nopeastitoteutettu osa järjestelmästä, muokataan tarpeen mukaan Idea: järjestelmän keskeisiä osia kokeillaan prototyyppien avulla ennen toteutusvaihetta epäselvien asiakasvaatimusten selventäminen ratkaisuvaihtoehtojen selvittäminen käyttöliittymän ja järjestelmän palvelujen esittäminen ja tarkentaminen asiakkaalle nopeasti jotain toimivaa arvioitavaksi edellyttää nopean kehityksen välineitä Harri Laine, Jukka Paakki 19 Harri Laine, Jukka Paakki 20 Prototyyppimalli Prototyyppimalli Määrittely Nopea suunnitelma Prototyypin tekeminen Arviointi ja määritysten täsmennys Tuotteen valmistus Kahdenlaisia prototyyppejä: hylättävät prototyypit prototyyppi ei siirry koskaan tuotantoon, vaan tätä varten tehdään erillinen järjestelmä, mahdollisesti kokonaan eri välinein kehittyvät prototyypit prototyypistä jalostetaan tuotantoversio jalostus voi tapahtua monen prototyypinkautta Harri Laine, Jukka Paakki 21 Harri Laine, Jukka Paakki 22 Prototyyppimalli - ongelmia Asiakas voitulkita prototyypin varsinaiseksi järjestelmäksi, eikä ymmärrä viivettä miksei järjestelmää voi vielä käyttää, toimihan se jokuukausia sitten? Milloin protoilu pitäisi lopettaa? Kehittyvien prototyyppien kohdalla epäkypsät ratkaisut voivat siirtyä tuotteeseen -> tehottomuutta Hylättävät prototyypit -> tuplatoteutus, resurssien hukkakäyttö? 3. RAD-malli (Rapid Application Development) Järjestelmä jaetaan melko itsenäisiin komponentteihin Kutakin komponenttia kehitetään lineaarisen mallin mukaisesti liiketoimintamalli (business model) tietosisältömalli (information model keskeinen) toimintomalli (process model ) sovelluksen generointi (kehittimien käyttö) testaus ja kokoaminen Harri Laine, Jukka Paakki 23 Harri Laine, Jukka Paakki 24 4

RAD-malli (Rapid Application Development) RAD-malli (Rapid Application Development) 1 Generointi Testaus ja ja kokoaminen Generointi 2 Testaus ja ja kokoaminen Liiketoimintamallinnus Tietosisältömallinnus Toimintomallinnus Liiketoimintamallinnus Tietosisältömallinnus Toimintomallinnus Liiketoimintamallinnus Tietosisältömallinnus Toimintomallinnus Generointi Testaus ja ja kokoaminen Sopii, jos ohjelmiston rakenne selkeästi modulaarinen Komponentin kehitys ei saisi viedä yli 3 kk Asiakas ja kehittäjät tiiviissä yhteistyössä Tarvitaan hyvät työkalut Harri Laine, Jukka Paakki 25 Harri Laine, Jukka Paakki 26 4. Evoluutiomallit kasvattava malli Evoluutiomallit kasvattava malli Suppean ydinjärjestelmän laajentaminen tuotantojärjestelmäksi pieninä täydennyksinä, inkrementteinä Sarja toistuvia vesiputouksia Versio n laajentaa versiota n-1 Version n kehittämisessä voidaan ottaa huomioon versiosta n-1 saatu palaute Harri Laine, Jukka Paakki 27 1. määrittely toteutus testaus v1 2. määrittely toteutus testaus v2 inkrementin kehitys voi alkaa ennen kuin edellinen versio on valmis 3. määrittely toteutus testaus v3 Harri Laine, Jukka Paakki 28 Evoluutiomallit kasvattava malli Pienet lisäykset kasvattavat monimutkaisuutta Lopputulos riippuu version 1 ydinjärjestelmän ratkaisuista Projektin- ja versionhallinta monimutkaistuu Miten dokumentoidaan: jokaiselle versiolle täydellisenä vaiko inkrementaalisesti- jos näin, löytyykö kokonaisuus? 4.1. Spiraalimalli Iteratiivinen malli, joka yhdistää vesiputousmallin, prototyyppimallin ja riskianalyysin Kasvattava lähestymistapa Tuote valmistuu sarjana vaihetuotteita aikaiset vaihetuotteet voivat olla paperimalleja tai prototyyppejä myöhemmät versiot laajentavat aiempaa Mallissa suoritetaan toistuvasti toimintosyklejä Harri Laine, Jukka Paakki 29 Harri Laine, Jukka Paakki 30 5

Spiraalimallin sykli Spiraalimalli - riskianalyysi yhteydenpito asiakkaaseen laadunvarmistus VALMIS (planning) tuotanto riskianalyysi Riski: asia, joka voi mennä pieleen esim. jonkin uuden ohjelmointikielen käyttöönotto onko soveltuva ko. tehtävään? onko käytettävissä osaavia ohjelmoijia? onko markkinoilla tehokkaita/toimivia toteutuksia? riskihavaitaan -> hankitaan puuttuva tieto kokeillaan kieltä pilottiprojektissa kartoitetaan ohjelmoijien osaaminen tehdään markkinaselvitys riskianalyysin perusteella tehdään käyttöönottopäätös Harri Laine, Jukka Paakki 31 Harri Laine, Jukka Paakki 32 Spiraalimalli - riskianalyysi Riskit vähenevät joka kierroksella tosin esiin saattaa nousta uusia riskejä esim ohjelmointikieliriski ei esiinny paperimallia tehtäessä Tuote tarkentuu kierros kierrokselta Asiakas arvioi vaihetuotetta ja antaa palautetta Spiraalimalli yhteydenpito asiakkaaseen riskianalyysi tuotanto tarvittaessa tehdään prototyyppi laadunvarmistus Harri Laine, Jukka Paakki 33 Harri Laine, Jukka Paakki 34 Spiraalimallin ongelmia asiakkaan toistuva aktivoiminen rasittaa tarkentuvat prototyypit -> aikaavievää käytännössä vajavaiseen riskiasiantuntemukseen nojautuminen ei vakiintunut -> (yllättävän) vähän käytännön kokemuksia ja näyttöjä 4.2. Komponenttimalli Spiraalimallin muunnelma, jossa perusideana on tehdyn työn hyödyntäminen Jokaisen syklin alussa etsitään valmiita ratkaisuja esillä oleviin ongelmiin ja otetaan sellainen käyttöön, jos löytyy Suunnitteluratkaisut, ohjelmakomponentit Jos ratkaisua ei löydy valmiina, se tehdään itse Ratkaisuvarastot komponenttikirjastot Harri Laine, Jukka Paakki 35 Harri Laine, Jukka Paakki 36 6

5. Ketterät mallit Ns. kevyet (lightweight) tai ketterät (agile) prosessimallit: projektinhallinta on kevyttä dokumentointi on kevyttä iteraatiot ovat lyhyitä ja ketteriä inkrementit ovat pieniä ja kevyitä soveltuvat pienehköille ja ketterille tiimeille (alle 10 henkeä) soveltuvat ohjelmistoihin, joiden vaatimukset tai määritykset ovat epäselviä tai erityisen herkkiä muuttumaan jatkuvasti 5.1. Extreme Programming (XP) Tunnetuin kevytmalli Extreme programming : ohjelmakoodi on tärkein työväline koodi on ohjelmiston tärkein dokumentti koodin laatu (oikeellisuus, ymmärrettävyys) keskeisessä asemassa Lähteitä: K. Beck: Extreme Programming Explained : Embrace Change. Addison-Wesley, 2000. http://www.extremeprogramming.org/ Harri Laine, Jukka Paakki 37 Harri Laine, Jukka Paakki 38 Extreme Programming (XP) prosessi Extreme Programming (XP) käytännöt käyttäjätarinat (user stories) vaatimukset projektin (release planning) metafora (system metaphor, architectural spike) koodauskierros (iteration) valitut käyttäjätarinat, karkea aikataulu testiskenaariot vikoja viimeisin versio ok hyväksymistestaus (acceptance tests) kevytohjelmisto (small release) 1. Metafora (metaphor) vertauskuvallinen kuvaus järjestelmästä korvaa tavanomaisen arkkitehtuurin 2. Suunnittelupeli (planning game) jokaisen iteraatiokierroksen (1-3 viikkoa) aloitus valitaan iteraatiossa toteutettavat käyttäjätarinat ja arvioidaan toteuttamisen aikataulu 3. Paikalla oleva asiakas (on-site customer) asiakas koko ajan mukana asiakas suunnittelee ja suorittaa hyväksymistestit Harri Laine, Jukka Paakki 39 Harri Laine, Jukka Paakki 40 Extreme Programming (XP) käytännöt 4. Yksinkertainen (simple design) mahdollisimman yksinkertaiset tekniset ratkaisut toteutetaan vain pelissä valittuja käyttäjätarinoita, ei mitään ylimääräistä 5. Koodin yhteisomistus (collective ownership) kuka tahansa voi muuttaa mitä tahansa osaa koodista muuttajan vastuulla uusien testien laatiminen 6. Pariohjelmointi (pair programming) kaksi kehittäjää (koodaaja, katselmoija) tuottaa koodia saman tietokoneen ääressä XP:n kiistanalaisin käytäntö Extreme Programming (XP) käytännöt 7. Koodin parantelu, refaktorointi (refactoring) rakenteellisesti huonolaatuisen koodin korjaaminen selkeämmäksi ja hyvien tapojen mukaiseksi koodin toiminnallisuus ei saa muuttua 8. Ohjelmointistandardi (coding standard) yhteisten ohjelmoinnin tyylisääntöjen noudattaminen mahdollistaa yhteisomistuksen ja kommunikoinnin 9. Testaus (testing) yksikkö- ja hyväksymistestit, suunnitellaan ennen koodausta automatisoidut testit iterointi, regressiotestaus Harri Laine, Jukka Paakki 41 Harri Laine, Jukka Paakki 42 7

Extreme Programming (XP) käytännöt 10. Pienet versiot (small releases) kasvattava ohjelmankehitys pienin inkrementein 11. Jatkuva integrointi (continuous integration) uusi, yksikkötestit läpäissyt koodi liitetään heti ohjelmistoon aina käytettävissä viimeisin versio, mutta jatkuvan regressiotestauksen kustannuksella 12. 40 tunnin työviikko (40-hour week) ylitöitä vain poikkeustilanteissa tavoitteena yhteisen työtehon pitäminen korkeana Harri Laine, Jukka Paakki 43 8