Ohjelmistotekniikka - Luento 2 Luku 2: Prosessimallit - miten spiraalimalliin päädyttiin - spiraalimallista (R)UP malliin - oman ammattitaidon kehittäminen; PSP ja TSP mallit 1
Luento 2: Prosessimallit 2
Luku 2: Prosessimallit Prosessikehikon aktiviteetit kommunikointi projektisuuunnittelu mallintaminen rakentaminen toimitus, jakelu, käyttöön vieminen (deployment) Työkalut Menetelmät Prosessi Sitoutuminen laatuun Tasoittainen eteneminen 3
Ohjelmistoprosessien kehittyminen Leffingwell D., Agile Software Requirements, 2011 4
Prosessityypit Kommunikointi Proj. suunnittelu Mallintaminen Rakentaminen Toimitus Lineaarinen prosessi Kommunikointi Proj. suunnittelu Mallintaminen Rakentaminen Toimitus Iteratiivinen prosessi Kommunikointi Proj. suunnittelu Mallintaminen Evolutionaarinen prosessi Toimitus Rakentaminen Lisäys (inkrementti) Kommunikointi Proj. suunnittelu Rinnakkainen prosessi Mallintaminen Rakentaminen Toimitus 5
Prosessikehyksestä prosessimalleihin Ohjelmistotuotannon yleiset käytännöt How to solve it Polya 1945 Ymmärrä ongelma 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
Vesiputousmalli Käyttäjän tarpeet Vaatimusmäärittely Toiminnallinen suunnittelu - käyttöliittymän suunnittelu - käyttötapausanalyysi Ohjelmistosuunnittelu Toteutus Integrointi ja testaus Käyttöönotto ja ylläpito 7
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 8
Lisäyksin etenevä kehittäminen (inkrementaalinen) Kommunikointi Ohjelmiston toiminnallisuus ja ominaisuusdet Lisäys 1 Lisäys 2 Lisäys n Lisäyksen 1 toimitus Lisäyksen 2 toimitus Lisäyksen n toimitus Projektin suunnittelu Mallintaminen Rakentaminen Toimitus Projektin kalenteriaika 9
Nopea sovelluksen kehittäminen (RAD, Rapid Application Development) Kommunikointi Projektin suunnittelu Tiimi 1 Tiimi 2 Tiimi n Mallintaminen - liiketoiminta - tieto - prosessi Mallintaminen - liiketoiminta - tieto - prosessi Rakentaminen - komponenttien uudelleenkäyttö Mallintaminen - liiketoiminta - tieto - prosessi Rakentaminen - komponenttien uudelleenkäyttö - automaattinen koodigenerointi - testaus 60-90 päivää - automaattinen koodigenerointi - testaus Rakentaminen - komponenttien uudelleenkäyttö - automaattinen koodigenerointi - testaus Toimitus - integrointi - jakelu - palautteet 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 Asiakkaan kommentit ja muutosvaatimukset Projektisuunnittelu Vaatimusten analyysi ja projektin suunnittelu Suunnittelu - työmäärä - aikataulu - riskianalyysi Riskianalyysi Asiakkaan tekemä arviointi Asiakkaan vaatimusten määrittely Asiakkaan tekemä arviointi Asiakkaan vaatimuksiin liittyvien riskien arviointi Ensimmäisen proton suunnittelu Mallintaminen - analyysi - suunnittelu Toimittaminen - jakelu - palautteet Rakentaminen Ensimmäisen proton rakentaminen Rakentaminen - koodaus - testaus Suunnittelu Kehittynyt spiraalimalli, Boehm 1998 13
(Rational) Unified Process Inception (aloitus) tuotteen ominaisuudet alustavat käyttötapausmallit alustava projektihakemisto alustava liiketoimintacase alustavat riskit projektisuunnitelma vaiheet ja iteraatiot yksi tai useampia protoja kommunikointi suunnittelu mallintaminen rakentaminen 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 julkaisu ohjelmiston uusi osa toimitus Production (tuotanto) Transition (siirto) valmis ohjelmiston osa Beta testauksen raportit käyttäjän palautteet Construction (rakentaminen) suunnittelumalli ohjelmistokomponentit integroitu ohjelmiston uusi osa testisuunnitelmat testitapaukset tukidokumentit, ohjeet käyttöönotolle käytölle osan kuvaus 14
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
PSPmenetelmä 18
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. 19