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

ISSEL
ISSELISSEL
DPDHMMY
Εργαλείο Ανίχνευσης Σχεδιαστικών Προτύπων Λογισμικού
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ
ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
ΕΡΓΑΣΤΗΡΙΟ ΕΥΦΥΩΝ ΣΥΣΤΗΜΑΤΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ
Νούτσος Αντώνης
anoutsos@auth.gr
ΑΕΜ 6992
Διπλωματική εργασία υπό την επίβλεψη του Επ. Καθηγητή κ. Ανδρέα
Λ. Συμεωνίδη
Και του υποψήφιου διδάκτορα
Διαμαντόπουλου Θεμιστοκλή
Θεσσαλονίκη 2015
Δομή παρουσίασης
 Εισαγωγή
 State of the Art
 Σκοπός της διπλωματικής
 Ανάλυση του συστήματος
 Αναπαράσταση αντικειμένων και σχέσεων του κώδικα
 Parser
 Αλγόριθμος ανίχνευσης προτύπων σχεδίασης
 Αποτελέσματα πειραμάτων
 Συμπεράσματα & Μελλοντική εργασία
 Γραφικό περιβάλλον
2
Εισαγωγή:
Σχεδιαστικά Πρότυπα(Design Patterns)
 Μη λειτουργικές απαιτήσεις
 Επεκτασιμότητα (Extensibility)
 Στιβαρότητα (Robustness)
 Ευχρηστία (Usability)
 Συντηρησιμότητα (Maintainability)
 Μεταφερσιμότητα (Portability)
 Ελεγξιμότητα (Testability)
 Δυνατότητα Επαναχρησιμοποίησης (Reusability)
 Σκοπός του κάθε προτύπου
 Δημιουργικά – Δημιουργία αντικειμένων
 Δομικά – Σύνθεση κλάσεων και αντικειμένων
 Συμπεριφοράς – Αλληλοεπίδραση κλάσεων ή/και αντικειμένων
3
Εισαγωγή:
Εργαλεία Ανίχνευσης Σχεδιαστικών Προτύπων
(DPD Tools)
Μεγάλος σε έκταση κώδικας
4
 Ανάγκη εξαγωγής πληροφορίας από
τον πηγαίο κώδικα
Δύσκολη κατανόηση Μεγάλα συστήματα λογισμικού
Αυτοματοποιημένα συστήματα εξαγωγής δομής, συνδέσεων και συμπεριφοράς
ενός μεγάλου έργου λογισμικού
State of the Art:
Κατηγοριοποίηση των DPD tools
 Τύπος ανάλυσης
 Δομική ανάλυση
 Ανάλυση συμπεριφοράς
 Σημασιολογική ανάλυση
 Τύπος αναγνώρισης
 Τύπος εισόδου
 Ενδιάμεση αναπαράσταση
5
State of the Art:
Γνωστά DPD Tools
 DP-Miner
 DPRE
 PINOT
 DeMIMA
 PTIDEJ
 FUJABA
6
Σκοπός της διπλωματικής
 Κατασκευή ενός εργαλείου για ανίχνευση σχεδιαστικών προτύπων στον κώδικα
που προσφέρει:
 Ευελιξία
 Δομική ανάλυση Εξέταση κώδικα με λάθη
 Μεταφερσιμότητα
 Δομική ανάλυση Εξέταση μη μεταγλωττισμένου κώδικα
 Διαδραστικότητα
 Δυνατότητα ορισμού σχεδιαστικών προτύπων προς ανίχνευση από το χρήστη
 Αξιοπιστία
 Ταχύτητα
7
Ανάλυση του συστήματος: Αναπαράσταση
αντικειμένων και σχέσεων του κώδικα
 Κάθε κλάση αποτελεί μια οντότητα ClassObject
 Οι κλάσεις αλληλοσυνδέονται Connection
 Κάθε κλάση κατηγοριοποιείται ως:
 Normal: Μια απλή κλάση.
 Abstract: Μια αφαιρετική (abstract) κλάση.
 Interface: Μια διεπαφή (interface).
 Abstracted: Μια κλάση που είναι είτε interface ή abstract.
 Any: Μια κλάση οποιουδήποτε τύπου.
 Οι συνδέσεις αντιπροσωπεύουν τις σχέσεις μεταξύ κλάσεων και βασίζονται στη
