Sulautettu ohjelmointi

Koko: px
Aloita esitys sivulta:

Download "Sulautettu ohjelmointi"

Transkriptio

1 Sulautettu ohjelmointi 1 "Esipainos" Hannu-Matti Järvinen Tommi Mikkonen Tampere 2010

2 2 Sulautettu ohjelmointi 1. Sulautetut järjestelmät Johdanto Sulautettujen järjestelmien ominaispiirteitä Sulautettujen ohjelmistojen erityispiirteitä Kokonaisjärjestelmän määrittely Suunnittelun jakaminen osiin Ohjelmiston ja laitteiston rajapinta Ohjelmiston ja laitteiston yhteissuunnittelu Eri alojen edustajien roolit LVI-asiantuntijan näkökulma Automaation asiantuntijan näkökulma Tietokoneasiantuntija Ohjelmistoasiantuntija Suunnittelutyön eteneminen Lisähuomioita Sulautetut järjestelmät ja sulautettu ohjelmointi Yhteenveto Laitteistorajapinta Tyypillinen sulautetun järjestelmän suoritin Yleinen koneiden arkkitehtuuri Suorittimen tilat ja rekisterit Keskeytysjärjestelmä Keskeytyksistä yleensä Ulkoiset keskeytykset Toiminta keskeytyksen tullessa Keskeytyksen havaitseminen Keskeytyksen palveleminen Esimerkkejä keskeytysjärjestelmistä Suorittimen alustus Oheislaiteliittymät Oheislaitteiden ohjaamisesta Suora muistisiirto Yksinkertaisia oheislaitepiirejä Rinnakkaisliityntä Sarjaliityntäpiirit Ajastinpiirit...47

3 A/D-muunnin D/A-muunnin Muutamia yleisiä huomioita Laitteistorajapinta abstraktiona Yhteenveto Muistin hallinta Erityyppiset muistit Luku kirjoitusmuistit Lukumuistit Haihtumattomat muistit Flash-muistin käytöstä Kirjoituskertojen rajoitukset Muistitiedon päivittämisestä Päivitysesimerkki Ohjelman sijoittelu muistiin Ohjelman sisäinen muistinhallinta Staattisesti varattu muuttuja Dynaamisesti varattu muuttuja pinossa Dynaamisesti varattu muuttuja keossa Dynaamisen muistin hallinta osana ohjelmistosuunnittelua Joitakin tyypillisiä haasteita Vain varauksia -vaihtoehto Sekä varauksia että vapautuksia Muistinhallinnan algoritmeista Dynaaminen muisti monelle prosessille Roskaantuminen Ohjelmointikielistä dynaamisen muistin kannalta Muistinhallintayksikkö ja välimuisti Muistinhallintayksikkö Välimuisti Yhteenveto Prosessit ja säikeet Prosessit Prosessien tilamalli Lisätiloja Säikeet... 76

4 4 Sulautettu ohjelmointi 4.2 Keskeytykset Keskeytyskäsittelyn aloitus ja lopetus Käyttöjärjestelmäkutsut Prosessien hallinnasta Prosessielementti Prosessin luominen Prosessin päättäminen Ohjelmallisesti aiheutetut keskeytykset Suunnittelunäkökohtia Yhteenveto Rinnakkaisuus ja jako prosesseihin Johdanto Perusongelmat Kriittinen alue Poissulkeminen Synkronointi Poissulkemisen ja synkronoinnin vähentäminen Lukkiutuminen ja nälkiintyminen Testaamisesta Aktiivisen lukituksen toteutus Jako prosesseihin Toiminnallinen jako Skedulointiin perustuva jako Rakenteeseen perustuva jako Rinnakkaistaminen Yhteenveto Yhteenveto Skedulointi eli vuoronnus Lyhyesti reaaliajasta Pehmeät ja kovat reaaliaikajärjestelmät Reaaliaikaohjelmien tyypillisiä piirteitä Milloin järjestelmä on reaaliaikainen? Irrottamaton ja irrottava skedulointi Skedulointimenetelmiä FIFO eli jono Kiertovuorottelu...105

5 Kiinteä prioriteetti Vaihteleva prioriteetti Lyhin ajoaika ensin Aikaisin määräaika ensin Skedulointialgoritmien vertailua Reaaliaikajärjestelmien skedulointi Käänteisprioriteettiongelma Kerran tehtävät ja toistuvat työt Jitter Staattinen skedulointi Dynaaminen skedulointi Skedulointiesimerkki Skeduloituvuuden analysoinnista Staattinen skeduloituvuus Dynaaminen skeduloituvuus Yhteenveto Ytimet Ytimen roolista Perusydintyypit Pollaavat ytimet Keskeytysohjatut ytimet Prosessiytimet Yhteenveto perusytimistä Valmiina saatavat ytimet Skaalattavuus Laitteistovalikoima Kommunikointi- ja poissulkemismenetelmät Kehitysympäristö Kustannukset Esimerkki: Linux-ydin Yhteenveto Laitteiston ohjaaminen Säätämisestä yleensä Joitakin säätäjiä Paikkasäätäjä (P-säätäjä) Integroiva säätäjä (I-säätäjä)

6 6 Sulautettu ohjelmointi Derivoiva säätäjä (D-säätäjä) PI-säätäjä PD-säätäjä PID-säätäjä Mikä säätäjä minnekin? Säätäjän virittämisestä Monimutkaisempia säätöjä Mittaamisesta Yhteenveto Ohjelmistotyö Johdanto Ristikehitys Testaus ja virheiden jäljitys yleensä Virheen paikantaminen Pöytätestaus Testipedit Profilointi Testaus ja jäljitys kehitysympäristössä Testaaminen ja jäljitys kehitysympäristön työkaluilla Järjestelmän simulointi Virtualisointi Testaus ja jäljitys kohdejärjestelmässä Johdanto Logiikka-analysaattori Emulointi Erillinen testijärjestelmä Tiedon siirto toiselle koneelle analysoitavaksi Laitteiston testaus Muistien testaaminen Oheislaitteiden testaus Iteratiivisuudesta kehitystyössä Yhteenveto Kohti suurempia sulautettuja ohjelmistoja Ohjelmistopino Ohjelmistojen siirrettävyydestä Ehdollinen käännös...166

7 Ohjelmamakrot Moduulinen erillinen toteutus Siirrettävyysongelmia Vuotavat abstraktiot Joitakin sulautetun järjestelmän suunnitteluratkaisuja Kerrostaminen ja laitteiden kätkentä Väyläabstraktio Käynnistysrutiinit Vianjäljitysmoodi ja lokien keruu Muisti- ja ajoitusbudjetti Formaali vai epäformaali menetelmä? Yhteenveto Vikasietoisuus Vikasietoisuuden käsitteitä Ei vikasietoisuutta Ei-peittävä vikasietoisuus Vikaturvallinen järjestelmä Peittävästi vikasietoinen järjestelmä Turvallisuuskäsite Vikasietoisuuden saavuttaminen Datan redundanssi Ohjelmakoodin redundanssi Vikojen havaitsemista Ohjelmisto- ja laitteistovikasietoisuuden eroista Laitteistoviat Ohjelmistoviat Ohjelmiston sisäisestä vikasietoisuudesta Vika-analyysistä Esimerkkejä vikasietoisista järjestelmistä Vikasietoisuuden luokittelua Taso 1, normaalin toiminnan virhetilanteet Taso 2, vikaturvallinen toipuminen Taso 3, ei-peittävä itsestabiloituva vikasietoisuus Taso 4, peittävä vikasietoisuus Taso 5, korjaus konetta sammuttamatta Taso 6, Kaikkien laitteiden varmistus Taso 7, Koneiden monistaminen

8 8 Sulautettu ohjelmointi 11.8 Käynnistys ja uudellenkäynnistys Ohjelmistotyö ja ylläpito ohjelman suorituksen aikana Yhteenveto Esimerkki: Mikrohiiri Laitteen suunnittelua Mekaniikka: montako pyörää? Suoritin Muisti Ohjelmiston rakenne Testaus Prosessijako Skedulointi Käyttöjärjestelmän ydin ja keskeytyskäsittely Säädön periaatteet Yhteenveto Esimerkki: Symbian-ympäristö Yleiskuvaus Käyttöjärjestelmän ydin Resurssien hallinta Palvelimet resurssien kätkijöinä Joitakin palvelimia Aktiiviset oliot Dynaamisen muistin hallinta Symbian-ympäristössä Tyyppijärjestelmä ja nimeämiskäytännöt Poikkeukset Muistinvaraukset ja poikkeukset Kaksivaiherakentaminen Laajennukset Symbian C++-sovelluskehitys Java Python Web Runtime OPL Lopuksi Yhteenveto Kohti hajautettuja sulautettuja järjestelmiä...229

9 14.1 Johdanto Hajautettujen järjestelmien väyliä CAN-väylä CANopen LON-väylä Pienen sulautetun laitteen sisäinen hajautus OpenCL Network on Terminal Architecture Yhteenveto

10 10 Sulautettu ohjelmointi

11 Sulautetut järjestelmät Sulautetut järjestelmät Sulautettu järjestelmä on alunperin ohjelmistotyössä käytetty termi. Vastaavia muiden alojen termejä, jotka tarkoittavat lähes samaa asiaa, on eri aloilla käytössä useita, kuten esimerkiksi mekatroniikka, joka korostaa mekaniikan ja elektroniikan yhdistämistä. Nykykäytössä sulautettu järjestelmä viittaa useimmiten sellaiseen järjestelmään, jossa tietokoneen laitteisto ja ohjelmisto liittyvät toisiinsa saumattomasti siten, että kumpikaan ei ole käyttökelpoinen ilman toista, vaikka kumpikin saattavat hyödyntää yleiskäyttöisiä komponentteja, kuten vakiolisälaitteita, prosessoreita, käyttöjärjestelmiä tai ohjelmistokirjastoja. Toisaalta mikään ei välttämättä kerro käyttäjälle, mitä on toteutettu ohjelmistolla ja mitä laitteistolla, ja itse asiassa voi joskus olla jopa niin, että saman laitteen eri versioiden välillä eri osien välinen työnjako vaihtelee. Vastaavasti sulautetun järjestelmän kuvauksessa laitteisto käsittää laitteiston kokonaan, ei vain sen tietoteknistä osaa. 1.1 Johdanto Sulautetut järjestelmät sijoittuvat teknisten alojen kannalta monen alan rajamaille. Toisaalta niille ovat ominaisia tietyt ohjelmistojen erityispiirteet, toisaalta tietokonelaitteistojen piirteet. Usein sulautettu järjestelmä sisältää myös automaatiotekniikkaa esimerkiksi mekaanisen liikkeen tai kemiallisen prosessin ohjaamiseksi. Automaatio puolestaan vaatii lähes aina mittausta ja säätöä, mikä johtaa myös mittaussignaaleiden käsittelyyn ja säätötekniikan perusteisiin. Sulautetut järjestelmät ovat siis monen alan yhtymäkohdassa, ja sulautetun toteutuksen tekemiseen tarvitaan monen alan asiantuntijoita. Heistä jokaisella on oma näkemyksensä siitä, mitä sulautettu järjestelmä itse asiassa tarkoittaa jokainen tyypillisesti näkee ongelmakentän oman alansa projektion kautta.

