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.

Μιχαήλ Παπαμιχαήλ

88 views

Published on

Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης

Published in: Education
  • Be the first to comment

  • Be the first to like this

Μιχαήλ Παπαμιχαήλ

  1. 1. Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Διπλωματική Εργασία 1 Παπαμιχαήλ Μιχαήλ ΑΕΜ: 7502 Υπό την επίβλεψη του Επίκουρου Καθηγητή κ. Συμεωνίδη Ανδρέα Και του υποψήφιου διδάκτορα κ. Διαμαντόπουλου Θεμιστοκλή Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  2. 2. 2 H κατάσταση σήμερα…  Εποχή της πληροφορίας.  Εύκολα προσβάσιμη  Τεράστιος Όγκος  Πολυάριθμες μηχανές αναζήτησης κώδικα (GitHub, Searchcode…)  Πολυάριθμα έργα ανοιχτού λογισμικού που οργανώνονται σε αποθετήρια.  GitHub:  9 εκατομμύρια χρήστες  21 εκατομμύρια αποθετήρια Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  3. 3. 3 Διαδικασία παραγωγής λογισμικού σήμερα queries Upload code CSEs Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  4. 4. 4 Code Quality Estimation System Προσέγγιση:  Χρήση των 100 δημοφιλέστερων αποθετηρίων του GitHub (24930 αρχεία κώδικα java)  Στατική ανάλυση  Κατασκευή μοντέλου με χρήση νευρωνικών δικτύων για την εκτίμηση της ποιότητας ενός αρχείου κώδικα.  Κατασκευή ενός one class classifier με τη χρήση SVMs με στόχο να διαπιστώνεται αν ένα αρχείο κώδικα ανήκει στο χώρο μελέτης. Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  5. 5. 5 PMD Analysis Tool  Εύρεση “κακών πρακτικών” στη διαδικασία συγγραφής του κώδικα  Πολυάριθμοι έλεγχοι (Rules) κατηγοριοποιημένοι σε ομάδες (Rulesets) π.χ. Optimization, Coupling, Design….  XML Report για κάθε αρχείο με το σύνολο των παραβιάσεων (violations) Σημείο της παραβίασης Κανόνας που παραβιάστηκε Σετ κανόνων Ορθή αντιμετώπιση Σημαντικότητα παραβίασης Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  6. 6. 6 Google Code Pro Analytix  Εξαγωγή μετρικών στατικής ανάλυσης σε XML report  LOC (Lines Of Code)  Average Block Depth  Average Cyclomatic Complexity  Abstractness  Coupling (Afferent, Efferent)  Distance  Depth of Inheritance  Comments Ratio  Υποστηρίζει και άλλες λειτουργίες όπως Junit Testing, Code Coverage, Similar Code Analysis Συνολικά στην ανάλυση χρησιμοποιήθηκαν 73 μετρικές. Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  7. 7. 7 Από την προσέγγιση στην… Υλοποίηση Training Set Top 100 Repositories GitHub 24930 files Training Set  Ποιότητα;  Target;  Χρειάζονται όλες; Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  8. 8. 8 Dataset – Ποιοτικά στοιχεία (1) 0,41% Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  9. 9. 9 Dataset – Ποιοτικά στοιχεία (2) Ελάχιστο ποσοστό αρχείων με critical violations Αναμενόμενη εμφάνιση μεγάλων τιμών Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  10. 10. 10 Training Target  Ta Stars του κάθε αποθετηρίου. Όμως:  Αριθμός stars/αποθετήριο και όχι ανά file  Είναι κάθε αρχείο ενός αποθετηρίου εξίσου σημαντικό;  Μεγάλες διαφορές στον αριθμό των αρχείων κάθε αποθετηρίου. 10000 x stars y stars z stars Dependency Analysis Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  11. 11. 11 Dependency analysis Για το αρχείο i του αποθετηρίου j το target είναι: 𝑡𝑎𝑟𝑔𝑒𝑡 𝑖, 𝑗 = log 𝑠𝑡𝑎𝑟𝑠 𝑗 𝑓𝑖𝑙𝑒𝑠 𝑗 + 𝑑𝑒𝑝𝑒𝑛𝑑𝑒𝑛𝑐𝑖𝑒𝑠 𝑖 𝑓𝑖𝑙𝑒𝑠 𝑗 ∗ 𝑠𝑡𝑎𝑟𝑠 𝑗 Εξισορρόπηση των διαφορών στον αριθμό των αρχείων κάθε αποθετηρίου Αρχική ισάξια συνεισφορά του κάθε αρχείου στην διαμόρφωση των stars του αποθετηρίου Κατανομή των stars με βάση το ποσοστό των αρχείων του αποθετηρίου που εξαρτώνται από αυτό Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  12. 12. 12 Dependency analysis - Παράδειγμα Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015 Αποθετήριο με 2000 αρχεία κώδικα και 10000 stars:  Αρχείο (f1) από το οποίο εξαρτώνται 150 αρχεία 𝑠𝑡𝑎𝑟𝑠 𝑓1 = log( 10000 2000 + 150 2000 ∗ 10000) 𝑠𝑡𝑎𝑟𝑠 𝑓1 = 2.8779 Αποθετήριο με 50 αρχεία κώδικα και 1000 stars:  Αρχείο (f2) από το οποίο εξαρτώνται 10 αρχεία 𝑠𝑡𝑎𝑟𝑠 𝑓2 = log( 1000 50 + 10 50 ∗ 1000) 𝑠𝑡𝑎𝑟𝑠 𝑓2 = 2.34 𝑠𝑡𝑎𝑟𝑠 𝑓2 = 220 𝑠𝑡𝑎𝑟𝑠 𝑓1 = 755
  13. 13. 13 ΑΝΝs model 𝑖=1 𝑁 𝑋𝑖 𝑊𝑖,𝑗 𝑡𝑎𝑛𝑠𝑖𝑔 𝑖=1 𝑁 𝑋𝑖 𝑊𝑖,𝑗 + 𝑏(𝑗) 𝑌 = 𝑡𝑎𝑛𝑠𝑖𝑔 𝑖=1 𝑁 𝐾𝑖 𝑊𝑖 + 𝑏 Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  14. 14. 14 ΑΝΝs model Το μοντέλο είναι σε θέση να εκτιμήσει το target set με μέσο σφάλμα 13% Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  15. 15. 15 ΑΝΝs model Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  16. 16. 16 SVMs One Class Classifier  Ανάγκη οριοθέτησης του χώρου μελέτης ο οποίος αποτελείται από κώδικα που καλύπτει κάποιες ελάχιστες προδιαγραφές ποιότητας  Θα χρησιμοποιηθούν όλες οι μετρικές;  Αν όχι ποιες και ποιο θα είναι το κριτήριο επιλογής; Principal Component Analysis Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  17. 17. 17 PCA – Principal Component Analysis Component Initial Eigenvalues Total % of Variance Cumulative % 1 14.936 20.460 20.460 2 4.821 6.604 27.064 3 4.735 6.486 33.551 4 4.276 5.858 39.408 5 3.930 5.383 44.791 6 3.692 5.057 49.848 7 3.561 4.879 54.727 8 2.816 3.857 58.584 9 2.566 3.516 62.100 10 2.376 3.255 65.354 11 2.154 2.951 68.305 12 2.082 2.852 71.158 13 1.921 2.632 73.789 14 1.791 2.453 76.243 15 1.733 2.374 78.617 16 1.373 1.881 80.498 17 1.249 1.711 82.209 18 1.152 1.578 83.788 19 1.029 1.410 85.198 20 1.002 1.373 86.571  Average Block Depth  Average Cyclomatic Complexity  Average Depth of Inheritance Hierarchy  Average Lines of Code per Method  Comments Ratio  Distance  Lines of Code Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  18. 18. 18 SVMs One Class Classifier 𝑥, 𝑦 = exp( − 𝑥 − 𝑦 2 2𝜎2 )  Χρήση Gaussian radial basis kernel function  Gamma Parameter (1/σ2) = 0.04  Tolerance = 0.001 Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  19. 19. 19 Τελικό σύστημα Static Analysis Metrics One class Classifier Neural Networks Model Pass Fail Επανεξέταση Rating Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  20. 20. 20 Πειράματα Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  21. 21. 21 Πειράματα Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  22. 22. 22 Πειράματα Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  23. 23. 23 Services που υλοποιήθηκαν  Command Line Tool  Web Service Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  24. 24. 24 Command Line Tool Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  25. 25. 25 Web Service Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  26. 26. 26 Συμπεράσματα  Αξιόπιστη μετάφραση μετρικών στατικής ανάλυσης σε εκτίμηση ποιότητας κώδικα.  Χρήση του συστήματος που υλοποιήθηκε ως αυτόνομο εργαλείο στατικής ανάλυσης και εντοπισμού κακών πρακτικών συγγραφής κώδικα.  Δυνατότητα χρήσης του συστήματος ως middleware στη διαδικασία εύρεσης κώδικα για την αξιολόγηση των αποτελεσμάτων.  Τα πειράματα έδειξαν ότι το σύστημα είναι σε θέση να εντοπίζει με μικρό ποσοστό λάθους τα αρχεία κώδικα που αποκλίνουν από τις ενδεικνυόμενες τιμές στατικής ανάλυσης. Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  27. 27. 27 Ανοιχτά Θέματα  Προσθήκη μηχανισμού δυναμικής ανάλυσης  Εφαρμογή και για άλλες γλώσσες προγραμματισμού  Περιορισμός των μετρικών για γρηγορότερη εκτέλεση  Δυνατότητα συνδυασμού αποτελεσμάτων  Δυνατότητα βελτίωσης αποτελεσμάτων Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015
  28. 28. 28 Σας ευχαριστώ πολύ για την προσοχή σας Σχεδίαση και ανάπτυξη συστήματος αξιολόγησης ποιότητας κώδικα με χρήση μετρικών στατικής ανάλυσης και τεχνικών μηχανικής μάθησης Οκτώβριος 2015

×