6. Suunnittelu. Suunnitteluprosessi

Koko: px
Aloita esitys sivulta:

Download "6. Suunnittelu. Suunnitteluprosessi"

Transkriptio

1 6. Suunnittelu Vaatimusanalyysin jälkeen seuraava työvaihe on suunnittelu. Siinä vaatimusanalyysin korkean abstraktiotason malleja käyttämällä luodaan alempien abstraktiotasojen malleja. Tavoitteena on kuvata tehtävä ohjelmisto sellaisella tarkkuudella, että sen toteutus on suoraviivaista. Suunnittelun tuloksena saadaan kuvaukset toteutettavasta ohjelmistosta, sen tarvitsemista ja tuottamista tiedoista, ulkomaailman rajapinnoista ja mahdollisesti käytetyistä algoritmeista. Sivu Suunnitteluprosessi Requirements specification Design activities Architectural design Abstract specification Interface design Component design Data structure design Algorithm design System architecture Software specification Interface specification Component specification Data structure specification Algorithm specification Design products Kuvalla (C) I. Sommerville 2000 Sivu

2 Suunnitteluprosessin työvaiheet 1. Arkkitehtuurisuunnittelu (Architectural design) Osajärjestelmät tunnistetaan ja kuvataan niiden välinen yhteistyö. 2. Abstrakti määrittely (Abstract specification) Kuvataan osajärjestelmien tehtävät ja rajoitukset. 3. Rajapintasuunnittelu (Interface design) Suunnitellaan osajärjestelmien rajapinnat ja yhteistyö. 4. Komponenttisuunnittelu (Component design) Suunnitellaan osajärjestelmien rakenne. 5. Tietorakennesuunnittelu (Data structure design) Suunnitellaan osajärjestelmien vaatimat tietorakenteet. 6. Algoritmisuunnittelu (Algorithm design) Suunnitellaan mahdolliset tarvittavat algoritmit. Sivu Arkkitehtuurisuunnittelu Käytännössä jokainen ei-triviaali ohjelma rakentuu useasta osajärjestelmästä. Yksi osajärjestelmä sisältää samaan asiaan liittyviä piirteitä ja tarjoaa samankaltaisaia palveluita. Osajärjestelmiä käytetään erottamaan metsä (koko järjestelmä) puilta (yksittäiset komponentit). Ilman osajärjestelmiä saatava arkkitehtuuri luokkineen olisi niin laaja, että sitä ei voisi hahmottaa kunnolla. Arkkitehtuurisuunnittelussa eristetään osajärjestelmät ja kuvataan niiden välinen yhteistyö. Sivu

3 Osajärjestelmä ja moduuli Sommerville määrittelee osajärjestelmät ja moduulit: Osajärjestelmä on kokonainen järjestelmä, joka toimii itsenäisesti riippumatta muiden järjestelmien tarjamista palveluista. Osajärjestelmä rakentuu moduuleista ja sisältää yhden tai useamman rajapinnan muille osajärjestelmille. Osajärjestelmä saattaa rakentua useasta aliosajärjestelmästä. Moduuli on järjestelmän komponentti, joka tarjoaa palveluita muille moduuleille. Se ei ole itsenäinen samalla tavalla kuin osajärjestelmä, vaan toimii vahvemmassa yhteistyössä muiden moduuleiden kanssa osajärjestelmän sisällä. Moduulit saattavat rakentua alimoduuleista. Sommerville ei tee selkeää jäsentelyä osajärjestelmälle, moduulille ja komponentille. Jatkossa pidämme moduulia ja komponenttia synonyymeina. Sivu Osajärjestelmien jaottelu Osajärjestelmien valinta ja tunnistus ovat suunnittelupäätöksiä. Sommervillen vaihtoehdot ovat: Tietovarastomalli (Repository model) Osajärjestelmät erotellaan tehtävien mukaan. Kaikki osajärjestelmät käyttävät yhtä tietokantaosajärjestelmää, johon talletetaan kaikki yhteiskäytössä oleva tieto. Jokaisella osajärjestelmällä on oma tietokanta paikallisille tiedoille. Asiakas-palvelin -arkkitehtuuri (Client-server architecture) Osa osajärjestelmistä on palvelimia, jotka tarjoavat palveluja. Loput ovat asiakkaita, jotka käyttävät palvelimien tarjoamia palveluita. Abstraktin koneen malli (Abstract machine model) Osajärjestelmät ovat sisäkkäisiä. Jokainen tarjoaa abstraktiotason palveluihin. Mitä alemmalla abstraktiotasolla ollaan, sitä lähempänä ollaan laitteistotasoa. Sivu

4 Lisää osajärjestelmistä Osajärjestelmien jaottelun täytyy olla sellainen, että sen tehtävällä ja tarjoamilla palveluilla on selvät rajat. Sitä mukaa kun osajärjestelmät tunnistetaan ja suunnitellaan, niiden täytyy toteuttaa seuraavat ehdot: Jokaisella osajärjestelmällä on hyvin määritelty rajapinta, jonka kautta se on yhteistyössä muiden osajärjestelmien kanssa. Osajärjestelmien lukumäärän pitäisi olla kohtuullisen pieni. Osajärjestelmä voidaan osittaa sisäisesti aliosajärjestelmiksi, jos tällainen jaottelu on luonnollinen ja jos muussa tapauksessa osajärjestelmästä tulisi laaja ja vaikeaselkoinen. Osajärjestelmä rakentuu rajapinnan toteuttavista ulkoisista moduuleista ja palvelut toteuttavista sisäisistä moduuleista. Sivu Arkkitehtuurisuunnitelma Arkkitehtuurisuunnittelun tuloksena saadaan arkkitehtuurisuunnitelma. Se kuvaa löydetyt osajärjestelmät, niiden tehtävät, jaottelun moduuleiksi ja osajärjestelmien välisen yhteistyön. Arkkitehtuurisuunnitelma sisältää yleensä joukon kaaviokuvia ja yksityiskohdista kertovat kuvaustekstit Yksinkertaisin arkkitehtuurin kaaviokuva sisältää osajärjestelmät laatikkoina ja osajärjestelmien välisen yhteistyön nuolina. Tällainen malli riittää hyvin korkeimmaksi abstraktioksi, kunhan arkkitehtuurikuvaukset on tehty huolella. Sivu

5 Esimerkkiarkkitehtuuri (kalvo 15) Radar system Transponder system Data comms. system Aircraft comms. Telephone system Position processor Backup position processor Comms. processor Backup comms. processor Aircraft simulation system Flight plan database Air Traffic Control system architecture Weather map system Accounting system Controller info. system Controller consoles Kuvalla (C) I. Sommerville 2000 Activity logging system Sivu Abstrakti määrittely Tämä työvaihe tehdään rinnakkain arkkitehtuurisuunnitelun kanssa. Siinä löydetyille osajärjestelmille tehdään kirjallinen kuvaus, joka sisältää seuraavat kohdat: osajärjestelmän tehtävä, osajärjestelmän tarjoamat palvelut, osajärjestelmään liittyvät säännöt ja rajoitukset, osajärjestelmän mahdollinen rinnakkaisuus muiden osajärjestelmien kanssa ja mahdolliset aliosajärjestelmät, joista jokaiselle tehdään vastaava abstrakti määrittely. Kuvaukset liitetään arkkitehtuurisuunnitelmaan. Sivu

6 6.3. Rajapintasuunnittelu Rajapintasuunnittelu on ehkä suunnittelun tärkein työvaihe. Siinä jokaisen osajärjestelmän rajapinta muihin osajärjestelmiin suunnitellaan ja dokumentoidaan yksityiskohtaisesti. Osajärjestelmien rajapintojen pitää olla sellaiset, että osajärjestelmän tarjoamia palveluja voidaan käyttää tietämättä niiden toteutuksesta mitään. Näin erotetaan osajärjestelmän tarjoamat palvelut (rajapinta) niiden toteutuksesta (osajärjestelmän komponentit). Rajapintojen kuvaus tulee arkkitehtuurisuunnitelmaan Sivu Osajärjestelmien rajapintojen määrittelyn tulee olla yksiselitteiset ja ristiriidattomat. Tämän johdosta luonnollinen kieli ei riitä rajapintojen määrittelyyn. Toisaalta ohjelmointikielikään ei välttämättä ole paras tapa määritellä rajapintoja, sillä ohjelmointikieli menee helposti turhan matalalle abstraktiotasolle. Rajapinnan määrittelyyn voidaan käyttää jotain formalismia, kuten Sommervillen luvussa 9.2. Toisaalta formalismia tärkeämpää on valittu abstraktiotaso. Kuvauksesta täytyy selvitä tarvittavat tiedot ilman turhia toteutusriippuvia yksityiskohtia. Sivu

7 Rajapinnan kuvaus Itse suosittelen rajapinnan kuvaukselle seuraavaa: Rajapinnan nimi: Nimi voi kuvata myös yhtä rajapinnan palvelua tai palvelujoukkoa. Yleinen kuvaus: Yleinen kuvaus on vapaamuotoinen selostus rajapinnan tarjoamista palveluista. Rajapinnan tarjoamat palvelut. Jokaisesta palvelusta nimi, yleinen kuvaus, sisään otettavat parametrit arvojoukkoineen, ulos annettavat tulokset arvojoukkoineen, poikkeustilanteet, alkuehdot ja loppuehdot. Sivu Rajapinnan kuvaus (jatkuu) Sisään otettavat parametrit arvojoukkoineen vastaavat metodin parametreja. Ulos annettavat tulokset arvojoukkoineen vastaavat metodin tulosta. Poikkeustilanteet kertovat, mihin erikoistapauksiin palvelussa varaudutaan. Alkuehto on jokin ehto, jonka on oltava voimassa ennen kuin palvelua voidaan käyttää. Loppuehto on jokin ehto, joka on voimassa, kun palvelu on suoritettu. Alku- ja loppuehdot eivät ole pakollisia. Sivu

