Suunnittelumallit. OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Oliosuuntautunut analyysi ja -suunnittelu 27. joulukuuta 2003

Koko: px
Aloita esitys sivulta:

Download "Suunnittelumallit. OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Oliosuuntautunut analyysi ja -suunnittelu 27. joulukuuta 2003"

Transkriptio

1 Suunnittelumallit OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Oliosuuntautunut analyysi ja -suunnittelu 27. joulukuuta 2003 Mikael Kujanpää LuTK / TOL -03

2 Tiivistelmä Suunnittelumallit ovat tärkeä työkalu nykypäivän oliopohjaisessa ohjelmistotuotannossa. Mallit tarjoavat tiettyihin ongelmiin valmiit, ajankuluessa hyviksi todetut ratkaisut. Mallien avulla jokaisen ongelman kohdalla suunnittelijoiden ei tarvitse keksiä pyörää uudelleen. Suunnittelumallien avulla voidaan parantaa ohjelmiston ylläpidettävyyttä, kustannustehokkuutta ja vähentää loogisten ohjelmointivirheiden määrää. Toisaalta ohjelmistomalleja oikeaoppisesti sovellettuna saavutetaan ylläpidettävämpi ja rakenteellisesti looginen, hyvin toimiva ohjelmisto. Antisuunnittelumallit ovat malleja, joiden avulla voidaan etsiä huonoja, epätoivottavia ohjelmistosuunnitteluratkaisuja. Olio-ohjelmoinnin kultakausi alkoi 1980-luvulta, alettaessa esittää graafisten käyttöliittymien osia olioiden avulla. Vaikka oliot ovatkin varsin luonnollinen tapa mallintaa ohjelmistoja ja niiden komponentteja, on niidenkin hyödyntämisessä omat ongelmansa. Näihin ongelmiin suunnittelumallit ovat syntyneet vastaukseksi. Suunnittelumallit voidaan nähdä myös hieman toisenlaisessa merkityksessä: ne ovat kokeneiden ohjelmistosuunnittelijoiden ja -ohjelmoijien laatimia dokumentteja, jotka sinällään sisältävät arvokasta informaatiota erilaisten ongelmien ratkaisemiseksi.

3 Sisältö Tiivistelmä Sisältö 1 Johdanto 2 2 Aiheen kartoitus Suunnittelumallien historiaa Mitä ovat suunnittelumallit? Antisuunnittelumallit Suunnittelumallien luokittelu Esimerkki: abstrakti tehdas Analyysi Minkä verran eri suunnittelumalleja käytetään ja miltä tulevaisuus näyttää? Suunnittelumallien hyviä ja huonoja puolia Yhteenveto 10 Viitteet

4 1 Johdanto Tarkastelen tässä esseessäni suunnittelumalleja. Mitä ne ovat, miksi niitä on ja miten niitä käytetään. Teksti on kuitenkin vain pintapuolinen näkemys aihepiiristä, ei mikään kaiken kattava selvitys. En esittele käytännössä kuin yhden suunnittelumallin, abstraktin tehtaan. Tämän esseen tarkoitus ei ole olla opas eri suunnittelumalleista, eikä esseen pituudeksi asetettu raja antaisi sille myötenkään. Yritän siis keskittyä tekstissäni enemmän suunnittelumalleihin yleensä, enkä kasvattaa sivumäärää mekaanisella, eri mallien esittelyllä. Tämän jälkeen analysoin yleisellä tasolla suunnittelumallien tarkoitusta, sekä hyötyjä ja haittoja. Tarkastelen aihetta etenkin suunnittelijan näkökulmasta. Toisaalta mallit ovat nimenomaan tarkoitettukin suunnittelijoille, joten loppukäyttäjälle näkyviä ominaisuuksia saavutetaan suunnittelumallien avulla varsin vähän jollei sellaiseksi lasketa ohjelmiston mahdollista yleistä laadukkuutta. Suunnittelumallit ovat varsin paljon käytetty menetelmä tietynlaisten ongelmien ratkaisemiseksi. Pohjimmiltaan suunnittelumallit ovat ainoastaan kokoelma hyviksi havaittuja sääntöjä ja menetelmiä. Suunnittelumallit eivät ole valmista koodia. 2

5 2 Aiheen kartoitus Käsittelen tässä luvussa suunnittelumallien historiaa, millaisia ne ovat ja miten niitä käytetään. Esimerkinomaisesti esittelen yhden suunnittelumallin yksityiskohtaisesti, abstraktin tehtaan. 2.1 Suunnittelumallien historiaa Suunnittelumallien idea tulee ehkä hiukan yllättäen perinteisestä arkkitehtien maailmasta. Arkkitehti Christopher Alexander suunnitteli järjestelmän, jolle monet nykyajan oliosuunnittelumallit perustuvat. Hän ja hänen kollegansa kehittelivät kahdenkymmenen vuoden ajan suunnittelumalleja arkkitehtuuriin Berkleyssä, Kaliforniassa. Ward Cunningham ja Kent Beck lukivat Alexanderin kirjoittamia kirjoja, ja innostuivat kokeilemaan ideoita myös ohjelmistokehityksessä. He kehittivät ja toteuttivat smalltalk -kieleen viisi suunnittelimallia, jotka käsittelivät graafisen käyttöliittymän suunnittelua: Window per Task, Few Panels, Standard Panels, Nouns and Verbs ja Short menus. [5] Erich Gamma kirjoitti väitöskirjan 1991 suunnittelumallien käytöstä ohjelmistokehityksessä. Valitettavasti kirja kirjoitettiin saksaksi, joten se ei saanut ansaitsemaansa arvostusta keski-euroopan ulkopuolella. Gamma oli kuitenkin neljä vuotta myöhemmin mukana kirjoittamassa yhdessä Richard Helmin, Ralph Johnssonin ja John Vlissidesin kanssa yhtä tunnetuimmista suunnittelumalleja käsittelevistä kirjoista: Design Patterns Elements of Reusable Object-Oriented Software [1]. Kyseisen kirjan jälkeen on kirjoitettu monia muita vastaavanlaisia teoksia, mutta useimmat niistä pohjaavat ajatuksensa enemmän tai vähemmän suoraan Gamman kirjaan. 2.2 Mitä ovat suunnittelumallit? Suunnittelumallit ovat kokoelma erilaisia menetelmiä tietyntyyppisten ongelmien ratkaisemiseksi. Mallit eivät ole valmista koodia, vaan ne ovat ainoastaan ratkaisukuvauksia. Näin ollen niitä voidaan ja niitä tuleekin hyödyntää suunnitteluvaiheessa ainoastaan. Mallit ovat syntyneet ajan saatossa tavallaan itsestään, mutta niistä on laadittu yleiset säännönalaisuudet jottei jokaisen ohjelmiston kohdalla tarvitsisi aina keksiä pyörää uudelleen. [4] Suunnittelumallien avulla ei synny laadukasta ohjelmistoa itsestään. Malleja voidaan soveltaa vain tietyissä, tarkasti rajatuissa tapauksissa. Silloinkin toteutus loppuviimein ratkaisee, miten ohjelmisto toimii suunnittelumalli ei siis automaattisesti luo laadukasta ohjelmistoa. Ei ole myöskään epätavallista, että johonkin ongelmaan ei löydy ollenkaan valmista suunnittelumallia. 3

