polito.it
Politecnico di Torino (logo)

Manutenibilità del codice sorgente scritto in Rust = Code maintainability in Rust

Diego Verga

Manutenibilità del codice sorgente scritto in Rust = Code maintainability in Rust.

Rel. Luca Ardito, Maurizio Morisio, Marco Torchiano. Politecnico di Torino, Corso di laurea magistrale in Ingegneria Informatica (Computer Engineering), 2020

[img]
Preview
PDF (Tesi_di_laurea) - Tesi
Licenza: Creative Commons Attribution Non-commercial No Derivatives.

Download (1MB) | Preview
Abstract:

Manutenibilità del codice sorgente scritto in Rust CONTESTO: Rust è un linguaggio di programmazione open-source, sviluppato dalla Community di Mozilla e progettato seguendo criteri di sicurezza, concorrenza e parallelismo. Ha velocità di esecuzione quasi paragonabile al C e al C++. Si vorrebbero avere informazioni riguardo alla manutenibilità dei softwares scritti in questo linguaggio, che sta guadagnando sempre maggiore popolarità e consensi. La manutenibilità del codice è definita nello standard ISO 25010 come grado di efficacia ed efficienza con cui un prodotto o sistema può essere modificato dai manutentori previsti. È un aspetto sempre più importante del codice, che aumenta ancora di più di importanza man mano che i softwares diventano più complessi e pervasivi nella vita quotidiana. Tenere conto della manutenibilità di un codice porta diversi vantaggi, tra i quali una maggior facilità nella gestione del codice, una maggior adattabilità e una riduzione del technical debt. Stimare questo aspetto del codice, però, è piuttosto difficile e vi sono innumerevoli metriche atte a questo scopo. SCOPO: Gli obiettivi di questa tesi sono: * comprendere quali metriche sono effettivamente più utilizzate in letteratura e quali programmi vengono impiegati per computarle; * creare un programma in grado di calcolare il set di metriche più utilizzate; * utilizzare il lavoro svolto per portare le metriche più comuni in Rust e offrire così un modo per confrontare questo nuovo linguaggio con il C e il C++. METODO: Per rispondere al primo obiettivo si è svolta una SLR, le cui domande di ricerca sono: trovare le metriche usate in letteratura per valutare la manutenibilità di un codice; scoprire quali di queste siano le più popolari e creare una lista; trovare quali programmi siano stati utilizzati negli studi presi in considerazine; dare una selezione ideale di programmi in grado di calcolare le metriche più popolari per i linguaggi più supportati. Per rispondere al secondo obiettivo si è creato un programma in Python che fosse open-source, modulare e facilmente estensibile. Per svolgere il terzo punto si sono cercati dei tools per analizzare i codici scritti in Rust e si sono aggiunti al programma Python. RISULTATI: Svolgendo la SLR sono stati selezionati una cinquantina di articoli, che in totale menzionavano 174 diverse metriche. Di queste, solo il 24.7% sono state citate da più di un studio. Abbiamo selezionato un set di 13 metriche e 2 suite di metriche. Abbiamo anche trovato un certo numero di programmi, sia proprietari che open-source. Il programma creato è in grado sia di eseguire ed aggregare i risultati di altri analizzatori che di computare delle ulteriori metriche. I risultati ottenuti con l'aggregatore vengono presentati seguendo uno standard definito dall'autore della tesi. Essendo questo un linguaggio abbastanza nuovo, al momento vi sono ben pochi analizzatori per i sorgenti scritti in Rust. Fra questi vi sono Tokei e Rust-code-analysis, entrambi in sviluppo. CONCLUSIONI: Svolgendo la SLR si è potuto constatare quanto sia utile trovare delle metriche efficaci per valutare la manutenibilità del codice, ma si è anche visto che non vi sono parereri unanimi sull'utilità delle varie metriche esistenti. Con il programma creato si spera di semplificare l'utilizzo delle metriche, aiutando l'utente finale ad ottenere quante più informazioni possibili sul codice analizzato.

Relatori: Luca Ardito, Maurizio Morisio, Marco Torchiano
Anno accademico: 2019/20
Tipo di pubblicazione: Elettronica
Numero di pagine: 88
Soggetti:
Corso di laurea: Corso di laurea magistrale in Ingegneria Informatica (Computer Engineering)
Classe di laurea: Nuovo ordinamento > Laurea magistrale > LM-32 - INGEGNERIA INFORMATICA
Aziende collaboratrici: NON SPECIFICATO
URI: http://webthesis.biblio.polito.it/id/eprint/14525
Modifica (riservato agli operatori) Modifica (riservato agli operatori)