8 Arvojoukoista Arvojoukot ovat tärkeitä, eikä niitä useinkaan määritellä ohjelmointikielissä. Esimerkiksi jos meillä on sisään otettava parametri ikä, niin parametrilla on varmaankin arvojoukko , mutta ohjelmointikielellä INTEGER. Oikein määritellyt yksityiskohtaiset arvojoukot helpottavat osajärjestelmien suunnittelua, sillä arvojoukkoon kuulumisen testaus voidaan tehdä heti palveluun savuttaessa. Samoin arvojoukot helpottavat testausta, sillä niitä voidaan käyttää hyväksi testitapausten generoinnissa. Sivu Rajapintaesimerkki Nimi: Juuri Kuvaus: Palauttaa toisen asteen yhtälön ax 2 +bx+c=0 reaalijuuret Palvelu Juuri Kuvaus: Toteuttaa rajapinnan Juuri Parametrit sisään: a,b,c : R (reaalilukuja) Parametrit ulos: r 1,r 2 : R (reaalilukuja) Huom. Toinen tai molemmat lähtevistä parametreista voi puuttua. Poikkeustilanteet: a = 0 (ei toisen asteen yhtälö) Alkuehdot: Ei alkuehtoja Loppuehdot: Ei loppuehtoja Sivu

9 Rajapintaesimerkki javalla public interface Juuri { }; class result { }; double r1; double r2; // juuret int roots; // juurten määrä public result Juuri(double a, double b, double c) throws aiszeroexception; Kuvaukset, alku- ja loppuehdot pitää laittaa kommentteina. Sivu Komponenttisuunnittelu Kun osajärjestelmien rajapinnat on suunniteltu huolellisesti, rajapintojen tarjoamien palveluiden toteutus ei vaikuta rajapintoihin. Näin samalle rajapinnalle voi olla monta toteutusta, ja toisaalta yksi toteutus voi toteuttaa monta rajapintaa. Komponenttisuunnittelu on osajärjestelmien rajapinnan toteutusta. Siinä osajärjestelmä jaetaan komponentteihin ja selvitetään komponenttien välinen yhteistyö. Komponenttisuunnittelun tuloksena saadaan kunkin osajärjestelmän komponenttirakenne. Sivu

10 Komponentit Komponentti ei ole itsenäinen. Se toimii yhteistyössä muiden osajärjestelmän komponenttien kanssa. Jokaisella komponentilla on rajapinta, jonka kautta päästään käsiksi komponentin tarjoamiin palveluihin. Osajärjestelmä rakentuu ulkoisista komponenteista, jotka toteuttavat osajärjestelmän rajapinnan, ja sisäisistä komponenteista, jotka tarjoavat rajapinnan toteutuskomponenteille palveluja. Oliopohjaisessa suunnittelussa komponentti on yleensä pakkaus (package), joka sisältää useita olioluokkia (object classes). Sivu Oliot Lopuksi jokainen komponentti rakentuu joukosta yhteistyötä tekeviä olioita, jotka komponenttien tapaan ovat joko sisäisiä tai ulkoisia olioita. Ulkoiset oliot toteuttavat komponentin määrittelemän rajapinnan. Sisäiset oliot tarjoavat palvelut, joita ulkoiset oliot tarvitsevat rajapinnan toteutukseen. Suunnittelutasolla jaottelu järjestelmä-osajärjestelmäkomponentti-olio toimii hyvin. Toteutuksessa osajärjestelmistä alaspäin oliot ovat kaikkien rajapintojen toteuttajina. Järjestelmässä on vain olioita ja osajärjestelmiä. Sivu

11 6.5. Tietorakennesuunnittelu Kun järjestelmä on saatu jaettua osajärjestelmiin, komponentteihin ja olioluokkiin (ryhmiin samanlaisia olioita), voidaan miettiä kunkin osajärjestelmän käyttämiä tietorakenteita. Tietorakenteet voivat olla ulkoisia, jolloin niitä käytetään osajärjestelmän sisällä useista komponenteista tai olioluokista, tai ne voivat olla sisäisiä, jolloin ne näkyvät vain tietylle olioluokalle. Tietorakenteiden suunnittelussa löydetään uusia tietorakenteiden toteutukselle välttämättömiä olioluokkia ja jopa komponentteja. Sivu Algoritmisuunnittelu Algoritmisuunnittelu on suunnitteluprosessin viimeinen vaihe. Siinä valituista ei-triviaaleista palveluista tehdään pseudokieliset kuvaukset. Kaikista palveluista ei kannata tehdä kuvauksia, sillä varsinkin sisäisiä palveluita on paljon ja useimmat niistä ovat kohtullisen suoraviivaisia toteutettavia. Joskus varsinkin monimutkaisista algoritmeista tulee sellaisia, että ne kannattaa jakaa useaksi palveluksi. Tällöin yksi palvelu toimii algoritmin toteutuksen hallinnoijana, joka kutsuu toteuttavia palveluita. Sivu

12 6.7. Olioiden tunnistus Teoriassa ohjelmiston jako osajärjestelmiin, komponentteihin ja olioihin on hyvä idea. Mutta mistä nämä hienot elementit löydetään? Osajärjestelmät löydetään yleensä vaatimusanalyysissa ja viimeistään arkkitehtuurisuunnittelussa. Osajärjestelmiä ei ole paljon ja yleensä samat arkkitehtuurit toimivat samantyyppisissä ohjelmistoissa. Joskus myös osa komponenteista tai olioluokista selviää suoraan vaatimusanalyysista ilman sen kummempaa tunnistamista. Sivu Olioiden tunnistus (jatkuu) Seuraavat menetelmät sopivat osajärjestelmien, komponenttien ja olioiden tunnistamiseen: Sanalistat (grammatical analysis). Järjestelmän kuvauksista etsitään substantiiveja ja verbejä. Substantiivit ovat luokka-, komponentti- ja osajärjestelmäehdokkaita. Verbit ovat palveluehdokkaita. Konkreettiset ehdokkaat. Järjestelmästä tunnistetaan konkreettisia kohteita (esim. koneita), toimijoita (esim. asiakkaita), tapahtumia (esim. palvelupyyntöjä), yhteistyötä (esim. tapaamisia), paikkoja (esim. toimistoja), organisaatiota (esim. yrityksiä) jne. Näitä käytetään analyysin pohjana. Analyysia täydennetään tietorakenteilla ja algoritmeilla. Sivu

13 Olioiden tunnistus (jatkuu) Toiminnan ymmärrys. Ensin kootaan joukko näkemyksiä tehtävästä ohjelmistosta. Jokainen näkemys sisältää joukon palveluita, jotka tunnistetaan ja sijoitellaan osajärjestelmiin. Lisäksi tunnistetaan järjestelmän toimijat ja toiminnan tulokset. Skenaariolähtöinen analyysi. Jokainen löydetty skenaario analysoidaan. Skenaarion perusteella mietitään tarvittavat osajärjestelmät, komponentit ja luokat, joiden avulla skenaario on toteutettavissa. Skenaarioista eristetyt elementit yhdistetään yhteen koko järjestelmän kuvaukseksi. Ylläolevat menetelmät antavat raakaelementtejä, jotka on jalostettava lopullisiksi osajärjestelmiksi, komponenteiksi ja luokiksi. Kaikkia menetelmiä käytetään usein samaan aikaan. Sivu Uudelleenkäyttö Oliopohjaisten menetelmien aikakaudella ohjelmiston osien uudelleenkäyttö on lisääntynyt huomattavasti. Koko suunnitteluprosessi tehdään sellaiseksi, että toteutuksessa voidaan käyttää jo aiemmin suunniteltuja, toteutettuja ja dokumentoituja ohjelman osia; suunnittelussa voidaan eristää osia, jotka voidaan dokumentoida ja tallettaa käytettäväksi muissa projekteissa. Uudelleenkäyttö säästää suunnittelu- ja toteutuskustannuksia, mutta voi lisätä ylläpitokustannuksia. Uudelleenkäytetyistä osista tiedetään yleensä rajapinta ja kuvaus. Rajapinta ei välttämättä kelpaa enää muuttuneisiin vaatimuksiin. Sivu

14 Komponenttipohjainen suunnittelu Komponenttipohjaisessa suunnittelussa pyritään yhtäältä käyttämään jo olemassaolevia komponentteja ja toisaalta eristämään uusia komponentteja yleiseen käyttöön. Pelkät olioluokat todettiin nopeasti huonoiksi eristettäviksi. Luokat olivat vahvasti erikoistuneita ja niiden oliot olivat liian vahvasti kytkeytyneitä muihin olioihin. Komponentti on abstraktimpi käsite kuin olio(luokka). Komponentti kapseloi yhden tai useamman yhteistyössä olevan olioluokan yhdeksi. Sivu Komponentit Komponentit tarjoavat palveluja rajapintansa kautta. Palveluiden toteutus, käytetty ohjelmointikieli ja jopa suoritusalusta eivät näy palvelupyynnön esittäjälle. Komponenttien koko ja kompleksisuus voivat vaihdella yksinkertaisista funktioista täydellisiin järjestelmiin, kuten tietokannan hallintajärjestelmä. Sommervillen mukaan komponentin lähdekoodi ei ole saatavilla. Yleensä lähdekoodi on saatavilla, mutta siihen ei viitata suoraan. Vain kaupasta ostetuista komponenteista saattaaa puuttua lähdekoodi. Sivu

15 Komponentin rajapinnat Komponentilla on kaksi rajapintaa, sisään ja ulos: Komponentti tarjoaa rajapinnan, joka määrittelee komponentin tarjoamat palvelut. Komponentti tarvitsee rajapinnan, joka kuvaa järjestelmältä vaadittavat palvelut. Requires interface Component Provides interface Kuvalla (C) I. Sommerville 2000 Sivu Suunnittelumallit Valmiiden komponenttien käyttö suunnittelussa onnistuu silloin, kun sopivia komponentteja on saatavilla. Vaikka komponentit olisi suunniteltava ja toteutettava itse, suunnittelussa voidaan käyttää hyväksi hyväksi havaittuja periaatteita. Näitä hyväksi havaittuja suunnitteluperiaatteita kutsutaan suunnittelumalleiksi (design patterns). Suunnittelumallit lähtevät ajatuksesta, että samat perusrakenteet toistuvat oliopohjaisessa suunnittelussa jatkuvasti. Sivu

