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

Browsing by department "Tietojenkäsittelytieteen osasto"

Sort by: Order: Results:

  • Pitkänen, Jukka (2020)
    Tässä tutkielmassa perehdytään alati viime vuosina suosiota projektinhallintamenetelmänä kasvattaneisiin ketteriin ohjelmistokehitysmenetelmiin (eng. Agile software development). Tutkielman on tarkoitus palvella ennen kaikkea ammatinharjoittajia heidän punnitessaan mahdollista siirtymistä ketteriin kehitysmenetelmiin ja tarjota jo valinnan tehneille lisänäkökulmia keskusteluun. Tutkimusmenetelmänä on käytetty kirjallisuuskatsausta. Tutkielman tulokset kertovat, että vastaus ei ole yksiselitteinen, vaan ammatinharjoittajien on otettava monta tekijää huomioon valinnassaan hyödyntää tai olla hyödyntämättä ketteriä ohjelmistokehitysmenetelmiä, ja useimmiten lopullinen käytännössä toimiva malli on yhdistelmä perinteisimmistä ja ketteristä ohjelmistokehitysmenetelmistä. ACM Computing Classification System (CCS): Software and its engineering → Agile software development
  • Hietanen, Päivi (2020)
    Ketteryyden Julistus (Agile Manifesto) vuonna 2001 herätti monet organisaatiot uudistamaan ohjelmistotuotantoaan ja ketteriä menetelmiä käytetään nykyisin laajalti ohjelmistotuotannossa. Ketterän lähestymistavan käsitteistö on sangen moninaista, ja ketterän ohjelmistotuotannon lähtökohdat ja motiivit ovat organisaatioilla erilaiset. Tämä tutkielma tarkastelee ketterän lähestymistavan käsitteistöä, hyödyntämistä ohjelmistotuotannossa ja sen parantamisessa. Tutkielma on retrospektiivinen analyysi tapaustutkimuksesta. Tapaustutkimuksen kohteena oli ohjelmistotuotantoyritys, jolla oli vuonna 2005 tavoitteena parantaa projektinhallinnan ja ohjelmistotuotannon prosessien laatua. Lähtökohta oli prosessikeskeinen, prosessien kypsyystasot oli arvioitu ja yrityksellä oli käytössään laatujärjestelmä. Tapausyrityksen eräässä yksikössä oli kiinnostusta selvittää ketterän lähestymistavan hyödyntämismahdollisuuksia ohjelmistotuotannossaan ja sen parantamisessa. Tapaustutkimuksessa selvitettiin, voisiko yksikkö hyödyntää ketteriä periaatteita ohjelmistoprojektiensa parantamisessa. Empiirisessä tutkimuksessa selvitettiin, mitkä ketteryyden julistuksesta yritykselle muotoillut periaatteet voisivat soveltua tapausyrityksen yksikön ohjelmistotuotannossa esiintyvien haasteiden ratkaisemiseksi ja tukisivat myös yksikön asetettujen ohjelmistotuotannon parantamisen tavoitteita. Empiiriset havainnot osoittivat, että tapausyrityksen yksikkö pystyi hyödyntämään joitakin ketteriä käytäntöjä tarpeisiinsa. Samalla nousi esiin, että ohjelmistotuotannossa esiintyvät haasteet olivat kytkennässä osittain organisaation muihin prosesseihin. Parantamistoimien vaikuttavuus olisi saattanut olla vahvempi, jos toimet olisivat olleet mahdollisia muissakin prosessialueissa tai yksiköissä. ACM Computing Classification System (CCS) Software and its engineering → Software creation and management → Software development process management → Software development methods → Agile software development Software and its engineering → Software creation and management → Designing software ->Software design engineering
  • Kettunen, Lilja (2019)
    Pro gradu -tutkielman tavoitteena oli selvittää kognitiivisten vinoumien eli systemaattisten ajatusvirheiden ilmenemistä ja vaikutusta ohjelmistotuotannossa. Kognitiiviset vinoumat ovat sisäsyntyinen ilmiö, jotka voivat heikentää ohjelmistokehittäjien päätöksentekokykyä ja siten vaikuttaa toteutettavan ohjelmiston laatuun. Toisaalta kognitiivisista vinoumista voi olla myös hyötyä; niiden ansiosta kehittäjät kykenevät tekemään nopeita ja intuitiivisia päätöksiä. Tutkielma toteutettiin systemaattisena kirjallisuuskatsauksena. Tutkielmassa selvitettiin, millä tavoin kognitiiviset vinoumat voivat esiintyä ohjelmistotuotannon eri vaiheissa; vaatimusmäärittelyssä, suunnittelussa, toteutuksessa ja testauksessa. Tutkielmassa kartoitettiin myös keinoja, joilla kognitiivisten vinoumien oletettuja haitallisia vaikutuksia voitaisiin vähentää. Kognitiivisilla vinoumilla havaittiin olevan tulosten perusteella useita eri vaikutuksia ohjelmistokehityksessä. Vinoumat voivat esimerkiksi vääristää työmääräarvioita, aiheuttaa ohjelmointivirheitä tai johtaa puutteelliseen testaamiseen. Keinoja vinoumien vähentämiseksi olivat tulosten mukaan koulutus, tekniset menetelmät sekä tehtävän tai ympäristön muokkaaminen niin, että päätöksentekijä käyttää tehtävään sopivia luontaisia ongelmanratkaisustrategioita. Monet vinoumien vähentämiskeinot olivat vain ehdotuksia eikä niitä ollut tutkittu kokeellisesti, joten keinojen kehittämisen ja niiden tehokkuuden selvittämisen havaittiin vaativan lisää tutkimusta.
  • Väänänen, Krista (2020)
    Kotlin on vuonna 2016 virallisesti julkaistu ja viime aikoina paljon suosiota saanut ohjelmointikieli. Se muistuttaa paljon Javaa, mutta on syntaksiltaan tiiviimpää. Kotlinissa on olio-ohjelmointipiirteiden lisäksi funktionaalisen ohjelmoinnin piirteitä. Tämän tutkielman tarkoitus oli selvittää konsulttiyritys Solitan kehittäjien kokemuksia ja ajatuksia Kotlinista. Lisäksi tutkittiin, soveltuisiko Kotlin laajemmin käytettäväksi ohjelmistokehityksessä yrityksessä, ja voisiko sillä korvata Javaa projekteissa. Tutkimusaineisto kerättiin kyselylomakkeen ja teemahaastatteluiden avulla. Aineisto analysoitiin sisällönanalyysin ja kvantifioinnin menetelmillä. Tutkimuksen tulokset olivat saman suuntaiset aiempien Kotlinista tehtyjen tutkimusten kanssa. Tuloksena oli, että kokemusten perusteella Kotlin soveltuu käytettäväksi ohjelmistokehityksessä. Siirtymä Javasta Kotlinin käyttöön on helppoa, sillä kielten syntaksi ja monet ominaisuuksista ovat samanlaisia. Kotlinissa on kuitenkin Javaan verrattuna monia Javaa parempia ominaisuuksia. Lisäksi Kotlinin käyttö lisää tuottavuutta ja parantaa koodin laatua. Tulosten pohjalta voidaan arvioida, että Kotlinilla voi korvata Javaa ohjelmistoprojekteissa.
  • Tuomala, Tero (2020)
    Tutkielmassa käydään yleisellä tasolla läpi DevOps- ja SRE (Site Reliability Engineering)-menetelmät ja tutkitaan miten niitä voidaan hyödyntää nykyaikaisessa ohjelmistokehityksessä erityisesti automatisoinnin ja mittaamisen osalta. Tutkielmassa käydään myös läpi erilaisia teknologioita, kuten kontit, virtuaalikoneet, serverless, Docker, konttien orkestrointi ja Kubernetes. Lisäksi tutkielmassa selvitetään infrastruktuuri koodina (engl. "Infrastructure as Code") lähestymistapaa infrastruktuurin automatisointiin ja GitOps-menetelmää toteuttaa jatkuvaa toimitusta (engl. "Continuous Deployment") pilvisovelluksille. Tutkielman aikana kehitettiin selvitettyjä menetelmiä ja teknologioita hyödyntäen Kubernetes-klusterin automatisoitu käyttöönotto Google Cloud Platform -alustan tarjoaman Google Kubernetes Enginen päälle. Tutkielmassa toteutettiin myös esimerkkiluontoinen web-palvelu, johon kuuluu asiakassovellus, REST-rajapinta, GraphQL-palvelin, Redis-välimuistipalvelu ja PostgreSQL-tietokanta. Web-palvelun kehittämistä varten toteutettiin paikallinen Kubernetes-kehitysympäristö. Tutkielmassa toteutettiin myös web-palvelun jatkuva toimitus Google Kubernetes Enginen päällä toimivaan Kubernetes-klusteriin käyttämällä GitOps-menetelmää. Lisäksi tutkielmassa toteutettiin web-palvelun REST-rajapintaa ja GraphQL-palvelinta varten luodut kuvitteelliset mittarit ja palvelutasotavoitteet. Tutkielman aikana toteutetuilla Kubernetes-klusterin automatisoidulla käyttöönotolla infrastruktuuri koodina menetelmällä ja esimerkkiluontoisen web-palvelun jatkuvalla toimituksella Kubernetes-klusteriin GitOps-menetelmää hyödyntämällä luotiin pohjaa työkaluille ja menetelmille, joita voisi tulevaisuudessa hyödyntää myös muillekin Kuberneteksessa toimiville sovelluksille.
  • Paalanen, Jussi (2020)
    On paljon tutkittua tietoa siitä, miten ohjelmistotuotannossa saadaan tuotettua laatua. Korkeaan laatuun tähtääminen ei kuitenkaan ole itsestäänselvyys: tutkijan kokemuksen mukaan IT:n ja liiketoiminnan rajapinnassa tehdään toistuvasti päätöksiä, joiden myötä laadun ideaaleista joustetaan. Lisäksi laatuun saattavat vaikuttaa tiedostamatta tehdyt ratkaisut ja matkan varrella kohdatut yllätykset. Tämän tutkimuksen tarkoituksena oli kartoittaa laatua haastavia ilmiöitä ohjelmistotuotannon päätöksenteossa ja tuoda siten uutta näkökulmaa alalla laadusta käytävään keskusteluun. Konkreettisina tavoitteina oli tunnistaa ja käsitteellistää kyseisiä ilmiöitä ja selvittää niiden esiintyvyyttä valikoiduissa ohjelmistotuotannon viitekehyksissä. Tutkimuksen tietoperusta muodostettiin laatua, IT:n hallinnointia ja päätöksentekoa käsittelevästä kirjallisuudesta sekä seuraavista ohjelmistotuotannon viitekehyksistä: ISO/IEC 250nn -laatustandardisarja SQuaRE, COBIT, IT4IT, TOGAF, SWEBOK, PMBOK. Tutkimuksen menetelmälliseksi lähtökohdaksi valittiin laadullinen tutkimusote. Aineisto kerättiin haastattelemalla kuutta pitkään IT-alalla eri tehtävissä työskennellyttä asiantuntijaa. Menetelmänä hyödynnettiin teemahaastattelua, ja aineisto analysoitiin sisällönanalyysin keinoin. Analyysin tuloksena löydettiin joukko laatua haastavia ilmiöitä, jotka käsitteellistettiin ja ryhmiteltiin kahdeksaksi kokonaisuudeksi: niukkuus, tiedon määrä ja laatu, tekninen velka, ulkoisen ympäristön muutos, tietojärjestelmän kriittisyys, tulevaisuudenkestävyys, omistajuus ja proaktiivisuus sekä kognitiiviset vinoumat. Käsitteiden muodostamisessa ja tulosten syventämisessä hyödynnettiin ilmiöihin liittyvää kirjallisuutta. Jälkimmäisessä vaiheessa käsitteitä peilattiin ohjelmistotuotannon viitekehyksiin. Keskeinen tulos oli, että työn arjessa kohdataan ohjelmistotuotannon laatuun vaikuttavia ilmiöitä, joita valitut viitekehykset eivät tunnista. Erityisesti tekninen velka ja kognitiiviset vinoumat ovat laajalti tunnettuja ja tutkittuja ilmiöitä, joita tarkastelun kohteeksi valituissa viitekehyksissä ei kuitenkaan käsitellä. Tutkimus toimii yhdenlaisena alkukartoituksena laatua haastaviin ilmiöihin ohjelmistotuotannon päätöksenteossa. Sen tuloksia voidaan hyödyntää IT:n ja liiketoiminnan yhteistyön tukena. Jatkotutkimusehdotuksena esitetään muun muassa löydettyjen ilmiöiden tarkastelemista syvemmin omina kokonaisuuksinaan.
  • Paalanen, Jussi (2020)
    On paljon tutkittua tietoa siitä, miten ohjelmistotuotannossa saadaan tuotettua laatua. Korkeaan laatuun tähtääminen ei kuitenkaan ole itsestäänselvyys: tutkijan kokemuksen mukaan IT:n ja liiketoiminnan rajapinnassa tehdään toistuvasti päätöksiä, joiden myötä laadun ideaaleista joustetaan. Lisäksi laatuun saattavat vaikuttaa tiedostamatta tehdyt ratkaisut ja matkan varrella kohdatut yllätykset. Tämän tutkimuksen tarkoituksena oli kartoittaa laatua haastavia ilmiöitä ohjelmistotuotannon päätöksenteossa ja tuoda siten uutta näkökulmaa alalla laadusta käytävään keskusteluun. Konkreettisina tavoitteina oli tunnistaa ja käsitteellistää kyseisiä ilmiöitä ja selvittää niiden esiintyvyyttä valikoiduissa ohjelmistotuotannon viitekehyksissä. Tutkimuksen tietoperusta muodostettiin laatua, IT:n hallinnointia ja päätöksentekoa käsittelevästä kirjallisuudesta sekä seuraavista ohjelmistotuotannon viitekehyksistä: ISO/IEC 250nn -laatustandardisarja SQuaRE, COBIT, IT4IT, TOGAF, SWEBOK, PMBOK. Tutkimuksen menetelmälliseksi lähtökohdaksi valittiin laadullinen tutkimusote. Aineisto kerättiin haastattelemalla kuutta pitkään IT-alalla eri tehtävissä työskennellyttä asiantuntijaa. Menetelmänä hyödynnettiin teemahaastattelua, ja aineisto analysoitiin sisällönanalyysin keinoin. Analyysin tuloksena löydettiin joukko laatua haastavia ilmiöitä, jotka käsitteellistettiin ja ryhmiteltiin kahdeksaksi kokonaisuudeksi: niukkuus, tiedon määrä ja laatu, tekninen velka, ulkoisen ympäristön muutos, tietojärjestelmän kriittisyys, tulevaisuudenkestävyys, omistajuus ja proaktiivisuus sekä kognitiiviset vinoumat. Käsitteiden muodostamisessa ja tulosten syventämisessä hyödynnettiin ilmiöihin liittyvää kirjallisuutta. Jälkimmäisessä vaiheessa käsitteitä peilattiin ohjelmistotuotannon viitekehyksiin. Keskeinen tulos oli, että työn arjessa kohdataan ohjelmistotuotannon laatuun vaikuttavia ilmiöitä, joita valitut viitekehykset eivät tunnista. Erityisesti tekninen velka ja kognitiiviset vinoumat ovat laajalti tunnettuja ja tutkittuja ilmiöitä, joita tarkastelun kohteeksi valituissa viitekehyksissä ei kuitenkaan käsitellä. Tutkimus toimii yhdenlaisena alkukartoituksena laatua haastaviin ilmiöihin ohjelmistotuotannon päätöksenteossa. Sen tuloksia voidaan hyödyntää IT:n ja liiketoiminnan yhteistyön tukena. Jatkotutkimusehdotuksena esitetään muun muassa löydettyjen ilmiöiden tarkastelemista syvemmin omina kokonaisuuksinaan.
  • Käki-Mäkelä, Joni (2020)
    Tutkielmassa käydään läpi pelien perusrakennuspalikat, joiden laskennallinen tuottaminen on mahdollista erilaisten tekniikoiden avulla. Lisäksi tutkielmassa selvitetään, mikä on tekoälyn rooli peleissä, ja millaisia tekoälyjärjestelmiä peleissä on. Tutkielmassa tarkastellaan laskennallisen sisällöntuotannon ja tekoälyn eri tekniikoita eri perspektiiveistä. Lisäksi tehdään katsaus eri pelien ja pelimoottorien tarjoamiin tekoälyjärjestelmiin. Tutkielmassa on myös esitelty laskennallinen sisällöntuotanto, ja selvitetty miten talojen pohjapiirustuksia voidaan toteuttaa laskennallisesti. Tutkielmaa varten on toteutettu algoritmi talon pohjapiirustusten laskennalliseen tuotantoon ja arvioitu sen sopivuutta sisällöntuotannon keinona.
  • Tuura, Tommi (2020)
    Computers and computer networks have permeated public and private life across the planet. Billions of people are using seemingly centralized computer systems around the globe. These systems are expected to be always on, always available, and at least in some sense consistent in what kind of status they see users’ data to be in. The only way to build such large-scale systems is by distributing the data and computation to a multiple computers connected by networks. Such distribution will inevitably need to overcome a problem of consensus as all computers and their communication channels are human-made machinery and therefore subject to non-zero chance of hardware and software failures. This thesis is a survey of some well-known consensus protocols that have been proposed or deployed in practice to solve this problem. We cover Paxos, Viewstamped Replication, Zookeeper Atomic Broadcast and Raft and also skim through the general idea of the consensus algorithm proposed by Tushar Deepak Chandra and Sam Toueg in their work on failure detectors which is an important theoretical piece under every other consensus protocol we survey here. We also discuss the real-world usage these protocols have. This survey assumes trusted administrative domain for all protocol participants, therefore byzantine solutions and zero-trust solutions with blockchain are considered out of scope of this work.
  • Viiri, Kalle (2020)
    Locally checkable labeling problems in the LOCAL model of distributed computation are known to have only three distinct complexity classes when the attention is restricted to problems on toroidic grids only: trivial with time complexity Θ(1), local with time complexity Θ(log∗ n) and global with time complexity Θ(n). Prior work shows that problems belonging to the trivial class are easy to recognize, but that local and global labeling problems are undecidable to separate. However, a method called algorithm synthesis exists for creating an asymptotically optimal normal-form algorithm for any locally checkable labeling problem with a time complexity of Θ(log∗ n). This process, when automated, can be used to process vast amounts of suitably encoded labeling problems in bulk, creating a more defined boundary for the undecidable class of local problems. As a proof-of-concept of this method, this work presents a new asymptotically optimal algorithm for a relaxed form of 3-coloring as well as methods for more general search of local problems.
  • Lärfors, Jacob (2020)
    DevOps is an ever growing trend in software development and it conveys a mindset that all things should be continuous. Interestingly, one of the common challenges with DevOps adoption is related to software architecture and this is in large due to the fact that architecture is not part of DevOps. This thesis looks at making software architecture a continuous practice and thus bring it into the DevOps space. A prototype solution, Architector, was implemented to solve this and the results indicate that it shows a viable approach to making software architecture a continuous practice. However, further work is necessary to expand the scope of continuous architecture and to fully validate this claim by applying Architector to a real world software development workflow.
  • Iltanen, Henri (2020)
    Anomaly detection is an important task in many domains such as maritime where it is used to detect, for example, unsafe, unexpected or criminal behaviour. This thesis studies the use of deep autoencoders for anomaly detection on high dimensional data in an unsupervised manner. The study is performed on a benchmark data set and a real-life AIS (Automatic Tracking System) data set containing actual ship trajectories. The ships’ trajectories in the AIS data set are a form of time-series data, and therefore recurrent layers are used in an autoencoder to allow the model to capture temporal dependencies in the data. An autoencoder is a neural network architecture where an encoder network produces an encoding and decoder network takes the encoding intending to produce the original input. An encoding is a compressed fixed-sized vector presentation of the original input. Since the encoding is used by the decoder to construct the original input, the model learns during the training process to store essential information of the input sequence to the encoding. Autoencoders can be used to detect anomalies using reconstruction error by assuming that a trained autoencoder is able to reconstruct non-anomalius data points more accurately than anomalous data points, and therefore data points with high reconstruction error can be considered anomalies. In addition to reconstruction error, the autoencoders produce encodings. The research of this thesis studies the possibility of calculating an outlier score for the encodings and combining the score with resconstruction error to form a combined outlier score. OPTICS-OF (Ordering Points to Identify the ClusteringStructure with Outlier Factors) is a density based anomaly detection technique which can be used to calculate outlier scores for the encodings. The outlier score of OPTICS-OF for a data point is based on how isolated it is within its neighbourhood. The proposed method is evaluated on a benchmark Musk data set for which anomalies are known. A data set with labelled anomalies provides a setting for analyzing the performance of the method and its properties. The method is then put to the test on the AIS data set where it is used to find new anomalies in the data set from two derived distinct feature sets. The AIS data set contains one known anomaly which is presented both as an example of a maritime anomaly and for which more detailed analysis of the produced outlier scores are presented. The results of the study show potential for the proposed combined score method, and the analysis identifies multiple areas for further research. Deep autoencoders are successfully used to find new anomalies from the AIS data set which show actual behaviour deviating from normal ship movement.
  • Touronen, Ville (2019)
    In this thesis the GraphQL query language was studied in the context of the microservice architecture. The thesis was a combination of a literary study and expert interviews. Most prevalent microservice architecture patterns were gathered from peer reviewed studies and grey literature. Four expert interviews were held to detect which patterns were used in projects which used a microservice architecture and GraphQL APIs. Based on the interviews, a typical GraphQL microservice architecture consists of up to 10 REST or GraphQL microservices exposed to public networks using a GraphQL API gateway. The studied microservice architectures typically had a flat structure where a GraphQL API gateway exposed the other microservices in a protected network, which used a persistence layer to store data. Most of the microservice architectures seemed to rely on synchronous communication patterns, using a platform provided service discovery mechanisms to implement load balancing. The most prominent authorization mechanism was to use web tokens via an authorization header. An aggregating GraphQL service seemed to work well as an API gateway layer, which exposes the functionality of underlying microservices to clients. A pattern called schema stitching was successfully used in some of the interviewed projects to automatically combine multiple microservice GraphQL schemas together. Overall the interviewed developers had a positive experience using GraphQL in their projects. The API exploration tools and built-in documentation enabled by the GraphQL schema introspection functionality made client application development easier.
  • Halkilahti, Joonas (2020)
    Ohjelmistoalalle on muodostunut lukuisia metriikoita, joiden avulla ohjelmistotiimin suorituskykyä on mahdollista seurata eri sidosryhmien näkökulmasta. Ketterässä ohjelmistotuotannossa tiimien tutkimus on saanut yhä enemmän huomiota, kun muiden alojen tutkimuksen ansiosta on huomattu, että ryhmä ihmisiä pystyy yhdessä tiimityöskentelyn avulla saamaan aikaan enemmän kuin jos henkilöt työskentelisivät erillään ja työn tulokset yhdistettäisiin. Tiimityöskentelyllä on todettu olevan vaikutuksia myös ohjelmistotiimin suorituskykyyn. Suorituskykyyn vaikuttavien tekijöiden tunnistaminen on tärkeää, kun organisaatiot pyrkivät muodostamaan tiimejä, jotka suoriutuvat tehtävistään hyvin, mahdollisesti jopa kilpailijoitaan paremmin. Tässä tutkielmassa on tutkittu sekä kirjallisuuden että tapaustutkimuksen avulla miten erilaiset metriikat voivat tukea ketteriä ohjelmistotiimejä sekä tiimien suorituskykyä. Haastattelemalla kahden eri ohjelmistokehitystiimin henkilöitä muodostui havainto, että monet jo aiemmin tunnistetut yleisesti käytetyt suorituskyvyn mittarit ovat yhä käytössä. Mittaustuloksia voidaan seurata iteraatiosta toiseen, jolloin tiimin suorituskyvyn muutosta valittujen metriikoiden valossa voidaan seurata. Tiimien käyttämien metriikoiden välillä havaittiin myös eroja, joka osittain selittyi sillä, minkälaisiin tavoitteisiin tiimin tulee pystyä vastamaan. Empiirisen tapaustutkimuksen tulosten pohjalta saatiin myös vahvistusta tutkimustiedolle siitä, että osa metriikoista palvelee vain rajattua joukkoa ohjelmistoprojektien sidosryhmistä. Ohjelmistotiimeillä on valittavinaan useita metriikoita, joiden avulla voidaan kuvata tiimin suorituskykyä eri sidosryhmille. Tiimin suorituskykyä henkilö- sekä tiimintyöskentelytasolla kuvaavia metriikoita ei havaittu tapaustutkimuksen tuloksissa. Juuri näiden pehmeiden metriikoiden tunnistaminen ja tutkiminen kentällä olisi mielenkiintoista jatkossa, kun yritetään ymmärtää ohjelmistotiimin suorituskykyä ja siihen vaikuttavia tekijöitä kokonaisuutena. ACM Computing Classification System (CCS): Software and its engineering -> Software creation and management -> Software development process management -> Software development methods Software and its engineering -> Software creation and management -> Collaboration in software development -> Programming teams General and reference -> Cross-computing tools and techniques
  • Salmenkivi, Essi (2020)
    This work introduces a system for generating radio play scripts. Generating dramatic dialogue presents unique challenges in language generation. In addition to fluency of language, dramatic text should exhibit plot and characters' affective stances to each other and events. Character relationships and affect may be expressed beneath the surface level of everyday conversation topics. In the affect-driven dialogue generation system introduced by this thesis, characters have goals, relationships and a three-dimensional model of mood which influences their behaviour. Given conflicting goals, characters will navigate the web of conversation, making choices that influence others to accept their goal while simultaneously trying to maintain the relationship to others. Characters react emotionally to each others' speech acts and express their own affective state in how they speak. The system separates the form of a sentence from its content, allowing the system to generate a wide range of coherent, dramatic conversations by combining affect-expressing sentence templates with goal-expressing content. Because content and form are independent from each other, only a finite number of sentence templates need to be prepared to generate conversations about any content.
  • Kestilä, Veli-Pekka (2020)
    This Masters Thesis compares Elixir, Go and JavaScript (Node.js) as programming language candi- dates for writing concurrent RESTful webservice backends. First we describe each of the languages. Next we compare the functional concurrency characteristics of the languages to each other. Finally we do scalability testing for each of the languages. Scalability testing is done using the Locust.io framework. For testing purposes we introduce for simple REST-api implementations for each of the languages. Result from the tests was that JavaScript performed the worst of the languages and Go was the most verbose language to program with.
  • Hoya Quecedo, José María (2019)
    The problem of morphological ambiguity is central to many natural language processing tasks. In particular, morphologically rich languages pose a unique challenge due to the large number of possible forms some words can take. In this work, we implement and evaluate a method for morphological disambiguation of morphologically rich languages. We use deep learning techniques to build a disambiguation model and leverage existing tools to automatically generate a training data set. We evaluate our approach on the Finnish, Russian and Spanish languages. For these languages, our method surpasses the state-of-the-art results for the tasks of part-of-speech and lemma disambiguation.
  • Mäki, Timo (2020)
    Ohjelmien virheettömyys ja oikeellinen toiminta on tärkeää ohjelmistokehityksessä. Verifioinnilla voidaan estää ohjelmistojen virheet ennen kuin niihin törmätään ohjelman suorituksessa. Ohjelmien verifioinnissa ohjelmasta luodaan aluksi malli, ja tämän jälkeen malli tarkastetaan ohjelman formaalia määrittelyä vasten. Erääksi johtavaksi verifiointitekniikaksi on noussut predikaattiabstraktio, jossa ohjelmasta luodaan abstrakti malli. Tässä ohjelman suoritusta approksimoidaan joukolla valittuja predikaatteja, jotka voivat sallia suorituspolkuja joita ohjelmassa ei oikeasti ole. Predikaattiabstraktion tehokkuus perustuu siihen, että vaikka abstraktissa mallissa onkin sallivampia suorituspolkuja, abstraktio voi silti riittää sulkemaan virhetilat pois. Löyhemmät predikaatit voivat tehdä mallista tehokkaamman tarkastaa suhteessa tarkkaan malliin. Hyvien predikaattien valitseminen on huomattava haaste. Yleisin valintaan käytettävä tekniikka perustuu vastaesimerkkeihin, jotka ovat virhetilaan johtaneita suorituspolkuja. Predikaattiabstraktiossa verifioinnin tehokkuutta yritetään parantaa vähentämällä virheellisten vastaesimerkkien määrää, jotta oikeaan lopputulokseen päästään nopeammin. Tämä tehdään muun muassa vähentämällä raskasta toteutuvuuden tarkistamista, ja välttämällä käymästä uudelleen läpi jo verifioituja ohjelman osia abstraktion tarkentamisen jälkeen. CPAchecker on modulaarinen mallintarkastusohjelma. Se voi esimerkiksi ajaa predikaattiabstraktiota ja muita tekniikoita samanaikaisesti, ja yhdistää niiden tuottamaa tietoa virhetilojen poissulkemiseen. Lisäksi CPAcheckerissä standardoidut rajapinnat antavat mahdollisuuden sellaiseen vertailuun eri tekniikoiden välillä, jossa voidaan tarkasti arvioida yksittäisen tekniikan vaikutuksia ohjelman tehokkuuteen. Predikaattiabstraktioon liittyy monia tekniikoita, joilla pyritään parantamaan sen tehokkuutta. Kaikissa näissä tekniikoissa on myös heikkouksia, sillä niiden laskemiseen kuluu aikaa, eivätkä ne välttämättä vähennä tarkastusaikaa. Näiden heikkouksien vuoksi tutkielmassa on myös vertailua eri tekniikoista ja niiden tehokkuusvaikutuksista.
  • Arkkila, Nicolas (2020)
    Software development as knowledge work has many related stressors. The work is mentally very demanding and requires skills to detect, cope with and evade stressors from both the developer themselves and the entire surrounding organization. Developers also have high responsibility in their work, because the effects of the work can be tremendous and the quality of the work must be constantly upheld by software developers themselves. In this Master’s thesis an occupational healthcare survey was created specifically for software developers. This survey was conducted and its results analyzed. The survey focuses on software development related stressors observed by a work group creating the survey and discovered from a literature review that may cause excessively negative impact on the software development process and to the wellbeing of developers. The goal was to explore if modern occupational healthcare services provide adequate service for developers and if a demographically targeted survey could be helpful in the software development process as well as in occupational healthcare.
  • Joentausta, Johanna (2020)
    Ohjelmointiopetus ja ohjelmoinnillinen ajattelu on vuonna 2016 käyttöön otetun peruskoulun opetussuunnitelman uusia ja kantavia teemoja. Kouluissa ei ole aiemmin systemaattisesti opetettu ohjelmointia kaikille. Oppilaiden lisäksi myös koulut ja opettajat ovat uuden opettelemisen edessä. Tarvittava kyvykkyys sekä oppilailta että opettajilta jo löytyy. Osaamisen kokemuksen yksi keskeinen tekijä on minäpystyvyys, usko siihen, että pystyy suoriutumaan käsillä olevasta asiasta. Tämä ei ole yhteydessä todelliseen taitotasoon, mutta ilman minäpystyvyyden tunnetta kaikkia taitoja ei saa käyttöön. Tutkimuksessa käsitellään koululaisten minäpystyvyyttä ohjelmointiin tutustumisen yhteydessä. Tutkimukseen osallistui peruskoulun 3.-luokkalaisia (n=47), joille pidettiin oppitunnin mittainen alkeisohjelmointitunti. Tunnilla pelattiin Lightbot-peliä eri tavoin ohjeistettuna: yhdellä ryhmällä oli pelkät pelin ohjeet, toisella ryhmällä oli vaihettaisia ohjeita ja kolmannella ryhmällä oli väliotsikoituja vaiheittaisia ohjeita. Tutkimuksen perusteella lyhyt ohjelmointitunti ei kasvattanut koululaisten minäpystyvyyttä ohjelmoijana. Vaiheittaiset ohjeet eivät vaikuttaneet pelissä etenemiseen tilastollisesti merkitsevällä tavalla suhteessa pelin omiin ohjeisiin, mutta väliotsikoitujen vaiheittaisten ohjeiden avulla koululaiset pääsivät etenemään pelissä merkittävästi pidemmälle.