6 Mirja Immonen on määritellyt suunnitellumallin näin: [3] Suunnittelumalli nimeää, tarjoaa taustatietoa ja selittää käytännössä hyväksi todetun tavan ratkaista jokin järjestelmissä usein esiintyvä arkkitehtuuri- tai suunnitteluongelma. Ratkaisu on yleinen kokoelma olioita ja luokkia, joita sovelletaan ja muokataan ratkaisemaan ongelma erilaisissa käytännön tilanteissa. Raine Lehto [5] on poiminut Desing Patterns -kirjasta [1] seuraavat neljä suunnittelumalliin kuuluvaa osaa. Osat ovat periaatteessa toisenlainen määritelmä suunnittelumallille, joskin näiden ohjeiden perusteella voi paremminkin tutkia voidaanko jotain sääntökokoelmaa kutsua suunnittelumalliksi. 1. Mallin nimi kuvaa kuvaa muutamalla sanalla ongelmaa, ratkaisua ja seurauksia. Hyvin valittu nimi helpottaa mallin hyödyntämistä jatkossa. 2. Ongelma. Kappaleessa kuvaillaan kohteena oleva ongelma, sen tyypillisiä ilmenemisalueita sekä sen perinteisiä ratkaisutapoja. Joskus ongelma voi sisältää listan ehtoja, joiden tulee täyttyä ennenkuin on järkevää käyttää mallia. 3. Ratkaisu. Kappale kuvailee ratkaisun rakenteen jollakin yleisellä esitystavalla, yleensä olioperustaisin menetelmin sanallisesti tarkennettuina UMLkaavioina. 4. Seuraukset. Kappaleessa analysoidaan mallin hyviä ja huonoja puolia, sekä esitellään tilanteita, joihin malli ei sovellu. Lasse Harjumaa on listannut seuraavat asiat huomioon otettavaksi, ennenkuin suunnittelumallia tulisi alkaa hyväksikäyttämään: [2] 1. Varmista, että malli on oikea kyseiseen tarkoitukseen. 2. Varmista, että ymmärrät mallin. 3. Hyödynnä esimerkkikoodia. 4. Määrittele vaikutuksen alaiset luokat. 5. Toteuta. Nämä ohjeet ovat eräänlainen muistilista suunnittelijalle, jotta hän varmasti on hyödyntämässä ongelmaansa siihen tarkoitettua suunnittelumallia. 4

7 2.2.1 Antisuunnittelumallit Mielenkiintoinen lähestymistapa suunnittelumalleihin ovat niin sanotut antisuunnittelumallit. Mallien ideana on esittää erilaisia ei-toivottuja malleja. Vaikka ajatus kuulostaakin äkkiseltään typerältä, on näistä malleista käytännössä paljonkin hyötyä koska niiden avulla voidaan löytää huonoja ratkaisumalleja ohjelmistoista. Mallit ovat luenteeltaan varsin yleismaailmallisia, etenkin perinteisiin suunnittelumalleihin verrattuna. Esimerkki antisuunnittelumallista voisi olla vaikkapa sovelluksen yleinen liian kookkaaksi kasvanut ohjausluokka, joka sisältää suuren määrän toisiinsa liittymättömiä attribuutteja ja operaatioita. [4] 2.3 Suunnittelumallien luokittelu Tämän kappaleen ajatukset ovat lainattu lähes suoraan Mirja Immosen [3] tekemästä erikoistyöstä. Suunnittelumallit luokitellaan tavallisesti kahteen luokkaan: 1. Mitä suunnittelumalli tekee, eli käyttötarkoitus. 2. Onko suunnittelumalli tarkoitettu käytettäväksi luokkien vai olioiden kanssa? Käyttötarkoituksen mukaan suunnittelumallit voidaan luokitella kolmeen luokkaan: 1. Toiminnalliset- tai käyttäytymismallit 2. Luontimallit 3. Rakennemallit Ensimmäiseen ryhmään luetaan luokkamallit, jotka käyttävät perintää jakamaan eri toiminnot eri luokkiin. Samaan kategoriaan kuuluvat myös olioiden yhdistämiseen tähtäävät oliomallit. Toiseen ryhmään luetaan muun muassa mallit, jotka auttavat ratkaisemaan miten luodaan olioita ympäristössä, jossa liittymänä on joukko tapauskohtaisia abstrakteja luokkia tai kuinka varmistetaan, että luokalla on vain yksi ilmentymä joka on kaikkien muiden luokkien saatavilla. Kolmanteen ryhmään katsotaan kuuluvaksi mallit, jotka kuvaavat olioiden välisiä suhteita, ja kuinka olioita yhdistelemällä saadaan uusia toimintoja. Ratkaisumallit auttavat suurten järjestelmien yhteydessä muistinkäytön optimointiin ja tehokkuuden maksimointiin. 5