16 Suunnittelumallit (jatkuu) Malli tarjoaa nimensä mukaisesti hyväksi havaitun menetelmän ratkaista tunnettu suunnitteluongelma. Ratkaisu on yleensä esitetty sellaisella abstraktiotasolla, että sen perusteella voidaan tehdä sopivia toteutuksia erilaisiin sovelluksiin ja ympäristöihin. Vaikeinta suunnittelumalleissa on tunnistaa oikea malli oikeaan tehtävään. Yleisimmät mallit tulevat kuitenkin hyvin nopeasti tutuiksi ja käyttökelpoisiksi. Mallien hallinta ja käyttö helpottaa huomattavasti hyvien oliopohjaisten ratkaisujen suunnittelua. Sivu Suunnittelumallin rakenne Suunnittelumallin kuvaus sisältää seuraavat osat: Mallin nimi Nimi on mallia kuvaava tunniste suunnittelumallille. Kuvaus Kuvaus selittää, miten malli toimii. Ongelmakuvaus Ongelmakuvaus selittää ongelmakentän, mihin malli tuo ratkaisun. Ratkaisukuvaus Ratkaisukuvaus selittää ratkaisussa tarvittavat osat, niiden tehtävät ja osien väliset suhteet. Seuraukset Seurauksissa kuvataan mallin käytön seuraukset ja mahdolliset sivuvaikutukset. Sivu

17 Suunnittelumalliesimerkki Esimerkkinä suunnittelumalleista esitän Observersuunnittelumallin (tarkkailija? no miten vaan). Observer-mallia käytetään, kun olion tilasta tarvitaan useita erilaisia esityksiä. Malli erottaa esitettävän olion esityksen toteuttavista olioista. Obsever-mallin avulla voidaan esimerkiksi kuvata samaa dataa taulukkona, piirakkana tai käyränä. Kun data muuttuu, muutokset näkyvät automaattisesti kaikissa Observer-mallilla toteutetuissa näkymissä. Sivu Suunnittelumalliesimerkki (jatkuu) C D B A A B C D Subject Observer 1 A: 40 B: 25 C: 15 D: 20 Observer 2 Kuvalla (C) I. Sommerville 2000 Sivu

18 Suunnittelumalli Observer Nimi Observer Kuvaus Eristää olion tilan esityksen itse oliosta Ongelmakuvaus Observer ratkaisee tilanteen, missä samasta oliosta tarvitaan automaattisesti muuttuvia erilaisia näkymiä. Ratkaisukuvaus Seuraavalla kalvolla UML:lla. Seuraukset Tilan esitysten optimointi on epäkäytännöllistä. Sivu Ratkaisukuvaus Observer Subject Observer Attach (Observer) Detach (Observer) Notify () for all o in observers o -> Update () Update () ConcreteSubject ConcreteObserver GetState () subjectstate return subjectstate Update () observerstate observerstate = subject -> GetState () Kuvalla (C) I. Sommerville 2000 Sivu

19 7. Verifiointi ja validointi Verifiointi ja validointi on työvaihe, missä tarkastetaan, että suunnittelussa ja toteutuksessa saatu tuote toimii sekä syntaktisesti että semanttisesti oikein. Syntaktisesti oikein: ohjelma on riittävän virheetön, toimii kaikilla syötteillä ja toteuttaa implisiittiset vaatimukset. Semanttisesti oikein: ohjelma toteuttaa vaatimusanalyysissa määritellyt toiminnalliset ja ei-toiminnalliset vaatimukset. Verifiointi on syntaktista tarkistusta: Teemmekö tuotteen oikein?. Validointi on semanttista tarkistusta: Teemmekö oikeaa tuotetta? Sivu Verifiointi- ja validointitekniikat Sekä verifioinnissa että validoinnissa käytetään kahta perustapaa: tarkastuksia (inspections) ja testausta. Tarkastuksissa osa ohjelmistoa tai ohjelmiston dokumentaatiota tarkastetaan ohjelmaa suorittamatta. Tarkastukset ovat staattinen tekniikka. Testauksessa suorituskelpoista ohjelmaa tai sen osaa ajetaan joillain syötteillä ja kirjataan suorituksen tulos. Testaus on dynaaminen tekniikka. Lisäksi validoinnissa käytetään toisinaan hyväksi simulointia, formaaleja menetelmiä ja mallinnusta. Sen sijaan verifioinnissa tarkastukset ja testaus ovat käytännössä ainoat tavat. Sivu

20 7.1. Tarkastukset Tarkastus (inspection) on kokous, jossa tarkastetaan jonkin työvaiheen tuotos, tai osa siitä, ja yritetään löytää siitä puutteita ja virheitä. Puute = vajaa määritys tai puuttuva toiminta Virhe = väärin tehty määritys tai ei-toivottu toiminta Tarkastuksia tehdään kaikissa projektin työvaiheissa. Aina kun projektissa on saatu jokin tuotos valmiiksi, se kannattaa käydä läpi muodollisesti tarkastuksissa. Tarkastukset parantavat tuotteen laatua, sillä aikaisessa vaiheessa löydetty puute tai virhe on helpompi korjata kuin myöhemmin löydettynä. Sivu Tarkastusten luonne Tarkastus on muodollinen tilaisuus, johon osallistuu kolmesta kuuteen henkilöä. Tilaisuudella on tarkka ohjelma ja aikataulu. Henkilöt edustavat eri sidosryhmiä asiakkaasta projektiryhmän jäseniin. Valmistautuessaan tarkastukseen osallistujat analysoivat systemaattisesti tarkastettavaa tuotosta. Tarkastuksessa kootaan löydetyt puutteet ja virheet. Tarkastukseen valmistaudutaan etukäteen. Valmistautumisen helpottamiseksi jokaiselle osallistujalle on jaettu mahdollisia puutekohtia sisältävä tarkistuslista. Sivu

21 Tarkastukseen osallistujat Jokaisella tarkastukseen osallistujalla on rooli, joka kuvaa osallistujan tehtävän tarkastuksessa: Kirjoittaja (Author/owner): Tuotoksesta vastuussa oleva henkilö tai ryhmän edustaja. Omistaja on vastuussa löydettyjen puutteiden ja virheiden korjaamisesta. Tarkastaja (Inspector): Etsii virheitä ja puutteita tuotoksesta. Saattaa myös tunnistaa laajempia asioita, jotka sisältävät tarkastettavan tuotoksen puutteineen. Lukija (Reader): Esittelee tarkastettavan tuotoksen. Sihteeri (Scribe): Kirjaa löydetyt virheet ja puutteet ylös Puheenjohtaja (Moderator): Kutsuu tarkastusryhmän kokoon ja vastaa tarkastustilaisuudessa, että ohjelmaa ja aikataulua seurataan. Sivu Tarkastustapahtuma Itse tarkastustapahtuma ei saa kestää enempää kuin kaksi tuntia. Siinä keskitytään yksinomaan löytämään puutteita ja virheitä. Tarkastukseen osallistujat eivät keskustele löydetyistä puutteista. Kun puute on havaittu, sihteeri kirjaa sen ylös ja siirrytään eteenpäin. Puheenjohtaja on vastuussa siitä, että tarkastus etenee aikataulun mukaan. Puheenjohtaja jakaa puheenvuorot ja keskeyttää mahdolliset analyysi- ja korjauskeskustelut. Sivu

22 Tarkastuksen päätös Kun tarkastus on päättynyt, sihteeri luettelee löydetyt puutteet ja virheet. Tämän jälkeen ryhmä äänestää tuotoksen hyväksymisestä. Vaihtoehdot ovat: Hyväksytään sellaisenaan: mitään muutoksia ei tarvitse tehdä. Hyväksytään muutoksin: löydetyt puutteet ja virheet on korjattava, mutta tuotoksesta ei tarvita enää uutta tarkastusta. Hylätään: löydetyt puutteet ja virheet on korjattava. Korjauksen jälkeen tuotoksesta käydään läpi uusi tarkastus. Tarkastuksen tuloksena sihteeri kirjoittaa tarkastusdokumentin, missä listataan löydetyt puutteet ja virheet ja niiden vakavuudet. Sivu Tarkastusten kultaiset säännöt Seuraavista periaatteista on hyötyä tarkastuksissa: 1. Arvioidaan tuotetta, ei tekijää. 2. Suunnitellaan aikataulu ja pidetään siitä kiinni. 3. Rajoitetaan väittelyä. 4. Ei yritetä ratkoa löydettyjä ongelmia. 5. Rajoitetaan osallistujien määrä 3-6 henkeen. 6. Vaaditaan, että osallistujat ovat valmistautuneet huolellisesti tarkastukseen. 7. Käytetään tarkistuslistoja sekä valmistautuessa että tarkastuksessa. 8. Varataan riittävästi aikaa ja resursseja. 9. Koulutetaan osallistujat. 10. Arvioidaan myös tarkastusprosessia. Sivu

23 7.2. Testaus Toisin kuin yleensä luullaan, testausprosessi alkaa samaan aikaan kun koko ohjelmistotuotantoprosessi. Testausprosessissa seurataan niin sanottua V-mallia. Se selittää testausvaiheet ja niiden suhteen muihin prosessin työvaiheisiin. V-malli yhdistää testauksen ja tuotteen rakentamisen kätevästi toisiinsa. V-mallin vasemmassa sakarassa suunnitellaan testitapaukset, jotka suoritetaan V- mallin oikeassa sakarassa. Jokaisella yrityksellä on oma variaationsa V-mallista. Sivu V-malli Requirements elicitation Requirements analysis System testing Acceptance testing Architecture design Module design Module testing Integration testing Coding Kuvalla (C) J. Paakki 2000 Sivu

