Please use this identifier to cite or link to this item: http://dspace.lib.uom.gr/handle/2159/26442
Author: Ιχτσής, Απόστολος
Title: Ενοποίηση εργαλείων εντοπισμού οσμών κώδικα
Date Issued: 2022
Department: Πρόγραμμα Μεταπτυχιακών Σπουδών Ειδίκευσης στην Εφαρμοσμένη Πληροφορική
Supervisor: Χατζηγεωργίου, Αλέξανδρος
Abstract: O Fowler το 1999 εισήγαγε την έννοια των οσμών κώδικα. Οι οσμές αυτές, αποτελούν ουσιαστικά ενδείξεις κακής ποιότητας λογισμικού. Συνεπώς, η συσσώρευση αυτών σε ένα προϊόν λογισμικού, μπορεί να αποτελέσει σημαντικό παράγοντα επιβάρυνσης κατά την συντήρηση του προϊόντος, καθώς καθιστά δυσκολότερη την επιδιόρθωση λαθών και την προσθήκη νέων λειτουργιών. Για το λόγο αυτό, κρίνεται ιδιαίτερα σημαντική η αναγνώριση των υπαρχόντων οσμών και στη συνέχεια η αφαίρεση αυτών με τη χρήση αναδομήσεων. Παρότι ένας έμπειρος προγραμματιστής έχει συνήθως τη δυνατότητα αναγνώρισης οσμών στον πηγαίο κώδικα λογισμικού, η διαδικασία αυτή μπορεί να γίνει ιδιαίτερα χρονοβόρα καθώς ένα σύστημα μπορεί να αποτελείται από εκατοντάδες κλάσεις και χιλιάδες γραμμές κώδικα ή και ακόμη περισσότερο. Λύση στο πρόβλημα αυτό λοιπόν, αποτελούν εργαλεία εντοπισμού οσμών στον κώδικα, τα οποία αναπτύσσονται από διάφορους ερευνητές και όχι μόνο. Τα εργαλεία αυτά, αναλαμβάνουν την εύρεση των υπαρχόντων οσμών σε ένα σύστημα και την παρουσίαση τους με έναν ευανάγνωστο τρόπο στον χρήστη. Αποτέλεσμα αυτού, είναι να εξοικονομείται πολύτιμος χρόνος από τους προγραμματιστές και να αποκτούν εύκολα μια γενική εικόνα της κατάστασης τους συστήματος. Η χρήση όμως των εργαλείων αυτών, απαιτεί προσοχή από τους χρήστες. Για την εύρεση οσμών, τα τελευταία υλοποιούν διαφορετικές μεθόδους ή ακόμη και την ίδια αλλά με διαφορετικό τρόπο μεταξύ τους. Για το λόγο αυτό κρίνεται απαραίτητη η αξιολόγηση των επιμέρους εργαλείων, καθώς και η ύπαρξη συγκρίσεων μεταξύ τους. Μέσα στο πλαίσιο αυτό, έχουν πραγματοποιηθεί διάφορες μελέτες στη βιβλιογραφία για σύγκριση και αξιολόγηση εργαλείων, οι οποίες όμως περιλαμβάνουν συνήθως περιορισμένο αριθμό εργαλείων στα πειράματα τους ή δεν πραγματοποιούν καθόλου πειράματα και βασίζονται σε αναφορές των δημιουργών των εργαλείων. Στην παρούσα εργασία λοιπόν, έγινε μελέτη των υπαρχόντων εργαλείων και ενσωμάτωση έξι (6) εξ’ αυτών κάτω από ένα Eclipse plug-in με όνομα SmellDetectorMerger. Σκοπός αυτού, είναι η εύκολη και αυτοματοποιημένη χρήση και πρόσβαση στα επιμέρους εργαλεία, η εφαρμογή τους σε προϊόντα λογισμικού και η συγκεντρωτική εξαγωγή αποτελεσμάτων για τις υπάρχουσες οσμές. Με τον τρόπο αυτό, v μπορεί να πραγματοποιηθεί εύκολα και γρήγορα μια αξιολόγηση των αποτελεσμάτων και της αξιοπιστίας των εργαλείων αυτών. Στα πλαίσια αυτής της διπλωματικής, χρησιμοποιήθηκε το plug-in που αναπτύχθηκε, στο Apache HTTP Components, το οποίο αποτελεί ένα έργο ανοιχτού κώδικα της Apache που παρέχει εργαλεία χαμηλού επιπέδου σχετικά με το HTTP και άλλα παρόμοια πρωτόκολλα. Αφού εντοπίστηκαν οι οσμές στο τελευταίο, εξήχθησαν σε ένα csv αρχείο το οποίο χρησιμοποιήθηκε για την εξαγωγή πληροφοριών. Με βάση αυτά, αποδεικνύεται ότι στην πλειοψηφία των περιπτώσεων όπου δύο (2) ή περισσότερα εργαλεία εντόπιζαν τον ίδιο τύπο οσμής, η συμφωνία των εργαλείων ως προς τις οσμές αυτού του τύπου που βρέθηκαν στο project ήταν πολύ μικρή. Μάλιστα, μόνο σε μία εξ’ αυτών ήταν τόσο μεγάλος ο βαθμός συμφωνίας ώστε να θεωρηθεί σημαντικός. Με βάση τα προηγούμενα, καταλήγουμε στο συμπέρασμα ότι οι οσμές κώδικα δεν είναι αυστηρά ορισμένες, με αποτέλεσμα οι διάφορες τεχνικές αλλά και οι υλοποιήσεις αυτών να αναφέρουν διαφορετικές περιπτώσεις οσμών. Για τον λόγο αυτό, ένας προγραμματιστής θα πρέπει να είναι ιδιαίτερα προσεκτικός πριν την επιλογή και χρήση ενός εργαλείου εντοπισμού οσμών.
Keywords: Οσμές κώδικα
Εργαλεία εντοπισμού οσμών
Αναδομήσεις
Information: Διπλωματική εργασία--Πανεπιστήμιο Μακεδονίας, Θεσσαλονίκη, 2022.
Rights: CC0 1.0 Παγκόσμια
Appears in Collections:Π.Μ.Σ. στην Εφαρμοσμένη Πληροφορική (M)

Files in This Item:
File Description SizeFormat 
IchtsisApostolosMsc2022.pdf2.05 MBAdobe PDFView/Open


This item is licensed under a Creative Commons License Creative Commons