SlideShare a Scribd company logo
Σχεδίαση και ανάπτυξη συστήματος σταδιακής
(incremental) στατικής ανάλυσης έργων
λογισμικού
Διπλωματική εργασία της
Παντελίδου Ειρήνης
Α.Ε.Μ. 8753
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ
ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ
Υπό την επίβλεψη του Αναπληρωτή Καθηγητή
κ. Ανδρέα Συμεωνίδη
Και του υποψήφιου διδάκτορα
κ. Μιχάλη Παπαμιχαήλ
Σεπτέμβριος 2020
Η τεχνολογία λογισμικού σήμερα…
• Πληθώρα αποθηκών
ανοιχτού λογισμικού
• GitHub Repositories με
commits > 20.000
• Υψηλός ρυθμός
μεταβολής έργων
λογισμικού
Πλήθος αρχείων
Κώδικα αρχείων
Elastic/elasticsearch 54.924 commits
Spring-projects/spring-boot 28.930 commits
apache/flink commits 23.686
Κίνητρα…
• Ανάγκη έγκαιρης ανατροφοδότησης
προγραμματιστών
• Εργαλείο σταδιακής στατικής
ανάλυσης κώδικα:
Δομικά σφάλματα
Στατική
Ανάλυση Ανατροφοδότηση
Αρκεί η στατική ανάλυση ολόκληρου
του έργου από την αρχή μία φορά
την ημέρα/εβδομάδα?
Πολυπλοκότητα
Συνοχή
Συσχέτιση
Σχολιασμός
Κληρονομικότητα
Μέγεθος
Τι γίνεται με τα ποιοτικά
χαρακτηριστικά κώδικα?
Σκοπός της διπλωματικής εργασίας
Static Analysis
Metrics
SourceMeter
All repository
files
# Commit
A.java
B.java
C.java
D.java
E.java
Static Analysis
Metrics
SourceMeter
A.java
B.java
C.java
Πλήρης στατική
ανάλυση
Σταδιακή στατική
ανάλυση
Εργαλεία στατικής ανάλυσης κώδικα
• PMD Ανίχνευση κακών πρακτικών εγγραφής κώδικα
• Complexity-report Υπολογισμός πολυπλοκότητας
κώδικα
• SonarQube Ανίχνευση σφαλμάτων, αδυναμιών
ασφάλειας και διπλοτυπίες κώδικα
• Συνδυασμός όλων:
Dataset
Κριτήρια επιλογής των GitHub αποθετηρίων:
• Αρχεία πηγαίου κώδικα (κυρίως) σε Java
• Πλήθος commits μεταξύ 100 και 15.000
Project Commits LOC
json-iterator/java 460 13269
stleary/JSON-java 789 17694
json-path/JsonPath 881 17931
TheAlgorithms/java 1047 19585
structurizr/java 1072 22187
exercism/java 2216 24643
apache/dubbo 4360 184639
mongodb/mongo-java-driver 7221 160559
google/ExoPlayer 7969 200610
tronprotocol/java-tron 14254 276286
Συνολικό πλήθος
εξεταζόμενων
γραμμών κώδικα:
937.403 (LOC)
Το σύστημα που υλοποιήθηκε
Υποσυστήματα:
• Downloader
• Code Change Manager
• Code Analyzer
Το υποσύστημα του Downloader
• Είναι υπεύθυνο για:
• Τη λήψη και αποθήκευση των πληροφοριών περιγραφής κάθε commit
• Τη λήψη ολόκληρου του project για κάθε commit στη μορφή με την
οποία βρίσκεται εκείνη τη στιγμή και την αποθήκευση του σε τοπικό
αποθετήριο στον υπολογιστή
Τρόπος λειτουργίας του Downloader
Για κάθε commit:
• Αποστολή αιτήματος στη βάση δεδομένων του GitHub
• Λήψη και αποθήκευση των εξατομικευμένων
πληροφοριών του σε .json αρχείο
Όνομα & διαδρομή των μεταβαλλόμενων αρχείων
κώδικα στο αποθετήριο
Κώδικας αλλαγών (diff) κάθε μεταβαλλόμενου
αρχείου
• Λήψη και αποθήκευση ολόκληρου του έργου λογισμικού
σε τοπικό αποθετήριο
Local
Repository
# Commit
Το υποσύστημα του Code Change Manager
• Είναι υπεύθυνο για:
• Την εύρεση και απομόνωση των μεταβαλλόμενων αρχείων κώδικα κάθε
commit στο αποθετήριο
• Την εύρεση και απομόνωση των άμεσα συσχετιζόμενων αρχείων με κάθε
μεταβαλλόμενο αρχείο κώδικα
Files Selector
Για κάθε commit:
Ανάκτηση των πληροφοριών μεταβολής από το αρχείο εξατομικευμένων
πληροφοριών του (.json)
1) Προσθήκη νέου αρχείου κώδικα
Είδος αλλαγής 2) Τροποποίηση ήδη υπάρχοντος αρχείου κώδικα
3) Διαγραφή ήδη υπάρχοντος αρχείου κώδικα
Όνομα μεταβαλλόμενου αρχείου
Διαδρομή μεταβαλλόμενου
αρχείου στο τοπικό αποθετήριο
Ονόματα και διαδρομές των
άμεσα συσχετιζόμενων αρχείων
 Δηλώσεις import στον