12 12 Sulautettu ohjelmointi Tässä teoksessa sulautettuja järjestelmiä tarkastellaan lähinnä ohjelmistotekniikan näkökulmasta. Mukana on kuitenkin ripaus tietokoneiden laitteistoja ja säätöä. Ohjelmistotekniikan osalta sulautettujen järjestelmien ongelmakenttiä ovat muun muassa ohjelmistotuotanto käytettävyys ja käyttöliittymät laitteistonläheinen ohjelmointi reaaliaikaiset järjestelmät reaktiiviset järjestelmät vikasietoisuus ja hajautetut järjestelmät. Ohjelmistotuotanto käsittelee projektin läpivientiä, suunnittelumenetelmiä ja dokumentointia. Erityisesti käyttöliittymien ja käytettävyyden osuus laitteen onnistuneisuuteen on viime aikoina kasvanut, kun käyttäjäkunta on laajentunut entisestään tekniikan alan ihmisten ulkopuolelle. Laitteistonläheinen ohjelmointi tarkoittaa laitteistojen ohjaamista ohjelmallisesti, osittain symbolista konekieltä (assemblykieltä) käyttäen ja puristaen suorittimesta irti kaiken mahdollisen suorituskyvyn. Reaaliaikaisuus tarkoittaa järjestelmän ajoitusominaisuuksien ennustettavuutta ja annettujen aikavaatimusten täyttämistä. Reaktiivisuus puolestaan tarkoittaa sitä, että järjestelmä reagoi kaikkiin tapahtumiin riippumatta siitä, mitä muita tapahtumia on jo käsiteltävänä. Vikasietoisuus viittaa siihen, että sulautetut järjestelmät toimivat usein ilman ihmisen välitöntä ohjausta. Vian tullessa järjestelmän tulee selvitä siitä itse ainakin niin pitkälle, että vika ei aiheuta lisää vikoja. Lisäksi sulautetut laitteet voivat sisäisesti koostua hyvin monimutkaisesta kokonaisuudesta, jossa käytetään useita prosessoreita. Varsinkin viime aikoina kehitys on vienyt kohti hajautettuja laitearkkitehtuureja. Näihin taas liittyvät erilaiset middleware-tekniikat, jotka mahdollistavat helpomman hajautuksen toteutuksen. Tässä teoksessa sivutaan ohjelmistotuotantoa alussa. Käytettävyyden ja käyttöliittymien ongelmakenttää sivutaan vain satunnaisesti sen keskeisyydestä huolimatta, sillä monessa mielessä valintoja ohjaavat muuhun kuin käytettävissä olevaan teknologiaan liittyvät seikat. Laitteistonläheisestä ohjelmoinnista käsitellään oheislaitteiden liittämistä järjestelmään, mutta itse symbolinen konekieli oletetaan jo tunnetuksi. Myös joitakin käyttöjärjestelmiiin liittyviä yksityiskohtia käsitellään. Reaaliaikaisuudesta käsitellään perusteet ja skedulointi. Näiden lisäksi käsitellään myös vikasietoisuuden hallintaa. Lopuksi sivutaan lyhyesti hajautettuja sulautettuja järjestelmiä. Mukana on myös

13 Sulautetut järjestelmät 13 joitakin esimerkkijärjestelmiä, joiden tarkoituksena on havainnollistaa sulautetun ohjelmoinnin ongelmien ratkaisua käytännössä. Ohjelmistotekninen pääongelma vaihtuu järjestelmän koon mukaan. Kaikista pienimmissä järjestelmissä pääongelmat ovat laitteistonläheisessä ohjelmoinnissa. Näissä järjestelmissä on käytössä hyvin vaatimaton suoritin, jonka nopeudessa ja käytettävissä olevan muistin määrässä olisi paljonkin toivomisen varaa. Näin ongelmaksi tulee tarvittavien ohjelmien sovittaminen tarjolla olevaan tilaan ja ohjelmien nopeuttaminen vastaamaan tarvetta. Yleensä tällaisessa pienessä järjestelmässä on kuitenkin vain vähän toimintoja, joten järjestelmän reaktiivisuus on yksinkertaista ja reaaliaikaisuus helppo todeta. Järjestelmän koon kasvaessa reaaliaikaominaisuuksien ratkaiseminen käy vaikeammaksi, koska seurattavia tapahtumia on paljon. Jos järjestelmä on lisäksi reaktiivinen, niin kuin se yleensä on, tulee ajoituksien laskennasta hyvin haastava toimenpide. Järjestelmän kasvaessa lisää alkavat ohjelmistotuotannon ongelmat nousta esille. Kuvaavaa onkin erään teollisuuden johtohenkilön kommentti, että heidän sulautettujen järjestelmiensä ongelma on se, että ne eivät ole sulautettuja järjestelmiä. Tässä vaiheessa järjestelmä on kasvanut jo niin suureksi, että vain pieni osa sen tekijöistä kokee sen varsinaisena sulautettuna ympäristönä, varsinkin, kun ohjaava laite voi olla suorituskyvyltään ja muilta ominaisuuksiltaan pöytäkonetta muistuttava teollisuus-pc. Käyttöliittymien ja yleensä käytettävyyden ja käyttökokemuksen merkitys on kasvamassa sitä suuremmaksi, mitä suurempi joukko käyttäjistä ei ole tekniikan ammattilaisia. Käyttöliittymä niin kuin itse asiassa sulautettujen järjestelmien tapauksessa usein koko laite on suunniteltava sovellusalueen ehdoilla sille tutuilla toimintatavoilla. Ammattikäyttöön sovelluksia ja laitteita suunnitellessa voidaan myös ajatella koulutusta uusien järjestelmien käyttöönoton yhteydessä, mutta massamarkkinoille suunnattuja järjestelmiä suunniteltaessa ollaan usein todella vaikeiden suunnitteluratkaisujen edessä, varsinkin kun tällöin käyttäjäkunta saattaa olla hyvin heterogeeninen. Lisäksi on huomattava, että sovellusalueen tunteminen on ohjelmoijallekin hyvin tärkeää. Ratkaistavat asiat eivät aina ole kovin suoraviivaisia, eivätkä alan omat asiantuntijat välttämättä tiedä, mikä on ohjelmistoteknisesti tai algoritmisesti mahdollista ja mikä ei.

14 14 Sulautettu ohjelmointi 1.2 Sulautettujen järjestelmien ominaispiirteitä Kuten edellä jo todettiin, sulautettujen järjestelmien koko vaihtelee hyvin pienistä erittäin suuriin. Ehkä selkeimmin tunnistettavia sulautettuja järjestelmiä ovat pienimmät järjestelmät, kuten esimerkiksi älykkäät anturit, automaattikamerat, videolaitteet ja matkapuhelimet, jotka kuitenkin ovat monimutkaisuudessaan aikamoisia ohjelmistoteknisen osaamisen taidonnäytteitä. Matkapuhelinten "älysarjassa" sulautettu luonne alkaakin jo hämärtyä. Laite, jonka perustarkoitus ja koko viittaa hyvinkin kauas tietotekniikasta voi olla hankala yhdistää sulautetuksi laitteeksi. Tällaisia ovat esimerkiksi ovat pesukoneet ja hissit, sekä erilaiset työkoneet kuten kallioporakone, konttilukki tai veturi. Monimukaisimmasta päästä sulautettuja järjestelmiä ovat esimerkiksi lentokoneet ja monet avaruustekniikan laitteet kuten satelliitit ja luotaimet. Sulautetuissa järjestelmissä tietokone on käyttäjän kannalta tavallisesti sivuosassa. Käyttäjän ei tarvitse tietää tietokoneen olemassaolosta ja voisi jopa kärjistäen sanoa, että jos käyttäjän on se tiedettävä, on järjestelmä suunniteltu väärin. Käyttäjän kannalta on tärkeää, että itse perustoiminta, jota varten laite on tehty, toimii odotetusti: hissi siirtyy siihen kerrokseen, mihin käyttäjä sen halusikin. Tietenkin on olemassa sulautettuja sovelluksia, jossa tietokoneen mukanaolo on vähintäänkin ilmeistä, kuten GPS-paikantimessa 1. Laitteen käyttötarkoitus on kuitenkin paikan selvittäminen, ja tämän pitää voida tapahtua ilman perustietoja tietotekniikasta. Sulautetuille järjestelmille on tyypillistä myös se, että ne ovat suljettuja. Tämä tarkoittaa sitä, että järjestelmän voi ohjelmistoja tai toimintoja voi muuttaa tai lisätä vain järjestelmän toimittaja. Niin sanottu kolmas osapuoli ei voi tuottaa sovelluksia järjestelmään kuin aivan poikkeustapauksissa. Tämä nimenomainen ominaispiirre on osittain murtumassa, sillä jotkut sulautetuille järjestelmille tarkoitetut käyttöjärjestelmät tai usein oikeammin ohjelmointiympäristöt tarjoavat myös kolmansille osapuolille tarkoitetun rajapinnan. Lisäksi jotkut järjestelmät tarjoavat rajoitetumpaa ohjelmointimallia, jossa ohjelmistoon on lisätty mahdollisuus suorittaa muita ohjelmia virtuaalikoneen 1. Erilaisten paikantimien (ja myös monien muiden sulautettujen järjestelmien) toteutustekniikasta on mahdollista tehdä arvauksia suorituskyvyn perusteella. Mitä nopeampi laite on, sitä todennäköisemmin siinä on käytetty erikoistettuja laitteistokomponentteja, ja vastaavasti hitaiden laitteiden hitauden syy löytyy usein ohjelmistosta.

