The desire of those who make software, as well as of those who use it, is that it should be of quality. The software quality depends on a multitude of factors including functionality, reliability, efficiency, and maintainability, which somehow reflect the actions taken by the one who implements the software: the developer. For example, if a developer chooses to use a code snippet developed by someone else or if he leverages methods provided by an external library, he should ask himself how this choice could affect the overall quality of the software. For the same reason, a developer involved in software maintenance should be very confident about the code understandability, he will be working on. In this thesis we investigate the characteristics of Stack Overflow answers in order to identify what is the rational that leads a developer to choose a snippet to integrate into his software project. To this end, we analyzed and compared the characteristics of the documentation and code snippets leveraged and non-leveraged by developers on GitHub. The analysis showed the factors that best discriminate between leveraged and non-leveraged answers are: the score, the number of comments and the posting date of the answer. A specific analysis on documentation quality was carried out by examining a set of Application Program Interfaces (API). The objective was to investigate the relationship between the first use of a low-quality documentation API and the introduction of bugs in the code. This hypothesis was confirmed by the results. A further analyzed point concerns the understanding level perceived by the developer when dealing with code snippets written by others. Specifically, we have tried to understand whether naturalness calculated through a model focused on the developer's knowledge was a predictor for the developer's understanding of code. The results showed code snippets that are familiar, and so more natural for the developer, tend to mislead him from the understanding of the code.

Il desiderio di chi realizza un software, così come quello di chi lo utilizza, è che questo sia di qualità. La qualità del software dipende da una miriade di fattori tra cui la funzionalità, l’affidabilità, l’efficienza e la manutenibilità, caratteristiche che in qualche modo riflettono le azioni compiute da chi è responsabile della realizzazione del software: lo sviluppatore. Ad esempio, nel caso in cui uno sviluppatore volesse includere all’interno del software un frammento di codice (code snippet) implementato da terzi, oppure utilizzare le funzioni fornite da una libreria esterna, dovrebbe domandarsi in che misura questa scelta possa incidere sulla qualità complessiva del software. Per la stessa ragione, uno sviluppatore incaricato di fare manutenzione su un software dovrebbe essere certo di aver compreso il codice su cui andrà ad operare. In questa tesi si indagano le caratteristiche delle risposte ai quesiti postati su Stack Overflow al fine di individuare il razionale che spinge uno sviluppatore a scegliere lo snippet da inserire all’interno del proprio progetto software. A questo scopo, sono state analizzate e comparate le caratteristiche della documentazione e dei code snippet utilizzati (leveraged) e non utilizzati (non-leveraged) in progetti GitHub. Dall’analisi è emerso che i fattori che riescono meglio a discriminare le risposte leveraged da quelle non-leveraged sono: il punteggio, il numero di commenti e la data di pubblicazione della risposta. Un’analisi specifica sulla qualità della documentazione e delle sue componenti informative è stata effettuata esaminando un set di Application Program Interface (API). L’obiettivo era quello di investigare la relazione tra il primo utilizzo di API aventi una documentazione di bassa qualità e l’introduzione di errori (bug) nel codice, ipotesi successivamente confermata dai risultati ottenuti. Un’ulteriore aspetto analizzato riguarda il livello di comprensione percepito dallo sviluppatore alle prese con frammenti di codice scritto da altri. Nello specifico, si è cercato di capire se la naturalezza calcolata attraverso un modello incentrato sulla conoscenza dello sviluppatore fosse un predittore per la comprensibilità del codice da parte di quest’ultimo. I risultati hanno mostrato come porzioni di codice che presentano caratteristiche familiari, e per questa ragione percepite più naturali, tendano a trarre in inganno lo sviluppatore, fuorviandolo dalla comprensione del codice.

Crowdsourced documentation and code snippets

GEREMIA, Salvatore
2020-05-28

Abstract