8 2.4 Esimerkki: abstrakti tehdas Esittelen tässä esimerkkinä erään yleisesti käytössä olevan suunnittelumallin. Lähteenä olen käyttänyt tässä kappaleessa erittäin laajasti Kai Koskimiehen Oliokirjaa [4]. Tarkoitus: Mallin avulla voidaan luoda oliokokoelmia, vaikka ei tunnettaisi näiden olioiden konkreettisia perusluokkia. Motivointi: Oletetaan, että täytyy mallintaa ajoneuvovuokraamo. Kyseisestä liike myös tarvittaessa myy ajokkeja. Abstraktin tehtaan avulla voidaan suunnitella luokkarakenne, jossa on yleinen Ajoneuvo-luokka. Kyseinen luokka on abstrakti luokka, jossa on määritelty ainoastaan rajapinta jonka Ajoneuvoluokan perivät oliot toteuttavat. Rajapinta voisi määritellä esimerkiksi metodit Ajoneuvo.vuokraa(), Ajoneuvo.myy() ja niin edelleen. Tällöin yksittäinen olio voi olla mikä tahansa olio joka on luotu Vene, Polkupyörä, Henkilöauto tai muusta vastaavasta luokasta, ja silti sitä voidaan käsitellä yleisen Ajoneuvo-rajapinnan kautta. Soveltuvuus: Mallia voidaan käyttää silloin, kun: järjestelmän tulisi olla riippumaton siitä, miten sen tuotteita luodaan, kootaan ja esitetään järjestelmän tulisi olla konfiguroitavissa tietylle tuoteperheelle järjestelmän tulisi taata, että tietyn tuoteperheen jäseniä käytetään yhdessä halutaan esittää erilaiset järjestelmän tuotteet luokkakirjastona, ja halutaan paljastaa vain niiden abstraktit rajapinnat, ei toteutustapaa Rakenne: Abstraktin tehtaan rakenne on esitettynä kuvassa 1 Osallistujat: AbstractFactory: määrittelee konkreettisten tuoteolioiden luontioperaatioiden kutsumuodon ConcreteFactory: toteuttaa konkreettisten tuoteolioiden luontioperaatiot AbstractProduct: määrittelee tietyntyyppisen tuoteolion operaatioiden kutsumuodon ConcreteProduct: määrittelee tuoteolion ja toteuttaa AbstractProductluokassa annetut operaatiot Client: käyttää AbstractFactory- ja AbstractProduct-luokkien määrittelemää rajapintaa 6

9 Seuraukset: Mallin avulla voidaan eristää olioiden konkreettiset luokat asiakkaasta Mallin avulla konkreettiset luokat voidaan vaihtaa helposti toisiksi Malli edistää luokkien standardointia yhteisen rajapinnan mukaisiksi Malli ei tue uusien tuotteiden lisäämistä Kuva 1: Abstraktin tehtaan rakenne 3 Analyysi Tässä luvussa analysoin hiukan suunnittelumallien etuja ja haittoja. Pohdin myös lyhyesti suunnittelumallien tulevaisuutta. 3.1 Minkä verran eri suunnittelumalleja käytetään ja miltä tulevaisuus näyttää? Olio-ohjelmoinnin yleistyttyä 1980-luvulla lähinnä graafisten käyttöliittymien myötä myös suunnittelumalleille syntyi luontainen tarve. Graafisissa käyttöliittymissä kuvataan erilaisia käyttöliittymän osia esimerkiksi painonappeja, tekstikenttiä, listoja ynnä muita olioiden avulla. Koska GUI 1 :t ovat loppujen lopuksi varsin samanlaisia ympäristöstä riippumatta, syntyivät suunnittelumallien kaltaiset yleisohjeet varsin luontevasti. Graafiset käyttöliittymät olivat siis yksi tekijä jotka edesauttoivat suunnittelumallien syntymistä. Tältä pohjalta ei liene kovinkaan erikoista, että myös nykyään suunnittelumalleja hyödynnetään paljon etenkin käyttöliittymien yhteydessä. 1 Graphical User Interface 7

10 Koska suunnittelumallit ovat kieli- ja toteutusriippumattomia, kykenevät ne myös elämään ajan mukana vaikka erilaisia ohjelmointikieliä syntyykin. Tosin mallit ovat käytännössä myös nivoutuneet tiiviisti olio-ohjelmointiin, joten mikäli olioiden tilalle kehittyy jotain uutta ja mullistavaa, voi hyvinkin käydä niin että suunnittelumallit katoavat tosin huomattavasti todennäköisempää on, että oliomaiset suunnittelumallit jäävät käytöstä pois, ja niiden tilalle syntyy joitain uusia kyseistä tekniikkaa hyödyntäviä malleja. Olio-ohjelmointikielet, kuten C++ ja Java, ovat kuitenkin tällä hetkellä niin vahvasti käytössä, että suunnittelumalleille näyttää olevan vain entistä enemmän tilausta. Niiden merkitys tulee myös epäilemättä korostumaan tulevaisuudessa. Javan luokkakirjastossa on myös lukemattomia Design Patterns -kirjan malleja hyödyntäviä luokkakirjastoja [5]. Suunnittelumalleja voi kehittää kuka tahansa, jopa tyhjästä. Käytännössä vain tämä on erittäin vaikeata, koska mallit ovat yleensä itsestään syntyneet monien toisistaan riippumattomien ongelmien ratkaisujen yhteisenä kuvauksena. Oman mallin kehittäminen olisi siis huomattavasti helpompaa tutkimalla tietyntyyppisten ongelmien ratkaisuja eri ohjelmistoista, ja laatimalla näistä mahdollisimman yleiskäyttöisen kuvauksen. 3.2 Suunnittelumallien hyviä ja huonoja puolia Suunnittelumalleilla saavutetaan merkittäviä säästöjä resursseissa. Samaa ongelmaa ei tarvitse ratkaista joka kerta uudelleen, vaan voidaan tyytyä yleiskäyttöisiin, hyviksi havaittuihin menetelmiin. Tämä nopeuttaa ohjelmistokehitystä, ja useimmiten myöskin mahdollistaa laadukkaampien ja ylläpidettävimpien ohjelmistojen tuottamisen. Lisäksi suunnittelumallien avulla voidaan välttää joitakin ohjelmointivirheitä. Suunnittelumallien avulla myös komponenttien uudelleenkäytettävyys helpottuu. Vaikka olio-ohjelmointi paradigmana ylipäätään tukee komponenttien uudelleenkäytettävyyttä, on kokemattoman suunnittelijan vaikea suunnitella ohjelmistoa joka mukautuu helposti erilaisiin käyttötilanteisiin. Tässä suunnittelumallit voivat olla suurena apuna, koska niiden avulla ohjelmiston yleisestä mallista saattaa syntyä hyvinkin yleiskäyttöinen ja kohtuullisen vähällä vaivalla hyödynnettävissä oleva kokonaisuus. Suunnittelumallien eräänlaisena haittana voidaan pitää sitä, että mikäli niitä ei ole ennen hyödynnetty, täytyy henkilöstön opetella niiden käyttö. Tämä voi olla aikaavievää, ja vaatii koulutusta tai itseopiskelua. Suunnittelumalleja voi myös tahattomasti väärinkäyttää, esimerkiksi valitsemalla väärän mallin. Pienessä projektissa tätä ei välttämättä edes huomaa eikä se ehkä haittaakaan, mutta suuressa projektissa virhe voidaan havaita vasta myöhään, jolloin viikkojen työ voi mennä hukkaan 8

