Θεμιστοκλής Παπαβασιλείου

39
Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού Παπαβασιλείου Θεμιστοκλής (7375) Υπό την επίβλεψη του Επίκουρου Καθηγητή Ανδρέα Λ. Συμεωνίδη Και του υποψήφιου Διδάκτορα Θεμιστοκλή Διαμαντόπουλου Θεσσαλονίκη, 2017

Transcript of Θεμιστοκλής Παπαβασιλείου

Page 1: Θεμιστοκλής Παπαβασιλείου

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα

από αποθήκες λογισμικούΠαπαβασιλείου Θεμιστοκλής (7375)

Υπό την επίβλεψη του Επίκουρου Καθηγητή

Ανδρέα Λ. Συμεωνίδη

Και του υποψήφιου Διδάκτορα

Θεμιστοκλή Διαμαντόπουλου

Θεσσαλονίκη, 2017

Page 2: Θεμιστοκλής Παπαβασιλείου

02/05/2023 2

Δομή Παρουσίασης• Ορισμός Προβλήματος• Σκοπός της διπλωματικής• State of the art• Επισκόπηση συστήματος• Aξιολόγηση συστήματος• Συμπεράσματα• Μελλοντικές επεκτάσεις• Ερωτήσεις

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 3: Θεμιστοκλής Παπαβασιλείου

02/05/2023 3

Ορισμός Προβλήματος• Έννοιες• Επαναχρησιμοποίηση κώδικα

• APIs• Αναζήτηση προτύπων χρήσης API

στη μορφή ακολουθιών εντολών

• Πρόβλημα• Αδυναμία εύρεσης χρήσιμων

παραδειγμάτων λόγω έλλειψης επαρκούς τεκμηρίωσης

• Εργαλεία επίλυσης προβλήματος• Μηχανές αναζήτησης κώδικα

(Code Search Engines, CSEs)• Δεν προσφέρουν επαρκή λύση

• Συστήματα προτάσεων στην Τεχνολογία Λογισμικού (Recommendation Systems in Software Engineering, RSSEs)

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 4: Θεμιστοκλής Παπαβασιλείου

02/05/2023 4

Σκοπός της διπλωματικής • Μελέτη της ευρύτερης περιοχής των RSSE• Παραγωγή επισκόπησης της πρόσφατης βιβλιογραφίας

• Ανάπτυξη συστήματος RSSE για αναζήτηση προτύπων χρήσης κώδικα• Εξόρυξη συχνών προτύπων χρήσης κώδικα API για συγκεκριμένες

βιβλιοθήκες

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 5: Θεμιστοκλής Παπαβασιλείου

02/05/2023 5

State of the art

Συστήματα στη βιβλιογραφία• MAPO (v1 2006)• PARSEWeb (2007)• APIMiner (2013)• MLUP (2015)• UP-Miner (2016)

Mερικά μειονεκτήματα• Δεν υπάρχει εγγύηση για την

ποιότητα του κώδικα που εισάγεται στα συστήματα ως προς τη μεταγλωττισιμότητα• Χρονοβόρα• Μπορεί να μη λειτουργούν

επαρκώς για λίγα/πολλά δεδομένα

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 6: Θεμιστοκλής Παπαβασιλείου

02/05/2023 6

Επισκόπηση συστήματος

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

query

Code Downloader

• Είσοδος: Github Projects• Έξοδος: Project directories

Code Preprocessor

• Είσοδος: Project directories• Έξοδος: CallGraphs

Miner• Είσοδος: CallGraphs• Έξοδος: Sequences

Postprocessor• Είσοδος: Sequences• Έξοδος: Sequences

Presenter• Είσοδος: User queries• Έξοδος: Sequences

Query

`

Page 7: Θεμιστοκλής Παπαβασιλείου

02/05/2023 7

Επισκόπηση συστήματος

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

query

Code Downloader

• Είσοδος: Github Projects• Έξοδος: Project directories

Code Preprocessor

• Είσοδος: Project directories• Έξοδος: CallGraphs

Miner• Είσοδος: CallGraphs• Έξοδος: Sequences

Postprocessor• Είσοδος: Sequences• Έξοδος: Sequences

Presenter• Είσοδος: User queries• Έξοδος: Sequences

Query

`

Page 8: Θεμιστοκλής Παπαβασιλείου

02/05/2023 8

Code Downloader

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Request

