SlideShare ist ein Scribd-Unternehmen logo
1 von 28
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

Weitere ähnliche Inhalte

Ähnlich wie Νούτσος Αντώνης 6992

Ioannis Loias
Ioannis LoiasIoannis Loias
Ioannis LoiasISSEL
 
Bagia Rousopoulou
Bagia RousopoulouBagia Rousopoulou
Bagia RousopoulouISSEL
 
Αλεξάνδρα Μπαλτζή 7485
Αλεξάνδρα Μπαλτζή 7485Αλεξάνδρα Μπαλτζή 7485
Αλεξάνδρα Μπαλτζή 7485ISSEL
 
Stelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationStelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationISSEL
 
Βασίλειος Λώλης 5638
Βασίλειος Λώλης 5638Βασίλειος Λώλης 5638
Βασίλειος Λώλης 5638ISSEL
 
Μαρίνα Γέραλη
Μαρίνα Γέραλη Μαρίνα Γέραλη
Μαρίνα Γέραλη ISSEL
 
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: Semantic Code Search in Software Repositories using Neu...Manos Tsardoulias
 
Evangelos papathomas diploma thesis presentation
Evangelos papathomas diploma thesis presentationEvangelos papathomas diploma thesis presentation
Evangelos papathomas diploma thesis presentationISSEL
 
Χατζηελευθερίου Ειρήνη
Χατζηελευθερίου ΕιρήνηΧατζηελευθερίου Ειρήνη
Χατζηελευθερίου ΕιρήνηISSEL
 
Ioannis Iakovidis
Ioannis IakovidisIoannis Iakovidis
Ioannis IakovidisISSEL
 
Κωνσταντίνος Σιδέρης 7254
Κωνσταντίνος Σιδέρης 7254Κωνσταντίνος Σιδέρης 7254
Κωνσταντίνος Σιδέρης 7254ISSEL
 
Narlis Eystratios
Narlis EystratiosNarlis Eystratios
Narlis EystratiosISSEL
 
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...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...
Understanding the importance of demographic background for the website aesth...ISSEL
 
Nikolaos Oikonomou
Nikolaos OikonomouNikolaos Oikonomou
Nikolaos OikonomouISSEL
 
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...
Theofilos Georgiadis: Library recommendation system for the reuse of software...Manos Tsardoulias
 
κεφάλαιο 02 anaptixi-2
κεφάλαιο 02 anaptixi-2κεφάλαιο 02 anaptixi-2
κεφάλαιο 02 anaptixi-2evaplyta
 
Dontsios Dimitris
Dontsios DimitrisDontsios Dimitris
Dontsios DimitrisISSEL
 
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...
Real-Time Detection Of Abnormal User Behavior In Web Applications Using Machi...ISSEL
 

Ähnlich wie Νούτσος Αντώνης 6992 (20)

Ioannis Loias
Ioannis LoiasIoannis Loias
Ioannis Loias
 
Bagia Rousopoulou
Bagia RousopoulouBagia Rousopoulou
Bagia Rousopoulou
 
Αλεξάνδρα Μπαλτζή 7485
Αλεξάνδρα Μπαλτζή 7485Αλεξάνδρα Μπαλτζή 7485
Αλεξάνδρα Μπαλτζή 7485
 
Stelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationStelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentation
 
Βασίλειος Λώλης 5638
Βασίλειος Λώλης 5638Βασίλειος Λώλης 5638
Βασίλειος Λώλης 5638
 
Μαρίνα Γέραλη
Μαρίνα Γέραλη Μαρίνα Γέραλη
Μαρίνα Γέραλη
 
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: Semantic Code Search in Software Repositories using Neu...
 
Evangelos papathomas diploma thesis presentation
Evangelos papathomas diploma thesis presentationEvangelos papathomas diploma thesis presentation
Evangelos papathomas diploma thesis presentation
 
Χατζηελευθερίου Ειρήνη
Χατζηελευθερίου ΕιρήνηΧατζηελευθερίου Ειρήνη
Χατζηελευθερίου Ειρήνη
 