κώδικα αλλαγών (patch/diff)
Files Transporter
Διαδρομή των αρχείων
στον νέο φάκελο
ανάλογη με
Διαδρομή των αρχείων
στο τοπικό αποθετήριο
Αποφυγή:
• Προβλήματος συνύπαρξης αρχείων ίδιου ονόματος αλλά διαφορετικού
περιεχομένου στον ίδιο φάκελο
• Λανθασμένων αποτελεσμάτων κατά τη διαδικασία ανάλυσης
Περίπτωση ύπαρξης πληθώρας άμεσα
συσχετιζόμενων αρχείων κώδικα
Αποφυγή μεταφοράς τους σε νέο φάκελο
Γιατί?
• Χρονοβόρα διαδικασία εύρεσης
• Ελάχιστο κέρδος χρόνου ανάλυσης
• Πιθανή παράλειψη κάποιου τρίτου αρχείου με το οποίο μπορεί να
υπάρχει κάποια μικρή μακρινή σχέση συσχέτισης
Άρα:
Πλήρης στατική ανάλυση του
έργου λογισμικού
Το υποσύστημα του Code Analyzer
• Είναι υπεύθυνο για:
• Την παραγωγή των μετρικών στατικής ανάλυσης για τα μεταβαλλόμενα
αρχεία κάθε commit
Τρόπος λειτουργίας του Code Analyzer
• Στατική ανάλυση του νέου φακέλου με όλα τα μεταβαλλόμενα
αρχεία κώδικα
• Παραγωγή και αποθήκευση των μετρικών στατικής ανάλυσης σε
.csv αρχεία αποτελεσμάτων
• Συγκέντρωση των ανανεωμένων μετρικών στατικής ανάλυσης των
μεταβαλλόμενων αρχείων σε κοινό .csv αρχείο αποτελεσμάτων με
αυτές των υπόλοιπων αρχείων του αποθετηρίου
Commit #1
Commit #2
Commit #2
Πειράματα
1. Ορθότητα υπολογισμού μετρικών
στατικής ανάλυσης
2. Πλήθος γραμμών κώδικα (LOC)
αρχείων συμμετοχής
3. Μέγεθος αρχείων συμμετοχής στο
δίσκο
4. Χρόνος στατικής ανάλυσης μικρών
και μεγάλων αποθετηρίων
5. Χρόνος σταδιακής στατικής
ανάλυσης κάθε commit
Πείραμα 1: Ορθότητα υπολογισμού μετρικών
στατικής ανάλυσης
Δείγμα: Αποθετήρια με μικρό και μεγάλο πλήθος αρχείων και commits
• Επιτυχία σωστού υπολογισμού
μετρικής CBO:
Για μικρό project: 99.55%
Για μεγάλο project: 98.017%
• Επιτυχία σωστού υπολογισμού
λοιπών μετρικών: 100%
Πείραμα 2: Πλήθος γραμμών κώδικα (LOC) των
αρχείων συμμετοχής
Δείγμα:
Πείραμα 3: Μέγεθος αρχείων συμμετοχής στο
δίσκο
Δείγμα: Αποθετήρια μεγάλου μεγέθους (σε ΜΒ)
Εξοικονόμηση χώρου
στον υπολογιστή:
98.65%
99.31%
99.36%
99.48%
Πείραμα 4α: Χρόνος στατικής ανάλυσης
αποθετηρίων με μικρό πλήθος commits
Αποθετήρια: 460 ≤ commits ≤ 2216
13269 ≤ LOC ≤ 24643
• Μείωση χρόνου σε ποσοστό 67% - 75%
Πείραμα 4β: Χρόνος στατικής ανάλυσης
αποθετηρίων με μεγάλο πλήθος commits
Αποθετήρια: 4360 ≤ commits ≤ 14254
184639 ≤ LOC ≤ 276286
• Μείωση χρόνου σε ποσοστό 87% - 91%
Πείραμα 5: Χρόνος σταδιακής στατικής ανάλυσης
κάθε commit
Δείγμα:
Αύξηση εξεταζόμενων LOC
Αύξηση χρόνου σταδιακής
στατικής ανάλυσης
Συμπεράσματα
Το σύστημα προσφέρει:
• Ακρίβεια υπολογισμού των μετρικών στατικής ανάλυσης με μία
πολύ μικρή απόκλιση στην περίπτωση των μετρικών συνοχής
• Μεγάλο κέρδος χρόνου διεκπεραίωσης στατικής ανάλυσης τόσο
για μικρά όσο και για μεγάλα έργα λογισμικού
• Δυνατότητα εξοικονόμησης χώρου στον υπολογιστή
• Δυνατότητα εξοικονόμησης πόρων
Ανοιχτά θέματα
• Εφαρμογή και σε άλλες γλώσσες προγραμματισμού
• Δυνατότητα εφαρμογής του με μεγαλύτερη επιτυχία στα
μεγάλα και περίπλοκα αποθετήρια έργων λογισμικού
• Δυνατότητα λήψης και διαχείρισης έργων λογισμικού και από
άλλες αποθήκες ανοιχτού λογισμικού
• Επέκταση σταδιακής στατικής ανάλυσης σε επίπεδο πακέτου
Ευχαριστώ θερμά:
• Τον Αναπληρωτή Καθηγητή Ανδρέα Συμεωνίδη
• Τον Υποψήφιο Διδάκτωρ Μιχάλη Παπαμιχαήλ
Σας ευχαριστώ για την προσοχή σας!

More Related Content

What's hot

Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης της παραμετροποίησης ρομποτι...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης της παραμετροποίησης ρομποτι...Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης της παραμετροποίησης ρομποτι...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης της παραμετροποίησης ρομποτι...
ISSEL
 
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικούΑνάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
ISSEL
 
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή διαδικασίας αρχικής προσφοράς ...
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή  διαδικασίας αρχικής προσφοράς ...Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή  διαδικασίας αρχικής προσφοράς ...
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή διαδικασίας αρχικής προσφοράς ...
ISSEL
 
Stelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationStelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentation
ISSEL
 
