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

Samankaltaiset tiedostot
Juha Taina, Marko Salmenkivi ja Kjell Lemström,

2. Ohjelmistotuotantoprosessi

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

Ohjelmistojen suunnittelu

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

Yhteenvetoa, pieniä laajennuksia, tulevaisuuden haasteita

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmistotekniikka - Luento 2

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Kurssin aihepiiri: ohjelmistotuotannon alkeita

1. Johdanto. Ohjelmistotuotannon piirteitä

1. Johdanto. Ohjelmistotuotannon piirteitä

1. Johdanto. Ohjelmistotuotannon piirteitä

1. Johdanto. Ohjelmistotuotannon piirteitä. Ohjelmisto ja järjestelmä. Osajärjestelmät ja käyttäjät. Järjestelmän ja ohjelmiston laadinta

1. Johdanto. Ohjelmistotuotannon ongelmia

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

1. Johdanto. Ohjelmistotuotannon piirteitä. Ohjelmisto ja järjestelmä. Osajärjestelmät ja käyttäjät. Järjestelmän ja ohjelmiston laadinta

Ohjelemistotuotanto, syksy 1998 /Prosessi Prosessimallit

1. Johdanto. Ohjelmistotuotannon piirteitä

Tietojärjestelmän osat

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

Ohjelmistoprosessit ja ohjelmistojen laatu kevät 2009

OT-s200: Prosessimallit

1. Johdanto. Ohjelmistotuotannon piirteitä. Ohjelmisto ja järjestelmä. Osajärjestelmät ja käyttäjät. Järjestelmän ja ohjelmiston laadinta

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

Tutkittua tietoa. Tutkittua tietoa 1

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Ohjelmistoprojekteista. Datanomiopiskelijat 2.vuosi

7. Iteratiivinen ohjelmistokehitys

Oleelliset vaikeudet OT:ssa 1/2

Ohjelmistoprosessit ja ohjelmistojen laatu kevät 2009

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

Dokumentointi ketterissä menetelmissä

Lyhyt johdatus ketterään testaukseen

Ohjelmistojen mallintaminen. Matti Luukkainen

Ohjelmistotuotanto

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

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Tapahtuipa Testaajalle...

Ohjelmiston testaus ja laatu. Testaustasot

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

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

Käyttäjäkeskeinen suunnittelu

Suunnitteluvaihe prosessissa

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

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

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

Scrumin käyttö ketterässä sovelluskehityksessä

Koekysymyksiä. Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistojen suorituskyky

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

Johdantoluento. Ohjelmien ylläpito

UCOT-Sovellusprojekti. Testausraportti

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

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

Ohjelmistoprojektien hallinta Vaihejakomallit

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

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

dokumentin aihe Dokumentti: Testausraportti_I1.doc Päiväys: Projekti : AgileElephant

Käyttäjätarinat perinteisessä hankkeessa. Sisältö ja käytännöt

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

Automaattinen yksikkötestaus

ITK130 Ohjelmistoprosessi

Ohjelmistotekniikka kevät 2003 Laatujärjestelmät

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

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ketterä projektinhallinta

Ketterä vaatimustenhallinta

$$$ Raha ratkaisee. $$$ Raha ratkaisee. Ohjelmistotuote. Ohjelmistotekniikan määritelmä

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

Verifiointi ja validointi

Hieman lisää malleista ja niiden hyödyntämisestä

Ohjelmiston toteutussuunnitelma

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

Juha Taina, Marko Salmenkivi ja Kjell Lemström,

ITK130 Ohjelmistojen luonne

Testaaminen ohjelmiston kehitysprosessin aikana

Yhteisön kehitystyöhön osallistumisen mahdollisuudet ja mallit

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

VERSIONHALLINTA. PARIOHJELMOINTI Lari Ahti, 62634M Antti Kauppinen, 58390D

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Test-Driven Development

13/20: Kierrätys kannattaa koodaamisessakin

COTOOL dokumentaatio SEPA: Refaktorointi

Testaussuunnitelma Labra

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

SEPA päiväkirja. BetaTeam. Juho Mäkinen, 57796V, Jari Leppä, 42710V, Versio Pvm Tekijä Kuvaus

Projektityö

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

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

6. Suunnittelu. Suunnittelun tulos

Software engineering

Mikkelin sähköisen asioinnin alusta - päätöksenteko. Kalle Launiala / ProtonIT Oy kalle.launiala@protonit.net