24 Testausvaiheet V-mallin mukaisen testausprosessin vaiheet ovat: Yksikkötestaus (module/unit testing): pienimmät jakamattomat yksiköt testataan sitä mukaa kun ne valmistuvat. Oliopohjaisessa suunnittelussa pienin yksikkö on joko olio(luokka) tai metodi. Yksikkötestauksessa keskitytään toteutukseen. Integrointitestaus (integration testing): Ohjelmiston olioluokat kootaan komponenteiksi. Komponentit kootaan osajärjestelmiksi. Osajärjestelmät kootaan koko järjestelmäksi. Integrointitestauksessa keskitytään rajapintoihin. Järjestelmätestaus (system testing): Ohjelmistoa testataan kokonaisena. Testauksessa keskitytään ohjelmiston verifiointiin. Hyväksymistestaus (acceptance testing): Ohjelmistoa testataan osana koko järjestelmää laboratorio-olosuhteissa ja todellisessa ympäristössä. Testauksessa keskitytään ohjelmiston validointiin. Sivu Yksikkötestaus Yksikkötestausta pidetään yleensä toteutuksen osana, mutta siitä huolimatta se on testausta. Yksikkötestauksessa testataan ohjelmiston pienimmät jakamattomat osat ilman muista ohjelmiston osia. Jotta testaus onnistuu, tarvitaan ajureita ja tynkiä Ajuri on koodi, joka ottaa vastaan testiaineiston, muokkaa sen testattavalle elementille sopivaan muotoon, kutsuu testattavaa elementtiä testiaineiston mukaisilla parametreilla ja ottaa vastaan elementin palauttaman tuloksen. Tynkä tekee minimitoteutukset sellaisille testattavan elementin kutsuille, jotka menisivät elementin ulkopuolelle. Esim. metodia testattaessa tyngät korvaavat kutsut muihin metodeihin ja olioihin. Sivu

25 Oliopohjainen yksikkötestaus Oliopohjaisessa yksikkötestauksessa pienin testattava yksikkö on yleensä olio. Myös metodi voi olla pienin testattava yksikkö. Olioa testattaessa testataan kaikki metodit, kaikki tilat, olion paikalliset tietorakenteet ja rajapintojen toteutukset. Jos oliosta on palvelupyyntöjä muihin olioihin, palvelut korvataan tyngillä. Tyngistä tehdään sellaiset, että testattava olio on täysin eristetty muista. Sivu Metodien testaus Jokainen metodi testataan erikseen. Testaukseen kuuluu koodin testaus: kaikki kirjoitettu koodi täytyy käydä läpi, silmukkatestaus: kaikki koodin silmukat käydään läpi, virhetilanteiden testaus: kaikki mahdolliset virhetilanteet generoidaan ja tarkistetaan metodin selviäminen niistä, metodin sisäisten tietorakenteiden testaus: jos metodilla on sisäisiä tietorakenteita, näiden oikea toiminta testataan, Sivu

26 Metodien testaus (jatkuu) Metodin testauslista jatkuu. metodin rajapinnan testaus: testataan parametrien tarpeellisuus, niiden tyyppi, arvojoukot, mahdolliset metodin kutsun alkuehdot ja mahdolliset metodin kutsun loppuehdot; ja metodin reunaehtojen testaus: testataan metodia sellaisilla syötteillä, jotka liittyvät metodin syötteiden arvojoukkojen reunaehtoihin. Esimerkiksi jos metodi ottaa vastaan lukuja , niin testataan arvoilla -1, 0, 1, n<99, 99, 100, 101. Sivu Tilojen testaus Olion tilojen testauksessa on kaksi mahdollisuutta: voidaan testata tiloja erikseen tai tiloja yhdessä. Molemmissa tapauksissa tilat saadaan eristettyä tilasiirtymäkaavioista. Erikseen testattaessa ei testata siirtymiä. Yhdessä testattaessa testataan siirtymien mukaan. Erikseen testattaessa testataan tilaan tulo: tilalla voi olla tehtäviä, jotka tehdään aina tultaessa tilaan. kaikki tulon aktivoivat tapahtumat ja laukaisimet testataan tilasta poistuminen: tilalla voi olla lopetustehtäviä, jotka tehdään poistuttaessa tilasta. Sivu

27 Tilojen testaus (jatkuu) Tilojen testaus jatkuu. tilassa olo: tilaan liittyvät tapahtumat testataan. Jos tiloja testataan yhdessä, testataan tila-siirtymä-tila -ryhmiä kokonaisina. Jokainen ryhmä alkaa alkutilasta ja päättyy lopputilaan. Siinä välissä käydään läpi kaikki välitilat. Tällaisesta alkutilasta lopputilaan menevästä polusta tehdään yksi testitapaus, mikä testataan kokonaisuutena. Sivu Tilatestausten erot Jos tilat testataan yksittäin, testaus on suoraviivaisempaa. Toisaalta tilojen yhteistyö ei selviä. Jos tilat testataan ryhmänä, testauksen suunnittelu vaatii enemmän, sillä on selvitettävä, miten siirtymät tapahtuvat metoditasolla. Toisaalta tulos on yksittäistä testausta kattavampi, sillä myös siirtymät tulevat testattua. Mitä enemmän luokalla on tilaluonnetta, sitä enemmän kannattaa mielestäni testata tiloja ryhminä. Sivu

28 Paikallisten tietorakenteiden testaus Olion paikallisten tietorakenteiden tulee olla käytössä ja toimia odotetulla tavalla. Tarkistuslistaan kuuluvat: tietorakenteiden tyyppien tarkistus, tietorakenteiden alustusoperaatioiden tarkistus, muuttujanimien tarkistus, reunaehtojen tarkistus ja tietorakenteiden käytön rajapintojen testaus. Oliopuolella tietorakenteet voidaan kätevästi eristää muusta ohjelmistosta. Tällöin niiden testaus käy helpommin kuin perinteisellä puolella. Sivu Rajapintojen toteutuksen testaus Rajapintojen toteutuksen testaus on viimeinen yksikkötestauksen vaihe. Siinä testataan, että olion metodit ja attribuutit toimivat yhteistyössä ja toteuttavat olion rajapinnan tarjoamat palvelut. Rajapintojen toteutuksen testauksessa koodilla ei ole merkitystä. Testaus on semanttista. Jos olion tarjoamilla palveluilla on tunnettuja reunaehtoja, arvojoukkoja, alustus- ja lopetusehtoja, niin nämä otetaan huomioon. Muuten toteutuksen rakenne ei vaikuta testaukseen. Sivu

29 Integrointitestaus Integrointitestauksessa testatut pienimmät yksiköt integroidaan suuremmiksi kokonaisuuksiksi. Integrointia voidaan tehdä kahdesta suunnasta: ylhäältä alaspäin tai alhaalta ylöspäin. Ylhäältä alaspäin aloitetaan ohjaavista kokonaisuuksista ja mennään alaspäin kohti toteuttavia kokonaisuuksia. Etuna tässä on, että testattava ohjelmisto on heti valmis suoritettavaksi. Haittana on kasvava tynkien tarve. Alhaalta ylöspäin aloitetaan toteuttavista kokonaisuuksista ja mennään ylöspäin kohti ohjaavia kokonaisuuksia. Etuna tässä on, että tynkiä ei tarvita. Haittana on, että ohjelmisto on valmis suoritettavaksi vasta integroinnin päätyttyä. Sivu Oliopohjainen integrointi Oliopohjainen integrointi on yleensä luonnollista tehdä alhaalta ylöspäin. Ensin oliot integroidaan komponenteiksi. Sitten komponentit integroidaan osajärjestelmiksi. Lopuksi osajärjestelmät integroidaan koko järjestelmäksi. Näin integrointitestaus on kolmivaiheista (tai nelivaiheista, jos vielä integroidaan metodit olioiksi). Jokainen vaihe on erillinen kokonaisuus. Kaikilla integrointitestausten tasoilla testataan rajapintoja. Rajapintojen toteutus on jo testattu yksikkötestauksessa. Sivu

30 Rajapintojen testaus Rajapintojen testauksessa testataan: Parametrien lukumäärää Kaikilla tarvittavilla parametreilla täytyy olla merkitystä kutsujalle. Kaikilla palautetuilla arvoilla täytyy olla merkitystä kutsujalle. Parametrien tyyppiä Tyyppien ja arvojoukkojen täytyy olla samat kutsujalle ja palvelun tarjoajalle. Palvelua Palvelun semantiikka testataan kutsujan kannalta. Palvelun tarjoajan kannalta semantiikka on tarkistettu yksikkötestauksessa. Alku- ja loppuehtoja Jos palvelulla on alku- ja/tai loppuehdot, nämä testataan. Sivu Järjestelmätestaus Integrointitestauksesta seuraava työvaihe on järjestelmätestaus. Siinä järjestelmä testataan kokonaisuutena. Kokonaisuuteen kuuluvat ohjelmisto, laitteisto ja muut ohjelmiston kanssa yhteistyössä toimivat ohjelmistot. Järjestelmätestauksessa oletetaan, että ohjelmisto on testattu syntaktisesti. Ohjelmakoodi ei ole enää näkyvissä, vaan testauksessa keskitytään toiminnallisten ja ei-toiminnallisten vaatimusten validointiin. Sivu

31 Hyväksymistestaus Hyväksymistestaus on viimeinen testausvaihe. Siinä loppukäyttäjät testaavat ohjelmistoa ensin valvotusti laboratorio-olosuhteissa (alfa-testaus) ja sitten valvomatta lopullisessa käytössä (beta-testaus). Sekä alfa- että beta-testauksessa testaavat loppukäyttäjät kirjaavat ylös kaikki löytämänsä puutteet. Hyvässä ohjelmistossa löydetyt puutteet liittyvät toiminnallisuuteen. Perinteisiä virheitä (ohjelman kaatumista, vääriä tulosteita jne.) ei pitäisi löytyä. Sivu Testausmenetelmät Testausmenetelmät voidaan jakaa kahteen luokkaan: lasilaatikkotestaukseen (white-box testing) ja mustalaatikkotestaukseen (black-box testing). Lasilaatikkotestaus testaa enemmän syntaksia kuin semantiikkaa. Mustalaatikkotestaus testaa enemmän semantiikkaa kuin syntaksia. Lasilaatikkotestausta käytetään yksikkö- ja integrointitestauksessa. Mustalaatikkotestausta käytetään kaikilla testaustasoilla, mutta erityisesti järjestelmä- ja hyväksymistestauksessa. Sivu

