9. Ohjelmistotyö. 9.1 Johdanto

Koko: px
Aloita esitys sivulta:

Download "9. Ohjelmistotyö. 9.1 Johdanto"

Transkriptio

1 148 Sulautettu ohjelmointi 9. Ohjelmistotyö Vaikka sulautettujen järjestelmien ohjelmointi sinänsä ei periaatteessa juurikaan eroa muusta ohjelmoinnista, on joitakin erityispiirteitä, jotka ovat voimakkaammin läsnä sulautettujen järjestelmien suunnittelussa ja toteutuksessa. Käymme seuraavassa läpi joitakin tällaisia ominaisuuksia. Lisäksi esittelemme myös jonkin verran hyväksi osoittautuneita käytäntöjä. 9.1 Johdanto Sulautettujen järjestelmien erityispiirteitä ovat se, että kehitystyö, ja usein myös mahdollisuuksien mukaan testaus, suoritetaan eri ympäristössä kuin missä ohjelmaa tullaan lopulta suorittamaan. Muita erityispiirteitä ovat paitsi ohjelmiston testaus myös laitteiston toiminnan oikeellisuuden varmentaminen, sekä tarpeen mukaan myös ajossa olevan ohjelmiston päivittäminen, joskus jopa siten, että käyttökatkot eivät ole sallittuja. Oman haasteensa tuo mukanaan se, että monet järjestelmät on rakennettava käyttäen varsin harvinaisia ja erikoislaatuisia perustyökaluja, kuten esimerkiksi kääntäjiä, joihin voi liittyä erilaisia ongelmia. Tästä syystä on usein aiheellista testata myös kehitysympäristö rakentamalla minimaalinen versio ohjelmistosta, joka kuitenkin on mahdollista käynnistää aidossa kohdeympäristössä. Koska rajapintaerojen lisäksi sulautetussa järjestelmässä on usein sellaisia laitteita, joita ei kehitysympäristössä ole käytettävissä, ei lopullista testausta voida tehdä kuin vasta kohdekoneessa. Jotta kohdekoneella tehtävää testausta olisi mahdollisimman vähän, käytetään apuna testiympäristöjä. Tällainen testiympäristö on kehityskoneessa toimiva ohjelmisto, joka toteuttaa kohdekoneen ominaisuudet mahdollisimman tarkkaan ja simuloi niitä osia, joita ei voida muulla tavalla toteuttaa.

2 Ohjelmistotyö 149 Käytännössä kehitysympäristö voi olla hyvinkin monimutkainen, varsinkin, jos sama ohjelmisto on yhtä aikaa käytössä eri kohdekoneissa. Ohjelmointiympäristönä voi toimia työntekijän työasema, ristikäännöskoneena toinen, verkossa oleva kone ja testausympäristönä kolmas työasematyyppinen kone. Neljäs kone on sitten se varsinainen kohdekone tai -laite, jolle ohjelmisto siirretään tuotantokäyttöä ja -testejä varten. Tällaisessa ympäristössä ohjelmoijalta vaaditaan harvinaisen tiukkaa itsekuria, jotta ohjelmistojen siirrettävyys ympäristöstä toiseen olisi mahdollisimman helppoa ja ympäristökohtaiset erityistarpeet pieniä. Yleisin ohjelmointikieli sulautetuissa järjestelmissä on C, jonka osuus on yli 60 % 20. C++:n osuus on yli 20 %. Itse asiassa C:n osuus kasvanut viime vuosina; keväällä 2010 se ohitti Javan yleisimpänä käytettynä kielenä (Tiobe 2010). Pääohjelmointikielestä riippumatta tietyt järjestelmän osat vaativat edelleen assemblyn käyttöä, varsinkin kaikkein suorituskykykriittisimmissä ja laitteistonläheisimmissä tilanteissa. On tosin myös todettava, että joidenkin suoritinten käskykannat ovat niin monimutkaisia, että ei ole enää aivan selvää, tarjoaako assemblyn käyttö merkittävää suorituskyvyn lisäystä. Sulautetuissa järjestelmissä tyypillisten laitteistojen tapauksessa näin kuitenkin yleensä on edelleen, johtuen ehkä siitä, että kaikkein uusimpia ja erikoisimpia laitteita ei yleensä oteta käyttöön sulautetussa ympäristössä. 9.2 Ristikehitys Ristikehityksellä tarkoitetaan sitä, että ohjelmat kirjoitetaan ja käännetään eri arkkitehtuurin tai käyttöjärjestelmän koneella kuin missä niitä tullaan käyttämään. Sulautetuissa järjestelmissä kohdekone on yleensä sellainen, että normaali ohjelmankehitys siinä on mahdotonta. Toisaalta, vaikka kehittäminen olisikin periaatteessa mahdollista, sitä ei aina kannata tehdä kohdekoneessa, koska sen ominaisuudet eivät välttämättä toimi hyvin kehitysympäristönä. Yksinkertaisimmillaan ristikehityksessä ohjelmat kirjoitetaan ja käännetään toisella koneella ja siirretään sitten ajettavaksi lopulliseen ympäristöön (kuva 9.1). Tällöin ristikehitys on vain ohjelmoinnin alusta, eikä esimerkiksi auta testausta lainkaan. 20. Michel Barr: Real men program in C,

3 150 Sulautettu ohjelmointi Kehitystyöasema Laite Lähdekoodi ristikäännös Laitteelle käännetty siirto Laitteessa suoritettava Kuva 9.1 Ristikäännös Usein ristikehityksessä on käytettävissä kääntäjä, joka tuottaa koodia ristikehityskoneelle. Tällöin voidaan ainakin osa moduulitestausta tehdä tavanmukaisin menetelmin ristikehitysympäristössä. Mahdollinen riski tässä on muun muassa siinä, että kohdekoneen kääntäjä toimii hieman eri tavalla, jolloin "oikeaksi" testattu ohjelmisto ei toimikaan kohdekoneessa oikein. Kääntäjän virhettä suurempi ongelma on se, jos käytössä olevien käyttöjärjestelmien rajapinnat ovat erilaiset. Tällaiset rajapintaongelmat voidaan kiertää tekemällä oma rajapintamoduuli, jonka toteutus on kehitys- ja kohdeympäristössä erilainen, mutta jonka rajapinta ei muutu ympäristöstä toiseen. Luonnoillisesti tässä ratkaisussa ongelmaksi tulee tämän rajapinnan yhtenevä toteutus kummassakin ympäristössä. Laite, johon ohjelmisto asennetaan, saattaa myös vaatia jotain erikoistoimenpiteitä, ennen kuin ohjelmiston suoritus on mahdollista. Esimerkiksi moniin matkapuhelimiin pitää uudet sovellukset tuoda asennuspaketteina, joihin on mahdollista liittää erilaisia varmenteita. Näiden varmenteiden avulla voidaan myöhemmin varmentaa, kuka sovelluksen on toteuttanut. Tällaiset varmenteet ovat kuitenkin verraten harvinaisia, ja useimmiten ohjelmoijalle riittää ohjelmiston siirtäminen oikeaan paikkaan laitteessa, josta se käynnistyy automaattisesti, kun laitteeseen kytketään virta päälle. 9.3 Testaus ja virheiden jäljitys yleensä Virheiden jäljittäminen on sulautetuissa järjestelmissä hankalampaa kuin tavallisesti, koska ohjelmaa ei ainakaan kokonaan voi testata samassa ympäristössä kuin missä sitä tehdään. Tämä tarkoittaa sitä, että normaaleja jäljitysohjelmia (debug) ei voida käyttää, eikä tavallisesti käytössä olevia testausohjelmiakaan ainakaan koko ohjelmiston osalta. Lisäongelmista mainittakoon se, että pienetkin muutokset ohjelmistossa esimerkiksi ajoitusongelmien etsimiseksi saattavat peittää itse on-