• Ερώτημα : “nz.ac.waikato.cms.weka” pom.xml• Φίλτρα: Maven POM, μέσω του φίλτρου γλώσσας• Παράγει μια λίστα καταθετηρίων

Temp file• Εγγραφή των ονομάτων των αποτελεσμάτων αναζήτησης σε προσωρινό αρχείο

Download

• Για κάθε αποτέλεσμα αναζήτησης κατεβάζεται το αντίστοιχο project τοπικά• Παράγονται φάκελοι με τα εν λόγω projects

Page 9: Θεμιστοκλής Παπαβασιλείου

02/05/2023 9

Επισκόπηση συστήματος

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

query

Code Downloader

• Είσοδος: Github Projects• Έξοδος: Project directories

Code Preprocessor

• Είσοδος: Project directories• Έξοδος: CallGraphs

Miner• Είσοδος: CallGraphs• Έξοδος: Sequences

Postprocessor• Είσοδος: Sequences• Έξοδος: Sequences

Presenter• Είσοδος: User queries• Έξοδος: Sequences

Query

`

Page 10: Θεμιστοκλής Παπαβασιλείου

02/05/2023 10

Code Preprocessor (1/2)

• Χτίζεται κάθε project με τη χρήση του Maven παράγοντας ένα .jar για αυτό• Έμμεσα εξασφαλίζεται το ότι ο κώδικας είναι μεταγλωττίσιμος

• Κάθε .jar εισάγεται στον CallGraph Maker για να μετασχηματιστεί σε Call graph• Έτσι κάθε project από .jar μετατρέπεται σε αρχείο κειμένου μέσω στατικής

ανάλυσης κώδικα. Το αρχείο αυτό απαρτίζεται από γραμμές που αφορούν τις κλήσεις συναρτήσεων μέσα σε αυτό.

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 11: Θεμιστοκλής Παπαβασιλείου

02/05/2023 11

Code Preprocessor (2/2)

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 12: Θεμιστοκλής Παπαβασιλείου

02/05/2023 12

Επισκόπηση συστήματος

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

query

Code Downloader

• Είσοδος: Github Projects• Έξοδος: Project directories

Code Preprocessor

• Είσοδος: Project directories• Έξοδος: CallGraphs

Miner• Είσοδος: CallGraphs• Έξοδος: Sequences

Postprocessor• Είσοδος: Sequences• Έξοδος: Sequences

Presenter• Είσοδος: User queries• Έξοδος: Sequences

Query

`

Page 13: Θεμιστοκλής Παπαβασιλείου

02/05/2023 13

Miner (1/4)

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Λήψη ακολουθιών απο αρχεία .txt

Επεξεργασία ακολουθιών

Εξόρυξη συχνότερων ακολουθιών

Page 14: Θεμιστοκλής Παπαβασιλείου

02/05/2023 14

Miner (2/4) – Επεξεργασία ακολουθιών

C:Sample weka.classifiers.meta.MultiBoostAB:setClassifierC:Sample weka.classifiers.meta.MultiBoostAB:setNumSubCmtysC:Sample weka.classifiers.meta.MultiBoostAB:buildClassifierC:Sample java.lang.String:charAtC:Sample1 weka.core.converters.CSVLoader:setSourceC:Sample2 weka.clusterers.SimpleKMeans:setSeed

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

C:Sample : [weka.classifiers.meta.MultiBoostAB:setClassifier, weka.classifiers.meta.MultiBoostAB:setNumSubCmtys, weka.classifiers.meta.MultiBoostAB:buildClassifier]

C:Sample1 : [weka.core.converters.CSVLoader:setSource]

C:Sample2 : [weka.clusterers.SimpleKMeans:setSeed]

Page 15: Θεμιστοκλής Παπαβασιλείου

02/05/2023 15

Miner (3/4) – Eξόρυξη συχνότερων προτύπων• Έννοιες• Support - Συχνότητα εμφάνισης ακολουθίας• Συχνή υπακολουθία (Frequent Subsequence, FS) - Μια υπακολουθία η οποία

εμφανίζεται τουλάχιστον s φορές σε ένα σύνολο από ακολουθίες• Συχνή κλειστή υπακολουθία – Μια συχνή υπακολουθία με τον περιορισμό ότι

δεν εμφανίζεται ως μέλος άλλης συχνής υπακολουθίας με το ίδιο support