15 Sulautetut järjestelmät 15 avulla. Virtuaalikoneeseen on myös mahdollista lisätä erilaisia tietoturvaan liittyviä mekanismeja. Käytännön toteutuksista laajimmalle lienee levinnyt mobiili Java, jota tukevia puhelimia on satoja miljoonia. Viime aikoina on myös kasvanyt kiinnostus tarjota mahdollisuus suorittaa skriptejä omassa ajoajan ympäristössä, jonka avulla on mahdollista tarjota käännettäviä ohjelmia parempaa räätälöityvyyttä ja joustavuutta myös loppukäyttäjän näkökulmasta. Esimerkkejä ovat erilaiset web-pohjaiset ympäristöt ja vaikkapa Qt-sovelluskehyksen tarjoama QtScriptympäristö, johon on periaatteessa mahdollista lisätä laitekohtaisia rajapintoja. Suuri osa sulautetuista järjestelmistä on reaaliaikaisia, eli järjestelmän toiminnalle on asetettu paitsi toiminnallisia myös aikaan liittyviä vaatimuksia. Yhdistettynä pieneen suoritustehoon tämä voi tuottaa ohjelmoijalle melkoisia vaikeuksia. Lisähaastetta suunnittelutyöhön tuo se, että usein sulautetuista laitteista halutaan valmistaa useita toisistaan hivenen poikkeavia versioita, joissa esimerkiksi laitteistoa muuntelemalla saadaan aikaan eri markkinoille sopivia tuotteita. Tällöin ohjelmistoa pitää kaiken lisäksi pystyä muuntelemaan sunnitelmallisesti, mikä tietysti vaikeuttaa suunnittelua. Kaiken edellisen lisäksi järjestelmiltä vaaditaan erittäin suurta turvallisuutta ja vikasietoisuutta. Sulautetun järjestelmän tulisi kaikissa tilanteissa toimia siten, että se ei viallisenakaan tai väärin ohjattuna aiheuta vaaraa käyttäjälleen, ympäristölleen tai itselleen. Laitteiden pitäisi toipua virhetilanteista mahdollisimman automaattisesti, jopa niin, että käyttäjä ei huomaa mitään. Tietenkin laite voi ilmoittaa tarvitsevansa huoltoa, mutta kaikissa tilanteissa sen toiminnan pitää olla turvallista. Esimerkiksi autojen ABS-jarrut muuttuvat tavallisiksi jarruiksi, jos ABS-jarrujärjestelmään tulee vika. ABS:n tuoma hyöty menetetään, mutta jarrut kuitenkin toimivat yhä. Vaihtoehto (tietenkin tässä tapauksessa järjetön, mutta joidenkin järjestelmien kannalta hyväksyttävä) olisi esimerkiksi se, että auto pysäytetään vian tullessa väkisin. Tämän tapahtuminen ohitustilanteessa ei varmastikaan olisi turvallista. Toisaalta taas teollisuusrobotin pysäyttäminen vikatilanteessa on yleensä järkevin teko. Yhteenvetona suunnittelijan tulee siis tietää, millaisessa ympäristössä laitetta käytetään, jotta voisi päätellä oikeat reagointitavat, mikäli niitä ei ole kirjattu järjestelmä- ja ohjelmistovaatimuksiin tai käytettävissä ei ole alan asiantuntijaa. Kysyminen on kuitenkin yleensä kaikkein paras, yksinkertaisin ja nopein tapa selvittää kaikki yksityiskohdat.

16 16 Sulautettu ohjelmointi 1.3 Sulautettujen ohjelmistojen erityispiirteitä Sulautetuista järjestelmistä lukumääräisesti suurin osa on toteutettu suorituskyvyltään hyvin pienten suorittimien avulla. Toisaalta suurimmissa järjestelmissä ohjauskoneena voi olla hyvinkin tehokas suoritin, tai jopa kokonainen klusteri niitä, kuten esimerkiksi puhelinkeskuksen tapauksessa. Vastaava skaala pienestä suureen on nähtävissä myös järjestelmän pohjana olevassa ohjelmistossa. Kaikkein pienimmät sovellukset toimivat ilman selvää ydin sovellus-jakoa, jolloin koko ohjelmisto toimii loogisen toimintansa ohella samalla myös "käyttöjärjestelmän" ytimenä eli vastaa keskeytyksien ohjauksesta oikeaan palveluohjelmaan, ajanjaosta ja prosessien välisestä kommunikoinnista. Näin varsinkin silloin, jos suoritin on käskykannaltaan ja muistiavaruudeltaan erittäin vaatimaton pienimmissä suorittimissa muistiavaruus voi olla kahdeksan kilotavua, johon on mahduttava sovellus, ydin (tai ainakin sen toiminnot) ja oheislaitteiden ohjausrekisterit. Aivan pienimpiä sovelluksia lukuunottamatta järjestelmässä on tavallisesti selkeästi sovelluksesta erotettu ydin. Tällainen ydin on tyypillisesti hyvin pieni, jotta se mahtuisi yhdessä sovelluksen kanssa lukumuistiin. Ytimen pienuudesta seuraa, että sen palvelutkin ovat minimaaliset. Jotkin kaupalliset ytimet ovat sellaisia, että niistä voidaan koota hyvin erikokoisia ja samalla palveluiltaankin erilaisia versioita. Pienimmillään ne vievät tilaa vain joitain kilotavuja, mutta suurimmillaan ne tarjoavat täyden käyttöjärjestelmän suojauspiirteineen kaikkineen. Tietysti ytimen kokokin on noussut noin megatavuun; joissain tapauksissa jopa merkittävästi yli. Kun ytimestä karsitaan pois toimintoja sulautettua järjestelmää varten, tyypillisiä poistettavia osia ovat esimerkiksi virtuaalimuisti, sillä sitä ei reaaliaikajärjestelmissä yleensä voi muutenkaan käyttää ennakoitavuuteen liittyvistä syistä, tiedostojärjestelmä, koska laitteissa on harvoin massamuisteja (asia, joka on kyllä muuttumassa), sekä suojaukset, koska niiden ylläpito kuluttaa resursseja ja ohjelmien testausvaiheen luotetaan löytävän mahdolliset ongelmat, varsinkin jos kyseessä on järjestelmä, joka on täysin suljettu. Sen sijaan järjestelmät, joita käyttäjä voi laajentaa omilla sovelluksillaan, on yleensä suunniteltava siten, että käyttäjän sovellukset ja järjestelmän omat sovellukset on mahdollista erottaa toisistaan, jotta kaikkein tärkeimmät toiminnot voidaan taata joka tilanteessa. Näin ei kuitenkaan aina käytännössä käy, vaan esimerkiksi matkapuhelimeen on melko helppo toteuttaa sov-

17 Sulautetut järjestelmät 17 ellus, joka estää hätäpuhelun soittamisen varaamalla laitteen kaiken suoritusajan tai muistin omaan käyttöönsä. Toisaalta suurimmat ja monimutkaisimmat sulautetut järjestelmät voivat sisältää kokonaisia yleiskäyttöisiä käyttöjärjestelmiä sekä niihin liittyviä (yleiskäyttöisiä tai sovellusaluekohtaisia) kirjastoja. Tällöin ohjelmoijan kannalta osa sulautetun ohjelmoinnin ominaispiirteistä katoaa, sillä esimerkiksi muistinkulutuksen kannalta ei enää ole suurta merkitystä sillä, onko jonkun tietorakenteen koko täsmälleen optimi. Toisaalta osa haasteista on edelleen ohjelmoijan ratkaistava. Näitä ovat esimerkiksi järjestelmän ajallisesti oikea käyttäytyminen sekä yleensä se, että järjestelmän toiminnan voi millään tasolla varmistaa testien ja muiden apuvälineiden avulla. Usein onkin niin, että oikean toiminnan varmistaminen testitapausten avulla ohjaa suunnittelua. Siksi monet suunnitteluratkaisut, jotka periaatteessa saattaisivat jopa olla teknisesti edistyksellisempiä, voivat olla käyttökelvottomia, jollei toimintaa kyetä varmentamaan riittävällä tarkkuudella. 1.4 Kokonaisjärjestelmän määrittely Sulautetun järjestelmän määrittely on monen alan asiantuntijoiden yhteistyötä. Koko sulautetun järjestelmän idea johtaa tähän hyvin luonnollisesti. Eri alojen asiantuntijoiden olisi hyvä tuntea toistensa aloja jonkin verran, jotta keskusteluissa ei tulisi pahoja väärinymmärryksiä. Jo pienelläkin kokemuksella sulautettujen järjestelmien suunnittelusta eri tekniikan alojen edustajat löytävät yleensä keinot puhua asioista, mutta erityisesti silloin, kun sovellusalue on kaukana tekniikasta, on viestin välittämiseen kiinnitettävä paljon huomiota, jotta molemmat osapuolet ymmärtäisivät sen samoin. Tyypillisiä aloja, joita järjestelmiä tehtäessä on edustettuina, ovat ohjelmistotekniikka, tietokonetekniikka, tietoliikennetekniikka, elektroniikka, automaatiotekniikka, mekaniikka ja itse sovellusalueen asiantuntijat. Aina näitä kaikkia ei tarvita, ja joskus mukana voi olla myös muotoilijoita, käyttöliittymäsuunnittelijoita ja markkinointihenkilöstöä, ehkä järjestelmän tilaajakin. Tyypillistä on, että ensimmäisen version tavoitteena on tehdä toimiva perusratkaisu. Kun tuote vanhenee, yhä uusia ideoita nousee esiin perustoimintojen rinnalle, ja tarvitaan laajempaa asiantuntemustakin. Jälleen kerran hyvä esimerkki on matkapuhelin, joiden ensimmäisissä versiossa oli tarpeeksi työtä siinä, että laite ylipäätään toimi. Uusimpia mainostetaan kuorien värillä, muotoilulla, pelien lukumäärillä, musiikkisoittimella ja vaikkapa sisäänrak-