4 Ohjelmistotyö 151 gelman, eikä varsinkaan aloitusvaiheessa ole varmuutta siitä, testataanko laitteistoa vai ohjelmistoa tai ainakaan siitä, kummassa mahdollinen vika on. Itse asiassa havaitut ongelmat voivat johtua jopa laitteiston ja ohjelmiston yhteistoiminnasta jossakin tietyssä ääritilanteessa. Tietenkin haaveena on täysin virheetön järjestelmä, mutta siihen on käytännössä hyvin vaikea ellei mahdoton päästä. Ratkaisuja on yritetty löytää hyvin erilaisista lähtökohdista lähtien, toiset lähtien työn organisoinnista, toiset formaaleista menetelmistä. Myös niin sanottu Cleanroom-ideologia, jossa lähtökohtaisesti pyritään estämään virheiden syntyminen joka kohdassa prosessia jo tehtyjen virheiden korjaamisen sijaan, on mahdollinen lähestymistapa, varsinkin silloin, kun ollaan tekemisissä ajastuksiin liittyvien yksityiskohtien kanssa Virheen paikantaminen Kun virhe on havaittu, sen paikantaminen ohjelmasta voi olla melkoinen ongelma, sillä mitä monimutkaisempi ohjelma, sitä hankalampi on tunnistaa virheen alkuperä. Virhe kun on voinut syntyä aivan eri puolella ohjelmistoa, kuin missä se havaitaan. Monen prosessin (säikeen) ympäristössä vika on voinut tulla toisesta prosessista, jolloin vikaa etsitään aluksi aivan väärästä paikasta, tai olla peräisin vaikkapa oheislaitteen virheellisestä toiminnasta. Hankalimmat viat johtuvat ajoituksen pettämisestä: tällöin järjestelmä voi toimia melkein aina, mutta sekoaa ennalta aavistamattomasti silloin tällöin. Yhdistelmä, joka aiheuttaa vian, voi olla niin harvinainen, ettei mikään testausjärjestelmä voi sitä varmasti havaita. Mikäli vika on todella harvinainen, sitä ei välttämättä tarvitse edes korjata, koska laitteen elinikä tai laitteistotason vikojen väliaika voi olla lyhyempi kuin vian ilmenemisfrekvenssi. Toisaalta, jos laite on tarpeeksi kriittinen, vika on tällaisessakin tapauksessa löydettävä ja korjattava. Koska ajoitusvirheet ovat erittäin hankalia havaita, tulisi järjestelmän ajastukset suunnitella etukäteen aivan vedenpitäviksi, jotta niitä ei myöhemmin tarvitsisi edes epäillä ongelmien syyksi. Omat ongelmansa tähän tuo tietenkin ylläpito, jonka seurauksena aiemmat oletukset saattavat osoittautua vääriksi esimerkiksi uuden, tehokkaamman laitteiston myötä. Myös dynaaminen muisti voi aiheuttaa hankalia ongelmia. Tämä sen takia, että sekä jäänneviittaus että roskaantuminen voivat ilmetä aivan eri kohdassa kuin missä itse virhe on. Tämän takia dynaamista

5 152 Sulautettu ohjelmointi muistinkäyttöä pyritään välttämään sulautetuissa järjestelmissä, kuten jo aiemminkin todettiin. Edellä oletettiin, että virhe on jotenkin havaittu. Kun virhe on havaittu, puolet ongelmasta on ohi: tarvitsee vain löytää se virhe ohjelmasta. Havaitsemattoman virheen löytäminen vasta vaikeaa onkin, sillä sitä etsiessä ei voi olla varma sen olemassaolosta, jolloin etsimisen varmaa lopetusehtoa ei ole olemassa. Testauksessa pyritään siihen, että mahdollisimman suuri osa virheistä havaitaan, paikannetaan ja korjataan. Yleisesti käytössä olevia testaustapoja ovat muun muassa testipedit ja pöytätestaus, joita käsittelemme seuraavassa. Näiden lisäksi tutustumme lyhyesti myös profilointiin, jonka käyttöön sulautetussa ympäristössä liittyy kuitenkin joitakin käytännön ongelmia Pöytätestaus Pöytätestauksesta on kaksi versiota, josta kevyempi tarkoittaa sitä, että ohjelman tekijä selittää toiselle ohjelmoijalle, mitä ohjelman pitäisi tehdä. Menetelmän kummallisuus on siinä, että kuuntelijan ei tarvitse edes ymmärtää, riittää, kun hän kuuntelee ja tekee välillä kysymyksiä. Usein näennäisesti tyhmimmät kysymykset ovat parhaita, sillä juuri itsestäänselvyyksien kohdalla syntyy eniten virheitä. Menetelmän teho lienee siinä, että voidakseen selittää toiminnan toiselle ohjelmoijalle alkuperäisen tekijän on selitettävä se paremmin kuin koskaan sen itsellensä tekisi. Raskaampi versio pöytätestauksesta on sitä, että ohjelmaa käydään läpi rivi riviltä, ja toiminta tarkistetaan ikään kuin suorittamalla käskyt käsin. Tällä menetelmällä pitäisi löytyä myös siirrettävyyteen vaikuttavia ongelmia, kuten sijoituskäsky mallia i = i++; joka on syntaksiltaan kunnossa, mutta semantiikaltaan määrittelemätön. Tästä esimerkistä voi edelleen johtaa sen, että C ei ole edes sulautettujen järjestelmien tekemiseen paras mahdollinen kieli, vaikka sitä paljon toteutustyössä käytetäänkin. Toisaalta C:llä on myös hyvät puolensa, sillä C-kääntäjiä on saatavilla useisiin eri laiteympäristöihin. Lisäksi tavallisimmat C-kirjastot siis ne, jotka tarjoavat funktioita kuten itoa, fopen tai printf ovat niin yksinkertaisia, että ne voidaan tarvittaessa toteuttaa osana omaa sovellusta, jos niitä ei syystä tai toisesta ole valmiina saatavilla kyseiseen ympäristöön. Sen sijaan esimerkiksi C++:n kirjastot, kuten vaikkapa Standard Template Library (STL), ovat jo niin mon-

6 Ohjelmistotyö 153 imutkaisia, että niiden siirto ympäristöstä toiseen vaatii yleensä merkittävää siirtotyötä Testipedit Testipeti on ohjelmisto, jolla testattavan järjestelmän moduuleita voidaan testata joko interaktiivisesti käyttäjän ohjaamana tai eräajotyyppisesti suorittamalla etukäteen tallennetut käskyt ja vertaamalla tulosta odotettuun. Aina, kun ohjelmaan tehdään muutos, oli se sitten korjaus tai uuden ominaisuuden lisääminen, tulee testiaineisto ajaa uudelleen järjestelmän läpi sen varmistamiseksi, että muutos ei ole vaikuttanut vanhoihin, toimiviin ominaisuuksiin (niin sanottu regressiotestaus). Testausaineiston tekeminen riippuu siitä, miten paljon ohjelman toteutuksesta tiedetään. Kokonaisjärjestelmästä vastuussa oleva yritys voi varmistaa alihankkijalta saatua koodia testaamalla sen vielä itse. Tällöin on kyseessä "musta laatikko" -testaus, koska testi perustuu vain järjestelmän rajapintaan ja toiminnalliseen määrittelyyn. "Valkoinen laatikko" tai paremminkin läpinäkyvä laatikko tarkoittaa sitä, että moduulin toteutustapa tunnetaan ainakin pääpiirteissään, jolloin testit pyritään tekemään niin, että mahdollisimman suuri osa ohjelmasta saadaan testattua. Testin kattavuus on siis hyvä, joskaan vähänkään monimutkaisemmassa ympäristössä harvoin täysi sata prosenttia. Testipeti on valmisohjelmisto, johon testattava ohjelmisto tai sen osa voidaan liittää. Voidaan tehdä myös niin, että kirjoitetaan erillisiä testaus(pää)ohjelmia moduulien testaukseen. Laajasti jälkimmäistä menetelmää ei kannata käyttää, mutta pienessä mittakaavassa tämäkin toimii Profilointi Profilointia ei aina mainita testauksen yhteydessä. Profiloinnilla pyritään löytämään ne ohjelman osat, joissa ohjelma viipyy pisimpään. Tarkoituksena on tunnistaa ne ohjelman osat, jotka mahdollisissa ajoitusongelmissa on ensisijaisesti pyrittävä optimoimaan. Koska optimointiin ei pidä ryhtyä missään järjestelmässä, jos se ilman sitäkin täyttää järjestelmälle annetut vaatimukset, profiloinnin merkitys ei tavallisesti ole iso. Toisaalta pahimmillaan sulautettu järjestelmä on samaan aikaan sekä reaktiivinen että reaaliaikainen, jolloin profilointia voidaan hyvinkin tarvita, varsinkin, jos järjestelmässä on vaikeasti saavutettavissa olevia kovia reaaliaikavaatimuksia.

