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.

Κλέαρχος Θωμόπουλος 7435

140 views

Published on

QualBoa Σύστημα Προτάσεων Κώδικα με χρήση Μετρικών Επαναχρηστικότητας Λογισμικού

Published in: Software
  • Be the first to comment

  • Be the first to like this

Κλέαρχος Θωμόπουλος 7435

  1. 1. QualBoa: Σύστημα Προτάσεων Κώδικα με χρήση Μετρικών Επαναχρηστικότητας Λογισμικού Κλέαρχος Θωμόπουλος Ιούλιος 2016 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τομέας Ηλεκτρονικής και Υπολογιστών Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών
  2. 2. Συστήματα Επανάχρησης Λογισμικού • Εύρεση χρήσιμων τμημάτων κώδικα ▫ Ποιοτικό Λογισμικό ▫ Αξιόπιστο Λογισμικό ▫ Εξοικονόμηση κόστους, χρόνου και προσπάθειας • Επιστρέφουν επιτυχώς σχετικά αποτελέσματα, αλλά είναι επαναχρηστικά;
  3. 3. Επαναχρηστικότητα Λογισμικού • Αναλύεται σε 4 γενικούς άξονες: ▫ Τμηματοποίηση (Modularity) ▫ Χρηστικότητα (Usability) ▫ Συντηρισιμότητα (Maintainability) ▫ Κατανοησιμότητα (Understandability) • Μέτρηση της επαναχρηστικότητας με χρήση μετρικών ποιότητας λογισμικού
  4. 4. Boa: A Language and Infrastructure for Analyzing Ultra-Large-Scale Software Repositories • Υποδομή που περιλαμβάνει επεξεργασμένες πληροφορίες έργων λογισμικού των SourceForge (700.000) και GitHub (8.000.000) ▫ Metadata ▫ AST (Abstract Syntax Tree) • Γλώσσα ερωτημάτων ▫ Ειδικού σκοπού για προσπέλαση της υποδομής • Χρήση της Boa για αναζήτηση σχετικών τμημάτων κώδικα και υπολογισμό μετρικών ποιότητας
  5. 5. Δομή του συστήματος QualBoa • Λήψη Σχετικών Τμημάτων Κώδικα και Μετρικών Ποιότητας • Αξιολόγηση των Τμημάτων Λογισμικού • Αξιολόγηση της Ποιότητας του Κώδικα
  6. 6. Δομή του συστήματος QualBoa • Λήψη Σχετικών Τμημάτων Κώδικα και Μετρικών Ποιότητας • Αξιολόγηση των Τμημάτων Λογισμικού • Αξιολόγηση της Ποιότητας του Κώδικα
  7. 7. Λήψη Σχετικών Τμημάτων Κώδικα και Μετρικών Ποιότητας • Δημιουργία της υπογραφής από το ερώτημα του χρήστη Class name: push returntype: void paramtype: Object returntype: Object name: pop name: Stack Method 1 Method 2 Parser
  8. 8. Λήψη Σχετικών Τμημάτων Κώδικα και Μετρικών Ποιότητας • Δημιουργία του ερωτήματος στην Boa για τα σχετικά τμήματα κώδικα Class name: push returntype: void paramtype: Object returntype: Object name: pop name: Stack Method 1 Method 2
  9. 9. Λήψη Σχετικών Τμημάτων Κώδικα και Μετρικών Ποιότητας • Υπολογισμός των μετρικών ποιότητας ▫ π.χ. ο αριθμός των public πεδίων/μεταβλητών Προσπέλαση όλων των πεδίων και όλων των modifier κάθε πεδίου Έλεγχος αν ο modifier του πεδίου είναι “public”
  10. 10. Λήψη Σχετικών Τμημάτων Κώδικα και Μετρικών Ποιότητας • Επιστρέφονται τα σχετικά τμήματα κώδικα και οι αντίστοιχες μετρικές ποιότητας • Λήψη των σχετικών τμημάτων κώδικα που βρέθηκαν από το GitHub, μέσω του GitHub API • Τοπική αποθήκευση των αποτελεσμάτων μαζί με τις μετρικές ποιότητας για μετέπειτα χρήση
  11. 11. Δομή του συστήματος QualBoa • Λήψη Σχετικών Τμημάτων Κώδικα και Μετρικών Ποιότητας • Αξιολόγηση των Τμημάτων Λογισμικού • Αξιολόγηση της Ποιότητας του Κώδικα
  12. 12. Αξιολόγηση των Τμημάτων Λογισμικού • Υπολογισμός λειτουργικής βαθμολογίας ▫ Σχηματισμός μίας λίστας από την υπογραφή  π.χ [Stack, [push, void, Object], [pop, Object]] ▫ Υπολογισμός της ομοιότητας μεταξύ 2 Strings  Διαχωρισμός του String (camelCase) και χρήση του Jaccard Index: ▫ Υπολογισμός της βαθμολογίας μεταξύ 2 λιστών  Tanimoto Coefficient:  , S T Jaccard S T S T      2 2 , A B Tanimoto A B A B A B      r r r r r r r r
  13. 13. Αξιολόγηση των Τμημάτων Λογισμικού • Παράδειγμα σύγκρισης των υπογραφών Class name: push Method 1 returntype: void paramtype: Object returntype: Object Method 2 name: pop name: Stack Class name: pushObject returntype: void paramtype: int returntype: int name: popObject name: IntStack Method 1 Method 2 0.579 0.5 0.545 0.5 1.0 0.0 0.286 0.5 0.0
  14. 14. Δομή του συστήματος QualBoa • Λήψη Σχετικών Τμημάτων Κώδικα και Μετρικών Ποιότητας • Αξιολόγηση των Τμημάτων Λογισμικού • Αξιολόγηση της Ποιότητας του Κώδικα
  15. 15. Αξιολόγηση της Ποιότητας του Κώδικα • Μοντέλο Επαναχρηστικότητας Relevant Quality Characteristics Quality Metrics Extreme Values Modularity Maintain ability Usability Understan dability Reusability Average LoC per Method > 30    Average Cyclomatic Complexity > 8    Coupling Between Objects > 20    Lack of Cohesion in Methods > 20   Average Block Depth > 3   Efferent Couplings > 20    Number of Public Fields > 10    Number of Public Methods > 30    #Metrics per Quality Characteristic: 3 4 4 3 8
  16. 16. Αξιολόγηση του Συστήματος • Dataset 7 διαφορετικών ερωτημάτων Query #Relevant Results Average Precision Reusability Score Calculator 18 59.27% 70.83% ComplexNumber 15 86.18% 82.76% Matrix 10 95.88% 88.68% MortgageCalculator 7 100.00% 87.17% ShoppingCart 13 100.00% 100.00% Spreadsheet 2 100.00% 88.54% Stack 22 77.59% 100.00% Average 12.43 88.42% 88.28%
  17. 17. Αξιολόγηση του Συστήματος • Average Precision 0 20 40 60 80 100 Average Precision Average Value
  18. 18. Αξιολόγηση του Συστήματος • Reusability Score 0 20 40 60 80 100 Reusability Score Average Value
  19. 19. Συμπεράσματα • Απόλυτα ικανοποιητικά αποτελέσματα αξιολόγησης • QualBoa ▫ Εξασφάλιση της λειτουργικής ταύτισης ▫ Πρωτοτυπία με την χρήση της Boa ▫ Σημαντικό πλεονέκτημα η αξιολόγηση της επαναχρηστικότητας του λογισμικού
  20. 20. Ευχαριστώ !

×