dc.contributor.advisor | Mikkonen, Tommi | |
dc.contributor.author | Haapasaari, Jari | |
dc.date.accessioned | 2023-10-30T07:09:48Z | |
dc.date.available | 2023-10-30T07:09:48Z | |
dc.date.issued | 2023 | |
dc.identifier.uri | https://jyx.jyu.fi/handle/123456789/91020 | |
dc.description.abstract | 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. | fi |
dc.description.abstract | 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. | en |
dc.format.extent | 46 | |
dc.language.iso | en | |
dc.rights | In Copyright | |
dc.subject.other | opportunistic design | |
dc.subject.other | software reuse | |
dc.subject.other | software quality | |
dc.subject.other | Go | |
dc.title | Impact of software reuse on the software quality within Go ecosystem | |
dc.type | master thesis | |
dc.identifier.urn | URN:NBN:fi:jyu-202310307047 | |
dc.type.ontasot | Master’s thesis | en |
dc.type.ontasot | Pro gradu -tutkielma | fi |
dc.contributor.tiedekunta | Informaatioteknologian tiedekunta | fi |
dc.contributor.tiedekunta | Faculty of Information Technology | en |
dc.contributor.laitos | Informaatioteknologia | fi |
dc.contributor.laitos | Information Technology | en |
dc.contributor.yliopisto | Jyväskylän yliopisto | fi |
dc.contributor.yliopisto | University of Jyväskylä | en |
dc.contributor.oppiaine | Tietotekniikka | fi |
dc.contributor.oppiaine | Mathematical Information Technology | en |
dc.type.coar | http://purl.org/coar/resource_type/c_bdcc | |
dc.rights.copyright | © The Author(s) | |
dc.rights.accesslevel | openAccess | |
dc.type.publication | masterThesis | |
dc.contributor.oppiainekoodi | 602 | |
dc.subject.yso | ohjelmistokehitys | |
dc.subject.yso | laatu | |
dc.subject.yso | uudelleenkäyttö | |
dc.subject.yso | software development | |
dc.subject.yso | quality | |
dc.subject.yso | reuse | |
dc.rights.url | https://rightsstatements.org/page/InC/1.0/ | |