Testaus käsite. Sekalaista testausasiaa. Testauksen käsitteestä. Kattavuusmitat. Jos ajatellaan, että testaus = V&V, voidaan erottaa:

Ohjelmistotuotteen hallinnasta

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

Uudelleenkäytön jako kahteen

Ylläpito. Ylläpidon lajeja

Ohjelmistotuotanto, suunnittelu Syksy Suunnittelu. Suunnittelun tulos. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi.

Transkriptio:

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ä ja työkaluja 581259 Ohjelmistotuotanto 30

Erikoistuminen valmistettavat ohjelmistot eroavat toisistaan enemmän kuin koskaan esim. kännyköihin ja mobiililaitteisiin tehtävät suhteellisen pienet ohjelmistot toisaalta valtavia ohjelmistoja, joiden suorituskyky ja käyttöturvallisuus on määritelty erittäin korkealle. ohjelmistoyritysten täytyy erikoistua säilyttääkseen markkinansa 581259 Ohjelmistotuotanto 31

Ohjelmisto ja järjestelmä 581259 Ohjelmistotuotanto 32

Järjestelmä Järjestelmä (system) Joukko toisiinsa liittyviä laitteistokomponentteja (ja mahdollisesti ohjelmistokomponentteja), jotka toimivat yhdessä jonkin päämäärän saavuttamiseksi käyttäjät, käyttöympäristöt (sosiotekninen järjestelmä) Systems engineering toimintatavat, joiden tarkoituksena varmistaa, että järjestelmä tai palvelu, jota ollaan tuottamassa vastaa sille asetettuja vaatimuksia 581259 Ohjelmistotuotanto 33

Tietokonepohjainen järjestelmä Tietokonepohjainen järjestelmä (computerbased system) Joukko laitteisto- ja ohjelmistokomponentteja, jotka toimivat yhdessä jonkin päämäärän saavuttamiseksi Käyttäjät, käyttöympäristöt Voi olla osa laajempaa (sosioteknistä) järjestelmää 581259 Ohjelmistotuotanto 34

Osajärjestelmät ja käyttäjät Yleensä järjestelmä koostuu useasta osajärjestelmästä. Kukin osajärjestelmä on itsenäinen kokonaisuus, joka toimii yhteistyössä muiden osajärjestelmien kanssa. Osajärjestelmä rakentuu laitteisto- ja ohjelmistokomponenteista, jotka toteuttavat yhteistyössä osajärjestelmän tehtävät. Käyttäjät käyttävät järjestelmää yhden tai useamman osajärjestelmän kautta (kälit). 581259 Ohjelmistotuotanto 35

Ohjelmisto ja sen ympäristö Ohjelmisto (software) on kokoelma yhteistyössä toimivia tietokoneohjelmia, ohjelmien käyttämiä tiedostoja ja niihin liittyviä dokumentteja. Ohjelmistoa käytetään aina jossakin ympäristössä Ohjelmisto- ja laitteistoympäristö Käyttöympäristö: missä käytetään, ketkä käyttävät 581259 Ohjelmistotuotanto 36

Järjestelmän ja ohjelmiston laadinta Järjestelmää ja ohjelmistoa on laadittava yhteistyössä: Ohjelmistotuotantoa ei voi tehdä ilman tietoa ympäristöstä, johon ohjelmistoa ollaan tekemässä Yhteistyö edellyttää ohjelmiston laatijoilta valmiutta kommunikoida sovellusalueen asiantuntijoiden kanssa 581259 Ohjelmistotuotanto 37

Mitä vaaditaan hyvältä ohjelmistolta? Hyvällä ohjelmistolla on seuraavat keskeiset ominaisuudet: Ylläpidettävyys: tuotetta voidaan muokata vastaamaan muuttuviin vaatimuksiin. Luotettavuus: tuote ei aiheuta fyysisiä eikä taloudellisia vahinkoja missään tilanteessa. Tehokkuus: tuote ei tuhlaa resursseja. Käytettävyys: tuote on looginen ja helppokäyttöinen. 581259 Ohjelmistotuotanto 38

Ohjelmistotuotannon prosessimalleja 581259 Ohjelmistotuotanto 39

