ITK130 Ohjelmistoprosessi Ohjelmistotuotteen elinkaari Ohjelmistoprosessimalli Koodaa ja korjaa Miksi ohjelmistoprosesseja? Prosessimallin tavoitteet Prosessi ongelmaratkaisuna Prosessi, musta laatikko Prosessi, valkoinen laatikko Ohjelmistoprosessi Ohjelmistoprosessimallin määrittely Tukitoiminnot/ Sateenkaaritehtävät Luennon sisältö Ohjelmistotuotannon osatehtävät Mitä? Vaatimusten hallinta Miten? Suunnittelu, koodaus ja testaus Muutos Käyttöönotto ja ylläpito Ohjelmistoprosessimallityypit Vesiputousmallit Inkrementaaliset mallit Muita prosessimalleja Pari esimerkkiä Projekti vs. prosessi
Ohjelmointi Tuotteen hallinta Työkalut Menetelmät Laatu Projektin hallinta Toteutus Suunnittelu Vaatimukset Testaus Ylläpito Ohjelmistotekniikka Prosessi (process) Ihmiset (people) Projekti (project) Tuote (product) Ohjelmistotuotteen elinkaari Vaiheittainen ideasta tuotteeksi kehittyminen Vaatimusten keräys ja analyysi Arkkitehtuurisuunnittelu ja määrittely Koodaus ja testaus Toimitus ja käyttöönotto Ylläpito ja kehittäminen Käytöstä poistaminen
Ohjelmistoprosessimalli Ohjelmistoprosessin tavoitteet Standardointi Ennustettavuus Tuottavuus Korkealaatuinen tuote Aika- ja aikataulubudjettivaatimusten suunnittelu Organisoidaan ohjelmistotuotteen elinkaari Määrittelemällä aktiviteetit jotka liittyvät ohjelmistojen tuotantoon Aktiviteettien järjestys ja niiden väliset suhteet Ensimmäinen prosessi Kirjoita koodi Koodaa ja korjaa Korjaa koodista kaikki huomatut viat, paranna toiminnallisuuksia tai lisää uusia toiminnallisuuksia Vaikeuksia Vaikea ennustaa Vaikea hallita Sopii hyvin pieniin ohjelmistoihin
Miksi ohjelmistoprosesseja? Ohjelmistotuotannossa on aloitettu puhumaan projekteista ja prosesseista samoihin aikoihin kuin ohjelmistotuotannosta ja sen kriisistä 1968 Kriisi: Ongelmia ohjelmistojen tuotannossa aikataulut eivät pitäneet kustannukset nousivat laajojen ohjelmistojen tuottaminen vaikeaa ohjelmistojen laatu oli huono mallia insinööritieteistä projektimuotoinen ohjelmistokehitys Ohjelmistojen koko ja ekonominen tärkeys vaativat prosesseja Prosessimallin tavoitteet (B. Boehm 1988) "determine the order of stages involved in software development and evolution, and to establish the transition criteria for progressing from one stage to the next. These include completion criteria for the current stage plus choice criteria and entrance criteria for the next stage. Thus a process model addresses the following software project questions: What shall we do next? How long shall we continue to do it?"
Prosessi ongelmaratkaisuna Ongelman määritys Vallitseva tila Tekninen kehittämien Ratkaisun integrointi Prosessi, musta laatikko Informal Requirements Process Product Ongelmia Oletetaan, että vaatimukset ymmärretään täysin ennen kehitystä tuskin koskaan pitää paikkansa! Keskustelut asiakkaan kanssa tapahtuvat vain alussa (vaatimukset) ja lopussa (tuotteen jakelun jälkeen)
Prosessi, valkoinen laatikko Inform al Requirements Process Product feedback Etuja Riskit vähenee kun näkyvyys lisääntyy Sallii projektin muutokset projektin edistyessä Perustuu asiakkaan palautteeseen Ohjelmistoprosessi Prosessi määrittelee yleisesti Kuka tekee Mitä tekee Koska tekee Kuinka saavuttaa tavoitteet Ohjelmistotuotantoprosessi Ohjelmiston rakentamisen vaiheet ja niiden tulokset Ohjelmiston elinkaaren määrittely Yleisrakenne sille miten ohjelmisto tuotetaan Pääaktiviteettien suorittamiseen ei prosessi vaikuta vain niiden väliseen kytkentään
Ohjelmistoprosessimallin määrittely Sisältää ohjelmistotuotantoprosessin keskeiset osa-alueet Kuvaa osaprosessien suoritusjärjestyksen Määrittelee osavaiheiden keskinäiset vaikutussuhteet Ei konkreettisia yksityiskohtaisia toimintasääntöjä vaan pelkkä yleisrakenne Määrittelee osavaiheiden keskinäisiin rajapintoihin liittyvät toimenpiteet kuten dokumentointi, tarkastukset yms. Jokaisen vaiheen alku ja loppu on selvästi havaittavissa Prosessiin liittyy kaikille osavaiheille yhteisiä tukitoimenpiteitä Malli on yleinen -> sovellettavissa kaikkialle, mutta mukautettava organisaation tarpeisiin Tukitoiminnot / sateenvarjotehtävät dokumentointi laadunvarmistus tuotteen hallinta projektinhallinta formaalit tekniset tarkastukset konfiguraation hallinta- kokoonpanon hallinta uudelleenkäytön hallinta mittaaminen riskien hallinta
Ohjelmistotuotannon osatehtävät Esitutkimus Vaatimusten määrittely MITÄ? Suunnittelu Ohjelmointi Testaus MITEN? Käyttö ja Ylläpito MUUTOS MITÄ? - Vaatimusten hallinta Koostuu Löytäminen Ymmärtäminen Analysointi Määrittely Etsitään Mitä vaatimuksia tarvitaan ei miten ne saavutetaan Keskittyy Ymmärtämään sovelluksen ja ulkoisen maailman välisen rajapinnan Ymmärtää sovellusalueen Tunnistaa pääasialliset osakkaat ja ymmärtää odotukset Erilaisilla osakkailla on eri näkemykset Ohjelmistosuunnittelijan täytyy integroida ja sovittaa ne yhteen
Esimerkki1 rautateiden automatisointi Ketä asia koskee Junayhtiön hallintoa Junankuljettajia ja heidän liittoaan Matkustajia (asiakkaat) Alihankkijat Vaatimuksia ovat esimerkiksi Turvallisuusvaatimukset Onnettomuuksien todennäköisyys tulisi olla vähemmän kuin 10-9 vuodessa Hyödyllisyys Järjestelmän hyödyllisyyden asti kuten useat asianomistajat ovat ilmaisseet MITEN? Suunnittelu, koodaus, testaus Ohjelmistoarkkitehtuuri ja ohjelmistosuunnittelu Tuloksena suunnitteludokumentti Usein määritelty yrityksen standardissa Noudattaa esim. UML Koodaus ja moduulitestaus tietty koodaustyyli voi olla määritelty Integrointi ja järjestelmätestaus voidaan integroida inkrementaalisesti viimeisenä järjestelmätestaus (jonka jälkeen voi olla alfatestaus)
MUUTOS - Käyttöönotto, ylläpito Käyttöönotto Beetatestaus voi edeltää Ohjelmisto oikeaan ympäristöön Ylläpito Korjaava Mukauttava Parantava Prosessimallityypit 1/2 Rakentava peräkkäisiä työvaiheita, jokaisen jälkeen syntyy jokin vaihetuote määrittely-suunnittelu- toteutus seuraava vaihetta ei voi aloittaa ennen edellisen päättymistä Kasvattava (inkrementaalinen) tehdään ensin toimiva ydinjärjestelmä, jota kasvatetaan useassa iteraatiossa kunnes saavutetaan riittävä järjestelmä
Prosessimallityypit 2/2 Kehittävä (iteratiivinen) tehdään ensin koko järjestelmä vajavaisin toiminnoin järjestelmää kehitetään useissa iteraatioissa paremmaksi Kokoava järjestelmä kootaan uudelleenkäytettävistä osista tarvitaan myös komponenttiprosessi, uudelleenkäyttöprosessi Vesiputousmalli Vesiputousmallit Vesiputousmalli, jossa on osaprojekteja Vesiputousmalli, jossa vaiheet osittain menevät päällekkäin Vesiputousmalli, jossa riskiä on vähennetty
Vesiputousmalli "! Feasibility study Requirements Design Coding and module testing Integration and system testing Delivery, deployment, and maintenance
Vesiputousmalli, jossa on käytetty osaprojekteja Detailed design Programming Subsytem Testing! Design Code Tested subsystem Detailed design!## $ Programming Subsytem Testing Design Code Tested subsystem! Detailed design Programming Subsytem Testing %&' # Design Code Tested subsystem ()*! Vesiputousmalli, jossa vaiheet osittain päällekkäisiä (a.k.a. "sashimi" model) ()* $ ()* ' ()*! $ + %&' # #, -.#$" "!#&/0
(1* (1* Vesiputousmalli, jossa riskiä vähennetty ()* ()* ()* 1234 )2/+ 52 521!## 52)+# + 222 627 #, -.#$" "!#&/0 Inkrementaaliset mallit Spiraalimalli Evolutiivinen protoilu Vaiheittainen toimitus, inkrementaalinen toteutus Aikataulu suunnittelu (Design-to-schedule) Evolutiivinen toimitus (Evolutionary delivery) Käyttötapa ohjautuva inkrementaalinen kehitys
Spiraali malli Evolutiivinen protoilu ' +# #%# $ ' # %&' # 3%8 %2
Vaiheittainen toteutus eli inkrementaalinen toteutus,$ # -!" $ # - #,$ # -! $,$ # - # Aikataulusuunnittelu &%,$ # - &%!" $ # - ) ' % #,$ # -! %% (% $,$ # - #
Evolutiivinen toimitus $ ' ' 342!!## $ 34 3% 9%# $% % 3 9 :%.#; 7' #125 712< 121 12) 125 Käyttötapaohjattu inkrementaalinen tuotekehitys /+,@15 =)&= =)&= =)&= =)&= 9<21 >?/+, @)6A =)&= =)&= =)&= =)&= 9<2A B /+,@C"1< =)&= =)&= =)&= =)&= 912<
Muita prosessimalleja Komponenttiprosessimalli Rinnakkaisen kehitystyön malli Formaalit menetelmien malli Ketterät/ kevyet mallit Cleanroom menetelmä malli Prosessimallin valinta Vaikuttavia tekijöitä organisaation kypsyys teknologiaympäristö tuotteen tyyppi asiakkaan kanssa tehtävän sopimuksen tyyli projektiryhmän taidot tuotteen arvioitu elinaika aikataulu laatuvaatimukset projektin luonne sovelluksen luonne tarvittava kontrolli
Suunnitteluvaihe Esimerkki 2 Tahdista ja vakauta (Mikrosoftin ohjelmistoprosessi) Visio/mielikuva tuotteesta, määrittely, aikataulu Kehitysvaihe Kehitystiimi koostuu kahdesta ryhmästä Kehittäjät ja testaajat (jatkuva testaus) Prosessi määrää Päivittäisen synkronoinnin/tahdistamisen Tuotteen vakauttamisen Esimerkki 3 Avoin lähdekoodikehitys Säännöstelee ohjelmistojen lisenssejä, määrittelee oikeudet ohjelmiston käyttöön, kopiointiin, muuttamiseen ja jakeluun Liikeala ei saa tuottoaan myymällä ohjelmistoja, vaan pikemminkin muista, epäsuorista kohteista (palvelut, lisävarusteista, ilmoituksista, jne.) Prosessi Hyvin laajalle levinnyt ohjelmistokehitysprosessi, jota kuvaa lukuisat iteraatiot Lähdekoodi on laajalti käytettävissä Laaja kehittäjien joukko Mahdollistava teknologia Internet Talletuspaikat, joissa toimii version hallinta ja kokoonpanojen hallinta
Ohjelmistoprojekti Projekti = prosessin instanssi Projekti on määritelty ja ajallisesti sidottu tehtävä, jolla on tietty päämäärä. Lisäksi projektilla on merkitys elinkaari riippuvuuksia projekti on yksilöllinen rajallinen määrä resursseja
Luentotehtävä Millaisen prosessimallin valitsisit seuraavissa tapauksissa? Perustele valintasi kussakin tapauksessa. 1. Stabiilit vaatimukset, pieni projekti, kohde tunnetaan (ei epävarmuutta). 2. Epävarmoja asiakasvaatimuksia, helposti mallinnettava tuotteen toiminta. 3. Pitkän elinkaaren omaava tuote, jonka tuotejakelu tehdään vaiheittain.