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.

Νούτσος Αντώνης 6992

75 views

Published on

Εργαλείο Ανίχνευσης Σχεδιαστικών Προτύπων Λογισμικού

Published in: Software
  • Be the first to comment

  • Be the first to like this

Νούτσος Αντώνης 6992

  1. 1. DPDHMMY Εργαλείο Ανίχνευσης Σχεδιαστικών Προτύπων Λογισμικού ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΕΥΦΥΩΝ ΣΥΣΤΗΜΑΤΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ Νούτσος Αντώνης anoutsos@auth.gr ΑΕΜ 6992 Διπλωματική εργασία υπό την επίβλεψη του Επ. Καθηγητή κ. Ανδρέα Λ. Συμεωνίδη Και του υποψήφιου διδάκτορα Διαμαντόπουλου Θεμιστοκλή Θεσσαλονίκη 2015
  2. 2. Δομή παρουσίασης  Εισαγωγή  State of the Art  Σκοπός της διπλωματικής  Ανάλυση του συστήματος  Αναπαράσταση αντικειμένων και σχέσεων του κώδικα  Parser  Αλγόριθμος ανίχνευσης προτύπων σχεδίασης  Αποτελέσματα πειραμάτων  Συμπεράσματα & Μελλοντική εργασία  Γραφικό περιβάλλον 2
  3. 3. Εισαγωγή: Σχεδιαστικά Πρότυπα(Design Patterns)  Μη λειτουργικές απαιτήσεις  Επεκτασιμότητα (Extensibility)  Στιβαρότητα (Robustness)  Ευχρηστία (Usability)  Συντηρησιμότητα (Maintainability)  Μεταφερσιμότητα (Portability)  Ελεγξιμότητα (Testability)  Δυνατότητα Επαναχρησιμοποίησης (Reusability)  Σκοπός του κάθε προτύπου  Δημιουργικά – Δημιουργία αντικειμένων  Δομικά – Σύνθεση κλάσεων και αντικειμένων  Συμπεριφοράς – Αλληλοεπίδραση κλάσεων ή/και αντικειμένων 3
  4. 4. Εισαγωγή: Εργαλεία Ανίχνευσης Σχεδιαστικών Προτύπων (DPD Tools) Μεγάλος σε έκταση κώδικας 4  Ανάγκη εξαγωγής πληροφορίας από τον πηγαίο κώδικα Δύσκολη κατανόηση Μεγάλα συστήματα λογισμικού Αυτοματοποιημένα συστήματα εξαγωγής δομής, συνδέσεων και συμπεριφοράς ενός μεγάλου έργου λογισμικού
  5. 5. State of the Art: Κατηγοριοποίηση των DPD tools  Τύπος ανάλυσης  Δομική ανάλυση  Ανάλυση συμπεριφοράς  Σημασιολογική ανάλυση  Τύπος αναγνώρισης  Τύπος εισόδου  Ενδιάμεση αναπαράσταση 5
  6. 6. State of the Art: Γνωστά DPD Tools  DP-Miner  DPRE  PINOT  DeMIMA  PTIDEJ  FUJABA 6
  7. 7. Σκοπός της διπλωματικής  Κατασκευή ενός εργαλείου για ανίχνευση σχεδιαστικών προτύπων στον κώδικα που προσφέρει:  Ευελιξία  Δομική ανάλυση Εξέταση κώδικα με λάθη  Μεταφερσιμότητα  Δομική ανάλυση Εξέταση μη μεταγλωττισμένου κώδικα  Διαδραστικότητα  Δυνατότητα ορισμού σχεδιαστικών προτύπων προς ανίχνευση από το χρήστη  Αξιοπιστία  Ταχύτητα 7
  8. 8. Ανάλυση του συστήματος: Αναπαράσταση αντικειμένων και σχέσεων του κώδικα  Κάθε κλάση αποτελεί μια οντότητα ClassObject  Οι κλάσεις αλληλοσυνδέονται Connection  Κάθε κλάση κατηγοριοποιείται ως:  Normal: Μια απλή κλάση.  Abstract: Μια αφαιρετική (abstract) κλάση.  Interface: Μια διεπαφή (interface).  Abstracted: Μια κλάση που είναι είτε interface ή abstract.  Any: Μια κλάση οποιουδήποτε τύπου.  Οι συνδέσεις αντιπροσωπεύουν τις σχέσεις μεταξύ κλάσεων και βασίζονται στη UML 8
  9. 9. Ανάλυση του συστήματος: Αναπαράσταση αντικειμένων και σχέσεων του κώδικα Τύπος Σύνδεσης Περιγραφή Σχέση UML Σύμβολο UML A calls B Μια μέθοδος της κλάσης A καλεί μία μέθοδο της κλάσης B Εξάρτηση A creates B Η κλάση A δημιουργεί ένα αντικείμενο της κλάσης Β με την εντολή new Σύνθεση A uses B Μια μέθοδος της κλάσης Α επιστρέφει ένα αντικείμενο της κλάσης Β Εξάρτηση A has B Η κλάση A έχει ένα ή περισσότερα αντικείμενα τύπου κλάσης Β Συσσωμάτωση/ Πολλαπλότητα A references B Μια μέθοδος της κλάσης Α έχει ως όρισμα ένα αντικείμενο της κλάσης Β Σύνδεσμος A inherits B Η κλάση A κληρονομεί την κλάση B Κληρονομιά/ Πραγματοποίηση 9
  10. 10. Ανάλυση του συστήματος: Αναπαράσταση αντικειμένων και σχέσεων του κώδικα 10 Member Abstraction Ability A Normal Concrete Factory B Abstracted Abstract Factory C Normal Product D Abstracted Abstract Product From Connection Type To A inherits B C inherits D A creates C A uses D Pattern B Abstracted A Normal C Normal D Abstracted Inherits Inherits Creates Uses Abstract Factory Concrete Factory Abstract Product Product
  11. 11. Ανάλυση του συστήματος: Parser  Treescanner:  Tree API του Compiler της Java  Υλοποιεί το interface TreeVisitor  Σαρώνει όλα τα παιδιά ενός δέντρου με τις οντότητες του αρχείου .java  Συναρτήσεις προσπέλασης:  visitClass  visitVariable  visitMethodInvocation  visitNewClass  Συναρτήσεις ανίχνευσης συνδέσεων:  findUses  findInherits  findHas  findCalls  findCreates  findReferences 11
  12. 12. Ανάλυση του συστήματος: Αλγόριθμος ανίχνευσης προτύπων σχεδίασης  Δομικά μέλη:  Pattern: Αντιπροσωπεύει ένα πρότυπο σχεδίασης με τα ClassObject και τα Connection που τα διέπουν  PatternCandidate: Αντιπροσωπεύει ένα πρότυπο σχεδίασης που ανιχνεύτηκε στο κώδικα και τις αντιστοιχίες των μελών του ως προς το pattern.  PatternDetectionAlgorithm: Περιέχει τις βασικές συναρτήσεις ανίχνευσης σχεδιαστικών προτύπων 12
  13. 13. Ανάλυση του συστήματος: Αλγόριθμος ανίχνευσης προτύπων σχεδίασης 13 𝒏! 𝒏 − 𝒓 ! Pattern Members A B C Δυνατοί Συνδυασμοί για ClassObjects {Car, Wheel, Tires, Fuel} F(n, r) = Εδώ: 24 n = ClassObjects Εδώ: 4 r = Pattern Members Εδώ: 3 Car Car Wheel Wheel Tires Tires Tires Tires Car Car Wheel Wheel Wheel Wheel Tires Tires Car Car Car Car Wheel Wheel Fuel Fuel Wheel Wheel Fuel Fuel Car Car Fuel Fuel Car Car Wheel Wheel Wheel Wheel Tires Tires Fuel Fuel Fuel Fuel Wheel Wheel Tires Tires Tires Tires Fuel Fuel Wheel Wheel Car Car Tires Tires Fuel Fuel Fuel Fuel Car Car Tires Tires Tires Tires Car Car Fuel Fuel
  14. 14. Ανάλυση του συστήματος: Αλγόριθμος ανίχνευσης προτύπων σχεδίασης 14 Pattern Connections A has B A uses C has has uses Candidate 1 Candidate 2 Not Candidate Not Candidate A -- B -- C -- A -- B -- C -- A -- B -- C -- A -- B -- C -- Car has Wheel Car uses Fuel Car has Tires Car uses Fuel Car has Fuel Car uses Tires Car has Tires Car uses Wheel Car Wheel Tires Fuel Car Wheel Fuel Car Tires Fuel Car Fuel Tires Car Tires Wheel
  15. 15. Ανάλυση του συστήματος: Αλγόριθμος ανίχνευσης προτύπων σχεδίασης: FastPatternDetection 15 has has has Car uses Car uses Car usesCar uses has has has has has hashas has has Συνδυασμοί: 2 1/12 από το σύνολο των συνδυασμών πριν Car Wheel Tires Fuel Tires Fuel Wheel Fuel Wheel Car Tires Fuel Fuel Car Wheel Tires Tires Car Fuel Wheel
  16. 16. Ανάλυση του συστήματος: Αλγόριθμος ανίχνευσης προτύπων σχεδίασης: Fast vs Normal PatternDetection FastPatternDetection Abstract Factory Example 93ms 16ms Pattern Compilation 2563ms 31ms JHotDraw * 594ms 16 PatternDetection FastPatternDetection Abstract Factory Example 27ms 2ms Pattern Compilation 1400ms 7ms JHotDraw * 210ms  Τεράστια διαφορά στη ταχύτητα  Αυξημένη πολυπλοκότητα  Αναγκαίο κακό/(καλό!?) για μεγάλα projects  Συσκευές πειραμάτων:  Laptop: Acer Aspire 5930G, Windows 8.1, επεξεργαστή Intel® Core™ 2 Duo @2.00 Ghz και 3GB RAM  Desktop: Windows 8.1, επεξεργαστή Intel® Core™ i3 @3.07 Ghz με δύο πυρήνες και 4GB RAM
  17. 17. Ανάλυση του συστήματος: Αλγόριθμος ανίχνευσης προτύπων σχεδίασης: Ομαδοποίηση 17  Σχεδιαστικά πρότυπα - Δυνατότητα πολλαπλότητας  Ίδια κλάση - Μέρος του ίδιου προτύπου σε πολλά περιστατικά  Ένα μεγάλο περιστατικό προτύπου > Πολλών μικρών  DPDHMMY:  Εύρεση μικρών περιστατικών Ανάγκη για ομαδοποίηση  PatternCandidate  SuperCandidate  HyperCandidate
  18. 18. Ανάλυση του συστήματος: Αλγόριθμος ανίχνευσης προτύπων σχεδίασης: Ομαδοποίηση SuperCandidates Concrete Factory Reptile Factory Mammal Factory Abstract Factory Species Factory Species Factory Product (Snake, Tyrannosaurus) (Cat, Dog) Abstract Product Animal Animal 18 HyperCandidates Concrete Factory [Reptile Factory, Mammal Factory] Abstract Factory Species Factory Product [(Snake, Tyrannosaurus), (Cat, Dog)] Abstract Product Animal Candidates Concrete Factory Reptile Factory Reptile Factory Mammal Factory Mammal Factory Abstract Factory Species Factory Species Factory Species Factory Species Factory Product Snake Tyrannosaurus Cat Dog Abstract Product Animal Animal Animal Animal
  19. 19. Ανάλυση του συστήματος: Αλγόριθμος ανίχνευσης προτύπων σχεδίασης: Ομαδοποίηση 19 Pattern Abstract Factory Concrete Factory Abstract Product Product PatternCandidates Species Factory Reptile Factory Animal Snake Species Factory Reptile Factory Animal Tyrannos aurus Species Factory Mammal Factory Animal Cat Species Factory Mammal Factory Animal Dog
  20. 20. Ανάλυση του συστήματος: Αλγόριθμος ανίχνευσης προτύπων σχεδίασης: Ομαδοποίηση 20 SuperCandidates Species Factory Reptile Factory Animal Snake Tyrannos aurus Species Factory Mammal Factory Animal Cat Dog HyperCandidate Reptile Factory Species Factory Mammal Factory Animal Snake Tyrannos aurus Cat Dog
  21. 21. Αποτελέσματα Πειραμάτων  Πείραμα 1: Μικρά project, στιγμιότυπα προτύπων σχεδίασης  Εφαρμογή DPDHMMY:  Ένα προς ένα project  Συνολικό project που περιέχει πολλά μικρά  Πείραμα 2: Μεγάλα project, γνωστές βιβλιοθήκες της Java  Βιβλιοθήκες JHotDraw, Java AWT, Apache Ant  Ποσοτική σύγκριση με PINOT 21
  22. 22. Αποτελέσματα Πειραμάτων: Πείραμα 1 22 Example 1 Example 2 #Patterns 6 2 #Correctly Detected Patterns 0 2 #Incorrectly Detected Patterns 0 0 %Correctly Detected Patterns 0% 100% %Incorrectly Detected Patterns 0% 0% Command Abstract Factory Bridge Example 1 Example 2 #Patterns 2 4 #Correctly Detected Patterns 2 4 #Incorrectly Detected Patterns 0 0 %Correctly Detected Patterns 100% 100% %Incorrectly Detected Patterns 0% 0% Example 1 Example 2 #Patterns 6 4 #Correctly Detected Patterns 6 4 #Incorrectly Detected Patterns 0 0 %Correctly Detected Patterns 100% 100% %Incorrectly Detected Patterns 0% 0%
  23. 23. Αποτελέσματα Πειραμάτων: Πείραμα 1 #Patterns #Correctly Detected Patterns #Incorrectly Detected Patterns %Correctly Detected Patterns %Incorrectly Detected Patterns Abstract Factory (ex 2) 4 4 1 100% 20% Command (ex. 2) 2 2 4 100% 66.67% Bridge (ex. 2) 4 4 0 100% 0% Builder (ex. 2) 2 2 4 100% 66.67% Visitor (ex. 1) 2 2 0 100% 0% Observer (ex. 1) 1 1 1 100% 50% Factory Method (ex. 2) 1 1 4 100% 80% Total 16 16 14 100% 46.67% 23
  24. 24. Αποτελέσματα Πειραμάτων: Πείραμα 2 JHotDraw Java AWT Apache Ant DPDHMMY PINOT DPDHMMY PINOT DPDHMMY PINOT Abstract Factory 20 30 11 28 10 6 Bridge 94 107 24 15 38 5 Visitor 0 1 2 1 1 1 Observer 7 9 5 9 1 5 Factory Method 20 34 11 34 10 6 24
  25. 25. Αποτελέσματα Πειραμάτων: Πείραμα 2 25 0 50 100 150 Abstract Factory Bridge Visitor Observer Factory Method Jhotdraw PINOT DPDHMMY 0 10 20 30 40 Abstract Factory Bridge Visitor Observer Factory Method Apache Ant PINOT DPDHMMY 0 10 20 30 40 Abstract Factory Bridge Visitor Observer Factory Method Java AWT PINOT DPDHMMY
  26. 26. Συμπεράσματα & Μελλοντική Εργασία  DPDHMMY  Ευέλικτο ως προς την είσοδο δεδομένων  Δυνατότητα δημιουργίας custom design pattern  Αξιόπιστο, εφόσον ο χρήστης ορίσει σωστά τα σχεδιαστικά πρότυπα προς ανίχνευση  Μελλοντικές Επεκτάσεις  Ενσωμάτωση περισσότερων έτοιμων μοτίβων  Partial matching  Γραφική αναπαράσταση αποτελεσμάτων  Επέκταση ανάλυσης πέραν της δομικής  Επέκταση σε άλλες γλώσσες προγραμματισμού 26
  27. 27. Γραφικό Περιβάλλον 27
  28. 28. Ευχαριστίες - Ερωτήσεις 28

×