32 Lasilaatikkotestaus Lasilaatikkotestauksessa testattavan yksikön koodi on näkyvissä. Koodia käytetään hyväksi testitapauksia suunniteltaessa. Testauksessa testataan ohjelman rakennetta. Testattaviin osiin kuuluvat esimerkiksi polut, ehdot, silmukat, parametrit ja muuttujat. Koska lasilaatikkotestauksessa koodi on näkyvissä, testausta voidaan systematisoida ja automatisoida kätevästi. Lasilaatikkotestauksen teoria onkin hyvin hallittua ja matemaattiseen formalismiin perustuvaa teoriaa. Sivu Polkutestaus Polkutestauksessa testataan yleensä yhtä metodia, mutta samaa menetelmää voidaan käyttää laajemmassakin mittakaavassa. Yksinkertaisuuden vuoksi puhun jatkossa vain metoditason polkutestauksesta. Jokainen metodi voidaan kuvata suunnattuna verkkona, jossa on yksi lähtösolmu ja yksi maalisolmu. Lähtösolmu kuvaa metodin alkupistettä, eli metodin parametrien alustusta. Maalisolmu kuvaa pistettä, jossa metodista poistutaan ja palautetaan metodin laskema tulos, siis metodin loppupistettä. Sivu

33 Suunnattu verkko Suunnatun verkon jokainen solmu kuvaa yhtä metodin lausetta, ja jokainen särmä kuvaa siirtymää lauseesta toiseen. Jos lause on ehtolause, siitä lähtee kaksi särmää (trueja false-vaihtoehdot). Jos lause on case-lause, siitä lähtee yhtä monta särmää kuin on case-vaihtoehtoja (ja yksi särmä vaihtoehdolle, että yksikään case-vaihtoehto ei sovi). Jos lause on return-lause, siitä lähtee särmä lopputilaan. Sivu Polut Kun suunnattu verkko on valmis, siitä voidaan johtaa polkuja. Jokainen polku alkaa lähtösolmusta ja päättyy maalisolmuun. Kukin polku kuvaa yhtä tapaa käydä metodi läpi. Kun kehitämme metodille testiaineiston, joka vastaa polun läpikäyntiä, saamme kyseisen polun testattua. Jo aika yksinkertaisissa metodeissa kaikkien polkujen määrä kasvaa niin suureksi, että maailmankaikkeuden jäljellä oleva ikä ei riitä niiden testaamiseen. Siksi on kehitetty yksinkertaistuksia, joissa kaikkien polkujen joukosta valitaan muutama mielenkiintoinen. Sivu

34 Kattavuudet Valittavat polut määrittelevät kattavuuskriteerin. Se kertoo, millä perusteella polut valitaan. Kattavuus puolestaan kertoo, miten hyvin suoritetut testit täyttävät kattavuuskriteerin. Esim. jos kattavuuskriteerinä ovat kaikki polut, ja polkuja on 100, Niin yhden testin suoritus antaa kattavuudeksi 1/100 eli 1%. Yksinkertaisin kattavuus on lausekattavuus. Siinä kriteerinä ovat kaikki verkon solmut (eli lauseet). Toinen usein käytetty kattavuus on haaraumakattavuus. Siinä kriteerinä ovat kaikki verkon särmät (eli siirtymät lauseesta toiseen). Sivu Silmukkatestaus Silmukkatestauksessa testataan nimensä mukaisesti silmukoita. Testit vaihtelevat silmukan tyypin mukaan: Yksinkertaiset silmukat. Silmukka suoritetaan 0 - n kertaa, missä m voi vaihdella väliltä 0..N ja N on jokin tunnettu maksimiarvo (tai ääretön, jos arvoa ei tunneta). Oleellista on, että n voi vaihdella. Silmukalle tehdään seuraavat testit: 1. 0 iteraatiokierrosta iteraatiokierros iteraatiokierrosta. 4. m iteraatiokierrosta 2 < m < N N-1, N ja N+1 iteraatiokierrosta. Sivu

35 Silmukkatestaus (jatkuu) Sisäkkäiset silmukat. Näille silmukoille ei voida tehdä yhtä kattavaa testausta kuin yksinkertaisille silmukoille, koska testien määrä kasvaa silmukoiden lukumäärän suhteen eksponentiaalisesti. Seuraavalla testillä päästään kattavaan tulokseen vähemmillä testeillä: 1. Aloitetaan sisimmästä silmukasta. Asetetaan muut silmukat minimiarvoihin 2. Suoritetaan sisimmälle silmukalle yksinkertaisen silmukan testit. Pidetän muut silmukat vakioina. Testataan mahdolliset yli- ja alivuodot. 3. Siirrytään silmukka kerrallaan ulospäin. Jo testatuille silmukoille asetetaan järkevät arvot. Testaamattomat silmukat pidetään vakioarvoissa. 4. Jatketaan kunnes kaikki silmukat on testattu. Sivu Silmukkatestaus (jatkuu) Peräkkäiset silmukat. Toisistaan riippumattomille peräkkäisille silmukoille voidaan soveltaa erikseen yksittäisten silmukoiden testausperiaatetta. Toisistaan riippuvien silmukoiden testauksessa käytetään sisäkkäisten silmukoiden testaustapaa. Kiinteät silmukat. Jos silmukan alku- ja loppuarvot ovat vakioita eli silmukka suoritetaan aina yhtä monta kertaa, niin silmukkaa voidaan pitää lyhennettynä muotona koodista, missä silmukassa suoritettavat lauseet ovat peräkkäin. Tällaisille silmukoille riittää silmukkatestauksessa yksi testitapaus. Rakenteettomat silmukat. Nämä silmukat eivät seuraa rakenteista ohjelmointia. Jotta ne voidaan testata systemaattisesti, ne täytyy ensin kirjoittaa uudelleen yksinkertaisiksi, sisäkkäisiksi, kiinteiksi tai peräkkäisiksi silmukoiksi. Onneksi tällaisia silmukoita ei enää tule juurikaan vastaan. Sivu

36 Mustalaatikkotestaus Mustalaatikkotestauksessa ohjelman koodi ei ole näkyvissä. Ohjelmasta tiedetään vain, mitä se ottaa syötteenä, antaa tuloksena, ja mitä se tekee. Mustalaatikkotestauksessa pyritään löytämään virheellisiä tai puuttuvia toimintoja, sisäisiin, ulkoisiin tai käyttöliittymään liittyviä virheitä, virheitä yleisissä tietorakenteissa, suorituskykypuutteita ja alustus- ja lopetustoimintojen virheitä. Toiminnallisen testauksen aineisto voidaan johtaa järjestelmän kuvauksista. Sivu Ekvivalenssiluokat Mustalaatiikotestauksessa syöteavaruus ositetaan ekvivalenssiluokiksi. Yksi luokka kuvaa toiminnallisuuden osajoukkoa, jolle voidaan tehdä yhteisiä testejä. Ekvivalenssiluokat voidaan johtaa esimerkiksi ohjelmiston kuvauksista, arkkitehtuurista, käyttäjän vaatimuksista tai järjestelmävaatimuksista. Yhdestä ekvivalenssiluokasta valitaan muutama testitapaus. Yhdessä kaikki testitapaukset muodostavat optimitapauksessa kattavan testiaineiston. Sivu

37 8. Yhteenveto Ohjelmistotuotanto jakaantuu selkeästi seuraaviin osa-alueisiin: projektin perustamiseen, ongelman määrittelyyn, ohjelmistosuunnitteluun, toteutukseen, testaukseen ja ylläpitoon. Nämä osa-alueet muodostavat myös ohjelmistotuotantoprosessin päätehtävät. Tehtäviä ei välttämättä suoriteta tässä järjestyksessä eikä edes peräkkäin. Ohjelmistotuotannossa on tilaa erilaisille prosesseille ja prosessimalleille. Kuitenkin nämä osaalueet ovat aina läsnä kaikissa malleissa. Sivu Projektin suunnittelu - älä aliarvioi Vaikka jokainen osa-alue on tärkeä, niistä kaikkein tärkeimmäksi nostaisin projektin sunnittelun (sattumoisin se vei myös eniten luentoaikaa). Suunnittelu ei ala tuotteesta, vaan prosessista. Ilman tarkkaa suunnitelmaa ei synny laadukasta tuotetta. Tämä osa-alue on varsinkin oppilasprojekteissa pahiten retuperällä. Ennen ensimmäistäkään vaatimusanalyysin osavaihetta pyrkikää siihen, että teillä on selvä ja realistinen aikataulusuunnitelma, jota seurataan. Sivu

38 Aikataulun realistisuus Realistisuus on avainsana aikataulussa. On tuhat kertaa parempi saada aikaan pieni laadukas ohjelmisto, kuin tehdä iso ohjelmisto, joka on vain vähän sinne päin. Kun aikataulu on realistinen, työskentely on miellyttävämpää, tulokset ovat parempia ja työ valmistuu ajallaan. Siitä se alkaa ja siihen se päättyy: hyvästä projektin suunnittelusta. Se pitää omaksua selkäytimeen. Loput asiat voi kerrata vaikkapa tästä luentomonisteesta ja oppikirjasta. Sivu Loppu Kiitokset yhteistyöstä! Sivu

Ohjelmistotuotanto, suunnittelu Syksy Suunnittelu. Suunnittelun tulos. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi.

Ohjelmistotuotanto, suunnittelu Syksy Suunnittelu. Suunnittelun tulos. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi. 6. Suunnittelu Suunnittelun tulos Vaatimusanalyysin jälkeen seuraava työvaihe on suunnittelu. Siinä vaatimusanalyysin korkean abstraktiotason malleja käyttämällä luodaan alempien abstraktiotasojen malleja.

Lisätiedot

6. Suunnittelu. Suunnittelun tulos

6. Suunnittelu. Suunnittelun tulos 6. Suunnittelu Vaatimusanalyysin jälkeen seuraava työvaihe on suunnittelu. Siinä vaatimusanalyysin korkean abstraktiotason malleja käyttämällä luodaan alempien abstraktiotasojen malleja. Tavoitteena on

Lisätiedot

Suunnittelun tulos. 6. Suunnittelu. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi. 6.1 Arkkitehtuurisuunnittelu.

Suunnittelun tulos. 6. Suunnittelu. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi. 6.1 Arkkitehtuurisuunnittelu. 6. Suunnittelu Suunnittelun tulos Vaatimusanalyysin jälkeen seuraava työvaihe on suunnittelu. Siinä vaatimusanalyysin korkean abstraktiotason malleja käyttämällä luodaan alempien abstraktiotasojen malleja.

Lisätiedot

Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi. Verifiointi- ja validointitekniikat. Verifiointi- ja validointitekniikat II

Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi. Verifiointi- ja validointitekniikat. Verifiointi- ja validointitekniikat II 7. Verifiointi ja validointi Verifiointi ja validointi (V&V) on ohjelmistotuotannon työvaihe, missä varmistetaan, että ohjelmisto täyttää sille asetetut implisiittiset ja eksplisiittiset vaatimukset ja