The desire of those who make software, as well as of those who use it, is that it should be of quality. The software quality depends on a multitude of factors including functionality, reliability, efficiency, and maintainability, which somehow reflect the actions taken by the one who implements the software: the developer. For example, if a developer chooses to use a code snippet developed by someone else or if he leverages methods provided by an external library, he should ask himself how this choice could affect the overall quality of the software. For the same reason, a developer involved in software maintenance should be very confident about the code understandability, he will be working on. In this thesis we investigate the characteristics of Stack Overflow answers in order to identify what is the rational that leads a developer to choose a snippet to integrate into his software project. To this end, we analyzed and compared the characteristics of the documentation and code snippets leveraged and non-leveraged by developers on GitHub. The analysis showed the factors that best discriminate between leveraged and non-leveraged answers are: the score, the number of comments and the posting date of the answer. A specific analysis on documentation quality was carried out by examining a set of Application Program Interfaces (API). The objective was to investigate the relationship between the first use of a low-quality documentation API and the introduction of bugs in the code. This hypothesis was confirmed by the results. A further analyzed point concerns the understanding level perceived by the developer when dealing with code snippets written by others. Specifically, we have tried to understand whether naturalness calculated through a model focused on the developer's knowledge was a predictor for the developer's understanding of code. The results showed code snippets that are familiar, and so more natural for the developer, tend to mislead him from the understanding of the code.
28-mag-2020
Il desiderio di chi realizza un software, così come quello di chi lo utilizza, è che questo sia di qualità. La qualità del software dipende da una miriade di fattori tra cui la funzionalità, l’affidabilità, l’efficienza e la manutenibilità, caratteristiche che in qualche modo riflettono le azioni compiute da chi è responsabile della realizzazione del software: lo sviluppatore. Ad esempio, nel caso in cui uno sviluppatore volesse includere all’interno del software un frammento di codice (code snippet) implementato da terzi, oppure utilizzare le funzioni fornite da una libreria esterna, dovrebbe domandarsi in che misura questa scelta possa incidere sulla qualità complessiva del software. Per la stessa ragione, uno sviluppatore incaricato di fare manutenzione su un software dovrebbe essere certo di aver compreso il codice su cui andrà ad operare. In questa tesi si indagano le caratteristiche delle risposte ai quesiti postati su Stack Overflow al fine di individuare il razionale che spinge uno sviluppatore a scegliere lo snippet da inserire all’interno del proprio progetto software. A questo scopo, sono state analizzate e comparate le caratteristiche della documentazione e dei code snippet utilizzati (leveraged) e non utilizzati (non-leveraged) in progetti GitHub. Dall’analisi è emerso che i fattori che riescono meglio a discriminare le risposte leveraged da quelle non-leveraged sono: il punteggio, il numero di commenti e la data di pubblicazione della risposta. Un’analisi specifica sulla qualità della documentazione e delle sue componenti informative è stata effettuata esaminando un set di Application Program Interface (API). L’obiettivo era quello di investigare la relazione tra il primo utilizzo di API aventi una documentazione di bassa qualità e l’introduzione di errori (bug) nel codice, ipotesi successivamente confermata dai risultati ottenuti. Un’ulteriore aspetto analizzato riguarda il livello di comprensione percepito dallo sviluppatore alle prese con frammenti di codice scritto da altri. Nello specifico, si è cercato di capire se la naturalezza calcolata attraverso un modello incentrato sulla conoscenza dello sviluppatore fosse un predittore per la comprensibilità del codice da parte di quest’ultimo. I risultati hanno mostrato come porzioni di codice che presentano caratteristiche familiari, e per questa ragione percepite più naturali, tendano a trarre in inganno lo sviluppatore, fuorviandolo dalla comprensione del codice.
Software; Quality; Documentation; Code; Snippets
File in questo prodotto:
File Dimensione Formato  
Tesi_S_Geremia.pdf

accesso aperto

Descrizione: Tesi di Dottorato
Dimensione 1.68 MB
Formato Adobe PDF
1.68 MB Adobe PDF Visualizza/Apri

I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/11695/97969
Citazioni
  • ???jsp.display-item.citation.pmc??? ND
  • Scopus ND
  • ???jsp.display-item.citation.isi??? ND
social impact