• Αλγόριθμος εξόρυξης συχνών κλειστών υπακολουθιών (BIDE)• Κατασκευάζει πρώτα τις FS• Τις ελέγχει ως προς την κλειστότητα• Επιστρέφει μόνο τις FCS

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 16: Θεμιστοκλής Παπαβασιλείου

02/05/2023 16

Miner (4/4) – Αλγόριθμος BIDE

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 17: Θεμιστοκλής Παπαβασιλείου

02/05/2023 17

Επισκόπηση συστήματος

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

query

Code Downloader

• Είσοδος: Github Projects• Έξοδος: Project directories

Code Preprocessor

• Είσοδος: Project directories• Έξοδος: CallGraphs

Miner• Είσοδος: CallGraphs• Έξοδος: Sequences

Postprocessor• Είσοδος: Sequences• Έξοδος: Sequences

Presenter• Είσοδος: User queries• Έξοδος: Sequences

Query

`

Page 18: Θεμιστοκλής Παπαβασιλείου

02/05/2023 18

Postprocessor (1/4)

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Φιλτράρισμα περιττών

παραδειγμάτων και ομαδοποίηση ανα

πακέτο

Δημιουργία Sequence Database

Δημιουργία Token Map

Page 19: Θεμιστοκλής Παπαβασιλείου

02/05/2023 19

Postprocessor (2/4)• Φιλτράρισμα και ομαδοποίηση• Συγχώνευση ακολουθιών που

περιέχονται εξολοκλήρου σε άλλες, με διατήρηση της μεγαλύτερης• Ομαδοποίηση με βάση την

πλειοψηφία του πακέτου που εμφανίζεται συχνότερα σε μια ακολουθία

• Παράδειγμαweka.classifiers.meta.MultiBoostAB:setClassifier

weka.classifiers.meta.MultiBoostAB:setNumSubCmtys

weka.classifiers.meta.MultiBoostAB:buildClassifier

weka.core.Instances:getAttributes

Ομαδοποιείται στο weka.classifiers

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 20: Θεμιστοκλής Παπαβασιλείου

02/05/2023 20

Postprocessor (3/4)• Δημιουργία Sequence Database• Τρόπος αναφοράς στις ακολουθίες

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Δείκτης (ID) Αποτέλεσμα Miner

1 [ (O)weka.core.Instances:<init>, (M)weka.core.Instances:attribute,

(M)weka.core.Instances:setClass ] : 30

2 [ (M)weka.classifiers.trees.RandomTree:setSeed, (M)weka.classifiers.trees.RandomTree:buildClassifier ] : 3

3 [ (O)weka.clusterers.ClusterEvaluation:<init>, (O)weka.core.Instances:<init>,

(M)weka.clusterers.ClusterEvaluation:setClusterer, (M)weka.clusterers.ClusterEvaluation:evaluateClusterer ] : 12

Page 21: Θεμιστοκλής Παπαβασιλείου

02/05/2023 21

Postprocessor (4/4)• Token Map• Χάρτης που περιέχει τις εμφανίσεις κάθε συνάρτησης σε ακολουθία.

Χρησιμοποιείται στην αναζήτηση αντικειμένων

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Αντικείμενο Σύνολο ακολουθιών που το περιέχουν

(O)weka.core.Instances:<init> {1, 3}

(M)weka.clusterers.ClusterEvaluation:evaluateClusterer {3}

(M)weka.core.ClusterEvaluation:attribute {1}

(M)weka.classifiers.trees.RandomTree:buildClassifier {2}

Page 22: Θεμιστοκλής Παπαβασιλείου

02/05/2023 22

Επισκόπηση συστήματος

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

query

Code Downloader

• Είσοδος: Github Projects• Έξοδος: Project directories

Code Preprocessor

• Είσοδος: Project directories• Έξοδος: CallGraphs

Miner• Είσοδος: CallGraphs• Έξοδος: Sequences

Postprocessor• Είσοδος: Sequences• Έξοδος: Sequences

Presenter• Είσοδος: User queries• Έξοδος: Sequences

Query

`

Page 23: Θεμιστοκλής Παπαβασιλείου

02/05/2023 23

Presenter (1/3)

Γενική χρήση API• Για κάθε πακέτο παράγεται

συγκεκριμένος αριθμός παραδειγμάτων• Τα παραδείγματα πρέπει να

διαφέρουν κατά 3 εντολές μεταξύ τους για μεγαλύτερη κάλυψη σεναρίων χρήσης