11 tai joudutaan tehdä purkkaliimakorjaus, joka todennäköisesti on tie vielä pahempiin vaikeuksiin. On siis erittäin tärkeätä käyttää riittävästi aikaa oikean mallin etsimiseen. Suunnittelumallit eivät myöskään ratkaise jokaista vastaan tulevaa ohjelmistosuunnitteluongelmaa; siksi kaikkeen ei kannata yrittää edes etsiä ratkaisua suunnittelumalleista. Tosin antisuunnittelumalleista voi olla näissäkin tapauksissa hyötyä. Toisenlainen ongelma suunnittelumalleista voi syntyä silloin, jos niiden käyttö muodostuu itsetarkoitukseksi. Kokematon suunnittelija saattaa erehtyä luulemaan, että ohjelmistosta syntyy sitä parempi mitä useampaa suunnittelumallia on hyödynnetty. Näinhän ei missään nimessä ole, vaan jokaista mallia tulisi käyttää ainoastaan silloin kun projekti sitä edellyttää. Mallit ovat ohjelmistoja varten, ei toisinpäin. 9

12 4 Yhteenveto Suunnittelumallien avulla voidaan ratkoa monia ohjelmistosuunnitteluun liittyviä ongelmia. Nykyään erilaisia malleja on olemassa hyvin paljon, joten jotakuinkin kaikkiin yleisiin ongelmiin löytynee jo valmis ratkaisumalli. Mallien huolellinen käyttö auttaa luomaan laadukkaamman ohjelmiston nopeammin. Mallia tarkasti seuraamalla myös joitakin rakenteellisia ongelmia on mahdollista välttää. Toisaalta suunnittelumallien käyttöä täytyy opiskella, ja niitä voi myös etenkin kokematon suunnittelija käyttää vahingossa myös väärin. Suunnittelumallit ovat tarkoitettu kuitenkin etupäässä kokemattomille suunnittelijoille ja ohjelmoijille. Suunnittelumallit ovat tiettyjen ongelmien hyviksi havaittuja ratkaisumenetelmiä, joista on koottu ajan saatossa yleiset ratkaisuohjeet, suunnittelumallit. 10

13 Viitteet [1] E. Gamma. Desing Patterns Elements of Reusable Object-Oriented Software. Addison-Wesley, [2] Lasse Harjumaa. Luentomateriaali: olio-ohjelmointi. Oulun yliopisto, [3] Mirja Immonen. Erikoistyö: suunnittelumallit. Kuopion yliopisto, tietojenkäsittelytieteen ja sovelletun matematiikan laitos, Teho/Suunnittelumallit.pdf, [4] Kai Koskimies. Oliokirja. Satku - Kauppakaari, Gummerus kirjapaino, Jyväskylä, [5] Reijo Lehto. Seminaariesitelmän alustus: olioarkkitehtuurit. Helsingin yliopisto, tietojenkäsittelytieteen laitos, rmelehto/olioarkkiteh tuurit/esitelma.html,

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

Ohjelmistoarkkitehtuurit. Syksy 2008

Ohjelmistoarkkitehtuurit. Syksy 2008 Ohjelmistoarkkitehtuurit Syksy 2008 Kai Koskimies 1 Tervetuloa Kuopion yliopisto, Oulun yliopisto, Tampereen yliopisto, Teknillinen korkeakoulu, Turun yliopisto, Vaasan yliopisto, Tampereen teknillinen

Lisätiedot

http://www.enteract.com/~bradapp/docs/patterns-intro.html http://www.hillside.net/patterns/

http://www.enteract.com/~bradapp/docs/patterns-intro.html http://www.hillside.net/patterns/ 5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Esimerkki: Rekursiokooste Antisuunnittelumallit Suunnittelumallit ja UML Mallikielet Suunnittelumallit

Lisätiedot

1. Olio-ohjelmointi 1.1

1. Olio-ohjelmointi 1.1 1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja

Lisätiedot

2. Olio-ohjelmoinista lyhyesti 2.1

2. Olio-ohjelmoinista lyhyesti 2.1 2. Olio-ohjelmoinista lyhyesti 2.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 2.2 Yleistä Olio-ohjelmointia käsitellään hyvin

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

Olio-ohjelmointi Johdanto olio-ohjelmointiin