18 18 Sulautettu ohjelmointi ennetulla kameralla. Lisäksi viime aikoina erilaiset web-liitynnät, kuten Facebook-sovellus, ovat nousseet tärkeiksi, samoin kuin tietysti koko käyttökokemus laitteesta. Kuten matkapuhelinesimerkistäkin käy ilmi, vaikka käyttäjän kannalta kyse on samasta (tai samantapaisesta) laitteesta, ohjelmiston kannalta muutokset voivat olla niin suuria, että olisi perusteltua ymmärtää laite kokonaan uutena järjestelmänä. Kun kokonaisjärjestelmää määritellään, on tietoteknisen osan kokonaismäärittelyyn usein sopivimmat työkalut ohjelmistoasiantuntijalla. On tietenkin selvää, että sovellusalueen kieli kuvaa sillä tasolla parhaiten haluttua toimintaa, mutta tästä on vielä pitkä matka siihen, että järjestelmä on toteutettu. Kun kokonaisjärjestelmä on hahmoteltu, voidaan siirtyä yksityskohtaisempaan suunnitteluun, jossa asetetaan eri osa-alueiden väliset rajapinnat. Tietoteknisen toteutuksen puolella voidaan jatkaa tästä yleisestä jakotasosta vielä eteenpäin ainakin jonkin verran, ennen kuin laitteiston ja ohjelmiston välinen rajapinta lyödään lopullisesti lukkoon (niin sanottu ohjelmiston ja laitteiston yhteissuunnittelu; system codesign). Korostettakoon vielä, että suunnittelutyöhön osallistuvien on ymmärrettävä toistensa ammattikieltä edes kohtalaisesti, jotta pystyisivät ymmärtämään esitettyjen vaihtoehtojen vaikutuksen omiin osuuksiinsa. Silloin, kun ollaan tekemisissä uuden sovellusalueen kanssa, tämän projekti- tai sovellusaluekohtaisen terminologian opettelu on välttämättä tarvittava osa projektia, vaikka sitä harvoin aikataulutetaan perinteisen projektinhallinnan keinoin Suunnittelun jakaminen osiin Kun kokonaisjärjestelmä on saatu määriteltyä, työ jatkuu kuvassa 1.1 esitetyn kaavion mukaan kohti toteutusta. Kokonaismäärittelyä seuraa siis kokonaissuunnittelu ja työn jako osiin. Työn jakamiseen palataan seuraavissa kohdissa, joten siitä ei tässä sen enempää. Olennaista on huomata, että suunnittelun edetessä erikseen ohjelmisto- ja laitteistopuolella on huolehdittava siitä, että rajapinnan epäselvyydet tai muutostarpeet selvitetään välittömästi niiden ilmaantuessa, koska muuten ne tulevat vastaan vasta integrointivaiheessa. Tätä jatkuvaa keskusteluyhteyttä eri haarojen välillä kuvaavat katkoviivat ohjelmisto- ja laitteistosuunnittelun välillä. Lisäksi on syytä muistaa, että myös muihin toteutukseen osallistuviin osa-alueisiin on vastaavanlainen yhteys. Erityisesti sovellusalueen asiantuntijaa on syytä käyttää koko prosessin ajan konsulttina.

19 Sulautetut järjestelmät 19 kokonaismäärittely kokonaissuunnittelu työn jako osiin ohjelmistomäärittely laitteistomäärittely ohjelmistosuunnittelu laitteistosuunnittelu ohjelmiston toteutus laitteiston toteutus ohjelmistotestaus laitteistotestaus integrointi & testaus Kuva 1.1 Suunnittelun eteneminen perinteisen mallin mukaan. Tämä asiantuntija yleensä myös hyväksyy tuotteen, mikäli kyseessä ei ole tilaustyö. Tilaustyön tapauksessa asiakkaalla pitää yleensä olla keinot riittävään laadun- ja toiminnallisuuksien varmistukseen. Vaihtoehtoisesti myös tämä osa työstä on mahdollista alihankkia silloin, kun ollaan tekemisissä erikoistuneiden järjestelmien kanssa. Tällöin ongelmaksi voi tosin muodostua se, miten testausalihankkijan työ voidaan varmentaa Ohjelmiston ja laitteiston rajapinta Ohjelmiston ja laitteiston rajapinta sisältää monia asioita. Osa näistä on hyvin "korkealla" tasolla verrattuna toisiin, joita voi kuvata lähinnä "nippelitiedoiksi". Tosin hyvin pieniltä näyttävät asiat voivat olla hyvin erilaisia toteuttaa. Esimerkiksi se, onko oheislaite keskeyttävä vai ei, saattaa vaikuttaa yhdeltä suunnalta katsottuna vain siltä, kytketäänkö yksi johdin oheislaitteelta suorittimelle vai ei. Kuitenkin ratkaisu vaikuttaa kaikkeen kyseistä laitetta suoraan käyttävään ohjelmistoon, ja epäsuorasti myös ehkä muihinkin laitteisiin niiden johdotusta suunniteltaessa. Samaten suunnitteluratkaisulla voi olla vaikutusta siihen, onko mahdollista hankkia laitteistoa valmiina, vai onko sen valmistuksesta huolehdittava itse.

20 20 Sulautettu ohjelmointi Laitteistorajapintaa on ensinnäkin käytettävä suoritin. Millainen käskykanta ja rakenne siinä on? Miten nopea suoritin on? Onko se jokin erikoissuoritin (signaalisuoritin?) vai yleissuoritin? Onko laitteessa kenties monta suoritinta? Ovatko ne keskenään identtisiä vai onko yksi yleissuoritin ja toinen jokin erikoissuoritin? Tukeeko laitteisto liukulukuja? Jos järjestelmässä on useampia kuin yksi suoritin, niin miten nämä kommunikoivat keskenään? Onko käytössä väylä, yhteinen muisti (millainen) vai jokin muu mekanismi? Suoritin ei kuitenkaan kerro läheskään kaikkea tarvittavaa laitteistosta. Se on itse asiassa usein kaikkein helpoin ja suoraviivaisin määriteltävä komponentti, jonka valinta on usein jo etukäteen päätetty johtuen esimerkiksi saatavilla olevista ohjelmistotyökaluista, laitteistokokonaisuuksista, kustannuksista, energiatehokkuudesta ja fyysisestä koosta. Muita asioita, jotka täytyy ratkaista ovat muisti ja sen organisointi, oheislaitteet, erilaiset liitynnät muihin tietokoneisiin ja mahdolliset sovellusta varten tehtävät erityislaitteet. Muisti ei välttämättä ole yhtenäinen, vaan siinä saattaa olla aukkoja. Osa muistista on lukumuistia (ROM tai jokin muu muistityyppi, jonka sisältöä ei voi muuttaa ohjelmallisesti), osa luku-kirjoitusmuistia (RAM, muisti, joka tyhjenee, mikäli sen sähkönsyöttö katkeaa). Näiden väliin jäävät erilaiset muistit, jotka säilyttävät tiedon sähkökatkon yli, mutta joiden sisältöä voidaan muuttaa (esimerkiksi EEPROM, Flash- ROM). Näiden jälkimmäisten käyttö ei välttämättä ole yhtä näppärää kuin tavallisen luku kirjoitusmuistin, sillä tyhjennys tehdään tavallisesti erityiskäskyllä lohkolle kerrallaan, eikä piiri kestä muutoksia rajattomasti. Edellisten lisäksi järjestelmässä voi olla paristovarmennettuja luku kirjoitusmuisteja. Kaiken tämän fyysisen muistin kuvauksen lisäksi tulee selvittää, millainen muistinhallintayksikkö (MMU, Memory Management Unit) järjestelmässä on, vai onko sitä ollenkaan. Oheislaitteista tulee selvittää niiden lukumäärän ja tyypin lisäksi myös se, miten ne on sijoitettu keskusmuistiin, millaisten rekisterien tai käskyjen kautta niitä ohjataan ja miten sekä ovatko ne keskeyttäviä. Keskeytystapa on myös selvitettävä. Osa oheislaitteista voi olla erityisesti tätä sovellusta varten suunniteltuja, mihin palataan myöhemmin yksityiskohtaisemmalla tasolla. Muita olennaisia asioita ovat muun muassa liitynnät muihin järjestelmän tietokoneisiin. Nämä voivat olla toteutettuja sarjaliitynnöillä, väylillä tai valmiiden oheislaitepiirien kautta.

21 Sulautetut järjestelmät Ohjelmiston ja laitteiston yhteissuunnittelu Monet toiminnot voidaan toteuttaa joko ohjelmistolla tai laitteistolla. Rajapinnan määrittely ei tällaisessa tilanteessa aina ole kovin selvää, sillä rajapinnan valintaan vaikuttavat sekä uudet tarjolla olevat ratkaisut että tehtävän laitteen luonne. Paras rajapinta on siis monen tekijän funktio, joissa taloudelliset tekijät, kuten esimerkiksi hinta, soveltuvat valmistustekniikat, käytettävissä oleva valmistuskapasiteetti ja monet muut seikat ovat mukana teknisten rinnalla. Näin varsinkin silloin, mikäli teknisesti eri vaihtoehdoilla ei ole selvää eroa. Lisäksi, vaikka ohjelmoija ei sitä aina tiedäkään, taloudelliset seikat ovat saattaneet vaikuttaa jo siihen, kannattaako kyseistä laitetta lainkaan toteuttaa. Yksi taloustekijä on laitteen oletettu valmistusmäärä. Mikäli laitteesta tehdään vain yksi tai muutama kappale, eivät standardikomponenteista koottujen laitteiden osakustannukset nouse merkittäviksi. Jos näiden komponenttien korvaaminen ohjelmallisesti on suurehkon työn takana, kannattaa käyttää laitteistoa ongelman ratkaisuun. Mikäli valmistusmäärät kasvavat, alkaa lisäkomponentin kustannus nousta niin, että sen korvaava ohjelmisto kannattaa tehdä. Tällaisesta tapauksesta voisi esittää esimerkkinä staattisen sähkömittarin kalibroinnin. Sähkömittari kalibroidaan perinteisesti siten, että erilaisilla säätövastuksilla tai -kondensaattoreilla säädetään lukemat kohdalleen. Vaikka nämä komponentit eivät maksa paljoakaan, eikä niiden latominen piirikortille, testaus ynnä muu sellainen nosta summaa kovin isoksi laitetta kohti, tuottaa mittarin vuosituotannossa jo pienikin säästö mittaria kohti hyvinkin sen ohjelmoijan palkan, joka toteuttaa kyseisen toiminnon ohjelmallisesti. Komponenttien vähentäminen ei kuitenkaan aina johda kustannusten vähenemiseen. Komponentin poisjättäminen voi aiheuttaa muiden komponenttien vaatimusten ja samalla hinnan monikertaistumista. Esimerkiksi suorittimeen suoraan liitetty sarjaliityntä aiheuttaa keskeytyksen joka tavun jälkeen. Tällaisessa järjestelmässä sarjaliityntä kuormittaa runsaasti suoritinta, ja tiedonsiirtonopeuden noustessa suorittimen koko kapasiteetti kuluu jo suhteellisen pienillä nopeuksilla sarjaliitynnän palvelemiseen. Mikäli sarjaliityntä kytketäänkin puskurimuistiin, johon mahtuu kerrallaan 16 alkiota, ja keskeytys generoidaan, kun muisti on puolitäysi, kuormittuu suoritin aiemmalla maksimikuormalla vain 10-12%. Ensimmäisenä mieleen tuleva ilmeinen suorituskykyä parantava vaihtoehto suorittimen korvaaminen nope-