Ohjelmistotuotantoprosessi Ohjelmistotuotantoprosessi (software process) on joukko toimintoja, jotka johtavat ohjelmiston valmistumiseen Prosessi on ohjeisto, joka kertoo työvaiheet ja niiden väliset suhteet Prosessin ilmentymä on projekti: projektissa toteutetaan prosessin työvaiheet Käytännössä jokainen ohjelmistoyritys käyttää itselleen räätälöityjä prosesseja. 581259 Ohjelmistotuotanto 40

Prosessimalli Prosessimalli (process model) on abstrakti kuvaus prosessista. Prosessimallista voidaan johtaa monta erilaista prosessia eri organisaatioihin ja sovellusalueille. Prosessimalli kuvaa yleisperiaatteen, ei yksityiskohtia. Näin prosessimalli määrittelee kehykset, joihin itse prosessit rakennetaan. 581259 Ohjelmistotuotanto 41

Prosessimallien perustehtävät Jokaiseen prosessimalliin sisältyy tavalla tai toisella seuraavat perustehtävät: Vaatimusten keruu ja analyysi (vaatimusmäärittely), Ohjelmiston suunnittelu, Toteutus ja yksikkötestaus, Integrointi ja järjestelmätestaus, Käyttö ja ylläpito (evoluutio). 581259 Ohjelmistotuotanto 42