Olio-ohjelmointi Johdanto olio-ohjelmointiin Olio-ohjelmointi Johdanto olio-ohjelmointiin Ohjelmistoa kehitettäessä voidaan tunnistaa ainakin kaksi abstraktiota: prosessiabstraktio ja dataabstraktio. Prosessiabstraktio huomattiin jo varhain, koska

Lisätiedot

Ohjelmistoarkkitehtuurit. Syksy 2007

Ohjelmistoarkkitehtuurit. Syksy 2007 Ohjelmistoarkkitehtuurit Syksy 2007 Kai Koskimies 1 Tervetuloa Tampereen yliopisto, Teknillinen korkeakoulu, Turun yliopisto 2 Kurssin tavoitteet Arkkitehtuuritason peruskäsitteiden ymmärtäminen Arkkitehtuurien

Lisätiedot

Software product lines

Software product lines Thomas Gustafsson, Henrik Heikkilä Software product lines Metropolia Ammattikorkeakoulu Insinööri (AMK) Tietotekniikan koulutusohjelma Asiantuntijateksti 17.11.2013 Sisällys 1 Johdanto 1 2 Software product

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

Suunnittelumallien käyttö ohjelmistosuunnittelussa

Suunnittelumallien käyttö ohjelmistosuunnittelussa Suunnittelumallien käyttö ohjelmistosuunnittelussa Mika Rantakeisu Rovaniemen ammattikorkeakoulu Avoin ammattikorkeakoulu mika.rantakeisu@edu.ramk.fi Tiivistelmä Tämä on selvitys suunnittelumallien käytöstä

Lisätiedot

Hirviö. Design Patterns

Hirviö. Design Patterns Hirviö SEPA-päiväkirja Design Patterns Anssi Kalliolahti Liia Sarjakoski 15. maaliskuuta 2005 1 Sisältö 1 Johdanto 3 2 Menetelmän käytäntöön soveltaminen 3 3 Kokemuksia ja muutoksia 3 3.1 PP..........................................

Lisätiedot

Kertaus: yleistys-erikoistus ja perintä

Kertaus: yleistys-erikoistus ja perintä Kertaus: yleistys-erikoistus ja perintä Nauta, Lehmä ja Kuttu ovat Kotieläimiä, Kotieläimet Eläimiä Kotieläimillä (siis myös Naudoilla, Lehmillä ja Kutuilla) on Omistaja Kuttu ja Lehmä toteuttavat rajapinnan

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Yleistä asiaa Muistakaa harkkatyöilmoittautuminen 23 ryhmää (mm. lihansyöjäkirahvi), vajaita ryhmiäkin on 44 henkeä vielä

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Opintojakso TT00AA11 Ohjelmoinnin jatko (Java) Tavoite Opiskelija ymmärtää olio-ohjelmoinnin problematiikan. Opiskelija osaa määritellä ja käyttää itse

Lisätiedot

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä

Lisätiedot

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Tekninen määrittely: Editori Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Sisällysluettelo 1. Johdanto...4 1.1. Tarkoitus ja kattavuus...4 1.2. Tuote ja ympäristö...4 1.3. Määritelmät,

Lisätiedot

Harjoitustehtävät ja ratkaisut viikolle 48

Harjoitustehtävät ja ratkaisut viikolle 48 Harjoitustehtävät ja ratkaisut viikolle 48 1. Tehtävä on jatkoa aiemmalle tehtävälle viikolta 42, missä piti suunnitella älykodin arkkitehtuuri käyttäen vain ennalta annettua joukkoa ratkaisuja. Tämäkin

Lisätiedot

Olio-ohjelmointi Suunnittelumallit Adapter ja Composite. 1. Adapter

Olio-ohjelmointi Suunnittelumallit Adapter ja Composite. 1. Adapter Olio-ohjelmointi Suunnittelumallit Adapter ja Composite Rakennemalleissa päähuomio kohdistetaan siihen, miten luokkia ja olioita yhdistellään muodostamaan laajempia rakenteita. Rakenteelliset luokkamallit

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

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

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Seuraavaksi tarjolla: Otekn-asiaa vähän pintaa syvemmältä Virtuaalifunktiot ja erikoistaminen, olioiden kopiointi ja elinaika

Lisätiedot

3. Ryhdy kirjoittamaan ja anna kaiken tulla paperille. Vääriä vastauksia ei ole.

3. Ryhdy kirjoittamaan ja anna kaiken tulla paperille. Vääriä vastauksia ei ole. 1 Unelma-asiakas Ohjeet tehtävän tekemiseen 1. Ota ja varaa itsellesi omaa aikaa. Mene esimerkiksi kahvilaan yksin istumaan, ota mukaasi nämä tehtävät, muistivihko ja kynä tai kannettava tietokone. Varaa

Lisätiedot

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

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

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin Olio-ohjelmointi: Luokkien toteuttaminen Jukka Juslin Luokkien kirjoittaminen Tähän mennessä on käytetty valmiiksi määritettyjä luokkia. Nyt opimme kirjoittamaan omia luokkia olioiden kuvaamiseksi Seuraavaksi

Lisätiedot

Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1 Oliot ja luokat Javaohjelmoinnissa Vesa Laakso 22.9.2012 Sisällysluettelo Sisällysluettelo... 1 Johdanto... 2 1. Luokka... 2 2. Olio... 2 3. Luokan

Lisätiedot

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

Lisätiedot

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

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

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

Lisätiedot

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

UML- mallinnus: Tilakaavio

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

Lisätiedot

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia. 4. Periytyminen 4.1. Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi

Lisätiedot

19/20: Ikkuna olio-ohjelmoinnin maailmaan

19/20: Ikkuna olio-ohjelmoinnin maailmaan Ohjelmointi 1 / syksy 2007 19/20: Ikkuna olio-ohjelmoinnin maailmaan Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

Lisätiedot

JavaBeans Components

JavaBeans Components JavaBeans Components OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Software Architectures 6. helmikuuta 2004 Mikael Kujanpää mahead@ee.oulu.fi LuTK / TOL -03 Tiivistelmä Ohjelmistokomponentit ovat