Νικόλαος Κατιρτζής 7185
Νικόλαος Κατιρτζής 7185Νικόλαος Κατιρτζής 7185
Νικόλαος Κατιρτζής 7185
ISSEL
 
Ioannis Loias
Ioannis LoiasIoannis Loias
Ioannis Loias
ISSEL
 
Θεμιστοκλής Παπαβασιλείου
Θεμιστοκλής ΠαπαβασιλείουΘεμιστοκλής Παπαβασιλείου
Θεμιστοκλής Παπαβασιλείου
ISSEL
 
Konstantinos Koukoutegos Diploma Thesis Presentation
Konstantinos Koukoutegos Diploma Thesis PresentationKonstantinos Koukoutegos Diploma Thesis Presentation
Konstantinos Koukoutegos Diploma Thesis Presentation
ISSEL
 
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...
ISSEL
 
Μεθοδολογία ανάπτυξης γραφικών εφαρμογών για απομακρυσμένα ρομπότ, στο πλαίσ...
Μεθοδολογία ανάπτυξης γραφικών εφαρμογών  για απομακρυσμένα ρομπότ, στο πλαίσ...Μεθοδολογία ανάπτυξης γραφικών εφαρμογών  για απομακρυσμένα ρομπότ, στο πλαίσ...
Μεθοδολογία ανάπτυξης γραφικών εφαρμογών για απομακρυσμένα ρομπότ, στο πλαίσ...
ISSEL
 
Στεργιάδης Εμμανουήλ
Στεργιάδης Εμμανουήλ Στεργιάδης Εμμανουήλ
Στεργιάδης Εμμανουήλ
ISSEL
 
Αλεξάνδρα Μπαλτζή 7485
Αλεξάνδρα Μπαλτζή 7485Αλεξάνδρα Μπαλτζή 7485
Αλεξάνδρα Μπαλτζή 7485
ISSEL
 
Dontsios Dimitris
Dontsios DimitrisDontsios Dimitris
Dontsios Dimitris
ISSEL
 
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...
ISSEL
 
Εντοπισμός του Image Inpainting με Μεθόδους Τεχνητής Νοημοσύνης
Εντοπισμός του Image Inpainting με Μεθόδους Τεχνητής ΝοημοσύνηςΕντοπισμός του Image Inpainting με Μεθόδους Τεχνητής Νοημοσύνης
Εντοπισμός του Image Inpainting με Μεθόδους Τεχνητής Νοημοσύνης
ISSEL
 
Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...
Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...
Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...
ISSEL
 
Έγκαιρη ταυτοποίηση βλαβών με αλγόριθμους Μηχανικής Mάθησης
Έγκαιρη ταυτοποίηση βλαβών με αλγόριθμους Μηχανικής MάθησηςΈγκαιρη ταυτοποίηση βλαβών με αλγόριθμους Μηχανικής Mάθησης
Έγκαιρη ταυτοποίηση βλαβών με αλγόριθμους Μηχανικής Mάθησης
ISSEL
 
Επανοργάνωση πηγαίου κώδικα από γράφους εξαρτήσεων οντοτήτων µε βάση παραδείγ...
Επανοργάνωση πηγαίου κώδικα από γράφους εξαρτήσεων οντοτήτων µε βάση παραδείγ...Επανοργάνωση πηγαίου κώδικα από γράφους εξαρτήσεων οντοτήτων µε βάση παραδείγ...
Επανοργάνωση πηγαίου κώδικα από γράφους εξαρτήσεων οντοτήτων µε βάση παραδείγ...
ISSEL
 

What's hot (18)

Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης της παραμετροποίησης ρομποτι...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης της παραμετροποίησης ρομποτι...Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης της παραμετροποίησης ρομποτι...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης της παραμετροποίησης ρομποτι...
 
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικούΑνάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικού
 
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή διαδικασίας αρχικής προσφοράς ...
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή  διαδικασίας αρχικής προσφοράς ...Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή  διαδικασίας αρχικής προσφοράς ...
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή διαδικασίας αρχικής προσφοράς ...
 
Stelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationStelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentation
 
Νικόλαος Κατιρτζής 7185
Νικόλαος Κατιρτζής 7185Νικόλαος Κατιρτζής 7185
Νικόλαος Κατιρτζής 7185
 
Ioannis Loias
Ioannis LoiasIoannis Loias
Ioannis Loias
 
Θεμιστοκλής Παπαβασιλείου
Θεμιστοκλής ΠαπαβασιλείουΘεμιστοκλής Παπαβασιλείου
Θεμιστοκλής Παπαβασιλείου
 
Konstantinos Koukoutegos Diploma Thesis Presentation
Konstantinos Koukoutegos Diploma Thesis PresentationKonstantinos Koukoutegos Diploma Thesis Presentation
Konstantinos Koukoutegos Diploma Thesis Presentation
 
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με  σκοπό την Εξα...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...
 
Μεθοδολογία ανάπτυξης γραφικών εφαρμογών για απομακρυσμένα ρομπότ, στο πλαίσ...
Μεθοδολογία ανάπτυξης γραφικών εφαρμογών  για απομακρυσμένα ρομπότ, στο πλαίσ...Μεθοδολογία ανάπτυξης γραφικών εφαρμογών  για απομακρυσμένα ρομπότ, στο πλαίσ...
Μεθοδολογία ανάπτυξης γραφικών εφαρμογών για απομακρυσμένα ρομπότ, στο πλαίσ...
 
Στεργιάδης Εμμανουήλ
Στεργιάδης Εμμανουήλ Στεργιάδης Εμμανουήλ
Στεργιάδης Εμμανουήλ
 
Αλεξάνδρα Μπαλτζή 7485
Αλεξάνδρα Μπαλτζή 7485Αλεξάνδρα Μπαλτζή 7485
Αλεξάνδρα Μπαλτζή 7485
 
