Ohjelmistotekniikka - Luento 2 Jouni Lappalainen Luku 2: Prosessimallit - miten spiraalimalliin päädyttiin - spiraalimallista (R)UP malliin - oman ammattitaidon kehittäminen; PSP ja TSP mallit 1
Luento 2: Prosessimallit Jouni Lappalainen 3
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) 4
Ohjelmistoprosessien kehittyminen Leffingwell D., Agile Software Requirements, 2011 5
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 6
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) 7
Käyttäjän tarpeet Vesiputousmalli Vaatimusmäärittely Toiminnallinen suunnittelu - käyttöliittymän suunnittelu - käyttötapausanalyysi Ohjelmistosuunnittelu Toteutus Integrointi ja testaus Käyttöönotto ja ylläpito 8
V-malli Käyttäjän tarpeet Ohjelmisto käytössä Vaatimusmäärittely Toiminnallinen suunnittelu - käyttöliittymän suunnittelu - käyttötapaus-analyysi Toiminnallinen testaus Koodaus Ohjelmistosuunnittelu Integrointitestaus Järjestelmätestaus Hyväksymistestaus Yksikkötestaus 9
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 10
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ää 11
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) 12
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 13
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 14
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 15
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 16
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 17
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ä. 18
PSPmenetelmä 19
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. http://jounilappalainen.fi/ohjelmistotekniikka 20