Vaatimusmäärittely Mitä vaatimuksia ohjelmistolle asetetaan: mitä toimintoja sen pitää sisältää liittyykö toimintaan laadullisia vaatimuksia (esim. ( suhteen nopeuden tai käyttötavan Mitä rajoituksia ohjelmiston toimintaan liittyy: esim. yhteistoiminta muiden ohjelmistojen kanssa 581259 Ohjelmistotuotanto 43

Ohjelmiston suunnittelu Suunnittelu kuvaa ohjelmiston rakenteen ohjelmiston tarvitsemat ja käsittelemät tiedot komponenttien väliset rajapinnat käytetyt algoritmit. Suunnittelu perustuu kerättyihin vaatimuksiin Suunnittelun tuloksena saadaan yksi tai useampi ohjelmiston toteutuksessa käytettävä malli ohjelmiston rakenteesta 581259 Ohjelmistotuotanto 44

Suunnittelun tasot Suunnitteluprosessi vaatii useita työvaiheita, jotka käsittelevät ongelmaa eri tarkkuustasoilla, esim. Arkkitehtuurisuunnittelu Tehdään järjestelmästä korkean tason malli, josta selviävät osajärjestelmät ja niissä käytettävät komponentit Abstrakti määrittely Määritellään kunkin osajärjestelmän tarjoamat palvelut ja rajoitteet Rajapintasuunnittelu Määritellään kunkin osajärjestelmän tarjoamat rajapinnat muille osajärjestelmille 581259 Ohjelmistotuotanto 45

Suunnittelun tasot 2 Komponenttisuunnittelu Määritellään osajärjestelmittäin palvelut toteuttavat komponentit ja suunnitellaan ne Komponentit voivat olla esimerkiksi olioluokkia tai luokkaryhmiä Tietorakenteiden suunnittelu Suunnitellaan järjestelmän toteutuksessa välttämättömät tietorakenteet Algoritmien suunnittelu Suunnitellaan järjestelmän toteutuksessa käytettävät algoritmit 581259 Ohjelmistotuotanto 46

Toteutus ja yksikkötestaus Komponentit toteutetaan suunnitelman pohjalta Ohjelmakomponentti: yhden asian (eikä muuta) kunnolla tekevä ohjelman osa, jolla on selkeä rajapinta ulospäin Komponentti voi olla kooltaan mitä tahansa olioluokasta kokonaiseen ohjelmaan Toteutuksen osana yksikkötestauksessa varmistetaan, että komponentit toimivat luvatulla tavalla 581259 Ohjelmistotuotanto 47

Integrointi ja järjestelmätestaus Ohjelmakomponentit kootaan yhteen Komponenttien välinen yhteistyö testataan integrointitestauksessa Komponenteista kootaan osajärjestelmiä (itsenäisiä osia). Osajärjestelmien yhteistyö testataan Koko järjestelmä testataan todellisessa käyttöympäristössä järjestelmätestaus 581259 Ohjelmistotuotanto 48

Ohjelmiston käyttö ja ylläpito Ohjelmistoa on usein tarvetta muuttaa myöhemminkin: Käytössä paljastuu virheitä Käyttäjien vaatimukset täsmentyvät tai muuttuvat Käyttöympäristö ja laitteisto muuttuvat Käyttötavat muuttuvat Ylläpito = ohjelmiston muuttaminen käyttöönoton jälkeen Evoluutio = väistämättömät tekijät, jotka pakottavat ohjelmiston muuttumaan 581259 Ohjelmistotuotanto 49

Prosessimallien tyypittelyä Lineaariset mallit: vaihe kerrallaan Komponenttimallit: valmiiden osien käyttö Prototyyppimallit (eli evoluutiomallit): prototyypit Iteratiiviset ja inkrementaaliset mallit: vaiheiden toistaminen, lisätään toiminnallisuutta vähän kerrassaan Nämä ovat pääluokkia: yksittäisissä prosessimalleissa näitä ominaisuuksia voidaan myös jossakin määrin yhdistellä 581259 Ohjelmistotuotanto 50

Vesiputousmalli Vesiputousmallissa on lineaarinen lähestymistapa: Jo päätettyyn vaiheeseen ei enää palata myöhemmin Jokainen vaihe saatetaan loppuun, sen tulokset hyväksytään ja jäädytetään ennen seuraavaan vaiheeseen siirtymistä Vesiputousmallin vaiheet ovat suoraviivaisesti prosessimallin perustehtävät 581259 Ohjelmistotuotanto 51

Vesiputousmallin tehtäväjako Vaatimusmääritely Suunnittelu Toteutus Testaus Ylläpito Dokumentointi 581259 Ohjelmistotuotanto 52

Vesiputousmallin vaiheet 1. Vaatimusmäärittely mitkä ovat ohjelmiston palvelut rajoitukset tavoitteet? laaditaan ohjelmistoa kuvaavat mallit, joiden avulla voidaan tarkistaa vaatimusten järkevyys 2. Suunnittelu tarkennetaan vaatimusmäärittelyssä laadittuja malleja: osajärjestelmät ja niiden välinen yhteistyö tarkennetaan jokainen osajärjestelmä halutulle abstraktiotasolle asti riittävä tarkkuus toteutuksen pohjaksi 581259 Ohjelmistotuotanto 53

Vesiputousmallin vaiheet 2 ( yksikkötestaus +) 3. Toteutus suunnitelma toteutetaan osa kerrallaan eri osat voidaan tehdä eri ohjelmointikielillä kukin osa (yksikkö) testataan toteutuksen yhteydessä yksikkötestauksen menetelmät Malli perustuu vahvasti hyvään dokumentaatioon. 4. Integrointi ja testaus toimivista osista kootaan osajärjestelmiä ja näistä edelleen koko järjestelmä integrointitestaus: toimivatko rajapinnat? koko järjestelmän verifiointi (selvitetään, että se toimii) ja validointi (selvitetään, että se tekee ( halutaan mitä 5. Ylläpito käyttöönoton jälkeen korjaukset, laajennukset 581259 Ohjelmistotuotanto 54

Vesiputousmallin synnystä Royce 1970: Managing the Development of Large Software Systems Hieman tragikoomista on, että artikkelissa esiteltiin vesiputousmallin periaatteet, mutta todettiin ettei ohjelmistotuotantoa missään nimessä pidä tehdä sen mallin mukaisesti Royce kannatti iteratiivista kehitystyötä Vesiputousmalli saavutti kuitenkin nopeasti suuren suosion, se vastasi oman aikansa ohjelmistoammattilaisten käsitystä oikeanlaisesta prosessista 581259 Ohjelmistotuotanto 55

Royce dokumentaatiosta At this point it is appropriate to raise the issue of how much documentation? My own view is quite a lot ; certainly more than most programmers, analysts, or program signers are willing to do if left to their own devices. The first rule of managing software development is ruthless enforcement of documentation requirements - Royce (1970): Managing the Development of Large Software Systems 581259 Ohjelmistotuotanto 56

Vesiputousmalli nykyisin Edelleenkin suuri osa ohjelmistoyrityksistä käyttää vesiputousmallia tai jotakin sen varianttia (esim. V-mallia) kehitystyössään Valtava osa viimeisen 40 vuoden ohjelmistotekniikan tutkimustyöstä perustuu vesiputousmalliin mallin teoria, vahvuudet ja heikkoudet tunnetaan hyvin Malli tarjoaa parhaan teoria- ja työkalutuen 581259 Ohjelmistotuotanto 57

Plussaa Selkeä ja helposti omaksuttava malli Tiukasti kontrolloitu prosessi sopii erityisesti hyvin laajoihin ja kriittisiin järjestelmiin Sopii hierarkkisiin organisaatioihin Ei vaadi välttämättä jatkuvaa ryhmätyötä (riippuu ehkä henkilöstä, onko tämä plussaa vai miinusta) Kiireisen asiakkaan ei tarvitse osallistua projektityöhön 581259 Ohjelmistotuotanto 58

Miinusta Vaatimukset eivät saa muuttua Valmista vasta projektin päätyttyä Myöhässä olevaa projektia vaikea saada aikatauluun Työntekijät saattavat turhautua dokumentointiin 581259 Ohjelmistotuotanto 59

Komponenttimalli Tavoitteena on käyttää mahdollisimman paljon jo valmiita komponentteja Valmiita komponentteja saadaan omista aiemmista projekteista ostamalla ilmaisista Free Software projekteista (vaarallisia, ( takeita koska ylläpidosta ei ole Uudelleenkäytettäviä komponentteja pidetään komponenttikirjastossa 581259 Ohjelmistotuotanto 60

Komponenttimallin työvaiheet Komponenttimallin työvaiheet ovat: Vaatimusmäärittely Etsitään ja analysoidaan vaatimuksia Komponenttianalyysi Etsitään komponenttikirjastosta vaatimusanalyysin mukaiseen tuotteeseen sopivia komponentteja Vaatimusten muokkaus Täydennetään vaatimuksia ottaen huomioon löydetyt komponenttiehdokkaat 581259 Ohjelmistotuotanto 61

Komponenttimallin työvaiheet II Työvaiheet jatkuvat: Suunnittelu ja komponenttien eristys Eristetään komponenttikirjastoon omia kelvollisia komponenttiehdokkaiden suunnitelmia Toteutus ja komponenttien eristys Eristetään komponenttikirjastoon omia kelvollisia komponenttiehdokkaiden toteutuksia Järjestelmän validointi Varmistetaan, että tehtiin oikea järjestelmä 581259 Ohjelmistotuotanto 62

Iteratiiviset ja inkrementaaliset mallit Vesiputousmallissa ohjelma määritellään ja suunnitellaan yhtenä kokonaisuutena. Tämä ei usein toimi: vaatimuksia ei tunneta kunnolla, vaatimukset ovat epäselviä tai vaatimukset muuttuvat projektin aikana Inkrementaalisissa malleissa ohjelma määritellään ja toteutetaan yleensä iteratiivisesti sykleissä: ytimestä erikoisosiin 581259 Ohjelmistotuotanto 63

Syklit Ohjelmisto jaetaan osiin, jotka toteutetaan omina sykleinään Ensin toteutetaan ydin, johon seuraavien syklien tulokset voidaan liittää Vain yhden syklin vaatimukset käsitellään kerrallaan Toteuttamattomien syklien vaatimukset voivat muuttua 581259 Ohjelmistotuotanto 64

Etuja ja haittoja Asiakas saa alusta lähtien jossakin määrin käyttökelpoisen tuotteen Tärkeimmät piirteet toteutetaan ensin Virheelliset määritykset huomataan ajoissa Ohjelman rakenteen pitäminen loogisena ja selkeänä voi olla ongelmallista 581259 Ohjelmistotuotanto 65

Prototyyppimallit Throwaway prototyping Kehitetään hyvin nopeasti prototyyppi ohjelmistosta Pyrkimyksenä päästä varhaisessa vaiheessa selvyyteen asiakkaan vaatimuksista ikään kuin iteroimalla vaatimusmäärittelyä asteittain tarkemmaksi Asiakas näkee nopeasti kuinka hänen vaatimuksensa realisoituvat todelliseksi ohjelmistoksi ja pystyy antamaan palautetta Konkreettisen prototyypin avulla pyritään siis ymmärtämään ja tarkentamaan asiakkaan toiveita ja vaatimuksia 581259 Ohjelmistotuotanto 66

Prototyyppimallit II Evolutionary prototyping Prototyypin tarkoitus olla osittain valmis ohjelma, joka jalostetaan askeleittain tuotantoversioksi Aloitetaan parhaiten ymmärretyistä osista Asiakas saa alusta lähtien käyttökelpoisen ohjelmiston Asiakkaan kanssa neuvotellen lisätään prototyyppiin toiminnallisuutta 581259 Ohjelmistotuotanto 67

Prototyypin tehtävä Tarkoituksena voi olla tarkentaa asiakkaan toiveita ja vaatimuksia (throwaway prototyping) prototyypin hylkääminen Tarkoituksena voi olla esitellä asiakkaalle ydinohjelmisto tai jokin ydinohjelmistoon liitetty toiminto (evolutionary prototyping) prototyypin kehittäminen eteenpäin Asiakkaan voi olla vaikeaa ymmärtää, miksi prototyyppi ei kelpaa lopputuotteeksi. Prototyyppi ei täytä valmiille ohjelmistolle asetettavia laatuvaatimuksia 581259 Ohjelmistotuotanto 68

Prototyyppimallien soveltuvuus Prototyyppimallit sopivat hyvin pienten ja keskisuurten järjestelmien (Sommervillen mukaan max 500 000 koodiriviä) Erityisesti suurten järjestelmien kohdalla Projektihallinnon voi olla vaikeaa hahmottaa projektin tilaa ja etenemistä Jatkuvat muutokset voivat rikkoa suunnitellun arkkitehtuurin Prototyyppien tekeminen vaatii sopivat välineet (sovelluskehitin) + niiden käyttötaidon 581259 Ohjelmistotuotanto 69

Ketterät prosessimallit 1980- ja 1990-luvun prosessimalleissa korostettiin huolellista projektisuunnittelua, formaalia laadunvalvontaa, yksityiskohtaisia analyysi- ja suunnittelumenetelmiä, CASE-työkalujen käyttöä ja täsmällistä tarkasti ohjattua ohjelmistoprosessia. 581259 Ohjelmistotuotanto 70

Ketterien prosessimallien synty Prosessimallit tukivat erityisesti laajojen, pitkäikäisten ohjelmistojen kehitystyötä, mutta pienten ja keskisuurten ohjelmistojen tekoon ne osoittautuivat usein turhan jäykiksi. Ristiriidan seurauksena syntyi joukko ketteriä prosessimalleja (agile process models), jotka korostivat itse ohjelmistoa yksityiskohtaisen suunnittelun ja dokumentaation sijaan. Näistä tunnetuimmat ovat extreme Programming (XP) ja Scrum 581259 Ohjelmistotuotanto 71

Ketterien prosessien luonne Kaikki ketterät prosessimallit ovat inkrementaalisia ja iteratiivisia Yksi iteraatiokierros on muutaman viikon mittainen Iteraation aikana käydään läpi vaiheet vaatimuksista luovutukseen Lyhyen syklin johdosta asiakas on jatkuvasti mukana kehitystyössä: asiakkaan palautetta tarvitaan jatkuvasti 581259 Ohjelmistotuotanto 72

Ketterien prosessien periaatteet Asiakkaan osallistuminen Asiakas osallistuu aktiivisesti kehitystyöhön. Asiakas esittää ja priorisoi uusia järjestelmän vaatimuksia ja evaluoi syklin aikana saadut tulokset. Lisääntyvät ominaisuudet Kullakin syklillä ohjelmistoon lisätään uusia ominaisuuksia, joiden vaatimukset saadaan asiakkaalta. 581259 Ohjelmistotuotanto 73

Ketterien prosessien periaatteet II Ihmiset prosessia tärkeämmät Projektin jäsenten taidot ja toimintatavat ovat tärkeämmät kuin vahvasti ohjattu prosessi Muutoksen hyväksyminen Vaatimukset muuttuvat, joten järjestelmä pitää suunnitella tukemaan muutosta Yksinkertaisuuden ylläpito Sekä ohjelmisto että prosessi tulee pitää mahdollisimman yksinkertaisena (mutta ei yhtään yksinkertaisempana) 581259 Ohjelmistotuotanto 74

Extreme programming (XP) Pyritään viemään hyviä käytäntöjä äärimmäisyyksiin Ohjelma kehitetään hyvin pieninä sykleinä Sykli kerrallaan lisätään mahdollisimman pieni joukko järkeviä ominaisuuksia Toteutusjärjestys määräytyy asiakkaiden tarpeista Iteratiivinen kehitystapa viety äärimmilleen: uusia versioita päivittäin 581259 Ohjelmistotuotanto 75

Ihmisläheisyys Kommunikointi kasvotusten, ei dokumenttien välityksellä Asiakkaan jatkuva läsnäolo Vaatimukset selville keskustelemalla asiakkaan kanssa Järkevä etenemistahti, ei ylitöitä: kaoottinen kiire heikentää koodin laatua ja pitkän aikavälin tuottavuutta 581259 Ohjelmistotuotanto 76

Testivetoisuus ja integrointi Test-first : yksikkötestit uutta toiminnallista komponenttia varten toteutetaan jo ennen itse komponentin toteutusta Erittäin testivetoinen kehitys on XP:n merkittävimpiä innovaatioita Yksikkötestit kaikelle kirjoitetulle koodille, automatisoitu testaus Jatkuva integrointi: toteutetut toiminallisuudet integroidaan välittömästi koko järjestelmään Tällöin aina intensiivinen, automatisoitu testaus: eteenpäin ei jatketa ennen kuin kaikki testit läpäisty 581259 Ohjelmistotuotanto 77

Suunnittelun yksinkertaisuus Suunnittelua tehdään vain juuri sen verran kun on tarpeellista, ei enempää eikä vähempää Perinteisessä ohjelmistokehityksessä pyritään ennakoimaan tulevaisuudessa mahdollisesti tapahtuvia muutoksia XP:ssä pyritään välttämään tätä: ennakointi on usein turhaa ja hukattua energiaa Ennakoimisen välttäminen johtaa koodin laadun huononemiseen: muutosten toteuttaminen tulee koko ajan vaikeammaksi XP:ssä tähän ongelmaan vastataan refaktoroinnilla 581259 Ohjelmistotuotanto 78

Refaktorointi Koodin sisäisen rakenteen parantaminen Koodin toiminnallisuuden säilyttäminen (ei uusia ominaisuuksia) Kaikki kehittäjät refaktoroivat koodia jatkuvasti aina kun parannusmahdollisuuksia löydetään Pariohjelmoinnilla ja koodin yhteisomistajuudella pyritään tekemään refaktoroinnista motivoivaa 581259 Ohjelmistotuotanto 79

Kehittäjäparit ja yhteisomistajuus Pariohjelmointi Työskennellään pareittain, jolloin kaksi silmäparia aina valvomassa työn laatua Koodin yhteisomistajuus Jokainen kehittäjäpari työskentelee kaikilla järjestelmän osa-alueilla, kaikki voivat muuttaa kaikkea ei pääse kehittymään asiantuntijuuden saarekkeita Yhteinen vastuu, egoless programming 581259 Ohjelmistotuotanto 80

Scrum Nimi rugbyn alkuasetelmasta: tiiviistä ihmiskeosta Roolit: tiimi, scrum-mestari, omistaja Scrum-mestari Eräänlainen projektipäällikkö, jolla ei kuitenkaan suoranaista käskyvaltaa tiimin jäseniin Hoitaa tiimin rajapintaa ulkomaailmaan Esteiden poistaminen, työrauhan takaaminen tiimille Omistaja (product owner) Edustaa asiakkaita (periaatteessa) jatkuvasti mukana tiimin työssä 581259 Ohjelmistotuotanto 81

Pyrähdykset (sprint) Tiimistä riippuen muutamia viikkoja, usein n. 30 päivää Koko projekti koostuu pyrähdysten sarjasta: lyhyillä pyrähdyksillä pyritään joustavuuteen Projektin työlistasta (product backlog) valitaan pyrähdyksessä toteutettavat vaatimukset pyrähdyksen työlistaan (sprint backlog) 581259 Ohjelmistotuotanto 82

Pyrähdyksen työlista Ensisijaisesti omistaja määrittää mitä vaatimuksia valitaan pyrähdyksen työlistaan Pyrähdyksen työlistaan ei voi tehdä muutoksia pyrähdyksen aikana Pyrähdyksen päättyessä tuotteen tulisi sisältää uutta toiminnallisuutta (lopussa demotaan) 581259 Ohjelmistotuotanto 83

Scrum-kokoukset Scrum-kokoukset (Daily Scrum) Päivittäinen enintään 15 minuuttia kestävä kokous Kukin kertoo mitä tehnyt, mitä aikoo tehdä, mitä vaikeuksia Pyritään varmistumaan, että kaikki edistyvät, kaikilla mielekästä tekemistä ja poistamaan esteet tekemisen tieltä Esteiden poistaminen Scrum-mestarin tehtävä 581259 Ohjelmistotuotanto 84