From 5420e9cec71443bcf250dd596528f926a7abde45 Mon Sep 17 00:00:00 2001 From: norangebit Date: Mon, 7 Jun 2021 12:20:15 +0200 Subject: [PATCH] Add RQ3 --- src/chapter_3.md | 31 ++++++++++++++++++++++++++++++- src/figures/files-entropy.pdf | Bin 0 -> 13263 bytes src/figures/lines-entropy.pdf | Bin 0 -> 14101 bytes 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 src/figures/files-entropy.pdf create mode 100644 src/figures/lines-entropy.pdf diff --git a/src/chapter_3.md b/src/chapter_3.md index c60ff22..34c916c 100644 --- a/src/chapter_3.md +++ b/src/chapter_3.md @@ -9,13 +9,42 @@ Nel caso in cui la issue sia stata classificata manualmente, oltre all'individua Questo dato aggiuntivo presente su alcune issues è stato *proiettato* anche sulla classificazione dei commit di *fix* per andare come questi sono distribuiti sulle varie fasi. I risultati di questa analisi sono riportati in @fig:count-fix-phases. -![Istanze dei fix in base alla fase](figures/count-fix-phases.pdf){#fig:count-fix-phases} +![Istanze dei fix in base alla fase](figures/count-fix-phases.pdf){#fig:count-fix-phases width=70%} Rispetto alla distribuzione sulle issues (@fig:labeling-phases) è possibile notare la scomparsa della fase *data collection*, inoltre è evidente anche la riduzione delle occorrenze di *model training* e una crescita di importanza per quanto riguarda le fasi di *model requirements* e *model deployment*. Sfortunatamente i dati disponibili per questa analisi sono molti limitati, è stato possibile ricavare la fase solo per quaranta *fix*, per cui non è stato possibile altre analisi. ## RQ3: esiste una differenza di entropy tra ML bug e altri bug? +La successiva analisi avevo lo scopo di verificare l'esistenza di una differenza tra l'entropia del *fix* rispetto alla natura di questi. +L'analisi è stata svolta sia a livello di file sia a livello di linee, quindi per ogni commit del dataset è stato necessario individuare sia il numero di file che hanno subito delle modifiche, sia il numero di linee alterate, considerando in questo modo sia le aggiunte che le rimozioni. + +Inoltre per poter valutare l'entità del cambiamento è stato necessario conoscere anche il numero totale di file e di linee di ogni progetto. +Questi valori sono stati calcolati attraverso la storia `git` del branch `master`[^branch-master]. +Per ogni commit sono stati individuati i file aggiunti ($+1$) e rimossi ($-1$) in modo tale da poter calcolare il delta-cambiamento del commit. +Eseguendo la somma di questo delta su tutti i commit si è ottenuto il numero totale di file del progetto. +In modo analogo si è proceduto anche per quanto riguarda le linee. + +[^branch-master]: Oltre al branch `master` è stato considerato anche il branch `main` diventato molto comune dopo le proteste del movimento Black Lives Matter e il branch `master-V2` unico branch utilizzato da un progetto. + +Una volta note queste informazioni preliminari è stato possibile calcolare l'entropia dei *fix* che è stata riportata nei boxplot[^boxplot-entropy] in @fig:entropy. +Dal boxplot in @fig:files-entropy è possibile notare una distribuzione equivalente per le due tipologie di fix. +Una situazione analoga si riscontra anche nell'analisi sulle linee (@fig:lines-entropy) anche se in questo caso è possibile notare che i valori di entropia associati ai fix di \ac{ML} sono shiftati leggermente verso l'alto. + +[^boxplot-entropy]: Per ragioni di visualizzazione è stato scelto il $95-esimo$ quantile come limite superiore di entrambi i grafici. + +\begin{figure}[!ht] +\subfloat[Entropia calcolata sui files\label{fig:files-entropy}]{% +\includegraphics[width=0.45\textwidth]{src/figures/files-entropy.pdf} + } + \hfill +\subfloat[Entropia calcolata sulle linee\label{fig:lines-entropy}]{% + \includegraphics[width=0.45\textwidth]{src/figures/lines-entropy.pdf} + } +\caption{Entropia in base al tipo di fix} + \label{fig:entropy} +\end{figure} + ## RQ4: come varia il livello di discussione tra ML bug e altri bug? ## RQ5: come varia il time-to-fix tra ML bug e altri bug? diff --git a/src/figures/files-entropy.pdf b/src/figures/files-entropy.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f5c042aa1fcaa4dae1e0cc92c6e203a94483b012 GIT binary patch literal 13263 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 literal 0 HcmV?d00001