Ohjelmistoarkkitehtuuri
|
|
- Sofia Kapulainen
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 Ohjelmistoarkkitehtuuri Jonne Itkonen Jyväskylän yliopisto, tietotekniikan laitos 21. syyskuuta Johdanto Tämän luennon tarkoituena on hieman selventää ohjelmistoarkkitehtuurin monisyistä käsitettä. En lähde tekemään mitään määritelmiä tai luomaan teorioita siitä mitä ohjelmistoarkkitehtuuri on, tai kuinka ohjelmiston arkkitehtuuri tulisi luoda. Annan esimerkkejä parista arkkitehtuurityylistä ja esittelen erään, hieman kyseenalaisen menetelmän arkkitehtuurin luomiseen. Alussa esitellään hieman ohjelmistotekniikan ja ohjelmistoarkkitehtuurin historiaa. Myös raapaisen (rakennus- )arkkitehtuurin kahden eri teorian pintaa. Näiden kahden osion tulisi antaa näkemys siitä, kuinka laajasta ja monisyisestä, jopa taiteellisesta asiasta on kyse. Alun jälkeen on esitelty hieman erästä tapaa nähdä ohjelmistoarkkitehtuuri. Lopussa on vielä hieman omaa pohdintaani ohjelmistoarkkitehtuurista, sen luonteesta ja merkityestä ohjelmistotuotannolle. Yi alue, joka jää lähes kokonaan pois tutkiskelusta, on ohjelmistoarkkitehtuurien liiketoiminnallinen puoli. Pyydän anteei, sillä pidän itseäni enemmän tekevänä ja toteuttavana yilönä. Uskon sii, että pelkästään arkkitehtuurien tuoma varmuus tuotteen laadusta ja mittarit sille (!) ovat jo tarpeei suuri kontribuutio yhtiön liiketoiminnalliselle yikölle tavoitteiden saavutettavuuden ja resurssien arviointiin. Myöskään en aio puhua olemassaolevan arkkitehtuurin löytämisestä tai arkkitehtuurikielistä. 2 Historia Harvemmin kuulee missään käytettävän termiä ohjelmistotuotanto englanninkielisessä muodossa software production, vaan englannii termi on sama kuin suomen ohjelmistotekniikka, software engineering. Käsite ohjelmistotekniikka on peräisin vuodelta , jolloin NATO:n sponsoroimana järjestettiin Saan Garmischissa konferenssi, jonka nimei pitäjät antoivat Working Conference on Software Engineering. Nimi oli provokatiivinen, kuten konferenssin raportista [8, s. 8] voidaan lukea: The phrase software engineering was deliberately chosen as being provocative, in implying the need for software manufacture to be based on the types of theoretical foundations and practical disciplines, that are traditional in the established branches of engineering. Tämä konferenssi oli menestys, mutta menestys jäi lyhyei. Seuraavana vuonna Italian Roomassa järjestetty jatkokonferenssi ei enää yltänyt ensimmäisen tasolle, ja jäikin sarjan viimeisei. Valitettavasti termi software engineering vakiintui tarkoittamaan sen hetken vallalla olevia käytäntöjä, eikä siten täyttänyt provokatiivista tarkoitustaan herättää ihmiset tajuamaan moisten käytäntöjen puute. 1. Sana ohjelmisto on vain kolme vuotta vanhempi, mutta jo konferenssin vuonna 1968 puhuttiin ohjelmistokriisistä, joskaan kaikki eivät uskoneet sen olemassaoloon. Konferenssin keskustelujen kuvauen [8, s. 22] alkupuolelta voimme lukea Peter Naurin kommentin:... software designers are in a similar position to architects and civil engineers, particularly those concerned with the design of large heterogeneous constructions, such as towns and industrial plants. It therefore seems natural that we should turn to these subjects for ideas about how to attack the design problem. As one single example of such a source of ideas I would like to mention: Christopher Alexander 2 : Notes on the Synthesis of Form (Harvard Univ. Press, 1964) Vuoden 1969 sisältää kylläkin paljon hyvää materiaalia myös, muunmuassa seuraavan herra Sharpin puheenvuoron [11, s. 9]: I think that we have something in addition to software engineering: something that we have talked about in small ways but which should be brought out into the open and have attention focused on it. This is the subject of software architecture. Architecture is different from engineering.... What happens is that specifications of software are regarded as functional specifications. We only talk about what it is we want the program to do. It is my belief that anybody who is responsible for the implementation of a piece of software must specify more than this. He must specify the design, the form; and within that framework programmers or engineers must create something. No engineer or programmer, no programming tools, are going to help us, or help the software business, to make up for a lousy design.... Probably a lot of people have experience of seeing good software, an individual piece of software which is good. And if you examine why it is good, you will probably find that the designer, who may or may not have been the implementer as well, fully understood what he wanted to do and he created the shape. Siinäpä tuo oli, mitä ohjelmistoarkkitehtuuri on, kaikkinaisuudessaan, lyhykäisyydessään. Nykyisen määritelmän ohjelmistoarkkitehtuurille on antanut Bass et al. lähteessä [2]: The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them. 2. Herra Alexanderin nimen tulisi olla tuttu; häneen törmäämme vielä myöhemminkin.
2 Ohjelmistotekniikan alkuajoista kiinnostuneita kehoitan tutustumaan lähteeseen [10], jossa Randell valoittaa vuoden 1968 tilannetta tietotekniikan tutkimuen ja sovelluen kannalta, sekä itse konferenssin tunnelmia. Ajalta ennen ohjelmistoarkkitehtuurin viimeaikaista nousua mainitsen pari paperia: Dijtran THE-käyttöjärjestelmäpaperin [5] ja Parnasin paperin järjestelmien modularisoinnista [9]. Näistä Dijtran paperi kuvaa heidän tekemänsä THE-käyttöjärjestelmän rakenteen, joka on nähtävissä vielä monissa nykyisissä käyttöjärjestelmissä. THE:n rakenne on tuttu kerrosrakenne, missä jokainen kerros toimii itsenäisesti laajentaen aina alemman kerroen tarjoamaa toiminnallisuutta. Parnasin paperi taas kertoo kahdesta eri modularisointitavasta pienelle ohjelmalle. Ensimmäinen näistä modularisoi ohjelman syötön muotoilun eri vaiheiden mukaan, jälkimmäinen eri toiminnallisten vastuiden mukaan, hierarkkisesti. Vaikka jälkimmäinen tapa voitaneen nähdä hyvin oliomaisena, on olioarkkitehtuuri vanhempaa perua. Olioiden historian katsotaan alkavan vuonna 1967 julkaistusta Simula-67 ohjelmointikielestä, joskin olioita ja oliomaisia tapoja ohjelman kirjoittamiseen on varmaankin ollut olemassa jo ennen sitä. Nykyinen kiinnostus arkkitehtuuriin vahvistui 1990-luvun alkupuolella. Vuonna 1996 Mary Shaw ja David Garlan julkaisuvat kirjansa Software Architecture Perspectives on an Emerging Discipline [13], joka kerää mielestäni hyvin yhteen tuon ajan näkemyen. Nykyistä näkemystä pääsee parhaiten tutkailemaan lähteistä [2] ja [3]. Arkkitehtuuri on myös kiinnostanut ohjelmistoalan ihmisiä muilla kuin varsinaisen ohjelmistoarkkitehtuurin saralla. Tästä on hyvänä esimerkkinä nykyinen suunnittelumallivillitys, joka on lähtöisin neljän koplan (Gang of four, lyhyemmin GoF) kirjasta Design Patterns Elements of Reusable Object-Oriented Software [6]. Tämä kirja on saanut innoituensa arkkitehti Christopher Alexanderin ja kumppaneiden kirjasta A Pattern Language [1]. 3 Sananen arkkitehtuurista Arkkitehtuurin tuotoia saamme katsoa joka päivä ympärillämme, joitakin jopa ihailla. Ymmärrämme, että tarvitsemme arkkitehteja, jotta rakennuemme näyttävät kauniilta ja ovat käyttökelpoisia ja rakennusarkkitehteja, jotta ne pysyvät pystyssä. Meitä ohjelmistoarkkitehteina kuitenkin kiinnostaa enemmän se, miten arkkitehdit suunnittelevat ja oppivat suunnittelemaan rakennuia. Tätä voidaan lähestyä arkkitehtuurin teorian kautta. Arkkitehtuurin teoriasuuntauia näyttäisi olevan ainakin kolme. Näistä teemallisia ja synteettisiä teorioita käsitellään esimerkii Pentti Roution Taideteollisen korkeakoulun verkkopalvelimelta löytyvillä arteologian, taito-opin, sivuilla [12], tarkemmin osoitteessa fi/projects/metodi/035.htm#begin. Kolmannelle teorian muodolle en osaa nimeä sanoa, mutta siitä löytyy erittäin hieno oppikirja, Stenrosin ja Auran Arkkitehtuurin muoto ja sisältö [14]. Routio käy sivuillaan läpi arkkitehtuurin historiaa ja sen aikana vallinneita tyylisuuntia. Opimme Vitruviuen keisari Augustuen aikana aloittaneen teorian kerryttämisen jo sisältäneen pitkälle meidän aikaan säilyneet kolme rakentamisen käytännön tavoitetta: kestävyys, käytännöllisyys ja miellyttävyys. Mielenkiintoinen kannaltamme on esimerkii Eugène Viollet-le-Ducin lausahdus vuoden 1863 tietymiltä: [Rakennustaiteessa] hyvä maku on yleensä yhtä kuin alitajuisesti aistittu järkevyys. Hänen luomansa muotokieli on Roution mukaan ensimmäinen sitten antiikin päivien. Sivuhuomautus: Edsger W. Dijtra on kirjoituessaan [4] todennut seuraavasti: After more than 45 years in the field, I am still convinced that in computing, elegance is not a dispensable luxury but a quality that decides between success and failure; in this connection I gratefully quote from The Concise Oxford Dictionary a definition of elegant, viz. ingeniously simple and effective. Amen. Pikakelaus eteenpäin ja toimivan, käytettävän rakentamisen ylilyöntiin, funktionalismiin. Routio siteeraa tässä osassa Aaltoa seuraavasti: Aalto kirjoitti 1940 The Technology Review - lehdessä: Kuluneen vuosikymmenen aikana moderni arkkitehtuuri on ollut funktionaalista pääasiassa tekniseltä kannalta painopisteen ollessa etupäässä rakennustoiminnan taloudellisella puolella... Mutta koska arkkitehtuuri kattaa koko ihmiselämän alan, todellisen funktionalistisen arkkitehtuurin tulee olla funtionaalista pääasiassa inhimilliseltä kannalta.... Tekniikka on vain apuneuvo... Tekninen funktionalismi on oikeassa vain jos se laajennetaan käsittämään myös psykofyysistä aluetta. Se on ainoa tapa inhimillistää arkkitehtuuria... (Aalto 1972, siv. 49, 51). Jotain opittavaa komponenttiohjelmoijille löytynee seuraavasta Roution kommentista:... useatkin funkien pioneerit yrittivät saada käyntiin myös ihmisten psyykkisten tarpeiden selvittelyä, mutta se käynnistyi perin hitaasti, ehkä sii, että funktionalistit ymmärsivät tuon tehtävän ylivoimaisen laajuuden. Vasta aivan viime aikoina on alettu ymmärtää, että käyttäjien toiveiden huomioonottamisei on muitakin keinoja kuin kysellä niitä laajoilta populaatioilta ja sitten työläästi muokata tuloista teoreettisia standardeja. Nimenomaan rakennusosien esivalmistus tarjoaa suoremman keinon asiakkaiden kuulemiseen: heille voidaan antaa mahdollisuus osallistua rakennuen suunnitteluun valitsemalla siihen parhaai katsomansa osat esivalmistetusta valikoimasta (. Yhteissuunnittelu).... Myöhemmin, arkkitehtonisen synteesin teorian yhteydessä, Routio viittaa yhteissuunnittelun yhteydessä myös laajaan käytön ja viihtyvyystekijöiden tutkimuen kautta syntyneeseen suunnitteluoppaaseen [1], joka onkin jo meille tuttu. Stenros ja Aura taas puhuvat kirjassaan [14] arkkitehtuurista mielestäni enemmän esteettisestä ja rakennusteoreettisesta näkökulmasta. He kertovat, mitä ovat tila, massa ja pinta arkkitehtuurin peruskäsitteinä, kuinka me koemme ne, mikä vaikuttaa niihin ja kuinka ne vaikuttavat lopputuloeen.
3 4 Ohjelmistoarkkitehtuuri Monet näkevät ohjelmistoarkkitehtuurin identtisenä ohjelmiston suunnittelun kanssa, mutta olen tästä varsin eri mieltä. Suunnittelu on yityiskohtaisempaa, toteutuen suunnittelua. Ehkä parempi suomennos suunnitteluvaihetta tarkoittavalle englannin sanalle design olisi muotoilu. Arkkitehtuuri taas keskittyy kuvaamaan ohjelmiston ydinrakenteet. Tämä sinänsä abstrakti käsite saattaa olla perin hankala niin kuvailla kuin ymmärtää, jopa niin hankala, etteivät kaikki siihen helposti edes kykene. Ohjelmistoarkkitehtuuri kuvataan yleensä elementtien (element,component ) ja näiden välisten liittimien (connector ) avulla. Koska komponentti-käsite sotkeutui helposti ohjelmistokomponenttiin, tai vielä yleisempään (ja erittäin häilyvään) komponentin käsitteeseen alallamme, on lähteen [2] mukaan siirrytty käyttämään ohjelmistoarkkitehtuurin komponenteista nimitystä elementti. Nämä elementit ovat arkkitehtuurin osia, jotka saattava olla toteutuessa usean ohjelmistokomponentin toiminnan yhdiste. Esimerkkejä mahdollisista elementeistä ovat olio, asiakas, palvelin, suodin, kerros ja tietokanta. Liittimistä voitaisiin esimerkkinä mainita aliohjelmakutsut, tapahtuman (event ) välitys, tietokantaprotokollat ja putket. 4.1 Arkkitehtuurityylit Seuraavana on lueteltu joukko Shaw n ja Garlanin kirjassaan [13] esittämiä arkkitehtuurityylejä. Tyylejä ei lähdetä tässä analysoimaan sen tarkemmin, tyydyn vain viittaamaan lähteeseen [7]. Putkia ja suodattimia Elementillä on tiedon sisään- ja ulostulo. Elementti saa tiedon sisääntulosta (syöttö), käsittelee sen, ja laittaa vastauen ulostuloon (tulostus). Tämä voi tapahtua joko käsitellen ja tulostaen yhden syötön osan kerrallaan, tai ottamalla ensin koko syötön, käsittelemällä tämän kokonaisuutena, ja tulostaen taas yhtenä kokonaisuutena. Tätä voitaneen kuitenkin pitää omana tyylinään. Sekamuotojakin löytyy. Kuva 1 esittää putki-suodatin-arkkitehtuuria. Lisää kursseja aiheesta: Unix systeemiohjelmointi C- kielellä, Käyttöjärjestelmät. Tiedon abstrahointia ja olioita Sitten tämän ajan lempilapsi olio-ohjelmointi. Kun 60- luvulla Norjassa havaittiin, että simulointi on huomattavasti mukavampaa, kun simuloinnin kohdetta voi käsitellä kokonaisena yilönä ohjelmakooditasolla, syntyi olioohjelmointi. Tieto ja sitä käsittelevät operaatiot kapseloitiin yhteen. Valaistuttuaan 70-luvun Amerikoissa olio-ohjelmointi saavutti nykyisen tilansa, jollaisena me sen tunnemme. Oliot, joilla on käytös, tila ja identiteetti, käsittelevät tiedon ja ratkaisevat ongelmat keskenään kommunikoimalla. Tärkeitä käsitteitä oli paitsi olion kykyjen siirto toiselle periyttämällä, myös olion tiedon abstrahointi. Tämä johtaa aivan erinlaiseen ajattelu- ja suunnittelutapaan kuin mihin on aiemmin esimerkii rakenteisessa ohjelmoinnissa totuttu. Valitettavasti tämä perustavaa laatua oleva erilaisuus ei ole kovin yleiseen tietouteen levinnyt, minkä takia jotkut ovat jo uskaltautuneet väittämään olio-ohjelmoinnin epäonnistuneen. Elementtejä ovat nyt, yllätys, oliot, liittymiä niiden väliset suhteet. Kuva 2 hahmottaa tätä arkkitehtuurityyliä (nostalgisesti). obj obj Kuva 2: Oliot tekevät yhteistyötä salaten tilansa mustasukkaisesti. Kuvassa käytetty notaatio muistuttaa etäisesti Boochin notaatiota. Yleensä olio-ohjelmoinnista puhuttaessa kannattaa aina tähdentää siinä vallitsevaa kahtiajakoisuutta järjestelmän kuvauesessa kehityen versus ajon aikana. Monesti oliojärjestelmät nähdään vain staattisina luokkahierarkioina, kun monin verroin tärkeämpää olisi nähdä myös ajonaikainen, olioiden muodostama dynaaminen rakenne. Lisää kursseja aiheesta: Olio-ohjelmointi. obj Kuva 1: Putkia ja suodattimia. Tätä ideologiaa kannattaa verrata alkuperäiseen Unixin ideaan, joka oli tehdä paljon pieniä ohjelmia, joita yhdistelemällä toisen tuloen käyttäminen toisen syöttönä saadaan ongelma ratkaistui tai tieto käsitellyi. Fyysikot taas muistavat LabView n, jotkut ovat myös tulleet tutuii muiden visuaalisten ohjelmointikielten kanssa, esimerkii kuvankäsittelyn yhteydessä. Tuleva mahtisana, komponenttiohjelmointi, saa myös tämän arkkitehtuurimallin näyttämään tutulta. Elementtinä tässä tyylissä toimii suodatin, liittymänä putki. Lisää esimerkkejä: Perinteiset ohjelmointikielten kääntäjät, signaalinkäsittely, funktionaalinen ohjelmointi, hajautetut järjestelmät(?). Tapahtumat (implicit invocation) Ennen Javaa ja oliokieliä varsin yleinen malli graafisten käyttöliittymien ohjelmoinnissa oli tapahtumakeskeinen malli. Kun nappulaa kuvaruudulla painettiin, lähti siitä viesti viestikanavaan, josta halukkaat sen kuulivat ja siihen reagoivat. Vaikka ovat päällisin puolin käyttöliittymäohjelmoinnista hävinneet, eivät tapahtumamallit silti ole kokonaan kadonneet, pikemminkin päinvastoin! Nykyinen web-palvelujen huuma ja vanhat kunnon hajautetut järjestelmät ovat pitäneet, ja tulevat pitämään, tämän mallin hengissä vielä pitkään. Yi huomattava piirre tapahtumapohjaisissa järjestelmissä on, ettei tapahtuman aiheuttaja tiedä kuka reagoi tapahtumaan. Olio-ohjelmoinnissahan tämä on melkein päinvastoin, olion viite täytyy olla tiedossa, jotta jotain olion metodia voidaan kutsua. Elementtejä ovat nyt moduulit, joissa on kasapäin proseduureja ja tapahtumia.
4 Lisää kursseja aiheesta: (vanha?) Graafisten käyttöliittymien ohjelmointi. Syöttö Data (softan tila) Tulkattava ohjelma Kerrosjärjestelmä Kun kirjastojen tekeminen tuli muotiin, syntyivät kerrosjärjestelmät. Kerros A 1 hoitaa tehtävän alimmalla tasolla, kerros A 2 työvälineitä lisäten, ja niin ylöspäin iteroiden aina kerroeen A n, jota käyttääkin asiakas. Puhtaassa kerrosjärjestelmässä kommunikoivat vain välittömät naapurikerroet, epäpuhtaampia toteutuiakin on. Tulos Simuloitu tulkki Kuva 5: Tulkki Tulkin sisäinen tila Kirjastojen lisäi hyviä esimerkkejä kerrosjärjestelmistä ovat käyttöjärjestelmät [5] ja kaikkien suosikki Javaarkkitehtuuri, alimmalla tasollaan virtuaalikone, jonka päälle on useita luokkakirjastoja lastattu. Kuva 3 syöpyy helposti lähtemättömästi päähän. Kuva 6: Kontrolloitu prosessi (laatikko) ja kontrolloija (ympyrä). Prosessit ja kontrollointi Kuva 3: Kerroittainen rakenne kuin sipulilla. Lisää kursseja aiheesta: Käyttöjärjestelmät, Tietoliikenne. Teräen jatkuvavalu lienee monille tuttu esimerkkinä prosesseista ja niiden kontrolloinnista. Ideana tässä arkkitehtuurityylissä on, että syöttötiedosta lasketaan ohjausparametrit, joilla elementtiä ohjataan. Myös takaisinkytkentä tuloista ohjaueen on mahdollinen. Lisää kursseja aiheesta: Simuloinnin ja mallintamisen kurssit. Tietovarastot Blackboard Kuva 4: Liitutauluko? Muita tuttavuuia Muita tuttuja tyylejä ovat esimerkii hajautetut järjestelmät, kuten CORBA ja Javan RMI ja Jini, unohtamatta perinteistä asiakas-palvelin-mallia. Myös vieläkin tutumpi jako pääohjelmaan ja aliohjelmiin voidaan nähdä arkkitehtuurityylinä, vieläpä perin yleisenä. Tarjolla on myös sovellusalueelle räätälöityjä viitearkkitehtuureja, unohtamatta tilaperustaisia ratkaisuja (tilakoneet ja muut). Lisää kursseja aiheesta: Hajautetut järjestelmät, Automaatit ja kieliopit. Tietovarastoissa (repository ), kuten kuvasta 4 nähdään, on pääosassa kai elementtityyppiä: Tietovarastoelementti ja sitä käyttävät tietolähteet tai tiedon käsittelijät. Mallissa tietovarasto toimii yhteisenä muistina tietoa käsitteleville ja käyttäville elementeille. Taulun ja käsittelijöiden väliseen kommunikoinnin toteuttamiseen ei juurikaan oteta kantaa. Tällaisen arkkitehtuurin järjestelmiä ovat esimerkii jotkut puheentunnistusjärjestelmät, tietokannat ja uudemmat ohjelmointikielten kääntäjät. Lisää kursseja aiheesta: Tekoäly??, Tietokannat?. Heterogeeniset arkkitehtuurit Arkkitehtuureita voi yhdistellä monella tavalla. Yhden tyylin elementit voidaan esimerkii toteuttaa toisen tyylin avulla, vaikkapa Unixissa ohjelmat, joita putkitetaan, voivat olla oliosuuntautuneita. Tämä ei ole ainoastaan elementtien yinoikeus, vaan liitoet voivat myös olla toisen arkkitehtuurityylin tuotteita. Toinen tapa on sallia elementille eri tyylien mukaisia liitoia. Kolmas on tehdä arkkitehtuurikuvauen eri tasot eri tyyleillä. Tulkit Java, riittääkö? Rakennetaan tulkki, joka suorittaa eli tulkitsee ohjelmaa, ja jolla on oma sisäinen tila, sekä ohjelman tila. Java-teknologia on hyvä esimerkki tästä tyylistä, ja tämän hetken suosikkina varmaan monien mielessä. Wanhat parrat voivat muistella vanhoja Pascal-toteutuia (UCSD- Pascal ja P-code). Lisää kursseja aiheesta: Ohjelmointikielten periaatteet. 4.2 Arkkitehtuurin suunnittelu Yleensä sovelluia tehdessä ei laadullisiin vaatimuiin juurikaan kiinnitetä huomiota. Ne täyttyvät joko sattumalta, muun osaamisen johdosta, tai ne ovat sovellusalueelle niin olennaisia, että ne täyttyvät huomaamatta. On myös erityisiä tutkimusaloja, jotka ovat keskittyneet laadullisiin vaatimuiin, valitettavasti usein vain yhteen kerrallaan. Sovelluen toimintaa pyritään tehostamaan
5 esimerkii suorituskyvyn tai varmuuden kannalta. Näiden vaatimusten yhdistämistä ei auta se, että usein vaatimuet ovat toisilleen epäsuotuisia. Laadullisia vaatimuia koetetaan kyllä arvioida hieman sovelluen valmistuttua, mutta tällöin muutosten tekeminen, varsinkin, jos ne vaikuttavat vahvasti sovelluen arkkitehtuuriin, on perin kallista. Tämän takia olisi myös hyvä kiinnittää huomiota laadullisiin vaatimuiin kehityen alkuvaiheessa, jolloin muutoskustannuet ovat yleisesti pienempiä. Tässä esitelty metodi perustuu kolmeen toteutettuun järjestelmään. Järjestelmät on paremmin esitelty lähteessä [3, Luku kolme eteenpäin]. Vaikka tämä arkkitehtuurin suunnitteluprosessi voidaan nähdä funktiona, jonka syötteinä ovat vaatimuet ja tuloena arkkitehtuurikuvaus, ei prosessi suinkaan ole automaattinen, vaan vaatii ohjelmistoarkkitehdeilta panostusta ja luovuutta. Metodin kolme vaihetta ovat: arkkitehtuurin suunnittelu toiminnallisuuden perusteella, laatuatribuuttien varmistus ja arkkitehtuurin muuntaminen tarvittaessa. Ensimmäisen suunnitellun arkkitehtuurin avulla testataan, täyttyvätkö laatuvaatimuet. Jos ne eivät täyty, muokataan arkkitehtuuria ja testataan laatuvaatimuet uudestaan. Ei ole mielekästä testata kaikkia vaatimuia kerrallaan, vaan vaatimuet on hyvä jakaa mielekkäii osajoukoii. Arkkitehtuurin suunnittelu toiminnallisuuden perusteella Prosessi, joka on esitelty kuvassa 7 sivulla 6 alkaa arkkitehtuurin laatimisella toiminnallisista vaatimuista. Tämän ensimmäisen vaiheen tarkoituena on löytää järjestelmän ydinkäsitteet, joiden mukaan järjestelmä rakentuu. Näitä yleistyen kohteita ei useinkaan löydy suoraan sovellusalueesta, vaan niiden löytymiseen tarvitaan hieman luovuutta ja analysointia. Kun yleistyet ovat löytyneet, tarkennetaan niiden välisten toimintojen kuvauia. Laatuatribuuttien varmistus Arkkitehtuurin ensimmäisen version suunnittelun ja jokaisen arkkitehtuurin muuntamisen jälkeen arvioidaan täyttyvätkö kaikki laadulliset vaatimuet, jotka ovat kyseisellä kierroella tarkastelun kohteena. Jokainen vaadeatribuutti arvioidaan kvalitatiivisesti tai kvantitatiivisesti, ja näitä arvioita verrataan vaatimuissa esitettyihin arvoihin. Jos kaikki arviot ovat yhtähyviä tai parempia kuin vaatimuet, siirrytään tutkimaan seuraavaa vaatimusjoukkoa. Laatuatribuuttien varmistamiseen on tarjolla neljä eri vaihtoehtoa. Voidaan käyttää skenaarioiden arviointia, simulaatiota, matemaattista mallintamista tai järkeilyä. Skenaarioita tarvitaan kai, toinen suunnittelua ja toinen arviointia varten. Ajamalla näitä skenaarioita läpi saadaan arvio laatuatribuuttien täyttymisestä. Esimerkii jos muutosskenaariot aiheuttavat suuria muutoia arkkitehtuuriin, on järjestelmän ylläpidettävyys heikkoa. Simuloitaessa toteutetaan ensin arkkitehtuurin pääelementit, jäljelle jääneitä elementtejä simuloidaan ohjelmallisesti. Toinen vaihtoehto on tehdä prototyyppi, jolloin arkkitehtuuri toteutetaan osittain, ja tätä osittaista toteutusta ajetaan oikeassa ympäristössä. Vaihtoehtona simuloinnille on tarjolla järjestelmän matemaattinen mallintaminen. Tätä käytetään varsinkin toiminnollisten laatuatribuuttien arviointiin. Matemaattista mallintamista voi myös käyttää simuloinnin apuna, sillä täysin toisensa poissulkevia ne eivät ole. Järkeilyä ei tule aliarvioidan yhtenä laatuatribuuttien arviointimenetelmänä, vaikka se on kovin subjektiivinen tapa arvioida. Kokemus on valttia näissäkin asioissa. Arkkitehtuurin muuntaminen Jos jokin arvio edellä jää alle vaaditun tason, muunnetaan arkkitehtuuria ja arvioidaan vaadeatribuutit uudelleen. Tätä toistetaan, kunnes kaikki laatuvaatimuet on täytetty, tai tehtävä huomataan mahdottomai, jolloin vaatimuista täytyy neuvotella uudestaan asiakkaan kanssa. Arkkitehtuuri voi parantaa neljällä eri tapaa: sovittamalla arkkitehtuuri johonkin tunnettuu arkkitehtuurityyliin, sovittamalla arkkitehtuuriin jokin arkkitehtuurimalli, sovittamalla osaan arkkitehtuuria jokin suunnittelumalli tai muokkaamalla vaatimuia. Arkkitehtuurityylit ovat koko arkkitehtuuria hallitsevia, joskin niitä voi yhdistellä hieman. Arkkitehtuurimallit ovat keskenään ja arkkitehtuurityylin kanssa ortogonaalisia, ja siten pikemminkin verrattavissa aspektisuuntautuneeseen ohjelmointitapaan kuin suunnittelumalleihin. Arkkitehtuurimallit muokkaavat koko arkkitehtuuria tai suurta osaa siitä, kun taas haluttaessa muokata vain pientä osaa arkkitehtuurista voidaan käyttää suunnittelumalleja. Laatuvaatimuen voi myös sopivissa tilanteissa muuntaa toiminnallisei, josta esimerkkinä Bosch mainitsee poikkeutuet vikasietoisuuden parantajina. Viimeinen keino on vanha tuttu: hajoita ja hallitse. Tällöin vaatimus hajoitetaan useammai laadullisei vaatimuei järjestelmän elementeille, tai kahdei tai useammai toiminnallisei vaatimuei. 5 Yhteenveto Ohjelmistoarkkitehtuurille on valtavirrassa käymässä niin kuin monelle muullekin hyvälle asialle on käynyt: se vaikuttaa samankaltaiselta jonkin vanhan, tutumman asian kanssa, joten se tähän samaistetaan. Näin on käynyt esimerkii olio-ohjelmoinnille ennen ohjelmistoarkkitehtuureja. Mielenkiintoista kyllä, esitelty Boschin arkkitehtuurinsuunnittelumenetelmä muistuttaa kovasti oliomenetelmiä, vaikkakin vastaavia menetelmiä löytyy jo 1960-luvun lähteistä. Enemmän kuin oppimoniste, on tämän paperin tarkoitus olla ajatuia herättävä ja varsinkin tiedonjanoisille lähteitä tarjoava. Tässä paperissa mainitut lähteet ovat minulle olleet tärkeitä, niin hyvässä kuin hieman huonommassakin mielessä. Pentti Roution verkkojulkaisu on ollut minulle hyvin tärkeä tiedonlähde, ja olen huomannut monien sen taito-opin havaintojen soveltuvan hyvin ohjelmistojen tekemisen taidon ymmärtämiseen. Muistutanpa heti samaan hengenvetoon, etteivät nämä kai alaa silti ole välttämättä identtiset. Bosch ja Bass ovat kai lähdettä, joiden esityeen en oikein osaa samaistua. Kuitenkin, Bosch tuo mielestäni hyvin esille, kuinka arkkitehtuureilla tuntuu olevan ohjelmiston laatua parantava vaikutus. Voisin jopa väittää, että ilman arkkitehtuuria ei ohjelmisto voi olla laadukas. Bass taas on mannaa heille, jotka haluavat yityiskohtaista
6 Vaatimuen valinta Toiminnallisuuteen perustuva arkkitehtuuriratkaisu FR (Osittainen) vaatimusmäärittely Sovellusarkkitehtuuri Arkkitehtuurin muunnos QA-optimointi ratkaisut Ei OK Arvioi laatuatribuutit OK QR (Perus) QASAR Lisää vaatimuia? Kyllä QASAR (iteratiivinen) Kuva 7: Boschin QASAR-malli [3]. kuvausta metodeista arkkitehtuurien suunnitteluun ja dokumentointiin. Toivon kuitenkin, että innostut tutustumaan näihin lähteisiin. Varsinkin NATO:n konferenssien paperit ovat erittäin tervettä luettavaa jokaiselle, joka luulee alan kehittyneen vasta ja 1990-luvulla. Nuo vuosikymmenet alkavat näyttää yhä pahemmalta pysähtymisen aikakaudelta. Mitä tulee ohjelmistoarkkitehtuuriin, pitäkää silmät, korvat ja mieli avoimena. Ohjelmistoalan työntekijät tekevät sovelluia useimmiten muille kuin omalle alalleen, joten muiden alojen tuntemus on välttämätöntä. Minkä toivon tällä kirjoituellani ja luennollani osoittaneeni, ovat muut alat myös hyvin tärkeä lähde meille yrittäessämme ymmärtää omaa alaamme. Viitteet [1] C. Alexander et al.: A Pattern Language: Towns, Buildings, Construction, Oxford University Press, [2] Len Bass, Paul Clements ja Rick Kazman: Software architecture in practice, Addison-Wesley Longman Publishing Co., Inc., 2003, ISBN [3] Jan Bosch: Design and use of software architectures: adopting and evolving a product-line approach, ACM Press/Addison-Wesley Publishing Co., 2000, ISBN [4] Edsger W. Dijtra: Computing science: Achievements and challenges,. URL ewd12xx/ewd1284.pdf [5] Edsger W. Dijtra: The structure of the the - multiprogramming system, teoessa Proceedings of the first ACM symposium on Operating System Principles, (ss ), ACM Press, [6] Erich Gamma et al.: Design patterns: elements of reusable object-oriented software, Addison-Wesley Longman Publishing Co., Inc., 1995, ISBN [7] David Garlan ja Mary Shaw: An Introduction to Software Architecture, Tekninen Raportti CMU-CS , Carnegie Mellon University, January URL project/able/www/paper_a%bstracts/ intro_softarch.html [8] P. Naur ja B. Randell (toim.): Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7-11 Oct. 1968, Scientific Affairs Division, NATO, Brussels, URL brian.randell/nato/index.%html [9] D. L. Parnas: On the criteria to be used in decomposing systems into modules, Communications of the ACM, 15(12), ss , 1972, ISSN URL [10] B. Randell: Software engineering in 1968, teoessa Proceedings of the 4th international conference on Software engineering, (ss. 1 10), IEEE Press, 1979, ISBN none. [11] B. Randell ja J.N. Buxton (toim.): Software Engineering Techniques: Report of a conference sponsored by the NATO Science Committee, Rome, Italy, Oct. 1969, Scientific Affairs Division, NATO, Brussels, URL brian.randell/nato/index.%html [12] Pentti Routio: Tuote ja tieto, Taideteollinen korkeakoulu, Helsinki, 1994, nykyään ylläpidetty verkkojulkaisu. URL metodi/ [13] Mary Shaw ja David Garlan: Software architecture: perspectives on an emerging discipline, Prentice-Hall, Inc., 1996, ISBN [14] Helmer Stenros ja Seppo Aura: Arkkitehtuurin muoto ja sisältö, Rakennuskirja, Helsinki, 1984, ISBN
Ohjelmistoarkkitehtuuri
Ohjelmistoarkkitehtuuri Jonne Itkonen Jyväskylän yliopisto, tietotekniikan laitos 20. marraskuuta 2007 1 Johdanto Tämän luennon tarkoituena on hieman selventää ohjelmistoarkkitehtuurin monisyistä käsitettä.
Ohjelmistoarkkitehtuuri
Ohjelmistoarkkitehtuuri Jonne Itkonen Jyväskylän yliopisto, tietotekniikan laitos 20. marraskuuta 2007 1 Johdanto Tämän luennon tarkoituksena on hieman selventää ohjelmistoarkkitehtuurin monisyistä käsitettä.
Bosch-malli. Kolme vaihetta. Termistöä. Ohjelm!toarkkitehtuu"n
Bosch-malli Ohjelm!toarkkitehtuu"n suunni#elu 2$6 Quality Attribute-oriented Software Architecture Design method Toiminnallisista vaatimuksista laadittu arkkitehtuurimalli kehitetään arvioimalla sitä laadullisten
Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.
Sisällys Ratkaisumallien historia Jaakko Vuolasto 25.1.2001! Ratkaisumalli! Christopher Alexander! Ohjelmistotuotannosta arkkitehtuuriin! Henkilöhistoriaa! Ensimmäisiä käyttökokemuksia! Yhteenveto 25.1.2001
Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa
Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 8.1.2014 1 1 Johdanto 1.1 Mikä on ohjelmistoarkkitehtuuri? 1.2 Ohjelmistoarkkitehtuuri ja laatuvaatimukset 1.3
Ohjelmistoarkkitehtuurit. Syksy 2010
Ohjelmistoarkkitehtuurit Syksy 2010 Kai Koskimies Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto, Vaasan yliopisto Kurssin tavoitteet Arkkitehtuurin roolin
Ohjelmistoarkkitehtuurit. Kevät
Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto 2 Kurssin tavoitteet
Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1
Ohjelmistoarkkitehtuurit Syksy 2009 Kai Koskimies Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 Tervetuloa Kuopion yliopisto, Oulun yliopisto (Kajaani), Tampereen yliopisto, Turun yliopisto,
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
Käyttöliittymät II. Käyttöliittymät I Kertaus peruskurssilta. Keskeisin kälikurssilla opittu asia?
Käyttöliittymät II Sari A. Laakso Käyttöliittymät I Kertaus peruskurssilta Keskeisin kälikurssilla opittu asia? 1 Käyttöliittymät II Kurssin sisältö Käli I Käyttötilanteita Käli II Käyttötilanteet selvitetään
On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)
On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31) Juha Kahkonen Click here if your download doesn"t start automatically On instrument costs
812341A Olio-ohjelmointi, I Johdanto
812341A Olio-ohjelmointi, 2016 I Johdanto Sisältö 1. Abstraktiosta 2. Olio-ohjelmoinnin historiaa 3. Olioparadigmasta 4. Peruskäsitteiden kertausta 812341A Olio-ohjelmointi, Johdanto 2 1 Abstraktiosta
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
Ohjelmistoarkkitehtuurit. Syksy 2008
Ohjelmistoarkkitehtuurit Syksy 2008 Kai Koskimies 1 Tervetuloa Kuopion yliopisto, Oulun yliopisto, Tampereen yliopisto, Teknillinen korkeakoulu, Turun yliopisto, Vaasan yliopisto, Tampereen teknillinen
Ohjelmistoarkkitehtuurit Kevät käytäntöjä
Ohjelmistoarkkitehtuurit Kevät 2014 -käytäntöjä Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 8.1.2014 1 Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto
Arkkitehtuuritietoisku. eli mitä aina olet halunnut tietää arkkitehtuureista, muttet ole uskaltanut kysyä
Arkkitehtuuritietoisku eli mitä aina olet halunnut tietää arkkitehtuureista, muttet ole uskaltanut kysyä Esikysymys Kuinka moni aikoo suunnitella projektityönsä arkkitehtuurin? Onko tämä arkkitehtuuria?
Ohjelmistoarkkitehtuurit 2016. Kevät 2016 -käytäntöjä
Ohjelmistoarkkitehtuurit Kevät 2016 -käytäntöjä Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 13.1.2016 1 Tervetuloa Tampereen teknillinen yliopisto, Oulun yliopisto, Turun yliopisto 13.1.2016 2 Tiedonvälitys
ECVETin soveltuvuus suomalaisiin tutkinnon perusteisiin. Case:Yrittäjyyskurssi matkailualan opiskelijoille englantilaisen opettajan toteuttamana
ECVETin soveltuvuus suomalaisiin tutkinnon perusteisiin Case:Yrittäjyyskurssi matkailualan opiskelijoille englantilaisen opettajan toteuttamana Taustaa KAO mukana FINECVET-hankeessa, jossa pilotoimme ECVETiä
Ohjelmistojen mallintaminen, mallintaminen ja UML
582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti
7. Product-line architectures
7. Product-line architectures 7.1 Introduction 7.2 Product-line basics 7.3 Layered style for product-lines 7.4 Variability management 7.5 Benefits and problems with product-lines 1 Short history of software
TIEKE Verkottaja Service Tools for electronic data interchange utilizers. Heikki Laaksamo
TIEKE Verkottaja Service Tools for electronic data interchange utilizers Heikki Laaksamo TIEKE Finnish Information Society Development Centre (TIEKE Tietoyhteiskunnan kehittämiskeskus ry) TIEKE is a neutral,
Suunnittelumallit (design patterns)
Suunnittelumallit (design patterns) Ohjelmoinnissa Rakennusarkkitehtuurissa Käyttöliittymäsuunnittelussa Sear ch Ohjelmointi Suunnittelumallit Usein toistuvia ohjelmointiongelmia ja niiden ratkaisuja:
National Building Code of Finland, Part D1, Building Water Supply and Sewerage Systems, Regulations and guidelines 2007
National Building Code of Finland, Part D1, Building Water Supply and Sewerage Systems, Regulations and guidelines 2007 Chapter 2.4 Jukka Räisä 1 WATER PIPES PLACEMENT 2.4.1 Regulation Water pipe and its
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
1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä
OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 81122P (4 ov.) 30.5.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan
anna minun kertoa let me tell you
anna minun kertoa let me tell you anna minun kertoa I OSA 1. Anna minun kertoa sinulle mitä oli. Tiedän että osaan. Kykenen siihen. Teen nyt niin. Minulla on oikeus. Sanani voivat olla puutteellisia mutta
1. Liikkuvat määreet
1. Liikkuvat määreet Väitelauseen perussanajärjestys: SPOTPA (subj. + pred. + obj. + tapa + paikka + aika) Suora sanajärjestys = subjekti on ennen predikaattia tekijä tekeminen Alasääntö 1: Liikkuvat määreet
Opiskelijat valtaan! TOPIC MASTER menetelmä lukion englannin opetuksessa. Tuija Kae, englannin kielen lehtori Sotungin lukio ja etälukio
Opiskelijat valtaan! TOPIC MASTER menetelmä lukion englannin opetuksessa Tuija Kae, englannin kielen lehtori Sotungin lukio ja etälukio Päättääkö opettaja ohjelmasta? Vai voisivatko opiskelijat itse suunnitella
Uusi Ajatus Löytyy Luonnosta 4 (käsikirja) (Finnish Edition)
Uusi Ajatus Löytyy Luonnosta 4 (käsikirja) (Finnish Edition) Esko Jalkanen Click here if your download doesn"t start automatically Uusi Ajatus Löytyy Luonnosta 4 (käsikirja) (Finnish Edition) Esko Jalkanen
Vertaispalaute. Vertaispalaute, /9
Vertaispalaute Vertaispalaute, 18.3.2014 1/9 Mistä on kyse? opiskelijat antavat palautetta toistensa töistä palaute ei vaikuta arvosanaan (palautteen antaminen voi vaikuttaa) opiskelija on työskennellyt
1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä
OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 811122P (5 op.) 12.12.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan
Laatu tietojärjestelmähankkeissa. Tietohallinnon kokemuksia Juha-Pekka Leskinen Atk-päällikkö Eduskunnan kanslia
Laatu tietojärjestelmähankkeissa Tietohallinnon kokemuksia Juha-Pekka Leskinen Atk-päällikkö Eduskunnan kanslia 5.10.2010 Pohdintaa tietojärjestelmien laadusta Mitä on laatu Miten laatua tavoitellaan tietojärjestelmäprojekteissa
FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL
FinFamily PostgreSQL 1 Sisällys / Contents FinFamily PostgreSQL... 1 1. Asenna PostgreSQL tietokanta / Install PostgreSQL database... 3 1.1. PostgreSQL tietokannasta / About the PostgreSQL database...
Sosiaalisen median liiketoimintamallit ja käyttöön oton suunnitelma 9/23/2012
Sosiaalisen median liiketoimintamallit ja käyttöön oton suunnitelma 9/23/2012 Liiketoimintamalli: taustaa (R. Jaikumar ja Barettan autotehdas) Tuottavuuden jatkuva parantaminen on mahdollista vain toteuttamalla
Ohjelmistoarkkitehtuurit, syksy 2012 4.9.2010
Ohjelmistotutkimuksen painopisteitä Ohjelmistoarkkitehtuurit Johdanto ja peruskäsitteitä 2000 1995 1990 1985 1980 1970 Tuoteperhearkkitehtuurit, MDA, väliohjelmistot, aspektit CASE-välineet: uudelleenkäyttö,
On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)
On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31) Juha Kahkonen Click here if your download doesn"t start automatically On instrument costs
On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)
On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31) Juha Kahkonen Click here if your download doesn"t start automatically On instrument costs
Information on preparing Presentation
Information on preparing Presentation Seminar on big data management Lecturer: Spring 2017 20.1.2017 1 Agenda Hints and tips on giving a good presentation Watch two videos and discussion 22.1.2017 2 Goals
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.
Millainen on onnistunut ICT-projekti?
Millainen on onnistunut ICT-projekti? Ohjelmistotuotannon lehtori Tero Tensu Ahtee Ohjelmistotekniikan laitoksella 1990- Projektityö-kurssilla 1991- pesunkestävä yliopistohampuusi ei päivääkään oikeissa
TIETEEN PÄIVÄT OULUSSA 1.-2.9.2015
1 TIETEEN PÄIVÄT OULUSSA 1.-2.9.2015 Oulun Yliopisto / Tieteen päivät 2015 2 TIETEEN PÄIVÄT Järjestetään Oulussa osana yliopiston avajaisviikon ohjelmaa Tieteen päivät järjestetään saman konseptin mukaisesti
Ohjelmistojen mallintaminen, kesä 2009
582104 Ohjelmistojen mallintaminen, kesä 2009 1 Ohjelmistojen mallintaminen Software Modeling Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön tuntemus Ohjelmoinnin
Ohjelmistoarkkitehtuurin suunnittelu
Ohjelmistoarkkitehtuurin suunnittelu Luento 3 10.9.2014 581358 Ohjelmistoarkkitehtuurit 1 Oppimistavoitteet Arkkitehtuuritietämyksen lähteet Yleisiä suunnitteluperiaatteita Kaunis arkkitehtuuri 10.9.2014
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...
Network to Get Work. Tehtäviä opiskelijoille Assignments for students. www.laurea.fi
Network to Get Work Tehtäviä opiskelijoille Assignments for students www.laurea.fi Ohje henkilöstölle Instructions for Staff Seuraavassa on esitetty joukko tehtäviä, joista voit valita opiskelijaryhmällesi
Kuvankäsi/ely. Vieraana Jorma Laaksonen Tietotekniikan laitos. Viikko Luento Ope-ajat Harjoitus 7: Tietoliikenteen signaalinkäsi/ely
Kuvankäsi/ely Vieraana Jorma Laaksonen Tietotekniikan laitos Aikataulu Viikko Luento Ope-ajat Harjoitus 7: 26.10- Tietoliikenteen Prof. Risto Wichman Tietoliikenteen 8:2.11- Kuvankäsi/ely Jorma Laaksonen
Johdanto. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.
TIE303 Formaalit menetelmät, kevät 2005 Johdanto Antti-Juhani Kaijanaho antkaij@mit.jyu.fi Jyväskylän yliopisto Tietotekniikan laitos TIE303 Formaalit mentetelmät, 2005-01-17 p. 1/17 TIE303 Formaalit menetelmät
Computing Curricula 2001 -raportin vertailu kolmeen suomalaiseen koulutusohjelmaan
Computing Curricula 2001 -raportin vertailu kolmeen suomalaiseen koulutusohjelmaan CC1991:n ja CC2001:n vertailu Tutkintovaatimukset (degree requirements) Kahden ensimmäisen vuoden opinnot Ohjelmistotekniikan
Co-Design Yhteissuunnittelu
Co-Design Yhteissuunnittelu Tuuli Mattelmäki DA, associate professor Aalto University School of Arts, Design and Architecture School of Arts, Design and Architecture design with and for people Codesign
Information on Finnish Language Courses Spring Semester 2018 Päivi Paukku & Jenni Laine Centre for Language and Communication Studies
Information on Finnish Language Courses Spring Semester 2018 Päivi Paukku & Jenni Laine 4.1.2018 Centre for Language and Communication Studies Puhutko suomea? -Hei! -Hei hei! -Moi! -Moi moi! -Terve! -Terve
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ä
Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä
hyväksymispäivä arvosana arvostelija Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä Tuomas Husu Helsinki 20.2.2010 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö i 1 Johdanto
812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton
2015 syksy 2. vsk IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Sisältö 1. Johdanto luontimalleihin 2. Proxy 3. Factory Method 4. Prototype 5. Singleton Suunnittelumallit Proxy et.
Efficiency change over time
Efficiency change over time Heikki Tikanmäki Optimointiopin seminaari 14.11.2007 Contents Introduction (11.1) Window analysis (11.2) Example, application, analysis Malmquist index (11.3) Dealing with panel
Suunnitteluvaihe prosessissa
Suunnittelu Suunnitteluvaihe prosessissa Silta analyysin ja toteutuksen välillä (raja usein hämärä kumpaankin suuntaan) Asteittain tarkentuva Analyysi -Korkea abstraktiotaso -Sovellusläheiset käsitteet
JUJUPRIX 2015. Kalle Tuominen & Timo Mäkeläinen Markkinointiviestinnän suunnittelutoimisto Mainio Oy. kalle@mainiota.fi timo.makelainen@mainiota.
JUJUPRIX 2015 Kalle Tuominen & Timo Mäkeläinen Markkinointiviestinnän suunnittelutoimisto Mainio Oy kalle@mainiota.fi timo.makelainen@mainiota.fi Tampere matkailukohteena. Tampere on Pohjoismaiden suurin
Choose Finland-Helsinki Valitse Finland-Helsinki
Write down the Temporary Application ID. If you do not manage to complete the form you can continue where you stopped with this ID no. Muista Temporary Application ID. Jos et onnistu täyttää lomake loppuun
Voice Over LTE (VoLTE) By Miikka Poikselkä;Harri Holma;Jukka Hongisto
Voice Over LTE (VoLTE) By Miikka Poikselkä;Harri Holma;Jukka Hongisto If you are searched for a book by Miikka Poikselkä;Harri Holma;Jukka Hongisto Voice over LTE (VoLTE) in pdf form, then you have come
TIEA255 Tietotekniikan teemaseminaari ohjelmointikielet ja kehitysalustat. Antti-Juhani Kaijanaho. 16. helmikuuta 2011
TIEA255 Tietotekniikan teemaseminaari ohjelmointikielet ja kehitysalustat Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 16. helmikuuta 2011 Sisällys Sisällys Ohjelmointikieli? programming language n. a
Avoimen lähdekoodin kehitysmallit
Avoimen lähdekoodin kehitysmallit Arto Teräs Avoimen lähdekoodin ohjelmistot teknisessä laskennassa -työpaja CSC, 25.5.2009 Avoimen lähdekoodin kehitysmallit / Arto Teräs 2009-05-25
Akateemiset fraasit Tekstiosa
- Väitteen hyväksyminen Broadly speaking, I agree with because Samaa mieltä jostakin näkökulmasta One is very much inclined to agree with because Samaa mieltä jostakin näkökulmasta Yleisesti ottaen olen
Capacity Utilization
Capacity Utilization Tim Schöneberg 28th November Agenda Introduction Fixed and variable input ressources Technical capacity utilization Price based capacity utilization measure Long run and short run
MUSEOT KULTTUURIPALVELUINA
Elina Arola MUSEOT KULTTUURIPALVELUINA Tutkimuskohteena Mikkelin museot Opinnäytetyö Kulttuuripalvelujen koulutusohjelma Marraskuu 2005 KUVAILULEHTI Opinnäytetyön päivämäärä 25.11.2005 Tekijä(t) Elina
Ohjelmistotekniikan pääaine
Ohjelmistotekniikan pääaine Ari Korhonen 7.11.2012 Ohjelmistotekniikan opetus! Tietotekniikan laitoksessa tutkitaan ja opetetaan laajaalaisesti tieto- ja ohjelmistotekniikan menetelmiä ja niiden soveltamista.
Results on the new polydrug use questions in the Finnish TDI data
Results on the new polydrug use questions in the Finnish TDI data Multi-drug use, polydrug use and problematic polydrug use Martta Forsell, Finnish Focal Point 28/09/2015 Martta Forsell 1 28/09/2015 Esityksen
Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys
Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty
Business Opening. Arvoisa Herra Presidentti Very formal, recipient has a special title that must be used in place of their name
- Opening Finnish Norwegian Arvoisa Herra Presidentti Very formal, recipient has a special title that must be used in place of their name Hyvä Herra, Formal, male recipient, name unknown Hyvä Rouva Formal,
Infrastruktuurin asemoituminen kansalliseen ja kansainväliseen kenttään Outi Ala-Honkola Tiedeasiantuntija
Infrastruktuurin asemoituminen kansalliseen ja kansainväliseen kenttään Outi Ala-Honkola Tiedeasiantuntija 1 Asemoitumisen kuvaus Hakemukset parantuneet viime vuodesta, mutta paneeli toivoi edelleen asemoitumisen
T SEPA - päiväkirja: Design Patterns. ETL työkalu
T-76.115 SEPA - päiväkirja: Design Patterns ETL työkalu Versio Päivämäärä Tekijä Kuvaus 1.0 25.10.2004 Jani Honkanen PP-vaiheen jälkeinen versio 1,1 26.11.2004 Mika Suvanto I1- vaiheen kokemuksia lisätty
Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä
Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,
812336A C++ -kielen perusteet, 21.8.2010
812336A C++ -kielen perusteet, 21.8.2010 1. Vastaa lyhyesti seuraaviin kysymyksiin (1p kaikista): a) Mitä tarkoittaa funktion ylikuormittaminen (overloading)? b) Mitä tarkoittaa jäsenfunktion ylimääritys
ASCII-taidetta. Intro: Python
Python 1 ASCII-taidetta All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/18cplpy to find out what to do.
Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1
Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri 2 28.11.2008 Harri Laine 1 Ohjelmistoarkkitehtuuri Rajapinta UML:ssä piirteiden (attribuuttien ja operaatioiden) kokoelma, josta ei voi suoraan luoda ilmentymiä
Lapin Rovaniemen moduuli 2 verkko-opiskelijoiden kysymyksiä tetoimiston virkailijoiden tapaamiseen AC-huoneessa:
Lapin Rovaniemen moduuli 2 verkko-opiskelijoiden kysymyksiä tetoimiston virkailijoiden tapaamiseen AC-huoneessa: Koulutukseen ja Te-toimiston rooliin liittyviä kysymykset: 1. Olen yli 30-vuotias mutta
Information on Finnish Courses Autumn Semester 2017 Jenni Laine & Päivi Paukku Centre for Language and Communication Studies
Information on Finnish Courses Autumn Semester 2017 Jenni Laine & Päivi Paukku 24.8.2017 Centre for Language and Communication Studies Puhutko suomea? -Hei! -Hei hei! -Moi! -Moi moi! -Terve! -Terve terve!
Tietojenkäsittelytieteiden koulutusohjelma. Tietojenkäsittelytieteiden laitos Department of Information Processing Science
Tietojenkäsittelytieteiden koulutusohjelma Tietojenkäsittelytieteet Laskennallinen data-analyysi Ohjelmistotekniikka, käyttöjärjestelmät, ihminen-kone -vuorovaikutus Teoreettinen tietojenkäsittelytiede
13/20: Kierrätys kannattaa koodaamisessakin
Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy
TIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA341 Funktio-ohjelmointi 1, kevät 2008 Aloitusluento Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 7. tammikuuta 2008 Aikataulu Luennot salissa Ag C231.1: ma klo 10 12, to klo 14-16
Kaivostoiminnan eri vaiheiden kumulatiivisten vaikutusten huomioimisen kehittäminen suomalaisessa luonnonsuojelulainsäädännössä
M a t t i K a t t a i n e n O T M 1 1. 0 9. 2 0 1 9 Kaivostoiminnan eri vaiheiden kumulatiivisten vaikutusten huomioimisen kehittäminen suomalaisessa luonnonsuojelulainsäädännössä Ympäristöoikeustieteen
Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta 21.12.200 7
Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta 21.12.200 7 Mikä on IT arkkitehtuuri? Liiketoimintamalli määrittelee IT arkkitehtuurin IT arkkitehtuuri ottaa kantaa sovelluksen laadullisiin vaatimuksiin
Tiedonlouhinta rakenteisista dokumenteista (seminaarityö)
Tiedonlouhinta rakenteisista dokumenteista (seminaarityö) Miika Nurminen (minurmin@jyu.fi) Jyväskylän yliopisto Tietotekniikan laitos Kalvot ja seminaarityö verkossa: http://users.jyu.fi/~minurmin/gradusem/
Ohjelmistotekniikan menetelmät, kesä 2008
582101 - Ohjelmistotekniikan menetelmät, kesä 2008 1 Ohjelmistotekniikan menetelmät Methods for Software Engineering Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön
Travel General. General - Essentials. General - Conversation. Asking for help. Asking if a person speaks English
- Essentials Voisitko auttaa minua? Asking for help Puhutko englantia? Asking if a person speaks English Puhutteko _[kieltä]_? Asking if a person speaks a certain language En puhu _[kieltä]_. Clarifying
Uusia kokeellisia töitä opiskelijoiden tutkimustaitojen kehittämiseen
The acquisition of science competencies using ICT real time experiments COMBLAB Uusia kokeellisia töitä opiskelijoiden tutkimustaitojen kehittämiseen Project N. 517587-LLP-2011-ES-COMENIUS-CMP This project
Käytettävyyslaatumallin rakentaminen web-sivustolle. Oulun yliopisto tietojenkäsittelytieteiden laitos pro gradu -suunnitelma Timo Laapotti 28.9.
Käytettävyyslaatumallin rakentaminen web-sivustolle Tapaus kirjoittajan ABC-kortti Oulun yliopisto tietojenkäsittelytieteiden laitos pro gradu -suunnitelma Timo Laapotti 28.9.2005 Kirjoittajan ABC-kortti
Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg
Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg Matematiikan ja tilastotieteen laitos Tietojenkäsittelytieteen laitos Kisällioppiminen = oppipoikamestari
Information on Finnish Language Courses Spring Semester 2017 Jenni Laine
Information on Finnish Language Courses Spring Semester 2017 Jenni Laine 4.1.2017 KIELIKESKUS LANGUAGE CENTRE Puhutko suomea? Do you speak Finnish? -Hei! -Moi! -Mitä kuuluu? -Kiitos, hyvää. -Entä sinulle?
Cover letter and responses to reviewers
Cover letter and responses to reviewers David E. Laaksonen, MD, PhD, MPH Department of Medicine Kuopio University Hospital Kuopio, Finland Luennon sisältö Peer review Vinkit vastineiden kirjoittamista
Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet. TIES341 Funktio-ohjelmointi 2 Kevät 2006
Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet TIES341 Funktio-ohjelmointi 2 Kevät 2006 Alkuperäislähteitä Philip Wadler & Stephen Blott: How to make ad-hoc polymorphism less ad-hoc,
Ohjelmistoarkkitehtuurit kevät
Ohjelmistoarkkitehtuurit Kevät 2011-2012 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Esimerkki:
BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET.
BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET. Pekka Ollikainen Open Source Microsoft CodePlex bio Verkkosivustovastaava Suomen Sarjakuvaseura
COTOOL dokumentaatio SEPA: Refaktorointi
Table of Contents Refaktorointi................................................................................ 1 1 Tehtävänanto.............................................................................
Hankkeiden vaikuttavuus: Työkaluja hankesuunnittelun tueksi
Ideasta projektiksi - kumppanuushankkeen suunnittelun lähtökohdat Hankkeiden vaikuttavuus: Työkaluja hankesuunnittelun tueksi Erasmus+ -ohjelman hakuneuvonta ammatillisen koulutuksen kumppanuushanketta
Arkkitehtuurinen reflektio
Arkkitehtuurinen reflektio Toni Ruokolainen Toni.Ruokolainen@cs.helsinki.fi Helsinki 6.10.2003 Tiivistelmä HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET
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
CALL TO ACTION! Jos aamiaistilaisuudessa esillä olleet aiheet kiinnostavat syvemminkin niin klikkaa alta lisää ja pyydä käymään!
CALL TO ACTION! Jos aamiaistilaisuudessa esillä olleet aiheet kiinnostavat syvemminkin niin klikkaa alta lisää ja pyydä käymään! Monikanavaisen viestinnän mittaaminen: https://www.vapamedia.fi/mittaaminen/
Ohjelmistojen mallintaminen, kesä 2010
582104 Ohjelmistojen mallintaminen, kesä 2010 1 Ohjelmistojen mallintaminen Software Modeling Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön tuntemus Ohjelmoinnin
Integration of Finnish web services in WebLicht Presentation in Freudenstadt 2010-10-16 by Jussi Piitulainen
Integration of Finnish web services in WebLicht Presentation in Freudenstadt 2010-10-16 by Jussi Piitulainen Who we are FIN-CLARIN University of Helsinki The Language Bank of Finland CSC - The Center for
Hyvä ja paha pelillistäminen
Hyvä ja paha pelillistäminen Kalle Huhtala, kehitysjohtaja @Kalle_Huhtala #pelillistäminen #gamification #vvop2014 A NORDIC MORNING COMPANY Hyvässä hypessä Big Data Sosiaalinen media työelämässä Gamification/
Rekisteröiminen - FAQ
Rekisteröiminen - FAQ Miten Akun/laturin rekisteröiminen tehdään Akun/laturin rekisteröiminen tapahtuu samalla tavalla kuin nykyinen takuurekisteröityminen koneille. Nykyistä tietokantaa on muokattu niin,