1. QualBoa: Σύστημα Προτάσεων Κώδικα με
χρήση Μετρικών Επαναχρηστικότητας
Λογισμικού
Κλέαρχος Θωμόπουλος
Ιούλιος 2016
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Τομέας Ηλεκτρονικής και Υπολογιστών
Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών
2. Συστήματα Επανάχρησης Λογισμικού
• Εύρεση χρήσιμων τμημάτων κώδικα
▫ Ποιοτικό Λογισμικό
▫ Αξιόπιστο Λογισμικό
▫ Εξοικονόμηση κόστους, χρόνου και προσπάθειας
• Επιστρέφουν επιτυχώς σχετικά αποτελέσματα,
αλλά είναι επαναχρηστικά;
3. Επαναχρηστικότητα Λογισμικού
• Αναλύεται σε 4 γενικούς άξονες:
▫ Τμηματοποίηση (Modularity)
▫ Χρηστικότητα (Usability)
▫ Συντηρισιμότητα (Maintainability)
▫ Κατανοησιμότητα (Understandability)
• Μέτρηση της επαναχρηστικότητας με χρήση
μετρικών ποιότητας λογισμικού
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. Δομή του συστήματος QualBoa
• Λήψη Σχετικών Τμημάτων Κώδικα και
Μετρικών Ποιότητας
• Αξιολόγηση των Τμημάτων Λογισμικού
• Αξιολόγηση της Ποιότητας του Κώδικα
6. Δομή του συστήματος QualBoa
• Λήψη Σχετικών Τμημάτων Κώδικα και
Μετρικών Ποιότητας
• Αξιολόγηση των Τμημάτων Λογισμικού
• Αξιολόγηση της Ποιότητας του Κώδικα
7. Λήψη Σχετικών Τμημάτων Κώδικα και
Μετρικών Ποιότητας
• Δημιουργία της υπογραφής από το ερώτημα του
χρήστη
Class
name: push
returntype: void
paramtype: Object
returntype: Object
name: pop
name: Stack
Method 1
Method 2
Parser
8. Λήψη Σχετικών Τμημάτων Κώδικα και
Μετρικών Ποιότητας
• Δημιουργία του ερωτήματος στην Boa για τα
σχετικά τμήματα κώδικα
Class
name: push
returntype: void
paramtype: Object
returntype: Object
name: pop
name: Stack
Method 1
Method 2
9. Λήψη Σχετικών Τμημάτων Κώδικα και
Μετρικών Ποιότητας
• Υπολογισμός των μετρικών ποιότητας
▫ π.χ. ο αριθμός των public πεδίων/μεταβλητών
Προσπέλαση όλων των
πεδίων και όλων των modifier
κάθε πεδίου
Έλεγχος αν ο modifier του
πεδίου είναι “public”
10. Λήψη Σχετικών Τμημάτων Κώδικα και
Μετρικών Ποιότητας
• Επιστρέφονται τα σχετικά τμήματα κώδικα και
οι αντίστοιχες μετρικές ποιότητας
• Λήψη των σχετικών τμημάτων κώδικα που
βρέθηκαν από το GitHub, μέσω του GitHub API
• Τοπική αποθήκευση των αποτελεσμάτων μαζί με
τις μετρικές ποιότητας για μετέπειτα χρήση
11. Δομή του συστήματος QualBoa
• Λήψη Σχετικών Τμημάτων Κώδικα και
Μετρικών Ποιότητας
• Αξιολόγηση των Τμημάτων Λογισμικού
• Αξιολόγηση της Ποιότητας του Κώδικα
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. Αξιολόγηση των Τμημάτων Λογισμικού
• Παράδειγμα σύγκρισης των υπογραφών
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. Δομή του συστήματος QualBoa
• Λήψη Σχετικών Τμημάτων Κώδικα και
Μετρικών Ποιότητας
• Αξιολόγηση των Τμημάτων Λογισμικού
• Αξιολόγηση της Ποιότητας του Κώδικα
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
19. Συμπεράσματα
• Απόλυτα ικανοποιητικά αποτελέσματα
αξιολόγησης
• QualBoa
▫ Εξασφάλιση της λειτουργικής ταύτισης
▫ Πρωτοτυπία με την χρήση της Boa
▫ Σημαντικό πλεονέκτημα η αξιολόγηση της
επαναχρηστικότητας του λογισμικού