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.

Ιoannis Αgrotis

72 views

Published on

Design and Development of a Software Quality Optimization System Using Automated Correction of Coding Violations

Published in: Education
  • Be the first to comment

  • Be the first to like this

Ιoannis Αgrotis

  1. 1. Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Αγρότη Ιωάννη agrotis.ioannis@gmail.com ΑΕΜ 7567 Υπό την επίβλεψη του Επίκουρου Καθηγητή κ. Συμεωνίδη Ανδρέα Και του υποψήφιου διδάκτορα κ. Παπαμιχαήλ Μιχαήλ Διπλωματική Εργασία
  2. 2. Εισαγωγή Ποιότητα Κώδικα Σύστημα που υλοποιήθηκε Πειράματα & Αποτελέσματα Συμπεράσματα & Ανοιχτά θέματα 1 Οκτώβριος 2017 Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα
  3. 3. Η παραγωγή λογισμικού σήμερα • Open Source Community • Code Reuse Δημιουργία Λογισμικού: •Γρηγορότερα •Χαμηλότερο Κόστος Διαθέσιμος κώδικας: Δεν καλύπτει πάντα τις προδιαγραφές ποιότητας κώδικα Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 2
  4. 4. Ποιότητα κώδικα (1/2) • Μοντελοποίηση ποιότητας κώδικα • Προτάθηκαν ενδεικνυόμενοι τρόποι γραφής • Εργαλεία στατικής ανάλυσης κώδικα Πρότυπα Ποιότητας (ISO/IEC 25010) Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 3
  5. 5. Ποιότητα Κώδικα (2/2) Μετρικές ποιότητας κώδικα: • Weighted Method per Class (WMC) • Coupling Between Objects (CBO) • Response For a Class (RFC) Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 4 Κατηγορίες παραβάσεων (Violations): • Naming • Optimization • Design • Braces • Empty Code • Java Logging
  6. 6. Παραδείγματα Παραβάσεων (Violations) Συνθήκη πάντα αληθής Αχρησιμοποίητη μεταβλητή Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 5
  7. 7. Το Σύστημα που υλοποιήθηκε Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 6
  8. 8. Builder & Analyzer Sourcemeter (PMD) AnalyzerBuilder Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 7
  9. 9. Αποτελέσματα PMD – Xml file Γραμμές που βρίσκεται η παράβαση Rule: Ο κανόνας που παραβιάζεται Ruleset: Κατηγορία κανόνα Προτεραιότητα Παράβασης Περιγραφή Παράβασης Αρχείο Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 8
  10. 10. Results Handler Violations Finder & Logger Path Begin Line End Line Rule Violation Description Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 9 Comparator • Priorities • Categories Imports Finder ASTs.json Imports.json
  11. 11. Violations Fixer Violation Category Number of Violations Design 5 Braces 3 Empty Code 2 Naming 2 Java Logging 1 Optimization 1 Controversial 1 Type Resolution 1 Junit 1 Total Violations: 17 Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 10 Οι διορθώσεις που εκτελούνται: • Έχουν σαν πρωταρχικό στόχο να μην εμφανιστούν νέες παραβάσεις (Violations) • Λαμβάνουν υπόψη την διαδικασία μεταγλώττισης και έχουν ως στόχο να μην επηρεαστεί Με βάση τα ASTs : • Εκτελούνται οι διορθώσεις στα υπόλοιπα αρχεία που επηρεάζονται από τις αλλαγές που γίνονται • Έχουμε αντίληψη της δομής του αρχείου ώστε να γίνουν οι αλλαγές σε αυτό
  12. 12. Πειράματα & Αποτελέσματα 24 Projects από το GitHub • Min: 3392 LLOC • Max: 114332 LLOC Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 11
  13. 13. Συνολική Επίδραση του Συστήματος • Min: 6.8% • Max: 84.14% Η διακύμανση στο ποσοστό οφείλεται: 1. Το σύστημα δεν διορθώνει όλες τις κατηγορίες παραβάσεων 2. Διαφέρει το μέγεθος κάθε project Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 12 Ποσοστό του συνόλου των παραβάσεων: 76,16%
  14. 14. Ανάλυση αποτελεσμάτων ανά προτεραιότητα Priority 1: 29,4% Priority 2: 21,55% Priority 3: 58,32% Priority 4: 40,73% Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 13
  15. 15. Ανάλυση αποτελεσμάτων ανά κατηγορία Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 14 Κατηγορία Ποσοστό Διόρθωσης Junit 89.52% Type Resolution 67.44% Optimization 67.18% Braces 62.58% Empty Code 57% Naming 40.10% Java Logging 33.77% Controversial 30.28% Design 20.02%
  16. 16. Επίδραση στις μετρικές ποιότητας κώδικα WMC: 2,70% CBO: 5,09% RFC: 11,98% Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 15
  17. 17. Ανάλυση χρονικής πολυπλοκότητας του συστήματος Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 16
  18. 18. Συμπεράσματα Το σύστημα που υλοποιήθηκε είναι σε θέση να: • Εκτελεί διορθώσεις στο υπό εξέταση σύστημα • Δημιουργεί αρχεία για εύκολη επισκόπηση των αλλαγών που έγιναν και τις παραβάσεις που εμφανίζονται • Δίνει την δυνατότητα σύγκρισης αποτελεσμάτων πριν και μετά τις αλλαγές που έγιναν • Η δομή και η λειτουργία του μπορούν να αποτελέσουν βάση για την ανάπτυξη ενός πιο ολοκληρωμένου συστήματος Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 17
  19. 19. Ανοιχτά Θέματα • Εφαρμογή σε άλλες γλώσσες προγραμματισμού • Διόρθωση περισσοτέρων παραβάσεων κώδικα • Επέκταση και σε άλλους τύπους project (εκτός maven) Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα Οκτώβριος 2017 18
  20. 20. Σχεδίαση και ανάπτυξη αυτοματοποιημένου συστήματος βελτίωσης ποιότητας κώδικα μέσω αυτόματης διόρθωσης παραβάσεων ποιότητας κώδικα 19 Οκτώβριος 2017

×