Lisätiedot

7. Verifiointi ja validointi

7. Verifiointi ja validointi 7. Verifiointi ja validointi Verifiointi ja validointi (V&V) on ohjelmistotuotannon työvaihe, missä varmistetaan, että ohjelmisto täyttää sille asetetut implisiittiset ja eksplisiittiset vaatimukset ja

Lisätiedot

Ohjelmistotuotanto, verifiointi ja validointi Syksy Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi

Ohjelmistotuotanto, verifiointi ja validointi Syksy Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi 7. Verifiointi ja validointi Verifiointi ja validointi (V&V) on ohjelmistotuotannon työvaihe, missä varmistetaan, että ohjelmisto täyttää sille asetetut implisiittiset ja eksplisiittiset vaatimukset ja

Lisätiedot

Ohjelmistojen suunnittelu

Ohjelmistojen suunnittelu Ohjelmistojen suunnittelu 581259 Ohjelmistotuotanto 154 Ohjelmistojen suunnittelu Software design is a creative activity in which you identify software components and their relationships, based on a customer

Lisätiedot

Harjoitustyön testaus. Juha Taina

Harjoitustyön testaus. Juha Taina Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida

Lisätiedot

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testausdokumentti Kivireki Helsinki 17.12.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Anu Kontio Ilmari

Lisätiedot

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testaussuunnitelma PULSU Syksy 2008 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (9 op) Projektiryhmä Heikki Manninen Noora Joensuu

Lisätiedot

Testaus käsite. Sekalaista testausasiaa. Testauksen käsitteestä. Kattavuusmitat. Jos ajatellaan, että testaus = V&V, voidaan erottaa:

Testaus käsite. Sekalaista testausasiaa. Testauksen käsitteestä. Kattavuusmitat. Jos ajatellaan, että testaus = V&V, voidaan erottaa: Testaus käsite Sekalaista asiaa Sami Kollanus 15.11.2006 Jos ajatellaan, että = V&V, voidaan erottaa: Staattinen Dynaaminen Toisaalta voidaan määritellä Myersin (1979) mukaan: Testaus on ohjelman suoritusta,

Lisätiedot

Kontrollipolkujen määrä

Kontrollipolkujen määrä Testaus Yleistä Testaus on suunnitelmallista virheiden etsimistä Tuotantoprosessissa ohjelmaan jää aina virheitä, käytettävistä menetelmistä huolimatta Hyvät menetelmät, kuten katselmoinnit pienentävät

Lisätiedot

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit Ohjelmiston testaus ja laatu Ohjelmistotekniikka elinkaarimallit Vesiputousmalli - 1 Esitutkimus Määrittely mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot millainen järjestelmä täyttää

Lisätiedot

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri Testausraportti Oppimistavoitteiden hallintajärjestelmä harri Helsinki 13.12.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti

Lisätiedot

2. Ohjelmistotuotantoprosessi

2. Ohjelmistotuotantoprosessi 2. Ohjelmistotuotantoprosessi Peruskäsitteet: prosessimalli: mahdollisimman yleisesti sovellettavissa oleva ohjeisto ohjelmistojen tuottamiseen ohjelmistotuotantoprosessi: yrityksessä käytössä oleva tapa

Lisätiedot

Suunnitteluvaihe prosessissa

Suunnitteluvaihe prosessissa Suunnittelu Suunnitteluvaihe prosessissa Silta analyysin ja toteutuksen välillä (raja usein hämärä kumpaankin suuntaan) Asteittain tarkentuva Analyysi -Korkea abstraktiotaso -Sovellusläheiset käsitteet

Lisätiedot

Ohjelmistotuotantoprojekti

Ohjelmistotuotantoprojekti Ohjelmistotuotantoprojekti Ryhmä Muppett TESTAUSDOKUMENTTI Helsinki 5.8.2008 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojekti, kesä 2008 Projekti: Muutos- ja korjauspyyntöjen

Lisätiedot

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testaussuunnitelma Koskelo Helsinki 16.12.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Tom Bertell Johan

Lisätiedot

5. Järjestelmämallit. Mallinnus

5. Järjestelmämallit. Mallinnus 5. Järjestelmämallit Käyttäjävaatimukset pitää kirjoittaa luonnollisella kielellä. Niitä lukevat myös asiakkaat ja loppukäyttäjät. Järjestelmävaatimukset kannattaa kirjoittaa jollain rakenteisella kuvaustavalla.

Lisätiedot

Testaussuunnitelma Labra

Testaussuunnitelma Labra Testaussuunnitelma Labra Helsinki 25.8.2008 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 1 Kurssi 581260 Ohjelmistotuotantoprojekti (9+1op) Projektiryhmä Anssi Kapanen,

Lisätiedot

Prosessimalli. 2. Ohjelmistotuotantoprosessi. Prosessimallin vaihejako. Prosessimallien perustehtävät. Ohjelmiston suunnittelu. Vaatimusmäärittely

Prosessimalli. 2. Ohjelmistotuotantoprosessi. Prosessimallin vaihejako. Prosessimallien perustehtävät. Ohjelmiston suunnittelu. Vaatimusmäärittely 2. Ohjelmistotuotantoprosessi Peruskäsitteet: prosessimalli: mahdollisimman yleisesti sovellettavissa oleva ohjeisto ohjelmistojen tuottamiseen ohjelmistotuotantoprosessi: yrityksessä käytössä oleva tapa

Lisätiedot

Ohjelmiston testaus ja laatu. Testaustasot

Ohjelmiston testaus ja laatu. Testaustasot Ohjelmiston testaus ja laatu Testaustasot Testauksen vaihejako Tarpeet / sopimus Järjestelmätestaus Hyväksymiskoe Määrittely testauksen suunnittelu ja tulosten verifiointi Arkkitehtuurisuunnittelu Moduulisuunnittelu

Lisätiedot

Testaaminen ohjelmiston kehitysprosessin aikana

Testaaminen ohjelmiston kehitysprosessin aikana Testaaminen ohjelmiston kehitysprosessin aikana 04.02.2004 http://cs.joensuu.fi/tsoft/ Sisällys 1. Johdanto 2. Yksikkö- ja integrointitestaus 3. Järjestelmätestaus 4. Hyväksymistestaus http://cs.joensuu.fi/tsoft/

Lisätiedot

Mallinnus. 5. Järjestelmämallit. Abstraktiot. Mallinnuksen etuja. Arkkitehtuurimalli. Yhteysmallit. Ohjelmistotuotanto, järjestelmämallit Kevät 2005

Mallinnus. 5. Järjestelmämallit. Abstraktiot. Mallinnuksen etuja. Arkkitehtuurimalli. Yhteysmallit. Ohjelmistotuotanto, järjestelmämallit Kevät 2005 5. Järjestelmämallit Käyttäjävaatimukset pitää kirjoittaa luonnollisella kielellä. Niitä lukevat myös asiakkaat ja loppukäyttäjät. Järjestelmävaatimukset kannattaa kirjoittaa jollain rakenteisella kuvaustavalla.

Lisätiedot

Ohjelmistotuotanto s

Ohjelmistotuotanto s Laadunvarmistustekniikoita Ohjelmistotuotanto 1 testaus (testing) ohjelman suorittamista tarkoituksena löytää virheitä tarkastukset (inspections, reviews) asiantuntijoiden suorittamia dokumentin (voi olla

Lisätiedot

Convergence of messaging

Convergence of messaging Convergence of messaging Testaussuunnitelma The Converge Group: Mikko Hiipakka Anssi Johansson Joni Karppinen Olli Pettay Timo Ranta-Ojala Tea Silander Helsinki 20. joulukuuta 2002 HELSINGIN YLIOPISTO

Lisätiedot

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3 AgilElephant SEPA Diary Petri Kalsi 55347A Heikki Salminen 51137K Tekijä: Petri Kalsi Omistaja: ElectricSeven Aihe: PK&HS Sivu 1 / 7 Dokumenttihistoria Revisiohistoria Revision päiväys: 29.11.2004 Seuraavan

Lisätiedot

58160 Ohjelmoinnin harjoitustyö

58160 Ohjelmoinnin harjoitustyö 58160 Ohjelmoinnin harjoitustyö Testaus 30.3.2009 Tuntiop. Sami Nikander sami.nikander@helsinki.fi 58160 Ohjelmoinnin harjoitustyö, Sami Nikander 30.3.2009 1 Testaus Ohjelman systemaattista tutkimista

Lisätiedot

Ohjelmistotuotanto, prosessit Syksy Ohjelmistotuotantoprosessi. Prosessimalli. Prosessimallien perustehtävät. Prosessimallin vaihejako

Ohjelmistotuotanto, prosessit Syksy Ohjelmistotuotantoprosessi. Prosessimalli. Prosessimallien perustehtävät. Prosessimallin vaihejako 2. Ohjelmistotuotantoprosessi peruskäsitteet: prosessimalli: mahdollisimman yleisesti sovellettavissa oleva ohjeisto ohjelmistojen tuottamiseen ohjelmistotuotantoprosessi: yrityksessä käytössä oleva tapa

Lisätiedot

Laadunvarmistustekniikat

Laadunvarmistustekniikat Laadunvarmistustekniikat Ohjelmistojen laadunvarmistustekniikoita: testaus (testing) ohjelman suorittamista tarkoituksena löytää virheitä tarkastukset (inspections, reviews) asiantuntijoiden suorittamia

Lisätiedot

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI Vesa Tenhunen Tarkastusmenettelyt Keino etsiä puutteita ohjelmakoodeista, dokumenteista ym. ohjelmistoprosessissa syntyvästä materiaalista Voidaan käyttää kaikissa

Lisätiedot

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } } Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin.

Lisätiedot

Testaussuunnitelma. Oppimistavoitteiden hallintajärjestelmä harri

Testaussuunnitelma. Oppimistavoitteiden hallintajärjestelmä harri Testaussuunnitelma Oppimistavoitteiden hallintajärjestelmä harri Helsinki 15.11.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti

