Automatic generation of inspection checklist by user profiling
1. UNIVERSITÀ DEGLI STUDI DEL MOLISE
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Laurea in Informatica
Relatore
Prof. Fausto Fasano
Candidato
Nicola Del Gobbo
118360
Generazione automatica delle checklist
di ispezione tramite user profiling
2. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 2
Il processo di sviluppo software
• Attività strutturali.
• Attività di supporto (“ombrello”).
Processo di sviluppo
software
Attività strutturali
Attività
“ombrello” Ispezioni software
3. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 3
Le ispezioni software
• Processo altamente rigoroso introdotto da Michael
Fagan nel 1976.
• Scopo: identificare i difetti e verificare che l’artefatto
abbia determinate caratteristiche.
4. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 4
Una nuova idea: la Pre Ispezione
Creazione
dell’artefatto
software
Pre Ispezione
Ispezione
dell’artefatto
software
5. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 5
Le fasi della Pre Ispezione
Data
Collection
Profiling Selection
Checklist
Generation
Light
Inspection
6. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 6
Pre Ispezione: Data Collection
Data
Collection
Profiling Selection
Checklist
Generation
Light
Inspection
7. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 7
Pre Ispezione: Profiling
Data
Collection
Profiling Selection
Checklist
Generation
Light
Inspection
8. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 8
Pre Ispezione: Selection
Data
Collection
Profiling Selection
Checklist
Generation
Light
Inspection
9. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 9
Pre Ispezione: Checklist Generation
Data
Collection
Profiling Selection
Checklist
Generation
Light
Inspection
10. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 10
Pre Ispezione: Light Inspection
Data
Collection
Profiling Selection
Checklist
Generation
Light
Inspection
11. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 11
EPit: un tool per il processo di Pre Ispezione
• Deve supportare in pieno tutte le fasi della Pre
Ispezione.
• Nell’ambito delle ispezioni si occupa del code inspection.
• Artefatto: codice sorgente di tipo Java.
• EPit (Eclipse Pre Inspection Tool) plug-in dell’IDE Eclipse.
12. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 12
Profilo di un programmatore
Numero di errori presente
Tipo di errore
Layout
Bugs generati
13. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 13
Data Mining: una visione generale sul processo
Dati grezzi Dati
aggregati e
puliti
Dati
trasformati
Classificazione e
validazione
14. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 14
Learning model scelti(1)
• Problema di classificazione.
• Principio guida: “Simplicity First”.
• Sperimentazioni.
Naïve Bayes Decision tree Bayesian network
15. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 15
Learning model scelti(2)
Istanze correttamente
classificate in %
Istanze non correttamente
classificate in %
Decision tree 68,75 31,25
Naive Bayes 75 25
Bayesian Network 81,25 18,75
Istanze correttamente
classificate in %
Istanze non correttamente
classificate in %
Decision tree 81,25 18,75
Naive Bayes 75 25
Bayesian Network 81,25 18,75
Risultati della tenfold cross-validation
Risultati della threefold cross-validation
16. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 16
EPit: data mining al lavoro(1)
Version Control System
Bug Track System
Software Inspection System
Elenco di risorse (codice
sorgente) e bug associati
CVS – Git – SVN
Bugzilla – JIRA
SmartBear
17. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 17
EPit: data mining al lavoro(2)
Elenco di risorse (codice
sorgente) e bug associati
Codice sorgente Tool automatico di ispezione
Checklist
72 Domande divise per 11 categorie:
• MODULARITY DEFECT (MD)
• COMMENT DEFECT (CM)
• LAYOUT DEFECT (LD)
• NAMING CONVENTION (NC)
• COMPUTATION COMPLEXITY DEFECT (CC)
• COMPARISON RELATIONAL DEFECT (CRD)
• CONTROL FLOW DEFECT (CF)
• CLASS DESIGN DEFECT (CD)
• VARIABLE ATTRIBUTE AND CONSTANT DEFECT (VC)
• MODULE INTERFACE DEFECT (MI)
• METHODS DEFECT (FD)
18. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 18
EPit: data mining al lavoro(3)
Errore sui
commenti
Errore sul nome
delle variabili
Errore di codice
duplicato
Errore sul
metodo clone
Numero di un
certo tipo di errori 0 3 1 0
Elenco di risorse (codice
sorgente) e bug associati
Estrazione delle informazioni
dell’eventuale bug collegato
Errore sui
commenti
Errore sul nome
delle variabili
Errore di codice
duplicato
Errore sul
metodo clone
Severity
0 3 1 0 minor
19. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 19
EPit: data mining al lavoro(4)
Errore sui
commenti
Errore sul nome
delle variabili
Errore di codice
duplicato
Errore sul
metodo clone
Severity
0 3 1 0 minor
Errore sui
commenti
Errore sul nome
delle variabili
Errore sul
metodo clone
Severity Errore di codice
duplicato
0 3 0 minor yes
20. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 20
EPit: data mining al lavoro()
Errore sui
commenti
Errore sul nome
delle variabili
Errore sul
metodo clone
Severity Errore di codice
duplicato
1 2 0 trivial ?
Codice sorgente
Istanza da classificare
21. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 21
EPit: data mining al lavoro(6)
Dati di training
Istanza da classificare
?
Classificatore
Yes
No
Checklist
22. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 22
EPit: un esempio di utilizzo
• Installazione
• Configurazione
• Profiling
• Generazione di checklist
• Gestione delle checklist
23. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 23
Installazione(1)
• it.unimol.checkstyle_5.3.3.jar
• it.unimol.core.epit_1.0.0.jar
• it.unimol.ui.epit_1.0.0.jar
• org.apache.commons.io_2.0.1.jar
• weka_3.6.4.jar
24. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 24
Installazione(2)
25. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 25
Installazione(3)
26. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 26
Installazione(4)
27. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 27
Configurazione(1)
28. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 28
Configurazione(2)
29. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 29
Configurazione(3)
30. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 30
Configurazione(4)
31. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 31
Configurazione(5)
32. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 32
Configurazione(6)
33. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 33
Configurazione(7)
34. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 34
Configurazione(8)
35. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 35
Creazione del profilo(1)
36. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 36
Creazione del profilo(2)
37. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 37
Generazione delle checklist(1)
38. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 38
Generazione delle checklist(2)
39. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 39
Gestione delle checklist(1)
40. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 40
Gestione delle checklist(2)
41. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 41
Gestione delle checklist(3)
42. Generazione automatica delle checklist di ispezione tramite user profiling – Nicola Del Gobbo 42
Conclusioni e lavori futuri
• La classificazione è stata corretta nel 77% dei casi.
• Diminuzione densità di errori = risarmio potenziale compreso tra il 15-40%
• Sperimentazione in un ambiente reale.
• EPit: oltre il linguaggio Java.
• EPit: usare i dati di impiego dell’IDE per creare il profilo.
• EPit: migliorare l’efficienza dei modelli usati.
• EPit: maggiore usabilità (utilizzo di marker sul codice sorgente).
• Pre Ispezione: processo applicabile per qualsiasi tipo di artefatto software?
43. GRAZIE A TUTTI PER L’ATTENZIONE
”Stay hungry. Stay Foolish.”cit.(Steve Jobs)