7 154 Sulautettu ohjelmointi Profilointi tehdään yleensä kehitysympäristössä. Niinpä siihen liittyy kehitysympäristötestauksen yleiset ongelmat, koska kohdekoneen arkkitehtuuri voi olla niin erilainen, että tulos ei välttämättä paljasta oikeaa pullonkaulaa. Lisäksi profiloinnin aikana suoritettavat toimenpiteet, kuten profilointitiedon kerääminen ja tallettaminen esimerkiksi tiedostoon voivat vaikuttaa siihen, missä pullonkaula on. Yleensä näissäkin tilanteissa profilointi pystyy kuitenkin osoittamaan oikean ohjelman osan kohtalaisen hyvällä tarkkuudella. Siksi sen harkittua käyttöä voi perustella sulautetussa ympäristössä mahdollisista ongelmista huolimatta. 9.4 Testaus ja jäljitys kehitysympäristössä Vaikka koko sulautetun järjestelmän toimintaa ei voi testata kuin lopullisessa kohdelaitteessa, voidaan ainakin osa testauksesta tehdä myös järjestelmän kehitys- eli ohjelmointiympäristössä. Toisin sanoen osa moduulitestauksesta voidaan tehdä kehitysympäristössä Testaaminen ja jäljitys kehitysympäristön työkaluilla Kehitysympäristössä testaamisessa on montakin hyötyä: testaukseen ja virheiden jäljitykseen on käytettävässä laajemmat ja monipuolisemmat työkalut ja työskentely on nopeampaa. Lisäksi suoritettavaa sovellusta ei tarvitse siirtää kohdelaitteelle, vaan sitä voidaan ajaa suoraan kehitysympäristössä. Kehitysympäristön käytössä on myös ongelmansa: mikäli käyttöjärjestelmä tai suoritin on eri kuin kohdejärjestelmässä, voi jokin kutsu tai ohjelma toimia kehitysympäristössä, mutta ei kohdejärjestelmässä. Samallakin käyttöjärjestelmällä voi olla eroja sulautetussa ytimessä ja yleisessä joskin nämä erot eivät yleensä ole tarkoituksellisia. Eri suoritin johtaa myös eri kääntäjän käyttämiseen, jolloin mahdolliset kääntäjän virheet ovat erilaisia. Tämä voi tulla vastaan samallakin suorittimella, jos kehitysympäristön ja kohdeympäristön käyttöjärjestelmä on eri. Testaus eri kääntäjällä voi tuottaa toimivan tuloksen, mutta varsinaisen kohdekoneen kääntäjän virhe aiheuttaakin sitten yllätyksen, kun ohjelma siirretään lopulliseen kohteeseensa. Edellä olleista ongelmista huolimatta kehitysympäristössä testaaminen kannattaa aina, sillä sen avulla saadaan looginen toiminta oikeaksi. Parhaassa tapauksessa voidaan testata jopa kokonainen osajärjestelmä ja testaus on mahdollista tehdä kattavammaksi kuin kohde-

8 Ohjelmistotyö 155 järjestelmässä. Tämä kehitysympäristössä tapahtuva testaus ei kuitenkaan vapauta testauksesta lopullisessa järjestelmässä Järjestelmän simulointi Järjestelmän simuloinnissa varsinainen ohjelma käännetään kohdekoneen ymmärtämään muotoon, mutta sen sijaan, että ohjelmaa ajettaisiin kohdeympäristössä, sitä ajetaankin simulaattorin avulla kehitysympäristössä. Tässä ratkaisussa simulaattori tulkitsee kohdekoneen konekieltä ja toimii sen mukaan. Simulaattoriin on voitu kuvata myös järjestelmän oheislaitteet, joten tällä tavalla voidaan testata ja jäljittää virheitä myös oheislaitteita ohjaavista ohjelman osista, mikä pelkillä kehitysympäristön työkaluilla ei ole mahdollista. Simulaattorin avulla voidaan löytää myös kohdekoneen kääntäjän virheitä. Simulaattorin ongelmana on se, että oheislaitteiden toimintaa myös simuloidaan. Jos ohjattavana on monimutkainen kokonaisuus, ei simulointiympäristö pysty tuottamaan aitoja reaktioita järjestelmän tekemiin ohjauksiin. Tarpeeksi yksinkertaisissa tapauksissa reaktiot voivat olla lähes oikean kaltaisia, mutta koskaan ne eivät täydellisesti vastaa aidon järjestelmän vastineita. Simulaattorin avulla voidaan kuitenkin tehdä perustestaus ennen kuin ohjelmaa aletaan testata kohdelaitteessa, sillä aidossa ympäristössä testaaminen on oikeastaan aina merkittävästi hitaampaa ja kalliimpaa kuin simulaattoriympäristössä. Markkinoilla on simulaattoreita useimmille yleisille suorittimille, osa näistä on jopa ilmaisia mikä kyllä valitettavasti näkyy myös ominaisuuksien määrässä ja joskus myös toteutuksen laadussa (ja sitä myötä myös käyttökelpoisuudessa ohjelmistokehityksessä) Virtualisointi Simuloinnin lisäksi on kohdejärjestelmä mahdollista myös virtualisoida. Tällöin saavutetaan yleensä dynaamisempi joukko suorituksia, olettaen, että virtualisointi on mahdollista ulottaa niin pitkälle, että simuloitujen laitteiden sijaan voidaan käyttää jotain todellista järjestelmää, joka toimii samaan tapaan kuin mitä kohdejärjestelmä. Toinen virtualisoinnin tarjoama etu simulointiin verrattuna on, että mikäli valitaan laitteistot sopivasti, voidaan virtualisoitua järjestelmää käyttää kehitysympäristönä. Tämä on osoittautunut käytännössä

9 156 Sulautettu ohjelmointi käteväksi ratkaisuksi esimerkiksi silloin, kun kehitetään ohjelmistoja sulautettuun Linux-ympäristöön. Joissakin tapauksissa kokonaisia virtualisointi-imageja 21 voi olla saatavilla. Tällöin yleensä riittää imagen asentaminen oman virtualisointiympäristön avulla, joskin esimerkiksi näppäimistöasetusten ja muiden pienten käytännön yksityiskohtien kanssa voidaan törmätä ongelmiin, sillä imagen tekijä on voinut käyttää erilaista kokoonpanoa, kuin mitä kehittäjällä on käytettävissään. Samoin kuin simulaattoreita, myös virtualisointiympäristöjä on saatavilla useita, ja jopa ilmaiset ympäristöt ovat usein varsin käyttökelpoisia ainakin pienimuotoiseen ohjelmistokehitykseen. 9.5 Testaus ja jäljitys kohdejärjestelmässä Lopullinen testaus tehdään aina kohdejärjestelmässä. Koska usein laitteistoa tehdään yhtä aikaa ohjelmiston kanssa, tähän vaiheeseen päästään suhteellisen myöhään. Onkin sanottu, että sulautetun järjestelmän testaus alkaa siitä, mihin tavallisen ohjelmiston testaus loppuu Johdanto Tavallisen peräkkäisohjelman jäljittäminen (debug) on suhteellisen helppoa, sillä toiminta on aina vain lähtötietojen funktio. Suhteellinen helppous ei silti tee jäljityksestä varsinaisesti helppoa. Mikäli ohjelma jakautuu säikeisiin, tulee jäljityksestä tavallisessakin ympäristössä todella hankalaa. Sulautetuissa järjestelmissä jäljitys on vaikeampaa, koska normaali jäljitintekniikka ei pure, ja ohjelmiston rakenne on usein säikeisiin perustuva. Apuna käytetään emulaattoreita, logiikka-analysaattoreita, laitteeseen lisättyjä seurannan apuliittymiä tai näiden yhdistelmiä. Mikäli laitteessa on jokin monitorilaite, ohjelmat voivat välittää tilastaan tietoja tälle. Erityisiä apulaitteita ovat esimerkiksi merkkivaloina toimivat ledit. Näille voidaan ohjata suorittimen tila (esimerkiksi idle-tila), ajossa olevan prosessin numero (jos ledejä on tarpeeksi monta), tilatieto siitä, onko suoritin tekemässä keskeytyskäsittelyä, keskeytyskielto voimassa, vai onko suoritus kriittisellä alueella. Ledi voisi myös palaa monisuoritinkoneessa aktiivisen odotussilmukan (spin-lock) suorituksen ajan. 21. image ohjelman "kuva", sen binaarikoodi.