UML
8
Ανάλυση του συστήματος: Αναπαράσταση
αντικειμένων και σχέσεων του κώδικα
Τύπος Σύνδεσης Περιγραφή Σχέση 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
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
Ανάλυση του συστήματος:
Parser
 Treescanner:
 Tree API του Compiler της Java
 Υλοποιεί το interface TreeVisitor
 Σαρώνει όλα τα παιδιά ενός δέντρου με
τις οντότητες του αρχείου .java
 Συναρτήσεις προσπέλασης:
 visitClass
 visitVariable
 visitMethodInvocation
 visitNewClass
 Συναρτήσεις ανίχνευσης συνδέσεων:
 findUses
 findInherits
 findHas
 findCalls
 findCreates
 findReferences
11
Ανάλυση του συστήματος:
Αλγόριθμος ανίχνευσης προτύπων σχεδίασης
 Δομικά μέλη:
 Pattern: Αντιπροσωπεύει ένα πρότυπο σχεδίασης με τα ClassObject και τα
Connection που τα διέπουν
 PatternCandidate: Αντιπροσωπεύει ένα πρότυπο σχεδίασης που
ανιχνεύτηκε στο κώδικα και τις αντιστοιχίες των μελών του ως προς το
pattern.
 PatternDetectionAlgorithm: Περιέχει τις βασικές συναρτήσεις ανίχνευσης
σχεδιαστικών προτύπων
12
Ανάλυση του συστήματος:
Αλγόριθμος ανίχνευσης προτύπων σχεδίασης
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
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
Ανάλυση του συστήματος:
Αλγόριθμος ανίχνευσης προτύπων σχεδίασης:
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
Ανάλυση του συστήματος:
Αλγόριθμος ανίχνευσης προτύπων σχεδίασης:
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
 Σχεδιαστικά πρότυπα - Δυνατότητα πολλαπλότητας
 Ίδια κλάση - Μέρος του ίδιου προτύπου σε πολλά περιστατικά
 Ένα μεγάλο περιστατικό προτύπου > Πολλών μικρών
 DPDHMMY:
 Εύρεση μικρών περιστατικών Ανάγκη για ομαδοποίηση
 PatternCandidate
 SuperCandidate
 HyperCandidate
Ανάλυση του συστήματος:
Αλγόριθμος ανίχνευσης προτύπων σχεδίασης: Ομαδοποίηση
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
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
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
Αποτελέσματα Πειραμάτων
 Πείραμα 1: Μικρά project, στιγμιότυπα προτύπων σχεδίασης
 Εφαρμογή DPDHMMY:
 Ένα προς ένα project
 Συνολικό project που περιέχει πολλά μικρά
 Πείραμα 2: Μεγάλα project, γνωστές βιβλιοθήκες της Java
 Βιβλιοθήκες JHotDraw, Java AWT, Apache Ant
 Ποσοτική σύγκριση με PINOT
21
Αποτελέσματα Πειραμάτων:
Πείραμα 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%
Αποτελέσματα Πειραμάτων:
Πείραμα 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
Αποτελέσματα Πειραμάτων:
Πείραμα 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
Αποτελέσματα Πειραμάτων:
Πείραμα 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
Συμπεράσματα & Μελλοντική Εργασία
 DPDHMMY
 Ευέλικτο ως προς την είσοδο δεδομένων
 Δυνατότητα δημιουργίας custom design pattern
 Αξιόπιστο, εφόσον ο χρήστης ορίσει σωστά τα σχεδιαστικά πρότυπα προς ανίχνευση
 Μελλοντικές Επεκτάσεις
 Ενσωμάτωση περισσότερων έτοιμων μοτίβων
 Partial matching
 Γραφική αναπαράσταση αποτελεσμάτων
 Επέκταση ανάλυσης πέραν της δομικής
 Επέκταση σε άλλες γλώσσες προγραμματισμού
