master-thesis/src/chapter_1.md

3.3 KiB

Introduzione

La storia dell'industria dello sviluppo software è caratterizzata da diversi cambiamenti rispetto alle applicazioni dominati. Negli anni ottanta il dominio dominante era quello dei personal computer, puoi abbiamo avuto Internet a cui è seguita la nascita del Web al \ac{CERN}. Nel 2007 con l'annuncio del primo iPhone è inizia l'era del mobile computing a cui è seguita quella del cloud computing. Negli ultimi anni l'industria non è stata a guardare, ma ha dato vita a sempre più prodotti che fanno uso di \ac{AI} e \ac{ML}. Gli strumenti e i software che fanno uso di queste tecnologie sono ormai parte della nostra vita quotidiana e pervadono i campi più disparati. Tra questi sicuramente possiamo annoverare: riconoscimento di immagini, diagnosi di malattie, \ac{NLP}, guida autonoma e riconoscimento vocale.

La crescente produzione di software basato sul \acl{ML} ha generato un forte impulso anche per quanto riguarda la ricerca. L'attenzione non è stata puntata unicamente sullo studio di nuovi modelli e architetture, ma anche sul processo di sviluppo di questi prodotti per andare a valutare i vari problemi da un punto di vista ingegneristico. In letteratura non mancano studi atti ad evidenziare le differenze tra progetti di \ac{ML} e progetti classici [@gonzalez2020statemluniverse10]. Ne tanto meno confronti dei progetti rispetto alle dipendenze e alle librerie utilizzate [@han2020empiricalstudydependency].

Molti studi sono, invece, incentrati sulle problematiche legate allo sviluppo di applicazioni di \acl{ML}. In alcuni casi l'analisi è stata svolta per librerie specifiche, in altri casi il focus è stato puntato sulle discussioni di \ac{SO}. In altri casi ancora l'attenzione è stata rivolta su problematiche specifiche come quella del \ac{SATD} [@liu2021exploratorystudyintroduction].

Anche il seguente lavoro si concentra sui difetti riscontrati all'interno delle applicazioni di \acl{ML}. In questo caso però la ricerca di differenze è legata agli interventi di issue fixing relativi al \ac{ML} rispetto ad interventi di correzione generici.

Obbiettivi della tesi

Questo studio vuole verificare la presenza di differenze, all'interno di progetti di \acl{ML}, rispetto a come sono trattate le issues legate a tematiche di \ac{ML} e quelle generiche. In particolare si vuole capire come la risoluzione di queste problematiche va ad impattare sull'architettura, sia in termini di moduli modificati sia in termini di entropia generata. Si vuole anche scoprire se sono presenti delle fasi del processo di sviluppo che sono più critiche di altre. Infine si vuole capire se le issues sono trattate tutte allo stesso modo per quanto riguarda il livello di discussione e il tempo necessario alla loro risoluzione.

Struttura della tesi

Nella sezione [-@sec:related-works] viene svolta una panoramica sullo stato dell'arte. Nella sezione [-@sec:methodology] vengono presentate le \ac{RQ}, viene descritta la procedura utilizzata per la raccolta dei commit e delle issues e come queste sono state classificate. Inoltre viene illustrata la metodologia di analisi impiegata per lo studio di ogni \ac{RQ}. I risultati delle analisi e una discussione qualitativa su alcuni casi estremi sono riportati nella sezione [-@sec:results]. Infine la sezione [-@sec:conclusions] chiude questa tesi.