10 Ohjelmistotyö 157 Mitä tietoja ledien annetaan ilmoittaa on kiinni siitä, mikä kuvitellaan tai tiedetään järjestelmässä tärkeäksi. Esimerkiksi keskeytyskieltoledin ei pitäisi palaa jatkuvasti. Ledien sijaan tai niiden rinnalla voidaan tila siirtää myös toiselle koneelle tai logiikka-analysaattorille analysoitavaksi Logiikka-analysaattori Logiikka-analysaattoreilla voidaan tutkia normaalinopeudella toimivan suorittimen tai väylän liikennettä. Laitteella voidaan muun muassa ottaa vauhdissa kopio väyläliikenteestä ja tulkita siitä jälkeenpäin askel askeleelta, mitä laite on tehnyt. Hyvä analysaattori osaakin muuttaa bittivirran symboliseen konekoodimuotoon, jolloin ohjelmaa on helpompi seurata. Jos käytettävissä on muistikartta, jopa aliohjelmien ja staattisten muuttujien nimet saadaan selväkielisiksi. Koska yleensä ollaan kiinnostuneita jostain tietystä tapahtumasta, eikä kaikkea liikennettä voida tallettaa pitkältä ajalta, logiikkaanalysaattoreilla voidaan asettaa kopion teon alkamiselle ehto. Laukaisuehto voi esimerkiksi olla viittaaminen johonkin tiettyyn osoitteeseen tai jonkin signaalin tilamuutos. Logiikka-analysaattori pystyy laskemaan aliohjelmille tunnuslukuja, joita voidaan käyttää huoltotoiminnassa testaamaan, onko toiminta normaalia vai ei. Ideana on siis laittaa huoltokirjaan erilaisia laukaisuehtoja vastaavia tunnuslukuja, joiden avulla vikaa voidaan yrittää paikantaa. Niin kuin monessa muussakin vastaavassa tilanteessa, välimuistien käyttö pilaa hyvän yrityksen. Koska logiikka-analysaattori seuraa väylän liikennettä, välimuistin toiminta kätkee suuren osan todellisesta liikenteestä analysaattorilta. Tämän takia logiikka-analysaattori on käyttökelpoinen vain harvoissa tapauksissa, ja tämän tason testausta varten sopii paremmin emulointi Emulointi Emuloinnissa suorittimen paikalle laitetaan välikannan tai muu sellainen avulla piirikortti, joka pystyy tekemään suorittimen työt. Tyypillisesti emulaattorin avulla voidaan ajaa ohjelmaa askel kerrallaan, tarkastella muuttujien arvoja ja asetella niitä. On myös mahdollista ajaa ohjelmaa sen normaalilla nopeudella. Tässäkin tapauksessa ohjelman suoritus voidaan pysäyttää ennalta määrätyssä tilanteessa (viittaus tiettyyn muuttujaan, hyppy mielenkiintoiseen aliohjelmaan). Parhaimmilla em-

11 158 Sulautettu ohjelmointi ulaattoreilla työskentely vastaakin tavallisen järjestelmän debuggerilla työskentelyä. Joissakin suorittimissa on erityisiä järjestelmiä emuloinnin helpottamiseksi. Tällaisia ovat muun muassa ulkoinen kello, jonka saa hidastaa nollaan asti tai normaalin toiminnan kannalta turhia lisäliityntöjä, joiden avulla suoritin saadaan johonkin erikoistilaan. Vaikka emulaattorilla pystytäänkin tekemään paljon, sekään ei pysty kaikkeen. Esimerkiksi, jos vika on ajoituksessa, pienikin muutos nopeuksissa voi hävittää vian täysin. Mitenkään tavatonta ei "tavallisessakaan" ympäristössä ole se, että ohjelma toimii, kun aputulostuksia on, mutta ei toimi, kun niitä ei ole. Toinen esimerkkiongelma liittyy muisteihin: emulaattorissa on usein enemmän muistia kuin todellisessa järjestelmässä, jolloin kaikki viat eivät näy. Toisaalta ohjelma saattaa toimia kohdelaitteessa oikein (tai ainakin näennäisesti oikein), mutta se ei toimi lainkaan emulaattorissa. Tällainen tilanne voi tulla siitä, että ohjelma kirjoittaa lukumuistiin, joka kohdelaitteistossa ei vaikuta mitään, mutta saattaa emulaattorissa sekoittaa sen toiminnan, koska lukumuistin paikalla onkin luku kirjoitusmuistia. (Kirjoitus on väärin joka tapauksessa, mutta se ei ilmene kohdejärjestelmässä.) Erillinen testijärjestelmä Toteutettaessa kalliita sulautettuja järjestelmiä, joita ei voida helposti testata niiden normaalissa käyttöympäristössä, on joskus mahdollista rakentaa erillinen testiympäristö, jossa ohjelma osana kokonaisjärjestelmää voidaan testata niin lähellä todellista ympäristöä kuin mahdollista. Tällöin kyseeseen tulevat lähinnä avaruus- ja ilmailualan järjestelmät, joiden testaaminen voisi muuten olla mahdotonta. Erillisen testijärjestelmän joka sekin on mitä todennäköisimmin sulautettu järjestelmä rakentaminen lienee tällaisessa tapauksessa oma projektinsa, ja sitä tekemään valjastetaan oma projektiorganisaationsa. Periaate muistuttaa vähän ohjelmistotestauksen V-mallia, jossa ohjelmiston määrittelyä vastaa hyväksymistestaus, suunnitelmaa integrointitestaus, ja yksityiskohtaista suunnittelua moduulitestaus. Tässä tapauksessa malliin lisätään yksi taso, jossa lähtökohdaksi otetaan koko järjestelmän vaatimukset, ja rakennetaan niitä vastaava testiympäristö. Lienee ilmeistä, että erillisen testijärjestelmän rakentaminen on merkittävästi kalliimpaa kuin yleiskäyttöisten testijärjestelmien käyttö.

12 Ohjelmistotyö Tiedon siirto toiselle koneelle analysoitavaksi Mikäli järjestelmässä on käytettävissä joko erityinen liityntä tapahtumatietojen siirtämiseksi toiselle koneelle tai merkittävä osa järjestelmän tiedoista kulkee jotain väylää pitkin, voidaan tapahtumatietoja siirtää toiselle koneelle analysoitavaksi. Analysointi voi tapahtua joko välittömästi tai jälkikäteen. Jos tapahtumatiedot kaapataan normaalitoimintatilanteessa sisäiseltä väylältä, kaappaaminen ei vaikuta järjestelmän muihin ominaisuuksiin, ja saatu loki vastaa todellista toimintaa. Ongelma tässä on usein siinä, että sisäisellä väylällä ei välttämättä liiku tarpeeksi tietoa varsinaista analysointia varten. Jos sitten tuotetaan seurantaa varten lisäviestejä, nämä lisäviestit voivat vaikuttaa järjestelmän toimintaan erityisesti ajoitustasolla. Tuloksia käsiteltäessä tulee tämä ottaa huomioon. Jos tapahtumatietoja varten on tehty oma liittymänsä, voidaan tapahtumatiedot lähettää sitä pitkin toiselle koneelle. Tapahtumailmoitusten generointi aiheuttaa tässä tapauksessa aina ylimääräistä työtä, joka edelleen voi häiritä järjestelmän ajoituksia. Tapahtumien generoinnissa on se ongelma, että kaikkia tapahtumia ei varmasti pystytä tallentamaan. Tämän takia joudutaan valitsemaan ne tapahtumat, joista loki tehdään. Tyypillisesti tällöin on tiedossa jokin ongelmatilanne, jota yritetään paikallistaa, ja yleisellä ohjelmiston tuntemuksella valitaan ne viestit, joiden odotetaan paljastavan ongelman lähteen. Tapahtumien generointi voidaan toteuttaa ehdollisen kääntämisen avulla. Näin voidaan lopullisesta ohjelmasta poistaa ylimääräinen jäljitykseen tarvittava koodi. Varjopuolena tässä on se, että lopullinen ohjelma ei ole identtinen testatun kanssa, ja jotkin (harvinaiset) kääntäjän virheet saattavat aiheuttaa virhetoiminnan lopullisessa tuotteessa. 9.6 Laitteiston testaus Edellä olevat kohdat koskivat lähinnä ohjelmiston testausta tai tarkemmin joitain erityistoimia, joita sulautetun järjestelmän testauksessa tulee harkittavaksi käyttää. Edellä mainittiin ongelmana se, että aina ei tiedetä, onko vika laitteistossa vai ohjelmistossa. Tämän takia pitää olla olemassa erilliset laitteistontestausohjelmat. Laitteiston testaamisessa on tunnettava tyypilliset laitteistoviat. Näitä ovat muun muassa huonot kontaktit, oikosulut, katkenneet johdot,