Dontsios Dimitris
Dontsios DimitrisDontsios Dimitris
Dontsios Dimitris
 
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...
 
Εντοπισμός του Image Inpainting με Μεθόδους Τεχνητής Νοημοσύνης
Εντοπισμός του Image Inpainting με Μεθόδους Τεχνητής ΝοημοσύνηςΕντοπισμός του Image Inpainting με Μεθόδους Τεχνητής Νοημοσύνης
Εντοπισμός του Image Inpainting με Μεθόδους Τεχνητής Νοημοσύνης
 
Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...
Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...
Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...
 
Έγκαιρη ταυτοποίηση βλαβών με αλγόριθμους Μηχανικής Mάθησης
Έγκαιρη ταυτοποίηση βλαβών με αλγόριθμους Μηχανικής MάθησηςΈγκαιρη ταυτοποίηση βλαβών με αλγόριθμους Μηχανικής Mάθησης
Έγκαιρη ταυτοποίηση βλαβών με αλγόριθμους Μηχανικής Mάθησης
 
Επανοργάνωση πηγαίου κώδικα από γράφους εξαρτήσεων οντοτήτων µε βάση παραδείγ...
Επανοργάνωση πηγαίου κώδικα από γράφους εξαρτήσεων οντοτήτων µε βάση παραδείγ...Επανοργάνωση πηγαίου κώδικα από γράφους εξαρτήσεων οντοτήτων µε βάση παραδείγ...
Επανοργάνωση πηγαίου κώδικα από γράφους εξαρτήσεων οντοτήτων µε βάση παραδείγ...
 

Similar to Pantelidou Eirini: Design and development of a system for incremental static analysis of software projects

Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
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...
Analysis and profiling of developer profiles using data mining techniques fro...
ISSEL
 
Design and Implementation of a Mechanism that automates the generation of Sof...
Design and Implementation of a Mechanism that automates the generation of Sof...Design and Implementation of a Mechanism that automates the generation of Sof...
Design and Implementation of a Mechanism that automates the generation of Sof...
ISSEL
 
Εσωτερικό Σεμινάριο SoDaNet στην χρήση των εργαλείων τεκμηρίωσης και διαχείρι...
Εσωτερικό Σεμινάριο SoDaNet στην χρήση των εργαλείων τεκμηρίωσης και διαχείρι...Εσωτερικό Σεμινάριο SoDaNet στην χρήση των εργαλείων τεκμηρίωσης και διαχείρι...
Εσωτερικό Σεμινάριο SoDaNet στην χρήση των εργαλείων τεκμηρίωσης και διαχείρι...
NikosKlironomos1
 
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
ISSEL
 
Creating an Open Archival Information System compliant archive for CERN
Creating an Open Archival Information System compliant archive for CERNCreating an Open Archival Information System compliant archive for CERN
Creating an Open Archival Information System compliant archive for CERN
ISSEL
 
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERNΔημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
ISSEL
 
Πίθος - Αρχιτεκτονική και τεχνολογίες .NET
Πίθος - Αρχιτεκτονική και τεχνολογίες .NETΠίθος - Αρχιτεκτονική και τεχνολογίες .NET
Πίθος - Αρχιτεκτονική και τεχνολογίες .NET
Panagiotis Kanavos
 
ThesisPresentation
ThesisPresentationThesisPresentation
ThesisPresentation
ThomasKanoutas
 
Papatzelos Spiridon
Papatzelos SpiridonPapatzelos Spiridon
Papatzelos Spiridon
ISSEL
 
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
ISSEL
 
KanoutasThomasThesis
KanoutasThomasThesisKanoutasThomasThesis
KanoutasThomasThesis
ThomasKanoutas
 
Μαρίνα Γέραλη
Μαρίνα Γέραλη Μαρίνα Γέραλη
Μαρίνα Γέραλη
ISSEL
 
Συλλογικοί Κατάλογοι & Διαδίκτυο
Συλλογικοί Κατάλογοι & ΔιαδίκτυοΣυλλογικοί Κατάλογοι & Διαδίκτυο
Συλλογικοί Κατάλογοι & Διαδίκτυο
Levadia Library
 
Σωτήρης Μπέης
Σωτήρης ΜπέηςΣωτήρης Μπέης
Σωτήρης Μπέης
ISSEL
 
Βελτίωση Αυτοματοποιημένης Ανάθεσης Εργασιών Λογισμικού με χρήση Commits σε Δ...
Βελτίωση Αυτοματοποιημένης Ανάθεσης Εργασιών Λογισμικού με χρήση Commits σε Δ...Βελτίωση Αυτοματοποιημένης Ανάθεσης Εργασιών Λογισμικού με χρήση Commits σε Δ...
Βελτίωση Αυτοματοποιημένης Ανάθεσης Εργασιών Λογισμικού με χρήση Commits σε Δ...
ISSEL
 
Applying Data Mining Techniques on Software Repositories to Extract Design an...
Applying Data Mining Techniques on Software Repositories to Extract Design an...Applying Data Mining Techniques on Software Repositories to Extract Design an...
Applying Data Mining Techniques on Software Repositories to Extract Design an...
ISSEL
 
Ανάλυση διαλόγων προγραμματιστών με το ChatGPT
Ανάλυση διαλόγων προγραμματιστών με το ChatGPTΑνάλυση διαλόγων προγραμματιστών με το ChatGPT
Ανάλυση διαλόγων προγραμματιστών με το ChatGPT
ISSEL
 
Μιχαήλ Παπαμιχαήλ
Μιχαήλ ΠαπαμιχαήλΜιχαήλ Παπαμιχαήλ
Μιχαήλ Παπαμιχαήλ
ISSEL
 