26
Γραφικό Περιβάλλον 27
Ευχαριστίες - Ερωτήσεις 28
1 of 28

Recommended

Κρασανάκης Εμμανουήλ by
Κρασανάκης ΕμμανουήλΚρασανάκης Εμμανουήλ
Κρασανάκης ΕμμανουήλISSEL
158 views30 slides
Σωτήριος Αγγελής by
Σωτήριος ΑγγελήςΣωτήριος Αγγελής
Σωτήριος ΑγγελήςISSEL
231 views21 slides
Μαρία Κωτούζα 7714 by
Μαρία Κωτούζα 7714Μαρία Κωτούζα 7714
Μαρία Κωτούζα 7714ISSEL
442 views39 slides
Ναταλία Μιχαηλίδου by
Ναταλία ΜιχαηλίδουΝαταλία Μιχαηλίδου
Ναταλία ΜιχαηλίδουISSEL
293 views21 slides
Γκιλίρης Ιωάννης 7419 by
Γκιλίρης Ιωάννης 7419Γκιλίρης Ιωάννης 7419
Γκιλίρης Ιωάννης 7419ISSEL
209 views27 slides
Νικόλαος Κατιρτζής 7185 by
Νικόλαος Κατιρτζής 7185Νικόλαος Κατιρτζής 7185
Νικόλαος Κατιρτζής 7185ISSEL
134 views33 slides

More Related Content

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

Ioannis Loias by
Ioannis LoiasIoannis Loias
Ioannis LoiasISSEL
239 views41 slides
Bagia Rousopoulou by
Bagia RousopoulouBagia Rousopoulou
Bagia RousopoulouISSEL
272 views32 slides
Αλεξάνδρα Μπαλτζή 7485 by
Αλεξάνδρα Μπαλτζή 7485Αλεξάνδρα Μπαλτζή 7485
Αλεξάνδρα Μπαλτζή 7485ISSEL
194 views32 slides
Stelios poulakakis daktylidis diploma thesis presentation by
Stelios poulakakis daktylidis diploma thesis presentationStelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationISSEL
238 views30 slides
Βασίλειος Λώλης 5638 by
Βασίλειος Λώλης 5638Βασίλειος Λώλης 5638
Βασίλειος Λώλης 5638ISSEL
165 views18 slides
Μαρίνα Γέραλη by
Μαρίνα Γέραλη Μαρίνα Γέραλη
Μαρίνα Γέραλη ISSEL
143 views40 slides

Similar to Νούτσος Αντώνης 6992(20)