22 22 Sulautettu ohjelmointi ammalla maksaa kuitenkin todennäköisesti paljon enemmän kuin tämä "ylimääräinen" komponentti. Kun tuotantomäärät kasvavat lisää, kääntyy joidenkin toimintojen toteutuksen edullisuus jälleen laitteistopuolen hyväksi. Tällöin kannattaa suunnitella oma sovelluskomponentti, joka säästää standardikomponenttien lukumäärän vähenemisen kautta tuotantokustannuksia (esimerkiksi edellä ollut puskurimuisti integroidaan osaksi suoritinta). Lisäksi komponentissa voidaan toteuttaa omia erityispiirejä tukemaan ohjelmien nopeaa suoritusta tai jopa korvata joitain tavallisesti ohjelmistolla toteutettavia algoritmeja laitteistolla. Lisähyöty on vielä sekin, että laitteen kopiointi on näin paljon vaikeampaa, ellei jopa mahdotonta. Ohjelmoitavien piirien kautta laitteistovaihtoehto alkaa olla käytettävissä jo suhteellisen pienissäkin tuotantomäärissä. Ohjelmiston ja laitteiston yhteissuunnittelu tarkoittaa siis tyypillisesti sellaista järjestelmän suunnittelua, jossa rajapinta määräytyy lopullisesti vasta suunnittelun aikana. Kuten edellä olevasta käy ilmi, tässä on eri tasoja riippuen tuotteen ominaisuuksista. Lisäksi tekniikan eri osa-alueiden kehitys johtaa siihen, että paras rajapinta muuttuu jatkuvasti. Hinnan lisäksi rajapintaan voivat vaikuttaa laitteelta vaadittu nopeus sekä lait, asetukset ja muut viranomaismääräykset. Nämä tavallisesti johtavat laitteistolla toteutettaviin ratkaisuihin: liukuluvut ovat nopeampia laitteistolla, ja vastaavasti turvakytkimet katkaisevat sähkönsyötön mekaanisesti, ei ohjelmallisesti. On syytä muistaa, että laitteiston ja ohjelmiston yhteissuunnittelu tarkoittaa kokonaisjärjestelmän kannalta usein yhtä komponenttia. Sen kohteena voi olla pieni osa koko ohjelmistosta ja laitteistosta, ja suurin osa järjestelmästä tehdään yhä perinteiseen malliin. Pisimmälle vietynä yhteissuunnittelu voi tarkoittaa sitä, että tarvittava ohjelmisto kirjoitetaan valmiiksi, ja tästä ohjelmasta generoidaan sekä laitteisto (suoritin ja oheislaitteet) että tämän laitteiston tarvitsema ohjelma. Joissakin ympäristöissä tätä kokonaisuutta voidaan myös simuloida ennen varsinaista generointia, jolloin järjestelmän verifiointi (ainakin periaatteessa) voidaan suorittaa jo ennen varsinaista toteuttamista. 1.5 Eri alojen edustajien roolit Tämän osuuden tarkoituksena on kuvata eri asiantuntijoiden roolia määriteltäessä ja suunniteltaessa sulautettua järjestelmää. Esimerkiksi voidaan ottaa mikä tahansa sovelluskohde: tässä esimerkkinä on rakennusautomaation järjestelmä, jonka tavoitteena on pitää huolta talon il-

23 Sulautetut järjestelmät 23 mastoinnista ja lämmityksestä. Koska ei ole mielekästä suunnitella järjestelmää vain yhtä tiettyä tapausta kohti, on järjestelmän oltava skaalattavissa annetuissa rajoissa. Työn alkuvaiheessa on suhteellisen helppo havaita, että järjestelmän toteuttamiseen tarvitaan ainakin LVI-alan asiantuntijoita, mahdollisesti automaation asiantuntijoita, tietokonetekniikan asiantuntijoita ja ohjelmistotekniikan asiantuntijoita. Kullakin osallistujalla on oma näkemyksensä siitä, mitä järjestelmä on, ja kukin näkee hieman erilaisia tarpeita kokonaisjärjestelmälle. Tätä esimerkkiä lukiessa ei kannata pohtia juuri esimerkin ongelmakenttää. LVI-asiantuntija on tässä sovellusalueen käytännön asiantuntija, automaation asiantuntija on edellä mainittu alueen teoreettisen osaamisen asiantuntija ja niin edelleen LVI-asiantuntijan näkökulma LVI-asiantuntijan (tai avaruus-, moottorinohjaus- tai ydinfysiikan asiantuntijan) näkökulma on sovellusalan näkökulma. Hänen tehtävänään on asettaa järjestelmän toiminnalliset tavoitteet, ja hän myös vastaa siitä, että mitään perustoimintaa ei unohdeta. Tämä on käytännössä usein vaikeaa, sillä asiantuntijalle alasta riippumatta ovat perusasiat itsestään selviä, ja hän helposti luulee, että muutkin tuntevat ne. Niinpä muiden pitää varmistua siitä, että he ovat ymmärtäneet sovellusalan tarpeet oikein. Muut osallistujat voivat ideoillaan laajentaa tai supistaa tavoitteita, sillä sovellusalueen asiantuntija on yleensä kiinnostunut vain sovellusalueen ongelmien ratkaisusta, eikä välttämättä ota huomioon ohjelmistoihin liittyviä modulaarisuus- tai muunneltavuusvaatimuksia lainkaan. Sovellusalueen asiantuntija tuntee oman alansa nykytekniikan, tietää, mitä siitä voidaan ottaa järjestelmään mukaan sellaisenaan, kuten esimerkiksi ohjainlaitteita ja antureita. Lisäksi hän tietää, millaisia laitteita kilpailijat ovat julkistaneet ja joskus myös sen, mitä eivät vielä ole julkaisseet, mutta aikovat. Sovellusalueen asiantuntija määrittää laitteistojen minimi- ja maksimitarpeet. Hän osaa antaa perusratkaisut sovellusalaan liittyvään matematiikkaan ja algoritmeihin. Erityisesti hänen tulee osata tulkita näitä, ja osata ilmaista niiden tarkoitus tai perustoiminta esimerkiksi peukalosääntöjen avulla. Kaiken kaikkiaan sovellusalueen asiantuntija, tässä tapauksessa siis LVI-asiantuntija, näkee koko järjestelmän LVIongelmana, jossa on hieman muutakin mukana.

24 24 Sulautettu ohjelmointi Automaation asiantuntijan näkökulma Tässä esimerkissä automaation asiantuntija toimii sovellusalueen asiantuntijan tietämyksen täydentäjänä tuomalla siihen lisää teoreettista pohjaa automaatiotekniikan alueilla. Tällainen sovellusalueen lisäasiantuntija ei aina ole tarpeellinen, mutta toistaalta tällainen asiantuntija voi esittää uusia, korvaavia ratkaisuja, joiden toimivuus on selvitettävä varsinaisen sovellusalueen asiantuntijan kanssa. Esimerkkinä voisivat olla vaikkapa adaptiiviset säätöjärjestelmät, jotka mahdollistavat suuremman skaalautuvuuden. Kun uutta järjestelmää tehdään ainakin osittain uudelta pohjalta, voidaan törmätä sellaisiin ongelmiin, joita vanhoissa järjestelmissä ei ollut tai niihin ei voitu vaikuttaa. Tällaisessa tilanteessa lisäasiantuntijat voivat tuoda tarvittavaa lisätietämystä näiden uusien ongelmien ratkaisemiseen. Lisäasiantuntija näkeekin ongelman lähinnä oman alansa ongelmana, tässä tapauksessa siis automaatio-ongelmana Tietokoneasiantuntija Tietokone- ja digitaalitekniikan asiantuntija vastaa tarvittavan tietokonelaitteiston suunnittelusta tai valinnasta. Usein järjestelmään voidaan hankkia osia valmiina, ja tehtäväksi voi jäädä niiden yhteensovittaminen. Samankaltainen sovitusongelma on tarvittavien mitta- ja ohjauslaitteiden liittäminen tietokoneeseen: vaikka itse tietokone ja oheislaitteet saataisiin valmiina, ne täytyy saada keskustelemaan keskenään. Sovittamistyössä voidaan käyttää muiden alojen asiantuntijoita lisäasiantuntijoina. Esimerkissä LVI-suunnittelijalta saadaan tietää eri liityntätyyppien minimi- ja maksimimäärät. Aina tällainen lukumäärätasoinen tieto ei kuitenkaan ole riittävää, vaan tarvitaan syvällisempää apua. Esimerkiksi suunniteltava laite voi olla sellainen, että sitä tulee voida käyttää myös vaikeissa ympäristöolosuhteissa. Tällaisia tekijöitä ovat muun muassa pöly, kosteus, äärimmäinen lämpötila (ja lämpötilan vaihtelut), räjähdysvaara ja voimakkaat magneettikentät. Liitynnöille saatetaan antaa suuria vaatimuksia, esimerkiksi joissain ohjausjärjestelmissä liityntöjen tulee kestää jopa kilovolttien jännitettä siltä varalta, että jossain muualla järjestelmässä tulee vikoja tai lähistölle lyövä salama indusoi jännitepiikin. Eräs nykyajan erityisongelma on suojautua matkapuhelinten radiopurskeita vastaan. Lähes kaikissa sairaaloissa on kielletty matkapuhelinten käyttö (tosin nykyään usein turhaan ja vain varmuuden vuok-

25 Sulautetut järjestelmät 25 si), mutta ongelmia esiintyy muuallakin. Esimerkiksi käyvät autojen turvatyynyt, jotka varsinkin alkuaikoina saattoivat laueta matkapuhelimen aktivoituessa lähistöllä. Itse tietokonelaitteiston kohdalla tulee yhdessä ohjelmistoasiantuntijan kanssa päättää käytettävästä suorittimesta tai ainakin järjestelmän vaatimasta suurimmasta laskentatehosta, muistitilan tarpeesta ja millaista muistia tarvitaan (lukumuisti, luku-kirjoitusmuisti, kirjoitettava lukumuisti). Lisäksi tulee selvittää, mitä tehdään sähkökatkon tapahtuessa järjestetäänkö akkuvarmennus, suojataanko vain muisti ja sähkön palautuessa tehdään "pehmeä" käynnistys, tehdäänkö jotain muuta vai ei mitään. Myös käynnistyssekvenssiin tulee kiinnittää erityistä huomiota, sillä järjestelmä täytyy pystyä käynnistämään niin, että käynnistyksen aikana ei tapahdu mitään hallitsematonta. Osittain näitä käynnistysongelmia voidaan ratkaista ohjelmallisesti oikealla käynnistysjärjestyksellä, mutta aina tämä ei ole mahdollista, mikä vaatii sitten sen, että laitteistopuolella asia on hoidettu kuntoon. Tämäkin asiantuntija näkee ongelman oman alansa ongelmana, eli siis laitteisto-ongelmana, ja ohjelmisto on hänelle "musta laatikko" Ohjelmistoasiantuntija Ohjelmistoasiantuntijan tehtävänä on suunnitella, toteuttaa ja testata ohjelmisto. Tämä ei vähänkään suuremmassa järjestelmässä ole tietenkään yhden henkilön tehtävä, niin kuin ei edellisissäkään tehtävissä. Työnsä pohjaksi hän saa: Sovellusalueen edustajalta perustiedot ongelmasta ja ratkaisumallit "korkealla tasolla". Sovellusalueen lisäasiantuntijoilta algoritmeja tai muita vastaavia ohjeita. Tietokonesuunnittelijalta laitteiston rakenteen, muun muassa suorittimen mallin, muistien ja oheislaitteiden sijoittelun muistiavaruuteen ja oheislaitteiden ohjaustiedot (datalehdet ynnä muut sellaiset). Yrityksellä on usein oma sovelluskehyksensä tai useita sellaisia, ja ohjelmiston tekijän tulee sovittaa ohjelmistonsa näiden kehysten mukaan toteutettaviksi. Lisäksi on asioita, joita tulee koko ryhmän miettiä. Tällainen asia on esimerkiksi se, mitä tehdä sähkökatkoksessa tai jossain muussa virhetilanteessa.

