17
ANALISI DELLE DIFFERENZE STRUTTURALI NELLE ESPRESSIONI REGOLARI COSTRUITE DA PROGRAMMATORI E DA STRUMENTI AUTOMATICI Laureando Marco Potok Relatore Prof. Alberto Bartoli Correlatore Prof. Eric Medvet UNIVERSITÀ DEGLI STUDI DI TRIESTE Dipartimento di ingegneria e architettura Corso di laurea triennale in Ingegneria dell’Informazione

Analisi delle differenze strutturali nelle espressioni regolari costruite da programmatori e da strumenti automatici

Embed Size (px)

Citation preview

ANALISI DELLE DIFFERENZE STRUTTURALI NELLE ESPRESSIONI REGOLARI

COSTRUITE DA PROGRAMMATORI E DA STRUMENTI AUTOMATICI

Laureando

Marco PotokRelatore

Prof. Alberto Bartoli

Correlatore

Prof. Eric Medvet

UNIVERSITÀ DEGLI STUDI DI TRIESTE

Dipartimento di ingegneria e architetturaCorso di laurea triennale in Ingegneria dell’Informazione

Obbiettivo della tesi

Caratterizzare i punti deboli delle espressioni

regolari costruite automaticamente

• analizzando la loro struttura

• confrontandole con le espressioni costruite da

programmatori.

Motivazione

Parte della ricerca condotta dal Machine Learning Lab dell’Università di Trieste.

La ricerca si occupa della generazione automatica di espressioni regolari a partire da esempi del comportamento desiderato.

Espressione regolare (I)

• È una stringa (sequenza di caratteri)

• Descrive in maniera compatta un pattern sintattico

• Identifica un insieme di stringhe

• Numeri di telefono in un testo

• Indirizzi IP in un file di log

• …

Spesso chiamata regex dall’inglese regular expression

Espressione regolare (II)

È di buona qualità quando:

• È di lunghezza contenuta

• Identifica tutte le stringhe volute

Metodo di Analisi (I)

I dati analizzati sono stati ottenuti dallo svolgimento

degli stessi 9 task da parte di 1724 programmatori

e dallo strumento automatico.

Data-set composto da:

• 12000 campioni macchina

• 9842 campioni umani

Metodo di Analisi (II)

Parametri analizzati:

• Lunghezza

• Uso dei blocchi base

• Ascisse: lunghezza

(scala log.)

• Ordinate: densità

(normalizzata)

Lunghezza (I)

La macchina tende a generare espressioni più corte

Lunghezza (II)

Grafici relativi ai 9 task

Blocchi base (I)

Differenze più evidenti:

• L’utente macchina usa più classi

• es. “[A-Z0-9]”

• L’utente programmatore usa più costanti

• es. “http”

Uomo Macchina

Quindi...

Lo strumento automatico

• Tende a generare espressioni più corte

MA

• Usa più classi e meno costanti• Negli ultimi 4 task tende a generalizzare più

dell'umano costruendo espressioni lunghe

Ulteriore analisi (I)

I dati sono divisi in due gruppi

Primo gruppo:• Comprende i task 1-5• La macchina genera espressioni corte

Secondo gruppo:• Comprende i task 6-9• La macchina genera espressioni lunghe

Ulteriore analisi (II)

Nel secondo gruppo:• Ancora più classi• Ancora meno costanti

Uomo Macchina Uomo Macchina

Ulteriore analisi (III)

Uomo Macchina Uomo Macchina

Conclusioni

Lo strumento automatico:• Tende a generare espressioni regolari più

corte rispetto a quelle costruite dai programmatori

• Usa più classi e meno costanti per la costruzione delle espressioni

• Nei task più complicati l’uso delle classi aumenta causando un aumento della lunghezza dell’espressione

Sviluppi futuri

• Individuazione delle caratteristiche dei task che causano un aumento della lunghezza

• Analisi più approfondita dell’eventuale correlazione tra lunghezza, uso dei blocchi base e qualità dell’espressione

GRAZIE PER L’ATTENZIONE