Ohjelmistoposesseista Luento nro 6, 23.9.2015 Kari Systä 28.9.2015 JOTU/K.Systä 1
Sisältöä Käytännön asioista kurssista Kertausta Ohjelmistoprosesseista 28.9.2015 JOTU/K.Systä 2
Kurssin tilannetta Asiakaspalaverit menneet hyvin. Ensiviikon (5.10 alkava) viikkoharjoituksiin oma läppäri mukaan! 28.9.2015 JOTU/K.Systä 3
Kertausta Navigointisuunta 28.9.2015 JOTU/K.Systä 4
0-* Oppimistapahtuma Luento 1 Opintokokonaisuus 1 1-* Opintojakso 0-* 1-* 1-* 0-* Esitieto -> 0-* Luennoija Viikkoharjoitus 0-* Yhteinen käsite opettaja? Assistentti Harjoitustyö 28.9.2015 JOTU/K.Systä 5
28.9.2015 JOTU/K.Systä 6
OHJELMISTOPROSESSEISTA 28.9.2015 JOTU/K.Systä 7
Auton valmistuksessa työn koordinointi on helppoa http://www.team-bhp.com/forum/indian-car-scene/83316- automotive-manufacturing-overview.html 28.9.2015 JOTU/K.Systä 8
SW development is Collaborative game http://alistair.cockburn.us/cooperative+game +manifesto+for+software+development Software development is a (series of) cooperative game(s), in which people use markers and props to inform, remind and inspire themselves and each other in getting to the next move in the game. The endpoint of the game is an operating software system; the residue of the game is a set of markers to inform and assist the players of the next game. The next game is the alteration or replacement of the system, or creation of a neighboring system. 28.9.2015 JOTU/K.Systä 9
Kyse on koordinoinnista ja kommunikoinnista 28.9.2015 JOTU/K.Systä 10
Kaksi ansaa Byrokratiakaaos Luova kaaos 28.9.2015 JOTU/K.Systä 11
Tarve/idea Esiselvitys unohdetaan Tehdään itse Teetetään Ostetaan Vaatimusmäärittelyt Toimittajan valinta Räätälöidään Suunnittelu Toteutus Testaus Käyttöönotto Ylläpito Poisto 28.9.2015 JOTU/K.Systä 12
Pelin joukkueet Kilpailija Asiakas Käyttäjä Johto Kehitystiimi Ottelu = projekti Alihankkija 28.9.2015 JOTU/K.Systä 13
Ohjelmiston rakentaminen projektina Asiakas - toimittaja Tarvitaan yhteisymmärrys siitä mitä halutaan Mitä se maksaa Koska se on valmis Asiakas ymmärrettävä laajasti Sisäinen Varsinaisen asiakkaan edustaja (esim. markkinointi) Tämä kurssi on suunniteltu (myös) tuleville asiakkaille Asiakkaalle projekti on usein osa isompaa kokonaisuutta (hanketta) Ohjelmiston lisäksi laite, liiketoimintamuutos, Elinkaari: esiselvitys, määrittely, toteutus, käyttöönotto, ylläpito, käytöstä poisto 14 28.9.2015 JOTU/K.Systä
Erilaisia projekteja - tuote Toimittaja määrittely toteutus testaus paketointi tutkimus myynti Asiakas 15 28.9.2015 JOTU/K.Systä
Erilaisia projekteja asiakaskohtainen Toimittaja tutkimus toteutus testaus tarjous määrittely käyttöönotto määrittely käyttöönotto tarjouspyyntö Asiakas 16 28.9.2015 JOTU/K.Systä
Erilaisia projekteja asiakaskohtainen Toimittaja Toimittaja tutkimus toteutus testaus Määrittely tarjous tarjous käyttöönotto käyttöönotto Määritelyn tilaus Asiakas Tarjouspyyntö tilaus 17 28.9.2015 JOTU/K.Systä
Erilaisia projekteja - tuote Toimittaja määrittely toteutus testaus paketointi tutkimus myynti Asiakas 18 28.9.2015 JOTU/K.Systä
Vesiputousmalli Määrittely Suunnittelu Toteutus Testaus 28.9.2015 JOTU/K.Systä 19
Royce, 1970 28.9.2015 JOTU/K.Systä 20
Tämä kulunut kuva on pakko näyttää 21 28.9.2015 JOTU/K.Systä
Miksi tuo ei toimi Oletus 1: kunnon vaatimukset saa tehtyä kun niihin vaan panostaa Mutta: asiakkaan tarpeet muuttuu projektin aikanakin Mutta: ohjelmisto on abstrakti kunnes sen näkee käytännössä Oletus 2: muutokset ovat pieniä Mutta: eivät ole (ja kohdistuvat juuri sinne minne ei pitänyt) Oletus 3: integrointi on vain palasten kokoon laittamista Mutta: komponenttien tekijät olivat vain ihmisiä Oletus 4: aikataulu pitää Oikeasti hyvin harvoin 28.9.2015 JOTU/K.Systä 22
Iteratiiviset, ketterät yms Toimittaja tutkimus tot tot tot tot tarjous määr. test demo test demo test demo test käyt.otto määr. demo demo demo käyt.otto tarjouspyyntö Asiakas tarjous Demo tarkoittaa yhdessä käyttäjän kanssa tehtävää uudelleen pohdintaa. 23 28.9.2015 JOTU/K.Systä
Ketterät prosessit ja menetelmät http://www.agilealliance.com/home Vain oleellinen on tärkeää Asiakas- ja tuotekeskeisyys Kehittäminen tapahtuu asiakkaan kanssa yhteistyössä Valmius jatkuvaan muutokseen Iteratiivisuus Dokumentaation sijaan korostetaan henkilökohtaista kommunikaatiota kykyä demonstroida valmiita ominaisuuksia kykyä muuttaa toteutettua järjestelmää palautteen perusteella Osaamisen, ammattitaidon ja vastuuntunnon korostaminen Esimerkiksi extreme Programming (XP) test driven development (TDD) pariohjelmointi Scrum 24 28.9.2015 JOTU/K.Systä
Kehitysprosessit: erilaisia variaatioita samasta teemasta Testaus, laadunvarmistus Asiakkaan ongelma asiakasvaatimukset Määrittely ohjelmistovaatimukset, määrittely Suunnittelu tekniset vaatimukset, suunnittelu Toteutus asiakastoimitus Seuraava versio Hyväksymistestaus JOTU/K.Systä 28.9.2015 25
Tarve/idea Esiselvitys unohdetaan Tehdään itse Teetetään Ostetaan Määritellään itse Tilataan määrittely Räätälöidään Tarjouskilpailu Määrittely Päätös Tarjouskilpailu Suunnittelu Toteutus Testaus 28.9.2015 JOTU/K.Systä 26
Kehitysprosessit: erilaisia variaatioita samasta teemasta Testaus, laadunvarmistus Asiakkaan ongelma asiakasvaatimukset Määrittely Suunnittelu ohjelmistovaatimukset, määrittely tekniset vaatimukset, suunnittelu Toteutus asiakastoimitus Seuraava versio Hyväksymistestaus JOTU/K.Systä 28.9.2015 27
Vaatimusten tyyppejä Toiminnallinen vaatimus (functional requirement), esimerkiksi ohjelmassa on tuki oikeinkirjoituksen tarkastamiselle. Ei-toiminnallinen vaatimus (non-functional requirement), esimerkiksi ohjelman käyttöliittymä on dokumentin WS-100, UI-tyyliopas mukainen. Reunaehdot (constraints), esimerkiksi ohjelmisto on toteutettava Windows-ympäristöön C++-kielellä. 28.9.2015 JOTU/K.Systä 28
Määrittely (Muistuksena!) Fred Brooks on yksi alamme tunnetuimpia asiantuntijoita. Hän julkaisi vuonna 1987 paljon huomiota saaneen artikkelinsa No Silver Bullet:Essence and Accidents of Software Engineering [Brooks 1987]. Siinä hän toteaa: The hardest single part of building a software system is deciding what to build. No other part of the conceptual work is as difficult in establishing the detailed technical requirements, including the interfaces to people, to machines, and to other software systems. No other part of the work so cripples the results if done wrong. No other part is more difficult to rectify later. Monet tutkimukset (ks. esim [Leffingwell ja Widrig 2003]) osoittavat, että ohjelmistoprojektien epäonnistumisen syyt juontavat juurensa yli 60-prosenttisesti huonoon vaatimustenkäsittelyyn. 28.9.2015 JOTU/K.Systä 29
Kaksi erilaista johtopäätöstä 1. Kannattaa käyttää alussa paljon aikaa vaatimusten miettimiseen ja kirjaamiseen ennen kuin kirjoittaa yhtäkään koodiriviä. 2. Vaatimukset tai ainakin ymmärrys niistä muuttuu projektin aikana kuitenkin. Joten parasta iteroida palanen kerrallaan. 28.9.2015 JOTU/K.Systä 30
Kehitysprosessit: erilaisia variaatioita samasta teemasta Testaus, laadunvarmistus Asiakkaan ongelma Määrittely Suunnittelu asiakasvaatimukset ohjelmistovaatimukset, määrittely tekniset vaatimukset, suunnittelu Toteutus asiakastoimitus Seuraava versio Hyväksymistestaus JOTU/K.Systä 28.9.2015 31
Suunnittelu (Architecture design) Ohjelmiston tekniset ominaisuudet Ohjelmiston jako osiin Osien riippuvuuksien määrittely Osien rajapintojen määrittely Wikipedia: The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both. The term also refers to documentation of a system's "software architecture." Documenting software architecture facilitates communication between stakeholders, documents early decisions about high-level design, and allows reuse of design components and patterns between projects 28.9.2015 JOTU/K.Systä 32
Ohjelmistoarkkitehtuureja opetetaan erillisellä kurssilla OHJ-3200 Ohjelmistoarkkitehtuurit, periodit 3-4 2011-2012 Tavoitteet: Kurssin tavoitteena on antaa opiskelijoille yleiskuva ohjelmistoarkkitehtuureihin liittyvistä käsitteistä ja tekniikoista sekä valmiudet laadukkaiden ohjelmistojen rakentamiseen ja arviointiin. 28.9.2015 JOTU/K.Systä 33
Kehitysprosessit: erilaisia variaatioita samasta teemasta Testaus, laadunvarmistus Asiakkaan ongelma asiakasvaatimukset Määrittely ohjelmistovaatimukset, määrittely Suunnittelu tekniset vaatimukset, suunnittelu Toteutus asiakastoimitus Seuraava versio Hyväksymistestaus JOTU/K.Systä 28.9.2015 34
Työn kulku tuotekehitysprojektissa (esimerkki) kehitystiimi 1) muutettavat kompone ntit Versionhallinta Työn tasks Change alla tasks tasks olevat komponentit 2) muutetut komponentit testing OK uusi "baseline" 3) palaute Koostaminen (build) & automaattiset testit "Sopiva kooste" "release candidate" Järjestelmätestaus testing OK julkaisu (release) build manager" testaajat 35 27.4.2009 JOTU/K.Systä 35
Kehitysprosessit: erilaisia variaatioita samasta teemasta Testaus, laadunvarmistus Asiakkaan ongelma asiakasvaatimukset Määrittely ohjelmistovaatimukset, määrittely Suunnittelu tekniset vaatimukset, suunnittelu Toteutus asiakastoimitus Seuraava versio Hyväksymistestaus JOTU/K.Systä 28.9.2015 36
Testaus Testaus on virheiden etsimistä Virhe (error, mistake, bug) on poikkeama spesifikaatiosta. Johdonmukainen testaus ilman spesifikaatiota on siis mahdotonta, sillä lopputuloksen oikeellisuutta ei voida todeta. Debuggaus on puolestaan löydetyn virheen paikallistamista. Ohjelmissa arvioidaan yleensä olevan ohjelmoinnin jälkeen yksi virhe muutamaa kymmentä ohjelmariviä kohden. Jopa pitkään käytössä olleissa ohjelmissa arvioidaan yleensä olevan noin yksi virhe tuhatta ohjelmariviä kohden. On myös arvioitu, että noin 5 % ohjelmavirheistä on sellaisia, ettei niitä "koskaan" edes havaita, sillä vaikka virheellinen kohta suoritettaisiinkin 28.9.2015 JOTU/K.Systä 37
V-malli Määrittely Järjestelmätestaus Arkkitehtuurisuunnittelu Yksityiskohtainen suunnittelu Yksikkötestaus Integrointitestaus 28.9.2015 JOTU/K.Systä 38
Joitain testauksen termejä Testisuunnitelma: koska testataan, kuka testaa, mitä testataan; testitapaukset. Testipeti: ohjelmistorunko jonka avulla testejä on helppo suorittaa Testiautomaatio: testitapausten automaattinen suoritus ja tulosten vertailu Regressiotestaus: testataan vanhatkin ominaisuudet uudelleen uusien lisäämisen jälkeen. Kuormitustesti: kaatuuko systeemi kuorman alla. Luotettavuustesti: miten toipuu häiriötilanteista. Käytettävyystesti: miten loppukäyttäjä näkee järjestelmän. 28.9.2015 JOTU/K.Systä 39
Testauksen voi järjestää monella tavalla Esimerkkinä test-driven development Lisää testi OK Aja testi EI Lisää koodi Aja testi EI OK 28.9.2015 JOTU/K.Systä 40
Esimerkki oikeinkirjoituksen tarkistus Oikein ja väärin kirjoitettua OK Tarkistaako EI Lisää koodi Aja testi EI OK 28.9.2015 JOTU/K.Systä 41
Kehitysprosessit: erilaisia variaatioita samasta teemasta Testaus, laadunvarmistus Asiakkaan ongelma asiakasvaatimukset Määrittely Suunnittelu ohjelmistovaatimukset, määrittely tekniset vaatimukset, suunnittelu Toteutus asiakastoimitus Seuraava versio Hyväksymistestaus JOTU/K.Systä 28.9.2015 42
Hyväksymistestaus Saatiinko sitä mitä tilattiin? Asiakkaan rooli on suuri. 28.9.2015 JOTU/K.Systä 43
Miksi ketterä (agile)? Jatkuva näkyvyys (ei korjaa ongelmia, mutta tuo ne näkyväksi) Mahdollisuus muutoksiin Aiempi bisnesarvo Matalammat riskit 28.9.2015 JOTU/K.Systä 44
Agile -manifesti Helmikuu 2001 17 tekijää We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. 28.9.2015 JOTU/K.Systä 45
Manifesti Suomeksi Me etsimme parempia keinoja ohjelmistojen kehittämiseen tekemällä sitä itse ja auttamalla siinä muita. Tässä työssämme olemme päätyneet arvostamaan Yksilöitä ja vuorovaikutusta enemmän kuin prosesseja ja työkaluja Toimivaa sovellusta enemmän kuin kokonaisvaltaista dokumentaatiota Asiakasyhteistyötä enemmän kuin sopimusneuvotteluita Muutokseen reagoimista enemmän kuin suunnitelman noudattamista. Vaikka oikeallakin puolella on arvoa, me arvostamme vasemmalla olevia asioita enemmän. 28.9.2015 JOTU/K.Systä 46
Scrum Ketterän ja iteratiivisen kehityksen prosessikehys Jeff Sutherland, John Scumniotales, and Jeff McKenna OOPSLA 95 28.9.2015 JOTU/K.Systä 47
Scrum-roolit Siat Scrum master Product owner Tiimin jäsenet Kanat Sidosryhmät (asiakas, myyjä ) Johtajat 28.9.2015 JOTU/K.Systä 48
Done -> 100% tehty Burndown -kaavio Velocity -> paljonko tehtävää voidaan yhteen sprinttiin saada mahtumaan Kaaviosta vähennetään tehtävän tunnit, jos tehtävä 100% valmis Jos tehtävä kasvaa, lisätään kaavioon tunteja 28.9.2015 JOTU/K.Systä 49
Timeboxing Projektin osittainen kiinteän mittainen aikasiivu, jolla on omat deadlinensä, vaihetuotteensa ja resurssinsa TB1 TB2 TB3 Riskinhallintametodi Nopea palaute Jäykistää vaatimustenhallintaa 28.9.2015 JOTU/K.Systä 50
Kompromissikolmio (Iron triangle) Ominaisuudet Aika Hinta 28.9.2015 JOTU/K.Systä 51
A p o t t i 28.9.2015 JOTU/K.Systä 52
Yhteenveto Prosessi tarkoittaa Kommunikointia Koordinointia (pelisääntöjä) Ei vaiheet ja tehtävät Määrittely, suunnittelu, toteutus, testaus, Vesiputous vs. ketterä 28.9.2015 JOTU/K.Systä 53