26 26 Sulautettu ohjelmointi Edellisten pohjalta ohjelmistosuunnittelijan tulee arvioida tarvittavien ohjelmien koko ja suorittimen tehontarve tietokoneasiantuntijaa varten. Koska nämä tarpeet vaikuttavat siihen, mitä tietokonelaitteiston suunnittelija tekee, voidaan helposti havaita, että kyseessä on yhteistyössä tapahtuva järjestelmän määrittely. Vastaavanlaisia rajapintoja on kaikkialle, koska jotkin sinänsä järkevät ratkaisut voivat johtaa ohjelmallisesti mahdottomaan erityisesti reaaliaikaympäristössä tai hyvin vaikeasti ratkaistavaan tilanteeseen. Kaiken kaikkiaan ohjelmistojen tekijän on huolehdittava siitä, että muilta osapuolilta saatu määrittely riittää ohjelmien määrittelyyn ja toteutukseen. Järjestelmän kokonaiskuvan hahmottamiseksi sen kokonaismäärittelyn tulisi olla kattava, ja tähän on yleensä ohjelmistoasiantuntijalla parhaat työkalut. On tietenkin selvää, että määrittely on yhteistyötä, ja siitä vastaavan henkilön tulee olla sen, joka siihen parhaiten pystyy, riippumatta siitä, mikä hänen koulutustaustansa on. Ohjelmistosuunnittelija näkee ongelman lähinnä ohjelmointiongelmana, jossa laitteisto on musta laatikko ja LVI- ja automaatiopuoli (eli sovellusalue) kertoo ratkaistavan ongelman Suunnittelutyön eteneminen Suunnittelutyö etenee vaiheittain siten, että alussa lähdetään järjestelmän vaatimuksista. Erityisesti on huolehdittava, että sovellusalueen perusvaatimukset tulevat täytettyä. Tätä pohjaa voidaan sitten ideapalavereissa täydentää ja tarkentaa. Vaatimusten pohjalta syntyy sitten pohdintaa eri ratkaisuvaihtoehdoista. Esimerkkinä olevassa ilmastointijärjestelmässä voidaan miettiä järjestelmän ohjausta. Toteutetaanko tarvittavien mittatietojen kerääminen ja ohjausten antaminen erillisjohdotuksella vai kenties jollain väyläratkaisulla vai ehkäpä langattomasti? Esille tulevia näkökohtia voisivat olla esimerkiksi seuraavat: Sinänsä on aivan sama, miten tiedot kerätään, kunhan ne kerätään. Erillisjohdotusta on käytetty ennenkin, miksei siis nytkin. Erillisjohdotus tarvitsee keskusyksikköön päätelaitteen tai vastaavan joka mittauspistettä tai ohjauspistettä kohti. Väyläratkaisuja ei tarvitse tehdä alusta lähtien uudestaan, vaan niitä on saatavilla valmiina, esimerkiksi LON (Luku 14). Erillisjohdotus vie enemmän johtoa, mutta väyläratkaisu vaatii enemmän älykkyyttä siihen liitetyille laitteille. Kumpi on edullisempaa?

27 Sulautetut järjestelmät 27 Väyläratkaisua ei ole vielä käytetty paljon, eikä tekijöillä ole siitä kokemusta. Uskalletaanko se ottaa käyttöön? Tulevaisuus on kuitenkin väylän tai langattoman ratkaisun, joten ei kannata tehdä enää erillisjohdotuksella. Väylä- tai langaton ratkaisu on paljon helpompi skaalata. Mutta mikä väyläratkaisu otetaan? Entä jos valitsemme väärän? Talon valaistuksen ja muun sähkönjakelun ohjauksen voisi järjestää samalla väylällä, mikä tuo kokonaissäästöjä (ja yhden lisäasiantuntijan projektiin). Entä jos väylää ei johdoteta, vaan käytetään langatonta ratkaisua? Ohjelmallehan on yhdentekevää, miten tieto siirtyy yksiköiden välillä. Langaton vaihtoehto voitaisiin asentaa jälkikäteenkin, kun johdotusta ei tarvitse tehdä. Häiritseekö langaton järjestelmä jotain muuta järjestelmää tai päin vastoin? Lopullinen ratkaisu syntyy sitten yhdessä esitettyjen argumenttien pohjalta. Teknisten argumenttien lisäksi vaikuttaa päätökseen muun muassa ratkaisun taloudellisuus sekä tehtävän tuotteen arvoitu elinikä valitulla tekniikalla. Joskus myös käytettävissä oleva aika estää uuden tekniikan käyttöönoton, mikäli tämän tekniikan käyttö aiheuttaisi viivästymistä siihen kouluttautumisen tai muun vastaavan syyn takia Lisähuomioita Edelliset kuvaukset painottuivat hyvin voimakkaasti tietoteknisiin ongelmiin. Näiden lisäksi tulevat käyttöliittymiin ja turvallisuuteen liittyvät ongelmat: kuka voi ohjata ilmastointijärjestelmää ja miten? Lisäksi esimerkiksi laitteiston kotelointi voi varsinkin erityisympäristössä olla vaikeaa, ja siinä tarvitaan omaa osaamista. Vaikka teknisessä tilassa olevan ilmastointi- ja lämmitysjärjestelmän ulkonäkö ei todennäköisesti ole sen myynnin kannalta kovinkaan tärkeää, niin joissain muissa projekteissa tilanne voi olla täysin toinen. Mitä useammin laite on näkyvillä ja loppukäyttäjän suorassa ohjauksessa, sitä tärkeämpää on, että se miellyttää käyttäjää myös ulkoisilta ominaisuuksiltaan.

28 28 Sulautettu ohjelmointi 1.6 Sulautetut järjestelmät ja sulautettu ohjelmointi Sulautettujen järjestelmien toteutuksen yhteydessä sulautettu ohjelmointi on välttämätöntä. Toisaalta aina joskus sulautettua ohjelmointia tarvitaan myös muunlaisissa yhteyksissä, kuten vaikkapa pöytäkoneen näytönohjaimen kapasiteettia hyödynnettäessä tai laiteajuria tai käyttöjärjestelmän ydintä toteutettaessa. Tästä syystä tässä teoksessa ei rajoituta vain sulautettuihin järjestelmiin, vaan pyritään tasolle, jossa ohjelmistoteknisesti olennaisimmat seikat tulisivat ilmi, jotta teknisten yksityiskohtien soveltaminen erilaisissa tilanteissa on mahdollista tarpeen mukaan. Yhteisiä piirteitä sekä sulautetuille järjestelmille sekä edellä mainituille suunnittelutehtäville ovat ainakin seuraavat: Tarkkaan rajattu mahdollisuus käyttää muistia, ja ymmärrys siitä, miten paljon muistia käytetään. Ymmärrys siitä, mitä taustalla olevan laitteiston oletetaan tekevän. Huolellisuus suorituskyvyn kannalta olennaisten suunnitteluratkaisujen osalta, jopa siten, että useita erilaisia toteutuksia kokeillaan eri tilanteissa. Työkalut on yleensä jollain lailla erikoistettu tähän nimenomaiseen tehtävään. Ohjelmointitehtävät vaativat tyypillisesti ajastuksen ja aikaan sidonnaisten tapahtumien hallintaa. Rinnakkaiset suoritukset ovat tavallisia. Edellä esitetyt seikat muodostavat sulautetun ohjelmoinnin tärkeimmät vaatimukset. 1.7 Yhteenveto Sulautetussa järjestelmässä ohjelmisto ja laitteisto ovat kiinni toisissaan niin saumattomasti, ettei kumpikaan ole käyttökelpoinen ilman toista. Sulautetun järjestelmän suunnittelussa tarvitaan tyypillisesti useita erilaisia insinööritieteitä, ja sulautetun ohjelmiston toteutuksessa joudutaan usein yhdistämään eri alojen asiantuntijoiden vaatimukset. Sulautettu ohjelmointi, jota väistämättä tarvitaan sulautetun järjestelmän toteuttamisessa, mutta myös yleisemmin laitteistonläheisten ohjelmistoteknisten ongelmien ratkaisussa vaatii sisään-

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

1. Sulautetut järjestelmät

1. Sulautetut järjestelmät Sulautetut järjestelmät 11 1. Sulautetut järjestelmät Sulautettu järjestelmä on alunperin ohjelmistotyössä käytetty termi. Vastaavia muiden alojen termejä, jotka tarkoittavat lähes samaa asiaa, on eri

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

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

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

OHJ-4301 Sulautettu Ohjelmointi