13 160 Sulautettu ohjelmointi sähkömagneettisesta induktiosta johtuvat signaalin ylikuulumiset, väärät signaalitasot ja ajoitusvirheet. Tyypillisesti näitä vikoja etsitään sähköisillä mittalaitteilla, esimerkiksi oskilloskoopilla. Mutta osa laitteistonkin vioista on sellaisia, joita voidaan löytää ohjelmallisesti. Muistin testaaminen on tyypillinen ohjelmallinen testi. Muistitestit ajetaan usein aina järjestelmää käynnistettäessä Muistien testaaminen Lukumuistin testaus tehdään käymällä lukumuistin kaikki muistipaikat läpi ja laskemalla niistä jollain menetelmällä tarkistussumma. Tämä sama tarkistussumma on talletettu itse lukumuistiin, ja tulosta verrataan tähän talletettuun arvoon. Tuloksena on yksinkertainen kyllä ei-tyyppinen tieto siitä, toimiiko muisti vai onko siinä jokin vika. Koska vian luonnetta ei voi tällä selvittää, muistissa olevaa tietoa ei voi käyttää turvallisesti. Luku kirjoitusmuisti testataan kirjoittamalla muistiin merkkejä ja sitten lukemalla ne sieltä. Mikäli luettu merkki poikkeaa kirjoitetusta, muistissa on vikaa. Tyypillisesti muisti kirjoitetaan täyteen lukua ja tämän jälkeen lukua AAAA 16 (olettaen, että muistiväylä on 16-bittinen). Nämä bittikuviot asettavat jokaisen muistin bitin ykköseksi ja nollaksi. Koska rinnakkaiset bitit ovat aina eri arvossa, pitäisi testin paljastaa, jos dataväylän vierekkäiseltä johdolta tapahtuu ylikuulumista toiseen johtoon. Testi ei kuitenkaan takaa, että muisti toimisi. Nythän voi olla niin, että osoiteväylällä on vikaa (esimerkiksi oikosulku), ja suuri osa viittauksista osuu yhteen ja samaan muistipaikkaan. Edellä kuvattu testi ei paljastaisi tätä. Tämä ongelma voidaan havaita siten, että edellisen testin lisäksi kirjoitetaan jokaiseen muistipaikkaan sen oma osoite tai osoitteesta johdettu luku, jos osoite ei mahdu muistipaikkaan kokonaisena. Talletettua arvoa ei saa testata heti, vaan kaikki muistipaikat kirjoitetaan ensin, jonka jälkeen vasta tarkistetaan talletettu arvo. Mikäli arvo olisi luettu heti, edellä mainittu osoiteväylän vika ei tulisi ilmi. Mikäli laitteen väylien johdotus on tavallisuudesta poikkeava, on syytä miettiä sellaisia testiarvoja, joilla havaitaan mahdolliset ylikuulumiset tai oikosulut signaaleissa. Yleisesti ottaen on varmistuttava siitä, että testi testaa sitä mitä pitääkin. Kokonaisuutena muistit testaavien testien tulee paljastaa mahdolliset katkot, oikosulut ja ylikuulumiset väylillä.

14 Ohjelmistotyö 161 Huomattakoon, että välimuistin käyttö muistia testattaessa tulee kieltää, sillä muuten voi käydä niin, että testi testaa vain välimuistin toimintaa Oheislaitteiden testaus Varsinkin monimutkaisimmissa oheislaitteissa voi olla erityisiä testitiloja. Esimerkiksi tietoliikennepiiri voi itse vastaanottaa lähettämänsä tiedon lähettämättä sitä kuitenkaan varsinaiselle siirtotielle. Yksinkertaisimmissa piireissä ei tällaisia ominaisuuksia ole, mutta niitäkin voi testata lukemalla tilarekistereitä, kokeilemalla, pystyykö piiri keskeyttämään ja niin edelleen. Suuri osa oheislaitteista voidaan testata ohjelmallisesti vain osittain. Tämä osittainen testi tehdään yleensä aina käynnistyksen osana. Kattavampi testi voi tarvita ulkoisia apulaitteita tai erityisen testipedin. Tämäntyyppinen kattava testi tehdään tavallisesti valmistuksen päätteeksi ja mahdollisesti osana huoltotoimenpiteitä. Näitä samoja testejä voidaan käyttää laitteen ensimmäisissä testeissä ennen kuin ohjelmiston varsinainen testaaminen alkaa. Tyypillisesti laitteistossa on joitain merkkiledejä tai vastaavia, jolla voidaan testin tulos ilmoittaa, mikäli laite ei pysty ilmoittamaan siitä jollain käyttäjäystävällisemmällä tavalla. Yleisesti ottaen jokaiselle oheislaitteelle tulee tehdä käynnistyksen aikainen perustesti ja mahdollisesti kattavampi huolto- ja valmistustesti. Joitakin laitetestejä voidaan suorittaa tarvittaessa myös ajoaikana, mutta tällainen on harvinaista. 9.7 Iteratiivisuudesta kehitystyössä Vaikka iteratiivinen kehitys onkin yhä yleisemmin käytetty tapa toteuttaa ohjelmistoja, ei iteratiivisuuden hyötyjä voi edelleenkään korostaa liikaa sulautettuja ohjelmistoja suunniteltaessa tai toteutettaessa. Vaikka kokonaisjärjestelmälle tehtäisiinkin perinteinen määrittely, on toteutustyössä silti otettava huomioon se, että kehitystyön tuloksena pitäisi syntyä yhteensopivat laitteisto ja ohjelmisto. Näiden yhteensovittaminen onnistuu harvoin ensimmäisellä yrittämällä johtuen useastakin eri syystä, mutta useimmiten siksi, että eri kehityspolkujen varrella on tehty erilaisia olettamuksia. Toinen iteratiivisuuden kehityksen käyttöä puoltava seikka on, että oikeastaan kaikki ohjelmistot sisältävät virheitä. Mitä suuremmasta kokonaisuudesta on kyse, sitä vaikeampaa niitä on yleensä löytää. Tästä