Git intro
Git introGit intro
Git intro
jtsagata
 

Similar to Pantelidou Eirini: Design and development of a system for incremental static analysis of software projects (20)

Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...
 
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...
Analysis and profiling of developer profiles using data mining techniques fro...
 
Design and Implementation of a Mechanism that automates the generation of Sof...
Design and Implementation of a Mechanism that automates the generation of Sof...Design and Implementation of a Mechanism that automates the generation of Sof...
Design and Implementation of a Mechanism that automates the generation of Sof...
 
Εσωτερικό Σεμινάριο SoDaNet στην χρήση των εργαλείων τεκμηρίωσης και διαχείρι...
Εσωτερικό Σεμινάριο SoDaNet στην χρήση των εργαλείων τεκμηρίωσης και διαχείρι...Εσωτερικό Σεμινάριο SoDaNet στην χρήση των εργαλείων τεκμηρίωσης και διαχείρι...
Εσωτερικό Σεμινάριο SoDaNet στην χρήση των εργαλείων τεκμηρίωσης και διαχείρι...
 
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
 
Creating an Open Archival Information System compliant archive for CERN
Creating an Open Archival Information System compliant archive for CERNCreating an Open Archival Information System compliant archive for CERN
Creating an Open Archival Information System compliant archive for CERN
 
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERNΔημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
Δημιουργία ενός Ανοιχτού Αρχειακού Πληροφοριακού Συστήματος για το CERN
 
Πίθος - Αρχιτεκτονική και τεχνολογίες .NET
Πίθος - Αρχιτεκτονική και τεχνολογίες .NETΠίθος - Αρχιτεκτονική και τεχνολογίες .NET
Πίθος - Αρχιτεκτονική και τεχνολογίες .NET
 
ThesisPresentation
ThesisPresentationThesisPresentation
ThesisPresentation
 
Papatzelos Spiridon
Papatzelos SpiridonPapatzelos Spiridon
Papatzelos Spiridon
 
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
 
KanoutasThomasThesis
KanoutasThomasThesisKanoutasThomasThesis
KanoutasThomasThesis
 
Μαρίνα Γέραλη
Μαρίνα Γέραλη Μαρίνα Γέραλη
Μαρίνα Γέραλη
 
Συλλογικοί Κατάλογοι & Διαδίκτυο
Συλλογικοί Κατάλογοι & ΔιαδίκτυοΣυλλογικοί Κατάλογοι & Διαδίκτυο
Συλλογικοί Κατάλογοι & Διαδίκτυο
 
Σωτήρης Μπέης
Σωτήρης ΜπέηςΣωτήρης Μπέης
Σωτήρης Μπέης
 
Βελτίωση Αυτοματοποιημένης Ανάθεσης Εργασιών Λογισμικού με χρήση Commits σε Δ...
Βελτίωση Αυτοματοποιημένης Ανάθεσης Εργασιών Λογισμικού με χρήση Commits σε Δ...Βελτίωση Αυτοματοποιημένης Ανάθεσης Εργασιών Λογισμικού με χρήση Commits σε Δ...
Βελτίωση Αυτοματοποιημένης Ανάθεσης Εργασιών Λογισμικού με χρήση Commits σε Δ...
 
Applying Data Mining Techniques on Software Repositories to Extract Design an...
Applying Data Mining Techniques on Software Repositories to Extract Design an...Applying Data Mining Techniques on Software Repositories to Extract Design an...
Applying Data Mining Techniques on Software Repositories to Extract Design an...
 
Ανάλυση διαλόγων προγραμματιστών με το ChatGPT
Ανάλυση διαλόγων προγραμματιστών με το ChatGPTΑνάλυση διαλόγων προγραμματιστών με το ChatGPT
Ανάλυση διαλόγων προγραμματιστών με το ChatGPT
 
Μιχαήλ Παπαμιχαήλ
Μιχαήλ ΠαπαμιχαήλΜιχαήλ Παπαμιχαήλ
Μιχαήλ Παπαμιχαήλ
 
Git intro
Git introGit intro
Git intro
 

More from Manos Tsardoulias

Ευρωστία νευρωνικών δικτύων βαθειάς μάθησης - Ακανθόπουλος Ηλίας
Ευρωστία νευρωνικών δικτύων βαθειάς μάθησης - Ακανθόπουλος ΗλίαςΕυρωστία νευρωνικών δικτύων βαθειάς μάθησης - Ακανθόπουλος Ηλίας
Ευρωστία νευρωνικών δικτύων βαθειάς μάθησης - Ακανθόπουλος Ηλίας
Manos Tsardoulias
 
Alexandros Delitzas: Understanding website aesthetics using deep learning
Alexandros Delitzas: Understanding website aesthetics using deep learningAlexandros Delitzas: Understanding website aesthetics using deep learning
Alexandros Delitzas: Understanding website aesthetics using deep learning
Manos Tsardoulias
 
Giannopoulos Nikolaos: Ανάπτυξη Τεχνικών Εξατομίκευσης Διαφημιστικών Προβολών...
Giannopoulos Nikolaos: Ανάπτυξη Τεχνικών Εξατομίκευσης Διαφημιστικών Προβολών...Giannopoulos Nikolaos: Ανάπτυξη Τεχνικών Εξατομίκευσης Διαφημιστικών Προβολών...
Giannopoulos Nikolaos: Ανάπτυξη Τεχνικών Εξατομίκευσης Διαφημιστικών Προβολών...
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: Semantic Code Search in Software Repositories using Neu...
Manos Tsardoulias
 
