Erkki Mäkinen (Toim.)
Total Page:16
File Type:pdf, Size:1020Kb
Erkki Mäkinen (toim.) Tietojenkäsittelytieteellisiä tutkielmia Syksy 2011 INFORMAATIOTIETEIDEN YKSIKKÖ TAMPEREEN YLIOPISTO INFORMAATIOTIETEIDEN YKSIKÖN RAPORTTEJA 5/2012 TAMPERE 2012 TAMPEREEN YLIOPISTO INFORMAATIOTIETEIDEN YKSIKKÖ INFORMAATIOTIETEIDEN YKSIKÖN RAPORTTEJA 5/2012 TAMMIKUU 2012 Erkki Mäkinen (toim.) Tietojenkäsittelytieteellisiä tutkielmia Syksy 2011 INFORMAATIOTIETEIDEN YKSIKKÖ 33014 TAMPEREEN YLIOPISTO ISBN 978‐951‐44‐8710‐1 ISSN‐L 1799‐8158 ISSN 1799‐8158 Aluksi Tähän julkaisuun on kerätty syyslukukaudella 2011 pidetyn Tutkielmakurssin tutkielmia. Tutkielmien ohjaajina ovat lisäkseni toimineet Tomi Heimonen, Pentti Hietala, Kati Iltanen, Erno Mäkinen, Timo Poranen ja Sari Walldén. Toimittaja Sisällysluettelo Vaatimusten määrittely kustannustehokkuuden näkökulmasta ...……………….1 Perttu Hallikainen Prosessi avoimen lähdekoodin käyttöjärjestelmässä……………………………...20 Nikita Ishkov Tietämyksen muodostaminen käyttäjien käyttäytymisestä sähköisessä kaupan‐ käynnissä ……………………………………………………………………………...38 Olavi Karppi Elekäyttöliittymät: eleiden tunnistus ja vuorovaikutuksen suunnittelu ……...………...49 Joni Karvinen Avoimen lähdekoodin ominaisuudet ja potentiaali ……………………….……………81 Juha Kaura Virtuaalitaloudesta ja virtuaaliverotuksesta ……………………………….....………...97 Jude Laine SQL:n opetus‐ ja oppimisjärjestelmien arviointi ja luokittelu…………………..117 Jere Myyryläinen Assosiaatiosääntöjen klusterointi mielenkiintoisuuteen, etäisyyteen tai saman‐ kaltaisuuteen perustuen …………………………………………………………....140 Tuomas Neulaniemi i Uutisten personointi……………….………...…………………………..………….161 Tuuli Paananen Internet-pohjaisen verkon valvontamenetelmät ………..………………….……177 Janne Redsven Vertaisverkot…………………………………………………...……………………198 Teemu Ruotsalainen Sovelluskomponenttien välisten viestien tietoturvariskit Android-käyttöjärjes- telmässä………………………………………………………………………...…….212 Ville Saarinen Ohjelmistoprojektin mittaamisesta………...………………………………..…….223 Heikki Santasalo E‐kirjat ja niiden lukemiseen tarkoitettujen sovellusten käytettävyys tablet‐lait‐ teella……………..…..………………………………………………………………..241 Sini Tistelgrén Reducing the attack surface of an operating system ……………………………269 Ville Valkonen No‐Limit Texas Hold’emia pelaavat pokeriagentit………...…………………....289 Esko Vankka Hiljainen tietämys – historia ja perusteet….……………...………………...…….302 Timi Vienola iPad aamiaispöydässä – tablettien ja sähköisten lehtien symbioosi……………322 Paavo Virta Pasianssia palaverissa – tehokas etätyö ohjelmistoalalla ………….…………....363 Timo Virtanen Käytettävyys ja pelattavuus digitaalisten pelien tutkimuksessa ….…………...378 Anni Vuokko ii Vaatimusten määrittely kustannustehokkuuden näkökulmasta Perttu Hallikainen Tiivistelmä. Vaatimusten määrittely on tärkeä osa ohjelmistotuotantoprojektia. Tämä pro‐ sessi määrää usein sen, kuinka hyvin projekti ja sen lopputulos tulevat onnis‐ tumaan. Perinpohjainen vaatimusten määrittely on kuitenkin aikaa vievää ja kallista. Tässä tutkielmassa perehdytään siihen, kuinka vaatimusten määritte‐ lyn toteuttaminen voisi olla mahdollisimman kustannustehokasta. Avainsanat ja ‐sanonnat: Vaatimusten määrittely, ohjelmistotuotanto. CR‐luokat: D.2.1 1. Johdanto Ohjelmistotuotantoprojekti on hyvin laaja kokonaisuus ja yksi sen tärkeimmistä vaiheista on vaatimusten määrittely. Vaatimusten määrittelyn avulla pystytään selvittämään, mitkä ovat projektin päämäärät asiakkaan ja kehittäjien osalta [Sommerville, 2007]. Toisin sanoen määritellään, kuinka toteutettavan sovelluk‐ sen pitäisi toimia ja minkälaisia palveluita sen on tarkoitus tuottaa. Jotta projek‐ ti olisi onnistunut, on tärkeää pystyä selvittämään ja ymmärtämään nämä pää‐ määrät riittävällä tarkkuudella. Sovellus, joka ei toteuta tarvittavia vaatimuksia, on hyödytön. Vaatimusten määrittely on vaikea ja aikaa vievä prosessi ja prosessin kus‐ tannukset voivat nousta hyvin korkeiksi. Vaatimusten määrittely on tärkeää tehdä riittävällä tarkkuudella, sillä huonosti suunniteltu ja toteutettu sovellus aiheuttaa kustannuksia järjestelmän toimittamisen jälkeen. Hyvin toteutettu vaatimusten määrittely tulee huomattavasti edullisemmaksi kuin muutosten tekeminen jälkikäteen. Ohjelmistotuotantoprojektin kokonaiskustannukset ovat usein sidoksissa projektiin kuluvaan aikaan. Aikatauluvaatimukset projekteille ovat yleensä hy‐ vin tiukat, koska tämän päivän talousmalli ja markkinat vaativat sitä. Vaati‐ musten määrittelyyn käytettävät menetelmät riippuvat hyvin paljon kehitettä‐ vän järjestelmän luonteesta. On esimerkiksi selvää, että mitä kriittisempi järjes‐ telmä on kyseessä, sitä enemmän tähän prosessiin joudutaan käyttämään aikaa. Tässä tutkielmassa perehdytään vaatimusten määrittelyyn kustannustehok‐ kuuden näkökulmasta. Aluksi luvussa 2 esitellään erilaiset ohjelmistoprojektiin liittyvät vaatimukset, kuten käyttäjävaatimukset ja järjestelmävaatimukset. Lu‐ vussa 3 esitellään yleisesti vaatimusmäärittelyprosessin vaiheet sekä kustan‐ nuksiin vaikuttavat tekijät. 1 Tämän jälkeen luvussa 4 perehdytään vaatimusten hallintaan ja sen merki‐ tykseen projektin kustannuksissa. Vaatimusten hallinta on hankala ja kallis prosessi varsinkin suurten järjestelmien kohdalla. Näin ollen vaatimusten hal‐ linta on tärkeä osa koko ohjelmistoprojektia. Lopuksi luvuissa 5 ja 6 perehdytään menetelmiin, joilla kustannustehok‐ kuutta voidaan parantaa erilaisissa ohjelmistoprojekteissa. Luvussa 5 esiteltävät muodolliset menetelmät ovat yksi tapa varmaan ja yksiselitteiseen vaatimusten määrittelyyn. Tällaista määrittelyä vaaditaan varsinkin kriittisissä järjestelmis‐ sä. Muodolliset menetelmät ovat kuitenkin hidas prosessi, joten ne eivät ole op‐ timaalinen ratkaisu kaikkiin projekteihin. Tämän päivän globaali kilpailu ja muuttuvat markkinat vaativat usein no‐ peaa ohjelmistotuotantoa. Luvussa 6 perehdytään nopeisiin menetelmiin, jotka sopivat hyvin pieniin ja keskikokoisiin järjestelmiin. Nämä järjestelmät eivät yleensä ole kriittisiä. 2. Vaatimukset Vaatimukset ovat ohjelmistotuotantoprojektin alkuvaiheessa tehtäviä määrityk‐ siä, jotka kertovat mitä tullaan toteuttamaan [Kotonya and Sommerville, 2004]. Ne ovat kuvauksia siitä, mitä sovellus tekee, miten sovellus tulee käyttäyty‐ mään, millaisessa ympäristössä sovellus toimii ja millaisia rajoitteita sovelluk‐ sella on. Vaatimukset voidaan luokitella kahteen eri pääluokkaan. Nämä luokat ovat käyttäjävaatimukset ja järjestelmävaatimukset [Sommerville, 2007]. Käyttäjä‐ vaatimukset ovat yleisiä luonnollisella kielellä tehtyjä toteamuksia, jotka mää‐ rittävät, mitä palveluita järjestelmän pitäisi tuottaa ja millaisten rajoitusten mu‐ kaisesti. [Sommerville, 2007] Järjestelmävaatimukset taas määrittelevät yksityiskohtaisesti järjestelmän toiminnallisuudet, palvelut ja rajoitteet. Järjestelmävaatimusten on tarkoitus määritellä yksiselitteisesti se, mitä tullaan toteuttamaan. [Sommerville, 2007] Järjestelmä‐ ja käyttäjävaatimukset voidaan jakaa kolmeen alempaan luok‐ kaan. Nämä luokat ovat funktionaaliset ja ei‐funktionaaliset vaatimukset sekä ympäristövaatimukset. Funktionaaliset vaatimukset ovat toteamuksia, jotka kertovat, millaisia pal‐ veluita järjestelmän pitäisi tuottaa. Nämä vaatimukset kertovat myös, kuinka järjestelmän pitäisi reagoida syötteisiin ja kuinka sen pitäisi käyttäytyä eri tilan‐ teissa. [Sommerville, 2007] Ei‐funktionaaliset vaatimukset ovat vaatimuksia, jotka eivät varsinaisesti keskity järjestelmän toiminnallisuuteen. [Kotonya and Sommerville, 2004]. Nä‐ mä vaatimukset ovat enemmänkin rajoitteita, jotka liittyvät projektiin ja järjes‐ 2 telmään. Ei‐funktionaaliset vaatimukset sisältävät muun muassa turvallisuus‐ vaatimukset, varmuusvaatimukset, käytettävyysvaatimukset, luotettavuusvaa‐ timukset ja suorituskykyvaatimukset [Kotonya and Sommerville, 2004]. Ympäristövaatimukset ovat vaatimuksia, jotka tulevat sovelluksen ympäris‐ töstä. Nämä ovat rajoitteita, joita järjestelmän toimintaympäristö aiheuttaa jär‐ jestelmälle. [Sommerville, 2007] Eri tarkkuudella tehtävät vaatimusmäärittelyt ovat erittäin tärkeitä, koska erilaiset ihmiset ovat tekemisissä vaatimusten kanssa. Sovelluksen kehittäjät ja asiakas eivät esimerkiksi välttämättä ymmärrä vaatimuksia samalla tavalla. Luonnollisen kielen yleinen kuvaus ei ole riittävän yksityiskohtainen, jotta ke‐ hittäjä ymmärtäisi, mitä pitää toteuttaa. Asiakas taas ei välttämättä ymmärrä tarkkoja tietoteknisiä järjestelmävaatimuksia, koska hänellä ei ole alan asian‐ tuntemusta. Eri käyttäjiä järjestelmä‐ ja käyttäjävaatimuksille on kuvattu ku‐ vassa 1. Kuva 1. Käyttäjä- ja järjestelmävaatimukset. [Sommerville, 2007] Epätarkkuus järjestelmävaatimusten määrittelyssä on yksi suurimmista on‐ gelman aiheuttajista ohjelmistotuotantoprojektissa [Sommerville, 2007]. Jos vaa‐ timusten määrittely ei ole yksiselitteistä, on melko yleistä, että ohjelmisto‐ kehittäjät pyrkivät toteuttamaan sovelluksen omasta näkökulmastaan. Tämä aiheuttaa usein sen, että järjestelmän toteutus ei vastaa asiakkaan alkuperäistä päämäärää. Tällaisessa tapauksessa joudutaan usein tekemään muutoksia jälki‐ käteen sekä vaatimuksiin että itse järjestelmään. Tämä viivästyttää järjestelmän valmistumista ja lisää projektin kustannuksia. 2.1. Funktionaaliset vaatimukset Funktionaalisten vaatimusten määrittelemisessä pitäisi pyrkiä mahdollisimman aukottomaan ja yhdenmukaiseen lopputulokseen [Sommerville, 2007]. Tämä tarkoittaa sitä, että kaikki vaadittavat käyttötarkoitukset ja palvelut tulevat esil‐ le asiakkaan puolelta. Näiden vaatimusten pitää olla myös täysin yksiselitteisiä ja helposti ymmärrettäviä. 3 Yksiselitteisten vaatimusten muodostaminen voi olla joissakin tapauksissa