Lisätiedot

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Ohjelmiston testaus ja laatu. Testausmenetelmiä Ohjelmiston testaus ja laatu Testausmenetelmiä Testausmenetelmiä - 1 Testauksen menetelmien päälähestymistapoina ovat black-box testi testaaja ei voi tutkia lähdekoodia testaus perustuu sovellukselle suunnitteluvaiheessa

Lisätiedot

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Copyright by Haikala. Ohjelmistotuotannon osa-alueet Copyright by Haikala Ohjelmistotuotannon osa-alueet Ohjelmiston elinkaari 1. Esitutkimus, tarvekartoitus, kokonaissuunnittelu, järjestelmäsuunnittelu (feasibility study, requirement study, preliminary

Lisätiedot

10. Tarkastukset. Tarkastusten rakenne

10. Tarkastukset. Tarkastusten rakenne 10. Tarkastukset Tarkastus (inspection) on tehokas analyysitekniikka, jota voidaan käyttää minkä tahansa projektin tuotoksen läpikäyntiin. Tarkastus on systemaattinen ja yksityiskohtainen katselmointi

Lisätiedot

Tarkastusten rakenne. 10. Tarkastukset. Tuotoksen tekijän rooli. Tarkastustiimi. Tarkastusprosessin vaiheet. Tarkastusprosessi

Tarkastusten rakenne. 10. Tarkastukset. Tuotoksen tekijän rooli. Tarkastustiimi. Tarkastusprosessin vaiheet. Tarkastusprosessi 10. Tarkastukset Tarkastus (inspection) on tehokas analyysitekniikka, jota voidaan käyttää minkä tahansa projektin tuotoksen läpikäyntiin. Tarkastus on systemaattinen ja yksityiskohtainen katselmointi

Lisätiedot

Testaussuunnitelma. PUSU-ryhmä. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testaussuunnitelma. PUSU-ryhmä. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testaussuunnitelma PUSU-ryhmä Helsinki 13.12.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (9 op) Projektiryhmä Jussi Hynninen

Lisätiedot

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmistojen mallintaminen. Luento 11, 7.12. Ohjelmistojen mallintaminen Luento 11, 7.12. Viime viikolla... Oliosuunnittelun yleiset periaatteet Single responsibility eli luokilla vain yksi vastuu Program to an interface, not to concrete implementation,

Lisätiedot

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta 582101 - Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta 1 Toteutuksesta ja testauksesta Suunnitteluprosessista Tarkan tason luokkasuunnittelu Siirtyminen UML-kaavioista Java-toteutukseen

Lisätiedot

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testausraportti Orava Helsinki 5.5.2005 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Juhani Bergström Peter

Lisätiedot

Tietojärjestelmän osat

Tietojärjestelmän osat Analyysi Yleistä analyysistä Mitä ohjelmiston on tehtävä? Analyysin ja suunnittelun raja on usein hämärä Ei-tekninen näkökulma asiakkaalle näkyvien pääkomponenttien tasolla Tietojärjestelmän osat Laitteisto

Lisätiedot

1. Johdanto. Ohjelmistotuotannon ongelmia

1. Johdanto. Ohjelmistotuotannon ongelmia 1. Johdanto Mitä ohjelmistotuotanto on? ohjelmointi + ohjelmisto + tekniikat + insinööritaito + kurinalainen työskentely Määritelmä (60-luvun ohjelmistokriisi): The establishment and use of sound principles

Lisätiedot

Testaustyökalut. Luento 11 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science

Testaustyökalut. Luento 11 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science Testaustyökalut Luento 11 Antti-Pekka Tuovinen 25 April 2013 1 Tavoitteet Työkalutyyppejä Testauksen hallinta Testien määrittely Staattinen analyysi Dynaaminen testaus 25 April 2013 2 1 Työkalut ja testaus

Lisätiedot

ELM GROUP 04. Teemu Laakso Henrik Talarmo

ELM GROUP 04. Teemu Laakso Henrik Talarmo ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................

Lisätiedot

Verifiointi ja validointi

Verifiointi ja validointi Verifiointi ja validointi 581259 Ohjelmistotuotanto 170 Verifiointi ja validointi (V & V) V&V:n tavoitteena on varmistaa, että Ohjelmisto vastaa määrityksiä (verifiointi) Ohjelmisto täyttää käyttäjän odotukset

Lisätiedot

Testaussuunnitelma. Asdf. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testaussuunnitelma. Asdf. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testaussuunnitelma Asdf Helsinki 22.2.2008 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Kuisma Sami Louhio

Lisätiedot

Juha Taina, Marko Salmenkivi ja Kjell Lemström,

Juha Taina, Marko Salmenkivi ja Kjell Lemström, Verifiointi ja validointi (V & V) Verifiointi ja validointi V&V:n tavoitteena on varmistaa, että Ohjelmisto vastaa määrityksiä (verifiointi) Ohjelmisto täyttää käyttäjän odotukset (validointi) V&V:ta tehdään

Lisätiedot

Testaussuunnitelma. Karstula. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testaussuunnitelma. Karstula. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testaussuunnitelma Karstula Helsinki 20.4.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Juha-Pekka Juutilainen

Lisätiedot

Testausprosessin vaatimukset. 2. Testausprosessi (Artikkelit) Vesiputousmallin ongelmia. V-mallin neljä osavaihetta. Testausprosessimalli V-malli

Testausprosessin vaatimukset. 2. Testausprosessi (Artikkelit) Vesiputousmallin ongelmia. V-mallin neljä osavaihetta. Testausprosessimalli V-malli 2. ausprosessi (Artikkelit) Nykyisin useimpien prosessimallien lähtökohta on, että testaus on oleellinen osa ohjelmistotuotantoprosessia. Itse asiassa huolellinen testaus vie helposti 50% tai enemmän käytettävistä

Lisätiedot

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus Yhteenveto Ohjelmistotuotanto vs. muut insinööritieteet Monimutkaisuus Näkymättömyys (Usein näennäinen) luotettavuus ja edullisuus Muunnettavuus Epäjatkuvuus virhetilanteissa Skaalautumattomuus Copyright

Lisätiedot

1. Johdanto. Ohjelmistotuotannon piirteitä. Ohjelmisto ja järjestelmä. Osajärjestelmät ja käyttäjät. Järjestelmän ja ohjelmiston laadinta

1. Johdanto. Ohjelmistotuotannon piirteitä. Ohjelmisto ja järjestelmä. Osajärjestelmät ja käyttäjät. Järjestelmän ja ohjelmiston laadinta 1. Johdanto Termi Ohjelmistotuotanto (Software Engineering) esiteltiin ensimmäistä kertaa 1968 pidetyssä NATO:n konferenssissa. Termi määriteltiin näin: The establishment and use of sound engineering principles

Lisätiedot

UCOT-Sovellusprojekti. Testausraportti

UCOT-Sovellusprojekti. Testausraportti UCOT-Sovellusprojekti Testausraportti Ilari Liukko Tuomo Pieniluoma Vesa Pikki Panu Suominen Versio: 0.02 Julkinen 11. lokakuuta 2006 Jyväskylän yliopisto Tietotekniikan laitos Jyväskylä Hyväksyjä Päivämäärä

Lisätiedot

Dynaaminen analyysi IV

Dynaaminen analyysi IV Dynaaminen analyysi IV Luento 9 Antti-Pekka Tuovinen 16 April 2013 1 Tavoitteet Kokemusperäinen testitapausten suunnittelu Yhteenvetoa suunnittelutekniikoista 16 April 2013 2 1 Testitapausten kokemusperäinen

Lisätiedot

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen, mallintaminen ja UML 582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

Ohjelmiston testaussuunnitelma

Ohjelmiston testaussuunnitelma Ohjelmiston testaussuunnitelma Ryhmän nimi: Tekijä: Toimeksiantaja: Toimeksiantajan edustaja: Muutospäivämäärä: Versio: Katselmoitu (pvm.): 1 1 Johdanto Tämä lukaa antaa yleiskuvan koko testausdokumentista.

Lisätiedot

Ohjelmiston toteutussuunnitelma

Ohjelmiston toteutussuunnitelma Ohjelmiston toteutussuunnitelma Ryhmän nimi: Tekijä: Toimeksiantaja: Toimeksiantajan edustaja: Muutospäivämäärä: Versio: Katselmoitu (pvm.): 1 1 Johdanto Tämä luku antaa yleiskuvan koko suunnitteludokumentista,

Lisätiedot

Dynaaminen analyysi III

Dynaaminen analyysi III Dynaaminen analyysi III Luento 8 Antti-Pekka Tuovinen 16 April 2013 1 Tavoitteet White box testitapausten suunnittelutekniikat Lausekattavuus Haarautumakattavuus Ehto- ja polkukattavuus Huomioita white

Lisätiedot

Testaussuunnitelma. Ohjelmistotuotantoprojekti Nero. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testaussuunnitelma. Ohjelmistotuotantoprojekti Nero. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testaussuunnitelma Ohjelmistotuotantoprojekti Nero Helsinki 5.11.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti ( ov) Projektiryhmä

Lisätiedot

Dynaaminen analyysi IV Luento 6 Antti-Pekka Tuovinen

Dynaaminen analyysi IV Luento 6 Antti-Pekka Tuovinen Dynaaminen analyysi IV Luento 6 Antti-Pekka Tuovinen 23 April 2018 1 Tavoitteet Kokemusperäinen testitapausten suunnittelu Yhteenvetoa suunnittelutekniikoista 23 April 2018 2 Testitapausten kokemusperäinen

Lisätiedot

1. Johdanto. Ohjelmistotuotannon piirteitä

1. Johdanto. Ohjelmistotuotannon piirteitä 1. Johdanto Termi Ohjelmistotuotanto (Software Engineering) esiteltiin ensimmäistä kertaa 1968 pidetyssä NATO:n konferenssissa. Termi määriteltiin näin: The establishment and use of sound engineering principles

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Test-Driven Development

Test-Driven Development Test-Driven Development Ohjelmistotuotanto syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole

Lisätiedot

Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen

Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen Dynaaminen analyysi III Luento 5 Antti-Pekka Tuovinen www.cs.helsinki.fi 16 April 2018 1 Tavoitteet White box testitapausten suunnittelutekniikat Lausekattavuus Haarautumakattavuus Ehto- ja polkukattavuus

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

1. Johdanto. Ohjelmistotuotannon piirteitä

1. Johdanto. Ohjelmistotuotannon piirteitä 1. Johdanto Termi Ohjelmistotuotanto (Software Engineering) esiteltiin ensimmäistä kertaa 1968 pidetyssä NATO:n konferenssissa. Termi määriteltiin näin: The establishment and use of sound engineering principles

Lisätiedot

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

812341A Olio-ohjelmointi Peruskäsitteet jatkoa 812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää

Lisätiedot

Dynaaminen analyysi I

Dynaaminen analyysi I Dynaaminen analyysi I Luento 6 Antti-Pekka Tuovinen 4 April 2013 1 Tavoitteet Testitapausten suunnittelun ja suorituksen perusteet Black-Box testitapausten suunnittelu Ekvivalenssiluokat Raja-arvo (reuna-arvo)

Lisätiedot

Yhteenvetoa, pieniä laajennuksia, tulevaisuuden haasteita

Yhteenvetoa, pieniä laajennuksia, tulevaisuuden haasteita Yhteenvetoa, pieniä laajennuksia, tulevaisuuden haasteita 581259 Ohjelmistotuotanto 378 Lemström, 2006-2011 581259 Ohjelmistotuotanto Kiitos Tuomolle kuvasta 379 Ohjelmistotuotannon perustehtävät projektinhallinta:

Lisätiedot

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 3. Komponentit ja rajapinnat 3.1 Komponenttien idea: ohjelmistotuotannon rationalisointi 3.2 Mikä on ohjelmistokomponentti? 3.3 Komponentit ohjelmistoyksikköinä 3.4 Rajapinnat 3.6 Komponenttien räätälöinti

Lisätiedot

TESTIRAPORTTI - VYM JA KANTA Virtuaaliyhteisöjen muodostaminen Versio 1.0

TESTIRAPORTTI - VYM JA KANTA Virtuaaliyhteisöjen muodostaminen Versio 1.0 TESTIRAPORTTI - VYM JA KANTA Versio 1.0 i Sisällysluettelo 1. YLEISTÄ 2 1.1. Dokumentin tarkoitus ja yleisiä toimintaohjeita 2 1.2. Viittaukset muihin dokumentteihin 2 2. SUORITETTAVA TESTI 3 2.1. Testauksen

Lisätiedot

Lohtu-projekti. Testaussuunnitelma

Lohtu-projekti. Testaussuunnitelma Lohtu-projekti Testaussuunnitelma Versiohistoria: 1.0 19.2.2003 1. versio Mari 1.1 20.2.2003 Muutoksia Mari 1.2 25.2.2003 Katselmoinnissa esiin tulleet Mari muutokset 1.3 17.3.2003 2. syklissä tehtävät

Lisätiedot

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen

Lisätiedot

T Tietojenkäsittelyopin ohjelmatyö. Testiraportti, vaihe T1. Tietokonegrafiikka-algoritmien visualisointi. Testiraportti, vaihe T1

T Tietojenkäsittelyopin ohjelmatyö. Testiraportti, vaihe T1. Tietokonegrafiikka-algoritmien visualisointi. Testiraportti, vaihe T1 T-76.115 Tietojenkäsittelyopin ohjelmatyö Sisältö Tästä dokumentista ilmenee T1-vaiheessa suoritettu testaus, sen tulokset ja poikkeamat testisuunnitelmasta. Päivämäärä 1.12.2002 Projektiryhmä Keimo keimo-dev@list.hut.fi

Lisätiedot

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi. 11. Rajapinnat 11.1 Sisällys Johdanto. Abstrakti luokka vai rajapinta? Rajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen

Lisätiedot

UML -mallinnus TILAKAAVIO

UML -mallinnus TILAKAAVIO UML -mallinnus TILAKAAVIO SISÄLLYS 3. Tilakaavio 3.1 Tilakaavion alku- ja lopputilat 3.2 Tilan nimi, muuttujat ja toiminnot 3.3 Tilasiirtymä 3.4 Tilasiirtymän vai tilan toiminnot 3.5 Tilasiirtymän tapahtumat

Lisätiedot

13/20: Kierrätys kannattaa koodaamisessakin

13/20: Kierrätys kannattaa koodaamisessakin Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy

Lisätiedot

Test-Driven Development

Test-Driven Development Test-Driven Development Syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole keksiä kaikkia mahdollisia

Lisätiedot

Onnistunut Vaatimuspohjainen Testaus

Onnistunut Vaatimuspohjainen Testaus Onnistunut Vaatimuspohjainen Testaus Kari Alho Solution Architect Nohau Solutions, Finland Sisältö Mitä on vaatimuspohjainen testaus? Vaatimusten ymmärtämisen haasteet Testitapausten generointi Työkalujen

Lisätiedot

1. Johdanto. Ohjelmistotuotannon piirteitä. Ohjelmisto ja järjestelmä. Osajärjestelmät ja käyttäjät. Järjestelmän ja ohjelmiston laadinta

1. Johdanto. Ohjelmistotuotannon piirteitä. Ohjelmisto ja järjestelmä. Osajärjestelmät ja käyttäjät. Järjestelmän ja ohjelmiston laadinta 1. Johdanto Termi Ohjelmistotuotanto (Software Engineering) esiteltiin ensimmäistä kertaa 1968 pidetyssä NATO:n konferenssissa. Termi määriteltiin näin: The establishment and use of sound engineering principles

Lisätiedot

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta 582101 - Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta 1 Toteutuksesta ja testauksesta Suunnitteluprosessista Tarkan tason luokkasuunnittelu Siirtyminen UML-kaavioista Java-toteutukseen

Lisätiedot

Dynaaminen analyysi II

Dynaaminen analyysi II Dynaaminen analyysi II Luento 7 Antti-Pekka Tuovinen 9 April 2013 1 Tavoitteet Black-box testitapausten suunnittelutekniikat II Tilamallien käyttö Syys-seurausverkot ja päätöstaulut Käyttötapaukset Yhteenveto

Lisätiedot

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien

Lisätiedot

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit TIE-20100 Tietorakenteet ja algoritmit 1 TIE-20100 Tietorakenteet ja algoritmit TIE-20100 Tietorakenteet ja algoritmit 2 Lähteet Luentomoniste pohjautuu vahvasti prof. Antti Valmarin vanhaan luentomonisteeseen

Lisätiedot

11/20: Konepelti auki

11/20: Konepelti auki Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon

Lisätiedot

Testaussuunnitelma. Pizzeria - Pitseria HAAGA-HELIA ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma. WebPizza

Testaussuunnitelma. Pizzeria - Pitseria HAAGA-HELIA ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma. WebPizza Testaussuunnitelma Pizzeria - Pitseria HAAGA-HELIA ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma Versio 1.0 Ehdotus Laatija Raine Kauppinen VERSIOHISTORIA Versionotyyppi Versio- Päiväys Tekijä

Lisätiedot

Uudelleenkäytön jako kahteen

Uudelleenkäytön jako kahteen Uudelleenkäyttö Yleistä On pyritty pääsemään vakiokomponenttien käyttöön Kuitenkin vakiokomponentit yleistyneet vain rajallisilla osa-alueilla (esim. windows-käyttöliittymä) On arvioitu, että 60-80% ohjelmistosta

Lisätiedot

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.

Lisätiedot

1. Johdanto. Ohjelmistotuotannon piirteitä

1. Johdanto. Ohjelmistotuotannon piirteitä 1. Johdanto Termi Ohjelmistotuotanto (Software Engineering) esiteltiin ensimmäistä kertaa 1968 pidetyssä NATO:n konferenssissa. Termi määriteltiin näin: The establishment and use of sound engineering principles

Lisätiedot

Määrittelydokumentti NJC2. Helsinki 11.2.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Määrittelydokumentti NJC2. Helsinki 11.2.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Määrittelydokumentti NJC2 Helsinki 11.2.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti ( ov) Projektiryhmä Eero Anttila Olli

Lisätiedot

UML- mallinnus: Tilakaavio

UML- mallinnus: Tilakaavio UML- mallinnus: Tilakaavio Karkea kuvaus UML- kaavioiden käytöstä ohjelmistonkehityksen eri vaiheissa ja tehtävissä. Mallinnus tilakaavioilla Tilakaaviolla kuvataan yhden luokan olioiden tilan muuttumista

Lisätiedot

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002 JReleaser Yksikkötestaus ja JUnit Mikko Mäkelä 6.11.2002 Sisältö Johdanto yksikkötestaukseen JUnit yleisesti JUnit Framework API (TestCase, TestSuite) Testien suorittaminen eri työkaluilla Teknisiä käytäntöjä

Lisätiedot

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen

Lisätiedot

Projektisuunnitelma. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Projektisuunnitelma. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Projektisuunnitelma KotKot Helsinki 22.9.2008 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (9 + 1 op) Projektiryhmä Tuomas Puikkonen

Lisätiedot

3. Testaus osana ohjelmistoprosessia

3. Testaus osana ohjelmistoprosessia 3. Testaus osana ohjelmistoprosessia Ohjelmistotuotanto on paljon muutakin kuin testaamista. Mutta miten testaus liitetään ohjelmistoprosessiin? Tässä kohdassa esitellään ns. testauksen V-malli ja siihen

Lisätiedot

Menetelmäraportti Ohjelmakoodin tarkastaminen

Menetelmäraportti Ohjelmakoodin tarkastaminen Menetelmäraportti Ohjelmakoodin tarkastaminen Sisällysluettelo 1. Johdanto...3 2. Menetelmän kuvaus...4 2.1. Tarkastusprosessi...4 2.1.1. Suunnittelu...4 2.1.2. Esittely...5 2.1.3. Valmistautuminen...5

Lisätiedot

Katselmoinnit. review) Katselmoinnit (review( Mitä ovat katselmoinnit? Katselmoinnin määritelmä (IEEE 1988)

Katselmoinnit. review) Katselmoinnit (review( Mitä ovat katselmoinnit? Katselmoinnin määritelmä (IEEE 1988) Katselmoinnit Johdatus ohjelmistotekniikkaan Sami Kollanus 19.10.2004 Katselmoinnin määritelmä (IEEE 1988) An evaluation of software element(s) or projects status to ascertain discrepancies from planned

Lisätiedot