Συγκεκριμένες Μέθοδοι• Χωρίζεται το ερώτημα του χρήστη στα

κενά. Λαμβάνονται οι μέθοδοι.• Για κάθε μέθοδο γίνεται αναζήτησή της

στο Token Map και με χρήση των id των ακολουθιών επιστρέφονται τα παραδείγματα που την περιέχουν από την SDB

• Ανάλογα την προτίμηση του χρήστη εμφανίζονται παραδείγματα που περιέχουν το λογικό OR ή AND των μεθόδων του ερωτήματός του

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 24: Θεμιστοκλής Παπαβασιλείου

02/05/2023 24

Presenter (2/3)• Αναζήτηση με συγκεκριμένες μεθόδους• Ερώτημα: method1 method2 χωρίζεται στα διακριτά τμήματα method1, method2

Δημιουργείται ένας χάρτης της μορφής { method1 : {}, method2 : {} }• Ο εν λόγω χάρτης εμπλουτίζεται με τιμές {method1 : {1,3} , method2 : {2}}• Έστω ότι ο χρήστης δηλώνει στο σύστημα πως επιθυμεί να δει παραδείγματα

που περιέχουν ή το method1 ή το method2 . Τα σύνολα {1,3} , {2} ενώνονται με την πράξη της ένωσης με αποτέλεσμα το {1,3,2}.• Με τη βοήθεια της SDB το σύνολο {1,3,2} μετασχηματίζεται στις αντίστοιχες

ακολουθίες• Επιστρέφονται παραδείγματα ταξινομημένα βάσει support

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 25: Θεμιστοκλής Παπαβασιλείου

02/05/2023 25

Presenter (3/3)Αποτέλεσμα Miner

[ (O)weka.core.Instances:<init>,(M)weka.core.Instances:attribute,

(M)weka.core.Instances:setClass ] : 30

[ (O)weka.clusterers.ClusterEvaluation:<init>,(O)weka.core.Instances:<init>,

(M)weka.clusterers.ClusterEvaluation:setClusterer, (M)weka.clusterers.ClusterEvaluation:evaluateClusterer ] : 12

[ (M)weka.classifiers.trees.RandomTree:setSeed, (M)weka.classifiers.trees.RandomTree:buildClassifier ] : 3

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 26: Θεμιστοκλής Παπαβασιλείου

02/05/2023 26

Αξιολόγηση• Δεδομένα εισόδου

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Όνομα βιβλιοθήκης Αριθμός project Αριθμός πακέτων Αριθμός μεθόδων API Αντικείμενο

Weka 50 82 12511 Συλλογή αλγορίθμων Μηχανικής Μάθησης, οπτικοποίησης δεδομένων, εξόρυξης δεδομένων, επεξεργασίας δεδομένων.

Encog 30 268 5625 Αλγόριθμοι μηχανικής μάθησης

Mallet 30 60 5474 Επεξεργασία φυσικής γλώσσας (Natural Language Processing)

Deeplearning4j 105 237 6323 Νευρωνικά δίκτυαStanford NLP 77 98 10521 Συλλογή αλγορίθμων

επεξεργασίας φυσικής γλώσσας.

Page 27: Θεμιστοκλής Παπαβασιλείου

02/05/2023 27

Αξιολόγηση• Δεδομένα εξόδου από το σύστημά μας

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

API Αριθμός παραδειγμάτων Πλήθος αποθετηρίωνWeka 4892 50

Mallet 2003 30

Encog 1925 30

Deeplearning4j 1761 105

Stanford NLP 3864 77

Page 28: Θεμιστοκλής Παπαβασιλείου

02/05/2023 28

ΜετρικέςΚάλυψη (Coverage) Συνοχή (Cohesion) Ανομοιότητα (Dissimilarity)

Ποσοστό που δείχνει πόσες από τις μεθόδους του API συμμετέχουν στα παραδείγματα που παράγονται από το σύστημά μας.

Ένας αριθμός που δείχνει πόσο συχνά χρησιμοποιούνται μαζί οι μέθοδοι ενός παραδείγματος. Η τιμή 100% δείχνει πως για το συγκεκριμένο παράδειγμα όλες οι μέθοδοι του που υπάρχουν σε άλλα παραδείγματα, εμφανίζονται πάντα μαζί. Λαμβάνεται για κάθε ομάδα ο μέσος όρος.

