EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOY
Μαρίνα Γέραλη
1. Αυτόματη Παραγωγή Σεναρίων Ελέγχου με
Χρήση Αποθετηρίων Κώδικα
Μαρίνα Γέραλη
ΑΕΜ: 7414
Υπό την επίβλεψη του Επίκουρου Καθηγητή
κ. Ανδρέα Λ. Συμεωνίδη
και του υποψήφιου Διδάκτορα
κ. Θεμιστοκλή Διαμαντόπουλου
29/6/2017
2. 2. Ορισμός Προβλήματος
1. Εισαγωγή
3. Σκοπός της Διπλωματικής
4. Ανάλυση του Συστήματος
5. Πειράματα
6. Συμπεράσματα-Μελλοντική Εργασία
2
3. 2. Ορισμός Προβλήματος
1. Εισαγωγή
3. Σκοπός της Διπλωματικής
4. Ανάλυση του Συστήματος
5. Πειράματα
6. Συμπεράσματα-Μελλοντική Εργασία
3
4. Ψηφιακή Εποχή (Εποχή της Πληροφορίας)
Ελεύθερη ανταλλαγή και μετάδοση πληροφορίας
Ολοένα αυξανόμενη διάδοση του Open Source λογισμικού
Χρήση αποθηκών λογισμικού ανοικτού κώδικα
Επαναχρησιμοποίηση κώδικα
4
Αποθήκη Λογισμικού Χρήστες Projects
Github 26.000.000 38.000.000
Bitbucket 5.000.000 100.000
Sourceforge 3.700.000 500.000
Launchpad 2.950.000 375.600
Assembla 800.000 526.600
Gitlab 100.000 546.000
5. 5
2. Ορισμός Προβλήματος
1. Εισαγωγή
3. Σκοπός της Διπλωματικής
4. Ανάλυση του Συστήματος
5. Πειράματα
6. Συμπεράσματα-Μελλοντική Εργασία
6. Πληθώρα έργων λογισμικού (projects) στο διαδίκτυο ο κώδικας που
ένας προγραμματιστής κατασκευάζει ενδέχεται να είναι ήδη
υλοποιημένος
Μείωση χρόνου και κόπου συγγραφής
Βελτίωση ποιότητας κώδικα
Χρήση Μηχανών Αναζήτησης Κώδικα (Code Search Engines, CSEs) που
συνεργάζονται με αποθήκες λογισμικού
Ταχύτερη αναζήτηση από ό,τι χειροκίνητα
Χρήση λέξεων-κλειδιών (keywords) για την έναρξη της αναζήτησης
Κατασκευή Συστημάτων Συστάσεων στην Τεχνολογία Λογισμικού
(Recommendation Systems in Software Engineering, RSSE)
6
7. Συνεργάζονται με CSEs για να έχουν πρόσβαση σε αποθήκες λογισμικού
Προτείνουν στο χρήστη επαναχρησιμοποιήσιμες μεθόδους που
ταιριάζουν στο σύστημά του
Συχνά, δέχονται ως είσοδο ένα σενάριο ελέγχου (test case) που ελέγχει
την καταλληλότητα των επιστρεφόμενων αποτελεσμάτων
7
8. Ο έλεγχος λογισμικού είναι εξίσου απαραίτητος όσο και η ανάπτυξή
του, καθώς
εγγυάται την καλή λειτουργία ενός project
εντοπίζει πιθανή προβληματική συμπεριφορά του λογισμικού
επιβεβαιώνει την ποιότητα και αξιοπιστία του λογισμικού
Είναι σημαντικό να γίνεται κατά τη φάση της ανάπτυξης του έργου
λογισμικού και όχι αργότερα
Είναι ιδιαίτερα δαπανηρός, αν γίνει αφού υλοποιηθεί το project
Είναι εξαιρετικά επίπονη διαδικασία για την πλειονότητα των
προγραμματιστών
8
9. Ιδέα: κατασκευή σεναρίων ελέγχου από επαναχρησιμοποιήσιμο κώδικα
Τα RSSE συστήματα της βιβλιογραφίας λειτουργούν:
Με γνωστό test case
Με γνωστά τα ονόματα των μεθόδων που είναι επιθυμητό να υλοποιηθούν
Με άγνωστο περιεχόμενο για κάθε μέθοδο
Αντίθετα, το πρόβλημα απαιτεί:
Άγνωστο test case
Γνωστά ονόματα μεθόδων που πρόκειται να ελεγχθούν
Γνωστό περιεχόμενο για αυτές τις μεθόδους
9
10. 10
2. Ορισμός Προβλήματος
1. Εισαγωγή
3. Σκοπός της Διπλωματικής
4. Ανάλυση του Συστήματος
5. Πειράματα
6. Συμπεράσματα-Μελλοντική Εργασία
11. Κατασκευή ενός συστήματος που
Εντοπίζει επαναχρησιμοποιήσιμες μεθόδους ελέγχου για τις μεθόδους
που υλοποιεί ο χρήστης
Παράγει αυτοματοποιημένα σενάρια ελέγχου από τις παραπάνω
μεταγλωττίσιμες μεθόδους ελέγχου.
Δίνει τη δυνατότητα στο χρήστη να δημιουργήσει το δικό του σενάριο
ελέγχου, από όλες τις προτεινόμενες μεθόδους.
Το σύστημα επίσης:
Συνεργάζεται με δυναμική αποθήκη λογισμικού
Χρησιμοποιεί ένα μοντέλο mining-scoring
Πραγματοποιεί μετατροπές στα επιστρεφόμενα αποτελέσματα
Ελέγχει τη μεταγλωττισιμότητα και εκτελεσιμότητα των αποτελεσμάτων
Διαθέτει εφαρμογή για την παρουσίαση των αποτελεσμάτων
11
12. 1212
2. Ορισμός Προβλήματος
1. Εισαγωγή
3. Σκοπός της Διπλωματικής
4. Ανάλυση του Συστήματος
5. Πειράματα
6. Συμπεράσματα-Μελλοντική Εργασία
14. Υπογραφή ερωτήματος: το σύνολο της κλάσης, των ονομάτων
μεθόδων, των επιστρεφόμενων τύπων και των τύπων των
ορισμάτων για τις μεθόδους που αιτείται ο προγραμματιστής.
Χρήση ASTExtractor για την εξαγωγή αυτής της πληροφορίας
14
15. Σχηματισμός ερωτήματος υπό τη μορφή ElasticSearch query
Αποστολή αιτήματος στη μηχανή αναζήτησης κώδικα AGORA
συνεργάζεται με το GitHub
διαθέτει API για την υποβολή των ερωτημάτων
15
16. 16
Submit query
For every file
check
At least one class per
file
Junit imported
At least one non empty
method per file
Non duplicate file
ASTExtractor
Download file and
AST
Reached 200 files?
True
Parser
No
Yes
False
17. Στόχος ο εντοπισμός των μεθόδων που ελέγχονται μέσα στις
μεθόδους ελέγχου
Αρκεί να βρούμε τις μεταβλητές του τύπου της κλάσης που
ελέγχεται και να εξετάσουμε τις μεθόδους που αυτές καλούν.
17
18. Χρήση ASTExtractor για κάθε αρχείο που πέρασε από το προηγούμενο
βήμα
Εντοπισμός
κλάσεων
μη κενών μεθόδων ελέγχου, καθώς και τύπων ορισμάτων αυτών
μεταβλητών που χρησιμοποιούνται από τις μεθόδους ελέγχου
μεταβλητών κάθε κλάσης
Εύρεση της κλάσης που ελέγχεται στο τρέχον αρχείο (βασική κλάση)
Εντοπισμός των μεθόδων που καλούν οι μεταβλητές του τύπου της
βασικής κλάσης
Εύρεση των παραμέτρων και των επιστρεφόμενων τύπων αυτών
Δημιουργία ενός dictionary με την παραπάνω πληροφορία για όλα τα
αρχεία
18
20. Βαθμολογεί τα αρχεία συγκρίνοντας πρώτα σε επίπεδο μεθόδου
και έπειτα σε επίπεδο κλάσης.
Τμηματοποίηση οντοτήτων (κλάσεις, μέθοδοι, επιστρεφόμενοι
τύποι, τύποι παραμέτρων)
Δημιουργία 4 λεξικών από τις οντότητες της υπογραφής του
ερωτήματος
Χρήση του VSM μοντέλου για την αναπαράσταση των
διαφορετικών οντοτήτων στον ίδιο διανυσματικό χώρο
Υπολογισμός ομοιότητας συνημιτόνου μεταξύ των διανυσμάτων
20
21. Είναι η διαδικασία αποσύνθεσης των ονομάτων στα επιμέρους ονόματα
που αυτά περιέχουν. Δηλαδή:
1) Διαχωρισμός με βάση τα κεφαλαία γράμματα ή/και τις κάτω παύλες (_)
2) Απομάκρυνση ειδικών χαρακτήρων (<,>, [, ])
3) Απομάκρυνση stop words
4) Απομάκρυνση λέξεων μικρού μήκους
5) Απομάκρυνση αριθμών
6) Απομάκρυνση καταλήξεων
21
Name Tokens
testPushAndPop [‘test’, ‘push’, ‘pop’]
doing_some_calculations [‘do’, ‘some’, ‘calculate’]
List<String> [‘list’, ‘string’]
myArray[] [‘array’]
MD5 [‘md’]
22. Αρχικά, γίνεται αναπαράσταση των δεδομένων ως προς ένα λεξικό.
Έστω το λεξικό [He, likes, basketball, more, than, baseball]
Όπου tf η συχνότητα
εμφάνισης ενός όρου του
λεξικού στο αντίστοιχο
κείμενο
Το διάνυσμα του τελευταίου πίνακα είναι το γινόμενο tf*idf
Χρήση ομοιότητας συνημιτόνου για την ποσοτικοποίηση της ομοιότητας δύο διανυσμάτων
22
Κείμενο tf Normalized tf
Anna likes dogs more than cats,
because dogs are more cute.
(0, 1, 0, 2, 1, 0) (0, 0.40824830, 0, 0.81649658, 0.40824830, 0)
Both basketball and baseball are
team games.
(0, 0, 1, 0, 0, 1) (0, 0, 0.70710678, 0, 0, 0.70710678)
Κείμενο Διάνυσμα στον 6-διάστατο χώρο
Anna likes dogs more than
cats, because dogs are more
cute.
(0, 0.44444441, 0, 0.88888880, 0. 44444441, 0)
Both basketball and baseball
are team games.
(0, 0, 0.76980028, 0, 0, 0.76980028)
23. Βαθμολογία κλήσης μεθόδου:
Βαθμολογία μεθόδου ελέγχου = max(βαθμολογία i-στης κλήσης
μεθόδου), όπου i=1, …, N οι Ν μέθοδοι που καλούνται στο εσωτερικό
μίας μεθόδου ελέγχου
Εφαρμογή του Προβλήματος του Σταθερού Γάμου, ώστε να γίνει
βέλτιστη αντιστοίχιση των ζητούμενων μεθόδων με τις διαθέσιμες.
Βαθμολογία κλάσης:
Όόπου i=1, …, M, οι Μ μέθοδοι ελέγχου του εκάστοτε αρχείου
Βαθμολογία αρχείου = max(βαθμολογία i-στης κλάσης), όπου i=1, …, K,
οι Κ κλάσεις ενός αρχείου
23
24. Εξάγονται οι μέθοδοι ελέγχου κάθε αρχείου για τις οποίες αυτό
συγκεντρώνει score > 0.4, ως προς τις ζητούμενες μεθόδους.
Τριπλός ρόλος:
Μετασχηματίζει τις προτεινόμενες μεθόδους ελέγχου
Ελέγχει τη δυνατότητα μεταγλώττισης και εκτέλεσής τους
Δημιουργεί πιθανά test cases από όλες τις διαφορετικές
μεταγλωττίσιμες μεθόδους ελέγχου.
24
25. Δέχεται στην είσοδό του τον κώδικα του χρήστη.
Ο χρήστης μπορεί να επιλέξει για ποιες μεθόδους ζητά μεθόδους ελέγχου.
Για κάθε αιτούμενη μέθοδο το σύστημα:
Παρουσιάζει τη βέλτιστη μέθοδο, καθώς και μία ταξινομημένη λίστα
όλων των προτεινόμενων μεθόδων.
Παρέχει πληροφορίες σχετικά με τη μεταγλωττισιμότητα και την
εκτελεσιμότητα αυτών.
Δίνει τη δυνατότητα διαμόρφωσης του επιθυμητού σεναρίου ελέγχου
από το χρήστη, επιλέγοντας όποιες μεθόδους ελέγχου αυτός θέλει.
Παρέχει έτοιμα σενάρια ελέγχου, τα οποία είναι μεταγλωττίσιμα και
εκτελέσιμα, εφόσον ο χρήστης το επιλέξει.
25
30. 3030
2. Ορισμός Προβλήματος
1. Εισαγωγή
3. Σκοπός της Διπλωματικής
4. Ανάλυση του Συστήματος
5. Πειράματα
6. Συμπεράσματα-Μελλοντική Εργασία
31. 31
Χρησιμοποιήθηκε επίσης το ποσοστό μεταγλωττίσιμων (%C) και
εκτελέσιμων αρχείων (%P) κάθε μεθόδου.
Μόνο για το πρώτο πείραμα, υπολογίζεται επιπλέον το Μήκος
Αναζήτησης, που είναι ο αριθμός των μη σχετικών αποτελεσμάτων που
πρέπει να προσπελαστούν από το χρήστη, μέχρι να καταλήξει σε κάποιο
σχετικό.
Ως σχετικό, θεωρείται ένα μεταγλωττίσιμο και επιτυχώς εκτελέσιμο
αποτέλεσμα.
35. Για τη διεξαγωγή αυτού του πειράματος είναι απαραίτητο:
Το ερώτημα να περιέχει τουλάχιστον δύο μεθόδους.
Όλες οι μέθοδοι που συμμετέχουν στο σχηματισμό των test cases να
έχουν τουλάχιστον ένα μεταγλωττίσιμο αποτέλεσμα.
Να υπάρχουν τουλάχιστον δύο διαφορετικές μέθοδοι που θα
διαμορφώσουν το τελικό test case.
Έστω, για παράδειγμα, ότι για το ερώτημα Stack:
• Βρέθηκαν 5 μεταγλωττίσιμες μέθοδοι ελέγχου για τη μέθοδο push
• Βρέθηκαν 10 μεταγλωττίσιμες μέθοδοι ελέγχου για τη μέθοδο pop
• Θα παραχθούν συνολικά 50 πιθανά σενάρια ελέγχου
35
38. 383838
2. Ορισμός Προβλήματος
1. Εισαγωγή
3. Σκοπός της Διπλωματικής
4. Ανάλυση του Συστήματος
5. Πειράματα
6. Συμπεράσματα-Μελλοντική Εργασία
39. Αντιλαμβανόμαστε ότι:
Τα μέχρι τώρα RSSE συστήματα της βιβλιογραφίας αδυνατούν να
επιλύσουν το πρόβλημα της επαναχρησιμοποίησης κώδικα ελέγχου.
Οι μετασχηματισμοί είναι απαραίτητοι, ώστε να δώσουν μεγαλύτερες
πιθανότητες μεταγλώττισης σε μία μέθοδο ελέγχου.
Είναι εφικτός ο συνδυασμός μεθόδων ελέγχου από διαφορετικά
αρχεία, με σκοπό την παραγωγή test cases.
Μελλοντικές βελτιώσεις του συστήματός μας:
Επίλυση εξαρτήσεων (Dependency Resolution)
Προσθήκη επιπλέον CSEs
Επέκταση και σε άλλες γλώσσες προγραμματισμού, πέρα της Java.
39