Skip to main content
Login | Suomeksi | På svenska | In English

Browsing by discipline "Computer science"

Sort by: Order: Results:

  • Lindgren, Eveliina (2015)
    An experiment-driven approach to software product and service development is getting increasing attention as a way to channel limited resources to the efficient creation of customer value. In this approach, software functionalities are developed incrementally and validated in continuous experiments with stakeholders such as customers and users. The experiments provide factual feedback for guiding subsequent development. Although case studies on experimentation conventions in the industry exist, an understanding of the state of the practice is incomplete. Furthermore, the obstacles and success factors of continuous experimentation have been little discussed. To these ends, an interview-based qualitative survey was conducted, exploring the experimentation experiences of ten software development companies. The study found that although the principles of continuous experimentation resonated with industry practitioners, the state of the practice was not mature. In particular, experimentation was rarely systematic and continuous. Key challenges related to changing organizational culture, accelerating development cycle speed, measuring customer value and product success, and securing resources. Success factors included an empowered organizational culture and deep customer and domain knowledge. There was also a good availability of technical tools and competence to support experimentation.
  • Barral, Oswald (2013)
    This thesis goes further in the study of implicit indicators used to infer interest in documents for information retrieval tasks. We study the behavior of two different categories of implicit indicators: fixation-derived features (number of fixations, average time of fixations, regression ratio, length of forward saccades), and physiology (pupil dilation, electrodermal activity). Based on the limited number of participants at our disposal we study how these measures react when addressing documents at three different reading rates. Most of the fixation-derived features are reported to differ significantly when reading at different speeds. Furthermore, the ability of pupil size and electrodermal activity to indicate perceived relevance is found intrinsically dependent on speed of reading. That is, when users read at comfortable reading speed, these measures are found to be able to correctly discriminate relevance judgments, but fail when increasing the addressed speed of reading. Therefore, the outcomes of this thesis strongly suggest to take into account reading speed when designing highly adaptive information retrieval systems.
  • Rissanen, Olli (2014)
    Delivering more value to the customer is the goal of every software company. In modern software business, delivering value in real-time requires a company to utilize real-time deployment of software, data-driven decisions and empirical evaluation of new products and features. These practices shorten the feedback loop and allow for faster reaction times, ensuring the development is focused on features providing real value. This thesis investigates practices known as continuous delivery and continuous experimentation as means of providing value for the customers in real-time. Continuous delivery is a development practice where the software functionality is deployed continuously to customer environment. This process includes automated builds, automated testing and automated deployment. Continuous experimentation is a development practice where the entire R&D process is guided by conducting experiments and collecting feedback. As a part of this thesis, a case study is conducted in a medium-sized software company. The research objective is to analyze the challenges, benefits and organizational aspects of continuous delivery and continuous experimentation in the B2B domain. The data is collected from interviews conducted on members of two teams developing two different software products. The results suggest that technical challenges are only one part of the challenges a company encounters in this transition. For continuous delivery, the company must also address challenges related to the customer and procedures. The core challenges are caused by having multiple customers with diverse environments and unique properties, whose business depends on the software product. Some customers also require to perform manual acceptance testing, which slows down production deployments. For continuous experimentation, the company also has to address challenges related to the customer and organizational culture. An experiment which reveals value for a single customer might not reveal as much value for other customers due to unique properties in each customers business. Additionally, the speed by which experiments can be conducted is relative to the speed by which production deployments can be made. The benefits found from these practices support the case company in solving many of its business problems. The company can expose the software functionality to the customers from an earlier stage, and guide the product development by utilizing feedback and data instead of opinions.
  • Paavilainen, Topi (2018)
    Minimum-cost minimum path cover is a graph-theoretic problem with an application in gene sequencing problems in bioinformatics. This thesis studies decomposing graphs as a preprocessing step for solving the minimum-cost minimum path cover problem. By decomposing graphs, we mean splitting graphs into smaller pieces. When the graph is split along the maximum anti-chains of the graph, the solution for the minimum-cost minimum path cover problem can be computed independently in the small pieces. In the end all the partial solutions are joined together to form the solution for the original graph. As a part of our decomposition pipeline, we will introduce a novel way to solve the unweighted minimum path cover problem and with that algorithm, we will also obtain a new time/space tradeoff for reachability queries in directed acyclic graphs. This thesis also includes an experimental section, where an example implementation of the decomposition is tested on randomly generated graphs. On the test graphs we do not really get a speedup with the decomposition compared to solving the same instances without the decomposition. However, from the experiments we get some insight on the parameters that affect the decomposition's performance and how the implementation could be improved.
  • Coe, Patrick (2015)
    The project worked on goes by the name of 'ForcePhone II.' It follows in the footsteps of the previous 'ForcePhone' project developed by Nokia Research and the Helsinki Institute of Information Technology. [HSH12] The original ForcePhone took pressure feedback from a caller who would squeeze a phone, in this case a Nokia N900 with a built in pressure sensor, and then would send the receiver differing strengths of vibration based on the strength of the squeeze. A stronger squeeze would deliver a stronger vibration. Our task with the ForcePhone II is to investigate how other forms of haptic input and feedback can be used to increase communication bandwidth. To do this we built a prototype that would go by the name of 'ForcePhone II.' This prototype allows us to research and experiment alternative forms of haptic feedback. The prototype includes a heating pad on the backside of the device, a rope that tightens over the users hand on the side, and a vibrating motor inside. In our experiment we will be testing user's reactions to the outputs of pressure, vibration, and heat. This is to answer our central research question: Is pressure and/or heat a useful alternative to the existing 'silent' stimuli provided by today's phones?
  • Lantto, Anttijuhani (2015)
    Suuri osa nykyisistä sovelluksista on selaimella käytettäviä web-sovelluksia. Eräs web-sovellusten suurimmista haasteista on tapahtumien käsittely, joka sisältää suuren osan sovelluksen virheistä. Funktionaalinen reaktiivinen ohjelmointi pyrkii selkeyttämään tapahtumienkäsittelyä ja sovelluksen tilan automaattista päivitystä. Funktionaalinen reaktiivinen ohjelmointi tarjoaa tähän kaksi työkalua: signaalit ja tapahtumavirrat. Signaalit ovat automaattisesti päivittyviä arvoja, joiden avulla sovelluksen käyttöliittymä voidaan pitää automaattisesti päivitettynä. Tapahtumavirrat ovat ajan mukaan järjestettyjä kokoelmia tapahtumia. Tapahtuman tapahtuessa se lisätään tapahtumavirtaan ja käsitellään. Tapahtumavirroille voidaan tehdä funktionaalisen ohjelmoinnin kokoelmien käsittelyn tyylisiä operaatioita. Tutkielmassa esitellään funktionaalisen reaktiivisen ohjelmoinnin periaatteet ja käsitellään tarkemmin Javascriptillä tehdyistä funktionaalisen reaktiivisen ohjelmoinnin toteutuksista RxJS ja Bacon.js. Funktionaalinen reaktiivinen ohjelmointi on selvä edistysaskel yksinkertaisista pelkkiin takaisinkutsuihin perustuvista ratkaisuista. Se parantaa sovellusten ylläpidettävyyttä, laajennettavuutta ja selkeyttää ohjelmakoodia. Useimpien sovellusten kehittämisessä käytetään sovelluskehyksiä. Sovelluskehysten tavoitteet ovat usein yhteneväisiä funktionaalisen reaktiivisen ohjelmoinnin kanssa, eli ne pyrkivät selkeyttämään tapahtumien käsittelyä, yhtenäistämään rajapintoja ja selkeyttämään sovellusten rakennetta. Tutkielmassa esimerkkisovelluskehyksenä on AngularJS. AngularJS toteuttaa monia reaktiivisuuden piirteitä ja sitä voidaan käyttää yhdessä Bacon.js:n ja RxJS:n kanssa. Funktionaalista reaktiivista ohjelmointia voidaan käyttää yhdessä sovelluskehysten kanssa, mutta sovelluskehysten kanssa funktionaalisen reaktiivisen ohjelmoinnin hyöty jää pienemmäksi. Monimutkaisen tapahtuman käsittelyn yhteydessä funktionaalisen reaktiivisen ohjelmoinnin käyttö voi olla järkevää, vaikka sovelluksessa olisikin sovelluskehys käytössä.
  • Pitkänen, Kaarlo (2014)
    Tietokonepelit on jo pitkään luotu käyttäen lähes yksinomaan imperatiivisia ohjelmointikieliä, kuten C++- ja C#-kieltä. Toisaalta tiedetään, että funktionaalisessa ohjelmoinnissa esimerkiksi rinnakkaisuuden hallinta sekä ohjelmien testaus on usein helpompaa kuin imperatiivisessa ohjelmoinnissa. Tämä on yksi syy, miksi funktionaalisen ohjelmoinnin soveltaminen peliohjelmointiin on herättänyt mielenkiintoa. Tässä pro gradu -tutkielmassa tarkastellaan funktionaalisen ohjelmoinnin soveltamista peliohjelmointiin. Sen jälkeen, kun on selostettu tutkielmassa käytettäviä ohjelmointitekniikoita, esitellään kaksi funktionaalista ohjelmointia hyväksi käyttävää ohjelmointikieltä Yampa ja Casanova. Näillä ohjelmointikielillä toteutetaan esimerkkipelit, joita verrataan imperatiivisella ohjelmointikielellä toteutettuun esimerkkipeliin. Vertailusta voidaan huomata, että funktionaalisia ohjelmointitekniikoita hyväksi käyttävät esimerkkipelit ovat sekä pelaajan että ohjelmoijan näkökulmasta laadullisesti vertailukelpoisia perinteisellä imperatiivisella ohjelmointikielellä toteutetun peliratkaisun kanssa.
  • Leppänen, Laura (2017)
    Tutkielma käsittelee funktionaalisille kielille tyypillisten piirteiden, ensimmäisen luokan funktioarvojen ja häntäkutsujen toteutusta oliokielille suunnatuilla JVM- ja .NET-virtuaalikonealustoilla. Oliokielille suunnattujen virtuaalikonealustojen tarjoamien tavukoodirajapintojen rajoitteet verrattuna matalamman tason assembly-kieliin ovat pitkään aiheuttaneet valtavirran oliokielistä poikkeavien kielten toteuttajille päänvaivaa. Tarkasteltavista alustoista .NET-alustan tavoitteena on alusta asti ollut monenlaisten kielten tukeminen. JVM-alustalla erilaisten kielten toteuttajien tarpeisiin on havahduttu vasta viimeisten vuosien aikana. Tutkielma tarkastelee, millaisia mahdollisuuksia alustat nykyisellään tarjoavat ensimmäisen luokan funktioarvojen ja häntäkutsujen toteuttajille ja miten alustoilla käytettävät toteutustekniikat poikkeavat perinteisistä konekieltä tuottavista kääntäjistä. Lisäksi esitetään arvio alustojen tarjoaman tuen soveltuvuudesta funktionaalisten kielten toteuttajien käyttöön ja verrataan alustojen tarjoamia tukitoimintoja. Arvioinnin tueksi esitellään oma prototyyppitoteutus Scheme-kielen osajoukolle, Cottontail Scheme, sekä selvitetään, millaisia toteutustekniikoita olemassa olevat funktionaaliset kielet tai funktionaalisia piirteitä tukevat moniparadigmakielet tällä hetkellä käyttävät virtuaalikonealustoilla. Tutkielmassa tehdyn vertailun perusteella havaittiin, että molemmilla alustoilla on omat vahvuutensa: JVM-alustan sulkeumien tuki on parantunut huomattavasti erityisesti JVM-alustan Java SE 8 -version myötä, mutta .NET-alusta on edelleen ainoa alusta, joka tarjoaa sisäänrakennettua tukea häntäkutsuille. Olemassa olevien kielten vertailussa huomattiin, että harva kielistä hyödyntää ominaisuuksien toteutuksessa alustan tukea, mikä saattaa esimerkiksi JVM-alustan sulkeumatuen tapauksessa johtua yksinomaan toiminnallisuuden tuoreudesta. Kummankaan alustoista ei havaittu tällä hetkellä tarjoavan selvästi toista parempaa tukea esimerkiksi Schemen kaltaisten funktionaalisten kielten toteuttajille.
  • Ye, Yina (2015)
    Gesture recognition is a fundamental technology for understanding human behavior and providing natural human-computer interaction, of which the need has been boosted by the popularity of ubiquitous systems and applications. Currently, there are mainly two classes of gesture recognition approaches: parametric methods and the template matching methods. Although both approaches provide accurate recognition performance, the former is usually highly constrained in time and resources, while the latter is limited within a small range of gesture types that are simple and distinct from each other. The objective of the thesis is to present a novel stroke-based gesture recognition solution, Gestimator, that recognizes dynamic hand gestures with high accuracy, run-time efficiency, and ease for customization, considering a wide range of complexity, ambiguity, and difficulty for user to perform the gesture. A stroke-wise elastic gesture matching framework alongside an adaptive sequence segmentation technique were developed for improving recognition accuracy. We conducted extensive evaluations using three datasets that included pen-based command gestures, character gestures, and mid-air gestures collected from a user authentication experiment. Results from extensive benchmark evaluations prove that Gestimator achieves higher overall accuracy, compared with three state-of-the-art gesture recognizers, dealing with both touch-screen based gestures (98:9%) and spatial gestures (96:61%). Results also show that Gestimator outperforms baseline methods on recognizing ambiguous gestures.
  • Tompuri, Seppo (2014)
    Tietokonepelit on kehitetty perinteisesti joko pöytätietokoneille tai pelikonsoleille. Räjähdysmäisesti kasvaneet mobiilipelimarkkinat ovat kuitenkin haastaneet nämä pelialustat. Mobiilipelien kehitys tapahtuu usein samalla tyylillä kuin pöytätietokoneille ja pelikonsoleille, vaikka niistä löytyy pöytätietokoneista ja pelikonsoleista poikkeavaa tekniikkaa, joka mahdollistaa perinteisestä poikkeavan käyttäjäsyötteen. Nykyaikaisista mobiililaitteista löytyy muun muassa erilaisia ympäristöä tarkkailevia sensoreita sekä usein myös GPS-vastaanotin. GPS-vastaanotin tarjoaa pelin käyttöön pelaajan sijaintitiedon. Sensorit puolestaan tarkkailevat mobiililaitteen ympäristöä, kuten mobiililaitteen kiihtyvyyksiä kolmessa ulottuvuudessa. Sensoreilta saatua dataa voidaan käyttää käyttäjäsyötteessä joko suoraan tai muokattuna. Niiltä saadun datan avulla on myös mahdollista päätellä pelaajan tekemät eleet, jotka voidaan hahmontunnistuksen avulla sitoa osaksi pelin käyttäjäsyötettä. Tällainen mobiililaitteiden mahdollistama uudenlainen käyttäjäsyöte mahdollistaa uudenlaisia peligenrejä, jotka käyttävät pelaajan liikettä ja sijaintitietoa osana pelimekaniikkaa. Tämä työ esittelee ne pelimoottorin osat jotka ovat mukana GPS- ja sensoridatan keräämisessä ja käsittelyssä sekä esittelee tässä työssä suunnitellun GPS- ja sensoridataa hyödyntävän arkkitehtuurimallin mobiililaitteille. Työssä perehdytään aluksi aiheeseen liittyviin käsitteisiin sekä pelin reaaliaikaisuudesta huolehtivaan pelisilmukkaan ja sen erilaisiin arkkitehtuurimalleihin. Tämän jälkeen käydään läpi pelimoottorien suoritusaikaisesta arkkitehtuurista ne puolet, jotka liittyvät GPS- ja sensoridatan keräämiseen. Lopuksi esitellään ja arvioidaan tässä työssä suunniteltu arkkitehtuurimalli GPS- ja sensoridatan hyödyntämiselle mobiililaitteiden pelimoottoriarkkitehtuurissa. Työn ohessa tämän ehdotetun mallin toimivuus todennetaan Windows Phone 8 laitealustalle tehdyllä toteutuksella ja tämän toteutuksen lähdekoodia käytetään apuna ehdotetun mallin esittelyssä.
  • Vasilev, Nikolay (2016)
    Vuosien 2007–2009 finanssikriisi mullisti isojen rahoituslaitosten riskipolitiikan. Henkivakuutus- ja sijoitustoimintaa harjoittavien konsernien valvontaa on tiukennettu entisestään, ja riskienhallintaan on kiinnitetty entistä paljon enemmän huomiota. Riskianalyysi on kuitenkin pitkä ja laskennallisesti raskas prosessi, johon sisältyy erilaisten riskimittojen arviointi ja mahdollisesti salkun tasapainottaminen. Value at Risk (lyh. VaR) on hyvin suoraviivainen tapa mitata sijoitussalkun kokonaisriskiä – se kertoo salkun pahimman tappion tietyllä luottamustasolla. Tappion arvioiminen voi olla kuitenkin vaikeaa, sillä sijoituspankkien ja henkivakuutusyhtiöiden valtavat salkut tietävät monimutkaisia laskelmia, jotka puolestaan vaativat suurta laskentatehoa ja vievät paljon aikaa. Tämän takia on viime aikoina yritetty tehostaa riskilaskentaan käytettäviä ohjelmia muun muassa näytönohjainten tarjoamaa massiivista rinnakkaisuutta hyödyntämällä. Tässä opinnäytetyössä tutustutaan käsitteeseen VaR sekä numeerisiin menetelmiin sen mittaamiseen, ja tutkitaan rinnakkaislaskennan NVIDIA:n CUDA-ohjelmointikehyksellä saatavia nopeutuksia. Osoitetaan, että joissakin tapauksissa suoritusaika voi pudota murto-osaan entisestään, ja tarkastellaan, kuinka tärkeä rooli tiedonsiirrolla ja muistiviittauksilla voi olla nopeutuksen kannalta. Vähentämällä tiedonsiirtoja ja tehostamalla GPU-laitteen muistinhallintaa tässä työssä saadaan 7,8x-kertainen nopeutus verrattuna tavalliseen prosessoritoteutukseen.
  • Tantarimäki, Mika (2015)
    Grafiikkaprosessorin avustama järjestäminen on hyödyllistä tilanteissa, joissa keskusyksikkö ei pysty järjestämään syötettä riittävän nopeasti, tai jos syöte on jo valmiiksi grafiikkaprosessorin muistissa muun laskennan yhteydessä. Tässä työssä käydään läpi pikajärjestämisen, kantalukujärjestämisen ja lomitusjärjestämisen peräkkäin toimivat algoritmit ja selitetään uusimpien tutkimusten perusteella, kuinka niitä sovelletaan grafiikkaprosessorille rinnakkain suoritettavaksi. Lomitusvaihtojärjestäminen toteutettiin CUDA-alustalle ja sen suorituskykyä verrattiin Thrust-kirjaston lomitus- ja kantalukujärjestämistoteutuksiin. Mittausten mukaan lomitusvaihtojärjestäminen on keskusyksikössä toimivaa pikajärjestämistä nopeampi, mutta se ei pärjää suorituskyvyssä kirjaston toteutuksiin, kun syötteen alkioiden lukumäärä kasvatetaan. Lisäksi mitattiin, miten syötteen alkioiden koon muuttaminen vaikuttaa mainittujen kolmen toteutuksen järjestämisnopeuksiin. Kokeiden mukaan kantalukujärjestäminen on nopein, kun alkiot ovat muutaman tavun kokoisia, mutta alkioiden koon kasvaessa lomitusjärjestäminen menee suorituskyvyssä edelle.
  • Kopperi, Hanna (2016)
    Terveydenhuollon toimialan yksi suurimmista ongelmista on potilastietojen pirstaloituminen ja kykenemättömyys niiden toimivaan jakamiseen terveydenhuollon palveluita tarjoavien organisaatioiden välillä. Tästä ongelmasta johtuen terveydenhuollon ammattilaisten on hoitotilanteessa vaikea saada selkeää kuvaa yksittäisen potilaan koko potilashistoriasta. Tämän tutkielman tavoitteena on esitellä kaksi erilaista edellä kuvattuun ongelmaan kehitettyä ratkaisua ja vertailla näiden tarjoamia ratkaisumalleja. Ensimmäinen esiteltävä ratkaisumalli on Suomeen kehitetty Kansaneläkelaitoksen Kansallisen terveysarkiston palveluihin kuuluva Potilastiedon arkisto. Potilastiedon arkisto tarjoaa kaikille terveydenhuollon organisaatioille yhteisen, keskitetyn sähköisen potilastietojen käyttöarkiston. Sen avulla terveydenhuollon ammattihenkilökunnalla on mahdollisuus nähdä yli organisaatiorajojen ne potilasta koskevat tutkimus- ja hoitotiedot, joiden luovutukselle potilas on antanut suostumuksensa. Toinen tutkielmassa esiteltävä hajallaan olevan potilastiedon hallintaan kehitetty ratkaisu on Integrating the Healthcare Enterprise (IHE) -organisaation kehittämä IHE Cross-Enterprise Document Sharing (IHE XDS) -ratkaisumalli. IHE XDS:n tarjoamassa ratkaisumallissa terveydenhuollon palveluita tarjoavat organisaatiot muodostavat yhteneviä toimialueita, joissa noudatetaan yhteisesti sovittuja toimintatapoja ja käytäntöjä. IHE XDS perustuu hajautettuun ratkaisumalliin, jossa jokainen potilastietoja julkaiseva terveydenhuollon palveluita tarjoava organisaatio arkistoi julkaisemansa asiakirjat omaan tietovarastoonsa ja muut organisaatiot pääsevät käsiksi näihin asiakirjoihin yhteisen rekisterin kautta. Ratkaisumallien vertailun näkökulmiin sisältyy muun muassa ratkaisumallien käytännön erot, Potilastiedon arkisto tarjoaa mallin toteutuksesta ja IHE XDS tarjoaa teknisen viitekehyksen. Muita vertailun näkökulmia ovat ratkaisumallien asiakirjojen haku- ja käsittelymenetelmien eroavaisuudet, yhtäläisyydet ja puutteet sekä ratkaisumallien arkkitehtuuristen ratkaisujen eroavaisuudet.
  • Moilanen, Ilari (2016)
    Ihmisten käyttäytyminen internetissä voi määräytyä hyvin sattumanvaraisesti. Esimerkiksi sosiaalisen median kautta uudet ja kiinnostavat asiat voivat levitä hyvinkin nopeasti usealle eri ihmiselle. Jos sisällönjakaja ei ole varautunut, tai pystynyt varautumaan esimerkiksi rahallisista syistä, piikkeihin kysynnässä, niin odottamaton kiinnostus voi vaikuttaa palvelun laatuun tai jopa estää palvelun kokonaan. Esimerkkinä tilanteesta, jossa sisällön jakaja ei pysty täysin varautumaan äkkinäiseen resurssitarpeeseen, otetaan pieni videonjakopalvelu. Palvelua käyttää pieni vakiokäyttäjien joukko, jonka palveluun tarvittavan resurssimäärän yksittäinen palvelin pystyy hyvin tarjoamaan. Jos tällaisessa tilanteessa yksittäinen video menee viraaliksi sosiaalisessa mediassa ja käyttäjäkunta nousee hetkellisesti siihenastisesta maksimaalisesta ruuhkahuipusta 10-1000 -kertaiseksi, voi palvelin kaatua kokonaan tai ainakaan se ei pysty tarjoamaan ainoallekaan käyttäjälle palvelua. Jopa perinteinen sisällönjakeluverkko (CDN, content distribution network) auttaa huonosti tilanteeseen, jossa syntynyt salamajoukko (flash crowd) on vahvasti paikkaan sidottu ilmiö. Sisällönjakeluverkossa tieto jakaantuu kyllä suuremmalle maantieteelliselle alueelle kuin vain yksittäiseen keskuskoneeseen, mutta kun tarvitaan paljon kapasiteettia pienemmässä, vahvasti lokaalissa, paikallisessa osassa ei sisällönjakeluverkko olekaan enää paras ratkaisu ongelmaan. Tässä pro gradu -tutkielmassa keskitytään tutkimaan miten hyvin rajatuilla resursseilla varustettu palveluntarjoaja pystyisi rakentamaan suorituskykyisen videonjakopalvelun hajautetulla sisällönjakelulla. Samalla varmistetaan, että mahdollisen salamajoukon aiheuttaman käyttäjäpiikin aiheuttama ongelma ei johda palvelun kaatumiseen. Ratkaisuvaihtoehdoissa keskitytään käyttäjille hajautettuun ratkaisuun, koska palvelinkapasiteettia nimenomaan ei haluta lisätä. Jos pienemmillä resursseilla varustetut yksityishenkilöt voisivat ylläpitää omia palveluitaan halvalla ratkaisulla, saavutettaisiin monia etuja. Näitä etuja ovat muun muassa mahdollisen sensuurin väheneminen, yksityisyyden suoja, kilpailun mahdollistaminen, sopeutumiskyky ja virheiden sietokyky.
  • Hirvonen, Anna (2014)
    Suurten tietomäärien käsittely peräkkäisessä tietovarastossa on tehotonta, minkä seurauksena käyttäjän kyselyiden vasteajat ovat kohtuuttoman pitkät. Viime vuosina markkinoille on ilmestynyt joukko massiivisesti rinnakkaisia tietovarastoja, joissa kysely käsitellään rinnakkain useassa pisteessä. Hajautetuissa tietovarastoissa tiedon määrän lisääntyessä kyselyiden vasteaikojen tulisi pysyä ennallaan lisäämällä pisteiden määrää. Kyselynoptimoinnin tavoitteena on lyhentää kyselyiden vasteaikoja. Täten hajautetun tietovaraston kyselynoptimoinnissa optimoidaan kyselynkäsittelyn lisäksi tietovaraston skaalautuvuutta. Kyselynoptimoinnissa minimoidaan leyoperaatioiden ja kommunikoinnin määrää. Hajautetussa tietovarastossa kyselyn käsittely on optimaalista, kun pisteet käsittelevät kyselyn relaatioiden erillisiä paloja täysin itsenäisesti. Tällöin kyselyn käsittelyssä ei esiinny kommunikoinnin eikä laskennan toistoa. Käytännössä monimutkaisten kyselyiden käsittely vaatii kuitenkin tiedon hajauttamista uudelleen kyselynkäsittelyn aikana useaan kertaan. Kommunikoinnin ja laskennan toistoa voidaan vähentää optimoimalla tietovaraston hajautuskaavioita ja kyselynkäsittelyn algoritmeja. Tietoanalyyseissa tietovarasto mallinnetaan usein tietokuutiona, jonka koosteista materialisoidaan osa kyselynkäsittelyn nopeuttamiseksi. Materialisoituvat näkymät ja hakemistot luodaan tiettyjen kyselyiden käsittelyä varten, minkä takia ne tukevat heikosti ad-hoc-kyselyitä. Materialisoituvat näkymät vaativat myös paljon tallennustilaa ja ne kallistavat huomattavasti tietovaraston päivitystä. Kaupallisissa massiivisesti rinnakkaisissa tietovarastoissa, kuten Redshiftissä ja Verticassa, tieto tallennetaankin sarakkeittain, mikä parantaa kyselynkäsittelyn suorituskykyä yleisesti. Kyseiset tietovarastot eivät käytä lainkaan materialisoituvia näkymiä. Tässä tutkielmassa tarkastellaan kyselynoptimoinnin menetelmiä hajautettuihin tietovarastoihin, jotka on toteutettu yksityislevyjärjestelminä. Akateemisista tutkimuksista ja kaupallisista järjestelmistä päätellen hajautetun relaatiopohjaisen tietovaraston suorituskyvyn kannalta tärkeimpiä optimoinnin kohteita ovat tiedon hajauttaminen ja rinnakkainen kyselynkäsittely. Täten tutkielmani pääpaino on tiedon hajauttamisen ja rinnakkaisen kyselynkäsittelyn optimoinnissa. Tietovaraston kyselyiden yleisimmistä operaatioista käsitellään liitokset ja ryhmittely. Tosiaikaisen tiedonjalostuksen menetelmistä tarkastellaan kuutiointioperaation ja tietokuution rinnakkaista laskentaa.
  • Huttunen, Janne (2015)
    Tässä työssä käsitellään sähköisiä potilaskertomuksia (EHR) sekä tiedonhakua niistä hakemistoja hyödyntäen. Aluksi työssä esitellään keskeisimmät sähköisten potilaskertomusten standardit, kuten HL7 versiot 2 ja 3, CDA ja IHE XDS sekä BPPC. Tämän jälkeen siirrytään tarkastelemaan tarkemmin potilastiedon hakemistoja. Työssä tarkastellaan erityisesti IHE XDS –profiilia, joka kuvaa hakemistoon perustuvan sähköisten potilaskertomusten tiedonvälitystavan potilastietojärjestelmien välillä. ebXML:ään pohjautuvan IHE XDS:n keskeiset komponentit ovat arkisto (Document repository), asiakirjahakemisto (Document registry), asiakirjan tuottaja (Document source) ja asiakirjan käyttäjä (Document consumer). Työssä kuvataan näiden eri komponenttien tehtävät hakemistossa. Työssä kuvataan myös potilaskertomusten hakemista käyttäen IHE XDS-hakemista sekä OWL- ja SPARQL –kieleliä. Työssä esitellään myös muutamia kansallisia potilaskertomusjärjestelmiä, kuten suomen KanTa –järjestelmä sekä Hollannin ja Singaporen kansallisia potilaskertomusten arkistot sekä yleiseurooppalainen epSOS-hanke. Pohdintaosiossa arvioidaan potilaskertomusten hakemiseen käytettävissä olevien menetelmien tehokkuutta.
  • Lehikoinen, Aaro (2018)
    Memory errors exist in software written in memory-unsafe languages like C. They introduce severe vulnerabilities in software. Vulnerabilities may even be exploited by attackers over the Internet and sometimes they can be used to gain complete control of computer systems. Exploitation of memory errors is usually not trivial, but requires building an attack that corrupts the memory carefully to achieve the attacker’s goal. Multiple defenses against memory attacks exist and modern systems have complete defenses in place against certain attack classes. All defenses cannot be applied to all systems, and they do not protect against all possible attacks. Data-Oriented Programming (DOP) attacks are a new class of attacks that utilize the target program’s existing code to perform malicious operations. DOP differs from other attacks like Return-Oriented Programming (ROP) by avoiding control-flow violations, making it impossible to prevent with control-flow defenses. We analyze existing DOP attacks and determine that their expressiveness in real-world programs requires violating C variable visibility rules. We introduce Run-time Scope Enforcement (RSE), a defense that enforces variable visibility rules at run time. In this thesis, we introduce HardScope, our hardware-assisted implementation of RSE. HardScope has an instrumentation engine that instruments C programs with code that maintains variable visibility rules during execution. The run-time platform is based on RISC-V and consists of instruction set extensions and new processor logic that performs the enforcement. Evaluation shows that HardScope has low performance overhead and that it defends against existing DOP attacks.
  • Jahnsson, Niklas (2015)
    Bayesian networks are graphical models used to represent the joint probability distribution for all variables in a data set. A Bayesian network can be constructed by an expert, but learning the network from the data is another option. This thesis is centered around exact score-based Bayesian network structure learning. The idea is to optimize a scoring function measuring the fit of the network to the data, and the solution represents an optimal network structure. The thesis adds to the earlier literature by extending an external memory frontier breadth-first branch and bound algorithm by Malone et al. [MYHB11], which searches the space of candidate networks using dynamic programming in a layered fashion. To detect duplicates during the candidate solution generation, the algorithm uses efficiently both semiconductor and magnetic disk memory. In-memory duplicate detection is performed using a hash table, while a delayed duplicate detection strategy is employed when resorting to the disk. Delayed duplicate detection is designed to work well against long disk latencies, because hash tables are currently still infeasible on disk. Delayed duplicate detection allows the algorithm to scale beyond search spaces of candidate solutions fitting only in the comparatively expensive and limited semiconductor memory at disposal. The sorting-based delayed duplicate detection strategy employed by the original algorithm has been found to be inferior to a hashing-based delayed duplicate strategy in other application domains [Kor08]. This thesis presents an approach to use hashing-based delayed duplicate detection in Bayesian network structure learning and compares it to the sorting-based method. The problem faced in the hashing of candidate solutions to disk is dividing the candidate solutions in a certain stage of the search in an efficient and scalable manner to files on the disk. The division presented in this thesis distributes the candidate solutions into files unevenly, but takes into account the maximum number of candidate solutions that can be held in the semiconductor memory. The method works in theory as long as operating system has free space and inodes to allocate for new files. Although the hashing-based method should in principle be faster than the sorting-based, the benchmarks presented in this thesis for the two methods show mixed results. However, the analysis presented also highlights the fact that by improving the efficiency of, for example, the distribution of hashed candidate solutions to different files, the hashing-based method could be further improved.
  • Vuorio, Petri (2016)
    Java-kielessä ohjelmaelementti voi olla saatavissa kaikkialla, vain aliluokissa sekä esittelevässä pakkauksessa, vain esittelevässä pakkauksessa tai vain esittelevässä luokassa. Saatavuustasojen jaottelua voidaan pitää karkeana. On olemassa tapauksia, joissa ohjelmaelementin saatavuuden täytyy olla laajempi kuin saatavuuden todellinen tarve vaatisi. Seurauksena abstraktioiden sisäiset toteutusyksityiskohdat ovat näkyvissä laajemmalle kuin on tarpeen, mikä yleensä johtaa ohjelman sisäisten riippuvuuksien lisääntymiseen heikentäen sen modulaarisuutta. Optimaalisen saatavuuden mahdollistamiseksi esitän ratkaisuksi kytkettävää pääsynvalvontaa. Se soveltaa kytkettävien tyyppijärjestelmien ideaa pääsynvalvontaan. Kytkettävä tyyppijärjestelmä on ohjelmointikielestä erillinen staattinen tyyppijärjestelmä, jonka toteutus on kytkettävissä tarpeen mukaan ohjelmointikieleen valinnaisena laajennoksena. Tutkielmassa esitän suunnitelmat kytkettävästä pääsynvalvontajärjestelmästä pääsymääreineen sekä kytkettävän pääsynvalvontakehyksen toteutuksesta Javalle. Osoitan kytkettävän pääsynvalvonnan mahdollistavan optimaalisen saatavuuden soveltamalla suunnittelemaani pääsynvalvontajärjestelmää tapauksiin, joissa Javan pääsynvalvontajärjestelmä osoittautuu karkeaksi. Kytkettävän pääsynvalvontakehyksen suunnitelman pohjalta rakennettu prototyyppi osoittaa ratkaisun olevan käytännössä toteutettavissa. Suunnitellut pääsymääreet hyödyntävät monipuolisesti erilaisia saatavuusperusteita. Yksinkertaisen perusarkkitehtuurin ansiosta eri pääsymääreiden yhteiskäyttö on ongelmatonta. Kytkettävä pääsynvalvonta osoittautuu ilmaisuvoimaiseksi ja valinnaisuutensa ansiosta joustavaksi välineeksi täydentämään ohjelmointikielen omaa pääsynvalvontaa.
  • Toivonen, Juhani (2015)
    Computation offloading can be used to leverage the resources of nearby computers to ease the computational burden of mobile devices. Cloudlets are an approach, where the client's tasks are executed inside a virtual machine (VM) on a nearby computing element, while the client orchestrates the deployment of the VM and the remote execution in it. Mobile devices tend to move, and while moving between networks, their address is prone to change. Should a user bring their device close to a better performing Cloudlet host, migration of the original Cloudlet VM might also be desired, but their address is then prone to change as well. Communication with Cloudlets relies on the TCP/IP networking stack, which resolves address changes by terminating connections, and this seriously impairs the usefulness of Cloudlets in presence of mobility events. We surveyed a number of mobility management protocols, and decided to focus on Host Identity Protocol (HIP). We ported an implementation, HIP for Linux (HIPL), to the Android operating system, and assessed its performance by benchmarking throughput and delay for connection recovery during network migration scenarios. We found that as long as the HIPL hipfw-module, and especially the Local Scope Identifier (LSI) support was not used, the implementation performed adequately in terms of throughput. On the average, the connection recovery delays were tolerable, with an average recovery time of about 8 seconds when roaming between networks. We also found that with highly optimized VM synthesis methods, the recovery time of 8 seconds alone does not make live migration favourable over synthesizing a new VM. We found HIP to be an adequate protocol to support both client mobility and server migration with Cloudlets. Our survey suggests that HIP avoids some of the limitations found in competing protocols. We also found that the HIPL implementation could benefit from architectural changes, for improving the performance of the LSI support.