Αποτελεί ένα μέτρο ανομοιότητας μεταξύ μιας ακολουθίας και των υπολοίπων στην ομάδα της. Υψηλές τιμές δείχνουν μεγάλη ανομοιότητα, συνεπώς μοναδικότητα παραδείγματος. Λαμβάνεται για κάθε ομάδα ο μέσος όρος.

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 29: Θεμιστοκλής Παπαβασιλείου

02/05/2023 29

Κάλυψη

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 30: Θεμιστοκλής Παπαβασιλείου

02/05/2023 30

Συνοχή ομάδων weka

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 31: Θεμιστοκλής Παπαβασιλείου

02/05/2023 31

Συνοχή υπολοίπων βιβλιοθηκών

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 32: Θεμιστοκλής Παπαβασιλείου

02/05/2023 32

Ανομοιότητα ομάδων weka

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 33: Θεμιστοκλής Παπαβασιλείου

02/05/2023 33

Ανομοιότητα υπόλοιπων βιβλιοθηκών

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 34: Θεμιστοκλής Παπαβασιλείου

02/05/2023 34

Μελέτη περίπτωσης• Σύγκριση παραδειγμάτων που παρήγαγε το σύστημά μας με αυτά

από μηχανές αναζήτησης• Google• Github*• SearchCode• ProgramCreek API Examples

• Σε περιπτώσεις εξειδικευμένης αναζήτησης προτύπου χρήσης η διαδικασία είναι χρονοβόρα

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 35: Θεμιστοκλής Παπαβασιλείου

02/05/2023 35

Μελέτη περίπτωσης – Παράδειγμα clustering

Παράδειγμα συστήματος[ '(O)weka.core.Instances:<init>',

(O)weka.clusterers.SimpleKMeans:<init>',

(M)weka.clusterers.SimpleKMeans:setSeed',

(M)weka.clusterers.SimpleKMeans:setPreserveInstancesOrder',

(M)weka.clusterers.SimpleKMeans:setNumClusters',

(M)weka.clusterers.SimpleKMeans:buildClusterer',

(M)weka.clusterers.SimpleKMeans:toString' ]

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 36: Θεμιστοκλής Παπαβασιλείου

02/05/2023 36

Μελέτη περίπτωσης – Παράδειγμα clustering

Παράδειγμα συστήματος[ '(O)weka.core.Instances:<init>',

(O)weka.clusterers.SimpleKMeans:<init>',

(M)weka.clusterers.SimpleKMeans:setSeed',

(M)weka.clusterers.SimpleKMeans:setPreserveInstancesOrder',

(M)weka.clusterers.SimpleKMeans:setNumClusters',

(M)weka.clusterers.SimpleKMeans:buildClusterer',

(M)weka.clusterers.SimpleKMeans:toString' ]

Παράδειγμα αναζήτησης στο Google

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 37: Θεμιστοκλής Παπαβασιλείου

02/05/2023 37

Συμπεράσματα• API Usage Mining – Ανοικτό, πολύπλευρο και δύσκολο πρόβλημα• Ακόμη και για τον μικρό αριθμό παραδειγμάτων στην παρούσα

εργασία ο αριθμός παραδειγμάτων ήταν μεγάλος. Η μεταεπεξεργασία των δεδομένων είναι αναγκαία• Η κλιμάκωση του συστήματος θα χρειαστεί ειδικές δομές

αποθήκευσης και αναζήτησης.• Tο σύστημά μας φαίνεται να παράγει διαφορετικά παραδείγματα

χωρίς να θυσιάζει συνεκτικότητα

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 38: Θεμιστοκλής Παπαβασιλείου

02/05/2023 38

Μελλοντική εργασία• Απλή γραφική διεπαφή• Δομή επανατροφοδότησης σχετικά με την ποιότητα των

αποτελεσμάτων• Επέκταση σε άλλες γλώσσες με προσθήκη αντίστοιχου εργαλείου

στατικής ανάλυσης κώδικα• Ομαδοποίηση με αλγορίθμους αντί για ευριστικές τεχνικές στην

μεταεπεξεργασία

Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

Page 39: Θεμιστοκλής Παπαβασιλείου

02/05/2023 39Εξαγωγή παραδειγμάτων χρήσης βιβλιοθηκών κώδικα από αποθήκες λογισμικού

?

?

?

?

?

??

?

?

??

??

?

?

??

?

?

?

?