Lisätiedot

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari Alkuraportti Avoimen lähdekoodin käyttö WWW-sovelluspalvelujen toteutuksessa Lappeenranta, 30.3.2008,

Lisätiedot

Tietokoneohjelmien käyttö laadullisen aineiston analyysin apuna

Tietokoneohjelmien käyttö laadullisen aineiston analyysin apuna Tietokoneohjelmien käyttö laadullisen aineiston analyysin apuna Laadullinen, verbaalinen, tulkinnallinen aineisto kootaan esimerkiksi haastattelemalla, videoimalla, ääneenpuhumalla nauhalle, yms. keinoin.

Lisätiedot

1 Tehtävän kuvaus ja analysointi

1 Tehtävän kuvaus ja analysointi Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja

Lisätiedot

Muutamia peruskäsitteitä

Muutamia peruskäsitteitä Muutamia peruskäsitteitä Huom. 1: nämä peruskäsitteet eivät muodosta hyvin määriteltyä keskenään yhteensopivien käsitteiden joukkoa, vaan käsitteet ovat osittain päällekkäisiä ja eri yhteyksissä niillä

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

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita.

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita. Moniperintä 2 Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita. Oliomallinnus TITE.2040 Hannu K. Niinimäki 1 Delegointi 1 Moniperinnän toteuttaminen

Lisätiedot

11.4. Context-free kielet 1 / 17

11.4. Context-free kielet 1 / 17 11.4. Context-free kielet 1 / 17 Määritelmä Tyypin 2 kielioppi (lauseyhteysvapaa, context free): jos jokainenp :n sääntö on muotoa A w, missäa V \V T jaw V. Context-free kielet ja kieliopit ovat tärkeitä

Lisätiedot

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet Kevät 2015. Olio-ohjelmoinnin perusteet (5 op) Tavoitteena

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet Kevät 2015. Olio-ohjelmoinnin perusteet (5 op) Tavoitteena Kurssiesite Olio-ohjelmoinnin perusteet Kevät 2015 Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto Vastuuopettaja Jorma Laurikkala, yliopistonlehtori. Luennot,

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

7 Uusia tarjouskilpailuja koskevien ilmoitusten tilaaminen

7 Uusia tarjouskilpailuja koskevien ilmoitusten tilaaminen 7 Uusia tarjouskilpailuja koskevien ilmoitusten tilaaminen Käyttäjä voi tilata sähköposti-ilmoituksen kaikista uusista tarjouskilpailuista valitsemallaan alalla CPV-luokituksen pohjalta. Euroopan komissio

Lisätiedot

Opas koulujen VALO-hankintaan. Elias Aarnio Avoimet verkostot oppimiseen -hanke Educoss Innopark Oy

Opas koulujen VALO-hankintaan. Elias Aarnio Avoimet verkostot oppimiseen -hanke Educoss Innopark Oy Opas koulujen VALO-hankintaan Elias Aarnio Avoimet verkostot oppimiseen -hanke Educoss Innopark Oy Mikä ihmeen VALO? VALO = vapaat ja avoimen lähdekoodin ohjelmistot Kyse on siis Open Sourcesta eli vapaista

Lisätiedot

Graafinen käyttöliittymä, osa 1

Graafinen käyttöliittymä, osa 1 Graafinen käyttöliittymä, osa 1 Idea, MVC-malli ja ensimmäinen ohjelma Graafinen käyttöliittymä Ensimmäisen kerran tavoitteena on oppia graafisen ohjelman perusidea sekä oppia laatimaan esimerkin mukaan

Lisätiedot

ELMAS 4 Laitteiden kriittisyysluokittelu 8.2.2012 1/10. Ramentor Oy ELMAS 4. Laitteiden kriittisyysluokittelu. Versio 1.0

ELMAS 4 Laitteiden kriittisyysluokittelu 8.2.2012 1/10. Ramentor Oy ELMAS 4. Laitteiden kriittisyysluokittelu. Versio 1.0 1/10 Ramentor Oy ELMAS 4 Laitteiden kriittisyysluokittelu Versio 1.0 2/10 SISÄLTÖ 1 Kuvaus... 3 2 Kriittisyysluokittelu ELMAS-ohjelmistolla... 4 2.1 Kohteen mallinnus... 4 2.2 Kriittisyystekijöiden painoarvojen

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

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

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

Lisätiedot

TYÖHYVINVOINNIN JA TUOTANTOTYÖN KEHITTÄMISEN FOORUMI -HANKE

TYÖHYVINVOINNIN JA TUOTANTOTYÖN KEHITTÄMISEN FOORUMI -HANKE TYÖHYVINVOINNIN JA TUOTANTOTYÖN KEHITTÄMISEN FOORUMI -HANKE Loppuraportti 10.6.2014 Tommi Autio ja Janne Sinisammal 1. Hankkeen tavoitteet Työhyvinvoinnin ja tuotantotyön kehittämisen foorumi -hankkeen

Lisätiedot

Teollisuusautomaation standardit Osio 9

Teollisuusautomaation standardit Osio 9 Teollisuusautomaation standardit Osio 9 Osio 1: SESKOn Komitea SK 65: Teollisuusprosessien ohjaus Osio 2: Toiminnallinen turvallisuus: periaatteet Osio 3: Toiminnallinen turvallisuus: standardisarja IEC

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

Tietokantojen suunnittelu, relaatiokantojen perusteita

Tietokantojen suunnittelu, relaatiokantojen perusteita Tietokantojen suunnittelu, relaatiokantojen perusteita A277, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

SUDOKU - ratkaisuohjeet. Jarno Tuimala 18.9.2005

SUDOKU - ratkaisuohjeet. Jarno Tuimala 18.9.2005 SUDOKU - ratkaisuohjeet Jarno Tuimala 18.9.2005 Japanilainen sudoku Seuraavassa on esitetty ohjeet japanilaistyyppisten sudoku-ristikoiden ratkontaan. Japanilaisia ristikoita luonnehtivat seuraavat piirteet:

Lisätiedot

Johdatus rakenteisiin dokumentteihin