OHJ-4301 Sulautettu Ohjelmointi OHJ-4301 Sulautettu Ohjelmointi (http://www.cs.tut.fi/~sulo/) /~sulo/) 5op, to 12-14, 14, TB 109 Tommi Mikkonen, tommi.mikkonen@tut.fi Arto Salminen, arto.salminen@tut.fi Läpäisyvaatimukset Hyväksytysti

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

14. Luento: Kohti hajautettuja sulautettuja järjestelmiä. Tommi Mikkonen,

14. Luento: Kohti hajautettuja sulautettuja järjestelmiä. Tommi Mikkonen, 14. Luento: Kohti hajautettuja sulautettuja järjestelmiä Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Johdanto Hajautettujen järjestelmien väyliä LON CAN Pienen laitteen sisäinen hajautus OpenCL Network

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

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

3. Luento: Muistin hallinta. Tommi Mikkonen,

3. Luento: Muistin hallinta. Tommi Mikkonen, 3. Luento: Muistin hallinta Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Erityyppiset muistit Ohjelman sijoittelu muistiin Ohjelman sisäinen muistinhallinta Muistinhallintayksikkö Välimuisti Yhteenveto

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

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017

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

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

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

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

Arto Salminen, arto.salminen@tut.fi

Arto Salminen, arto.salminen@tut.fi 3. Luento: Muistin hallinta Arto Salminen, arto.salminen@tut.fi Agenda Mitä väliä? Erityyppiset muistit Ohjelman sijoittelu muistiin Ohjelman sisäinen muistinhallinta Muistinhallintayksikkö Välimuisti

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

OHJELMISTOKEHITYS -suuntautumisvaihtoehto

OHJELMISTOKEHITYS -suuntautumisvaihtoehto OHJELMISTOKEHITYS -suuntautumisvaihtoehto Suuntautumisvaihtoehdon esittely 1. vuoden opiskelijoille Kari Laitinen www.oamk.fi/~karil/opetus.html Ohjelmistokehitys -opintosuunnan valitsevista henkilöistä

Lisätiedot

Agenda. Läpäisyvaatimukset Henkilökunta Luennot ja aikataulu Kurssimateriaali Harjoitustyöt Demoharjoitus Tentti ja arvostelu Muuta?

Agenda. Läpäisyvaatimukset Henkilökunta Luennot ja aikataulu Kurssimateriaali Harjoitustyöt Demoharjoitus Tentti ja arvostelu Muuta? OHJ-4301 Sulautettu Ohjelmointi (http://www.cs.tut.fi/~sulo/) 5op, to 12-14, 14, TB 109 Arto Salminen, arto.salminen@tut.fi Agenda Läpäisyvaatimukset Henkilökunta Luennot ja aikataulu Kurssimateriaali

Lisätiedot

Tietotekniikan koulutusohjelman suuntautumisvaihtoehdot

Tietotekniikan koulutusohjelman suuntautumisvaihtoehdot Tietotekniikan koulutusohjelman suuntautumisvaihtoehdot 1. vuosi Perusopinnot 2. vuosi 3. vuosi ELEKTRONIIKAN SUUNNITTELU JA TESTAUS MOBIILI TIETOLIIKENNE OHJELMISTOJEN KEHITYS 4. vuosi Ohjelmistojen kehitys

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

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services Järjestelmäarkkitehtuuri (TK081702) Standardoidutu tapa integroida sovelluksia Internetin kautta avointen protokollien ja rajapintojen avulla. tekniikka mahdollista ITjärjestelmien liittämiseen yrityskumppaneiden

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

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

11. Luento: Vikasietoisuus. Tommi Mikkonen,

11. Luento: Vikasietoisuus. Tommi Mikkonen, 11. Luento: Vikasietoisuus Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Vikasietoisuuden käsitteistöä Vikasietoisuuden saavuttaminen Ohjelmisto- ja laitteistovioista Vika-analyysi Esimerkkejä Vikasietoisuuden

Lisätiedot

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle,

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle, Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle, sovellusohjelmille ja käyttäjille? 2012-2013 Lasse Lensu

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

SÄHKÖTEKNIIKAN KOULUTUSOHJELMA 2010

SÄHKÖTEKNIIKAN KOULUTUSOHJELMA 2010 SÄHKÖTEKNIIKAN KOULUTUSOHJELMA 2010 Sähkötekniikan koulutusohjelman toimintaympäristö ja osaamistavoitteet Sähkötekniikan koulutusohjelma on voimakkaasti poikkialainen ja antaa mahdollisuuden perehtyä

Lisätiedot

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä Tietojenkäsittelyn perusteet 2 Lisää käyttöjärjestelmistä 2011-02-09 Leena Ikonen 1 Systeemiohjelmat Systeemiohjelmiin kuuluvat Kääntäjät ja tulkit (+debuggerit) Käyttöjärjestelmä Linkittäjät Lataajat

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

6. Luento: Skedulointi eli Vuoronnus. Tommi Mikkonen, tommi.mikkonen@tut.fi

6. Luento: Skedulointi eli Vuoronnus. Tommi Mikkonen, tommi.mikkonen@tut.fi 6. Luento: Skedulointi eli Vuoronnus Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Peruskäsitteet Skedulointialgoritmeja Reaaliaikajärjestelmien skedulointi Skeduloituvuuden analysoinnista Yhteenveto Peruskäsitteet

Lisätiedot

SOVELLUSALUEEN KUVAUS

SOVELLUSALUEEN KUVAUS Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu SOVELLUSALUEEN KUVAUS LiKe Liiketoiminnan kehityksen tukiprojekti Versio: 2.1 Tila: hyväksytty Päivämäärä: 12.12.2000

Lisätiedot

Hyvinkään Vuokra-Asunnot Oy: Lämmityksen ohjaus- ja seurantajärjestelmä

Hyvinkään Vuokra-Asunnot Oy: Lämmityksen ohjaus- ja seurantajärjestelmä Hyvinkään Vuokra-Asunnot Oy: Lämmityksen ohjaus- ja seurantajärjestelmä Osallistumishakemukseen liittyviä kysymyksiä saapui määräaikaan 15.11.2014 klo 12.00 mennessä 18 kappaletta. Ohessa on yhteenveto

Lisätiedot

Ohjelmien automaattisen verifioinnin reunamailla

Ohjelmien automaattisen verifioinnin reunamailla Ohjelmien automaattisen verifioinnin reunamailla Antti Siirtola Tietotekniikan laitos, Perustieteiden korkeakoulu, Aalto-yliopisto, antti.siirtola@aalto.fi Suomalainen Tiedeakatemia, Nuorten akatemiaklubi,

Lisätiedot

Muistitko soittaa asiakkaallesi?

Muistitko soittaa asiakkaallesi? webcrm Finland 1 webcrm Finland Muistitko soittaa asiakkaallesi? Riippumatta siitä, oletko myyntipäällikkö, markkinoija vai työskenteletkö HR tehtävissä, voit käyttää CRM ratkaisua erilaisiin tarpeisiin.

Lisätiedot

Tietokoneen muisti nyt ja tulevaisuudessa. Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu

Tietokoneen muisti nyt ja tulevaisuudessa. Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu Tietokoneen muisti nyt ja tulevaisuudessa Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu Yleisesti Muisti on yksi keskeisimmistä tietokoneen komponenteista Random Access Memory on yleistynyt

Lisätiedot

Käyttöjärjestelmät: prosessit

Käyttöjärjestelmät: prosessit Käyttöjärjestelmät: prosessit Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet Käyttöjärjestelmä

Lisätiedot

ADE Oy Hämeen valtatie 144 20540 TURKU. Tuotekonfigurointi. ADE Oy Ly Tunnus: 1626957-3

ADE Oy Hämeen valtatie 144 20540 TURKU. Tuotekonfigurointi. ADE Oy Ly Tunnus: 1626957-3 Tuotekonfigurointi ADE Oy lyhyesti Asiakkaiden tarpeisiin suunnattua innovatiivista ja toimivaa ohjelmisto- ja 3d animaatiopalvelua. Ade Oy on toteuttanut vuodesta 2000 alkaen haastavaa interaktiivista

Lisätiedot

TK081001 Palvelinympäristö

TK081001 Palvelinympäristö TK081001 Palvelinympäristö 5 opintopistettä!! Petri Nuutinen! 8 opintopistettä!! Petri Nuutinen! RAID RAID = Redundant Array of Independent Disks Useasta fyysisestä kiintolevystä muodostetaan yhteinen

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

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

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

Testaajan eettiset periaatteet

Testaajan eettiset periaatteet Testaajan eettiset periaatteet Eettiset periaatteet ovat nousseet esille monien ammattiryhmien toiminnan yhteydessä. Tämä kalvosarja esittelee 2010-luvun testaajan työssä sovellettavia eettisiä periaatteita.

Lisätiedot

Palvelut. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut käyttöjärjestelmät

Palvelut. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut käyttöjärjestelmät Sulautetut järjestelmät Luku 2 Sivu 1 (??) Palvelut Käyttöjärjestelmän tehtävänä on tarjota ohjelmoijalla erilaisia palveluita Tyypillisin palvelu, jota sulautetut käyttöjärjestelmät tarjoavat on prosessien

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

Software engineering

Software engineering Software engineering Alkuperäinen määritelmä: Naur P., Randell B. (eds.): Software Engineering: A Report on A Conference Sponsored by the NATO Science Committee, NATO, 1968: The establishment and use of

Lisätiedot

7.4 Sormenjälkitekniikka

7.4 Sormenjälkitekniikka 7.4 Sormenjälkitekniikka Tarkastellaan ensimmäisenä esimerkkinä pitkien merkkijonojen vertailua. Ongelma: Ajatellaan, että kaksi n-bittistä (n 1) tiedostoa x ja y sijaitsee eri tietokoneilla. Halutaan

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

Pikaintro käyttöjärjestelmiin

Pikaintro käyttöjärjestelmiin Tietotekniikan laitos Jyväskylän yliopisto TIES406 Tietotekniikan opintojen aktivointi, luento 17.8.2011 Outline Tietokonelaitteisto 1 Tietokonelaitteisto 2 3 4 Outline Tietokonelaitteisto 1 Tietokonelaitteisto

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

Työkalut ohjelmistokehityksen tukena

Työkalut ohjelmistokehityksen tukena 1 Työkalut ohjelmistokehityksen tukena Johdanto 2 Työkaluja eli ohjelmistotyötä tukevia ohjelmistoja käytetään ohjelmistoalan yrityksissä nykypäivänä paljon. Työkalut auttavat ohjelmistoalan ihmisiä suunnittelemaan

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

etunimi, sukunimi ja opiskelijanumero ja näillä

etunimi, sukunimi ja opiskelijanumero ja näillä Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat Järjestelmäarkkitehtuuri (TK081702) SOA yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet

Järjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet Järjestelmäarkkitehtuuri (TK081702) Integraation tavoitteita Lähtökohta Web-palvelut Asiakasrekisteri ERP, Tuotannon ohjaus Tuotanto Myynti Intranet Extranet? CRM Johdon tuki Henkilöstö Kirjanpito Palkanlaskenta

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

Robottialustan instrumentointi ja käyttöönotto

Robottialustan instrumentointi ja käyttöönotto Niilo Heinonen Hannu Häyrinen Matias Katajamäki Tuomas Pylvänen Robottialustan instrumentointi ja käyttöönotto AS-0.3200 Automaatio- ja systeemitekniikan projektityöt 1. Projektin tavoite Projektin puitteissa

Lisätiedot

CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen

CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen CUDA Moniydinohjelmointi 17.4.2012 Mikko Honkonen Yleisesti Compute Unified Device Architecture Ideana GPGPU eli grafiikkaprosessorin käyttö yleiseen laskentaan. Nvidian täysin suljetusti kehittämä. Vuoden

Lisätiedot

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Luento

Lisätiedot

CT50A2602 Käyttöjärjestelmät Seminaarityö. Tietokoneen muisti nyt ja tulevaisuudessa

CT50A2602 Käyttöjärjestelmät Seminaarityö. Tietokoneen muisti nyt ja tulevaisuudessa CT50A2602 Käyttöjärjestelmät Seminaarityö Tietokoneen muisti nyt ja tulevaisuudessa Jyrki Eurén Raimo Asikainen Janne Laitinen Teppo Lapinkoski Manu Toivanen Pasi Ruuth Johdanto Taustaa Työn taustana ryhmän

Lisätiedot

Integrointialgoritmit molekyylidynamiikassa

Integrointialgoritmit molekyylidynamiikassa Integrointialgoritmit molekyylidynamiikassa Markus Ovaska 28.11.2008 Esitelmän kulku MD-simulaatiot yleisesti Integrointialgoritmit: mitä integroidaan ja miten? Esimerkkejä eri algoritmeista Hyvän algoritmin

Lisätiedot

PILETTI. Tekninen vaatimusmäärittely. v. 0.2

PILETTI. Tekninen vaatimusmäärittely. v. 0.2 PILETTI Tekninen vaatimusmäärittely v. 0.2 2 Sisällysluettelo 1. Yleiskuvaus... 3 2. Taustajärjestelmä... 4 3. Palvelupisteiden sovellus... 4 4. Korttisovellus ja turvaratkaisu... 4 5. Rajapinnat... 5

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

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone

Lisätiedot

S11-04 Kompaktikamerat stereokamerajärjestelmässä. Projektisuunnitelma

S11-04 Kompaktikamerat stereokamerajärjestelmässä. Projektisuunnitelma AS-0.3200 Automaatio- ja systeemitekniikan projektityöt S11-04 Kompaktikamerat stereokamerajärjestelmässä Projektisuunnitelma Ari-Matti Reinsalo Anssi Niemi 28.1.2011 Projektityön tavoite Projektityössä

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

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

KÄYTTÄJÄKOKEMUKSEN PERUSTEET, TIE-04100, SYKSY 2014. Käyttäjätutkimus ja käsitteellinen suunnittelu. Järjestelmän nimi. versio 1.0

KÄYTTÄJÄKOKEMUKSEN PERUSTEET, TIE-04100, SYKSY 2014. Käyttäjätutkimus ja käsitteellinen suunnittelu. Järjestelmän nimi. versio 1.0 KÄYTTÄJÄKOKEMUKSEN PERUSTEET, TIE-04100, SYKSY 2014 Käyttäjätutkimus ja käsitteellinen suunnittelu Järjestelmän nimi versio 1.0 Jakelu: Tulostettu: 201543 Samuli Hirvonen samuli.hirvonen@student.tut.fi

Lisätiedot

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus Luento 1 (verkkoluento 1) Tietokonejärjestelmä Järjestelmän e eri tasot Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus 1 Tietokone- järjestelmäj ä Käyttäjä Tietokonelaitteisto Oheislaitteet

Lisätiedot

Internet-pohjainen ryhmätyöympäristö

Internet-pohjainen ryhmätyöympäristö Menetelmäohje Internet-pohjainen ryhmätyöympäristö Riku Hurmalainen, 24.3.2002 Sisällysluettelo 1. Johdanto...3 2. Termit...4 3. Toteutus...5 3.1. Yleiskuvaus...5 3.2. Tekninen ratkaisu...5 3.3. Tietoturva...6

Lisätiedot

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone

Lisätiedot

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone

Lisätiedot

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT KOULUTUKSEN KOHDERYHMÄ SISÄLTÖ Koulutuksen tavoitteena on antaa opiskelijalle valmiudet uusien tietoteknisten menetelmien ja välineiden hyödyntämiseen.

Lisätiedot

Tietorakenteet ja algoritmit - syksy 2015 1

Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä

Lisätiedot

Käyttöjärjestelmät. Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi

Käyttöjärjestelmät. Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Käyttöjärjestelmät Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet Kurssin sisältö Johdanto, historiaa

Lisätiedot

1. Algoritmi 1.1 Sisällys Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. Muuttujat ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

Arto Salminen,

Arto Salminen, 4. Luento: Prosessit ja säikeet Arto Salminen, arto.salminen@tut.fi Agenda Prosessi Säikeet Keskeytykset Keskeytyskäsittely Käyttöjärjestelmäkutsut Prosessielementti Prosessin hallinta Suunnittelunäkökohtia

Lisätiedot

Aineiston luovuttaminen tilaajalle KSE13 Tietomallit ja sähköinen aineisto. Matti Kiiskinen 12.2.2014/Telu-koulutus

Aineiston luovuttaminen tilaajalle KSE13 Tietomallit ja sähköinen aineisto. Matti Kiiskinen 12.2.2014/Telu-koulutus Aineiston luovuttaminen tilaajalle KSE13 Tietomallit ja sähköinen aineisto Matti Kiiskinen 12.2.2014/Telu-koulutus KSE 2013, keskeiset muutokset liittyen konsulttityön luovutukseen Asiakirjat -> Aineisto

Lisätiedot

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi 17.5.2006 1/5 Oppimistavoitteet kurssilla Rinnakkaisohjelmointi Rinnakkaisuus ja rinnakkaisuuden soveltaminen tietojenkäsittelyjärjestelmissä Kurssin Tietokoneen toiminta perusteella ymmärtää, miten ohjelman

Lisätiedot

TIETOTEKNIIKAN KOULUTUSOHJELMA

TIETOTEKNIIKAN KOULUTUSOHJELMA TIETOTEKNIIKAN KOULUTUSOHJELMA Tietotekniikan koulutusohjelman toimintaympäristö ja osaamistavoitteet Tietotekniikan koulutusohjelmasta valmistuneet insinöörit sijoittuvat suunnittelu-, ohjelmointi-, esimies-,

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

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

Virtuoosi POS-järjestelmien joukossa

Virtuoosi POS-järjestelmien joukossa Virtuoosi POS-järjestelmien joukossa Menestyvä liiketoiminta muistuttaa monin osin huippuunsa viritettyä orkesteria jossa eri osien sopusuhtainen vuorovaikutus ja integrointi luovat sykähdyttävän esityksen.

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

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro1 29.10.2013

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro1 29.10.2013 Virtualisointi Pertti Pennanen DOKUMENTTI 1 (5) SISÄLLYSLUETTELO Virtualisointi... 2 Virtualisointiohjelmia... 2 Virtualisointitapoja... 2 Verkkovirtualisointi... 2 Pertti Pennanen DOKUMENTTI 2 (5) Virtualisointi

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

Esimerkkejä vaativuusluokista

Esimerkkejä vaativuusluokista Esimerkkejä vaativuusluokista Seuraaville kalvoille on poimittu joitain esimerkkejä havainnollistamaan algoritmien aikavaativuusluokkia. Esimerkit on valittu melko mielivaltaisesti laitoksella tehtävään

Lisätiedot

ANVIA PILVI. kotimaisia pilvipalveluita yrityksille 24/7

ANVIA PILVI. kotimaisia pilvipalveluita yrityksille 24/7 ANVIA PILVI kotimaisia pilvipalveluita yrityksille 24/7 Anvia Pilvi TIESITKÖ, ETTÄ YLI PUOLET SUOMALAISYRITYKSISTÄ KÄYTTÄÄ PILVIPALVELUITA? Anvia Pilvi on suomalaisille yrityksille tarkoitettu palvelu,

Lisätiedot

Digikamera. Perustietoa digikamerasta ja kuvien siirtämisestä tietokoneelle

Digikamera. Perustietoa digikamerasta ja kuvien siirtämisestä tietokoneelle TEEMA 1 Tietokoneen peruskäyttö Digikamera Perustietoa digikamerasta ja kuvien siirtämisestä tietokoneelle Tämä tietopaketti hahmottaa lukijalle, millä tavalla kuvat voidaan siirtää kamerakännykästä tai

Lisätiedot

CHERMUG-pelien käyttö opiskelijoiden keskuudessa vaihtoehtoisen tutkimustavan oppimiseksi

CHERMUG-pelien käyttö opiskelijoiden keskuudessa vaihtoehtoisen tutkimustavan oppimiseksi Tiivistelmä CHERMUG-projekti on kansainvälinen konsortio, jossa on kumppaneita usealta eri alalta. Yksi tärkeimmistä asioista on luoda yhteinen lähtökohta, jotta voimme kommunikoida ja auttaa projektin

Lisätiedot

1 YLEISKUVAUS... 2. 1.1 Valokaistaliittymä... 2. 1.2 Palvelun rajoitukset... 2 2 PALVELUKOMPONENTIT... 3. 2.1 Päätelaite... 3. 2.2 Nopeus...

1 YLEISKUVAUS... 2. 1.1 Valokaistaliittymä... 2. 1.2 Palvelun rajoitukset... 2 2 PALVELUKOMPONENTIT... 3. 2.1 Päätelaite... 3. 2.2 Nopeus... Palvelukuvaus 1 Sisällysluettelo 1 YLEISKUVAUS... 2 1.1 Valokaistaliittymä... 2 1.2 Palvelun rajoitukset... 2 2 PALVELUKOMPONENTIT... 3 2.1 Päätelaite... 3 2.2 Nopeus... 3 2.3 IP- osoitteet... 3 3 TOIMITUS

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

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita! Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita! eli... Hyvä kaava sanoo enemmän kuin,... tuhat riviä koodia!... sata riviä tekstiä!... kymmenen diagrammia! YLEISTÄ FORMAALEISTA

Lisätiedot

kertaa samat järjestykseen lukkarissa.

kertaa samat järjestykseen lukkarissa. Opetuksen toistuva varaus ryhmällee TY10S11 - Tästä tulee pitkä esimerkki, sillä pyrin nyt melko yksityiskohtaisesti kuvaamaan sen osion mikä syntyy tiedon hakemisesta vuosisuunnittelusta, sen tiedon kirjaamiseen

Lisätiedot

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Luento 1 (verkkoluento 1) Tietokonejärjestelmä Luento 1 (verkkoluento 1) Tietokonejärjestelmä Järjestelmän eri tasot Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä This image cannot currently be displayed.

Lisätiedot

Suunnitteluautomaatio

Suunnitteluautomaatio 1 Suunnitteluautomaatio Prof. Jarmo Takala Tampereen teknillinen yliopisto Digitaali- ja tietokonetekniikan laitos 2 IC-teknologian tarjoamat mahdollisuudet IC-teknologian kehittyminen on mahdollistanut

Lisätiedot

5. Rinnakkaisuus ja jako prosesseihin

5. Rinnakkaisuus ja jako prosesseihin Rinnakkaisuus ja jako prosesseihin 89 5. Rinnakkaisuus ja jako prosesseihin Tietokoneen oheislaitteet toimivat toisistaan riippumatta. Ne edustavat todellista rinnakkaisuutta, sillä niiden toimintojen

Lisätiedot