15 162 Sulautettu ohjelmointi syystä on usein eduksi sulautetussa ympäristössä, jos voidaan minimoida niiden ohjelman osien määrä, jotka ovat käytössä ensimmäistä kertaa, ja joiden toimintaa ei siksi ehkä olla voitu verifioida lainkaan. Itse asiassa voidaan jopa ajatella, että koko ohjelmistosuunnittelun perusta sulautetussa ympäristössä olisi ohjelmiston pilkkominen pieniin osiin, niiden iteratiiviseen toteuttamiseen, ja huolelliseen verifiointiin. Jotkut sulautetuista järjestelmistä ovat kuitenkin sellaisia, että niitä ei kerta kaikkiaan voi toteuttaa ja testata muuten kuin valmiina kokonaisuuksina. Näin ei kuitenkaan käy kovinkaan usein, vaan oikeanlaisella ohjelmistosuunnittelulla on lähes aina mahdollista löytää osia, jotka voidaan toteuttaa ja testata iteratiivisesti. Tämä puolestaan auttaa kasvattamaan luottamusta järjestelmän suunnitteluun ja etenemiseen, sillä järjestelmän osittaisenkin toiminnan havainnointi oikeassa laitteessa kerää yleensä huomiota järjestelmästä. Sitten kun tiedetään, että jotkut ominaisuudet toimivat, on helpompi edetä suunnittelussa ja toteutuksessa eteenpäin. Iteratiivisuuden mittakaavan suhteen on luonnollisesti mahdollista käyttää harkintaa ja ohjelmiston toteutuksen kannalta sopivaa osittamistrategiaa. Tämä saattaa joissain tilanteissa vaatia jonkun sopivan arkkitehtuurityylin valitsemista toteutuksen perustaksi, mutta pikemminkin kyse on ajattelutavasta ja suhtautumisesta ohjelmointiin: Toteutettavat ominaisuudet tulisi valita siten, että ne voidaan varmentaa edes jossakin testiympäristössä. Usein jo sulautetun laitteen henkiin herättäminen siten, että järjestelmä nousee hallittuun tilaan ja kykenee vastaamaan ulkomaailmasta tulevaan syötteeseen, on jo erinomainen ensimmäinen askel, jota voidaan ryhtyä laajentamaan sovelluskohtaisella toiminnalla. Joskus itse asiassa jo se, että pystyy asentamaan laitteistoon jotakin, on merkittävä askel eteenpäin. Iteratiivisen kehityksen kannalta hedelmällisiä kohteita ovat myös ne osat ohjelmaa, jotka testaavat laitteiston toimintaa. Siksi ne kannattaa toteuttaa omana kokonaisuuksinaan, jolloin laitteiston toiminta voidaan verifioida jo aikaisessa vaiheessa kehitystyötä. Lisäksi monimutkaisten algoritmien suunnittelu kannattaa mahdollisuuksien mukaan tehdä omana iteraationaan, ja tarvittaessa vaikkapa käyttää ensin PC-ympäristöä, jossa algoritmin oikeellisuus voi olla nopeampaa ja helpompaa verifioida. Sitten kun toiminnallisuus on osoitettu oikeaksi, se voidaan siirtää osaksi sulautettua järjestelmää. Siirtotyössä täytyy luonnollisesti ottaa huomioon erilaiset suoritusnäkökohdat, muistinkulutus, sekä mahdolliset käännöstyökalu- ja kirjasto-

16 Ohjelmistotyö 163 eroavaisuudet. Toisaalta ilman algoritmin erillistä toteuttamista saattaa olla mahdotonta selvittää sen suorittamisessa tarvittavaa aikaa, mikä puolestaan saattaa olla järjestelmän aikakriittisten toimintojen kannalta oleellista. Tietysti tässäkin yhteydessä kannattaa pyrkiä käyttämään oikeaa laitteistoa mahdollisimman nopeasti, jotteivät kokeilu- ja tuotantolaitteiston mahdolliset suorituskykyerot hämärry. Vaikka iteratiivista kehitysmallia käytettäisiinkin, koskaan ei ohjelman toimiminen pidä perustua vain sen suorittamiseen, eikä sulautetuissa järjestelmissä ainakaan. Koska määrittelymenetelmät eivät voi koskaan taata virheettömyyttä, täytyy ohjelmat joka tapauksessa testata mahdollisimman hyvin. 9.8 Yhteenveto Kehitys- ja käyttöympäristöt ovat yleensä erilaiset; kehitysympäristöllä tehdään tyypillisesti ristikäännös, jonka tuotosta voidaan suorittaa. Suuri joukko erilaisia avustavia työkaluja, kuten emulaattorit ja simulaattorit, on usein tarjolla, mutta ne eivät kuitenkaan voi kokonaan korvata oikean laitteen käyttöä kehityksen aikana. Laitteiston testaus on toteutettava ohjelmiston osanana. Iteratiivinen kehitystyyli lähes välttämätöntä ohjelmistotyössä.

9. Luento: Ohjelmistotyö. Tommi Mikkonen, tommi.mikkonen@tut.fi

9. Luento: Ohjelmistotyö. Tommi Mikkonen, tommi.mikkonen@tut.fi 9. Luento: Ohjelmistotyö Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Johdanto Ristikäännös Testaus ja virheen jäljitys Yleensä Kehitysympäristössä Käyttöympäristössä Laitteiston testaus Iteratiivisesta

Lisätiedot

Arto Salminen,

Arto Salminen, 9. Luento: Ohjelmistotyö Arto Salminen, arto.salminen@tut.fi Agenda Johdanto Ristikäännös Testaus ja virheen jäljitys Yleensä Kehitysympäristössä Käyttöympäristössä Laitteiston testaus Iteratiivisesta

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

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...

Lisätiedot

OHJ-4301 Sulautettu Ohjelmointi

OHJ-4301 Sulautettu Ohjelmointi OHJ-4301 Sulautettu Ohjelmointi (http://www.cs.tut.fi/~sulo/) 5op, to 12-14, TB 109 Arto Salminen, arto.salminen@tut.fi Läpäisyvaatimukset Hyväksytysti suoritetut: Tentti Harjoitustyöt Harjoitustyöt 3

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

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen ohjelmointiin Jukka Talvitie Valvoja: Professori Jorma Jormakka Paikka: TietoEnator oyj Ongelma Ideologia Lifebelt

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

Automaattinen yksikkötestaus

Automaattinen yksikkötestaus Teknillinen Korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Automaattinen yksikkötestaus Ryhmä Rajoitteiset Versio Päivämäärä Tekijä

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

Ohjelmointi 1. Kumppanit

Ohjelmointi 1. Kumppanit Ohjelmointi 1 Kumppanit November 20, 2012 2 Contents 1 Mitä ohjelmointi on 7 2 Ensimmäinen C#-ohjelma 9 2.1 Ohjelman kirjoittaminen......................... 9 A Liite 11 3 4 CONTENTS Esipuhe Esipuhe 5

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

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14 Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2

Lisätiedot

Simulaattoriavusteinen ohjelmistotestaus työkoneympäristössä. Simo Tauriainen

Simulaattoriavusteinen ohjelmistotestaus työkoneympäristössä. Simo Tauriainen Simulaattoriavusteinen ohjelmistotestaus työkoneympäristössä Simo Tauriainen www.ponsse.com 25.8.2011 Ponsse-konserni Ponsse Oyj on tavaralajimenetelmän metsäkoneiden myyntiin, tuotantoon, huoltoon ja

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä.

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä. Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä. On arvioitu, että maailmassa on tällä hetkellä enemmän sulautettuja

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

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla ohjelmoida useita komponenteiltaan ja rakenteeltaan

Lisätiedot

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön? Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön? 2013-2014 Lasse Lensu 2 Systeemiohjelmat ovat tietokoneen laitteistoa lähellä olevia ohjelmia,

Lisätiedot

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen (etu.suku@lut.fi) Kevät 2016

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen (etu.suku@lut.fi) Kevät 2016 CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET Jussi Kasurinen (etu.suku@lut.fi) Kevät 2016 VIIME KERRALLA MENETELMIÄ Musta laatikko Valkea laatikko Harmaa laatikko Regressio Automaatio Rasitus (kuormitus)

Lisätiedot

Palomuurit. Palomuuri. Teoriaa. Pakettitason palomuuri. Sovellustason palomuuri

Palomuurit. Palomuuri. Teoriaa. Pakettitason palomuuri. Sovellustason palomuuri Palomuuri Teoriaa Palomuurin tehtävä on estää ei-toivottua liikennettä paikalliseen verkkoon tai verkosta. Yleensä tämä tarkoittaa, että estetään liikennettä Internetistä paikallisverkkoon tai kotikoneelle.

Lisätiedot

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaiheet 1 ja 2. Antti Jääskeläinen Matti Vuori

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaiheet 1 ja 2. Antti Jääskeläinen Matti Vuori TIE-21204 Ohjelmistojen testaus 2015 Harjoitustyö Vaiheet 1 ja 2 Antti Jääskeläinen Matti Vuori Työn yleiset järjestelyt 14.9.2015 2 Valmistautuminen Ilmoittaudu kurssille Lue harjoitustyön nettisivut

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. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi 5. Luento: Rinnakkaisuus ja reaaliaika Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Perusongelmat Jako prosesseihin Reaaliaika Rinnakkaisuus Rinnakkaisuus tarkoittaa tässä yhteydessä useamman kuin yhden

Lisätiedot

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013

Lisätiedot

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest). 1 Virtualisoinnin avulla voidaan purkaa suora linkki suoritettavan sovelluksen (tai käyttöjärjestelmän tms.) ja sitä suorittavan laitteiston välillä. Näin saavutetaan joustavuutta laitteiston käytössä.

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

