Impact of software reuse on the software quality within Go ecosystem

Moderni ohjelmistokehitys nojautuu vahvasti ohjelmistojen uudelleenkäyttöön. Lähes jokaisen ohjelmointikielen ekosysteemistä löytyy paketinhallintaohjelmisto, joka helpottaa erilaisten kirjastojen sovittamista kehitettävään projektiin. Ohjelmointikehykset ovat niin arkipäiväistyneitä, että kokematto...

Full description

Bibliographic Details
Main Author: Haapasaari, Jari
Other Authors: Informaatioteknologian tiedekunta, Faculty of Information Technology, Informaatioteknologia, Information Technology, Jyväskylän yliopisto, University of Jyväskylä
Format: Master's thesis
Language:eng
Published: 2023
Subjects:
Online Access: https://jyx.jyu.fi/handle/123456789/91020
_version_ 1826225753709084672
author Haapasaari, Jari
author2 Informaatioteknologian tiedekunta Faculty of Information Technology Informaatioteknologia Information Technology Jyväskylän yliopisto University of Jyväskylä
author_facet Haapasaari, Jari Informaatioteknologian tiedekunta Faculty of Information Technology Informaatioteknologia Information Technology Jyväskylän yliopisto University of Jyväskylä Haapasaari, Jari Informaatioteknologian tiedekunta Faculty of Information Technology Informaatioteknologia Information Technology Jyväskylän yliopisto University of Jyväskylä
author_sort Haapasaari, Jari
datasource_str_mv jyx
description Moderni ohjelmistokehitys nojautuu vahvasti ohjelmistojen uudelleenkäyttöön. Lähes jokaisen ohjelmointikielen ekosysteemistä löytyy paketinhallintaohjelmisto, joka helpottaa erilaisten kirjastojen sovittamista kehitettävään projektiin. Ohjelmointikehykset ovat niin arkipäiväistyneitä, että kokemattomammat ohjelmistokehittäjät eivät välttämättä tiedä mitä kehys tai kirjasto abstrahoi käyttäjälle. Kirjastojen ja kehyksien ekosysteemissä on syntynyt toimintatapa, tai eräänlainen "suunnittelumalli", jota tässä kontekstissa kutsutaan "opportunistiseksi suunnittelumalliksi" (eng. Opportunistic Design ). Opportunistille suunnittelumallille on tyypillistä, että ohjelmoijat leikkaavat ja liimaavat ja uudelleenkäyttävät huolettomasti erilaisia kirjastoja, priorisoiden käytännöllisyyttä suunnitelmallisen kehittämisen sijaan. Tyypillistä on myös, että kehittäjä ei välttämättä täysin ymmärrä uudelleenkäytettävää koodia tai kirjastoa. Tämä avaa mahdollisuuksia tuntemattomille sivuvaikutuksille kehitettävässä projektissa, ja mahdollisesti vaarantaa projektin tietoturvan. Tutkielmassa tutustutaan Go -ohjelmointikielellä kehitettyihin avoimen lähdekoodin projekteihin, hyödyntäen tilastollisia tutkimusmenetelmiä, kuten hypoteesitestausta ja pyritään selvittämään onko ekosysteemissä havaittavissa opportunistista käytänteitä. Tutkielmassa pyritään laaduttamaan projektit ja etsiä korrelaatioita suoraan lainatun koodin kokonaismäärään. Tulokset viittaavat siihen, että näitä käytänteitä ei ole selvästi havaittavista tutkitusta ekosysteemistä. Tämä ei kuitenkaan ole koko totuus, koska ohjelmointikielien ekosysteemit ovat keskenään erilaisia ja korkeintaan temaattisesti vertailukelpoisia. Jatkotutkimukseksi on esimerkiksi ehdotettu kausatiivisten suhteiden etsimistä ohjelmistoprojektien laadun kanssa. Modern software components almost always rely on partly reused code, and modern programming language ecosystems offer tools that make software reuse effortless. Reused software has become such everyday tools that there is a generation of software developers who have solely worked with a software framework, and have little to no understanding whats under the hood. The world of third-party libraries and software frameworks has led to a design pattern called "Opportunistic Design." Typical traits of opportunistic design are that developers copy and paste different code snippets from online and utilize different libraries and frameworks in a carefree manner, prioritizing convenience over a systematic and abstraction-driven approach. It is also typical that the developer does not fully understand the reused code, as a result of which unknown and unwanted side effects may arise in the developed software. The thesis examines open-source projects developed in Go, employing statistical research methods, such as hypothesis testing, in order to study whether there are implications of opportunistic design patterns within the ecosystem. The study is conducted by measuring quality in the form of composite variables collected from the metadata of version-controlled projects, calculating correlations between these variables, and used third-party code. Findings imply that opportunistic design patterns are not visible within the Go ecosystem. This is, however, not a generalizable result because programming language ecosystems are only comparable to a degree. Refine existing composite variables to better represent quality, check whether the relationship with quality is causative, and seek for more variables with causative relationships with software project quality was left as a future research topic.
first_indexed 2023-10-30T21:05:32Z
format Pro gradu
free_online_boolean 1
fullrecord [{"key": "dc.contributor.advisor", "value": "Mikkonen, Tommi", "language": "", "element": "contributor", "qualifier": "advisor", "schema": "dc"}, {"key": "dc.contributor.author", "value": "Haapasaari, Jari", "language": "", "element": "contributor", "qualifier": "author", "schema": "dc"}, {"key": "dc.date.accessioned", "value": "2023-10-30T07:09:48Z", "language": null, "element": "date", "qualifier": "accessioned", "schema": "dc"}, {"key": "dc.date.available", "value": "2023-10-30T07:09:48Z", "language": null, "element": "date", "qualifier": "available", "schema": "dc"}, {"key": "dc.date.issued", "value": "2023", "language": "", "element": "date", "qualifier": "issued", "schema": "dc"}, {"key": "dc.identifier.uri", "value": "https://jyx.jyu.fi/handle/123456789/91020", "language": null, "element": "identifier", "qualifier": "uri", "schema": "dc"}, {"key": "dc.description.abstract", "value": "Moderni ohjelmistokehitys nojautuu vahvasti ohjelmistojen uudelleenk\u00e4ytt\u00f6\u00f6n. L\u00e4hes jokaisen ohjelmointikielen ekosysteemist\u00e4\nl\u00f6ytyy paketinhallintaohjelmisto, joka helpottaa erilaisten kirjastojen sovittamista\nkehitett\u00e4v\u00e4\u00e4n projektiin. Ohjelmointikehykset ovat niin arkip\u00e4iv\u00e4istyneit\u00e4, ett\u00e4\nkokemattomammat ohjelmistokehitt\u00e4j\u00e4t eiv\u00e4t v\u00e4ltt\u00e4m\u00e4tt\u00e4 tied\u00e4 mit\u00e4 kehys tai\nkirjasto abstrahoi k\u00e4ytt\u00e4j\u00e4lle.\n\nKirjastojen ja kehyksien ekosysteemiss\u00e4 on syntynyt toimintatapa, tai er\u00e4\u00e4nlainen\n\"suunnittelumalli\", jota t\u00e4ss\u00e4 kontekstissa kutsutaan \"opportunistiseksi suunnittelumalliksi\" (eng. Opportunistic Design ). Opportunistille suunnittelumallille\non tyypillist\u00e4, ett\u00e4 ohjelmoijat leikkaavat ja liimaavat ja uudelleenk\u00e4ytt\u00e4v\u00e4t huolettomasti erilaisia kirjastoja, priorisoiden k\u00e4yt\u00e4nn\u00f6llisyytt\u00e4 suunnitelmallisen\nkehitt\u00e4misen sijaan. Tyypillist\u00e4 on my\u00f6s, ett\u00e4 kehitt\u00e4j\u00e4 ei v\u00e4ltt\u00e4m\u00e4tt\u00e4 t\u00e4ysin\nymm\u00e4rr\u00e4 uudelleenk\u00e4ytett\u00e4v\u00e4\u00e4 koodia tai kirjastoa. T\u00e4m\u00e4 avaa mahdollisuuksia tuntemattomille sivuvaikutuksille kehitett\u00e4v\u00e4ss\u00e4 projektissa, ja mahdollisesti\nvaarantaa projektin tietoturvan.\n\nTutkielmassa tutustutaan Go -ohjelmointikielell\u00e4 kehitettyihin avoimen l\u00e4hdekoodin projekteihin, hy\u00f6dynt\u00e4en tilastollisia tutkimusmenetelmi\u00e4, kuten hypoteesitestausta ja pyrit\u00e4\u00e4n selvitt\u00e4m\u00e4\u00e4n onko ekosysteemiss\u00e4 havaittavissa opportunistista k\u00e4yt\u00e4nteit\u00e4. Tutkielmassa pyrit\u00e4\u00e4n laaduttamaan projektit ja etsi\u00e4\nkorrelaatioita suoraan lainatun koodin kokonaism\u00e4\u00e4r\u00e4\u00e4n.\n\nTulokset viittaavat siihen, ett\u00e4 n\u00e4it\u00e4 k\u00e4yt\u00e4nteit\u00e4 ei ole selv\u00e4sti havaittavista tutkitusta ekosysteemist\u00e4. T\u00e4m\u00e4 ei kuitenkaan ole koko totuus, koska ohjelmointikielien ekosysteemit ovat kesken\u00e4\u00e4n erilaisia ja korkeintaan temaattisesti vertailukelpoisia. Jatkotutkimukseksi on esimerkiksi ehdotettu kausatiivisten suhteiden etsimist\u00e4 ohjelmistoprojektien laadun kanssa.", "language": "fi", "element": "description", "qualifier": "abstract", "schema": "dc"}, {"key": "dc.description.abstract", "value": "Modern software components almost always rely on partly reused\ncode, and modern programming language ecosystems offer tools that make software reuse effortless. Reused software has become such everyday tools that\nthere is a generation of software developers who have solely worked with a software framework, and have little to no understanding whats under the hood.\n\nThe world of third-party libraries and software frameworks has led to a design\npattern called \"Opportunistic Design.\" Typical traits of opportunistic design are\nthat developers copy and paste different code snippets from online and utilize different libraries and frameworks in a carefree manner, prioritizing convenience\nover a systematic and abstraction-driven approach. It is also typical that the developer does not fully understand the reused code, as a result of which unknown\nand unwanted side effects may arise in the developed software.\n\nThe thesis examines open-source projects developed in Go, employing statistical research methods, such as hypothesis testing, in order to study whether\nthere are implications of opportunistic design patterns within the ecosystem.\nThe study is conducted by measuring quality in the form of composite variables\ncollected from the metadata of version-controlled projects, calculating correlations between these variables, and used third-party code.\n\nFindings imply that opportunistic design patterns are not visible within the Go\necosystem. This is, however, not a generalizable result because programming\nlanguage ecosystems are only comparable to a degree. Refine existing composite\nvariables to better represent quality, check whether the relationship with quality is causative, and seek for more variables with causative relationships with\nsoftware project quality was left as a future research topic.", "language": "en", "element": "description", "qualifier": "abstract", "schema": "dc"}, {"key": "dc.description.provenance", "value": "Submitted by Paivi Vuorio (paelvuor@jyu.fi) on 2023-10-30T07:09:48Z\nNo. of bitstreams: 0", "language": "en", "element": "description", "qualifier": "provenance", "schema": "dc"}, {"key": "dc.description.provenance", "value": "Made available in DSpace on 2023-10-30T07:09:48Z (GMT). No. of bitstreams: 0\n Previous issue date: 2023", "language": "en", "element": "description", "qualifier": "provenance", "schema": "dc"}, {"key": "dc.format.extent", "value": "46", "language": "", "element": "format", "qualifier": "extent", "schema": "dc"}, {"key": "dc.language.iso", "value": "eng", "language": null, "element": "language", "qualifier": "iso", "schema": "dc"}, {"key": "dc.rights", "value": "In Copyright", "language": null, "element": "rights", "qualifier": null, "schema": "dc"}, {"key": "dc.subject.other", "value": "opportunistic design", "language": "", "element": "subject", "qualifier": "other", "schema": "dc"}, {"key": "dc.subject.other", "value": "software reuse", "language": "", "element": "subject", "qualifier": "other", "schema": "dc"}, {"key": "dc.subject.other", "value": "software quality", "language": "", "element": "subject", "qualifier": "other", "schema": "dc"}, {"key": "dc.subject.other", "value": "Go", "language": "", "element": "subject", "qualifier": "other", "schema": "dc"}, {"key": "dc.title", "value": "Impact of software reuse on the software quality within Go ecosystem", "language": "", "element": "title", "qualifier": null, "schema": "dc"}, {"key": "dc.type", "value": "master thesis", "language": null, "element": "type", "qualifier": null, "schema": "dc"}, {"key": "dc.identifier.urn", "value": "URN:NBN:fi:jyu-202310307047", "language": "", "element": "identifier", "qualifier": "urn", "schema": "dc"}, {"key": "dc.type.ontasot", "value": "Master\u2019s thesis", "language": "en", "element": "type", "qualifier": "ontasot", "schema": "dc"}, {"key": "dc.type.ontasot", "value": "Pro gradu -tutkielma", "language": "fi", "element": "type", "qualifier": "ontasot", "schema": "dc"}, {"key": "dc.contributor.faculty", "value": "Informaatioteknologian tiedekunta", "language": "fi", "element": "contributor", "qualifier": "faculty", "schema": "dc"}, {"key": "dc.contributor.faculty", "value": "Faculty of Information Technology", "language": "en", "element": "contributor", "qualifier": "faculty", "schema": "dc"}, {"key": "dc.contributor.department", "value": "Informaatioteknologia", "language": "fi", "element": "contributor", "qualifier": "department", "schema": "dc"}, {"key": "dc.contributor.department", "value": "Information Technology", "language": "en", "element": "contributor", "qualifier": "department", "schema": "dc"}, {"key": "dc.contributor.organization", "value": "Jyv\u00e4skyl\u00e4n yliopisto", "language": "fi", "element": "contributor", "qualifier": "organization", "schema": "dc"}, {"key": "dc.contributor.organization", "value": "University of Jyv\u00e4skyl\u00e4", "language": "en", "element": "contributor", "qualifier": "organization", "schema": "dc"}, {"key": "dc.subject.discipline", "value": "Tietotekniikka", "language": "fi", "element": "subject", "qualifier": "discipline", "schema": "dc"}, {"key": "dc.subject.discipline", "value": "Mathematical Information Technology", "language": "en", "element": "subject", "qualifier": "discipline", "schema": "dc"}, {"key": "yvv.contractresearch.funding", "value": "0", "language": "", "element": "contractresearch", "qualifier": "funding", "schema": "yvv"}, {"key": "dc.type.coar", "value": "http://purl.org/coar/resource_type/c_bdcc", "language": null, "element": "type", "qualifier": "coar", "schema": "dc"}, {"key": "dc.rights.copyright", "value": "\u00a9 The Author(s)", "language": null, "element": "rights", "qualifier": "copyright", "schema": "dc"}, {"key": "dc.rights.accesslevel", "value": "openAccess", "language": null, "element": "rights", "qualifier": "accesslevel", "schema": "dc"}, {"key": "dc.type.publication", "value": "masterThesis", "language": null, "element": "type", "qualifier": "publication", "schema": "dc"}, {"key": "dc.subject.oppiainekoodi", "value": "602", "language": "", "element": "subject", "qualifier": "oppiainekoodi", "schema": "dc"}, {"key": "dc.subject.yso", "value": "ohjelmistokehitys", "language": null, "element": "subject", "qualifier": "yso", "schema": "dc"}, {"key": "dc.subject.yso", "value": "laatu", "language": null, "element": "subject", "qualifier": "yso", "schema": "dc"}, {"key": "dc.subject.yso", "value": "uudelleenk\u00e4ytt\u00f6", "language": null, "element": "subject", "qualifier": "yso", "schema": "dc"}, {"key": "dc.subject.yso", "value": "software development", "language": null, "element": "subject", "qualifier": "yso", "schema": "dc"}, {"key": "dc.subject.yso", "value": "quality", "language": null, "element": "subject", "qualifier": "yso", "schema": "dc"}, {"key": "dc.subject.yso", "value": "reuse", "language": null, "element": "subject", "qualifier": "yso", "schema": "dc"}, {"key": "dc.rights.url", "value": "https://rightsstatements.org/page/InC/1.0/", "language": null, "element": "rights", "qualifier": "url", "schema": "dc"}]
id jyx.123456789_91020
language eng
last_indexed 2025-02-18T10:55:26Z
main_date 2023-01-01T00:00:00Z
main_date_str 2023
online_boolean 1
online_urls_str_mv {"url":"https:\/\/jyx.jyu.fi\/bitstreams\/545aa270-52e9-46d5-8e37-0528cd799e78\/download","text":"URN:NBN:fi:jyu-202310307047.pdf","source":"jyx","mediaType":"application\/pdf"}
publishDate 2023
record_format qdc
source_str_mv jyx
spellingShingle Haapasaari, Jari Impact of software reuse on the software quality within Go ecosystem opportunistic design software reuse software quality Go Tietotekniikka Mathematical Information Technology 602 ohjelmistokehitys laatu uudelleenkäyttö software development quality reuse
title Impact of software reuse on the software quality within Go ecosystem
title_full Impact of software reuse on the software quality within Go ecosystem
title_fullStr Impact of software reuse on the software quality within Go ecosystem Impact of software reuse on the software quality within Go ecosystem
title_full_unstemmed Impact of software reuse on the software quality within Go ecosystem Impact of software reuse on the software quality within Go ecosystem
title_short Impact of software reuse on the software quality within Go ecosystem
title_sort impact of software reuse on the software quality within go ecosystem
title_txtP Impact of software reuse on the software quality within Go ecosystem
topic opportunistic design software reuse software quality Go Tietotekniikka Mathematical Information Technology 602 ohjelmistokehitys laatu uudelleenkäyttö software development quality reuse
topic_facet 602 Go Mathematical Information Technology Tietotekniikka laatu ohjelmistokehitys opportunistic design quality reuse software development software quality software reuse uudelleenkäyttö
url https://jyx.jyu.fi/handle/123456789/91020 http://www.urn.fi/URN:NBN:fi:jyu-202310307047
work_keys_str_mv AT haapasaarijari impactofsoftwarereuseonthesoftwarequalitywithingoecosystem