Charis Eleftheriadis. Towards evaluating Deep Neural Networks’ Robustness to ...
Charis Eleftheriadis. Towards evaluating Deep Neural Networks’ Robustness to ...Charis Eleftheriadis. Towards evaluating Deep Neural Networks’ Robustness to ...
Charis Eleftheriadis. Towards evaluating Deep Neural Networks’ Robustness to ...
Manos Tsardoulias
 
Pavlos Avgoustinakis: Video retrieval based on audio content from large scale...
Pavlos Avgoustinakis: Video retrieval based on audio content from large scale...Pavlos Avgoustinakis: Video retrieval based on audio content from large scale...
Pavlos Avgoustinakis: Video retrieval based on audio content from large scale...
Manos Tsardoulias
 
Gougousis Dimitris: Development of an automated machine learning system for p...
Gougousis Dimitris: Development of an automated machine learning system for p...Gougousis Dimitris: Development of an automated machine learning system for p...
Gougousis Dimitris: Development of an automated machine learning system for p...
Manos Tsardoulias
 
Despoina Touska: Video Forgery Detection using Autoencoder and Recurrent Neur...
Despoina Touska: Video Forgery Detection using Autoencoder and Recurrent Neur...Despoina Touska: Video Forgery Detection using Autoencoder and Recurrent Neur...
Despoina Touska: Video Forgery Detection using Autoencoder and Recurrent Neur...
Manos Tsardoulias
 
Kelesakis Dimitrios thesis: Enhancing the conversion rate of e-shops with dyn...
Kelesakis Dimitrios thesis: Enhancing the conversion rate of e-shops with dyn...Kelesakis Dimitrios thesis: Enhancing the conversion rate of e-shops with dyn...
Kelesakis Dimitrios thesis: Enhancing the conversion rate of e-shops with dyn...
Manos Tsardoulias
 
Rafail Brouzos thesis
Rafail Brouzos thesisRafail Brouzos thesis
Rafail Brouzos thesis
Manos Tsardoulias
 
Thesis presentation georgios-balaouras
Thesis presentation georgios-balaourasThesis presentation georgios-balaouras
Thesis presentation georgios-balaouras
Manos Tsardoulias
 
Pandora Robotics Team - 2007 to 2015 - ECE, AUTH
Pandora Robotics Team - 2007 to 2015 - ECE, AUTHPandora Robotics Team - 2007 to 2015 - ECE, AUTH
Pandora Robotics Team - 2007 to 2015 - ECE, AUTH
Manos Tsardoulias
 
Full coverage of a priori known map from multiple robotic agents
Full coverage of a priori known map from multiple robotic agentsFull coverage of a priori known map from multiple robotic agents
Full coverage of a priori known map from multiple robotic agents
Manos Tsardoulias
 

More from Manos Tsardoulias (13)

Ευρωστία νευρωνικών δικτύων βαθειάς μάθησης - Ακανθόπουλος Ηλίας
Ευρωστία νευρωνικών δικτύων βαθειάς μάθησης - Ακανθόπουλος ΗλίαςΕυρωστία νευρωνικών δικτύων βαθειάς μάθησης - Ακανθόπουλος Ηλίας
Ευρωστία νευρωνικών δικτύων βαθειάς μάθησης - Ακανθόπουλος Ηλίας
 
Alexandros Delitzas: Understanding website aesthetics using deep learning
Alexandros Delitzas: Understanding website aesthetics using deep learningAlexandros Delitzas: Understanding website aesthetics using deep learning
Alexandros Delitzas: Understanding website aesthetics using deep learning
 
Giannopoulos Nikolaos: Ανάπτυξη Τεχνικών Εξατομίκευσης Διαφημιστικών Προβολών...
Giannopoulos Nikolaos: Ανάπτυξη Τεχνικών Εξατομίκευσης Διαφημιστικών Προβολών...Giannopoulos Nikolaos: Ανάπτυξη Τεχνικών Εξατομίκευσης Διαφημιστικών Προβολών...
Giannopoulos Nikolaos: Ανάπτυξη Τεχνικών Εξατομίκευσης Διαφημιστικών Προβολών...
 
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...
 
Charis Eleftheriadis. Towards evaluating Deep Neural Networks’ Robustness to ...
Charis Eleftheriadis. Towards evaluating Deep Neural Networks’ Robustness to ...Charis Eleftheriadis. Towards evaluating Deep Neural Networks’ Robustness to ...
Charis Eleftheriadis. Towards evaluating Deep Neural Networks’ Robustness to ...
 
Pavlos Avgoustinakis: Video retrieval based on audio content from large scale...
Pavlos Avgoustinakis: Video retrieval based on audio content from large scale...Pavlos Avgoustinakis: Video retrieval based on audio content from large scale...
Pavlos Avgoustinakis: Video retrieval based on audio content from large scale...
 
Gougousis Dimitris: Development of an automated machine learning system for p...
Gougousis Dimitris: Development of an automated machine learning system for p...Gougousis Dimitris: Development of an automated machine learning system for p...
Gougousis Dimitris: Development of an automated machine learning system for p...
 
Despoina Touska: Video Forgery Detection using Autoencoder and Recurrent Neur...
Despoina Touska: Video Forgery Detection using Autoencoder and Recurrent Neur...Despoina Touska: Video Forgery Detection using Autoencoder and Recurrent Neur...
Despoina Touska: Video Forgery Detection using Autoencoder and Recurrent Neur...
 
Kelesakis Dimitrios thesis: Enhancing the conversion rate of e-shops with dyn...
Kelesakis Dimitrios thesis: Enhancing the conversion rate of e-shops with dyn...Kelesakis Dimitrios thesis: Enhancing the conversion rate of e-shops with dyn...
Kelesakis Dimitrios thesis: Enhancing the conversion rate of e-shops with dyn...
 