Ioannis Loias by ISSEL
Ioannis LoiasIoannis Loias
Ioannis Loias
ISSEL239 views
Bagia Rousopoulou by ISSEL
Bagia RousopoulouBagia Rousopoulou
Bagia Rousopoulou
ISSEL272 views
Αλεξάνδρα Μπαλτζή 7485 by ISSEL
Αλεξάνδρα Μπαλτζή 7485Αλεξάνδρα Μπαλτζή 7485
Αλεξάνδρα Μπαλτζή 7485
ISSEL194 views
Stelios poulakakis daktylidis diploma thesis presentation by ISSEL
Stelios poulakakis daktylidis diploma thesis presentationStelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentation
ISSEL238 views
Βασίλειος Λώλης 5638 by ISSEL
Βασίλειος Λώλης 5638Βασίλειος Λώλης 5638
Βασίλειος Λώλης 5638
ISSEL165 views
Μαρίνα Γέραλη by ISSEL
Μαρίνα Γέραλη Μαρίνα Γέραλη
Μαρίνα Γέραλη
ISSEL143 views
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu... by Manos Tsardoulias
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...
Evangelos papathomas diploma thesis presentation by ISSEL
Evangelos papathomas diploma thesis presentationEvangelos papathomas diploma thesis presentation
Evangelos papathomas diploma thesis presentation
ISSEL190 views
Χατζηελευθερίου Ειρήνη by ISSEL
Χατζηελευθερίου ΕιρήνηΧατζηελευθερίου Ειρήνη
Χατζηελευθερίου Ειρήνη
ISSEL166 views
Ioannis Iakovidis by ISSEL
Ioannis IakovidisIoannis Iakovidis
Ioannis Iakovidis
ISSEL168 views
Κωνσταντίνος Σιδέρης 7254 by ISSEL
Κωνσταντίνος Σιδέρης 7254Κωνσταντίνος Σιδέρης 7254
Κωνσταντίνος Σιδέρης 7254
ISSEL216 views
Narlis Eystratios by ISSEL
Narlis EystratiosNarlis Eystratios
Narlis Eystratios
ISSEL122 views
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ... by ISSEL
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...
ISSEL53 views
Understanding the importance of demographic background for the website aesth... by ISSEL
Understanding the importance of demographic background  for the website aesth...Understanding the importance of demographic background  for the website aesth...
Understanding the importance of demographic background for the website aesth...
ISSEL105 views
Nikolaos Oikonomou by ISSEL
Nikolaos OikonomouNikolaos Oikonomou
Nikolaos Oikonomou
ISSEL208 views
Theofilos Georgiadis: Library recommendation system for the reuse of software... by Manos Tsardoulias
Theofilos Georgiadis: Library recommendation system for the reuse of software...Theofilos Georgiadis: Library recommendation system for the reuse of software...
Theofilos Georgiadis: Library recommendation system for the reuse of software...
κεφάλαιο 02 anaptixi-2 by evaplyta
κεφάλαιο 02 anaptixi-2κεφάλαιο 02 anaptixi-2
κεφάλαιο 02 anaptixi-2
evaplyta1.3K views
Dontsios Dimitris by ISSEL
Dontsios DimitrisDontsios Dimitris
Dontsios Dimitris
ISSEL280 views
Real-Time Detection Of Abnormal User Behavior In Web Applications Using Machi... by ISSEL
Real-Time Detection Of Abnormal User Behavior In Web Applications Using Machi...Real-Time Detection Of Abnormal User Behavior In Web Applications Using Machi...
Real-Time Detection Of Abnormal User Behavior In Web Applications Using Machi...
ISSEL25 views

More from ISSEL

Camera-based localization of annotated objects in indoor environments by
Camera-based localization of annotated objects in indoor environmentsCamera-based localization of annotated objects in indoor environments
Camera-based localization of annotated objects in indoor environmentsISSEL
12 views38 slides
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ... by
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...ISSEL
6 views38 slides
Design and implementation of an automation mechanism to automatically develop... by
Design and implementation of an automation mechanism to automatically develop...Design and implementation of an automation mechanism to automatically develop...
Design and implementation of an automation mechanism to automatically develop...ISSEL
4 views17 slides
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ... by
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...ISSEL
6 views17 slides
Static Analysis of Python code and Identification of Potential Security Vulne... by
Static Analysis of Python code and Identification of Potential Security Vulne...Static Analysis of Python code and Identification of Potential Security Vulne...
Static Analysis of Python code and Identification of Potential Security Vulne...ISSEL
8 views16 slides
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ... by
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...ISSEL
26 views27 slides

More from ISSEL(20)

