Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Μαρίνα Γέραλη

90 views

Published on

Αυτόματη Παραγωγή Σεναρίων Ελέγχου με Χρήση
Αποθετηρίων Κώδικα

Published in: Education
  • Be the first to comment

  • Be the first to like this

Μαρίνα Γέραλη

  1. 1. Αυτόματη Παραγωγή Σεναρίων Ελέγχου με Χρήση Αποθετηρίων Κώδικα Μαρίνα Γέραλη ΑΕΜ: 7414 Υπό την επίβλεψη του Επίκουρου Καθηγητή κ. Ανδρέα Λ. Συμεωνίδη και του υποψήφιου Διδάκτορα κ. Θεμιστοκλή Διαμαντόπουλου 29/6/2017
  2. 2. 2. Ορισμός Προβλήματος 1. Εισαγωγή 3. Σκοπός της Διπλωματικής 4. Ανάλυση του Συστήματος 5. Πειράματα 6. Συμπεράσματα-Μελλοντική Εργασία 2
  3. 3. 2. Ορισμός Προβλήματος 1. Εισαγωγή 3. Σκοπός της Διπλωματικής 4. Ανάλυση του Συστήματος 5. Πειράματα 6. Συμπεράσματα-Μελλοντική Εργασία 3
  4. 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. 5 2. Ορισμός Προβλήματος 1. Εισαγωγή 3. Σκοπός της Διπλωματικής 4. Ανάλυση του Συστήματος 5. Πειράματα 6. Συμπεράσματα-Μελλοντική Εργασία
  6. 6.  Πληθώρα έργων λογισμικού (projects) στο διαδίκτυο ο κώδικας που ένας προγραμματιστής κατασκευάζει ενδέχεται να είναι ήδη υλοποιημένος  Μείωση χρόνου και κόπου συγγραφής  Βελτίωση ποιότητας κώδικα  Χρήση Μηχανών Αναζήτησης Κώδικα (Code Search Engines, CSEs) που συνεργάζονται με αποθήκες λογισμικού  Ταχύτερη αναζήτηση από ό,τι χειροκίνητα  Χρήση λέξεων-κλειδιών (keywords) για την έναρξη της αναζήτησης  Κατασκευή Συστημάτων Συστάσεων στην Τεχνολογία Λογισμικού (Recommendation Systems in Software Engineering, RSSE) 6
  7. 7.  Συνεργάζονται με CSEs για να έχουν πρόσβαση σε αποθήκες λογισμικού  Προτείνουν στο χρήστη επαναχρησιμοποιήσιμες μεθόδους που ταιριάζουν στο σύστημά του  Συχνά, δέχονται ως είσοδο ένα σενάριο ελέγχου (test case) που ελέγχει την καταλληλότητα των επιστρεφόμενων αποτελεσμάτων 7
  8. 8.  Ο έλεγχος λογισμικού είναι εξίσου απαραίτητος όσο και η ανάπτυξή του, καθώς  εγγυάται την καλή λειτουργία ενός project  εντοπίζει πιθανή προβληματική συμπεριφορά του λογισμικού  επιβεβαιώνει την ποιότητα και αξιοπιστία του λογισμικού  Είναι σημαντικό να γίνεται κατά τη φάση της ανάπτυξης του έργου λογισμικού και όχι αργότερα  Είναι ιδιαίτερα δαπανηρός, αν γίνει αφού υλοποιηθεί το project  Είναι εξαιρετικά επίπονη διαδικασία για την πλειονότητα των προγραμματιστών 8
  9. 9.  Ιδέα: κατασκευή σεναρίων ελέγχου από επαναχρησιμοποιήσιμο κώδικα  Τα RSSE συστήματα της βιβλιογραφίας λειτουργούν:  Με γνωστό test case  Με γνωστά τα ονόματα των μεθόδων που είναι επιθυμητό να υλοποιηθούν  Με άγνωστο περιεχόμενο για κάθε μέθοδο  Αντίθετα, το πρόβλημα απαιτεί:  Άγνωστο test case  Γνωστά ονόματα μεθόδων που πρόκειται να ελεγχθούν  Γνωστό περιεχόμενο για αυτές τις μεθόδους 9
  10. 10. 10 2. Ορισμός Προβλήματος 1. Εισαγωγή 3. Σκοπός της Διπλωματικής 4. Ανάλυση του Συστήματος 5. Πειράματα 6. Συμπεράσματα-Μελλοντική Εργασία
  11. 11. Κατασκευή ενός συστήματος που  Εντοπίζει επαναχρησιμοποιήσιμες μεθόδους ελέγχου για τις μεθόδους που υλοποιεί ο χρήστης  Παράγει αυτοματοποιημένα σενάρια ελέγχου από τις παραπάνω μεταγλωττίσιμες μεθόδους ελέγχου.  Δίνει τη δυνατότητα στο χρήστη να δημιουργήσει το δικό του σενάριο ελέγχου, από όλες τις προτεινόμενες μεθόδους. Το σύστημα επίσης:  Συνεργάζεται με δυναμική αποθήκη λογισμικού  Χρησιμοποιεί ένα μοντέλο mining-scoring  Πραγματοποιεί μετατροπές στα επιστρεφόμενα αποτελέσματα  Ελέγχει τη μεταγλωττισιμότητα και εκτελεσιμότητα των αποτελεσμάτων  Διαθέτει εφαρμογή για την παρουσίαση των αποτελεσμάτων 11
  12. 12. 1212 2. Ορισμός Προβλήματος 1. Εισαγωγή 3. Σκοπός της Διπλωματικής 4. Ανάλυση του Συστήματος 5. Πειράματα 6. Συμπεράσματα-Μελλοντική Εργασία
  13. 13. 13 DOWNLOADER SIGNATURE EXTRACTOR MATCHER PRESENTER TESTER PARSER Code Code Signature 200 files Abstract Syntax Tree Top rated results Transformed/compiled results Proposed results Selected from user results
  14. 14.  Υπογραφή ερωτήματος: το σύνολο της κλάσης, των ονομάτων μεθόδων, των επιστρεφόμενων τύπων και των τύπων των ορισμάτων για τις μεθόδους που αιτείται ο προγραμματιστής.  Χρήση ASTExtractor για την εξαγωγή αυτής της πληροφορίας 14
  15. 15.  Σχηματισμός ερωτήματος υπό τη μορφή ElasticSearch query  Αποστολή αιτήματος στη μηχανή αναζήτησης κώδικα AGORA  συνεργάζεται με το GitHub  διαθέτει API για την υποβολή των ερωτημάτων 15
  16. 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.  Στόχος ο εντοπισμός των μεθόδων που ελέγχονται μέσα στις μεθόδους ελέγχου  Αρκεί να βρούμε τις μεταβλητές του τύπου της κλάσης που ελέγχεται και να εξετάσουμε τις μεθόδους που αυτές καλούν. 17
  18. 18.  Χρήση ASTExtractor για κάθε αρχείο που πέρασε από το προηγούμενο βήμα  Εντοπισμός  κλάσεων  μη κενών μεθόδων ελέγχου, καθώς και τύπων ορισμάτων αυτών  μεταβλητών που χρησιμοποιούνται από τις μεθόδους ελέγχου  μεταβλητών κάθε κλάσης  Εύρεση της κλάσης που ελέγχεται στο τρέχον αρχείο (βασική κλάση)  Εντοπισμός των μεθόδων που καλούν οι μεταβλητές του τύπου της βασικής κλάσης  Εύρεση των παραμέτρων και των επιστρεφόμενων τύπων αυτών  Δημιουργία ενός dictionary με την παραπάνω πληροφορία για όλα τα αρχεία 18
  19. 19. 19
  20. 20.  Βαθμολογεί τα αρχεία συγκρίνοντας πρώτα σε επίπεδο μεθόδου και έπειτα σε επίπεδο κλάσης.  Τμηματοποίηση οντοτήτων (κλάσεις, μέθοδοι, επιστρεφόμενοι τύποι, τύποι παραμέτρων)  Δημιουργία 4 λεξικών από τις οντότητες της υπογραφής του ερωτήματος  Χρήση του VSM μοντέλου για την αναπαράσταση των διαφορετικών οντοτήτων στον ίδιο διανυσματικό χώρο  Υπολογισμός ομοιότητας συνημιτόνου μεταξύ των διανυσμάτων 20
  21. 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. 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. 23.  Βαθμολογία κλήσης μεθόδου:  Βαθμολογία μεθόδου ελέγχου = max(βαθμολογία i-στης κλήσης μεθόδου), όπου i=1, …, N οι Ν μέθοδοι που καλούνται στο εσωτερικό μίας μεθόδου ελέγχου  Εφαρμογή του Προβλήματος του Σταθερού Γάμου, ώστε να γίνει βέλτιστη αντιστοίχιση των ζητούμενων μεθόδων με τις διαθέσιμες.  Βαθμολογία κλάσης: Όόπου i=1, …, M, οι Μ μέθοδοι ελέγχου του εκάστοτε αρχείου  Βαθμολογία αρχείου = max(βαθμολογία i-στης κλάσης), όπου i=1, …, K, οι Κ κλάσεις ενός αρχείου 23
  24. 24. Εξάγονται οι μέθοδοι ελέγχου κάθε αρχείου για τις οποίες αυτό συγκεντρώνει score > 0.4, ως προς τις ζητούμενες μεθόδους. Τριπλός ρόλος:  Μετασχηματίζει τις προτεινόμενες μεθόδους ελέγχου  Ελέγχει τη δυνατότητα μεταγλώττισης και εκτέλεσής τους  Δημιουργεί πιθανά test cases από όλες τις διαφορετικές μεταγλωττίσιμες μεθόδους ελέγχου. 24
  25. 25. Δέχεται στην είσοδό του τον κώδικα του χρήστη. Ο χρήστης μπορεί να επιλέξει για ποιες μεθόδους ζητά μεθόδους ελέγχου. Για κάθε αιτούμενη μέθοδο το σύστημα:  Παρουσιάζει τη βέλτιστη μέθοδο, καθώς και μία ταξινομημένη λίστα όλων των προτεινόμενων μεθόδων.  Παρέχει πληροφορίες σχετικά με τη μεταγλωττισιμότητα και την εκτελεσιμότητα αυτών.  Δίνει τη δυνατότητα διαμόρφωσης του επιθυμητού σεναρίου ελέγχου από το χρήστη, επιλέγοντας όποιες μεθόδους ελέγχου αυτός θέλει.  Παρέχει έτοιμα σενάρια ελέγχου, τα οποία είναι μεταγλωττίσιμα και εκτελέσιμα, εφόσον ο χρήστης το επιλέξει. 25
  26. 26. 26
  27. 27. 27
  28. 28. 28
  29. 29. 29
  30. 30. 3030 2. Ορισμός Προβλήματος 1. Εισαγωγή 3. Σκοπός της Διπλωματικής 4. Ανάλυση του Συστήματος 5. Πειράματα 6. Συμπεράσματα-Μελλοντική Εργασία
  31. 31. 31  Χρησιμοποιήθηκε επίσης το ποσοστό μεταγλωττίσιμων (%C) και εκτελέσιμων αρχείων (%P) κάθε μεθόδου.  Μόνο για το πρώτο πείραμα, υπολογίζεται επιπλέον το Μήκος Αναζήτησης, που είναι ο αριθμός των μη σχετικών αποτελεσμάτων που πρέπει να προσπελαστούν από το χρήστη, μέχρι να καταλήξει σε κάποιο σχετικό.  Ως σχετικό, θεωρείται ένα μεταγλωττίσιμο και επιτυχώς εκτελέσιμο αποτέλεσμα.
  32. 32. 32
  33. 33. 33
  34. 34. 34
  35. 35. Για τη διεξαγωγή αυτού του πειράματος είναι απαραίτητο:  Το ερώτημα να περιέχει τουλάχιστον δύο μεθόδους.  Όλες οι μέθοδοι που συμμετέχουν στο σχηματισμό των test cases να έχουν τουλάχιστον ένα μεταγλωττίσιμο αποτέλεσμα.  Να υπάρχουν τουλάχιστον δύο διαφορετικές μέθοδοι που θα διαμορφώσουν το τελικό test case. Έστω, για παράδειγμα, ότι για το ερώτημα Stack: • Βρέθηκαν 5 μεταγλωττίσιμες μέθοδοι ελέγχου για τη μέθοδο push • Βρέθηκαν 10 μεταγλωττίσιμες μέθοδοι ελέγχου για τη μέθοδο pop • Θα παραχθούν συνολικά 50 πιθανά σενάρια ελέγχου 35
  36. 36. 36
  37. 37. 37
  38. 38. 383838 2. Ορισμός Προβλήματος 1. Εισαγωγή 3. Σκοπός της Διπλωματικής 4. Ανάλυση του Συστήματος 5. Πειράματα 6. Συμπεράσματα-Μελλοντική Εργασία
  39. 39. Αντιλαμβανόμαστε ότι:  Τα μέχρι τώρα RSSE συστήματα της βιβλιογραφίας αδυνατούν να επιλύσουν το πρόβλημα της επαναχρησιμοποίησης κώδικα ελέγχου.  Οι μετασχηματισμοί είναι απαραίτητοι, ώστε να δώσουν μεγαλύτερες πιθανότητες μεταγλώττισης σε μία μέθοδο ελέγχου.  Είναι εφικτός ο συνδυασμός μεθόδων ελέγχου από διαφορετικά αρχεία, με σκοπό την παραγωγή test cases. Μελλοντικές βελτιώσεις του συστήματός μας:  Επίλυση εξαρτήσεων (Dependency Resolution)  Προσθήκη επιπλέον CSEs  Επέκταση και σε άλλες γλώσσες προγραμματισμού, πέρα της Java. 39
  40. 40. Ευχαριστώ για την προσοχή σας! 40

×