An empirical study on the usage of conventions and rules for SQL programming in FoSS
Φόρτωση...
Ημερομηνία
Συγγραφείς
Παπαμιχαήλ, Άγγελος
Τίτλος Εφημερίδας
Περιοδικό ISSN
Τίτλος τόμου
Εκδότης
Πανεπιστήμιο Ιωαννίνων. Πολυτεχνική Σχολή. Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής
Περίληψη
Τύπος
Είδος δημοσίευσης σε συνέδριο
Είδος περιοδικού
Είδος εκπαιδευτικού υλικού
Όνομα συνεδρίου
Όνομα περιοδικού
Όνομα βιβλίου
Σειρά βιβλίου
Έκδοση βιβλίου
Συμπληρωματικός/δευτερεύων τίτλος
Περιγραφή
Software evolution is one of the most important aspects of software engineering with maintenance requiring about half of a project’s resources. The software engineering community has made massive improvements in coding quality with the adoption of good practices, coding conventions and styles that optimize software development and maintenance. In this Thesis we focus on SQL programming. Our main objective is to investigate the extent to which developers employ coding conventions and styles in the definition of an SQL schema. To this end, we introduce a SQL style that consists of a set of style rules found in the state of the art. This style covers various aspects of the SQL schema quality. To assess schema quality we propose a style checking tool that allows developers to check the adherence to the rules of the defined style. We conduct a large scale case study consisting of 21 well-known FoSS projects. In our case study we check whether the SQL schemas of the examined projects adhere to the rules. Moreover, we investigate the evolution of the style that is followed by each schema. Taking a step further, we identify evolution patterns that describe the adherence to the rules over the lifetime of the examined schemas. Then, we perform a detailed analysis of the individual rules and we identify respective rule adherence and violation patterns. Based on the aforementioned patterns, we identify a weighted SQL style that reflects the extent to which the examined rules are employed in practice. Finally, we evaluate the distance of the examined schemas from the style we defined and the weighted style.
Η εξέλιξη του λογισμικού είναι μία από τις σημαντικότερες πλευρές του software engineering με τη συντήρη, να απαιτεί τους μισούς από τους συνολικά διαθέσιμους πόρους. Η κοινότητα του software engineering έχει κάνει σημαντική πρόοδο ως προς την ποιότητα κώδικα μέσω της δημιουργίας και αξιοποίησης τεχνικών που βελτιστοποιούν την ανάπτυξη και συντήρησή του αλλά και της ανάπτυξης τεχνικών διαχείρισης πόρων. Πιο συγκεκριμένα, για την πλειονότητα των γλωσσών αντικειμενοστρεφούς προγραμματισμού υπάρχει ένα σύνολο κανόνων γραφής12 που εξασφαλίζουν την ύπαρξη ομοιογένειας και αναγνωσιμότητας στο κώδικα. Παράλληλα ορίστηκαν μοτίβα γραφής κώδικα που ενισχύουν άμεσα την επεκτασιμότητά3 και εξασφαλίζουν την χρήση αντικειμενοστρεφούς αρχών σχεδίασης4. Είναι γνωστό, ειδικά σε μεγάλης κλίμακας προγράμματα, ότι η ύπαρξη λογισμικού προϋποθέτει την ύπαρξη μιας ή περισσότερων βάσεων δεδομένων και το αντίστροφο, ενώ ακόμη πολλές φορές το ίδιο το λογισμικό δημιουργείται και εξελίσεται γύρω από μια βάση δεδομένων. Η πραγματικότητα λοιπόν ορίζει ως ίσα μέρη το λογισμικό και τις βάσεις. Εύλογα θα περιμένε κανείς την ύπαρξη πλούσιας και σε βάθος βιβλιογραφία για τις βάσεις αντίστοιχη αυτής του λογισμικού, όσον αφορά την δημιουργία και ανάπτυξή τους. Δυστυχώς όμως η βιβλιογραφία είναι σαφώς πιο περιορισμένη και αυτό μας ώθησε στο να ερευνήσουμε και να συνεισφέρουμε στο τομέα της ποιότητας των βάσεων δεδομένων. Σε αυτή την εργασία επικεντρωνόμαστε στον προγραμματισμό SQL. Ο κύριος στόχος μας είναι να διευρενήσουμε το βαθμό στον οποίο οι προγραμματιστές αξιοποιούν συμβάσεις και στυλ γραφής κώδικα κατά τον ορισμό SQL σχημάτων. Για αυτό το λόγο, εισάγουμε ένα ιδανικό SQL στυλ που αποτελείται από ένα σύνολο κανόνων που προέρχονται από ό,τι καλύτερο υπάρχει στη σχετική βιβλιογραφία. Το ιδανικό στυλ καλύπτει ποικίλες πλευρές όσον αφόρα τη ποιότητα ενός SQL σχήματος. Για να ελέγξουμε την ποιότητα του σχήματος προτείνουμε ένα εργαλείο που επιτρέπει στους προγραμματιστές να ελέγξουν την ικανοποίηση των κανόνων του ιδανικού στυλ. Το εργαλείο αυτοματοποιεί πλήρως τον έλεγχο ικανοποίησης των κανόνων στην ιστορία ενός σχήματος, όπου ως ιστορία ορίζονται οι διαφορετικές εκδόσεις ενός σχήματος από την αρχή της ύπαρξής του ως την τελευταία γνωστή έκδοση σε εμάς. Παράλληλα με το βαθμό ικανοποίησης των κανόνων για την κάθε έκδοση, εξάγει στατιστικά στοιχεία που περιγράφουν το εύρος τιμών της ικανοποίησης (τυπική απόκλιση, μέσος όρος κ.α.) καθώς και τη συσχέτιση μεταξύ του μεγέθους του σχήματος και του βαθμού ικανοποίησης. Αξιοποιούμε τις δυνατότητες που μας παρέχει το εργαλείο διεξάγοντας μια μεγάλης κλίμακας μελέτη αποτελούμενη από 21 γνώστα, ανοιχτού κώδικα, προγράμματα (FoSS). Στη μελέτη ελέγχουμε αν τα SQL σχήματα των προγραμμάτων που συμμετέχουν σε αυτήν ακολουθούν τους κανόνες. Ακόμα, εξετάζουμε την εξέλιξη των στυλ που ακολουθούντε από το κάθε σχήμα. Παράλληλα, αναγνωρίζουμε μοτίβα εξέλιξης που περιγράφουν την ικανοποίηση των κανόνων κατά τη διάρκεια ζωής των σχημάτων. Συνεχίζοντας, διεξάγουμε μια λεπτομερή ανάλυση του κάθε κανόνα και αναγνωρίζουμε τα αντίστοιχα μοτίβα ικανοποίησης ή παραβίασής τους. Βασιζόμενοι στα παραπάνω μοτίβα, ορίζουμε ένα σταθμισμένο (weight) στυλ που αντικατοπτρίζει το εύρος χρήσης των κανόνων από τους προγραμματιστές στην πράξη. Τέλος, αξιολογούμε την απόσταση των ελεγθέντων σχήματων από το ιδεατό και σταθμισμένο στυλ. Συγκεκριμένα, αποδείξαμε ότι ικανοποιούνται αρκετοί κανόνες στυλ γραφής SQL ενώ ο βαθμός ικανοποίησης επηρεάζεται από το σχήμα, την SQL οντότητα που ελέγχουμε (πίνακας ή κολώνα) αλλά και από τον ίδιο το κανόνα. Μελετώντας την εξέλιξη των σχημάτων, βρήκαμε ότι για τους πίνακες το πλήθος των κανόνων που αλλάζει κυμαίνεται από 0 έως 7 και για τις κολώνες από 0 έως 8. Επίσης, οι αλλαγές μεγάλης κλίμακας συμβαίνουν σε μικρά χρονικά διάστηματα ως προς τη συνολική διάρκεια ζωής του σχήματος και ότι τα διαστήματα αυτά είναι συνεχή. Ο έλεγχος της διαφοράς του βαθμού ικανοποιήσης των κανόνων μεταξύ πρώτης και τελευταίας έκδοσης έδειξε την φύση των αλλαγών. Οι περισσότεροι κανόνες παραμένουν σταθεροί (13 για πίνακες, 14 για κολώνες), ορισμένοι εξελίσσονται αρνητικά (2 κανόνες πινάκων, 1 κολώνων) και τέλος ελάχιστοι εξελίσσονται θετικά (2 για τις κολώνες). Διερευνόντας τον βαθμό ικανοποίησης στην τελευταία γνωστή έκδοση βρήκαμε ότι οι κανόνες που ικανοποιούνται σε μεγάλο βαθμό είναι 11 για τους πίνακες 14 για τις κολώνες. Οι κανόνες που ικανοποιούνται σε μικρότερο βαθμό είναι 2 για τους πίνακες και 1 για τις κολώνες. Οι κανόνες που παραβιάζονται σε μεγάλο βαθμό είναι 2 για τους πίνακες και αυτοί που παραβιάζονται σε μικρότερο βαθμό είναι 2 και αφορούν τις κολώνες. Τέλος μέσω της κατάταξης των κανόνων με βάση τη ικανοποίησή τους από τους προγραμματιστές προσδιορίσαμε της αξία του κάθε κανόνα, όπως την αντιλαμβάνεται ο ίδιος ο προγραμματιστής.
Η εξέλιξη του λογισμικού είναι μία από τις σημαντικότερες πλευρές του software engineering με τη συντήρη, να απαιτεί τους μισούς από τους συνολικά διαθέσιμους πόρους. Η κοινότητα του software engineering έχει κάνει σημαντική πρόοδο ως προς την ποιότητα κώδικα μέσω της δημιουργίας και αξιοποίησης τεχνικών που βελτιστοποιούν την ανάπτυξη και συντήρησή του αλλά και της ανάπτυξης τεχνικών διαχείρισης πόρων. Πιο συγκεκριμένα, για την πλειονότητα των γλωσσών αντικειμενοστρεφούς προγραμματισμού υπάρχει ένα σύνολο κανόνων γραφής12 που εξασφαλίζουν την ύπαρξη ομοιογένειας και αναγνωσιμότητας στο κώδικα. Παράλληλα ορίστηκαν μοτίβα γραφής κώδικα που ενισχύουν άμεσα την επεκτασιμότητά3 και εξασφαλίζουν την χρήση αντικειμενοστρεφούς αρχών σχεδίασης4. Είναι γνωστό, ειδικά σε μεγάλης κλίμακας προγράμματα, ότι η ύπαρξη λογισμικού προϋποθέτει την ύπαρξη μιας ή περισσότερων βάσεων δεδομένων και το αντίστροφο, ενώ ακόμη πολλές φορές το ίδιο το λογισμικό δημιουργείται και εξελίσεται γύρω από μια βάση δεδομένων. Η πραγματικότητα λοιπόν ορίζει ως ίσα μέρη το λογισμικό και τις βάσεις. Εύλογα θα περιμένε κανείς την ύπαρξη πλούσιας και σε βάθος βιβλιογραφία για τις βάσεις αντίστοιχη αυτής του λογισμικού, όσον αφορά την δημιουργία και ανάπτυξή τους. Δυστυχώς όμως η βιβλιογραφία είναι σαφώς πιο περιορισμένη και αυτό μας ώθησε στο να ερευνήσουμε και να συνεισφέρουμε στο τομέα της ποιότητας των βάσεων δεδομένων. Σε αυτή την εργασία επικεντρωνόμαστε στον προγραμματισμό SQL. Ο κύριος στόχος μας είναι να διευρενήσουμε το βαθμό στον οποίο οι προγραμματιστές αξιοποιούν συμβάσεις και στυλ γραφής κώδικα κατά τον ορισμό SQL σχημάτων. Για αυτό το λόγο, εισάγουμε ένα ιδανικό SQL στυλ που αποτελείται από ένα σύνολο κανόνων που προέρχονται από ό,τι καλύτερο υπάρχει στη σχετική βιβλιογραφία. Το ιδανικό στυλ καλύπτει ποικίλες πλευρές όσον αφόρα τη ποιότητα ενός SQL σχήματος. Για να ελέγξουμε την ποιότητα του σχήματος προτείνουμε ένα εργαλείο που επιτρέπει στους προγραμματιστές να ελέγξουν την ικανοποίηση των κανόνων του ιδανικού στυλ. Το εργαλείο αυτοματοποιεί πλήρως τον έλεγχο ικανοποίησης των κανόνων στην ιστορία ενός σχήματος, όπου ως ιστορία ορίζονται οι διαφορετικές εκδόσεις ενός σχήματος από την αρχή της ύπαρξής του ως την τελευταία γνωστή έκδοση σε εμάς. Παράλληλα με το βαθμό ικανοποίησης των κανόνων για την κάθε έκδοση, εξάγει στατιστικά στοιχεία που περιγράφουν το εύρος τιμών της ικανοποίησης (τυπική απόκλιση, μέσος όρος κ.α.) καθώς και τη συσχέτιση μεταξύ του μεγέθους του σχήματος και του βαθμού ικανοποίησης. Αξιοποιούμε τις δυνατότητες που μας παρέχει το εργαλείο διεξάγοντας μια μεγάλης κλίμακας μελέτη αποτελούμενη από 21 γνώστα, ανοιχτού κώδικα, προγράμματα (FoSS). Στη μελέτη ελέγχουμε αν τα SQL σχήματα των προγραμμάτων που συμμετέχουν σε αυτήν ακολουθούν τους κανόνες. Ακόμα, εξετάζουμε την εξέλιξη των στυλ που ακολουθούντε από το κάθε σχήμα. Παράλληλα, αναγνωρίζουμε μοτίβα εξέλιξης που περιγράφουν την ικανοποίηση των κανόνων κατά τη διάρκεια ζωής των σχημάτων. Συνεχίζοντας, διεξάγουμε μια λεπτομερή ανάλυση του κάθε κανόνα και αναγνωρίζουμε τα αντίστοιχα μοτίβα ικανοποίησης ή παραβίασής τους. Βασιζόμενοι στα παραπάνω μοτίβα, ορίζουμε ένα σταθμισμένο (weight) στυλ που αντικατοπτρίζει το εύρος χρήσης των κανόνων από τους προγραμματιστές στην πράξη. Τέλος, αξιολογούμε την απόσταση των ελεγθέντων σχήματων από το ιδεατό και σταθμισμένο στυλ. Συγκεκριμένα, αποδείξαμε ότι ικανοποιούνται αρκετοί κανόνες στυλ γραφής SQL ενώ ο βαθμός ικανοποίησης επηρεάζεται από το σχήμα, την SQL οντότητα που ελέγχουμε (πίνακας ή κολώνα) αλλά και από τον ίδιο το κανόνα. Μελετώντας την εξέλιξη των σχημάτων, βρήκαμε ότι για τους πίνακες το πλήθος των κανόνων που αλλάζει κυμαίνεται από 0 έως 7 και για τις κολώνες από 0 έως 8. Επίσης, οι αλλαγές μεγάλης κλίμακας συμβαίνουν σε μικρά χρονικά διάστηματα ως προς τη συνολική διάρκεια ζωής του σχήματος και ότι τα διαστήματα αυτά είναι συνεχή. Ο έλεγχος της διαφοράς του βαθμού ικανοποιήσης των κανόνων μεταξύ πρώτης και τελευταίας έκδοσης έδειξε την φύση των αλλαγών. Οι περισσότεροι κανόνες παραμένουν σταθεροί (13 για πίνακες, 14 για κολώνες), ορισμένοι εξελίσσονται αρνητικά (2 κανόνες πινάκων, 1 κολώνων) και τέλος ελάχιστοι εξελίσσονται θετικά (2 για τις κολώνες). Διερευνόντας τον βαθμό ικανοποίησης στην τελευταία γνωστή έκδοση βρήκαμε ότι οι κανόνες που ικανοποιούνται σε μεγάλο βαθμό είναι 11 για τους πίνακες 14 για τις κολώνες. Οι κανόνες που ικανοποιούνται σε μικρότερο βαθμό είναι 2 για τους πίνακες και 1 για τις κολώνες. Οι κανόνες που παραβιάζονται σε μεγάλο βαθμό είναι 2 για τους πίνακες και αυτοί που παραβιάζονται σε μικρότερο βαθμό είναι 2 και αφορούν τις κολώνες. Τέλος μέσω της κατάταξης των κανόνων με βάση τη ικανοποίησή τους από τους προγραμματιστές προσδιορίσαμε της αξία του κάθε κανόνα, όπως την αντιλαμβάνεται ο ίδιος ο προγραμματιστής.
Περιγραφή
Λέξεις-κλειδιά
Software engineering, SQL
Θεματική κατηγορία
Software engineering
Παραπομπή
Σύνδεσμος
Γλώσσα
en
Εκδίδον τμήμα/τομέας
Πανεπιστήμιο Ιωαννίνων. Πολυτεχνική Σχολή. Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής
Όνομα επιβλέποντος
Ζάρρας, Απόστολος
Εξεταστική επιτροπή
Ζάρρας, Απόστολος
Βασιλειάδης, Παναγιώτης
Μαμουλής, Νικόλαος
Βασιλειάδης, Παναγιώτης
Μαμουλής, Νικόλαος
Γενική Περιγραφή / Σχόλια
Ίδρυμα και Σχολή/Τμήμα του υποβάλλοντος
Πανεπιστήμιο Ιωαννίνων. Πολυτεχνική Σχολή. Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής
Πίνακας περιεχομένων
Χορηγός
Βιβλιογραφική αναφορά
Βιβλιογραφία: σ. 83-85
Ονόματα συντελεστών
Αριθμός σελίδων
110 σ.