Συλλογές
Τίτλος Μετρικές κληρονομικότητας για αντικειμενοστραφές λογισμικό
Δημιουργός Τζαγκαράκης, Εμμανουήλ
Συντελεστής Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής
Τύπος Text
Φυσική περιγραφή 138σ.
Γλώσσα el
Περίληψη This thesis was written for the purpose of researching the field of code metrics, especially object-oriented code metrics, to find out if there is a correlation of metrics with software bugs. Furthermore, this thesis also includes an extended review of current research of software metrics field but also research about the association between software metrics and bug occurrence and the statistical methods used in order to make this association.An inspiration for this thesis was the lack of research papers found, which study inheritance characteristics and inheritance metrics, as well as its association with software bugs. We only found a few studies where the above was in research questions, and their results most of the time were either non-conclusive or conflicting.Given the lack of research and the fact that concrete overriding is an anti-pattern, as it violates the Liskov substitution principle, this thesis tries to answer the question if there is a correlation between concrete overriding and software bugs occurrence. In order to represent how intense was the concrete override phenomenon in a class inheritance path, we created a metric called Concrete Override Metric (COM). COM is defined as the division of actual concrete overrides found in a class hierarchy path to the maximum number of overrides which is possible in the inheritance path.For the purpose of studying the relation between COM and error occurrence we created special software which has capabilities of iterating through SVN repositories, finding the commits that are bug fixes and also find repository tags. Then it takes as input a given set of jar files (one for each version - tag) and extracts class hierarchy paths as well as its metrics (COM, actual concrete overrides and maximum possible overrides). Then the software examines the commit data as well as hierarchy path data and finds out how many bugs each hierarchy path class was involved in, so it can calculate the total bug count for the hierarchy path. Then the data of hierarchy path, its calculated metrics and bug count is extracted and used as input to the SPSS so it can calculate Pearson correlation to find out if there is a correlation with any of the hierarchy path metrics and the bug count. We also used Logistic Regression to find out if the combination of actual overrides and maximum possible overrides in a hierarchy path can predict the existence of a bug.We look at the Apache Foundation to find solid software projects to examine. We choose: Bcel, Camel, Mina, OpenJPA, PdfBox, Tomcat7 and Tomcat8. The results can be misleading. At first glance, someone can suggest that there is no correlation between concrete overriding and bug occurrence but a more careful look will notice that there is correlation between bug occurrence and actual overrides found in the class hierarchy path. This correlation most of the time is somewhat moderate, but there are examples of high correlation found in the results, so there is motive for future work to carefully study this correlation.
Η παρούσα έρευνα έγινε με σκοπό να ερευνηθεί το πεδίο των μετρικών κώδικα και ειδικά των μετρικών του αντικειμενοστραφούς προγραμματισμού καθώς και η συσχέτιση αυτών με την πιθανότητα εμφάνισης σφαλμάτων. Στην προσπάθεια αυτή έγινε εκτενής αναφορά στη μέχρι τώρα έρευνα τόσο στις μετρικές όσο και στις προσπάθειες συσχέτισής τους με σφάλματα. Ακόμη γίνεται αναφορά στις στατιστικές μεθόδους που χρησιμοποιήθηκαν για την εξαγωγή αυτών των συμπερασμάτων. Η αφορμή για τη μελέτη των χαρακτηριστικών της κληρονομικότητας ήταν η διαπίστωση ότι στη βιβλιογραφία υπάρχει ένα κενό στην μελέτη των χαρακτηριστικών της κληρονομικότητας, στις μετρικές της καθώς και στις έρευνες συσχέτισης με λάθη. Ακόμη στη βιβλιογραφία οι μετρικές που χρησιμοποιούνται είναι λίγες, δεν εστιάζουν σε ειδικά χαρακτηριστικά της κληρονομικότητας και τις περισσότερες φορές έχουν αλληλοσυγκρουόμενα αποτελέσματα.Η παρούσα έρευνα με αφορμή το παραπάνω έλλειμμα αλλά και το γεγονός ότι ο επαναορισμός υλοποίησης είναι μη ενδεικνυόμενο μοτίβο μιας και παραβιάζει την αρχή υποκατάστασης Liskov,προσπάθησε να εξετάσει αν μπορεί να υπάρξει συσχέτιση του επαναορισμού υλοποίησης με την εμφάνιση λαθών. Με στόχο τη μέτρηση της έκτασης του φαινομένου του επαναορισμού υλοποίησης σε ένα μονοπάτι κληρονομικότητας δημιουργήθηκε η μετρική ConcreteOverrideMetric (COM) που αποτελεί το πηλίκο του αριθμού των επαναορισμών υλοποίησης σε ένα μονοπάτι κληρονομικότητας προς τον μέγιστο αριθμό των επαναορισμών υλοποίησης που θα μπορούσαν να υπάρξουν στο μονοπάτι αυτό.Για το σκοπό αυτής της εργασίας δημιουργήθηκε λογισμικό το οποίο εξετάζει αποθετήρια κώδικα (SVN) και εξάγει από αυτά πληροφορίες όπως ποια είναι οι καταχωρήσεις που αφορούν διορθώσεις σφαλμάτων, ποιες είναι οι κυκλοφορίες του κάθε έργου που βγήκαν στην παραγωγή (tags). Ταυτόχρονα εξετάζονται οι κυκλοφορίες του εξεταζόμενου λογισμικού και από αυτές δημιουργούνται τα μονοπάτια κληρονομικότητας της κάθε έκδοσης. Στη συνέχεια το λογισμικό συσχετίζει τις κλάσεις αυτές με τις καταχωρήσεις του πρώτου βήματος και έτσι δημιουργείται ένα σύνολο αποτελεσμάτων που μας λέει πως κάθε μονοπάτι κληρονομικότητας συνδέεται με τη διόρθωση ενός ή περισσοτέρων σφαλμάτων. Τέλος τα δεδομένα της κάθε έκδοσης περνάνε από στατιστική ανάλυση στο SPSS. Συγκεκριμένα για κάθε έκδοση του λογισμικού υπολογίζεται η συσχέτιση Pearsonστην προσπάθεια να συσχετιστεί ο αριθμός σφαλμάτων με το μήκος του μονοπατιού κληρονομικότητας, τη μετρική COMκαι τον απόλυτο αριθμό των επαναορισμών υλοποίησης και στη συνέχεια εκτελείται Λογιστική Παλινδρόμηση για να εξεταστεί αν μπορεί να υπάρξει ένα μοντέλο πρόβλεψης της ύπαρξης ή μη λαθών.Τα έργα που εξετάστηκαν ήταν όλα από το Apache Foundation, συγκεκριμένα τα: Bcel, Camel, Mina, OpenJPA, PdfBox, Tomcat 7 και Tomcat 8. Τα αποτελέσματα μπορεί να τα δει κανείς από δύο όψεις. Αρχικά μπορεί κάποιος να πει ότι δεν υπάρχει συσχέτιση μεταξύ των λαθών και των επαναορισμών υλοποίησης. Συνεπώς, ,ο επαναορισμός υλοποίησης δεν προκαλεί λάθη. Στη συνέχεια όμως μπορεί κάποιος με μια πιο προσεκτική ματιά να εστιάσει στο ότι υπήρχε συσχέτιση, άλλες φορές ισχυρή και άλλες ανίσχυρη, με τον αριθμό των επαναορισμών που σημαίνει ότι υπάρχει χώρος για περαιτέρω διερεύνηση.
Λέξη κλειδί Μετρικές λογισμικού
Αντικειμενοστραφής προγραμματισμός
Κληρονομικότητα
Επαναορισμός
Ημερομηνία 30-09-2017
Άδεια χρήσης https://creativecommons.org/licenses/by/4.0/