Ohjelmiston elinkaarimallit RASE 2.5.2006
Ohjelmiston elinkaari Aika, joka kuluu ohjelmiston kehittämisen aloittamisesta käytöstä poistumiseen Vaihejakomalleilla kuvataan ohjelmiston elinkaaren eri vaiheita malleista löytyy yleensä ainakin määrittely-, suunnittelu- ja toteutusvaiheet Yleisin malli on vesiputousmalli
Ohjelmiston elinkaari mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot Esitutkimus millainen järjestelmä täyttää ongelman vaatimukset Määrittely Suunnittelu miten järjestelmä toteutetaan ja ositetaan Toteutus osien ohjelmointi Integrointi ja testaus osien yhtyeenliittäminen ja testaaminen Käyttöönotto ja ylläpito
Ohjelmiston elinkaari Kaikkiin vaiheisiin liittyy tarkastuksia, katselmointeja ja testausta laadunvarmistus Tarkastuksilla ja testaamisella pyritään virheet kitkemään mahdollisimman aikaisessa vaiheessa Katselmoinnit järjestetään yleensä tietyn vaiheen lopuksi projektin tilanteen läpikäynti ja todennetaan, että kaikki tietyn vaiheen tavoitteet on saavutettu ja dokumentit ovat kunnossa
Ohjelmiston elinkaari Esitutkimuksen tavoitteena on asettaa yleiset vaatimukset järjestelmälle määrittävät yleensä asiakkaan tarpeet, asiakasvaatimukset eivät ota kantaa millainen järjestelmän tulee olla Esitutkimus antaa vastauksen kysymykseen, miksi järjestelmä tai ohjelmisto tulisi tehdä tai miksi se pitäisi jättää tekemättä Hyvän järjestelmän ehdoton edellytys on, että oikeat asiakasvaatimukset on saatu selville suuri haaste on selvittää asiakkaan todelliset tarpeet ja ymmärtää ne perusteellisesti Esitutkimus mielletään myös osaksi määrittelyä tarpeiden analysointi ja tarkentuminen jatkuu läpi koko määrittelyvaiheen
Ohjelmiston elinkaari Esitutkimus: asiakasvaatimukset Järjestelmäsuunnittelu: järjestelmävaatimukset Ohjelmiston määrittely: ohjelmistovaatimukset Laitteiston määrittely: laitteistovaatimukset
Ohjelmiston elinkaari Määrittelyvaiheessa asiakasvaatimuksista johdetaan ohjelmistovaatimukset ohjelmistovaatimukset määrittelevät toteutettavan järjestelmän Määrittelyvaiheessa tuotetaan dokumentti, jossa kuvataan ohjelmiston toiminnot, toteutuksen ei-toiminnalliset vaatimukset ja rajoitukset toiminnallinen määrittely
Ohjelmiston elinkaari Ohjelmiston toiminnoissa määritellään toteutettavat ominaisuudet käyttöliittymä liitynnät muihin järjestelmiin Ei-toiminnallisia vaatimuksia ovat vasteajat käytettävyys suoritusteho
Ohjelmiston elinkaari Rajoituksissa voidaan kuvata käytössä oleva muistin määrä tietty ohjelmointiympäristö tietty käyttöjärjestelmä Seuraavassa kuvassa on esitetty määrittelyprosessi
Ohjelmiston elinkaari määrittelyprosessi ideat, lähtökohdat rajoitteet, reunaehdot ongelman ymmärtäminen, vaatimusten kartoitus toteutettavan järjestelmän spesifiointi korjattavaa toiminnallinen määrittely, alustava käyttöohje, toteutusprojektin projektisuunnitelma, testaussuunnitelma tarkastus ok arkkitehtuurisuunnittelu
Ohjelmiston elinkaari IEEE830, toiminnallinen määrittely 1. Johdanto 1.1 Tarkoitus - kenelle tarkoitettu 1.2 Tuote - kenelle tehty - järjestelmän tavoitteet 1.3 Määritelmät, termit ja lyhenteet - Määritelmät, termit ja lyhenteet esitellään tässä kohtaa 1.4 Viitteet, muut tähän liittyvät dokumentit - mitä muita asiaan liittyviä dokumentteja on olemassa 1.5 Yleiskatsaus dokumenttiin - kuvataan dokumentin rakenne (lukijalle selviää, mutta kohdat dokumentista hänelle hyödyllisiä) 2. Yleiskuvaus 2.1 Ympäristö - järjestelmän liittymät ympäristöön ja myös itse ympäristö 2.2 Toiminta - yleiskuvaus järjestelmän toiminnoista 2.3 Käyttäjät - järjestelmän käyttäjät ja käyttöympäristö (jos ei kuvattu edellisissä kohdissa) 2.4 Yleiset rajoitteet - lainsäädäntöön liittyvät - toteutustyökaluihin liittyvät 2.5 Oletukset ja riippuvuudet - ne oletukset, joiden voimassa ollessa määrittely on voimassa (muiden projektien tuotokset, laitteistojen teho ja muisti…) 3. Tiedot ja tietokanta - tietosisällöt, tiedon pysyvyysvaatimukset, kapasiteetti- ja saantiaikavaatimukset järjestelmän käsittelemistä tiedoista ja tietokannoista
Ohjelmiston elinkaari 4. Toiminnot 4.n Toiminnon kuvaus - jokaisesta järjestelmän toiminnosta kuvataan tarkoitus, mitä tarvitaan syötteinä, miten käsittely tapahtuu ja mitkä ovat vaikutukset (tulosteet) 5. Ulkoiset liittymät 5.1 Käyttöliittymä - käyttöliittymä voidaan esitellä jo tässä vaiheessa tarkalla tasolla. Jos se esitetään yleisellä tasolla, niin tarkentaminen tehdään suunnittelu- vaiheessa 5.2 Laitteistoliittymät - liittymät oheislaitteisiin 5.3 Ohjelmistoliittymät - liittymät muihin ohjelmistoihin 5.4 Tietoliikenneliitynnät - tietoliikenneyhteydet 6. Muut ominaisuudet 6.1 Suorituskyky 6.2 Käytettävyys, toipuminen, turvallisuus ja suojaukset 6.3 Ylläpidettävyys 6.4 Siirrettävyys, yhteensopivuus 7. Suunnittelurajoitteet 7.1 Standardit 7.2 Laitteistorajoitteet 7.3 Ohjelmistorajoitteet 7.4 Muut rajoitteet
Ohjelmiston elinkaari Suunnitteluvaiheessa toimintojen toteutus suunnitellaan määrittely muutetaan tekniselle kielelle eli järjestelmän toteutuksen kuvaukseksi Suunnitteluvaihe jaetaan yleensä kahteen osaan arkkitehtuurisuunnittelu moduulisuunnittelu
Ohjelmiston elinkaari Arkkitehtuurisuunnittelussa järjestelmä jaetaan moduuleihin, jotka ovat mahdollisimman riippumattomia toisistaan osien työnjako ja rajapinnat tavoitteena toisistaan riippumattomat moduulit, jolloin yhden moduulin muutokset eivät vaikuta muihin moduuleihin uudelleenkäytettävyyteen pyrittävä tekninen määrittely
Ohjelmiston elinkaari Suunnittelun yleisiä tavoitteita ovat selkeys ymmärrettävyys tehokkuus luotettavuus ylläpidettävyys siirrettävyys
Ohjelmiston elinkaari Määrittelyvaiheessa kerrotaan mitä järjestelmä tekee ja suunnitteluvaiheessa kerrotaan kuinka se tehdään Seuraavassa kuvassa esitetään suunnitteluprosessi
Ohjelmiston elinkaari uudelleen käytettävät komponentit määrittely toiminnallinen määrittely arkkitehtuuri- suunnittelu tekninen määrittely korjattavaa moduuli- suunnitelmat moduulisuunnittelu, toteutussuunnittelu tarkastus korjattavaa tarkastus ohjelmointi koodi tarkastukseen, testaukseen
Ohjelmiston elinkaari IEEE1016, tekninen määrittely 1. Johdanto 1.1 Tarkoitus 1.2 Dokumentin kattavuus 1.3 Määritelmät, termit ja lyhenteet 1.4 Viitteet, muut tähän liittyvät dokumentit, standardeihin 1.5 Yleiskatsaus dokumenttiin 2. Järjestelmän yleiskuvaus Sovellusalueen kuvaus, järjestelmän osuus siinä, laitteisto- ja ohjelmistoympäristön kuvaus, toteutuksen keskeiset reunaehdot ja järjestelmän liittyminen ympäristöönsä 3. Arkkitehtuurin kuvaus 3.1 Ratkaisuperiaatteet 3.2 Tietokanta-arkkitehtuuri 3.3 Ohjelmistoarkkitehtuuri moduulit ja prosessit 3.4 Uudelleenkäytettävät komponentit 4. Moduuli (ja prosessi) kuvaukset 4.n Kustakin moduulista yleiskuvaus, attribuutit (ylläpidettävät tilatiedot), operaatiot (rajapinnat), poikkeus- ja virhetilanteiden käsittely, mahdolliset ohjeet moduulisuunnittelua ja toteutusta varten Muita mahdollisia kohteita: Ylläpito-ohjeet, siirrettävyys, luotettavuus, erityiset tekniset ratkaisut, hylätyt vaihtoehdot (ja miksi ne hylättiin), käyttöliittymä, rajoitteet, testattavuus
Ohjelmiston elinkaari Ohjelmointivaiheessa ohjelma ”kirjoitetaan” Yleensä ohjelmoija myös yksikkötestaa oman ”tekeleensä” ennen varsinaista testaus-vaihetta Joskus erehdytään kuvittelemaan, että ohjelmistotekniikka sisältää vain ohjelmoinnin
Ohjelmiston elinkaari Testauksen tavoite on yksinkertaisesti löytää ohjelmistosta virheitä Testaus suoritetaan yleensä monella tasolla alkaen ohjelmointivaiheen yksikkötestauksella ja päättyen järjestelmätestaukseen V-malli
Ohjelmiston elinkaari Testauksen v-malli Määrittely Järjestelmä- testaus testauksen suunnittelu ja tulosten verifiointi Arkkitehtuuri- suunnittelu Integrointi- testaus Moduuli- suunnittelu Moduuli- testaus Ohjelmointi
Ohjelmiston elinkaari Moduulitestauksessa virheitä etsitään yksittäisistä moduuleista testaus suunnitellaan moduulisuunnittelun yhteydessä Integrointitestauksessa virheitä etsitään moduulien yhteistoiminnasta testaus suunnitellaan arkkitehtuurisuunnittelun yhteydessä Järjestelmätestauksessa virheitä etsitään koko järjestelmän toiminnoista ja suorituskyvystä testaus suunnitellaan määrittelyvaiheessa
Ohjelmiston elinkaari Mitä aikaisemmassa vaiheessa virheet löydetään, sitä halvemmaksi niiden korjaaminen tulee Testaaminen vaatii erityistä tarkkuutta sen suorittajalta. Yksikään virhe ei saa lipsahtaa läpi huomaamatta testaus voi olla erittäin yksitoikkoista ja ikävää ja samankaltaisia testitapauksia voi olla paljon
Ohjelmiston elinkaari Käyttöönotto- ja ylläpitovaiheessa käyttäjät koulutetaan järjestelmä otetaan tuotantokäyttöön ratkotaan asiakkaiden ongelmia korjataan virheitä muutetaan ohjelmaa vaatimusten muuttuessa lisätään uusia ominaisuuksia ohjelmaan
Ohjelmiston elinkaari Hyvä muistaa, että käytännössä ohjelmistokehitys ei etene orjallisesti vesiputousmallin mukaisesti osa vaatimuksista selviää vasta projektin edetessä vaatimukset muuttuvat projektin aikana Pyrittävä kuitenkin toimimaan mallin mukaisesti mahdollisuuksien mukaan
Ohjelmiston elinkaari Muita elinkaarimalleja ovat mm Evo-malli ja protoilumallit Evo-mallissa pyritään ensimmäisessä vaiheessa rakentamaan perusjärjestelmä, jota myöhemmissä vaiheissa kehitetään jokainen vaihe on vesiputousmallin mukainen Evo-mallia voidaan käyttää tuotekehitysprojekteissa, joiden tarkoituksena on julkistaa esimerkiksi vuosittain uusi versio tuotteesta Yhdessä projektissa, jossa versioita tehdään n kappaletta ennen lopullista järjestelmää. Ominaisuuksia lisätään kierros kierrokselta
Ohjelmiston elinkaari Määrittely Määrittely Määrittely Suunnittelu Suunnittelu Suunnittelu Toteutus Toteutus Toteutus Testaus Testaus Testaus Versio 1 Versio 2 Versio 3
Ohjelmiston elinkaari Evo-mallia sovellettaessa ongelmaksi saattaa muodostua julkaistun version virheiden korjaus ja asiakkaiden ongelmien ratkominen kaikki projektilaiset ovat kiinni näissä tehtävissä ja seuraavaa versiota ei päästä kehittämään Versioiden (inkrementtien) ominaisuudet tulee myös suunnitella järkevästi, ettei uusia ominaisuuksia lisätä liikaa tai liian vähän seuraavaan versioon
Ohjelmiston elinkaari Protoilulla tarkoitetaan sitä, että tehdään jonkinlainen kokeilumalli ennen kuin varsinaista järjestelmää aletaan kehittämään Protoilulla voidaan selvittää epäselviä asiakasvaatimuksia Uudet tekniset ratkaisut voidaan testata prototyypeillä ennen kuin päätetään ratkaisun käyttöönotosta
Ohjelmiston elinkaari Käyttöliittymien suunnittelu on järkevää tehdä protoilemalla lopullisten käyttäjien hyväksyntä erittäin tärkeä Suorituskyky voidaan etukäteen varmistaa erityisillä suorituskykyprototyypeillä
Ohjelmiston elinkaari Kun prototyyppi on kehitetty, niin sen jälkeen on useita vaihtoehtoja jatkolle ajateltu järjestelmä ei tuo asiakkaalle lisäarvoa ja projekti ”ammutaan alas” tai aloitetaan protoilu alusta hieman eri perspektiivistä määritellään järjestelmä, jota aletaan kehittämään alusta alkaen uudestaan jatketaan prototyypin kehittelyä oikeaksi järjestelmäksi kahden viimeksi mainitun tapauksen välimuodot ovat yleisiä
Ohjelmiston elinkaari Proto-projekti Varsinainen tuoteprojekti Määrittely Määrittely Suunnittelu Suunnittelu Toteutus Toteutus Testaus Testaus Prototyyppi Järjestelmä
Ohjelmiston elinkaari Esitutkimusraportti Esikartoitus Määrittely Määrittely Projektisuunnitelma Arkkitehtuurisuunnittelu Ohjelmistoarkkitehtuuri Prototyyppi Tarkastus Järjestelmädokumentit Testitapaukset Asennettavan järjestelmän teko Käyttöohjeet Testaus Muutosten määrittely Toimitus ja hyväksymistestaus Testitulokset Käyttöönotto Ylläpito
Ohjelmiston elinkaari Protoilun ongelmana on, että asiakas saattaa luulla järjestelmän olevan jo suurimmalta osin valmis todellisuudessa ”demo-polut” ovat yleensä kapeita ja käyttäjien toimenpiteisiin vastataan esimerkiksi kovakoodatuilla viesteillä Aina ei kannata protosta tehdä valmiin näköistä asiakkaalle selviää ohjelmiston tarkoitus, mutta myös se, että työt ovat alkutekijöissään Mitä ongelmia saattaa koitua edellisen kuvan protoilumallista?