Johdatus rakenteisiin dokumentteihin -RKGDWXVUDNHQWHLVLLQGRNXPHQWWHLKLQ 5DNHQWHLQHQGRNXPHQWWL= rakenteellinen dokumentti dokumentti, jossa erotetaan toisistaan dokumentin 1)VLVlOW, 2) UDNHQQHja 3) XONRDVX(tai esitystapa) jotakin systemaattista

Lisätiedot

Palvelupyyntöjärjestelmä. Asiakkaan ohje

Palvelupyyntöjärjestelmä. Asiakkaan ohje Palvelupyyntöjärjestelmä Asiakkaan ohje Festum Software Oy Palvelupyyntöjärjestelmä asiakkaan ohje 2 ( 8 ) Sisällysluettelo 1. Palvelupyyntöjärjestelmä osana asiakastukea... 3 2. Käytön aloittaminen...

Lisätiedot

FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen

FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen FiSMA 1.1 Monikerrosarkkitehtuuri 1 (6) FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen 1. Yleiset periaatteet FiSMA 1.1 -menetelmässä mitataan sovellusperiaatteen

Lisätiedot

KUINKA KIRJOITAT E-KIRJAN päivässä

KUINKA KIRJOITAT E-KIRJAN päivässä KUINKA KIRJOITAT E-KIRJAN päivässä Valmentaja-Akatemia opettaa sinulle kuinka valmentajana pystyt kasvattamaan bisnestäsi, auttamaan useampia ihmisiä ja ansaitsemaan enemmän. www.valmentaja- akatemia.fi

Lisätiedot

Luku 8 Rakennusvaihe. Detailed Design. Programming. Moduulisuunnittelu. Ohjelmointi

Luku 8 Rakennusvaihe. Detailed Design. Programming. Moduulisuunnittelu. Ohjelmointi Luku 8 Rakennusvaihe Moduulisuunnittelu Detailed Design Programming Ohjelmointi Teknisen Complete suunnittelun Technical viimeistely Design Suunnittelukatselmuksen Design Perform suorittaminen Review Yhteisen

Lisätiedot

UML Luokkakaavio 14:41

UML Luokkakaavio 14:41 UML Luokkakaavio UML Olio-ohjelman luokkien pääpiirteet voidaan kätevähkösti esittää ns. UML-luokkakaaviona. Näin usein tehdäänkin esim. suunniteltaessa, millaisia luokkia ohjelmaan on tarkoitus laatia,

Lisätiedot

Hyvin määritelty on puoliksi tehty kuinka vältetään turha tekeminen jo alussa

Hyvin määritelty on puoliksi tehty kuinka vältetään turha tekeminen jo alussa 1 Hyvin määritelty on puoliksi tehty kuinka vältetään turha tekeminen jo alussa Passion leads to design, design leads to performance, performance leads to SUCCESS! OLLI NIEMI Yoso Oy Mitä määrittelyltä

Lisätiedot

KERROSARKKITEHTUURIN SUUNNITTELUMALLIT. Kuisma Lehtonen. 15.8.2006 Joensuun yliopisto Tietojenkäsittelytiede Pro gradu -tutkielma

KERROSARKKITEHTUURIN SUUNNITTELUMALLIT. Kuisma Lehtonen. 15.8.2006 Joensuun yliopisto Tietojenkäsittelytiede Pro gradu -tutkielma KERROSARKKITEHTUURIN SUUNNITTELUMALLIT Kuisma Lehtonen 15.8.2006 Joensuun yliopisto Tietojenkäsittelytiede Pro gradu -tutkielma TIIVISTELMÄ Suunnittelumallit ovat yleisiä ratkaisuja tiettyihin oliopohjaisiin

Lisätiedot

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen

Lisätiedot

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Kieliversiointityökalu Java-ohjelmistoon. Ohje Kieliversiointityökalu Java-ohjelmistoon Ohje 2/6 SISÄLLYSLUETTELO 1 YLEISTÄ OHJELMASTA... 3 2 PÄÄ-IKKUNA...4 3 YLÄVALIKKO... 4 3.1 TIEDOSTO... 4 3.2 TOIMINTO... 4 3.3 ASETUKSET... 5 3.4 OHJE... 5 4 VÄLILEHDET...5

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

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.

Lisätiedot

KEHITYSVAMMAISTEN PALVELUJEN HYVÄT KÄYTÄNNÖT OHJEET KÄYTÄNNÖN KUVAAMISEKSI. Kehitysvammaliitto / Hyvät käytännöt -projekti

KEHITYSVAMMAISTEN PALVELUJEN HYVÄT KÄYTÄNNÖT OHJEET KÄYTÄNNÖN KUVAAMISEKSI. Kehitysvammaliitto / Hyvät käytännöt -projekti 1 KEHITYSVAMMAISTEN PALVELUJEN HYVÄT KÄYTÄNNÖT OHJEET KÄYTÄNNÖN KUVAAMISEKSI Kehitysvammaliitto / Hyvät käytännöt -projekti 2 Tuotetaan käytännöstä tietoa yhdessä Käytännön kuvaamisen tarkoituksena on

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

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

12. Kehysarkkitehtuurit

12. Kehysarkkitehtuurit 12. Kehysarkkitehtuurit Johdanto Kehystyypit Kehysten osittaminen Kehykset ja suunnittelumallit Kehysten etuja ja ongelmia Yhteenvetoa Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1 Johdanto

Lisätiedot

Hallintaliittymän käyttöohje

Hallintaliittymän käyttöohje Hallintaliittymän käyttöohje 1. Yleisiä huomioita Hallintaliittymän käyttöä helpottavia yleisiä huomioita: - Käytä listanäkymien hakukentissä kentän vieressä olevaa hakunappia, älä enter-näppäintä. - Älä

Lisätiedot

T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät

T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät Software design and specification methods Kurssin henkilökunta ja sponsori Luennoitsija DI Antti Karanta, Napa Oy www.napa.fi Assistentti TkL

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009

