Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon 31.10.2008 Harri Laine 1
Ohjelmisto Tietokoneohjelma (computer program) toimintaohje, jonka mukaan toimien tietokone suorittaa jonkin tietojenkäsittelytehtävän suoritettava tehtävä voi olla laaja ja monimutkainen tai suppea ja yksinkertainen Tietokoneohjelmisto (software system) yhteenkuuluva kokoelma tietokoneohjelmia jonkin tehtäväkokonaisuuden hoitamiseksi 31.10.2008 Harri Laine 2
Ohjelmisto Tietojärjestelmä (enterprise information system) ohjelmistojen, laitteiden, ihmisten, toimintaohjeiden, työnkulkujen ja tietojen järjestelmä, jossa ohjelmilla suoritettavat tietojenkäsittelytehtävät palvelevat organisaation toimintaa 31.10.2008 Harri Laine 3
Ohjelmisto Toimintaympäristö (Environment) Organisaatio Tietojärjestelmä (information system) Ohjelmisto 31.10.2008 Harri Laine 4
Ohjelmisto Ohjelmistoja on erityyppisiä, esimerkiksi liiketoimintajärjestelmiä (enterprise applications) esim. tilaustenkäsittely, tutkimustiedon muokkaus sulautettuja ohjelmistoja (embedded) osana jotain laitetta esimerkiksi puhelinta tai autoa varusohjelmistoja (systems software) käyttöjärjestelmät, tietokanta- ja tietoliikenneohjelmistot yleiskäyttöisiä työkaluohjelmistoja tekstinkäsittely, kuvankäsittely, webbiselain tosiaikajärjestelmiä (real-time systems) valvonta- ja ohjausjärjestelmät, puhelinkeskusohjelmistot 31.10.2008 Harri Laine 5
Ohjelmisto Ohjelmistot ovat monimutkaisia kokonaisuuksia tarvitsevat toimiakseen usein muita ohjelmistoja, jolloin muodostuu riippuvuuksia ohjelmistojen välille ovat harvoin staattisia, muutokset tuovat tarpeen hallita ohjelmistojen versioita 31.10.2008 Harri Laine 6
Räätälöidyt ohjelmistot (tailored sowtware): asiakkaan erityistarpeesta lähtien rakennettavat ohjelmistot Tuotetyyppiset valmisohjelmistot (products) tietylle toimialalle suunnatut alalle tyypillisiä palveluja tuottavat ohjelmistot - asiakas sopeuttaa toimintansa Sovitettavat aihiot - eräänlaiset puolivalmisteet, joka on parametrein tai pienin säädöin muokattavissa asiakkaan tarpeita vastaavaksi 31.10.2008 Harri Laine 7
Ohjelmistot ovat siis tietokoneille tarkoitettuja toimintaohjeita Ohjelmistoja laativat vielä nykyään enimmäkseen ihmiset. Ohjelmistojen laatimiseen liittyvää työtä kutsutaan ohjelmistotuotannoksi (software production) tai ohjelmistojen kehittämiseksi (software development). Ohjelmistotekniikka (software engineering) on tietojenkäsittelytieteen osa-alue, joka käsittelee (laajojen ja monimutkaisten) ohjelmistojen tuottamista 31.10.2008 Harri Laine 8
Ohjelmistotuotantoprosessi tai ohjelmistoprosessi (software process) on systemaattinen tapa tuottaa ohjelmistoja Koska ohjelmat ovat varsin erilaisia, ei kaikkien tuotantoonkaan sovi samanlainen prosessi Ohjelmiston elinkaarella (life cycle) tarkoitetaan vaiheita, joiden kautta ohjelmisto etenee alkuperäisestä kehittämisideasta hautaansa 31.10.2008 Harri Laine 9
Koska ohjelmistot ovat monimutkaisia, ne on suunniteltava ennen toteutusta Jotta ohjelmisto pystytään suunnittelemaan pitää selvittää, mitä siltä vaaditaan Vaatimukset pitää suhteuttaa toimintaympäristöön ja resursseihin Näistä lähtökohdista syntyy seuraava geneerinen elinkaarimalli 31.10.2008 Harri Laine 10
idea määrittely suunnittelu ylläpito käyttöönotto toteutus loppu 31.10.2008 Harri Laine 11
Määrittely (requirement analysis): Millainen ohjelmisto tarvitaan = ohjelmistolle asetettavat vaatimukset (ulkoinen näkökulma ohjelmistoon) Selviteään tarkoitus: millaista toimintaa ohjelmistolla pitäisi tukea ketkä suorittavat avustettavia ttehtäviä mitä hyötyä / kustannuksia järjestelmästä on millaisia ongelmia ohjelmistolla halutaan poistaa Selvitetään mitä halutaan keitä ovat järjestelmän käyttäjät mitä palveluja järjestelmä tarjoaa / kenelle millainen on järjestelmän tietosisältö millaisessa ympäristössä järjestelmän tulisi toimia selvitetään sisältö ei toteutustapaa 31.10.2008 Harri Laine 12
Asetetaan tavoitteita, kohteina esim. suorituskyky (käsittelymäärät, vasteajat) tietotarpeiden tyydytys kustannukset (seuranta, vähentäminen) valvonnan kehittäminen (suojaus) tehokkuuden parantaminen (käyttöaste) palvelujen kehittäminen nykyjärjestelmän työnkulku tai muu nykyjärjestelmän ongelma. Tavoitteet täsmällisesti (esim 'ilmoittautumisaika puoleen nykyisestä' on parempi kuin 'ilmoittautumista nopeutettava') 31.10.2008 Harri Laine 13
Suunnittelu (system design): Miten ohjelmisto toteutetaan. Ohjelmistosuunnitelmassa kuvataan tulevan ohjelmiston rakenne, rakenneosien väliset rajapinnat ja tietosisältö sekä jossain tapauksissa algoritmit. [Sommerville] Näkökulma tekninen ja ohjelmiston sisäinen Kytkennät (sisäiset) muihin ohjelmistoihin 31.10.2008 Harri Laine 14
Suunnittelussa kehitetään ratkaisuvaihtoehtoja syötteiden ja tulosteiden muoto käsittelyperiaatteet (suorakäyttö/erätyö) tiedostoratkaisu (tiedostot/tietokanta) työnjako (ihminen/kone) hajautus (hajautettu/keskitetty) alusta, laitteisto ja varusohjelmisto työn muuttuminen, tarvittavat ohjelmat,... Useita vaihtoehtoisia suunnitelmia 31.10.2008 Harri Laine 15
Vaihtoehtoja on arvioitava Tarkastellaan vaihtoehdon vaikutusta käyttäjiin (liike)toimintaan tavoitteiden saavuttamiseen palveluiden saatavuuteen toimivuuteen saadaanko kaikki työt hoidettua määritellyllä ratkaisulla? onko toiminta järkevää? onko ratkaisu tehokas? 31.10.2008 Harri Laine 16
Suunnittelun osa-alueita Arkkitehtuurisuunnittelu suunnitellaan ohjelmiston kokonaisrakenne ja osien välinen yhteistyö tietokannan suunnittelu työnkulkujen ja kommunikaation suunnittelu Ohjelmasuunnittelu yksittäisen ohjelman tai pakkauksen tarkempi suunnittelu käyttöliittymän suunnittelu 31.10.2008 Harri Laine 17
Toteutus (implementation) Ohjelmointi Testaus Virheenjäljitys Dokumentointi 31.10.2008 Harri Laine 18
Käyttöönotto (integration and deployment) Ohjelmiston koostaminen osista Yhdistäminen olemassa olevaan järjestelmään Konversiot Sovitus Asennus Hyväksymistestit Käyttökoulutus ja -ohjeet Dokumentaatio 31.10.2008 Harri Laine 19
Käyttö ja ylläpito (Operation and maintenance) Ohjelmisto on asennettu ja otettu osaksi käyttäjän normaalia toimintaa Aiempi järjestelmä on poistettu käytöstä Ongelmaraportointi järjestetty Ylläpitotoimenpiteiden luokittelu Korjaavat ylläpitotoimet (virheiden poistaminen) Sopeuttavat ylläpitotoimet (ympäristön muutoksiin vastaaminen) Lisäävät / parantavat ylläpitotoimet (lisäominaisuudet) Uudelleenjärjestelytoimet (sisäiset muutokset, ei vaikutusta ulkoiseen käyttäytymiseen) 31.10.2008 Harri Laine 20
Määrittely Suunnittelu Koodaus Moduulitestaus Integrointi Ylläpito 8 % 7 % 6 % 7 % 6 % 67 % 31.10.2008 Harri Laine 21
idea määrittely suunnittelu ylläpito käyttöönotto toteutus loppu 31.10.2008 Harri Laine 22
Geneerinen malli ei pidä sisällään mitään ajoitustietoa. Se ei ota kantaa siihen, kuinka paljon määrittelyä pitää tehdä ennen suunnittelua ja kuinka paljon suunnittelua ennen toteutusta. Se ei myöskään ota kantaa siihen onko integrointi jatkuvaa vai tapahtuuko se isommissa erissä tai otetaanko uusi ohjelma heti käyttöön Näihin asioihin ottavat kantaa ohjelmistoprosessimallit 31.10.2008 Harri Laine 23
Vesiputousmallissa (waterfall model) suoritetaan kukin vaihe valmiiksi ennen kuin siirrytään seuraavaan. Vaiheen tuloksena saadaan vaihedokumentti (vaatimusdokumentti, suunnitteludokumentti, jne). Dokumentin hyväksyminen mahdollistaa seuraavan vaiheen aloituksen. Mallissa on mahdollista palata takaisin edelliseen vaiheeseen, jos seuraavassa törmätään ongelmiin 31.10.2008 Harri Laine 24
Tässä mallissa käyttäjä on mukana vain määrittelyvaiheessa ja tuotteen valmistuminen saattaa tapahtua pitkän ajan kuluttua. 31.10.2008 Harri Laine 25
Iteratiivisissa (iterative, evolutionary) prosessimalleissa kehitys etenee kasvattamalla ohjelmistoa pienissä erissä (increment) Kullekin laajennusosalle tehdään määrittely, suunnittelu, toteutus ja käyttöönotto vaiheet. Osa otetaan käyttöön antamaan palautetta seuraavaa iteraatiokierrosta varten. 31.10.2008 Harri Laine 26
31.10.2008 Harri Laine 27
Spiraalimalli on geneerinen yleismalli iteratiivisille ohjelmistoprosesseille. Malliin on otettu mukaan kustannusanalyysia ja riskien arviointia. 31.10.2008 Harri Laine 28
31.10.2008 Harri Laine 29