Code reading is an activity frequently performed by developers. Before modifying code, developers have to read it, especially if it was authored by others. Several studies have been carried out to find insights related to code readability. However, they were mostly conducted on single (static) code snippets, i.e., they did not take into account the ever-changing nature of software. In a preliminary study, we observe that refactoring operations performed by developers to improve several non-functional aspects of open-source software systems often result in improved code readability. Motivated by such results, in this thesis, we studied code readability in the context of software evolution. Especially, we aimed at understanding: (i) to what extent software developers are interested in code readability; (ii) how code readability evolves in complex software systems; (iii) the influence of developers' personal characteristics on the evolution of code readability. First, we observed that the large majority of the developers we surveyed reported that they consider readability as an important aspect of the source code. Then, by mining several software repositories we observed that readability rarely changes in software evolution. Therefore, files created unreadable rarely become readable, and vice versa. Finally, we noticed that some personal characteristics of developers have an impact on code readability. In particular, developers' orienting network (related to their attention) positively correlates with code readability.

La lettura del codice sorgente è un’attività eseguita molto spesso dagli sviluppatori: infatti, prima di effettuare anche la più semplice modifica, gli stessi devono leggere il codice sorgente, soprattutto se quest’ultimo è stato prodotto da altri. Diversi studi sono stati condotti per comprendere al meglio la leggibilità del codice. Tuttavia, tali studi sono stati effettuati per lo più su singoli frammenti di codice (statici), senza considerare la natura mutevole di un sistema software. In uno studio preliminare, è stato osservato che le operazioni di refactoring eseguite dagli sviluppatori per migliorare diversi aspetti non funzionali di sistemi software open source spesso si traducono in una migliore leggibilità del codice. Motivati da tali risultati, nel presente lavoro di tesi, è stata studiata la leggibilità del codice nel contesto dell’evoluzione di un sistema software. In particolare, si è cercato di capire: (i) in che misura gli sviluppatori di software sono interessati alla leggibilità del codice durante le quotidiane attività di codifica; (ii) come la leggibilità del codice si evolve in sistemi software complessi; (iii) l’influenza delle caratteristiche personali degli sviluppatori sull’evoluzione della leggibilità del codice. I risultati ottenuti hanno indicato, in primo luogo, che la maggioranza degli sviluppatori intervistati considerano la leggibilità un aspetto importante del codice sorgente. Inoltre, dall’analisi di diversi repository software si è osservato che la leggibilità cambia raramente durante l’evoluzione di un sistema software. Pertanto, i file creati illeggibili raramente diventano leggibili, e viceversa. Infine, è stato osservato che alcune caratteristiche personali, misurate attraverso specifiche metriche cognitive, hanno un impatto positivo sulla leggibilità del codice; nello specifico, sviluppatori che hanno un’elevata orienting network producono codice più leggibile.

On the evolution of the Code Readability

PIANTADOSI, VALENTINA
2022-05-12

Abstract

Code reading is an activity frequently performed by developers. Before modifying code, developers have to read it, especially if it was authored by others. Several studies have been carried out to find insights related to code readability. However, they were mostly conducted on single (static) code snippets, i.e., they did not take into account the ever-changing nature of software. In a preliminary study, we observe that refactoring operations performed by developers to improve several non-functional aspects of open-source software systems often result in improved code readability. Motivated by such results, in this thesis, we studied code readability in the context of software evolution. Especially, we aimed at understanding: (i) to what extent software developers are interested in code readability; (ii) how code readability evolves in complex software systems; (iii) the influence of developers' personal characteristics on the evolution of code readability. First, we observed that the large majority of the developers we surveyed reported that they consider readability as an important aspect of the source code. Then, by mining several software repositories we observed that readability rarely changes in software evolution. Therefore, files created unreadable rarely become readable, and vice versa. Finally, we noticed that some personal characteristics of developers have an impact on code readability. In particular, developers' orienting network (related to their attention) positively correlates with code readability.
12-mag-2022
La lettura del codice sorgente è un’attività eseguita molto spesso dagli sviluppatori: infatti, prima di effettuare anche la più semplice modifica, gli stessi devono leggere il codice sorgente, soprattutto se quest’ultimo è stato prodotto da altri. Diversi studi sono stati condotti per comprendere al meglio la leggibilità del codice. Tuttavia, tali studi sono stati effettuati per lo più su singoli frammenti di codice (statici), senza considerare la natura mutevole di un sistema software. In uno studio preliminare, è stato osservato che le operazioni di refactoring eseguite dagli sviluppatori per migliorare diversi aspetti non funzionali di sistemi software open source spesso si traducono in una migliore leggibilità del codice. Motivati da tali risultati, nel presente lavoro di tesi, è stata studiata la leggibilità del codice nel contesto dell’evoluzione di un sistema software. In particolare, si è cercato di capire: (i) in che misura gli sviluppatori di software sono interessati alla leggibilità del codice durante le quotidiane attività di codifica; (ii) come la leggibilità del codice si evolve in sistemi software complessi; (iii) l’influenza delle caratteristiche personali degli sviluppatori sull’evoluzione della leggibilità del codice. I risultati ottenuti hanno indicato, in primo luogo, che la maggioranza degli sviluppatori intervistati considerano la leggibilità un aspetto importante del codice sorgente. Inoltre, dall’analisi di diversi repository software si è osservato che la leggibilità cambia raramente durante l’evoluzione di un sistema software. Pertanto, i file creati illeggibili raramente diventano leggibili, e viceversa. Infine, è stato osservato che alcune caratteristiche personali, misurate attraverso specifiche metriche cognitive, hanno un impatto positivo sulla leggibilità del codice; nello specifico, sviluppatori che hanno un’elevata orienting network producono codice più leggibile.
Code readability; Empirical studies; Open source projects; Software refactoring; Cognitive Human Aspects
File in questo prodotto:
File Dimensione Formato  
Tesi_V_Piantadosi.pdf

Open Access dal 13/11/2023

Descrizione: Tesi di Dottorato
Dimensione 5 MB
Formato Adobe PDF
5 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/115331
Citazioni
  • ???jsp.display-item.citation.pmc??? ND
  • Scopus ND
  • ???jsp.display-item.citation.isi??? ND
social impact