370 likes | 778 Vues
2. Ohjelmistotuotannon osa-alueet. Ohjelmistotuotannon osa-alueet. Laatujärjestelmä ohjaa yrityksen tuotanto Yrityksen henkilöstö on yleensä organisoitu linjaorganisaatioksi, projektien toteutus projektiorganisaatiossa
E N D
2. Ohjelmistotuotannon osa-alueet 2. Ohjelmistotuotannon osa-alueet
Ohjelmistotuotannon osa-alueet • Laatujärjestelmä ohjaa yrityksen tuotanto • Yrityksen henkilöstö on yleensä organisoitu linjaorganisaatioksi, projektien toteutus projektiorganisaatiossa • Tietojärjestelmäprojekti sisältää kehitysprosessin, jossa on ainakin seuraavat vaiheet • Määrittely • Suunnittelu • Ohjelmointi • Testaus • Käyttöönotto, ylläpito • Projektinhallinnan tukitoiminnat • Tuotteenhallinta • Laadunvarmistus • Dokumentointi • Vaatimustenhallinta, riskienhallinta 2. Ohjelmistotuotannon osa-alueet
2.1 Ohjelmiston elinkaari • Ohjelmiston elinkaarella (life cycle) tarkoitetaan aikaa, joka kuluu ohjelmiston kehittämisen aloittamisesta sen poistamiseen käytöstä. • Vaihejakomalli kertoo miten ohjelmiston kehitystyö tai koko elinkaari jaetaan vaiheisiin ja miten vaiheet sijoittuu toisiinsa nähden • Tavallisin vaihejakomalli on vesiputousmalli • malli! • valittava kehittämishankkeen mukaan • perusmalleja ovat mm. • vesiputousmalli • prototyyppimalli • spiraalimalli • Unified Process 2. Ohjelmistotuotannon osa-alueet
Vesiputousmalli • vanhin systeemityön etenemisen malli, vesiputousmalli (waterfall model) 1960-luvun lopulta • peräkkäinen, eteenpäin kulkeva prosessi • Mallista on olemassa useita eri muunnelmia, mutta yleensä mallista erotetaan seuraavan kuvan mukaiset vaiheet • Kaikkiin vaiheisiin liittyy laadunvarmistustoimenpiteitä (tarkastuksia, katselmuksia, testausta) • ongelmia • peräkkäisyys ei ole kehittämishankkeissa yleensä näin suoraviivaista • vaiheen suoritus paljastaa edellisen vaiheen ongelmia -> korjauksia • tarkistuspisteet kiinteitä vaiheiden päätöksiä • varsinaiset tulokset syntyvät myöhään prosessin aloittamisesta • kuitenkin yleisimmin käytetty ja sovellettu prosessimalli 2. Ohjelmistotuotannon osa-alueet
Esitutkimus Tarkistus Vaatimukset Tarkistus Määrittely Tarkistus Suunnittelu Tarkistus Toteutus Testaus Käyttöönotto ja Ylläpito Tarkistus Integrointi Testaus Vesiputousmalli 2. Ohjelmistotuotannon osa-alueet
Mistä kehittämisprosessi alkaa? • tarve kehittää uutta tai ylläpitää vanhaa • asiakkaan tarpeet, tekninen kehitys, muut kehittämishankkeet, … • Strategiatyö: tietohallintostrategian uudistaminen • koko organisaation tietojenkäsittelyn kehittäminen • selvitys organisaation tietojärjestelmien tilasta ja niiden kehitystarpeista • perusta pitkän tähtäimen organisaation tietotekniikkaa ja tietojenkäsittelyä koskeville päätöksille sekä tietojärjestelmien ja muiden tietojenkäsittelyn kehittämishankkeiden priorisoinnille ks. http://www.titu.jyu.fi/julkaisut/julk09/index2.htm 2. Ohjelmistotuotannon osa-alueet
Esitutkimus • Esitutkimus (feasibility study, initial business study) • edellytykset hankkeen toteuttamiselle • onko rakentaminen mahdollista ja mielekästä? • miksi järjestelmä tulisi rakentaa? • mitkä ovat pääasialliset tavoitteet? • sidosryhmät, jotka liittyvät järjestelmään? • ratkaisuvaihtoehdot? • riskit? • hinta-arvio? • muut resurssit? • Syntyy päätös, jatketaanko hanketta vai ei. 2. Ohjelmistotuotannon osa-alueet
Vaatimusmäärittely (requirements analysis) • Yleiset järjestelmätason vaatimukset eli asiakasvaatimukset (customer requirements, business requirements) • Varastonvalvontasovelluksen kiertonopeuden kasvatus 10%:lla • Määrittävät mitä asiakas tarvitsee, muttei ota vielä kantaan, millainen järjestelmä tarvitaan • Kerätään toiminnallisia vaatimuksia, ei-toiminnallisia vaatimuksia ja rajoitteita • Mitattavuus • Vääristä asiakasvaatimuksista ei voi päätyä hyvään tietojärjestelmään!! • Asiakastarpeiden määritys on tosin vaikeaa • Erilaisia käyttäjiä • Erilaisia tehtäviä, joihin järjestelmää käytetään • Käyttäjillä erilainen it-osaamistausta vaatimusmäärittely 2. Ohjelmistotuotannon osa-alueet
Määrittely • (Järjestelmä)analyysi eli määrittely (system analysis, requirement analysis) määrittelee järjestelmän sisältämät toiminnot (MITÄ järjestelmä tekee) • vaatimuksista johdetaan järjestelmän toiminnot • käytännössä tarkennetaan ja formuloidaan vaatimusmäärittelyn tulokset, ”kootaan” toiminnot • näkökulma siirtyy käyttäjästä toteuttajaan • kuvataan toiminnot yksityiskohtaisesti • mitä toiminnossa tapahtuu (käyttäjän näkökulmasta) • missä järjestyksessä asioita tehdään • mitkä ovat järjestelmän tehtäviä, mitkä käyttäjän • toimintojen väliset yhteydet • määritellään ja tarkennetaan rajoitukset • tarkistetaan ja tarkennetaan riskiluettelo • tietokannan alustava kuvaus • tiedot, joita järjestelmässä tallennetaan Toiminnallinen määrittely 2. Ohjelmistotuotannon osa-alueet
Termien sekamelskaa… • Vaatimus, asiakasvaatimus, toiminnallinen vaatimus, ei-toiminnallinen vaatimus, ohjelmistovaatimus, ominaisuus, ohjelmiston toiminto • Ei vakiintuneita termejä 2. Ohjelmistotuotannon osa-alueet
Suunnittelu Design) • Määrittelyvaiheessa kuvatut toiminnot suunnitellaan (MITEN järjestelmä toiminnon tekee) • arkkitehtuurisuunnittelu (architectural design) • järjestelmän yleinen rakenne, moduulit • esim. • aliohjelmat, komponentit, oliot • keskittyy kuvaamaan rakenneosien kokonaisuutta • moduulisuunnittelu (module design) • jokaisen rakenneosan yksityiskohtainen kuvaus • kuvataan • rakenneosan tehtävä • rajapinta (input, output) • rakenneosan toiminta, miten moduuli tehtävänsä hoitaa Tekninen määrittely 2. Ohjelmistotuotannon osa-alueet
Toteutus (implementation, programming) • toteutusvälinen valinta • sovellusalue • käytetyt menetelmät ja ohjelmistotuotannon mallit • tehokkuusvaatimukset • toteutus- ja käyttöympäristö • onnistumiseen vaikuttaa • vastaavuus vaatimuksiin • toiminnallisen ja teknisen määrittelyn noudattaminen (ja niiden oikeellisuus!) • siirrettävyys • ylläpidettävyys • ohjelmointityyli • dokumentti • ohjelmakoodi • kommentointi erittäin tärkeää! Ohjelmakoodi 2. Ohjelmistotuotannon osa-alueet
Testaus (testing) • testauksen tarkoituksena löytää ohjelmistosta virheitä • testaus • testauksen suunnittelu (testisuunnitelmat, testitapaukset) • testiympäristön luonti • testin suorittaminen • tulosten tarkastelu • testaus + löytyneiden virheiden korjaus > 50% resursseista • V-malli esittää eri testaustasot • Moduulitestaus • Integrointitestaus, • Järjestelmätestaus • Testi voi olla lisäksi • hyväksymistestaus • käytettävyystestaus • alfa- tai betatestaus 2. Ohjelmistotuotannon osa-alueet
Testauksen V-malli Vaatimus-määrittely ja määrittely Järjestelmä-testaus Arkkitehtuurisuunnittelu Integrointi-testaus Moduuli-suunnittelu Moduuli-testaus Toteutus 2. Ohjelmistotuotannon osa-alueet
Testaus • Moduulitestaus • testattavana on yksittäinen moduuli • moduulin toimintaa verrataan moduulisuunnittelun ja arkkitehtuurisuunnittelun dokumentteihin • testauksen suorittaa moduulin toteuttaja • testipeti (test bed) • testiajurit (test driver) • simuloi kutsuvaa ohjelmaa • tynkämodulit (test stubs) • simuloi aliohjelmia • Integrointitestaus • testataan moduulien välisten rajapintojen toimivuutta • yhdistetään moduulit osajärjestelmiksi • testauksen tuloksia verrataan suunnitteludokumentteihin 2. Ohjelmistotuotannon osa-alueet
Testaus • Järjestelmätestaus • testauksen tuloksia verrataan määrittelyvaiheen dokumentteihin • Järjestelmätestaukseen voi liittyä • kenttätestaus • hyväksymistestaus • Testaaja muu kuin kehittäjä • Testataan myös ei-toiminnallisia ominaisuuksia: • kuormitustesti, luotettavuustesti, käytettävyystesti, jne. • Jos virhe löytyy järjestelmätestissä, se on moninkertaisesti kalliimpaa korjata, kuin jos se olisi löytynyt jo moduulitestivaiheessa! 2. Ohjelmistotuotannon osa-alueet
Käyttöönotto (Installation) • olemassa olevien tietojen, tiedostojen ja tietokantojen siirtäminen uuteen järjestelmään • aikaisempien järjestelmien rinnakkaisuus • koulutus ja käyttöohjeet • uudet työtavat, tietojärjestelmät, … • muutokset fyysisessä ja teknisessä ympäristössä (uusia koneita, laitteita tai ohjelmistoja) 2. Ohjelmistotuotannon osa-alueet
Ylläpito (Maintenance) • Ylläpito on • pisin yksittäinen vaihe • tuotantokäytössä olevan järjestelmän toimintakunnosta huolehtiminen • virheiden korjausta • jatkokehitystä • muut muutostoimenpiteet • ylläpito voi olla • korjaavaa • sopeuttavaa • täydentävää tai • ennakoivaa ylläpitoa • vaikeutena • puutteellinen dokumentaatio • konfiguraation hallinta • yhteiset arkkitehtuurit (tai pikemminkin niiden puute) 2. Ohjelmistotuotannon osa-alueet
!Huomattavaa! • Edellä esitetty vaihejako • kuvaa elinkaaren aikaisia tehtäviä ERÄÄLLÄ tavalla ryhmiteltynä • ei ota kantaa päällekkäisyyksiin • ei huomio poikkeustapauksia • vaiheiden tehtävät voivat olla osittain limittäisiä; vaiheita voidaan yhdistää, …. • on aina sovellettava kehityshankekohtaisesti • on myös läpi koko elinkaaren tapahtuvia toimintoja (laadunvarmistus, dokumentointi, vaatimustenhallinta, riskienhallinta…) 2. Ohjelmistotuotannon osa-alueet
2.2 Prosessimallit – prototyyppi(elinkaarimalli, prosessimalli) • vesiputousmallin heikkoutena on myöhäinen tulosten näkyminen asiakkaalle • prototyyppimalli (protoilu) perustuu siihen, että järjestelmästä laaditaan nopeasti asiakkaalle esiteltävä prototyyppi • täydellinen ulkoasultaan, yleinen toiminnallisuus • puutteellinen yksityiskohdiltaan • prosessi sisältää • käyttäjän vaatimusten ja tavoitteiden analysointi • prototyypin rakentaminen • prototyypin parantelu asiakkaan toiveiden mukaan • lopullisen järjestelmän rakentaminen • ongelmia • voi johtaa kaksinkertaiseen rakentamiseen • prototyyppi ei välttämättä paljasta kaikkia yksityiskohtiin meneviä ongelmia • nopeasti tehdyt huonot ratkaisut saattavat heijastua lopulliseen järjestelmään 2. Ohjelmistotuotannon osa-alueet
vaatimukset määritä vaatimukset rakenna prototyyppi korjaukset uusia tavoitteita käyttäjän arviointi suorituskyky demonstroi prototyyppiä OK toteuta järjestelmä arkkitehtuuri ja toimintoja järjestelmän hyötykäyttö Prosessimallit – prototyyppi määrittely suunnittelu toteutus vaatimus-määrittely tavoitteet testaus määrittely suunnittelu toteutus käyttöönotto ja ylläpito 2. Ohjelmistotuotannon osa-alueet
Prosessimallit – prototyyppi • Prototyyppimalli soveltuu • Uuden teknisen ratkaisun vaatiman kokeilun tekemiseen • Etsittäessä epäselviä asiakasvaatimuksia • Käyttö: • Prototyypin valmistuttua sen perusteella määritellään toteutettava järjestelmä, joka sitten toteutetaan alusta alkaen uudelleen • Prototyyppi kehitetään valmiiksi järjestelmäksi • Protoilu on hyödyllinen erityisesti käyttöliittymiä määriteltäessä • Ongelmia lisäksi • Prototyypin viimeistelty ulkoasu harhauttaa valmiusasteen suhteen • Protoilusilmukoiden määrä: loputon proton parantelu 2. Ohjelmistotuotannon osa-alueet
iteratiivisuus keskeinen periaate riskien jatkuva analyysi prosessin uudelleen ohjaaminen riskianalyysin tulosten mukaan suunnittelu riskianalyysi jatkamis- tai lopettamis- päätös arviointi tuotanto Prosessimallit – spiraali vaatimusmäärittely määrittely (suunnittelu) (toteutus) testaus käyttöönotto suunnittelu toteutus testaus 2. Ohjelmistotuotannon osa-alueet
Prosessimallit – spiraali • Spiraalimalli perustuu neljään vaiheeseen, joita toistetaan jatkuvasti tarkentaen, kunnes järjestelmä on valmis • suunnittelu • tavoitteiden, vaihtoehtojen ja rajoitusten määrittely • riskianalyysi • vaihtoehtoihin liittyvien ongelmien arviointi • tuotanto • edellisiin perustuvan järjestelmävaiheen valmistus • asiakkaan arviointi • tarkistuspiste ennen seuraavaa iterointikierrosta 2. Ohjelmistotuotannon osa-alueet
Prosessimallit – spiraali • spiraalimalli ei kiinnitä tuotantovaiheen menetelmiä • voi sisältää esim. sisäkkäisen vesiputousmallin tai prototyyppilähestymistavan soveltamista • yksityiskohdat tarkentuvat askelittain • jos riskit kasvavat liikaa, toteutus voidaan keskeyttää • uusin; kokemuksia käytännön soveltuvuudesta vielä vähän • ongelmia • asiakkaiden mukaan saaminen • vaatii riskianalyysin hallitsemista • iteratiivisena mallina aikaa vievä 2. Ohjelmistotuotannon osa-alueet
Prosessimallit – Unified Process • Neljä vaihetta, joiden sisällä suoritetaan vesiputousmallin mukaisia tehtäviä • on syntynyt oliokeskeisen ohjelmointitavan myötä • Aloitus (Inception) • Määritellään sovellusalue, tuotteen ominaisuudet, tarvittaessa proto; päätetään aloitetaanko kehitystyö alustava projektisuunnitelma • Kehitys (Elaboration) • Perusarkkitehtuurin toteutus, alustava käyttöohje • Rakentaminen (Construction) • Vesiputousmallin vaiheita iteroiden kehitetään järjestelmää pala palalta • Uudet ominaisuudet • Siirtäminen (Transaction) • Siirretään järjestelmä asiakkaan laiteympäristöön, koulutus, … 2. Ohjelmistotuotannon osa-alueet
Ketterät menetelmät (agile) • Iteraatiot lyhyitä; jatkuva kehittäminen • Testitapausten suorittaminen automatisoidaan • Uuden ominaisuuden tai ohjelmamuutoksen ohjelmointi etenee seuraavasti: • Ohjelmoidaan muutokselle yksi tai useampi testitapauksia • Ajetaan kaikki testitapaukset • Jos virheitä, • aloitetaan muutoksen ohjelmointi • Kohtaan 2 • XP (Extreme programming) • Jatkuva testaus • Pariohjelmointi (pair programming) • (toinen koodaa, toinen kommentoi tuotosta heti) • Hyviä tuloksia pienehköissä projekteissa 2. Ohjelmistotuotannon osa-alueet
2.3 Laatu, laatujärjestelmä ja laadunvarmistus • Laatu = • Ohjelmistotuotteen kyky vastata käyttäjänsä kohtuulliset toiveet ja odotukset • Tuotteen laatu • Toiminnan laatu • Tuotteen laatuun vaikutetaan toiminnan laadun kautta • Toiminnan laatu = tuotteen laatuun positiivisesti vaikuttavat toimintatavat • Laatujärjestelmä • Tuotteen tekemisessä käytettävä yrityksen toimintatapa • Tavoite on taata, että tuotantoprosessi tuottaa suunniteltua laatutasoa olevia tuotteita aikataulun ja budjetin mukaisesti • Laatukäsikirja ja ohjeet • Esim. http://www.cs.tut.fi/ohj/laatu/ 2. Ohjelmistotuotannon osa-alueet
Laatujärjestelmä • Todistettavuus, jäljitettävyys • Tarkastuspöytäkirjat, virhedokumentit, pöytäkirjat, laatumittaukset, muut dokumentit • ISO 9001 –standardi • Laatujärjestelmän perusasiat • Laatusertifikaatin voi hakea joltain sertifiointielimeltä (SFS), joilla osoitetaan laatujärjestelmän olevan standardin mukainen • Osoittaa, että toimitaan laatujärjestelmän mukaan – ei sitä, että laatujärjestelmä on erinomainen … • Käytännönläheinen keino parantaa toimintatapoja: • Kirjataan nykytilanne mahdollisimman totuudenmukaisesti • Analysoidaan toimintatavat, etsitään muutokset, jotka parantavat toiminnan lopputulosta 2. Ohjelmistotuotannon osa-alueet
Laadunvarmistus • Laatujärjestelmän auditointi • Toiminnan laadunvarmistus • Laatujärjestelmän systemaattinen läpikäynti, varmistus, että toiminta on laatujärjestelmän mukaista • Tuotteen laadunvarmistus • Estää virheiden pääsyä tuotteeseen • Auttaa virheiden löytymistä tuotteesta mahdollisimman aikaisin • Testaus, vaihetuotteiden tarkastus • Verfifiointi: ”are we building the product right” • Validointi: ”are we building the right product” • Tarkastukset, katselmukset 2. Ohjelmistotuotannon osa-alueet
2.4 Dokumentointi, tuotteenhallinta • Dokumentaation perusta • Projektisuunnitelma • Määrittelydokumentti (toiminnallinen määrittely) • Suunnitteludokumentti (tekninen määrittely) • Testaussuunnitelma • Ylläpito aiheuttaa dokumentteihin muutoksia • Päivitykset tahtovat jäädä tekemättä • Dokumentaation ylläpidettävyys? 2. Ohjelmistotuotannon osa-alueet
Tuotteenhallinta • Ohjelmisto koostuu • Komponenteista • Ohjelmakomponentit • Dokumentit • Ohjaustiedostot • Konfiguraatio on komponenttien kokoelma, josta tietty tuotteen versio koostuu • Sekä komponenteista, että konfiguraatioista voi olla eri versioita • Eri versioilla saattaa olla erilaisia yhteensopivuusvaatimuksia esim. laitteiston, käyttöjärjestelmän, tietokannan, käyttöliittymän ja tietoliikenneyhteyksien suhteen • Tuotteenhallintaan liittyy mm. • Nimeämissäännöt, konfiguraatioiden muodostamisessa sovellettavat menetelmät, muutosten hallinta, arkistointi, komponenttien ja konfiguraatioiden hallintamenetelmät 2. Ohjelmistotuotannon osa-alueet
2.5 Ohjelmistotyö projektina • Esitutkimusprojekti • Määrittelyprojekti • Suunnitteluprojekti • Käyttöönottoprojekti • Koulutusprojekti • … • Projekti jaetaan vaiheisiin, vaiheet tehtäviin ja tehtävien työmäärät arvioidaan • Tehtävät sijoitetaan kalenteriin, tehtäville annetaan vastuuhenkilöt • Tehtävät mahdollisimman lyhyitä ja selkeitä • Projektin koko: yksittäinen projekti ei saisi ylittää kalenterivuotta eikä 5:tä henkilötyövuotta 2. Ohjelmistotuotannon osa-alueet
Projektit • Useimmat projektit ylittävät aikataulunsa ja budjettinsa • Vaatimukset muuttuvat • Henkilöstöongelmat • Sovellusalueen ja uuden tekniikan tuntemattomuus • Mm. verohallituksen järjestelmäuudistus 1989 • Verotus myöhästyi yli puoli vuotta • Syitä: ”.. Riskien hallitsemattomuutta, epärealistisia aikataulutuksia, toteutusmahdollisuuksien virhearviointeja…” • Miksi projektit epäonnistuvat yhä uudelleen? 2. Ohjelmistotuotannon osa-alueet
Ohjelmiston erikaarikustannusten jakautuminen eri vaiheisiin vaihtelee tapauksittain suurimmat säästöt saavutetaan ylläpitokustannuksia pienentämällä Suunnittelun ja dokumentaation merkitys Virheiden ennaltaehkäisy tärkeää 2.6 Elinkaarikustannukset 2. Ohjelmistotuotannon osa-alueet
2.7 Rationaalinen tuotantoprosessi • Ohjelmistotyö on harvoin rationaalista • Tehdyt ratkaisut perustuvat usein intuitioon ja ovat lähes umpimähkäisiä • Rationaalista tuotantoprosessia ei voi noudattaa orjallisesti, koska • Vaatimuksia ei täysin tunneta alkuvaiheessa • Toteutukseen liittyvät lisämääreet selviävät projektin aikana • Kaikkia tosiseikkoja ei pystytä käsittelemään virheettömästi • Tosiseikat muuttuvat ulkoisista syistä • Aikaisemmin opittu sitoo • Uudelleenkäyttö ohjaa myös usein omituisiin ratkaisuihin • Silti rationaaliseen prosessimalliin pitäisi pyrkiä, koska • Ohjeita vaiheiden toteuttamiseen • Tapahtuu oppimista • Prosessin tuntemus helpottaa projektin suunnittelua ja seurantaa • Ulkopuolisen on helpompi arvioida tilannetta 2. Ohjelmistotuotannon osa-alueet