Despite large investments in different areas of software engineering, many deployed software applications fail at some point. Even though most software applications are tested before they are released to customers, these applications still contain production (or field) functional faults that result in field failures, which have exorbitant cost and sometimes lead to the loss of human lives. Existing automatic debugging approaches are rarely applied to localizing production faults for field failures due to their limitations. The goal of this thesis is therefore to create a novel theoretical foundation that allows stakeholders to predict and localize faults for field failures automatically with a high degree of precision using symptoms only (e.g., the sign of the output value is incorrect) and without instrumenting deployed applications to collect runtime data, thus avoiding the overhead, and without having any tests with oracles to uncover the fault, without performing contrasting successful and failed runs, and without collecting runtime data from field failures. With this theoretical foundation, researchers can collaborate more closely in planning the future of fault localization by expanding each other’s results based on probabilistic graphical models as common abstractions.

Nonostante i grandi investimenti in diversi settori dell’ingegneria del software, molte ap- plicazioni continuano a fallire anche dopo essere state distribuite. Infatti, anche se la maggior parte di esse sono sottoposte ad una fase di test prima di essere rilasciate ai clienti, tutte le applicazioni contengono guasti funzionali che risultano in errori nel corretto funzionamento del software durante la fase di produzione. Esistono diverse ragioni per cui i test non sono pien- amente in grado di localizzare tutti i bug efficentemente, basti dire che bug di questo genere hanno costi esorbitanti e talvolta portano alla perdita di vite umane. Attualmente, per ́ o, le tecniche esistenti per automatizzare la fase di debug sono rara- mente applicate alla localizzazione di bug in fase di produzione a causa delle loro limitazioni. L’obiettivo di questa tesi ́e quindi quello di creare un nuovo fondamento teorico e pratico che consenta alle parti interessate di prevedere e localizzare tali bug: • con un alto grado di precisione • utilizzando solo i sintomi riportati (per esempio, il segno di una variabile dovrebbe essere negativo, ma risulta invece positivo) • senza l’aggiunta di linee di codice addizionali per raccogliere dati durante l’esecuzione all’interno dell’applicazione distribuita ai clienti, evitando cos ́ı perdita di perfomance • senza la presenza di alcun oracolo presente per i vari test 12 • senza eseguire alcuna analisi dal lato utente • senza avere a disposizione informazioni molto accurate riportate da parte degli utenti A questo fine proponiamo un nuovo framework per localizzare automaticamente guasti fun- zionali in fase di produzione (ALFFFFFA o α 5 ) che consenta alle parti interessate di inserire i sintomi di un errore verificatosi durante l’esecuzione di una data applicazione gi ́a distribuita e, dati valori di input e di configurazione per il software, sia in grado di riportare non solo posizioni nel codice sorgente che risulteranno avere la pi ́ u alta probabilit ́a di essere responsabili per lo specifico bug, ma suggerisca anche tracce di esecuzioni dal bug riportato alla linea di codice responsabile per esso, raccomandando modifiche al codice al fine di risolvere tale bug.

Design and development of a probabilistic framework for automatic software fault localization

PAGANO, DAVIDE
2014/2015

Abstract

Despite large investments in different areas of software engineering, many deployed software applications fail at some point. Even though most software applications are tested before they are released to customers, these applications still contain production (or field) functional faults that result in field failures, which have exorbitant cost and sometimes lead to the loss of human lives. Existing automatic debugging approaches are rarely applied to localizing production faults for field failures due to their limitations. The goal of this thesis is therefore to create a novel theoretical foundation that allows stakeholders to predict and localize faults for field failures automatically with a high degree of precision using symptoms only (e.g., the sign of the output value is incorrect) and without instrumenting deployed applications to collect runtime data, thus avoiding the overhead, and without having any tests with oracles to uncover the fault, without performing contrasting successful and failed runs, and without collecting runtime data from field failures. With this theoretical foundation, researchers can collaborate more closely in planning the future of fault localization by expanding each other’s results based on probabilistic graphical models as common abstractions.
GRECHANIK, MARC
ING - Scuola di Ingegneria Industriale e dell'Informazione
18-dic-2015
2014/2015
Nonostante i grandi investimenti in diversi settori dell’ingegneria del software, molte ap- plicazioni continuano a fallire anche dopo essere state distribuite. Infatti, anche se la maggior parte di esse sono sottoposte ad una fase di test prima di essere rilasciate ai clienti, tutte le applicazioni contengono guasti funzionali che risultano in errori nel corretto funzionamento del software durante la fase di produzione. Esistono diverse ragioni per cui i test non sono pien- amente in grado di localizzare tutti i bug efficentemente, basti dire che bug di questo genere hanno costi esorbitanti e talvolta portano alla perdita di vite umane. Attualmente, per ́ o, le tecniche esistenti per automatizzare la fase di debug sono rara- mente applicate alla localizzazione di bug in fase di produzione a causa delle loro limitazioni. L’obiettivo di questa tesi ́e quindi quello di creare un nuovo fondamento teorico e pratico che consenta alle parti interessate di prevedere e localizzare tali bug: • con un alto grado di precisione • utilizzando solo i sintomi riportati (per esempio, il segno di una variabile dovrebbe essere negativo, ma risulta invece positivo) • senza l’aggiunta di linee di codice addizionali per raccogliere dati durante l’esecuzione all’interno dell’applicazione distribuita ai clienti, evitando cos ́ı perdita di perfomance • senza la presenza di alcun oracolo presente per i vari test 12 • senza eseguire alcuna analisi dal lato utente • senza avere a disposizione informazioni molto accurate riportate da parte degli utenti A questo fine proponiamo un nuovo framework per localizzare automaticamente guasti fun- zionali in fase di produzione (ALFFFFFA o α 5 ) che consenta alle parti interessate di inserire i sintomi di un errore verificatosi durante l’esecuzione di una data applicazione gi ́a distribuita e, dati valori di input e di configurazione per il software, sia in grado di riportare non solo posizioni nel codice sorgente che risulteranno avere la pi ́ u alta probabilit ́a di essere responsabili per lo specifico bug, ma suggerisca anche tracce di esecuzioni dal bug riportato alla linea di codice responsabile per esso, raccomandando modifiche al codice al fine di risolvere tale bug.
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
2015_12_Pagano.pdf

accessibile in internet solo dagli utenti autorizzati

Descrizione: Thesis pdf
Dimensione 1.62 MB
Formato Adobe PDF
1.62 MB Adobe PDF   Visualizza/Apri

I documenti in POLITesi 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: https://hdl.handle.net/10589/115045