ThesisPresentation
ThesisPresentationThesisPresentation
ThesisPresentation
 
Ioannis Iakovidis
Ioannis IakovidisIoannis Iakovidis
Ioannis Iakovidis
 
Κωνσταντίνος Σιδέρης 7254
Κωνσταντίνος Σιδέρης 7254Κωνσταντίνος Σιδέρης 7254
Κωνσταντίνος Σιδέρης 7254
 
Narlis Eystratios
Narlis EystratiosNarlis Eystratios
Narlis Eystratios
 
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...
 
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...
Understanding the importance of demographic background for the website aesth...
 
Nikolaos Oikonomou
Nikolaos OikonomouNikolaos Oikonomou
Nikolaos Oikonomou
 
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...
Theofilos Georgiadis: Library recommendation system for the reuse of software...
 
κεφάλαιο 02 anaptixi-2
κεφάλαιο 02 anaptixi-2κεφάλαιο 02 anaptixi-2
κεφάλαιο 02 anaptixi-2
 
Dontsios Dimitris
Dontsios DimitrisDontsios Dimitris
Dontsios Dimitris
 
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...
Real-Time Detection Of Abnormal User Behavior In Web Applications Using Machi...
 

Mehr von ISSEL

Implementation of a platform for assessing indoor spaces regarding their frie...
Implementation of a platform for assessing indoor spaces regarding their frie...Implementation of a platform for assessing indoor spaces regarding their frie...
Implementation of a platform for assessing indoor spaces regarding their frie...ISSEL
 
Autonomous car position calculation with particle filters using traffic data ...
Autonomous car position calculation with particle filters using traffic data ...Autonomous car position calculation with particle filters using traffic data ...
Autonomous car position calculation with particle filters using traffic data ...ISSEL
 
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...ISSEL
 
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...ISSEL
 
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...ISSEL
 
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής ΝοημοσύνηςΑνάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής ΝοημοσύνηςISSEL
 
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptx
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptxΑνάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptx
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptxISSEL
 
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...ISSEL
 
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...ISSEL
 
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...ISSEL
 
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...ISSEL
 
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας ΙσχυρισμώνΔημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας ΙσχυρισμώνISSEL
 
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµαταΕξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµαταISSEL
 
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των  διαδικασιών κατασκευής συστημάτων λο...Ανάπτυξη Μηχανισμών Αυτοματοποίησης των  διαδικασιών κατασκευής συστημάτων λο...
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...ISSEL
 
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...ISSEL
 
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...ISSEL
 
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικούΕξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικούISSEL
 
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία ΕφαρµογήςΑνάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία ΕφαρµογήςISSEL
 
Camera-based localization of annotated objects in indoor environments
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
 
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...ISSEL
 

Mehr von ISSEL (20)

Implementation of a platform for assessing indoor spaces regarding their frie...
Implementation of a platform for assessing indoor spaces regarding their frie...Implementation of a platform for assessing indoor spaces regarding their frie...
Implementation of a platform for assessing indoor spaces regarding their frie...
 
Autonomous car position calculation with particle filters using traffic data ...
Autonomous car position calculation with particle filters using traffic data ...Autonomous car position calculation with particle filters using traffic data ...
Autonomous car position calculation with particle filters using traffic data ...
 
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...
 
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
 
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...
 
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής ΝοημοσύνηςΑνάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
 
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptx
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptxΑνάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptx
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptx
 
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...
 
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
 
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
 
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
 
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας ΙσχυρισμώνΔημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
 
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµαταΕξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
 
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των  διαδικασιών κατασκευής συστημάτων λο...Ανάπτυξη Μηχανισμών Αυτοματοποίησης των  διαδικασιών κατασκευής συστημάτων λο...
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...
 
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
 
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
 
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικούΕξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
 
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία ΕφαρµογήςΑνάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
 
Camera-based localization of annotated objects in indoor environments
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
 
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
 

Νούτσος Αντώνης 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