Rafail Brouzos thesis
Rafail Brouzos thesisRafail Brouzos thesis
Rafail Brouzos thesis
 
Thesis presentation georgios-balaouras
Thesis presentation georgios-balaourasThesis presentation georgios-balaouras
Thesis presentation georgios-balaouras
 
Pandora Robotics Team - 2007 to 2015 - ECE, AUTH
Pandora Robotics Team - 2007 to 2015 - ECE, AUTHPandora Robotics Team - 2007 to 2015 - ECE, AUTH
Pandora Robotics Team - 2007 to 2015 - ECE, AUTH
 
Full coverage of a priori known map from multiple robotic agents
Full coverage of a priori known map from multiple robotic agentsFull coverage of a priori known map from multiple robotic agents
Full coverage of a priori known map from multiple robotic agents
 

Pantelidou Eirini: Design and development of a system for incremental static analysis of software projects

  • 1. Σχεδίαση και ανάπτυξη συστήματος σταδιακής (incremental) στατικής ανάλυσης έργων λογισμικού Διπλωματική εργασία της Παντελίδου Ειρήνης Α.Ε.Μ. 8753 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Υπό την επίβλεψη του Αναπληρωτή Καθηγητή κ. Ανδρέα Συμεωνίδη Και του υποψήφιου διδάκτορα κ. Μιχάλη Παπαμιχαήλ Σεπτέμβριος 2020
  • 2. Η τεχνολογία λογισμικού σήμερα… • Πληθώρα αποθηκών ανοιχτού λογισμικού • GitHub Repositories με commits > 20.000 • Υψηλός ρυθμός μεταβολής έργων λογισμικού Πλήθος αρχείων Κώδικα αρχείων Elastic/elasticsearch 54.924 commits Spring-projects/spring-boot 28.930 commits apache/flink commits 23.686
  • 3. Κίνητρα… • Ανάγκη έγκαιρης ανατροφοδότησης προγραμματιστών • Εργαλείο σταδιακής στατικής ανάλυσης κώδικα: Δομικά σφάλματα Στατική Ανάλυση Ανατροφοδότηση Αρκεί η στατική ανάλυση ολόκληρου του έργου από την αρχή μία φορά την ημέρα/εβδομάδα? Πολυπλοκότητα Συνοχή Συσχέτιση Σχολιασμός Κληρονομικότητα Μέγεθος Τι γίνεται με τα ποιοτικά χαρακτηριστικά κώδικα?
  • 4. Σκοπός της διπλωματικής εργασίας Static Analysis Metrics SourceMeter All repository files # Commit A.java B.java C.java D.java E.java Static Analysis Metrics SourceMeter A.java B.java C.java Πλήρης στατική ανάλυση Σταδιακή στατική ανάλυση
  • 5. Εργαλεία στατικής ανάλυσης κώδικα • PMD Ανίχνευση κακών πρακτικών εγγραφής κώδικα • Complexity-report Υπολογισμός πολυπλοκότητας κώδικα • SonarQube Ανίχνευση σφαλμάτων, αδυναμιών ασφάλειας και διπλοτυπίες κώδικα • Συνδυασμός όλων:
  • 6. Dataset Κριτήρια επιλογής των GitHub αποθετηρίων: • Αρχεία πηγαίου κώδικα (κυρίως) σε Java • Πλήθος commits μεταξύ 100 και 15.000 Project Commits LOC json-iterator/java 460 13269 stleary/JSON-java 789 17694 json-path/JsonPath 881 17931 TheAlgorithms/java 1047 19585 structurizr/java 1072 22187 exercism/java 2216 24643 apache/dubbo 4360 184639 mongodb/mongo-java-driver 7221 160559 google/ExoPlayer 7969 200610 tronprotocol/java-tron 14254 276286 Συνολικό πλήθος εξεταζόμενων γραμμών κώδικα: 937.403 (LOC)
  • 7. Το σύστημα που υλοποιήθηκε Υποσυστήματα: • Downloader • Code Change Manager • Code Analyzer
  • 8. Το υποσύστημα του Downloader • Είναι υπεύθυνο για: • Τη λήψη και αποθήκευση των πληροφοριών περιγραφής κάθε commit • Τη λήψη ολόκληρου του project για κάθε commit στη μορφή με την οποία βρίσκεται εκείνη τη στιγμή και την αποθήκευση του σε τοπικό αποθετήριο στον υπολογιστή
  • 9. Τρόπος λειτουργίας του Downloader Για κάθε commit: • Αποστολή αιτήματος στη βάση δεδομένων του GitHub • Λήψη και αποθήκευση των εξατομικευμένων πληροφοριών του σε .json αρχείο Όνομα & διαδρομή των μεταβαλλόμενων αρχείων κώδικα στο αποθετήριο Κώδικας αλλαγών (diff) κάθε μεταβαλλόμενου αρχείου • Λήψη και αποθήκευση ολόκληρου του έργου λογισμικού σε τοπικό αποθετήριο Local Repository # Commit
  • 10. Το υποσύστημα του Code Change Manager • Είναι υπεύθυνο για: • Την εύρεση και απομόνωση των μεταβαλλόμενων αρχείων κώδικα κάθε commit στο αποθετήριο • Την εύρεση και απομόνωση των άμεσα συσχετιζόμενων αρχείων με κάθε μεταβαλλόμενο αρχείο κώδικα
  • 11. Files Selector Για κάθε commit: Ανάκτηση των πληροφοριών μεταβολής από το αρχείο εξατομικευμένων πληροφοριών του (.json) 1) Προσθήκη νέου αρχείου κώδικα Είδος αλλαγής 2) Τροποποίηση ήδη υπάρχοντος αρχείου κώδικα 3) Διαγραφή ήδη υπάρχοντος αρχείου κώδικα Όνομα μεταβαλλόμενου αρχείου Διαδρομή μεταβαλλόμενου αρχείου στο τοπικό αποθετήριο Ονόματα και διαδρομές των άμεσα συσχετιζόμενων αρχείων  Δηλώσεις import στον κώδικα αλλαγών (patch/diff)
  • 12. Files Transporter Διαδρομή των αρχείων στον νέο φάκελο ανάλογη με Διαδρομή των αρχείων στο τοπικό αποθετήριο Αποφυγή: • Προβλήματος συνύπαρξης αρχείων ίδιου ονόματος αλλά διαφορετικού περιεχομένου στον ίδιο φάκελο • Λανθασμένων αποτελεσμάτων κατά τη διαδικασία ανάλυσης
  • 13. Περίπτωση ύπαρξης πληθώρας άμεσα συσχετιζόμενων αρχείων κώδικα Αποφυγή μεταφοράς τους σε νέο φάκελο Γιατί? • Χρονοβόρα διαδικασία εύρεσης • Ελάχιστο κέρδος χρόνου ανάλυσης • Πιθανή παράλειψη κάποιου τρίτου αρχείου με το οποίο μπορεί να υπάρχει κάποια μικρή μακρινή σχέση συσχέτισης Άρα: Πλήρης στατική ανάλυση του έργου λογισμικού
  • 14. Το υποσύστημα του Code Analyzer • Είναι υπεύθυνο για: • Την παραγωγή των μετρικών στατικής ανάλυσης για τα μεταβαλλόμενα αρχεία κάθε commit
  • 15. Τρόπος λειτουργίας του Code Analyzer • Στατική ανάλυση του νέου φακέλου με όλα τα μεταβαλλόμενα αρχεία κώδικα • Παραγωγή και αποθήκευση των μετρικών στατικής ανάλυσης σε .csv αρχεία αποτελεσμάτων • Συγκέντρωση των ανανεωμένων μετρικών στατικής ανάλυσης των μεταβαλλόμενων αρχείων σε κοινό .csv αρχείο αποτελεσμάτων με αυτές των υπόλοιπων αρχείων του αποθετηρίου Commit #1 Commit #2 Commit #2
  • 16. Πειράματα 1. Ορθότητα υπολογισμού μετρικών στατικής ανάλυσης 2. Πλήθος γραμμών κώδικα (LOC) αρχείων συμμετοχής 3. Μέγεθος αρχείων συμμετοχής στο δίσκο 4. Χρόνος στατικής ανάλυσης μικρών και μεγάλων αποθετηρίων 5. Χρόνος σταδιακής στατικής ανάλυσης κάθε commit
  • 17. Πείραμα 1: Ορθότητα υπολογισμού μετρικών στατικής ανάλυσης Δείγμα: Αποθετήρια με μικρό και μεγάλο πλήθος αρχείων και commits • Επιτυχία σωστού υπολογισμού μετρικής CBO: Για μικρό project: 99.55% Για μεγάλο project: 98.017% • Επιτυχία σωστού υπολογισμού λοιπών μετρικών: 100%
  • 18. Πείραμα 2: Πλήθος γραμμών κώδικα (LOC) των αρχείων συμμετοχής Δείγμα:
  • 19. Πείραμα 3: Μέγεθος αρχείων συμμετοχής στο δίσκο Δείγμα: Αποθετήρια μεγάλου μεγέθους (σε ΜΒ) Εξοικονόμηση χώρου στον υπολογιστή: 98.65% 99.31% 99.36% 99.48%
  • 20. Πείραμα 4α: Χρόνος στατικής ανάλυσης αποθετηρίων με μικρό πλήθος commits Αποθετήρια: 460 ≤ commits ≤ 2216 13269 ≤ LOC ≤ 24643 • Μείωση χρόνου σε ποσοστό 67% - 75%
  • 21. Πείραμα 4β: Χρόνος στατικής ανάλυσης αποθετηρίων με μεγάλο πλήθος commits Αποθετήρια: 4360 ≤ commits ≤ 14254 184639 ≤ LOC ≤ 276286 • Μείωση χρόνου σε ποσοστό 87% - 91%
  • 22. Πείραμα 5: Χρόνος σταδιακής στατικής ανάλυσης κάθε commit Δείγμα: Αύξηση εξεταζόμενων LOC Αύξηση χρόνου σταδιακής στατικής ανάλυσης
  • 23. Συμπεράσματα Το σύστημα προσφέρει: • Ακρίβεια υπολογισμού των μετρικών στατικής ανάλυσης με μία πολύ μικρή απόκλιση στην περίπτωση των μετρικών συνοχής • Μεγάλο κέρδος χρόνου διεκπεραίωσης στατικής ανάλυσης τόσο για μικρά όσο και για μεγάλα έργα λογισμικού • Δυνατότητα εξοικονόμησης χώρου στον υπολογιστή • Δυνατότητα εξοικονόμησης πόρων
  • 24. Ανοιχτά θέματα • Εφαρμογή και σε άλλες γλώσσες προγραμματισμού • Δυνατότητα εφαρμογής του με μεγαλύτερη επιτυχία στα μεγάλα και περίπλοκα αποθετήρια έργων λογισμικού • Δυνατότητα λήψης και διαχείρισης έργων λογισμικού και από άλλες αποθήκες ανοιχτού λογισμικού • Επέκταση σταδιακής στατικής ανάλυσης σε επίπεδο πακέτου
  • 25. Ευχαριστώ θερμά: • Τον Αναπληρωτή Καθηγητή Ανδρέα Συμεωνίδη • Τον Υποψήφιο Διδάκτωρ Μιχάλη Παπαμιχαήλ
  • 26. Σας ευχαριστώ για την προσοχή σας!