Ohjelmistojen virheistä

Ohjelmistojen virheistä Ohjelmistojen virheistä Muutama sana ohjelmistojen virheistä mistä niitä syntyy? Matti Vuori, www.mattivuori.net 2013-09-02 1(8) Sisällysluettelo Ohjelmistojen virheitä: varautumattomuus ongelmiin 3 Ohjelmistojen

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

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

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

ohjelman arkkitehtuurista.

ohjelman arkkitehtuurista. 1 Legacy-järjestelmällä tarkoitetaan (mahdollisesti) vanhaa, olemassa olevaa ja käyttökelpoista ohjelmistoa, joka on toteutettu käyttäen vanhoja menetelmiä ja/tai ohjelmointikieliä, joiden tuntemus yrityksessä

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

TKT224 KOODIN KOON OPTIMOINTI

TKT224 KOODIN KOON OPTIMOINTI - 1 - Laboratoriotyö TKT224 Oppimäärä: Ammattiaineiden laboraatiot Kurssi: Tietokonetekniikan laboraatiot Laboratoriotyö: TKT224 KOODIN KOON OPTIMOINTI Teoriakurssi, johon työ liittyy: Työn laatijat: T.Laitinen

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

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

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

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi 1. Luento: Sulautetut Järjestelmät Arto Salminen, arto.salminen@tut.fi Agenda Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu

Lisätiedot

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER Group 16 Ville Laatu Henri Myllyoja - i SISÄLLYSLUETTELO 1. DEBUGGERI YLEISESTI... II 1.1 Debuggerin käyttämien... ii 1.2 Debuggerin käynnistäminen... ii

Lisätiedot

dokumentin aihe Dokumentti: Testausraportti_I1.doc Päiväys: Projekti : AgileElephant

dokumentin aihe Dokumentti: Testausraportti_I1.doc Päiväys: Projekti : AgileElephant AgilElephant Testausraportti I1 Tekijä: Petri Kalsi Omistaja: ElectricSeven Aihe: Testausraportti Sivu 1 / 5 Dokumentti Historia Muutoshistoria Revision Numero Revision Päiväys Yhteenveto muutoksista Revision

Lisätiedot

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori Testauksen tuki nopealle tuotekehitykselle Antti Jääskeläinen Matti Vuori Mitä on nopeus? 11.11.2014 2 Jatkuva nopeus Läpäisyaste, throughput Saadaan valmiiksi tasaiseen, nopeaan tahtiin uusia tuotteita

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op FT Ari Viinikainen Tietokoneen rakenne Keskusyksikkö, CPU Keskusmuisti Aritmeettislooginen yksikkö I/O-laitteet Kontrolliyksikkö Tyypillinen Von Neumann

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

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

C-ohjelmoinnin peruskurssi. Pasi Sarolahti C! C-ohjelmoinnin peruskurssi Pasi Sarolahti Mitä haluan oppia C-kurssilla? ja miksi? Tutustu lähimpään naapuriin Keskustelkaa miksi halusitte / jouduitte tulemaan kurssille 3 minuuttia è kootaan vastauksia

Lisätiedot

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi Älysopimusten kehittäminen Sopimus suuntautunut ohjelmointi There are currently 5,000 blockchain developers. By 2020, we project a global need for over 500,000 - ConsenSys Älysopimus alustat q Ethereum

Lisätiedot

Ohjelmoinnin perusteet, syksy 2006

Ohjelmoinnin perusteet, syksy 2006 Ohjelmoinnin perusteet, syksy 2006 Esimerkkivastaukset 1. harjoituksiin. Alkuperäiset esimerkkivastaukset laati Jari Suominen. Vastauksia muokkasi Jukka Stenlund. 1. Esitä seuraavan algoritmin tila jokaisen

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

S11-09 Control System for an. Autonomous Household Robot Platform

S11-09 Control System for an. Autonomous Household Robot Platform S11-09 Control System for an Autonomous Household Robot Platform Projektisuunnitelma AS-0.3200 Automaatio- ja systeemitekniikan projektityöt Quang Doan Lauri T. Mäkelä 1 Kuvaus Projektin tavoitteena on

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

Lisätiedot

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen 23 April 2018 1 Tavoitteet Yleiskuva seuraavista aiheista Testauksen organisointi Testaussuunnittelma Testauksen kustannukset Testausstrategia

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

S14 09 Sisäpeltorobotti AS Automaatio ja systeemitekniikan projektityöt. Antti Kulpakko, Mikko Ikonen

S14 09 Sisäpeltorobotti AS Automaatio ja systeemitekniikan projektityöt. Antti Kulpakko, Mikko Ikonen S14 09 Sisäpeltorobotti AS 0.3200 Automaatio ja systeemitekniikan projektityöt Antti Kulpakko, Mikko Ikonen 1. Projektin tavoitteet Projektin tavoitteena on toteuttaa ohjelmisto sisäpeltorobottiin seuraavien

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

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0 Johdanto Nämä ohjeet opastavat sinut tekemään kurssiin TKT-1110 Mikroprosessorit liittyvät harjoitustyöt. Ohjeet sisältävät kolme osiota. Ensimmäisenä esitellään projektin luonti, mikä tehdään ainoastaan

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 28.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2015 1 / 16 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

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

Versio Päiväys Tekijä Kuvaus Tikkanen varsinainen versio

Versio Päiväys Tekijä Kuvaus Tikkanen varsinainen versio Testiraportti 26.2.2006 1/5 - Noheva II Testiraportti Versio Päiväys Tekijä Kuvaus 1.0 26.2.2006 Tikkanen varsinainen versio 1 Yleistä Toteutusvaiheen 2 virallinen testaus on muodostunut automaattisista

Lisätiedot

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä? Miksi moniprosessorijärjestelmä? Laskentaa voidaan hajauttaa useammille prosessoreille nopeuden, modulaarisuuden ja luotettavuuden vaatimuksesta tai hajauttaminen voi helpottaa ohjelmointia. Voi olla järkevää

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

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

Ohjelmointi 1 / syksy /20: IDE

Ohjelmointi 1 / syksy /20: IDE Ohjelmointi 1 / syksy 2007 10/20: IDE Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Tämän luennon rakenne

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

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä Pekka Ryhänen & Erkki Pesonen 2002 BlueJ:n käyttö Nämä ohjeet on tarkoitettu tkt-laitoksen mikroluokan koneilla tapahtuvaa käyttöä varten. Samat asiat pätevät myös muissa luokissa ja kotikäytössä, joskin

Lisätiedot

KONEAUTOMAATION LAATU JA TURVALLISUUS. 4.6.2015 Marko Varpunen

KONEAUTOMAATION LAATU JA TURVALLISUUS. 4.6.2015 Marko Varpunen KONEAUTOMAATION LAATU JA TURVALLISUUS 4.6.2015 Marko Varpunen TLJ ja automaatio Rautatie, metro, teollisuus-laitokset, kaivoskoneet, vesi, n. 90 henkeä Mikkeli Turvallisuusjohtaminen konsultointi riskienarviointi

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

T Testiraportti - integraatiotestaus

T Testiraportti - integraatiotestaus T-76.115 Testiraportti - integraatiotestaus 16. huhtikuuta 2002 Confuse 1 Tila Versio: 1.1 Tila: Päivitetty Jakelu: Julkinen Luotu: 19.03.2002 Jani Myyry Muutettu viimeksi: 16.04.2002 Jani Myyry Versiohistoria

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

TOIMINNALLINEN MÄÄRITTELY MS

TOIMINNALLINEN MÄÄRITTELY MS TOIMINNALLINEN MÄÄRITTELY 11.11.2015 MS YLEISTÄ 1/2 jäsennelty etenee yleiskuvauksesta yksityiskohtiin kieliasultaan selkeä kuvaa myös tulevan järjestelmän ympäristöä tarpeellisella tarkkuudella kuvaa

Lisätiedot

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu Liite 1: skenaariot ja PoC tulokset 1. Palvelun kehittäjän näkökulma Tilanne Vaatimus Ongelma jos vaatimus ei toteudu Palvelun uusi versio on Palveluiden kehittäminen voitava asentaa tuotantoon vaikeutuu

