Add RQ1
This commit is contained in:
parent
404fabe83b
commit
57c0394721
@ -2,6 +2,36 @@
|
||||
|
||||
## RQ1: come il ML e' distribuito sull'architettura dei progetti?
|
||||
|
||||
In questa prima analisi si è voluto andare a vedere se esiste una differenza tra cambiamenti generici e cambiamenti legati al \ac{ML} rispetto ai file e le directories toccati da questi cambiamenti.
|
||||
Per poter svolgere questa analisi è stato necessario individuare il numero totale di file modificati per *fix* generici e per i *fix* specifici del \acl{ML}.
|
||||
Per fare ciò, i commit sono stati raggruppati rispetto al progetto e al tipo di cambiamento (\ac{ML}, no \ac{ML}).
|
||||
Per ogni ogni istanza di questo raggruppamento si è eseguito l'union set dei files modificati.
|
||||
Come output di questa fase, per ogni progetto, si è ottenuto:
|
||||
|
||||
- l'insieme dei file modificati per *fix* di \ac{ML}
|
||||
- l'insieme dei file modificati per fix generici
|
||||
|
||||
Infine eseguendo l'union set tra questi due insiemi si è ottenere l'insieme totale dei files modificati durante i *fix*.
|
||||
In questo modo è stato possibile andare a valutare la percentuale di files modificati in relazione al tipo di cambiamento.
|
||||
Attraverso la funzione di libreria Python `os.path.dirname` sono stati ottenuti i tre insiemi sopra citati anche per quanto riguarda le directories.
|
||||
|
||||
Dalla @fig:files-directories si può notare che i cambiamenti generici vanno ad impattare su una superficie maggiore del sistema, sia che l'analisi sia svolta al livello di files che di directories.
|
||||
Un'ulteriore aspetto interessante riguarda la varianza delle distribuzioni, infatti, indipendentemente dalla granularità dell'analisi, il dato riguardante i cambiamenti di \acl{ML} è caratterizzato da una maggiore varianza.
|
||||
|
||||
![Percentuale di files e directories modificate in base al tipo di cambiamento](figures/files-and-directories.pdf){#fig:files-directories width=80%}
|
||||
|
||||
Un'ulteriore analisi rispetto all'architettura dei progetti è stata svolta mediante gli import.
|
||||
Attraverso uno script sono stati estratti, per ogni file, gli import utilizzati all'interno del file stesso.
|
||||
A questo punto sono stati individuati i files di \acl{ML} in base agli import utilizzati.
|
||||
La classificazione è avvenuta utilizzando due livelli di severità; in un primo caso sono stati considerati come import di \acl{ML} solo delle librerie strettamente di \ac{ML} come ad esempio `keras`, `TernsorFlow`, `PyTorch`, ecc.
|
||||
Mentre in un secondo caso sono state incluse anche librerie utilizzate spesso in ambito \ac{ML}, ma anche in altri ambiti, come ad esempio `pandas`, `numpy` e `scipy`.
|
||||
|
||||
![Percentuale di file che utilizzano librerie di ML](figures/imports.pdf){#fig:imports width=70%}
|
||||
|
||||
Dal boxplot riportato in @fig:imports si può notare che, indipendentemente dalla severità dell'analisi, la percentuale di file che utilizzano librerie di \acl{ML} è caratterizzata da una forte varianza.
|
||||
Ciò ci indica che i progetti inclusi all'interno dello studio sono vari tra di loro.
|
||||
Inoltre, considerando l'analisi *strict*, è possibile osservare come solo un $25\%$ dei progetti abbia una percentuale di files di \ac{ML} superiore al $45\%$.
|
||||
|
||||
## RQ2: come sono distribuiti i bug sulle diverse fasi di ML?
|
||||
|
||||
Come illustrato nella @sec:classificazione-commit per poter determinare la natura di un *issue fix* si è fatto ricorso alla classificazione delle *issues* ad esso associate.
|
||||
@ -90,7 +120,7 @@ I risultati così ottenuti sono stati riportati in @fig:day-to-fix.
|
||||
Anche in questo caso è possibile notare una netta differenza tra i *fix* di \ac{ML} e gli altri.
|
||||
In particolare i bug di \acl{ML} necessitano, mediamente, di maggior tempo per essere risolti e sono caratterizzati da una varianza maggiore.
|
||||
Inoltre è possibile vedere come la mediana non sia centrata, bensì spostata verso il basso.
|
||||
Questo vuol dire che il $50\%$ basso dei *bug* di \ac{ML} viene comunque risolto in tempi brevi (tre giorni circa), mentre l'altro $50\%$ può richiedere una quantità di tempo decisamente superiore.
|
||||
Questo vuol dire che il $50\%$ basso dei *bug* di \ac{ML} viene comunque risolto in tempi brevi (due giorni circa), mentre l'altro $50\%$ può richiedere una quantità di tempo decisamente superiore.
|
||||
|
||||
Un'ulteriore testimonianza del maggior tempo necessario per risolvere le problematiche legate al \ac{ML} ci viene data dagli outlier.
|
||||
Nel caso di un problema generico, questo, viene considerato come *anomalo* se per essere risolto necessita di un tempo superiore ai cinque giorni.
|
||||
|
BIN
src/figures/files-and-directories.pdf
Normal file
BIN
src/figures/files-and-directories.pdf
Normal file
Binary file not shown.
BIN
src/figures/imports.pdf
Normal file
BIN
src/figures/imports.pdf
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user