Reading and understanding code is an inherent requirement for many maintenance and evolution tasks. Developers continuously read the code and they make an effort to understand it before being able to perform any task. Without a thorough understanding of source code, developers would not be able to fix bugs or add new features timely. Automatically assessing code readabi-lity and understandability can help in estimating the effort required to modify code components. Besides, having an objective metric for such aspects could be important to improve the quality of automatically generated test cases. In this thesis, we improve the accuracy of existing readability models by introducing textual fea-tures. Besides, we try to go further, and we use a large number of new and state-of-the-art me-trics to automatically assess code understandability. However, our results show that it is still not possible to automatically assess the understandability of source code. In the context of software testing, we introduce a new metric, namely Coverage Entropy, which is aimed at estimating the understandability of a test case. We use Coverage Entropy in TERMite, a novel test case genera-tion technique aimed at improving the understandability of generated tests. Our results show that TERMite generates a lower number of eager tests compared to the state-of-the-art and it

Leggere e comprendere codice sorgente è un requisito intrinseco di molte attività legate alla ma-nutenzione e all’evoluzione di sistemi software. Gli sviluppatori devono leggere e comprendere il codice esistente prima di poter iniziare a lavorare a uno specifico compito. Senza una conoscenza completa del codice sorgente, infatti, gli sviluppatori non sarebbero in grado correggere errori o aggiungere nuove funzionalità. Stimare automaticamente la leggibilità e la comprensibilità del codice sorgente potrebbe aiutare a prevedere lo sforzo richiesto per modificare specifiche com-ponenti di un sistema. Inoltre, una metrica in grado di misurare oggettivamente tali aspetti po-trebbe essere importante per migliorare la qualità dei test generati automaticamente. In questa testi si prova a migliorare l’accuratezza dei modelli di leggibilità già esistenti in lettera-tura, introducendo nuove metriche in grado di misurare aspetti testuali del codice. Si prova, poi, ad andare oltre la leggibilità, sperimentando l’efficacia di un gran numero di metriche nella valu-tazione automatica della comprensibilità del codice. I risultati mostrano che non è ancora possibi-le stimare automaticamente la comprensibilità del codice sorgente. Nel contesto del software te-sting si introduce una nuova metrica, chiamata “Coverage Entropy”, che mira a stimare la com-prensibilità dei casi di test. Si è integrata la Coverage Entropy nel processo di generazione auto-matica di casi di test al fine di migliorarne la comprensibilità; si è, quindi, definito un nuovo ap-proccio, chiamato TERMite. I risultati mostrano che TERMite genera un minor numero di casi di test “eager” rispetto allo stato dell’arte e che riesce a migliorare anche altri aspetti di qualità, co-me la coesione dei test.

Automatically assessing and improving code readability and understandability

SCALABRINO, Simone
2019-04-08

Abstract

Leggere e comprendere codice sorgente è un requisito intrinseco di molte attività legate alla ma-nutenzione e all’evoluzione di sistemi software. Gli sviluppatori devono leggere e comprendere il codice esistente prima di poter iniziare a lavorare a uno specifico compito. Senza una conoscenza completa del codice sorgente, infatti, gli sviluppatori non sarebbero in grado correggere errori o aggiungere nuove funzionalità. Stimare automaticamente la leggibilità e la comprensibilità del codice sorgente potrebbe aiutare a prevedere lo sforzo richiesto per modificare specifiche com-ponenti di un sistema. Inoltre, una metrica in grado di misurare oggettivamente tali aspetti po-trebbe essere importante per migliorare la qualità dei test generati automaticamente. In questa testi si prova a migliorare l’accuratezza dei modelli di leggibilità già esistenti in lettera-tura, introducendo nuove metriche in grado di misurare aspetti testuali del codice. Si prova, poi, ad andare oltre la leggibilità, sperimentando l’efficacia di un gran numero di metriche nella valu-tazione automatica della comprensibilità del codice. I risultati mostrano che non è ancora possibi-le stimare automaticamente la comprensibilità del codice sorgente. Nel contesto del software te-sting si introduce una nuova metrica, chiamata “Coverage Entropy”, che mira a stimare la com-prensibilità dei casi di test. Si è integrata la Coverage Entropy nel processo di generazione auto-matica di casi di test al fine di migliorarne la comprensibilità; si è, quindi, definito un nuovo ap-proccio, chiamato TERMite. I risultati mostrano che TERMite genera un minor numero di casi di test “eager” rispetto allo stato dell’arte e che riesce a migliorare anche altri aspetti di qualità, co-me la coesione dei test.
Reading and understanding code is an inherent requirement for many maintenance and evolution tasks. Developers continuously read the code and they make an effort to understand it before being able to perform any task. Without a thorough understanding of source code, developers would not be able to fix bugs or add new features timely. Automatically assessing code readabi-lity and understandability can help in estimating the effort required to modify code components. Besides, having an objective metric for such aspects could be important to improve the quality of automatically generated test cases. In this thesis, we improve the accuracy of existing readability models by introducing textual fea-tures. Besides, we try to go further, and we use a large number of new and state-of-the-art me-trics to automatically assess code understandability. However, our results show that it is still not possible to automatically assess the understandability of source code. In the context of software testing, we introduce a new metric, namely Coverage Entropy, which is aimed at estimating the understandability of a test case. We use Coverage Entropy in TERMite, a novel test case genera-tion technique aimed at improving the understandability of generated tests. Our results show that TERMite generates a lower number of eager tests compared to the state-of-the-art and it
Code readability; Code understandability; Software maintenance; Software testing; Empirical sofyware engineering
File in questo prodotto:
File Dimensione Formato  
Tesi_S_Scalabrino.pdf

accesso aperto

Descrizione: Tesi di dottorato
Dimensione 2.62 MB
Formato Adobe PDF
2.62 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: http://hdl.handle.net/11695/90885
Citazioni
  • ???jsp.display-item.citation.pmc??? ND
  • Scopus ND
  • ???jsp.display-item.citation.isi??? ND
social impact