Tähtitieteen käytännön menetelmiä Kevät 2009 Tähtitieteen käytännön menetelmiä Kevät 2009 2009-01-12 Yleistä Luennot Luennoija hannu.p.parviainen@helsinki.fi Aikataulu Observatoriolla Maanantaisin 10.00-12.00 Ohjattua harjoittelua maanantaisin 9.00-10.00

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

1 Kannat ja kannanvaihto

1 Kannat ja kannanvaihto 1 Kannat ja kannanvaihto 1.1 Koordinaattivektori Oletetaan, että V on K-vektoriavaruus, jolla on kanta S = (v 1, v 2,..., v n ). Avaruuden V vektori v voidaan kirjoittaa kannan vektorien lineaarikombinaationa:

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

Arkkitehtuuriratkaisujen uudelleenkäyttö olioperustaisessa ohjelmistokehityksessä. Janne Kauppila

Arkkitehtuuriratkaisujen uudelleenkäyttö olioperustaisessa ohjelmistokehityksessä. Janne Kauppila Arkkitehtuuriratkaisujen uudelleenkäyttö olioperustaisessa ohjelmistokehityksessä Janne Kauppila Tampereen yliopisto Tietojenkäsittelytieteiden laitos Tietojenkäsittelyoppi Pro gradu tutkielma Toukokuu

Lisätiedot

MONOGRAFIAN KIRJOITTAMINEN. Pertti Alasuutari

MONOGRAFIAN KIRJOITTAMINEN. Pertti Alasuutari MONOGRAFIAN KIRJOITTAMINEN Pertti Alasuutari Lyhyt kuvaus Monografia koostuu kolmesta pääosasta: 1. Johdantoluku 2. Sisältöluvut 3. Päätäntäluku Lyhyt kuvaus Yksittäinen luku koostuu kolmesta osasta

Lisätiedot

Matematiikan didaktiikka, osa II Algebra

Matematiikan didaktiikka, osa II Algebra Matematiikan didaktiikka, osa II Algebra Sarenius Kasvatustieteiden tiedekunta, Oulun yksikkö Mitä on algebra? Algebra on aritmetiikan yleistys. Algebrassa siirrytään operoimaan lukujen sijaan niiden ominaisuuksilla.

Lisätiedot

Teoksen portfolion edellyttää osallistumista välipalavereihin ja päättötyönäyttelyyn sekä oman päättötyösi esittelyn

Teoksen portfolion edellyttää osallistumista välipalavereihin ja päättötyönäyttelyyn sekä oman päättötyösi esittelyn PÄÄTTÖTYÖOPAS SISÄLLYSLUETTELO Mikä on päättötyö... 1 Päättötyö ja päättötodistus... 2 Milloin päättötyön voi suorittaa... 3 Miten päättötyö suoritetaan... 4 Portfolio... 5 Näitä asioita voisit portfoliossasi

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 0: Kurssin esittely TIE-20200 Samuel Lahtinen 1 Mitäs tänään on tarjolla? Käytännön juttuja: Mistä tietoa löytyy Kurssin henkilökunta Kurssin rakenne Käytännönjärjestelyt

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

Tiedonsiirto- ja rajapintastandardit

Tiedonsiirto- ja rajapintastandardit Tiedonsiirto- ja rajapintastandardit Viitekehys Julkishallinnon perustietovarantojen rajapinnat (PERA) työryhmän tulokset valmiit syksyllä 2011 Määrittelee teknisen arkkitehtuuriratkaisun tietovarantojen

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Kotitehtävä 6, toteuttakaa alla olevan luokka ja attribuutit (muuttujat) Kotitehtävä 6, toteuttakaa alla olevan luokka ja attribuutit (muuttujat) Huom!

Lisätiedot

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ylläpitodokumentti Boa Open Access Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari

Lisätiedot

T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010 12. Periytyminen Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

Uudet EU-asetukset. EUR-Lexin tarkennetun haun käyttöohje

Uudet EU-asetukset. EUR-Lexin tarkennetun haun käyttöohje Uudet EU-asetukset EUR-Lexin tarkennetun haun käyttöohje Aloitus Mene EUR-Lex-sivustolle: http://eur-lex.europa.eu/homepage.html?locale=fi. Valitse (tarvittaessa) vaakasuorasta valikosta "Etusivu" ja siirry

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

TEHTÄVÄN NIMI YHDELLE TAI USEAMMALLE RIVILLE FONTTIKOKO 24 Tarvittaessa alaotsikko fonttikoko 20

TEHTÄVÄN NIMI YHDELLE TAI USEAMMALLE RIVILLE FONTTIKOKO 24 Tarvittaessa alaotsikko fonttikoko 20 Etunimi Sukunimi fonttikoko 16 Ryhmätunnus TEHTÄVÄN NIMI YHDELLE TAI USEAMMALLE RIVILLE FONTTIKOKO 24 Tarvittaessa alaotsikko fonttikoko 20 Tehtävätyyppi Koulutusohjelma fonttikoko 16 Elokuu 2010 SISÄLTÖ

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

TEKIJÄNOIKEUSNEUVOSTO LAUSUNTO 2011:15. Tekijänoikeussuoja internetpeliin ja sen ideaan

TEKIJÄNOIKEUSNEUVOSTO LAUSUNTO 2011:15. Tekijänoikeussuoja internetpeliin ja sen ideaan TEKIJÄNOIKEUSNEUVOSTO LAUSUNTO 2011:15 Asia Hakija Tekijänoikeussuoja internetpeliin ja sen ideaan AXO-Services Oy Annettu 15.12.2011 Tiivistelmä Muun muassa internetsivulla toiminut rahapeli ei ollut

Lisätiedot

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia

Lisätiedot

Tarvitseeko informaatioteknologia matematiikkaa?

Tarvitseeko informaatioteknologia matematiikkaa? Tarvitseeko informaatioteknologia matematiikkaa? Oulun yliopisto Matemaattisten tieteiden laitos 1 Kyllä kai IT matematiikkaa tarvitsee!? IT ja muu korkea teknologia on nimenomaan matemaattista teknologiaa.

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot