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
Description
Summary: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.