Lisätiedot

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti Teknillinen korkeakoulu 51 Vaatimusmäärittely Ohjelma-ajanvälitys komponentti Versio Päiväys Tekijä Kuvaus 0.1 21.11.01 Oskari Pirttikoski Ensimmäinen versio 0.2 27.11.01 Oskari Pirttikoski Lisätty termit

Lisätiedot

S-108.3020 Elektroniikan häiriökysymykset. Laboratoriotyö, kevät 2010

S-108.3020 Elektroniikan häiriökysymykset. Laboratoriotyö, kevät 2010 1/7 S-108.3020 Elektroniikan häiriökysymykset Laboratoriotyö, kevät 2010 Häiriöiden kytkeytyminen yhteisen impedanssin kautta lämpötilasäätimessä Viimeksi päivitetty 25.2.2010 / MO 2/7 Johdanto Sähköisiä

Lisätiedot

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu

Lisätiedot

Onnistunut SAP-projekti laadunvarmistuksen keinoin

Onnistunut SAP-projekti laadunvarmistuksen keinoin Onnistunut SAP-projekti laadunvarmistuksen keinoin 07.10.2010 Patrick Qvick Sisällys 1. Qentinel 2. Laadukas ohjelmisto täyttää sille asetetut tarpeet 3. SAP -projektin kriittisiä menestystekijöitä 4.

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,

Lisätiedot

Virtualisointi Kankaanpään kaupungissa. Tietohallintopäällikkö Jukka Ehto

Virtualisointi Kankaanpään kaupungissa. Tietohallintopäällikkö Jukka Ehto Virtualisointi Kankaanpään kaupungissa Tietohallintopäällikkö Jukka Ehto Esityksen kulku Esittely ja taustaa Virtualisoinnin vaiheet ja käyttöhuomiot Laitteistot ja yhteenveto Kankaanpää: 12 136 asukasta

Lisätiedot

Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa k

Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa k 1 Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa ko. toiminnallisuuden hyödyntämisen Web-palveluna.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 21.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 21.9.2015 1 / 25 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Oleelliset vaikeudet OT:ssa 1/2

Oleelliset vaikeudet OT:ssa 1/2 Oleelliset vaikeudet OT:ssa 1/2 Monimutkaisuus: Mahdoton ymmärtää kaikki ohjelman tilat Uusien toimintojen lisääminen voi olla vaikeaa Ohjelmista helposti vaikeakäyttöisiä Projektiryhmän sisäiset kommunikointivaikeudet

Lisätiedot

Enterprise SOA. Nyt. Systeemi-integraattorin näkökulma

Enterprise SOA. Nyt. Systeemi-integraattorin näkökulma Enterprise SOA. Nyt. Systeemi-integraattorin näkökulma 12.11.2007 Janne J. Korhonen 12.11.2007 Agenda 1. Prosessit ja palvelut, BPM ja SOA 2. BPM-projekteista yleensä 3. Prosessin elinkaarimalli 4. Kokemuksia

Lisätiedot

Onnittelut PC SpeedCAT perheeseen liittymisestä

Onnittelut PC SpeedCAT perheeseen liittymisestä Onnittelut PC SpeedCAT perheeseen liittymisestä Tulet hämmästymäät kaikista upeista asioista joita PC SpeedCAT pystyy tekemään: Optimoi tietokoneesi nopeuden tehden siitä Optimoi internetnopeutesi tehden

Lisätiedot

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2 TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos TKT-3200 Tietokonetekniikka I Harjoitustyö 4: Cache, osa 2.. 2010 Ryhmä Nimi Op.num. 1 Valmistautuminen Cache-työn toisessa osassa

Lisätiedot

T Testiraportti - järjestelmätestaus

T Testiraportti - järjestelmätestaus T-76.115 Testiraportti - järjestelmätestaus 18. huhtikuuta 2002 Confuse 1 Tila Versio: 1.0 Tila: Päivitetty Jakelu: Julkinen Luotu: 18.04.2002 Jani Myyry Muutettu viimeksi: 18.04.2002 Jani Myyry Versiohistoria

Lisätiedot

Simulaattorin asennus- ja käyttöohje

Simulaattorin asennus- ja käyttöohje Linux ja Windows XP Versio Päiväys Muokkaaja Kuvaus 0.2 16.2.2006 Mikko Halttunen Katselmoinin jälkeen 0.1 13.2.2006 Mikko Halttunen Alustava versio Sisällysluettelo 1 Johdanto... 3 2 Simulaattorin asennus...

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

Tutoriaaliläsnäoloista

Tutoriaaliläsnäoloista Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus

Lisätiedot

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään Ohjelmointi Ohjelmoinnissa koneelle annetaan tarkkoja käskyjä siitä, mitä koneen tulisi tehdä. Ohjelmointikieliä on olemassa useita satoja. Ohjelmoinnissa on oleellista asioiden hyvä suunnittelu etukäteen.

Lisätiedot

PC-LAITTEEN TESTAAMINEN

PC-LAITTEEN TESTAAMINEN PC-LAITTEEN TESTAAMINEN PC-Check-ohjelma Kun laite on koottu, on perusteltua testata sen toiminta ennen käyttöönottoa. Tätä varten on luotu erilaisia ohjelmia, joilla voi laitteen eri osat testata. Yksi

Lisätiedot

4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi

4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi 4. Luento: Prosessit ja säikeets Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Prosessi Säikeet Keskeytykset Keskeytyskäsittely Käyttöjärjestelmäkutsut Prosessielementti Prosessin hallinta Suunnittelunäkökohtia

Lisätiedot

2 Konekieli, aliohjelmat, keskeytykset

2 Konekieli, aliohjelmat, keskeytykset ITK145 Käyttöjärjestelmät, kesä 2005 Tenttitärppejä Tässä on lueteltu suurin piirtein kaikki vuosina 2003-2005 kurssin tenteissä kysytyt kysymykset, ja mukana on myös muutama uusi. Jokaisessa kysymyksessä

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

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

PC-LAITTEEN TESTAAMINEN

PC-LAITTEEN TESTAAMINEN PC-LAITTEEN TESTAAMINEN PC-Check-ohjelma Kun laite on koottu, on perusteltua testata sen toiminta ennen käyttöönottoa. Tätä varten on luotu erilaisia ohjelmia, joilla voi laitteen eri osat testata. Yksi

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 4.10.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 4.10.2017 1 / 23 Mahdollisuus antaa luentopalautetta Luennon aikana voit kirjoittaa kommentteja ja kysymyksiä sivulle

Lisätiedot

GIS-automatisointi ja ohjelmointi/skriptaus. Harri Antikainen

GIS-automatisointi ja ohjelmointi/skriptaus. Harri Antikainen GIS-automatisointi ja ohjelmointi/skriptaus Harri Antikainen Mistä nyt puhutaan? Automatisointi: Mikä tahansa tapa teettää tietokoneella asioita ilman että käyttäjän tarvitsee tehdä muuta kuin laittaa

Lisätiedot

Automaattinen regressiotestaus ilman testitapauksia. Pekka Aho, VTT Matias Suarez, F-Secure

Automaattinen regressiotestaus ilman testitapauksia. Pekka Aho, VTT Matias Suarez, F-Secure Automaattinen regressiotestaus ilman testitapauksia Pekka Aho, VTT Matias Suarez, F-Secure 2 Mitä on regressiotestaus ja miksi sitä tehdään? Kun ohjelmistoon tehdään muutoksia kehityksen tai ylläpidon

Lisätiedot

Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu. LiKe Liiketoiminnan kehityksen tukiprojekti

Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu. LiKe Liiketoiminnan kehityksen tukiprojekti Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu TESTIRAPORTTI LiKe Liiketoiminnan kehityksen tukiprojekti Versio: 1.1 Tila: hyväksytty Päivämäärä: 13.2.2001 Tekijä:

Lisätiedot

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ aaro.leikari@hotmail.com TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ 25.01.2016 SISÄLLYS 1. Käyttöjärjestelmän asentaminen... 1 1.1 Windowsin asettamia laitteistovaatimuksia... 1 1.2 Windowsin asentaminen...

Lisätiedot

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä

Lisätiedot