Camera-based localization of annotated objects in indoor environments by ISSEL
Camera-based localization of annotated objects in indoor environmentsCamera-based localization of annotated objects in indoor environments
Camera-based localization of annotated objects in indoor environments
ISSEL12 views
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ... by ISSEL
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
ISSEL6 views
Design and implementation of an automation mechanism to automatically develop... by ISSEL
Design and implementation of an automation mechanism to automatically develop...Design and implementation of an automation mechanism to automatically develop...
Design and implementation of an automation mechanism to automatically develop...
ISSEL4 views
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ... by ISSEL
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
ISSEL6 views
Static Analysis of Python code and Identification of Potential Security Vulne... by ISSEL
Static Analysis of Python code and Identification of Potential Security Vulne...Static Analysis of Python code and Identification of Potential Security Vulne...
Static Analysis of Python code and Identification of Potential Security Vulne...
ISSEL8 views
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ... by ISSEL
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...
Στατική Ανάλυση Κώδικα Python και Αναγνώριση Πιθανών Ευπαθειών Ασφαλείας για ...
ISSEL26 views
Design and Development of an Authorization and Access Control Mechanism for C... by ISSEL
Design and Development of an Authorization and Access Control Mechanism for C...Design and Development of an Authorization and Access Control Mechanism for C...
Design and Development of an Authorization and Access Control Mechanism for C...
ISSEL13 views
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο... by ISSEL
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...
Σχεδίαση και Ανάπτυξη Μηχανισμού Εξουσιοδότησης και Ελέγχου Πρόσβασης σε Συνο...
ISSEL19 views
Analysis and profiling of developer profiles using data mining techniques fro... by ISSEL
Analysis and profiling of developer profiles using data mining techniques fro...Analysis and profiling of developer profiles using data mining techniques fro...
Analysis and profiling of developer profiles using data mining techniques fro...
ISSEL3 views
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση... by ISSEL
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
ISSEL8 views
TOWARDS AN AUTOMATED SOURCE CODE FORMATTING SYSTEM by ISSEL
TOWARDS AN AUTOMATED SOURCE CODE FORMATTING SYSTEMTOWARDS AN AUTOMATED SOURCE CODE FORMATTING SYSTEM
TOWARDS AN AUTOMATED SOURCE CODE FORMATTING SYSTEM
ISSEL3 views
ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΠΡΟΤΑΣΕΩΝ ΒΕΛΤΙΩΣΗΣ ΤΗΣ ΜΟΡΦΟΠΟΙΗΣΗΣ ΠΗΓ... by ISSEL
ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΠΡΟΤΑΣΕΩΝ ΒΕΛΤΙΩΣΗΣ ΤΗΣ ΜΟΡΦΟΠΟΙΗΣΗΣ ΠΗΓ...ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΠΡΟΤΑΣΕΩΝ ΒΕΛΤΙΩΣΗΣ ΤΗΣ ΜΟΡΦΟΠΟΙΗΣΗΣ ΠΗΓ...
ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΠΡΟΤΑΣΕΩΝ ΒΕΛΤΙΩΣΗΣ ΤΗΣ ΜΟΡΦΟΠΟΙΗΣΗΣ ΠΗΓ...
ISSEL11 views
System Development for Prediction of Static Analysis Metrics of Source Code by ISSEL
System Development for Prediction of Static Analysis Metrics of Source CodeSystem Development for Prediction of Static Analysis Metrics of Source Code
System Development for Prediction of Static Analysis Metrics of Source Code
ISSEL6 views
Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ... by ISSEL
Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...
Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...
ISSEL11 views
Micro Front-ends and Microservices Architecture in Web Application Development by ISSEL
Micro Front-ends and Microservices Architecture in Web Application DevelopmentMicro Front-ends and Microservices Architecture in Web Application Development
Micro Front-ends and Microservices Architecture in Web Application Development
ISSEL8 views
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ... by ISSEL
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...
ISSEL19 views
Indoor localization using wireless networks by ISSEL
Indoor localization using wireless networksIndoor localization using wireless networks
Indoor localization using wireless networks
ISSEL5 views
Εντοπισμός θέσης σε εσωτερικούς χώρους με χρήση ασύρματων δικτύων by ISSEL
Εντοπισμός θέσης σε εσωτερικούς χώρους με χρήση ασύρματων δικτύωνΕντοπισμός θέσης σε εσωτερικούς χώρους με χρήση ασύρματων δικτύων
Εντοπισμός θέσης σε εσωτερικούς χώρους με χρήση ασύρματων δικτύων
ISSEL10 views
Design and implementation of a big data architecture for storage, real-time p... by ISSEL
Design and implementation of a big data architecture for storage, real-time p...Design and implementation of a big data architecture for storage, real-time p...
Design and implementation of a big data architecture for storage, real-time p...
ISSEL9 views
Σχεδιασµός και υλοποίηση µιας αρχιτεκτονικής µεγάλων δεδοµένων για την αποθήκ... by ISSEL
Σχεδιασµός και υλοποίηση µιας αρχιτεκτονικής µεγάλων δεδοµένων για την αποθήκ...Σχεδιασµός και υλοποίηση µιας αρχιτεκτονικής µεγάλων δεδοµένων για την αποθήκ...
Σχεδιασµός και υλοποίηση µιας αρχιτεκτονικής µεγάλων δεδοµένων για την αποθήκ...
ISSEL16 views

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

  • 1. DPDHMMY Εργαλείο Ανίχνευσης Σχεδιαστικών Προτύπων Λογισμικού ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΕΥΦΥΩΝ ΣΥΣΤΗΜΑΤΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ Νούτσος Αντώνης anoutsos@auth.gr ΑΕΜ 6992 Διπλωματική εργασία υπό την επίβλεψη του Επ. Καθηγητή κ. Ανδρέα Λ. Συμεωνίδη Και του υποψήφιου διδάκτορα Διαμαντόπουλου Θεμιστοκλή Θεσσαλονίκη 2015
  • 2. Δομή παρουσίασης  Εισαγωγή  State of the Art  Σκοπός της διπλωματικής  Ανάλυση του συστήματος  Αναπαράσταση αντικειμένων και σχέσεων του κώδικα  Parser  Αλγόριθμος ανίχνευσης προτύπων σχεδίασης  Αποτελέσματα πειραμάτων  Συμπεράσματα & Μελλοντική εργασία  Γραφικό περιβάλλον 2
  • 3. Εισαγωγή: Σχεδιαστικά Πρότυπα(Design Patterns)  Μη λειτουργικές απαιτήσεις  Επεκτασιμότητα (Extensibility)  Στιβαρότητα (Robustness)  Ευχρηστία (Usability)  Συντηρησιμότητα (Maintainability)  Μεταφερσιμότητα (Portability)  Ελεγξιμότητα (Testability)  Δυνατότητα Επαναχρησιμοποίησης (Reusability)  Σκοπός του κάθε προτύπου  Δημιουργικά – Δημιουργία αντικειμένων  Δομικά – Σύνθεση κλάσεων και αντικειμένων  Συμπεριφοράς – Αλληλοεπίδραση κλάσεων ή/και αντικειμένων 3
  • 4. Εισαγωγή: Εργαλεία Ανίχνευσης Σχεδιαστικών Προτύπων (DPD Tools) Μεγάλος σε έκταση κώδικας 4  Ανάγκη εξαγωγής πληροφορίας από τον πηγαίο κώδικα Δύσκολη κατανόηση Μεγάλα συστήματα λογισμικού Αυτοματοποιημένα συστήματα εξαγωγής δομής, συνδέσεων και συμπεριφοράς ενός μεγάλου έργου λογισμικού
  • 5. State of the Art: Κατηγοριοποίηση των DPD tools  Τύπος ανάλυσης  Δομική ανάλυση  Ανάλυση συμπεριφοράς  Σημασιολογική ανάλυση  Τύπος αναγνώρισης  Τύπος εισόδου  Ενδιάμεση αναπαράσταση 5
  • 6. State of the Art: Γνωστά DPD Tools  DP-Miner  DPRE  PINOT  DeMIMA  PTIDEJ  FUJABA 6
  • 7. Σκοπός της διπλωματικής  Κατασκευή ενός εργαλείου για ανίχνευση σχεδιαστικών προτύπων στον κώδικα που προσφέρει:  Ευελιξία  Δομική ανάλυση Εξέταση κώδικα με λάθη  Μεταφερσιμότητα  Δομική ανάλυση Εξέταση μη μεταγλωττισμένου κώδικα  Διαδραστικότητα  Δυνατότητα ορισμού σχεδιαστικών προτύπων προς ανίχνευση από το χρήστη  Αξιοπιστία  Ταχύτητα 7
  • 8. Ανάλυση του συστήματος: Αναπαράσταση αντικειμένων και σχέσεων του κώδικα  Κάθε κλάση αποτελεί μια οντότητα ClassObject  Οι κλάσεις αλληλοσυνδέονται Connection  Κάθε κλάση κατηγοριοποιείται ως:  Normal: Μια απλή κλάση.  Abstract: Μια αφαιρετική (abstract) κλάση.  Interface: Μια διεπαφή (interface).  Abstracted: Μια κλάση που είναι είτε interface ή abstract.  Any: Μια κλάση οποιουδήποτε τύπου.  Οι συνδέσεις αντιπροσωπεύουν τις σχέσεις μεταξύ κλάσεων και βασίζονται στη UML 8
  • 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 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. Ανάλυση του συστήματος: Parser  Treescanner:  Tree API του Compiler της Java  Υλοποιεί το interface TreeVisitor  Σαρώνει όλα τα παιδιά ενός δέντρου με τις οντότητες του αρχείου .java  Συναρτήσεις προσπέλασης:  visitClass  visitVariable  visitMethodInvocation  visitNewClass  Συναρτήσεις ανίχνευσης συνδέσεων:  findUses  findInherits  findHas  findCalls  findCreates  findReferences 11
  • 12. Ανάλυση του συστήματος: Αλγόριθμος ανίχνευσης προτύπων σχεδίασης  Δομικά μέλη:  Pattern: Αντιπροσωπεύει ένα πρότυπο σχεδίασης με τα ClassObject και τα Connection που τα διέπουν  PatternCandidate: Αντιπροσωπεύει ένα πρότυπο σχεδίασης που ανιχνεύτηκε στο κώδικα και τις αντιστοιχίες των μελών του ως προς το pattern.  PatternDetectionAlgorithm: Περιέχει τις βασικές συναρτήσεις ανίχνευσης σχεδιαστικών προτύπων 12
  • 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 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. Ανάλυση του συστήματος: Αλγόριθμος ανίχνευσης προτύπων σχεδίασης: 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. Ανάλυση του συστήματος: Αλγόριθμος ανίχνευσης προτύπων σχεδίασης: 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  Σχεδιαστικά πρότυπα - Δυνατότητα πολλαπλότητας  Ίδια κλάση - Μέρος του ίδιου προτύπου σε πολλά περιστατικά  Ένα μεγάλο περιστατικό προτύπου > Πολλών μικρών  DPDHMMY:  Εύρεση μικρών περιστατικών Ανάγκη για ομαδοποίηση  PatternCandidate  SuperCandidate  HyperCandidate
  • 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 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 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. Αποτελέσματα Πειραμάτων  Πείραμα 1: Μικρά project, στιγμιότυπα προτύπων σχεδίασης  Εφαρμογή DPDHMMY:  Ένα προς ένα project  Συνολικό project που περιέχει πολλά μικρά  Πείραμα 2: Μεγάλα project, γνωστές βιβλιοθήκες της Java  Βιβλιοθήκες JHotDraw, Java AWT, Apache Ant  Ποσοτική σύγκριση με PINOT 21
  • 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. Αποτελέσματα Πειραμάτων: Πείραμα 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. Αποτελέσματα Πειραμάτων: Πείραμα 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. Αποτελέσματα Πειραμάτων: Πείραμα 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. Συμπεράσματα & Μελλοντική Εργασία  DPDHMMY  Ευέλικτο ως προς την είσοδο δεδομένων  Δυνατότητα δημιουργίας custom design pattern  Αξιόπιστο, εφόσον ο χρήστης ορίσει σωστά τα σχεδιαστικά πρότυπα προς ανίχνευση  Μελλοντικές Επεκτάσεις  Ενσωμάτωση περισσότερων έτοιμων μοτίβων  Partial matching  Γραφική αναπαράσταση αποτελεσμάτων  Επέκταση ανάλυσης πέραν της δομικής  Επέκταση σε άλλες γλώσσες προγραμματισμού 26