ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ.

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ."

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Πτυχιακή εργασία «ΕΠΙΔΡΑΣΗ ΠΡΟΤΥΠΩΝ ΣΧΕΔΙΑΣΗΣ ΣΤΗ ΠΟΙΟΤΗΤΑ ΤΟΥ ΛΟΓΙΣΜΙΚΟΥ ΜΕΣΩ ΑΝΑΛΥΤΙΚΗΣ ΜΕΘΟΔΟΛΟΓΙΑΣ» Της φοιτήτριας Αρβανίτου Ελβίρας-Μαρίας Αρ. Μητρώου: 419 Επιβλέπων Καθηγητής Σταμέλος Ιωάννης Θεσσαλονίκη, 2013 Σελίδα 1 από 84

2 Σελίδα 2 από 84

3 ΠΡΟΛΟΓΟΣ Στην εποχή της οικονομικής κρίσης, οι εταιρείες ανάπτυξης λογισμικού αγωνίζονται για την μείωση του λειτουργικού κόστους, χωρίς να επηρεάζουν τον χρόνο παράδοσης των προϊόντων τους στην αγορά καθώς κα την ποιότητα υποστήριξης των πελατών τους. Πολλές μικρές και μεσαίες επιχειρήσεις (SMEs) χάνουν πελάτες, επειδή δεν μπορούν να αντιμετωπίσουν την προσαρμογή των προγραμμάτων που ήδη έχουν κυκλοφορήσει, λόγω της προσπάθειας που δαπανάται για τις δραστηριότητες διόρθωσης σφαλμάτων που κυκλοφόρησαν σε προηγούμενη έκδοση του λογισμικού. Επιπλέον, υπάρχουν πολλοί τομείς του λογισμικού, όπως η βιομηχανία ηλεκτρονικών παιχνιδιών, η οποία εξαρτάται από τις αναβαθμίσεις και τις νέες εκδόσεις ενός προϊόν που παρουσιάζει μικρές μόνο αλλαγές με το προηγούμενο. Όλες οι παραπάνω δραστηριότητες αποτελούν τις πιο συνηθισμένες εργασίες συντήρησης λογισμικού που λαμβάνουν χώρα σε μια εταιρεία ανάπτυξης λογισμικού. Η προσπάθεια μιας τυπικής εταιρείας ανάπτυξης λογισμικού για τη συντήρηση είναι κοντά στο 50% της συνολικής προσπάθειας της εταιρείας. Έτσι, αναμένεται ότι αν οι εταιρείες λογισμικού παράγουν περισσότερο συντηρήσιμο λογισμικό, θα είναι σε θέση να περνούν περισσότερο χρόνο στην ανάπτυξη νέων προϊόντων, ενώ δεν χάνουν τα έσοδα από την υποστήριξη πελατών, τις αναβαθμίσεις και τις προσαρμοσμένες εκδόσεις λογισμικού. Ένας από τους σημαντικότερους παράγοντες που επηρεάζει το κόστος συντήρησης του λογισμικού φαίνεται να είναι η δομική ποιότητα του λογισμικού. Η δομική ποιότητα αντικατοπτρίζεται σε πολλά χαρακτηριστικά του λογισμικού, όπως η κατανόηση, η επεκτασιμότητα, η ευελιξία, τα οποία είναι πολύ σημαντικά κατά τη διάρκεια της συντήρησης ενός λογισμικού. Επιπλέον, τα πρότυπα σχεδίασης λογισμικού έχουν προταθεί από τους Gamma et al. το 1995 ως κοινές λύσεις σε κοινά προβλήματα σχεδιασμού και θεωρούνταιι ως τυποποιημένα στον τομέα του λογισμικού [10]. Η κατάσταση της έρευνας στην τεχνολογία των προτύπων σχεδίασης δείχνει ότι τα πρότυπα σχεδίασης δεν μπορούν να αξιολογηθούν παγκοσμίως σε σχέση με την επίδρασή τους στην δομική ποιότητα του λογισμικού. Η πλειοψηφία από τα άρθρα υποδεικνύουν ότι ο πιο Σελίδα 3 από 84

4 σημαντικός παράγοντας για το εάν η εφαρμογή των προτύπων σχεδίασης είναι ωφέλιμη ή όχι, είναι η εμπειρία του σχεδιαστή που εφαρμόζει τα πρότυπα και η διαίσθηση του/της σχετικά με το εάν τα πρότυπα σχεδίασης θα πρέπει να χρησιμοποιούνται ή όχι. Μια σύνοψη της κατάστασης της έρευνας της τεχνολογίας αποκαλύπτει ότι υπάρχουν αρκετές περιπτώσεις προτύπων σχεδίασης που παρουσιάζουν διαφορετική επίδραση του προτύπου, στο ίδιο ποιοτικό χαρακτηριστικό [3]. Για παράδειγμα, το πρότυπο σχεδίασης Visitor έχει αξιολογηθεί από δύο μελέτες που συσχετίζεται θετικά με τη συντηρησιμότητα και αρνητικά με συντηρησιμότητα από δύο άλλες μελέτες. Από τα παραπάνω γίνεται σαφές ότι υπάρχει μεγάλη δυσκολία για να απαντήσει κάποιος στην ερώτηση "Εάν υπάρχει κάποιος αντικειμενικός τρόπος για την χρησιμοποίησης ενός προτύπου σχεδίασης ή δεν υπάρχει;" Στο [4] οι συγγραφείς προτείνουν μια αναλυτική μεθοδολογία για να συγκρίνουν τα πρότυπα ισοδύναμης λειτουργικότητας και εφαρμόζουν την μεθοδολογία τους σε τρία πρότυπα σχεδίασης, δηλαδή στα Bridge, Abstract Factory και Visitor. Στην εργασία αυτή, χρησιμοποιούμε την ίδια μεθοδολογία για τρία επιπλέον πρότυπα, δηλαδή στο Decorator, Template Method και Strategy. Εκτός από αυτό, πραγματοποιούμε μια μελέτη περίπτωσης, προκειμένου να επικυρώσουμε τα αποτελέσματα της αναλυτικής μεθόδου μέσω εμπειρικών δεδομένων. Σελίδα 4 από 84

5 ΠΕΡΙΛΗΨΗ Η παρούσα διπλωματική εργασία χωρίζεται σε δύο μέρη και ασχολείται με την επίδραση των προτύπων σχεδίασης στη δομική ποιότητα του λογισμικού. Αρχικά, κάνοντας χρήση μιας ήδη δημοσιευμένης αναλυτικής μεθοδολογίας σύγκρισης σχεδίων λογισμικού, μπορέσαμε να εξάγουμε χρήσιμα συμπεράσματα σε ότι αφορά την ποιότητα των προτύπων σχεδίασης Decorator, Template Method και Strategy. Στη συνέχεια, για να επικυρώσουμε τα αποτελέσματα της αναλυτικής μεθοδολογίας, διενεργήσαμε μια μελέτη περίπτωσης σε πέντε παιχνίδια ανοιχτού λογισμικού γραμμένα σε java. Αναλυτικότερα, για κάθε παιχνίδι πήραμε δυο εκδόσεις του λογισμικού. Από αυτές, η μία έκδοση περιλαμβάνει ένα στιγμιότυπο ενός προτύπου σχεδίασης, ενώ η άλλη έκδοση περιλαμβάνει μια εναλλακτική σχεδιαστική λύση χωρίς πρότυπο. Τα αποτελέσματα της εμπειρικής μελέτης επιβεβαίωσαν τους κανόνες που εξάγονται μέσω της αναλυτικής μεθοδολογίας. Σελίδα 5 από 84

6 ABSTRACT This thesis is divided into two parts and investigates the effect of design patterns on structural software quality attributes. At first, using an already published analytical methodology for comparing software designs, we managed to export useful conclusions with regard to the quality of Decorator, Template Method and Strategy patterns. Then, to validate the results of the analytical methodology, we conducted a case study in five open source games written in java. More specifically, for each game we got two versions of the software. The one version includes an instance of a design pattern, whereas the other version includes an alternate design solution without pattern. The results of the empirical study confirmed the rules that have been extracted by the analytical methodology. Σελίδα 6 από 84

7 ΕΥΧΑΡΙΣΤΙΕΣ Η παρούσα εργασία αποτελεί διπλωματική εργασία στα πλαίσια του μεταπτυχιακού προγράμματος «Πληροφοριακά Συστήματα» του τμήματος Πληροφορικής. Πριν την παρουσίαση των αποτελεσμάτων της παρούσας διπλωματικής εργασίας, αισθάνομαι την υποχρέωση να ευχαριστήσω ορισμένους από τους ανθρώπους που γνώρισα, συνεργάστηκα μαζί τους και έπαιξαν πολύ σημαντικό ρόλο στην πραγματοποίησή της. Πρώτο από όλους θέλω να ευχαριστήσω τον επιβλέποντα καθηγητή της διπλωματικής εργασίας, τον Σταμέλο Ιωάννη ο οποίος μου εμπιστεύτηκε την ανάθεση αυτής της εργασίας και προσέφερε την πολύτιμη βοήθεια για την ολοκλήρωση της. Στη συνέχεια θα ήθελα να ευχαριστήσω τον διδάκτορα Αμπατζόγλου Απόστολο για την πολύτιμη καθοδήγηση του και την εμπιστοσύνη και εκτίμηση που μου έδειξε. Τέλος, θέλω να ευχαριστήσω τους γονείς μου Χρήστο και Δήμητρα, τον αδερφό μου Νίκο, καθώς και τον φίλο μου Άκη, που με υπομονή και κουράγιο πρόσφεραν την απαραίτητη ηθική συμπαράσταση για την ολοκλήρωση της μεταπτυχιακής μου εργασίας. Σελίδα 7 από 84

8 ΠΕΡΙΕΧΟΜΕΝΑ Περιεχόμενα ΠΡΟΛΟΓΟΣ... 3 ΠΕΡΙΛΗΨΗ... 5 ABSTRACT... 6 ΕΥΧΑΡΙΣΤΙΕΣ... 7 ΠΕΡΙΕΧΟΜΕΝΑ... 8 ΕΥΡΕΤΗΡΙΟ ΠΙΝΑΚΩΝ ΣΧΗΜΑΤΩΝ Εισαγωγή Ανοιχτό Λογισμικό Πρότυπα Σχεδίασης Πρότυπο Decorator Πρότυπο Template Method Πρότυπο Strategy Μετρικές Ποιότητας Λογισμικού σε Επίπεδο Σχεδίασης Ανάπτυξη Μοντέλων Ποιότητας Προσδιορισμός Χαρακτηριστικών Ποιότητας Σχεδιασμού Προσδιορισμός των ιδιοτήτων Αντικειμενοστρεφούς Σχεδιασμού Σκοπός Διπλωματικής Μεθοδολογία Εφαρμογή Μεθοδολογίας Πρότυπο Σχεδίασης «Decorator» Σχεδιαστικές Προσεγγίσεις Αποτελέσματα Πρότυπο Σχεδίασης «Template Method» Σχεδιαστικές Προσεγγίσεις Αποτελέσματα Πρότυπο Σχεδίασης «Strategy» Σχεδιαστικές Προσεγγίσεις Αποτελέσματα Συζήτηση Decorator Template Method Strategy Εμπειρική Μελέτη Μεθοδολογία Καθορισμός ερωτήσεων έρευνας Επιλογή project και αντικέιμενα Αναγνώριση μεθόδου σύγκρισης Ανάλυση και αναφορά των αποτελεσμάτων ΣΥΜΠΕΡΑΣΜΑΤΑ ΒΙΒΛΙΟΓΡΑΦΙΑ Σελίδα 8 από 84

9 ΕΥΡΕΤΗΡΙΟ ΠΙΝΑΚΩΝ ΣΧΗΜΑΤΩΝ Σχήμα 1: Διάγραμμα κλάσεων προτύπου Decorator...15 Σχήμα 2: Διάγραμμα κλάσεων προτύπου Template Method..16 Σχήμα 3: Διάγραμμα κλάσεων προτύπου Strategy...17 Σχήμα 4: Επίπεδα και σχέσεις στο QMOOD...19 Σχήμα 5: Διάγραμμα Κλάσεων Λύση «Πρότυπο Σχεδίασης».39 Σχήμα 6: Διάγραμμα Κλάσεων Λύση «Alternative Πρότυπο Σχεδίασης»...39 Σχήμα 7: Διάγραμμα Κλάσεων Λύση «Πρότυπο Σχεδίασης».47 Σχήμα 8: Διάγραμμα Κλάσεων Λύση «Alternative Πρότυπο Σχεδίασης»...48 Σχήμα 9: Διάγραμμα Κλάσεων Λύση «Πρότυπο Σχεδίασης».54 Σχήμα 10: Διάγραμμα Κλάσεων Λύση «Alternative Πρότυπο Σχεδίασης».55 Σχήμα 11: Πρότυπο Decorator.73 Σχήμα 12: Πρότυπο Template Method.74 Σχήμα 13: Πρότυπο Strategy 75 Πίνακας 1 : Ορισμοί Χαρακτηριστικών Ποιότητας...21 Πίνακας 2: Ορισμοί Ιδιοτήτων Σχεδιασμού.22 Πίνακας 3: Περιγραφή Μετρικών Σχεδιασμού...25 Πινακας 4 : Μετρικές Σχεδιασμού για τις Ιδιότητες Σχεδιασμού 29 Πίνακας 5: Σχέσεις Ιδιοτήτων Σχεδιασμού..31 Πίνακας 6 : Ορισμοί Χαρακτηριστικών Ποιότητας.32 Πίνακας 7: Μετρικές Συντηρησιμότητας για τις Σχεδιαστικές Επιλογές 45 Πίνακας 8: Μετρικές για τις Σχεδιαστικές Επιλογές 45 Πίνακας 9: Μετρικές για τις Σχεδιαστικές Επιλογές 46 Πίνακας 10: Μετρικές Συντηρησιμότητας για τις Σχεδιαστικές Επιλογές..52 Πίνακας 11: Μετρικές για τις Σχεδιαστικές Επιλογές..53 Πίνακας 12: Μετρικές για τις Σχεδιαστικές Επιλογές..53 Πίνακας 13: Μετρικές Συντηρησιμότητας για τις Σχεδιαστικές Επιλογές..59 Πίνακας 14: Μετρικές για τις Σχεδιαστικές Επιλογές..60 Πίνακας 15: Μετρικές για τις Σχεδιαστικές Επιλογές..60 Πίνακας 16: Διαγράμματα περιπτώσεων..62 Πίνακας 17: Διαγράμματα περιπτώσεων..64 Πίνακας 18: Διαγράμματα περιπτώσεων..67 Πίνακας 19: Έλεγχος υποθέσεων για το πρότυπο Decorator 76 Πίνακας 20: Έλεγχος υποθέσεων για το πρότυπο Template Method..78 Πίνακας 21: Έλεγχος υποθέσεων για το πρότυπο Strategy..80 Σελίδα 9 από 84

10 Σελίδα 10 από 84

11 Σελίδα 11 από 84

12 1. Εισαγωγή Σε αυτό το κεφάλαιο θα παρουσιαστούν οι εισαγωγικές έννοιες που μας απασχόλησαν σε αυτή την διπλωματική, το κίνητρο της εργασίας και η μεθοδολογία της. Έτσι πιο συγκεκριμένα, στην ενότητα 1.1 θα παρουσιαστεί μια εισαγωγή για το ανοιχτό λογισμικό, στην ενότητα 1.2 θα παρουσιάσουμε τα πρότυπα σχεδίασης που λάβαμε υπόψη, στην ενότητα 1.3 θα αναφέρουμε τις μετρικές που χρησιμοποιήσαμε στην μεθοδολογία μας, στην ενότητα 1.4 αναφέρουμε τον σκοπό της διπλωματικής και στην ενότητα 1.5 θα αναφέρουμε την μεθοδολογία που χρησιμοποιήσαμε. 1.1 Ανοιχτό Λογισμικό Στα πρωταρχικά χρόνια του προγραμματισμού, το λογισμικό διανέμονταν μαζί με το πηγαίο κώδικα. Ειδικότερα, το λογισμικό ήταν άμεσα συνδεδεμένο με το υλικό του κατασκευαστή. Εξαιτίας της πολυπλοκότητας και του κόστους ανάπτυξης (καθώς και της σχετικά περιορισμένης ισχύος που διέθεταν οι πρώτοι υπολογιστές), των επιχειρηματικών μοντέλων των κατασκευαστών (μοντέλα που βασίζονταν στην πώληση του υλικού), καθώς και άλλων παραγόντων, οι χρήστες ελεύθερα διαμοιράζονταν τον πηγαίο κώδικα των εφαρμογών με συνεργατικό τρόπο, κάτι που οδήγησε στη δημιουργία ομάδων χρηστών, μερικές από τις οποίες είναι ακόμα ενεργές. Με την αποσύνδεση του υλικού από το λογισμικό, στις αρχές της δεκαετίας του 1970, εμφανίστηκαν στην αγορά τα πρώτα προϊόντα λογισμικού με τη μορφή πακέτου. Σταδιακά, λοιπόν, η διάδοση του πηγαίου κώδικα σταμάτησε να γίνεται ευρύτατα, καθώς οι πωλητές λογισμικού άρχισαν σταδιακά να αποκρύβουν τον κώδικα. Η εμπορευματοποίηση του λογισμικού που επικρατούσε παρείχε στους χρήστες κάποια οφέλη αλλά δεν υπήρχε παραμετροποίηση του λογισμικού στις ανάγκες του καθενός. Αντιλαμβανόμενος ο Richard Stallman αυτόν τον ανασταλτικό παράγοντα στην ανάπτυξη του λογισμικού και στην πρόοδο της τεχνολογίας των υπολογιστών, ξεκίνησε το GNU project με σκοπό να παρέχει ελεύθερο UNIX. Στα χρόνια που προηγήθηκαν αυτού του βήματος, οι προγραμματιστές του GNU είχαν δημιουργήσει μια ποικιλία από καινοτόμα ανοιχτού κώδικα εργαλεία. Ο Richard Stallman ήταν και ο πρώτος που εισήγαγε τον όρο ελεύθερο λογισμικό (free software) και ίδρυσε το Ίδρυμα Ελεύθερου Λογισμικού (Free Software Foundation) το Σελίδα 12 από 84

13 1983 προκειμένου να βρεθεί ένας τρόπος διατήρησης της ελευθερίας των χρηστών να μελετούν, να κατανοούν και να τροποποιούν το λογισμικό, μέσα στο πλαίσιο του πνεύματος, που διέπει την κοινότητα των hackers και αφορά την απρόσκοπτη διάχυση των πληροφοριών. Αργότερα, ο οργανισμός Open Source Iniative πρότεινε τον όρο λογισμικό ανοιχτού κώδικα (open source software), πιθανότατα προκειμένου να αποφευχθεί η παρερμηνεία του αγγλικού όρου free, ο οποίος χρησιμοποιήθηκε από το FSF για την απόδοση της έννοιας της ελευθερίας και όχι της έννοιας δωρεάν. Η δημιουργία του Linux το 1991, ενός ελεύθερου, συμβατού με το UNIX, λειτουργικού συστήματος, άλλαξε πολύ την στάση των προγραμματιστών προς τον κώδικα ανοιχτού λογισμικού. Ο δημιουργός του πυρήνα Linux, Linus Torvalds, πέτυχε τις προσδοκίες του, δημιουργώντας μια ομάδα προγραμματιστών και ατόμων που συνεισέφεραν στην ανάπτυξη μέσω του Internet. Ο Linus έδινε σε κυκλοφορία νέες εκδόσεις του λειτουργικού συστήματος και οι υπόλοιποι προγραμματιστές έκαναν αποσφαλμάτωση και πρόσθεταν νέες λειτουργίες. Ο Eric Raymond, ένας ευαγγελιστής του ανοιχτού-κώδικα, ονόμασε αυτή την προσέγγιση μοντέλο Bazaar, υποδηλώνοντας έτσι τη χαοτική αλλά αποτελεσματική οργάνωση των προγραμματιστών στο Internet, σε αντίθεση με τη παραδοσιακή προσέγγιση Cathedral που επικρατούσε μέχρι τότε. Παράλληλα, εξηγεί ότι η σταθερότητα των προγραμμάτων ανοιχτού-κώδικα είναι αποτέλεσμα του μεγάλου αριθμού προγραμματιστών και δοκιμαστών, καθώς οποιοδήποτε μεγάλο σφάλμα, φαίνεται μικρό κάτω από το βλέμμα πολλών ματιών. Το κλειδί στο λογισμικό ανοιχτού-κώδικα είναι η διαθεσιμότητα του πηγαίου κώδικα, καθώς επιτρέπει στους χρήστες με ειδικές προγραμματιστικές ικανότητες να το προσαρμόσουν στις προσωπικές τους απαιτήσεις και να εξαλείψουν τα σφάλματα που εμφανίζονται στη χρήση. Η ευρέως διαδεδομένη χρήση της άδειας ελεύθερου λογισμικού, GNU General Public License, εγγυάται ότι ο καθένας μπορεί να τροποποιήσει και να αναδιανείμει προγράμματα, έχοντας ως προϋπόθεση ότι δεν εμποδίζει άλλους από το να πράξουν το ίδιο. Στις μέρες μας υπάρχουν αναρίθμητες εφαρμογές και προγράμματα ανοικτούκώδικα. Γνωστά παραδείγματα είναι το λειτουργικό σύστημα Linux, ο Apache Server, Σελίδα 13 από 84

14 η Perl, το Mozilla κ.α. Μερικά από τα προγράμματα αυτά βγάζουν εκτός συναγωνισμού εμπορικά προγράμματα αντίστοιχου είδους και πολλές εταιρίες όπως η Apple και η Sun Microsystems κάνουν χρήση των προγραμμάτων αυτών. Δίνοντας έναν ορισμό για το ανοιχτό λογισμικό, θα πρέπει να αναφέρουμε το σύνολο των συνθηκών στο οποίο βασίζεται: Ελεύθερη Αναδιανομή Πηγαίος Κώδικας: Το πρόγραμμα που διατίθεται πρέπει να περιλαμβάνει τον πηγαίο κώδικα, ενώ συγχρόνως πρέπει να επιτρέπεται η διάθεσή του είτε ως πηγαίος κώδικας είτε σε μεταγλωττισμένη μορφή. Παραγόμενα Έργα: Η άδεια χρήσης πρέπει να επιτρέπει τροποποιήσεις του προγράμματος, καθώς και πιθανά παραγόμενα έργα, τα οποία πρέπει να διανέμονται με τους ίδιους όρους που διέπουν το αρχικό λογισμικό. Ακεραιότητα του πηγαίου κώδικα του συγγραφέα Καμία διάκριση εναντίον ατόμων ή ομάδων ατόμων Καμία διάκριση εναντίον κάποιων τομέων δραστηριοποίησης: Για παράδειγμα, δεν μπορεί να περιορίζει τη χρήση του προγράμματος για την εξυπηρέτηση των αναγκών μιας επιχείρησης ή μιας ερευνητικής ομάδας που εξετάζει ζητήματα γενετικής. Διανομή της άδειας χρήσης Η άδεια χρήσης δεν πρέπει να αφορά μόνο ένα συγκεκριμένο προϊόν Η άδεια χρήσης δεν πρέπει να περιορίζει άλλα λογισμικά Η άδεια χρήσης πρέπει να είναι τεχνολογικά ουδέτερη: Κανένας όρος της άδειας χρήσης δεν πρέπει να επιβάλλει τη χρήση συγκεκριμένων τεχνολογιών ή διεπαφών. 1.2 Πρότυπα Σχεδίασης Στα τέλη της δεκαετίας του 1970 ένας αρχιτέκτονας ονόματι Christopher Alexander επιχείρησε να βρει και να καταγράψει αποδεδειγμένα ποιοτικούς σχεδιασμούς στον τομέα των κατασκευών. Έτσι μελέτησε πολλές διαφορετικές Σελίδα 14 από 84

15 κατασκευές που εξυπηρετούσαν τον ίδιο σκοπό και προσπάθησε να ανακαλύψει κοινά στοιχεία, τα οποία κατηγοριοποίησε σε σχεδιαστικά πρότυπα. Το 1987 ο Kent Beck και ο Ward Cunningham άρχισαν να πειραματίζονται με την ιδέα της εύρεσης σχεδιαστικών προτύπων, η οποία εφαρμόστηκε για πρώτη φορά στη μηχανική λογισμικού και μέχρι τα μέσα της δεκαετίας του '90 η εν λόγω έννοια είχε καθιερωθεί και εξαπλωθεί, προσανατολισμένη πλέον προς τον αντικειμενοστρεφή προγραμματισμό. Στο [10] καταγράφονται 23 πρότυπα που επιλύουν συνήθη προβλήματα στη σχεδίαση λογισμικού. Έχουν οριστεί διάφορες κατηγορίες προτύπων, για διαφορετικά προβλήματα και κάθε κατηγορία περιλαμβάνει πολλαπλά στοιχεία. Έτσι, τα σχεδιαστικά πρότυπα κατηγοριοποιούνται σε κατασκευαστικά, δομικά και συμπεριφορικά. Κατασκευαστικά πρότυπα (Creational Patterns): Τα κατασκευαστικά πρότυπα αφορούν τυποποιημένους τρόπους δυναμικής κατασκευής αντικειμένων κατά τον χρόνο εκτέλεσης. Απώτερος στόχος τους είναι η ανεξαρτητοποίηση του κώδικα που χρησιμοποιεί κάποια αντικείμενα από τις κλάσεις που ορίζουν τα αντικείμενα αυτά και τον τρόπο που κατασκευάζονται στη μνήμη, σύμφωνα με την αρχή ανοιχτής-κλειστής σχεδίασης για ορθή αντικειμενοστρεφή σχεδίαση. Τέτοια κατασκευαστικά πρότυπα είναι το Factory, το Singleton και το Prototype. Δομικά πρότυπα (Structural Patterns): Τα δομικά πρότυπα αφορούν τυποποιημένους τρόπους δυναμικής κατασκευής σύνθετων αντικειμένων τα οποία χρησιμοποιούν υπάρχουσες ιεραρχίες κλάσεων. Τέτοια δομικά πρότυπα είναι το Adapter και το Decorator. Συμπεριφορικά πρότυπα (Behavioural Patterns): Τα συμπεριφορικά πρότυπα αφορούν τον καταμερισμό αρμοδιοτήτων σε διάφορες κλάσεις και τον ορισμό του τρόπου επικοινωνίας μεταξύ των αντικειμένων τους κατά τον χρόνο εκτέλεσης. Σε αντίθεση με τα δομικά πρότυπα, τα συμπεριφορικά βρίσκουν εφαρμογή στον αρχικό σχεδιασμό μίας ιεραρχίας κλάσεων και όχι στην εκ των υστέρων επέκταση κάποιας υπάρχουσας ιεραρχίας. Τέτοια συμπεριφορικά πρότυπα είναι το Strategy, το State, το Observer, το Template και το Visitor. Σελίδα 15 από 84

16 1.2.1 Πρότυπο Decorator Το πρότυπο αυτό επιτρέπει την εύκολη και δυναμική επέκταση της λειτουργικότητας κάποιων υπαρχόντων κλάσεων Α, Β κλπ, οι οποίες υλοποιούν την ίδια διασύνδεση ή κληρονομούν την ίδια αφηρημένη κλάση (έστω Interface), σε χρόνο εκτέλεσης. Αυτό επιτυγχάνεται μέσω μίας νέας κλάσης Decorator, η οποία επίσης υλοποιεί την Interface αλλά περιέχει ως ιδιωτικό πεδίο και μία αναφορά σε ένα στιγμιότυπο του γενικού τύπου Interface (έστω το instance), η οποία τυπικά μεταβιβάζεται ως όρισμα στον κατασκευαστή της Decorator. Έτσι οι μέθοδοι της τελευταίας υλοποιούν εσωτερικά την καινούργια λειτουργικότητα αλλά για τις κοινές εργασίες καλούν τις αντίστοιχες μεθόδους του instance. Κατά τον χρόνο εκτέλεσης θα μπορούσε το αντικείμενο Decorator να κατασκευάζεται με όρισμα οποιοδήποτε στιγμιότυπο τύπου Interface (ακόμα και του ίδιου του Decorator, αν και αυτό δε θα είχε ιδιαίτερο νόημα) ώστε κατά περίπτωση το αντικείμενο να παρέχει τη λειτουργικότητα οποιασδήποτε κλάσης τύπου Interface, είτε της Α είτε κάποιας άλλης, επεκτεταμένης με ένα συγκεκριμένο σύνολο δυνατοτήτων. Με αυτόν τον τρόπο γίνεται εφικτός ένας δυναμικός συνδυασμός λειτουργιών από στοιχειώδεις δομικούς λίθους κατά τον χρόνο εκτέλεσης. Η εναλλακτική σχεδιαστική λύση, χωρίς χρήση κάποιου σχεδιαστικού προτύπου, θα ήταν η απλή κληρονομικότητα, με τον ορισμό κλάσεων οι οποίες επεκτείνουν τις Α, Β κλπ. και προσθέτουν τη νέα λειτουργικότητα. Ωστόσο η λύση αυτή δεν είναι εφικτή σε περίπτωση που οι Α, Β κλπ. δεν μπορούν να επεκταθούν με κληρονομικότητα (π.χ. αν δηλωθούν ως τελικές κλάσεις στην Java), ενώ σε άλλες περιπτώσεις δεν είναι καθόλου πρακτική, π.χ. αν έχουμε πολλαπλά διαφορετικά σύνολα νέων δυνατοτήτων τα οποία πρέπει να συνδυαστούν με τις Α, Β κλπ. Το πρόβλημα έγκειται στο ότι με την κληρονομικότητα όλοι οι πιθανοί συνδυασμοί δυνατοτήτων πρέπει να προβλεφθούν και να ληφθούν υπ όψιν κατά τη συγγραφή του προγράμματος. Αντιθέτως με την κλάση Decorator, η οποία δρα ως περίβλημα (wrapper) άλλων αντικειμένων τύπου Interface προς τα οποία περιέχει αναφορές / Σελίδα 16 από 84

17 δείκτες, η σύνθεση νέων αντικειμένων ουσιαστικά γίνεται δυναμικά ενώ το πρόγραμμα εκτελείται [10]. Γενική Δομή Σχήμα 1: Διάγραμμα κλάσεων προτύπου Decorator Πρότυπο Template Method Το πρότυπο αυτό είναι εκλέπτυνση του Strategy για την περίπτωση που κάθε αλγόριθμος έχει πολλαπλές παραλλαγές οι οποίες διαφέρουν σε ορισμένα βήματα αλλά κάποια άλλα σημεία τους είναι κοινά. Τότε για κάθε αλγόριθμο μπορούμε να ορίσουμε ένα στοιχείο αφαίρεσης Β το οποίο υλοποιεί τη διασύνδεση Α και με τη σειρά του κληρονομείται από πολλές παραλλαγές του αλγορίθμου. Το κάθε Β περιέχει την υλοποίηση των αμετάβλητων βημάτων και, στα σημεία που οι παραλλαγές Σελίδα 17 από 84

18 διαφέρουν, καλεί αφηρημένες προστατευμένες μεθόδους. Οι μέθοδοι αυτές υλοποιούνται διαφορετικά σε κάθε παραλλαγή που κληρονομεί το Β. Το πρότυπο χρησιμοποιείται για τον ορισμό των αμετάβλητων τμημάτων και τη μετάθεση της υλοποίησης των μεταβλητών τμημάτων του αλγόριθμου σε παράγωγες κλάσεις [7]. Γενική Δομή Σχήμα 2: Διάγραμμα κλάσεων προτύπου Template Method Πρότυπο Strategy Το πρότυπο αυτό ενθυλακώνει την κατάσταση ενός αντικειμένου, ώστε να μπορεί να αλλάξει τη συμπεριφορά του, όταν αλλάξει η εσωτερική κατάσταση του αντικειμένου [10]. Όταν είναι διαθέσιμοι πολλαπλοί τρόποι επίλυσης ενός προβλήματος (π.χ. διαφορετικοί αλγόριθμοι), είναι προτιμότερο ο καθένας από αυτούς να μην υλοποιείται μέσα στις κλάσεις-πελάτες που τον χρησιμοποιούν (π.χ. ως ιδιωτική μέθοδος), έτσι ώστε οι πελάτες να έχουν μικρότερη περιπλοκότητα και οι διάφοροι αλγόριθμοι να είναι επαναχρησιμοποιήσιμοι και προσπελάσιμοι από πολλαπλά εξωτερικά προγράμματα. Με το πρότυπο Strategy όλοι οι διαφορετικοί αλγόριθμοι ορίζονται ως ξεχωριστές κλάσεις που υλοποιούν μία κοινή διασύνδεση Α και οι πελάτες διατηρούν ως πεδίο μία αναφορά προς τον αφηρημένο τύπο Α. Στο πεδίο αυτό δίνεται τιμή μέσω του ορίσματος κάποιας μεθόδου του πελάτη (πιθανώς Σελίδα 18 από 84

19 του κατασκευαστή του), έτσι ώστε η ταυτότητα του εκάστοτε χρησιμοποιούμενου αλγορίθμου από όλους τους διαθέσιμους για την εκτέλεση της ζητούμενης εργασίας να είναι εύκολα παραμετροποιημένη, με μία απλή αλλαγή αυτού του ορίσματος κατά την κλήση της προαναφερθείσας μεθόδου. Γενική Δομή Σχήμα 3: Διάγραμμα κλάσεων προτύπου Strategy 1.3 Μετρικές Ποιότητας Λογισμικού σε Επίπεδο Σχεδίασης Σε αυτή την ενότητα γίνεται μια περιγραφή ενός βελτιωμένου ιεραρχικού μοντέλου για την αξιολόγηση των χαρακτηριστικών ποιότητας υψηλού επιπέδου στην αντικειμενοστρεφή σχεδίαση. Σ αυτό το μοντέλο, οι ιδιότητες σχεδιασμού των κλάσεων, των αντικειμένων και οι συσχετίσεις τους αξιολογούνται με τη χρήση μετρικών αντικειμενοστεφούς σχεδίασης. Αυτό το μοντέλο συσχετίζει ιδιότητες σχεδιασμού όπως είναι η ενθυλάκωση(encapsulation), η σύζευξη (coupling) και η συνοχή (cohesion) με χαρακτηριστικά ποιότητας υψηλού επιπέδου όπως η επαναχρησιμοποίηση(reusability), η ευελιξία(flexibility), και η πολυπλοκότητα (complexity) χρησιμοποιώντας πληροφορίες από άλλες εμπειρικές μελέτες. Σελίδα 19 από 84

20 1.3.1 Ανάπτυξη Μοντέλων Ποιότητας Τα πιο πρόσφατα μοντέλα ποιότητας αναπτύχθηκαν από τον Dromey. Εξετάζει μερικά προβλήματα των προηγούμενων μοντέλων ποιότητας όπως του McCall και του ISO Το πλαίσιο εργασίας είναι μια μεθοδολογία για την ανάπτυξη των μοντέλων ποιότητας «από κάτω προς τα πάνω», παρέχοντας μια προσέγγιση που εξασφαλίζει ότι οι λεπτομέρειες χαμηλού επιπέδου είναι καλά ορισμένες και υπολογίσιμες. Το πλαίσιο εργασίας του μοντέλου που προτείνει ο Dromey, όπως και τα προηγούμενα μοντέλα, βασίζεται στη διάσπαση των χαρακτηριστικών ποιότητας σε αντιληπτές ιδιότητες ποιότητας των τμημάτων ενός προϊόντος(απαιτήσεις, σχεδιασμός και υλοποίηση). Υπάρχουν τρία στοιχεία στο γενικό μοντέλο ποιότητας του Dromey: οι ιδιότητες προϊόντος που επηρεάζουν την ποιότητα, κάποια χαρακτηριστικά ποιότητας υψηλού επιπέδου και ένα μέσο διασύνδεσης τους. Αυτή η μεθοδολογία χρησιμοποιείται για την ανάπτυξη του Ιεραρχικού Μοντέλου για την Αξιολόγηση Ποιότητας Αντικειμενοστραφούς Σχεδιασμού (Quality Model for Object- Oriented Design, QMOOD) που επεκτείνει το γενικό μοντέλο ποιότητας του Dromey και περιλαμβάνει τα βήματα που φαίνονται στο Σχήμα 4 τα οποία και αναλύονται παρακάτω. Σχήμα 4: Επίπεδα και σχέσεις στο QMOOD Το σχήμα 1 δείχνει τα τέσσερα επίπεδα ( μέχρι ) και τις τρεις συσχετίσεις (,, ) που χρησιμοποιούνται για να συνδέσουν τα τέσσερα επίπεδα στο QMOOD. Μετά τον καθορισμό των επιπέδων πρέπει να προσδιοριστούν και τα ποιοτικά χαρακτηριστικά όπως είναι οι αντικειμενοστρεφείς σχεδιαστικές μετρικές, τα Σελίδα 20 από 84

21 αντικειμενοστρεφή σχεδιαστικά συστατικά και ο καθορισμός των συσχετίσεων, που απαιτεί την σύνδεση του χαμηλότερου επιπέδου με το αμέσως επόμενο υψηλότερο επίπεδο Προσδιορισμός Χαρακτηριστικών Ποιότητας Σχεδιασμού ( ) Τα χαρακτηριστικά ποιότητας που χρησιμοποιούνται στο Πρότυπο ISO 9126 (λειτουργικότητα (functionality), αξιοπιστία (reliability), αποδοτικότητα (efficiency), χρηστικότητα (usability), συντηρισιμότητα (maintainability) και μεταφερσιμότητα (portability)) επιλέχθηκαν ως το αρχικό σύνολο χαρακτηριστικών ποιότητας στο μοντέλο QMOOD, για να δούμε αν συμβάλουν στον καθορισμό της ποιότητας και αν το σύνολο τους είναι αρκετά ευρύ ώστε να περιλαμβάνει όλες τις πτυχές της ποιότητας σχεδιασμού. Τα χαρακτηριστικά αξιοπιστία (reliability) και χρηστικότητα (usability) εξαιρέθηκαν από το σύνολο γιατί βασίζονται κυρίως στην υλοποίηση και όχι στον σχεδιασμό. Ο όρος μεταφερσιμότητα (portability) είναι πιο κατάλληλος για το πλαίσιο της εφαρμογής της ποιότητας του λογισμικού και αντικαταστάθηκε από τον όρο επεκτασιμότητα (extendibility), που αντικατοπτρίζει καλύτερα τα χαρακτηριστικά σχεδίασης. Επίσης ο όρος συντηρισιμότητα (maintainability) προϋποθέτει την ύπαρξη ενός προϊόντος λογισμικού και αντικαταστάθηκε από τον όρο «κατανόηση» (understandability), διότι επικεντρώνεται καλύτερα στα χαρακτηριστικά της σχεδίασης. Ένας σημαντικός λόγος υιοθέτησης της αντικειμενοστρεφούς σχεδίασης ήταν η ικανότητα σχεδιασμού αξιόπιστων, προσαρμόσιμων και ευέλικτων συστημάτων λογισμικού, πολύ γρήγορα. Ένας τρόπος για την επίτευξη αυτού του στόχου ήταν η επαναχρησιμοποίηση σε όλα τα επίπεδα της σχεδίασης. Αυτό δικαιολογεί την ένταξη της «επαναχρησιμοποίησης» ως ένα πολύ σημαντικό χαρακτηριστικό ποιότητας στον αντικειμενοστρεφή σχεδιασμό. Η «ευελιξία» (flexibility) των συστημάτων λογισμικού αποτελεί επίσης ένα σημαντικό χαρακτηριστικό ανάπτυξης και τελικού-χρήστη. Για να μπορέσει το χαρακτηριστικό αυτό να αποτελεί μέρος των χαρακτηριστικών ποιότητας πρέπει να καθοριστεί στη φάση σχεδιασμού με την ενσωμάτωση των αρχιτεκτονικών λογισμικού. Αποφασίστηκε λοιπόν να συμπεριληφθεί το χαρακτηριστικό «ευελιξία» Σελίδα 21 από 84

22 ως ένα από τα χαρακτηριστικά ποιότητας στο μοντέλο του σχεδιασμού. Μ αυτόν τον τρόπο το αρχικό σύνολο των χαρακτηριστικών ποιότητας στο QMOOD διαμορφώνεται ως εξής : «λειτουργικότητα», «επεκτασιμότητα», «ικανότητα κατανόησης», «αποτελεσματικότητα», «επαναχρησιμοποίηση» και «ευελιξία». Προκύπτει ότι το σύνολο αυτών των χαρακτηριστικών είναι αρκετά ευρύ για να επιτρέπει τον προσδιορισμό των επιθυμητών χαρακτηριστικών αντικειμενοστρεφών συστημάτων. Tο σύνολο των χαρακτηριστικών δεν είναι απόλυτο μπορεί εύκολα να αλλάξει προκειμένου να αντιμετωπίσει διαφορετικούς στόχους και σκοπούς. Τα χαρακτηριστικά ποιότητας είναι αφηρημένες έννοιες και δεν είναι άμεσα παρατηρήσιμες, επίσης δεν υπάρχουν καθολικά αποδεκτοί ορισμοί για τα χαρακτηριστικά ποιότητας του QMOOD. Πίνακας 1 - Ορισμοί Χαρακτηριστικών Ποιότητας Χαρακτηριστικά Ποιότητας Ορισμός Reusability Αντανακλά την παρουσία αντικειμενοστραφών χαρακτηριστικών σχεδιασμού που επιτρέπουν σε ένα σχεδιασμό να επαναλαμβάνεται σε ένα νέο πρόβλημα χωρίς σημαντική προσπάθεια Flexibility Χαρακτηριστικά που επιτρέπουν την ενσωμάτωση αλλαγών σε ένα σχεδιασμό. Η ικανότητα ενός σχεδιασμού που πρέπει να προσαρμόζεται για να παρέχει λειτουργικά σχετικές ικανότητες. Understandability Οι ιδιότητες του σχεδιασμού που επιτρέπουν εύκολα να μάθουν και να κατανούν. Αυτό σχετίζεται άμεσα με την πολυπλοκότητα της δομής του σχεδιασμού. Functionality Οι ευθύνες αποδίδονται στις κλάσεις ενός σχεδιασμού, οι οποίες διατίθενται από τις κλάσεις μέσω των δημοσίων διασυνδέσεων τους. Extendibility Αναφέρεται στην παρουσία και τη χρήση των ιδιοτήτων σε έναν υπάρχοντα σχεδιασμό, που επιτρέπουν την ενσωμάτωση νέων απαιτήσεων στο σχεδιασμό. Effectiveness Αναφέρεται στην ικανότητα ενός σχεδιασμού να πετύχει την Σελίδα 22 από 84

23 επιθυμητή λειτουργικότητα και τη συμπεριφορά χρησιμοποιώντας αντικειμενοστραφή έννοιες και τεχνικές του σχεδιασμού Προσδιορισμός των ιδιοτήτων Αντικειμενοστρεφούς Σχεδιασμού ( ) Οι ιδιότητες σχεδιασμού είναι αντιληπτές και μπορούν άμεσα να αξιολογηθούν εξετάζοντας την εσωτερική και εξωτερική δομή, τις σχέσεις, την λειτουργικότητα των συστατικών σχεδιασμού, των χαρακτηριστικών, των μεθόδων και των κλάσεων. Η εκτίμηση του ορισμού κλάσης για τις εξωτερικές σχέσεις (τύπος κληρονομικότητας) με τις άλλες κλάσεις και η εξέταση των εσωτερικών συστατικών, χαρακτηριστικών και μεθόδων του, αποκαλύπτει σημαντικές πληροφορίες που αντικειμενικά περιγράφουν τα δομικά και λειτουργικά χαρακτηριστικά της κλάσης και των αντικειμένων της. Οι ιδιότητες σχεδιασμού της αφαίρεσης (abstraction), ενσωμάτωσης (encapsulation), σύζευξης (coupling), συνοχής (cohesion), πολυπλοκότητας (complexity), και του μεγέθους σχεδίου (design size) χρησιμοποιούνται ως ιδιότητες που αντιπροσωπεύουν τα χαρακτηριστικά ποιότητας σχεδιασμού σε δομημένο και αντικειμενοστρεφές περιβάλλον. Η μετάδοση των μηνυμάτων (messaging), η σύνθεση (aggregation), η κληρονομικότητα(inheritance), ο πολυμορφισμός (polymorphism) καθώς και οι ιεραρχίες των κλάσεων (hierarchies) αντιπροσωπεύουν νέες σχεδιαστικές έννοιες που παρουσιάζονται στο αντικειμενοστρεφές μοντέλο και είναι ζωτικής σημασίας για την ποιότητα και τον αντικειμενοστρεφή σχεδιασμό. Η αρχική έκδοση του QMOOD περιλαμβάνει και τα δύο σύνολα των ιδιοτήτων όπως ορίζονται στον Πίνακα 2. Πίνακας 2- Ορισμοί Ιδιοτήτων Σχεδιασμού Ιδιότητες Σχεδιασμού Design Size Ορισμός Ένα μέτρο για τον αριθμό των κλάσεων που συμμετέχουν στο σχεδιασμού. Σελίδα 23 από 84

24 Hierarchies Οι ιεραρχίες χρησιμοποιούνται για να αντιπροσωπεύουν διαφορετικές γενικευμένες - εξειδικευμένες έννοιες σε ένα σχεδιασμό. Είναι μία μέτρηση του αριθμού των μηκληρονομούντων κλάσεων που έχουν παιδιά σε ένα σχεδιασμό. Abstraction Ένα μέτρο για την γενικευμένη-εξειδικευμένη πτυχή του σχεδιασμού. Οι κλάσεις του σχεδιασμού που έχουν έναν ή περισσότερους απογόνους εμφανίζουν αυτή την ιδιότητα της αφαίρεσης. Encapsulation Oρίζεται ως η πλαστικοποιήση των δεδομένων και η συμπεριφορά σε ένα ενιαίο κατασκεύασμα.στον αντικειμενοστρεφή σχεδιασμό η ιδιότητα αναφέρεται συγκεκριμένα στο σχεδιασμό των κλάσεων που εμποδίζει την πρόσβαση στις δηλώσεις των χαρακτηριστικών ορίζοντας τους να είναι ιδιωτικά, προστατεύοντας έτσι την εσωτερική αναπαράσταση των αντικειμένων. Coupling Kαθορίζει την αλληλεξάρτηση ενός αντικειμένου με άλλα αντικείμενα σε ένα σχεδιασμό.είναι ένα μέτρο για τον αριθμό των άλλων αντικειμένων που θα πρέπει να είναι προσβάσιμα από ένα άλλο αντικείμενο προκειμένου το εν λόγω αντικείμενο να λειτουργήσει σωστά. Cohesion Αξιολογεί την συνάφεια των μεθόδων και των ιδιοτήτων σε μια κλάση. Ισχυρή επικάλυψη των παραμέτρων της μεθόδου και των τύπων του χαρακτηριστικού σε μια ένδειξη ισχυρής συνοχής. Composition Mετρά τις «μέρος-του", "έχει", "αποτελείται από", ή "μέρος-όλο» σχέσεις, οι οποίες είναι οι σχέσεις συνάθροισης σε ένα αντικειμενοστραφή σχεδιασμό. Inheritance Ένα μέτρο της "is a" σχέση μεταξύ των κλάσεων. Αυτή η σχέση σχετίζεται με το επίπεδο ένθεσης των κλάσεων σε μια ιεραρχία κληρονομικότητας. Polymorphism Η ικανότητα να αντικαταστήσει τα αντικείμενα των οποίων οι διασυνδέσεις τους ταιριάζουν σε ένα άλλο κατά το χρόνο εκτέλεσης. Είναι ένα μέτρο των υπηρεσιών που καθορίζεται δυναμικά κατά το χρόνο εκτέλεσης σε ένα αντικείμενο. Messaging Μία μέτρηση του αριθμού των δημόσιων μεθόδων που είναι Σελίδα 24 από 84

25 Complexity διαθέσιμες ως υπηρεσίες σε άλλες κλάσεις. Αυτό είναι ένα μέτρο των υπηρεσιών που παρέχει μία κλάση. Ένα μέτρο του βαθμού δυσκολίας στην κατανόηση της εσωτερικής και εξωτερικής δομής των κλάσεων και των σχέσεων Προσδιορισμός των Μετρικών Αντικειμενοστρεφούς Σχεδιασμού( ) Όλες οι ιδιότητες που προσδιορίζονται στο μοντέλο QMOOD αντιπροσωπεύουν μια ιδιότητα ή ένα χαρακτηριστικό σχεδιασμού που ορίζεται χρησιμοποιώντας καλά ορισμένες μετρικές κατά τη διάρκεια της φάσης σχεδίασης. Για τον αντικειμενοστρεφή σχεδιασμό, αυτή η πληροφορία θα πρέπει να περιλαμβάνει τον ορισμό των κλάσεων, τις ιεραρχίες των κλάσεων, και τις δηλώσεις των μελών των κλάσεων. Οι έρευνες για τις ήδη υπάρχουσες μετρικές αποκαλύπτουν ότι, υπάρχουν πολλές μετρικές που μπορούν να διαμορφωθούν και να χρησιμοποιηθούν στην αξιολόγηση μερικών ιδιοτήτων σχεδιασμού, όπως η αφαίρεση, η κληρονομικότητα και η ανταλλαγή μηνυμάτων. Ωστόσο, υπάρχουν πολλές άλλες ιδιότητες σχεδιασμού, όπως είναι η ενσωμάτωση και η σύνθεση, για τις οποίες δεν υπάρχουν αντικειμενοστρεφείς μετρικές. Ακόμη, ενώ οι μετρικές για την αξιολόγηση της πολυπλοκότητας, της συνοχής και της σύζευξης έχουν ήδη οριστεί, αυτές οι μετρικές απαιτούν σχεδόν ολοκληρωμένη υλοποίηση κλάσεων πριν μπορέσουν να υπολογιστούν, και γι αυτό δεν μπορούν να χρησιμοποιηθούν στο QMOOD. Αυτό οδηγεί στον προσδιορισμό πέντε νέων μετρικών, μετρική πρόσβασης δεδομένων (Data Access Metric (DAM)), Μετρική άμεσης σύζευξης (direct class coupling metric (DCC)), μετρική συνοχής μεταξύ μεθόδων μιας κλάσης (cohesion among methods of class metric (CAM)), μετρική μέτρησης της συσσώρευσης (measure of aggregation metric (MOA)), και η μετρική μέτρησης της λειτουργικής αφαίρεσης (measure of functional abstraction metric MFA), και μπορούν να υπολογιστούν από τις πληροφορίες σχεδιασμού μόνο. Το σύνολο αυτών των μετρικών που χρησιμοποιείται στο QMOOD περιγράφεται στον Πίνακα 3. Σελίδα 25 από 84

26 Πίνακας 3- Περιγραφή Μετρικών Σχεδιασμού Μετρικές Όνομα Περιγραφή DSC Design Size in Classes Είναι μια μετρική που μετράει τον συνολικό αριθμό των κλάσεων στον σχεδιασμό. NOH Number of Hierarchies Είναι μια μετρική που μετράει τον αριθμό των ιεραρχιών μιας κλάσης στον σχεδιασμό. ANA Average Number Αυτή η μετρική τιμή υποδηλώνει το μέσο αριθμό των of Ancestors κλάσεων από τις οποίες μια κλάση κληρονομεί πληροφορίες. Υπολογίζεται με τον προσδιορισμό του αριθμού των κλάσεων κατά μήκος όλων των διαδρομών από την κλάση(εις) ρίζα σε όλες τις κλάσεις, σε μια δομή κληρονομικότητας. DAM Data Access Αυτή η μετρική είναι ο λόγος του αριθμού των ιδιωτικών Metric (προστατευμένων) χαρακτηριστικών για το συνολικό αριθμό των χαρακτηριστικών που δηλώθηκαν στην κλάση. Μια υψηλή τιμή για DAM είναι επιθυμητή.(0,1) DCC Direct Class Coupling Είναι μια μετρική που μετράει τους διαφορετικούς αριθμούς των κλάσεων που είναι άμεσα συνδεδεμένη με μια κλάση. Περιλαμβάνει κλάσεις που σχετίζονται άμεσα με τις δηλώσεις των χαρακτηριστικών και περνώντας το μήνυμα στις μεθόδους. CAM Cohesion Among Η μετρική υπολογίζει την σχετικότητα μεταξύ των μεθόδων Methods of Class μιας κλάσης η οποία βασίζεται στον κατάλογο παραμέτρων των μεθόδων. Η μετρική υπολογίζεται χρησιμοποιώντας το άθροισμα της τομής των παραμέτρων μιας μεθόδου με το μέγιστο ανεξάρτητο σύνολο όλων των τύπων παραμέτρων στην κλάση. Μια μετρική τιμή προτιμάται κοντά στο 1. (0,1) MOA Measure of Aggregation Αυτή η μετρική μέτρα την έκταση της «part-whole» σχέσης, πραγματοποιώντας την με τη χρήση των ιδιοτήτων. Υπολογίζει τον αριθμό των δηλωμένων δεδομένων των οποίων οι τύποι τους που ορίζονται από τον χρήστη στις κλάσεις. Σελίδα 26 από 84

27 MFA NOP CIS NOM Measure of Functional Abstraction Number of Polymorphic Methods Class Interface Size Number of Methods Αυτή η μετρική είναι ο λόγος του αριθμού των μεθόδων που κληρονομούνται από μια κλάση με τον συνολικό αριθμό των μεθόδων ποτ είναι προσβάσιμες από μεθόδους μέλη της κλάσης.(0,1) Είναι μια μετρική που μετράει τον αριθμό των μεθόδων που μπορούν να παρουσιάζουν πολυμορφική συμπεριφορά. Τέτοιες μέθοδοι στην C++ λέγονται virtual. Αυτή η μετρική μετράει τον αριθμό των δημόσιων μεθόδων σε μια κλάση. Αυτή η μετρική μετράει όλες τις μεθόδους που υπάρχουν σε μια κλάση Προσδιορισμός Συστατικών Αντικειμενοστρεφούς Σχεδιασμού( ) Τα συστατικά σχεδιασμού που είναι αναγνωρίσιμα και προσδιορίζουν την αρχιτεκτονική της αντικειμενοστρεφής σχεδίασης είναι τα αντικείμενα, οι κλάσεις καθώς και οι σχέσεις που έχουν μεταξύ τους. Τα αντικείμενα ενσωματώνουν τις δομές δεδομένων που αντιπροσωπεύουν τις ιδιότητες της κλάσης. Ένα σύνολο από λειτουργίες (μέθοδοι) που ορίζονται στις κλάσεις μπορούν να διαχειριστούν τα δεδομένα που είναι ενσωματωμένα στο αντικείμενο. Η ποιότητα του αντικειμένου καθορίζεται από τα συστατικά του, δηλαδή ιδιότητες, μεθόδους, και άλλα αντικείμενα (σύνθεση). Άλλο συστατικό που μπορεί να προσδιοριστεί είναι οι γενικές-ειδικές δομές ή οι ιεραρχίες των κλάσεων που οργανώνουν τις κλάσεις που σχετίζονται. Επιπλέον ένα σύνολο συστατικών που μπορεί να βοηθήσει στην ανάλυση, υλοποίηση και αναπαράσταση ενός αντικειμενοστρεφούς σχεδιασμού πρέπει να περιλαμβάνει ιδιότητες, μεθόδους, αντικείμενα (κλάσεις), σχέσεις και ιεραρχίες κλάσεων. Γενικά, όλες οι γλώσσες αντικειμενοστρεφούς προγραμματισμού παρέχουν συντακτική δομή για τα θεμελιώδη συστατικά σχεδίασης. Από τη στιγμή που οι αντικειμενοστρεφείς γλώσσες προγραμματισμού (C++) χρησιμοποιούνται για την Σελίδα 27 από 84

28 σχεδίαστική αναπαράσταση, γι αυτό και η ποιότητα σχεδιασμού μπορεί εύκολα να πραγματοποιηθεί με την αξιολόγηση αυτών των αυτόματα ανιχνεύσιμων συστατικών Αναγνώριση Ιδιοτήτων Ποιότητας για κάθε Συστατικό Όταν φτάσουμε στο σύνολο των ιδιοτήτων ποιότητας για κάθε συστατικό σχεδίασης τότε αυτό θεωρείται ότι είναι μια εμπειρική διαδικασία. Η διαδικασία καθοδηγείται από ένα σύνολο ερωτήσεων, όπως: «Τι ρόλο παίζει το συστατικό στη σχεδίαση;», «Ποια είναι η σημασία των συστατικών στη σχεδίαση;», «Ποιες οι διαφορετικές μορφές που έχει το συστατικό;». Οι πληροφορίες αυτές είναι απαραίτητες για την αξιολόγηση των ιδιοτήτων και πρέπει να είναι διαθέσιμες κατά τη διάρκεια της φάσης σχεδιασμού. Επίσης πρέπει να υπάρχουν πολλές πληροφορίες στην αναπαράσταση των συστατικών για την αναγνώριση και την αξιολόγηση των ιδιοτήτων ποιότητας, με σαφή τρόπο. Τα χαρακτηριστικά είναι τα θεμελιώδη στοιχεία στον προσδιορισμό ενός αντικειμένου και η δήλωσή τους υποστηρίζεται άμεσα στις αντικειμενοστρεφείς γλώσσες προγραμματισμού. Το σύνολο των ιδιοτήτων επηρεάζουν άμεσα την ποιότητα ενός αντικειμένου, και επιπλέον την συνολική ποιότητα σχεδίασης και πρέπει να περιλαμβάνουν: όνομα, ενσωμάτωση, μέγεθος, τύπους, σχέσεις και δυνατότητα απαρίθμησης. Οι δηλώσεις μεθόδων επίσης υποστηρίζονται άμεσα στις γλώσσες προγραμματισμού. Οι ιδιότητες των μεθόδων επηρεάζουν την ποιότητα μιας κλάσης είτε άμεσα είτε έμμεσα, γι αυτό και οι δηλώσεις πρέπει να περιλαμβάνουν: όνομα, ενσωμάτωση, τύπους παραμέτρων, μηχανισμούς περάσματος παραμέτρων, αριθμό παραμέτρων και ανάλυση. Οι κλάσεις στις αντικειμενοστρεφείς γλώσσες περιγράφονται με τη συντακτική δομή για να είναι εύκολα αναγνωρίσιμες. Το σύνολο ιδιοτήτων που μπορεί να επηρεάσουν τη συνολική ποιότητα σχεδιασμού περιλαμβάνουν : όνομα, τύπους κληρονομικότητας και ενσωμάτωσης, αριθμός των γονέων, αριθμός των παιδιών, βάθος κληρονομικότητας, μέγεθος κλάσης, αριθμό μεθόδων και ιδιοτήτων, αριθμό εσωτερικών λειτουργιών, σύζευξη και συνοχή. Σελίδα 28 από 84

29 Σύνδεση των Ιδιοτήτων Ποιότητας με τις Ιδιότητες Σχεδιασμού ( ) Οι ιδιότητες ποιότητας αντικειμένων ταξινομούνται με βάση τις ιδιότητες σχεδιασμού που επηρεάζουν. Έτσι παρόλο που το σύνολο των ιδιοτήτων ποιότητας των θεμελιωδών συστατικών (ιδιότητες, μέθοδοι και κλάσεις) είναι μεγάλο, είναι και ιδιαίτερα επικαλυπτόμενο. Για παράδειγμα, οι ιδιότητες, οι μέθοδοι και τα συστατικά της κλάσης έχουν ένα όνομα που αναφέρονται στις ιδιότητες ποιότητας. Όταν το όνομα είναι αυτό-περιγραφικό βοηθά στην καλύτερη κατανόηση και κατά συνέπεια επηρεάζει και την πολυπλοκότητα του σχεδιασμού. Οι ιδιότητες ποιότητας όπως είναι η ενθυλάκωση, αναγνωρίζεται για τις ιδιότητες, μεθόδους, και κλάσεις, και είναι ίδια με την γενική ιδιότητα ενθυλάκωσης. Παρόμοια, οι υπόλοιπες ιδιότητες ποιότητας που έχουν μείνει και προσδιορίζονται για τις ιδιότητες, μεθόδους και κλάσεις μπορούν να ομαδοποιηθούν σε ένα μικρότερο σύνολο έντεκα θεμελιωδών ιδιοτήτων που περιγράφονται στον Πίνακα Εφαρμογή Μετρικών Σχεδιασμού στις Ιδιότητες Σχεδιασμού ( ) Οι μετρικές Design Size in Classes (DSC) και Number of Hierarchies (NOH) χρησιμοποιούνται για την αξιολόγηση των δύο ιδιοτήτων σχεδιασμού Design Size και Hierarchies στο QMOOD. Η αφαίρεση αναφέρεται στην γενική-ειδική δομή του σχεδιασμού και αξιολογείται από τη μετρική Average Number of Ancestors (ANA). Ο ορισμός της ιδιότητας ενθυλάκωσης στον Πίνακα 2 αναφέρει την πρόσβαση ελέγχου του χαρακτηριστικού των δηλώσεων στην κλάση η οποία αντικατοπτρίζεται στην περιγραφή της μετρικής Data Access Metric (DAM). Η μετρική Direct Class Coupling (DCC) είναι μια μέτρηση των κλάσεων που απευθείας σχετίζονται με την κλάση και επιπλέον χρησιμοποιείται για την αξιολόγηση της Σύζευξης μιας ιδιότητας σχεδιασμού. Oι μετρικές Cohesion among method of class (CAM), Measure of Aggregation (MOA), και Class Interface Size χρησιμοποιούνται για την μέτρηση των ιδιοτήτων Cohesion, Aggregation και Messaging. Η κληρονομικότητα αναφέρεται στον βαθμό της επαναχρησιμοποίησης της λειτουργικότητας (μπορεί να μετρηθεί από την μετρική Measure of Functional Abstraction, MFA ) και μπορεί να επιτευχθεί με την δημιουργία των υποκλάσεων της Σελίδα 29 από 84

30 υπάρχουσας κλάσης και κατά συνέπεια η μετρική MFA χρησιμοποιήθηκε για να μετρήσει την ιδιότητα της κληρονομικότητας στο QMOOD. Για τον αντικειμενοστρεφή σχεδιασμό που παρουσιάζεται στο συντακτικό της γλώσσας C++, η ιδιότητα σχεδιασμού Πολυμορφισμός είναι η μέτρηση των Εικονικών μεθόδων μιας κλάσης και αξιολογείται από την μετρική Number of Polymorphic Methods(NOP). Η μετρική Αριθμός των Μεθόδων (Number of Methods NOC) χρησιμοποιήθηκε για να μετρήσει την πολυπλοκότητα της κλάσης από τους Chidamber και Kemerer στην μετρική Weighted Methods Per Class (WMC). Όταν όλες οι μέθοδοι είναι εξίσου σταθμισμένες, η μετρική WMC έχει ίδια μέτρηση με την Number of Methods NOM στην κλάση. Ο Πίνακας 4 συνοψίζει τις μετρικές σχεδιασμού που χρησιμοποιούνται για να αξιολογήσουν τις έντεκα ιδιότητες σχεδιασμού του Πίνακα 3. Πινακας 4 - Μετρικές Σχεδιασμού για τις Ιδιότητες Σχεδιασμού Ιδιότητες Σχεδιασμού Design Size Hierarchies Abstraction Encapsulation Coupling Cohesion Composition Inheritance Polymorphism Messaging Complexity Μετρικές Σχεδιασμού Design Size in Classes (DSC) Number of Hierarchies (NOH) Average Number of Ancestors (ANA) Data Access Metric (DAM) Direct Class Coupling (DCC) Cohesion Among Methods of Class (CAM) Measure of Aggregation (MOA) Measure of Functional Abstraction (MFA) Number of Polymorphic Methods (NOP) Class Interface Size (CIS) Number of Methods (NOM) Σελίδα 30 από 84

31 Σύνδεση Ιδιοτήτων Σχεδιασμού με τα Χαρακτηριστικά Ποιότητας ( ) Υπάρχουν διάφορες απόψεις για το πως οι ιδιότητες σχεδιασμού μπορούν να επηρεάσουν την ποιότητα σχεδίασης γι αυτό το λόγο πραγματοποιήθηκε μια εκτενή ανασκόπηση δημοσιεύσεων και βιβλίων αντικειμενοστρεφούς ανάπτυξης. Οι πληροφορίες από αυτήν την ανασκόπηση δείχνουν ότι η ιδιότητα αφαίρεσης έχει σημαντική επιρροή στα παρακάτω χαρακτηριστικά ποιότητας σχεδιασμού: ευελιξία (flexibility), αποτελεσματικότητα (effectiveness), λειτουργικότητα (functionality), και επεκτασιμότητα (extendibility). Η ενθυλάκωση (encapsulation) θεωρήθηκε κατάλληλη για την ευελιξία (flexibility), την επαναχρησιμοποίηση (reusability) και την ικανότητα κατανόησης (understandability). Ενώ η χαμηλή σύζευξη (coupling) θεωρήθηκε κατάλληλη για την επεκτασιμότητα(extendibility), την ικανότητα κατανόησης (understandability) και την επαναχρησιμοποίηση (reusability). Οι υψηλότερες τιμές της σύζευξης επηρεάζουν αρνητικά αυτά τα ποιοτικά χαρακτηριστικά. Η συνοχή (Cohesion) βλέπουμε ότι έχει σημαντική επιρροή στην επαναχρησιμοποίηση και στην ικανότητα κατανόησης του σχεδιασμού. Τα αντικείμενα επικοινωνούν με την ανταλλαγή μηνυμάτων και επιπλέον η απευθείας μετάδοση μηνυμάτων επηρεάζει την λειτουργικότητα και την αποτελεσματικότητα και βοηθά στην προώθηση της επαναχρησιμοποίησης. Ενώ η χρήση της κληρονομικότητας προωθεί την εσωτερική επαναχρησιμοποίηση, την λειτουργικότητα, την επεκτασιμότητα και την αποτελεσματικότητα, έχει την δυνατότητα να επηρεάσει αρνητικά την ευελιξία και την ικανότητα κατανόησης. Ομοίως, ενώ η προσεκτική χρήση της σύνθεσης αντικειμένων μπορεί σημαντικά να αυξήσει την εσωτερική επαναχρησιμοποίηση, την λειτουργικότητα και την ευελιξία, η υπερβολική και η λανθασμένη χρήση της μπορεί να κάνει τον σχεδιασμό δύσκολο στην κατανόηση. Η χρήση της σύνθεση μπορεί επίσης να επηρεάσει την αποτελεσματικότητα και την επεκτασιμότητα. Ενώ η χρήση του πολυμορφισμού μπορεί να αυξήσει τις ιδιότητες σχεδιασμού όπως ευελιξία, επεκτασιμότητα, αποτελεσματικότητα και λειτουργικότητα, μπορεί επίσης να κάνει τον Σελίδα 31 από 84

32 σχεδιασμό δύσκολο στην κατανόηση. Η πολυπλοκότητα (complexity) είναι ένας δείκτης της κατανόησης του σχεδιασμού. Γενικά, όσο πιο πολύπλοκος είναι ο σχεδιασμός, τόσο πιο δύσκολη είναι η κατανόησή του. Ο Πίνακας 5 δείχνει την επιρροή της κάθε ιδιότητας σχεδιασμού στα χαρακτηριστικά της ποιότητας. Το βέλος προς τα πάνω ( ) δείχνει ότι η ιδιότητα σχεδιασμού έχει θετική επιρροή στα χαρακτηριστικά ποιότητας. Πίνακας 5- Σχέσεις Ιδιοτήτων Σχεδιασμού Reusability Flexibility Understandability Functionality Extendibility Effectiveness Design Size Hierarchies Abstraction Encapsulation Coupling Cohesion Composition Inheritance Polymorphism Messaging Complexity Απόδοση Βαρύτητας στη Συσχέτιση Σχεδιαστικών Ιδιοτήτων και Ποιότητας Η σημαντικότητα της συσχέτισης για τις μεμονωμένες ιδιότητες σχεδιασμού που επηρεάζουν τα χαρακτηριστικά ποιότητας (Πίνακας 5), σταθμίζεται αναλογικά έτσι ώστε οι υπολογίσιμες τιμές όλων των χαρακτηριστικών ποιότητας να έχουν το ίδιο εύρος. Το εύρος από το 0 μέχρι το ±1 επιλέχθηκε για να υπολογίσει τις τιμές των χαρακτηριστικών ποιότητας. Οι αρχικές τιμές ανάθεσης βαρών ήταν +1 ή +0.5 και χρησιμοποιήθηκαν για την θετικές επιρροές, ενώ η τιμή -1 ή -0.5 για τις αρνητικές Σελίδα 32 από 84

33 επιρροές. Όμως οι τιμές αυτές άλλαξαν για να εξασφαλιστεί ότι στο άθροισμα των νέων τιμών όλων των ιδιοτήτων σχεδιασμού που επηρεάζουν τα χαρακτηριστικά ποιότητας προστέθηκε το ±1. Τα αποτελέσματα φαίνονται στον Πίνακα 6. Επιλέχθηκε γιατί ήταν απλό και εύκολο στην εφαρμογή. Πίνακας 6 Ορισμοί Χαρακτηριστικών Ποιότητας Χαρακτηριστικά Ποιότητας Reusability Υπολογισμός Εξίσωσης * Coupling * Cohesion * Messaging Design Size Flexibility 0.25 * Encapsulation 0.25 * Coupling * Composition * Polymorphism Understandability * Abstraction * Encapsulation 0.33 * Coupling * Cohesion 0.33 * Polymorphism 0.33 * Complexity 0.33 * Design Size Functionality 0.12 * Cohesion * Polymorphism * Messaging * Design Size * Hierarchies Extendability 0.5 * Abstraction 0.5 * Coupling * Inheritance * Polymorphism Effectiveness 0.2 * Abstraction * Encapsulation * Composition * Inheritance * Polymorphism Βελτίωση και Προσαρμογή του Μοντέλου Το μοντέλο ποιότητας QMOOD επιτρέπει να γίνονται εύκολα αλλαγές έτσι ώστε να προσαρμόζεται σε διαφορετικές αναθέσεις βαρών, καινούριους σκοπούς και στόχους. Στο χαμηλό επίπεδο, οι μετρικές που χρησιμοποιούνται για την αξιολόγηση των ιδιοτήτων σχεδιασμού μπορεί να αλλάξουν, ή ακόμη ένα σύνολο ιδιοτήτων σχεδιασμού μπορεί να χρησιμοποιηθεί για την αξιολόγηση χαρακτηριστικών ποιότητας, επίσης και το σύνολο των χαρακτηριστικών ποιότητας μπορεί επίσης να υποστεί αλλαγές. Οι σχέσεις επιρροής που υπάρχουν στις ιδιότητες σχεδιασμού και στα χαρακτηριστικά ποιότητας, καθώς και οι αναθέσεις βαρών ενδέχεται να αλλάξουν προκειμένου να ανταποκρίνονται στους στόχους και στην πολιτική του κάθε οργανισμού. Σελίδα 33 από 84

34 1.4 Σκοπός Διπλωματικής Στο [4] οι συγγραφείς πρότειναν μία μεθοδολογία η οποία είναι σε θέση να αποσπάσει κανόνες που μπορούν να χρησιμοποιηθούν σαν ενδείξεις όταν η εφαρμογή ενός προτύπου σχεδίασης είναι επωφελής όσον αφορά την ποιότητα του λογισμικού και όταν δεν είναι. Αρχικά, παρατηρείται ότι οι περιπτώσεις προτύπων σχεδίασης δεν μοιράζονται τα ίδια χαρακτηριστικά, π.χ. αριθμό προτύπων που συμμετέχουν στις κλάσεις, τόσο μεταξύ προτύπων όσο και το λογισμικό σε διάφορους τομείς [1]. Μελετώντας τη βιβλιογραφία, προτείνονται ότι υπάρχουν αρκετές σχεδιαστικές λύσεις που μπορούν να υποκαταστήσουν τη λειτουργικότητα που προσφέρει ένα πρότυπο σχεδίασης, το οποίο μπορεί να χρησιμοποιηθεί όταν τα πρότυπα σχεδίασης δεν είναι επωφελής σε σχέση με την δομική ποιότητα του λογισμικού. Εκτός από αυτό, οι συγγραφείς του [4] παρατήρησαν ότι υπάρχουν ορισμένα πρότυπα σχεδίασης με δομικά χαρακτηριστικά που συσχετίζονται με διάφορες ιδιότητες της ποιότητας. Για παράδειγμα, χρησιμοποιώντας το πρότυπο σχεδίασης Bridge, βελτιώνει την πολυμορφική συμπεριφορά ενός συστήματος, ενώ αυξάνει το μέγεθος του συστήματος [2]. Τέλος, σε ορισμένες περιπτώσεις, η έκταση του προαναφερθέντος αποτελέσματος σχετίζεται με τον αριθμό των κλάσεων που συμμετέχουν στο πρότυπο. Λαμβάνοντας υπόψη όλα τα παραπάνω, στο [4] οι συγγραφείς ήταν σε θέση να δημιουργήσουν μαθηματικές συναρτήσεις που υπολογίζουν τα αποτελέσματα των μετρικών λύσεων των προτύπων σχεδίασης και εναλλακτικές σχεδιαστικές λύσεις, όπως εξισώσεις του αριθμού των κλάσεων που συμμετέχουν σε ένα στιγμιότυπο πρότυπο σχεδίασης. Τα αποτελέσματα των τριών επεξηγηματικών παραδειγμάτων πρότειναν ότι ο αριθμός των κλάσεων που συμμετέχουν σε ένα στιγμιότυπο πρότυπο σχεδίασης είναι ένα αντικειμενικό κριτήριο που μπορεί να χρησιμοποιηθεί για την επιλογή μεταξύ της εφαρμογής ενός προτύπου σχεδίασης ή όχι. Στη συνέχεια, θα παρέχουμε τα αποτελέσματα από την εφαρμογή της προαναφερθείσας μεθοδολογίας σε τρία γνωστά πρότυπα σχεδίασης, δηλαδή στο Decorator, Template Method και Strategy. Η σουίτα των μετρικών που θα χρησιμοποιηθεί είναι η ίδια με αυτή που προτείνεται στο [4], δηλαδή QMOOD [5]. Στο [5], οι συγγραφείς προτείνουν ένα Σελίδα 34 από 84

35 ιεραρχικό μοντέλο ποιότητας που στοχεύει στην ποσοτικοποίηση έξι χαρακτηριστικά ποιότητας του σχεδιασμού από μετρήσεις σε object-oriented σχεδιασμό κατασκευαστικών στοιχείων. Τα χαρακτηριστικά ποιότητας του σχεδιασμού που εμπλέκονται στο μοντέλο είναι η επαναχρησιμοποίηση (reusability), η ευελιξία (flexibility), η κατανόηση (understandability), η λειτουργικότητα (functionality), η επεκτασιμότητα (extendibility) και η αποτελεσματικότητα (effectiveness). Οι ακριβείς ορισμοί των έξι ποιοτικών χαρακτηριστικών του σχεδιασμού μπορούν να βρεθούν στο [5]. Οι ιδιότητες του object-oriented σχεδιασμολυ που χρησιμοποιούνται στο μοντέλο είναι design size, hierarchies, abstractions, encapsulation, coupling, cohesion, composition, inheritance, polymorphism, messaging και complexity [5]. Για κάθε πρότυπο σχεδίασης, θα παρουσιάσουμε δύο λύσεις υπό σύγκριση, ένα με τον πρότυπο σχεδίασης και ένα χωρίς το πρότυπο, με τη μορφή ενός διαγράμματος κλάσεων και μια περιγραφή κειμένου. Θα παρουσιάσουμε τις εξισώσεις για κάθε αποτέλεσμα μετρικής και για τις δύο λύσεις και τελικά, κάποια διαγράμματα που παρουσιάζουν την πραγματική σύγκριση των λύσεων. Οι πλήρεις υπολογισμοί των μετρικών έχουν παραλειφθεί από το κείμενο αυτό, προκειμένου να βελτιωθεί η αναγνωσιμότητα του, αλλά ο ενδιαφερόμενος χρήστης μπορεί να έχει πρόσβαση σε απευθείας σύνδεση για τους. 1.5 Μεθοδολογία Η προτεινόμενη μεθοδολογία μπορεί να χρησιμοποιηθεί για τη σύγκριση προτύπων σχεδίασης και λειτουργικά ισοδύναμων σχεδιαστικών λύσεων, κατά την επέκταση του συστήματος. Η μέθοδος αναλύεται στα παρακάτω βήματα: Προϋπόθεση: Έστω ότι υπάρχει ένα σχεδιαστικό πρόβλημα που μπορεί να επιλυθεί με κάποιο πρότυπο. Καταγράψτε εναλλακτικές σχεδιαστικές λύσεις από τη βιβλιογραφία, το ανοιχτό λογισμικό και τις προσωπικές σας εμπειρίες Εντοπίστε τους κύριους άξονες αλλαγών του σχεδίου Επεκτείνετε το σχέδιο σε όλους τους άξονες. Για παράδειγμα, αν υπάρχουν δύο άξονες αλλαγών, επεκτείνετε ως προς τον πρώτο, προσθέτοντας (n) Σελίδα 35 από 84

36 λειτουργίες και ως προς τον δεύτερο προσθέτοντας (m) επιπρόσθετες λειτουργίες Επιλέξτε ένα μοντέλο ποιότητας λογισμικού που ταιριάζει στις ανάγκες σχεδίασης και στο πλαίσιο ανάπτυξης του λογισμικού. Εναλλακτικά μπορεί απλά να επιλεγεί και ένα σύνολο μετρικών Κατασκευάστε εξισώσεις για τα συστατικά του μοντέλου ποιότητας, ως συνάρτηση των λειτουργιών (n, m) που προστέθηκαν στο βήμα 3 Συγκρίνετε τις συναρτήσεις που προέκυψαν στο βήμα 5 σε ζευγάρια και εντοπίστε την πιο συμφέρουσα σχεδιαστική επιλογή ως προς κάθε χαρακτηριστικό ποιότητας που ορίστηκε στο βήμα 4, καθώς και τους περιορισμούς που προκύπτουν Τα βασικά σημεία υπεροχής της μεθόδου ως προς τις έως τώρα ερευνητικές προσεγγίσεις στην αξιολόγηση των προτύπων σχεδίασης είναι τα εξής: Η χρήση της αναλυτικής μεθόδου έναντι των εμπειρικών. Το κύριο όφελος είναι ότι για την εφαρμογή της μεθόδου δεν χρειάζονται πολλαπλές περιπτώσεις/στιγμιότυπα για κάθε πρότυπο, εφόσον τα ποιοτικά χαρακτηριστικά οποιουδήποτε στιγμιοτύπου μπορούν να υπολογιστούν μέσω των εξισώσεων Η συγκεκριμένη μεθοδολογία μπορεί να υπολογίσει διάφορα δομικά χαρακτηριστικά ποιότητας και να διαχειριστεί τις «συναλλαγές» μεταξύ των ποιοτικών χαρακτηριστικών Μελέτη της επίδρασης των προτύπων σχεδίασης σε μια πληθώρα χαρακτηριστικών και όχι μόνο ως προς ένα χαρακτηριστικό ποιότητας Η εύρεση των οριακών σημείων (όποτε αυτά υπάρχουν), τα οποία όταν ξεπεραστούν, το πρότυπο σχεδίασης ή η σχεδιαστική εναλλακτική γίνεται πιο συμφέρουσα επιλογή Τα (3) και (4), μπορούν να χρησιμοποιηθούν στη βασισμένη σε στόχους διοίκηση έργου λογισμικού (goal oriented software project management), δηλαδή ο σχεδιαστής μπορεί να επιλέξει μεταξύ προτύπου και εναλλακτικής με βάση τις απαιτήσεις του συστήματος καθώς και ως προς τα επιθυμητά χαρακτηριστικά ποιότητας Σελίδα 36 από 84

37 Μια εναλλακτική πρόταση για την επίτευξη του ίδιου στόχου, θα ήταν ο σχεδιαστής να δουλεύει την αξιολόγηση στο επίπεδο του στιγμιοτύπου και όχι του μοντέλου. Μια τέτοια προσέγγιση είναι αρκετά πιο εύκολη για τους κατασκευαστές λογισμικού, αλλά έχει αρκετά μειονεκτήματα ως προς την αναλυτική μεθοδολογία. Κάνοντας χρήση της αναλυτικής μεθοδολογίας και αξιολογώντας σε επίπεδο μοντέλου, οι υπό εξέταση σχεδιαστικές λύσεις μπορούν να συγκριθούν σε μεγαλύτερο πλήθος σεναρίων επέκτασης και οι σχεδιαστικές αποφάσεις μπορούν να ληφθούν με μεγαλύτερη ασφάλεια, σε πρώιμο στάδιο σχεδίασης. 2. Εφαρμογή Μεθοδολογίας Ως ενδεικτικά παραδείγματα χρήσης της μεθοδολογίας, διερευνήθηκαν τρια ερευνητικά ερωτήματα, σχετικά με την αξιολόγηση διαφόρων προτύπων σχεδίασης, ως προς διάφορα χαρακτηριστικά ποιότητας. Τα ερευνητικά ερωτήματα που μελετήθηκαν είναι: RQ1: Ποια είναι η επίδραση της χρήσης του προτύπου σχεδίασης Decorator στη ποιότητα σχεδίου ενός συστήματος; RQ2: Ποια είναι η επίδραση της χρήσης του προτύπου σχεδίασης Template Method στη ποιότητα σχεδίου ενός συστήματος; RQ3: Ποια είναι η επίδραση της χρήσης του προτύπου σχεδίασης Strategy στη ποιότητα σχεδίου ενός συστήματος; Τα πρότυπα σχεδίασης θα μελετηθούν στη γενική τους μορφή, ρόλοι κλάσεων αντί για ονόματα κλάσεων, έτσι ώστε να είναι εμφανές ότι τα αποτελέσματα είναι γενικεύσιμα σε οποιαδήποτε περίπτωση χρήσης του προτύπου σχεδίασης. Παρόμοια, έχουν ονομαστεί οι μέθοδοι και οι κλάσεις του εναλλακτικού σχεδίου, ώστε να υπάρχει εύκολη αντιστοίχηση με το πρότυπο. Το γεγονός ότι όλα τα παραδείγματα σχετίζονται με τα GoF πρότυπα σχεδίασης, δεν πρέπει να παρερμηνευθεί ως έλλειψη γενικότητας. Η μεθοδολογία μπορεί να εφαρμοστεί σε οποιαδήποτε μορφή προτύπου, όπως τα αρχιτεκτονικά πρότυπα (architectural patterns) [9]. Σελίδα 37 από 84

38 Τα πρότυπα που επελέγησαν για τα ενδεικτικά παραδείγματα, καλύπτουν όλες τις κατηγορίες προτύπων που παρουσιάζονται στο [10]. Τα πρότυπα εμφανίζονται στην τυπική τους μορφή. Στη βιβλιογραφία εμφανίζονται αρκετές παρεκκλίσεις από το αρχικό πρότυπο. Όμως, τέτοιες περιπτώσεις δεν έχουν μελετηθεί, διότι το πλήθος των εναλλακτικών σχεδίων είναι μεγάλο και η διερεύνηση όλων των πιθανών συνδυασμών είναι πρακτικά αδύνατη. Έτσι, αποφασίστηκε να εξαχθούν ισοδύναμες σχεδιαστικά λύσεις από κώδικα ανοιχτού λογισμικού, παρά να προστεθεί στη μελέτη μια ακόμη βιβλιογραφική λύση, ώστε να αυξηθεί ο ρεαλισμός της προσέγγισης. Σε αυτό το σημείο θα πρέπει να σημειωθεί ότι η ανάλυση και τα αποτελέσματα βασίζονται στις συγκεκριμένες εναλλακτικές σχεδιαστικές επιλογές και δεν μπορούν να γενικευθούν σε άλλες σχεδιαστικές λύσεις, είτε από τη βιβλιογραφία είτε από το ανοιχτό λογισμικό. Η επέκταση των συστημάτων έχει γίνει σύμφωνα με το [8] όπου οι συγγραφείς προτείνουν ότι υπάρχουν τρεις βασικοί άξονες αλλαγών στα πρότυπα σχεδίασης: (α) προσθήκη νέων κλάσεων ως υποκλάσεις (concrete participant), (β) τροποποίηση υπάρχουσας διασύνδεσης και (γ) προσθήκη νέου πελάτη (client). Στη μελέτη προτείνεται ότι ο πιο συχνός τρόπος συντήρησης ενός προτύπου είναι η προσθήκη υποκλάσεων, δηλαδή το (α). Έτσι, στα σενάρια επέκτασης της μεθοδολογίας προτιμήθηκε τα σχέδια λογισμικού να συντηρηθούν προσθέτοντας υποκλάσεις. Η επιλογή αξόνων αλλαγής από την πλευρά του προτύπου σχεδίασης προσφέρει ομοιόμορφη επιλογή στρατηγικής επέκτασης. Σε περίπτωση που ο άξονας αλλαγής επιλεγόταν από κάποια εναλλακτική σχεδίαση (είτε βιβλιογραφική, είτε ανοιχτού λογισμικού), δε θα ήταν δυνατή η δημιουργία κανόνων ως προς την ομοιόμορφη επέκταση σε όλα τα πρότυπα σχεδίασης. Σε περίπτωση που η μεθοδολογία εφαρμοστεί σε ήδη υπάρχουσες κλάσεις που επαναχρησιμοποιούνται ή συμπεριλαμβάνονται σε στιγμιότυπα προτύπων σχεδίασης, θεωρείται ότι η επίδραση τους στην ποιότητα θα είναι ομοιόμορφη σε όλες τις πιθανές σχεδιαστικές επιλογές. Επιπλέον, επιλέχθηκε να παρουσιαστούν διαχωρισμένα παραδείγματα για κάθε πρότυπο σχεδίασης και όχι ένα σύστημα που να περιλαμβάνει περισσότερα πρότυπα, λόγω των αδιευκρίνιστων συνεπειών της σύζευξης μεταξύ προτύπων σχεδίασης [13]. Η μέθοδος σύγκρισης δυο σχεδιαστικών Σελίδα 38 από 84

39 λύσεων είναι η επίλυση της ανίσωσης, που προκύπτει αφαιρώντας τις εξισώσεις που υπολογίζουν την τιμή μιας μετρικής για τις λύσεις αυτές με το μηδέν. Για την επίλυση των παραγόμενων ανισοτήτων, χρησιμοποιήθηκε το πακέτο Wolfram Mathematica που εφαρμόζει τον αλγόριθμο Reduce1 για την επίλυση ανισώσεων. Στο σημείο αυτό πρέπει να επισημανθεί ότι τα επιλεγμένα μοντέλα ποιότητας και τα σύνολα μετρικών είναι ενδεικτικά. Έτσι, κάθε ομάδα ανάπτυξης λογισμικού μπορεί να εφαρμόσει τη μέθοδο κάνοντας χρήση οποιουδήποτε μοντέλου ποιότητας ή συνόλου μετρικών. 2.1 Πρότυπο Σχεδίασης «Decorator» Στη συγκεκριμένη ενότητα διερευνάται η συντηρησιμότητα του προτύπου σχεδίασης Decorator. Η παράγραφος παρουσιάζει τη δομή του προτύπου και των δύο εναλλακτικών σχεδιαστικών λύσεων. Η παράγραφος παρουσιάζει τα αποτελέσματα της μεθοδολογίας Σχεδιαστικές Προσεγγίσεις Το διάγραμμα κλάσεων ττου προτύπου σχεδίασης παρουσιάζεται στο Σχήμα 5. Το διάγραμμα κλάσεων του alternative προτύπου σχεδίασης παρουσιάζεται στο Σχήμα 6. 1 Wolfram Mathematica, Reduce Wolfram Mathematica 7 Documentation, /ref/reduce.html Σελίδα 39 από 84

40 Σχήμα 5: Διάγραμμα Κλάσεων Λύση «Πρότυπο Σχεδίασης» Σχήμα 6: Διάγραμμα Κλάσεων Λύση «Alternative Πρότυπο Σχεδίασης» Σελίδα 40 από 84

41 Θεωρείται ότι το σύστημα στη γενική μορφή έχει (n) Leaf κλάσεις, (p) ConcreteDecoratorA1 κλάσεις, (q) ConcreteDecoratorB1 κλάσεις και κάθε κλάση (m) operation μεθοδους. Το σύστημα στην alternative μορφή έχει (n) Leaf κλάσεις, στην κλάση Decorator σε κάθε operation μέθοδο (p) if statements και κάθε κλάση (m) operation μεθοδους. Η διαφορά μεταξύ της κλάσης ConcreteDecoratorA1 με την ConcreteDecoratorB1 είναι ότι η ConcreteDecoratorB1 αποτελείται μόνο από operation μεθόδους ενώ η ConcreteDecoratorA1 εκτός από operation μεθόδους περιλαμβάνει και additionaloperationa1 μεθόδους Αποτελέσματα Λαμβάνοντας υπόψη τον ορισμό των δυο αξόνων επέκτασης και των μετρικών που θα μελετηθούν, δημιουργήθηκαν οι παρακάτω συναρτήσεις: Πρότυπο Σχεδίασης Οι κλάσεις Client, Decorator και Component έχουν την τιμή 1. Οι κλάσεις Leaf=1*n, τα ConcreDecoratorA1=1*p και τα ConcreDecoratorΒ1=1*q. Οι κλάσεις Component και Decorator έχουν την τιμή 1 (NOH=1) γιατί κληρονομούνται από άλλες κλάσεις. Οι κλάσεις Client, Leaf, ConcreDecoratorA1 και ConcreDecoratorΒ1 δεν κληρονομούνται από άλλες κλάσεις (NOH=0). Οι κλάσεις Client και Component δεν ορίζονται (MFA=Δ/Ο). Η κλάση Leaf κληρονομεί όλες τις μεθόδους από την κλάση Component, οπότε (MFA=0). Ομοίως και η κλάση Decorator (MFA=0). Η κλάση ConcreDecoratorA1 δεν κληρονομεί δύο μεθόδους από την κλάση Decorator, την addparts(c) και την removeparts(c) (MFA= ). Η κλάση ConcreDecoratorB1 δεν κληρονομεί δύο μεθόδους από την κλάση Decorator, την addparts(c) και την removeparts(c) (MFA= ). Σελίδα 41 από 84

42 Η κλάση Client έχει αντικείμενο τύπου Component, άρα (DCC=1). Η κλάση Component είναι abstract κλάση και δεν καλεί κανένα αντικείμενο άλλης κλάσης, άρα (DCC=0). Η κλάση Decorator έχει αντικείμενο τύπου Component, άρα (DCC=1). ). Η κλάση Leaf κληρονομεί την Component, άρα (DCC=1*n). Η κλάση ConcreDecoratorA1 κληρονομεί την Decorator, άρα (DCC=1*p) και η κλάση ConcreDecoratorB1 κληρονομεί την Decorator, άρα (DCC=1*q). Οι κλάσεις Client, Component, Leaf, ConcreDecoratorA1, ConcreDecoratorB1 δεν έχουν στις μεθόδους τους καμία παράμετρο (CAM=0). Η κλάση Decorator έχει στις μεθόδους addparts και removeparts από μια παράμετρο (CAM= ). Η κλάση Client έχει αντικείμενο τύπου Component, άρα (MOA=1). Οι κλάσεις Component, Leaf, ConcreDecoratorA1, ConcreDecoratorB1 δεν έχουν κανένα αντικείμενο άλλης κλάσης, άρα (MOA=0). Η κλάση Decorator έχει αντικείμενο τύπου Component, άρα (MOA=1). Οι κλάσεις Client, Leaf, ConcreDecoratorA1, ConcreDecoratorB1 δεν έχουν μεθόδους που έχουν πολυμορφική συμπεριφορά (NOP=0). Η κλάση Component έχει όλες τις operation μεθόδους ως abstract (NOP=m). Η κλάση Decorator έχει όλες τις operation μεθόδους ως abstract (NOP=m). Σελίδα 42 από 84

43 Η κλάση Client και Component δεν κληρονομούν πληροφορίες από καμία άλλη κλάση (ANA=0). Η κλάση Decorator κληρονομεί την Component (ANA=1). H κλάση Leaf κληρονομεί την Component (ANA=1*n). H κλάση ConcreDecoratorA1 κληρονομεί την Decorator (ANA=1*p). H κλάση ConcreDecoratorB1 κληρονομεί την Decorator (ANA=1*q). Οι κλάσεις Client, Decorator έχουν από μια private μεταβλητή (DAM=1). Οι κλάσεις Component, Leaf, ConcreDecoratorA1, ConcreDecoratorB1 δεν έχουν καμία private μεταβλητή (DAM=0). Οι κλάσεις Client, Component έχουν m μεθόδους (NOM=m). Η κλάση Decorator έχει m+2 μεθόδους (NOM=m+2). Η κλάση Leaf έχει m μεθόδους (NOM=m*n). Η κλάση ConcreDecoratorA1 έχει 2*m μεθόδους (NOM=2*m*p). Η κλάση ConcreDecoratorB1 έχει m μεθόδους (NOM=m*q). Οι κλάσεις Client, Component έχουν m public μεθόδους (CIS=m). Η κλάση Decorator έχει m+2 public μεθόδους (CIS=m+2). Η κλάση Leaf έχει m public μεθόδους (CIS=m*n). Η κλάση ConcreDecoratorA1 έχει 2*m public μεθόδους (CIS=2*m*p). Η κλάση ConcreDecoratorB1 έχει m public μεθόδους (CIS=m*q). Εναλλακτική σχεδιαστική λύση προτύπου σχεδίασης Σελίδα 43 από 84

44 Leaf=1*n. Οι κλάσεις Client, Decorator και Component έχουν την τιμή 1. Η κλάση Η κλάση Component έχει την τιμή 1 (NOH=1) γιατί κληρονομείται από άλλες κλάσεις. Οι κλάσεις Client, Decorator, Leaf, δεν κληρονομούνται από άλλες κλάσεις (NOH=0). Οι κλάσεις Client και Component δεν ορίζονται (MFA=Δ/Ο). Οι κλάσεις Decorator, Leaf κληρονομούν όλες τις μεθόδους από την κλάση Component, οπότε (MFA=0). Η κλάση Client έχει αντικείμενο τύπου Component, άρα (DCC=1). Η κλάση Component είναι abstract κλάση και δεν καλεί κανένα αντικείμενο άλλης κλάσης, άρα (DCC=0). Η κλάση Decorator έχει n αντικείμενα τύπου Leaf καθώς και κληρονομεί την κλάση Component, άρα (DCC=n+1). Η κλάση Client δεν έχει στις μεθόδους της καμία παράμετρο (CAM=0). Οι κλάσεις Component, Leaf δεν ορίζονται (CAM=Δ/0) Η κλάση Decorator έχει στις μεθόδους addleaf1και removeleaf1 από μια παράμετρο (CAM= ). Η κλάση Client έχει αντικείμενο τύπου Component, άρα (MOA=1). Οι κλάσεις Component, Leaf δεν έχουν κανένα αντικείμενο άλλης κλάσης, άρα (MOA=0). Η κλάση Decorator έχει n αντικείμενα τύπου Leaf, άρα (MOA=n). Σελίδα 44 από 84

45 Οι κλάσεις Client, Decorator, Leaf δεν έχουν μεθόδους που έχουν πολυμορφική συμπεριφορά (NOP=0). Η κλάση Component έχει όλες τις operation μεθόδους ως abstract (NOP=m). Η κλάση Client και Component δεν κληρονομούν πληροφορίες από καμία άλλη κλάση (ANA=0). Η κλάση Decorator κληρονομεί την Component (ANA=1). H κλάση Leaf κληρονομεί την Component (ANA=1*n). Η κλάση Client έχει μια private μεταβλητή (DAM=1). Η κλάση Decorator έχει n+1 private μεταβλητές (DAM= ). Οι κλάσεις Component, Leaf δεν έχουν καμία private μεταβλητή (DAM=0). Οι κλάσεις Client, Component έχουν m μεθόδους (NOM=m). Η κλάση Decorator έχει 2*n+m+p*m μεθόδους (NOM=2*n+m+p*m). Η κλάση Leaf έχει m μεθόδους (NOM=m*n). Οι κλάσεις Client, Component έχουν m public μεθόδους (CIS=m). Η κλάση Decorator έχει 2*n+m+p*m public μεθόδους (CIS=2*n+m+p*m). Η κλάση Leaf έχει m public μεθόδους (CIS=m*n). Σελίδα 45 από 84

46 Στον Πίνακα 7, συνοψίζονται οι εξισώσεις υπολογισμού μετρικών για κάθε λύση. Πίνακας 7: Μετρικές Συντηρησιμότητας για τις Σχεδιαστικές Επιλογές Μετρικές Πρότυπο Σχεδίασης Εναλλακτικό Πρότυπο Σχεδίασης DSC NOH MFA DCC CAM MOA NOP ANA DAM NOM CIS Πίνακας 8: Μετρικές για τις Σχεδιαστικές Επιλογές Χαρακτηριστικά Ποιότητας Reusability Πρότυπο Σχεδίασης Flexibility Σελίδα 46 από 84

47 Understandabilit y Functionality Extendibility Effectiveness Πίνακας 9: Μετρικές για τις Σχεδιαστικές Επιλογές Χαρακτηριστικά Ποιότητας Reusability Εναλλακτικό Πρότυπο Σχεδίασης Flexibility Understandability Functionality Extendibility Effectiveness 2.2 Πρότυπο Σχεδίασης «Template Method» Στη συγκεκριμένη ενότητα διερευνάται η συντηρησιμότητα του προτύπου σχεδίασης Template Method. Η παράγραφος παρουσιάζει τη δομή του προτύπου και των δύο εναλλακτικών σχεδιαστικών λύσεων. Η παράγραφος παρουσιάζει τα αποτελέσματα της μεθοδολογίας. Σελίδα 47 από 84

48 2.2.1 Σχεδιαστικές Προσεγγίσεις Το διάγραμμα κλάσεων ττου προτύπου σχεδίασης παρουσιάζεται στο Σχήμα 7. Το διάγραμμα κλάσεων του alternative προτύπου σχεδίασης παρουσιάζεται στο Σχήμα 8. Σχήμα 7: Διάγραμμα Κλάσεων Λύση «Πρότυπο Σχεδίασης» Σελίδα 48 από 84

49 Σχήμα 8: Διάγραμμα Κλάσεων Λύση «Alternative Πρότυπο Σχεδίασης» Θεωρείται ότι το σύστημα στη γενική μορφή έχει (n) ConcreteClass κλάσεις. Οι κλάσεις AbstractClass και ConcreteClass περιέχουν (p) primitiveoperation μεθόδους. Οι κλάσεις TemplatePattern και AbstractClass περιέχουν (m) tempaltemethod μεθόδους. Στην AbstractClass σε κάθε tempaltemethod μέθοδο, υπάρχουν (q) primitiveoperation μέθοδοι. Το σύστημα στην alternative μορφή έχει (n) ConcreteClass κλάσεις. Όλες οι κλάσεις περιέχουν (m) tempaltemethod μεθόδους. Στις ConcreteClass κλάσεις, σε κάθε tempaltemethod μέθοδο, υπάρχουν (q) primitiveoperation μέθοδοι. Επίσης, στις ConcreteClass κλάσειςυπάρχουν (p) primitiveoperation μέθοδοι Αποτελέσματα Λαμβάνοντας υπόψη τον ορισμό των δυο αξόνων επέκτασης και των μετρικών που θα μελετηθούν, δημιουργήθηκαν οι παρακάτω συναρτήσεις: Πρότυπο Σχεδίασης Σελίδα 49 από 84

50 Οι κλάσεις TemplatePattern και AbstractClass έχουν την τιμή 1. Η κλάση ConcreteClass=1*n. Η κλάση και AbstractClass έχει την τιμή 1 (NOH=1) γιατί κληρονομείται από άλλες κλάσεις. Οι κλάσεις TemplatePattern και ConcreteClass δεν κληρονομούνται από άλλες κλάσεις (NOH=0). Οι κλάσεις TemplatePattern και AbstractClass δεν ορίζονται (MFA=Δ/Ο). Η κλάση ConcreteClass κληρονομεί μόνο τις primitiveoperation μεθόδους από την κλάση AbstractClass, οπότε (MFA= ). Η κλάση TemplatePattern έχει n αντικείμενα τύπου AbstractClass, άρα (DCC=1+n). Η κλάση AbstractClass είναι abstract κλάση και δεν καλεί κανένα αντικείμενο άλλης κλάσης, άρα (DCC=0). Η κλάση ConcreteClass κληρονομεί την AbstractClass, άρα (DCC=1*n). (CAM=Δ/Ο). Οι κλάσεις TemplatePattern, AbstractClass και ConcreteClass δεν ορίζονται Η κλάση TemplatePattern έχει αντικείμενο τύπου AbstractClass, άρα (MOA=1). Οι κλάσεις AbstractClass και ConcreteClass δεν έχουν κανένα αντικείμενο άλλης κλάσης, άρα (MOA=0). Σελίδα 50 από 84

51 Οι κλάσεις TemplatePattern και ConcreteClass δεν έχουν μεθόδους που έχουν πολυμορφική συμπεριφορά (NOP=0). Η κλάση AbstractClass έχει όλες τις primitiveoperation μεθόδους ως abstract (NOP=p). Η κλάση TemplatePattern και AbstractClass δεν κληρονομούν πληροφορίες από καμία άλλη κλάση (ANA=0). Η κλάση ConcreteClass κληρονομεί την AbstractClass (ANA=1*n). Η κλάση TemplatePattern έχει μια private μεταβλητή (DAM=1). Οι κλάσεις AbstractClass και ConcreteClass δεν έχουν καμία private μεταβλητή (DAM=Δ/Ο). Η κλάση TemplatePattern έχει μια μέθοδο (NOM=1). Η κλάση AbstractClass έχει m+p μεθόδους (NOM=m+p). Η κλάση ConcreteClass έχει p μεθόδους (NOM=p*n). Η κλάση TemplatePattern έχει μια public μέθοδο (CIS=1). Η κλάση AbstractClass έχει m+p public μεθόδους (CIS=m+p). Η κλάση ConcreteClass έχει p public μεθόδους (CIS=p*n). Σελίδα 51 από 84

52 Εναλλακτική σχεδιαστική λύση προτύπου σχεδίασης Η κλάση TemplateAlternative έχει την τιμή 1. Η κλάση ConcreteClass=1*n. Οι κλάσεις TemplateAlternative και ConcreteClass δεν κληρονομούνται από άλλες κλάσεις (NOH=0). Οι κλάσεις TemplateAlternative και ConcreteClass δεν ορίζονται (MFA=Δ/Ο). Η κλάση TemplateAlternative έχει n αντικείμενα τύπου ConcreteClass, άρα (DCC=n). Η κλάση ConcreteClass δεν καλεί κανένα αντικείμενο άλλης κλάσης, άρα (DCC=0). Οι κλάσεις TemplateAlternative και ConcreteClass δεν ορίζονται (CAM=Δ/Ο). Η κλάση TemplateAlternative έχει n αντικείμενα τύπου ConcreteClass, άρα (MOA=n). Η κλάση ConcreteClass δεν έχει κανένα αντικείμενο άλλης κλάσης, άρα (MOA=0). Οι κλάσεις TemplateAlternative και ConcreteClass δεν έχουν μεθόδους που έχουν πολυμορφική συμπεριφορά (NOP=0). Η κλάση TemplateAlternative και ConcreteClass δεν κληρονομούν πληροφορίες από καμία άλλη κλάση (ANA=0). Σελίδα 52 από 84

53 Η κλάση TemplateAlternative έχει n private μεταβλητές (DAM= ). Η κλάση ConcreteClass δεν έχei καμία private μεταβλητή (DAM=Δ/Ο). Η κλάση TemplateAlternative έχει μια μέθοδο (NOM=1). Η κλάση ConcreteClass έχει (m+p) μεθόδους (NOM=(m+p)*n). Η κλάση TemplateAlternative έχει ConcreteClass έχει (m+p) public μεθόδους (CIS=(m+p) *n). μια public μέθοδο (CIS=1). Η κλάση Στον Πίνακα 10, συνοψίζονται οι εξισώσεις υπολογισμού μετρικών για κάθε λύση. Πίνακας 10: Μετρικές Συντηρησιμότητας για τις Σχεδιαστικές Επιλογές Μετρικές Πρότυπο Σχεδίασης Εναλλακτικό Πρότυπο Σχεδίασης DSC NOH MFA DCC CAM MOA Σελίδα 53 από 84

54 NOP ANA DAM NOM CIS Πίνακας 11: Μετρικές για τις Σχεδιαστικές Επιλογές Χαρακτηριστικά Ποιότητας Reusability Πρότυπο Σχεδίασης Flexibility Understandability Functionality Extendibility Effectiveness Πίνακας 12: Μετρικές για τις Σχεδιαστικές Επιλογές Χαρακτηριστικά Ποιότητας Reusability Εναλλακτικό Πρότυπο Σχεδίασης Flexibility Understandability Functionality Extendibility Effectiveness Σελίδα 54 από 84

55 2.3 Πρότυπο Σχεδίασης «Strategy» Στη συγκεκριμένη ενότητα διερευνάται η συντηρησιμότητα του προτύπου σχεδίασης Strategy. Η παράγραφος παρουσιάζει τη δομή του προτύπου και των δύο εναλλακτικών σχεδιαστικών λύσεων. Η παράγραφος παρουσιάζει τα αποτελέσματα της μεθοδολογίας Σχεδιαστικές Προσεγγίσεις Το διάγραμμα κλάσεων ττου προτύπου σχεδίασης παρουσιάζεται στο Σχήμα 9. Το διάγραμμα κλάσεων του alternative προτύπου σχεδίασης παρουσιάζεται στο Σχήμα 10. Σχήμα 9: Διάγραμμα Κλάσεων Λύση «Πρότυπο Σχεδίασης» Σελίδα 55 από 84

56 Σχήμα 10: Διάγραμμα Κλάσεων Λύση «Alternative Πρότυπο Σχεδίασης» Θεωρείται ότι το σύστημα στη γενική μορφή έχει (n) ConcreteStrategy κλάσεις. Όλες οι κλάσεις περιέχουν (m) dooperation μεθόδους. Οι κλάσεις StrategyPattern και Strategy περιέχουν (q) dooperationsame μεθόδους. Το σύστημα στην alternative μορφή έχει (n) ConcreteStrategy κλάσεις. Όλες οι κλάσεις περιέχουν (m) dooperation μεθόδους και (q) dooperationsame μεθόδους. Η μέθοδος dooperationsame είναι μία μέθοδος που παντού κάνει τα ίδια ακριβώς σε αντίθεση με την μέθοδο dooperation όπου κάθε μέθοδος κάνει κάτι διαφορετικό από την άλλη Αποτελέσματα Λαμβάνοντας υπόψη τον ορισμό των δυο αξόνων επέκτασης και των μετρικών που θα μελετηθούν, δημιουργήθηκαν οι παρακάτω συναρτήσεις: Πρότυπο Σχεδίασης Οι κλάσεις StrategyPattern και Strategy έχουν την τιμή 1. Η κλάση ConcreteStrategy=1*n. Σελίδα 56 από 84

57 Η κλάση και Strategy έχει την τιμή 1 (NOH=1) γιατί κληρονομείται από άλλες κλάσεις. Οι κλάσεις StrategyPattern και ConcreteStrategy δεν κληρονομούνται από άλλες κλάσεις (NOH=0). Οι κλάσεις StrategyPattern και Strategy δεν ορίζονται (MFA=Δ/Ο). Η κλάση ConcreteStrategy κληρονομεί μόνο τις dooperation μεθόδους από την κλάση Strategy, οπότε (MFA= ). Η κλάση StrategyPattern έχει n αντικείμενα τύπου Strategy, άρα (DCC=1+n). Η κλάση Strategy είναι abstract κλάση και δεν καλεί κανένα αντικείμενο άλλης κλάσης, άρα (DCC=0). Η κλάση ConcreteStrategy κληρονομεί την Strategy, άρα (DCC=1*n). (CAM=Δ/Ο). Οι κλάσεις StrategyPattern, Strategy και ConcreteStrategy δεν ορίζονται Η κλάση StrategyPattern έχει αντικείμενο τύπου Strategy, άρα (MOA=1). Οι κλάσεις Strategy και ConcreteStrategy δεν έχουν κανένα αντικείμενο άλλης κλάσης, άρα (MOA=0). Οι κλάσεις StrategyPattern και ConcreteStrategy δεν έχουν μεθόδους που έχουν πολυμορφική συμπεριφορά (NOP=0). Η κλάση Strategy έχει όλες τις dooperation μεθόδους ως abstract (NOP=m). Σελίδα 57 από 84

58 Η κλάση StrategyPattern και Strategy δεν κληρονομούν πληροφορίες από καμία άλλη κλάση (ANA=0). Η κλάση ConcreteStrategy κληρονομεί την Strategy (ANA=1*n). Η κλάση StrategyPattern έχει μια private μεταβλητή (DAM=1). Οι κλάσεις Strategy και ConcreteStrategy δεν έχουν καμία private μεταβλητή (DAM=Δ/Ο). Η κλάση StrategyPattern έχει μια μέθοδο (NOM=1). Η κλάση Strategy έχει m+q μεθόδους (NOM=m+q). Η κλάση ConcreteStrategy έχει m μεθόδους (NOM=m*n). Η κλάση StrategyPattern έχει μια public μέθοδο (CIS=1). Η κλάση Strategy έχει m+q public μεθόδους (CIS=m+q). Η κλάση ConcreteStrategy έχει m public μεθόδους (CIS=m*n). Εναλλακτική σχεδιαστική λύση προτύπου σχεδίασης Η κλάση StrategyAlternative έχει την τιμή 1. Η κλάση ConcreteStrategy =1*n. Οι κλάσεις StrategyAlternative και ConcreteStrategy δεν κληρονομούνται από άλλες κλάσεις (NOH=0). Σελίδα 58 από 84

59 Οι κλάσεις StrategyAlternative και ConcreteStrategy δεν ορίζονται (MFA=Δ/Ο). Η κλάση StrategyAlternative έχει n αντικείμενα τύπου ConcreteStrategy, άρα (DCC=n). Η κλάση ConcreteStrategy δεν καλεί κανένα αντικείμενο άλλης κλάσης, άρα (DCC=0). Οι κλάσεις StrategyAlternative και ConcreteStrategy δεν ορίζονται (CAM=Δ/Ο). Η κλάση StrategyAlternative έχει n αντικείμενα τύπου ConcreteStrategy, άρα (MOA=n). Η κλάση ConcreteStrategy δεν έχει κανένα αντικείμενο άλλης κλάσης, άρα (MOA=0). Οι κλάσεις StrategyAlternative και ConcreteStrategy δεν έχουν μεθόδους που έχουν πολυμορφική συμπεριφορά (NOP=0). Η κλάση StrategyAlternative και ConcreteStrategy δεν κληρονομούν πληροφορίες από καμία άλλη κλάση (ANA=0). Η κλάση StrategyAlternative έχει n private μεταβλητές (DAM= ). Η κλάση ConcreteStrategy δεν έχei καμία private μεταβλητή (DAM=Δ/Ο). Σελίδα 59 από 84

60 Η κλάση StrategyAlternative έχει μια μέθοδο (NOM=1). Η κλάση ConcreteStrategy έχει (m+q) μεθόδους (NOM=(m+q)*n). Η κλάση StrategyAlternative έχει μια public μέθοδο (CIS=1). Η κλάση ConcreteStrategy έχει (m+q) public μεθόδους (CIS=(m+q) *n). Στον Πίνακα 13, συνοψίζονται οι εξισώσεις υπολογισμού μετρικών για κάθε λύση. Πίνακας 13: Μετρικές Συντηρησιμότητας για τις Σχεδιαστικές Επιλογές Μετρικές Πρότυπο Σχεδίασης Εναλλακτικό Πρότυπο Σχεδίασης DSC NOH MFA DCC CAM MOA NOP ANA DAM NOM CIS Σελίδα 60 από 84

61 Πίνακας 14: Μετρικές για τις Σχεδιαστικές Επιλογές Χαρακτηριστικά Ποιότητας Reusability Πρότυπο Σχεδίασης Flexibility Understandability Functionality Extendibility Effectiveness Πίνακας 15: Μετρικές για τις Σχεδιαστικές Επιλογές Χαρακτηριστικά Ποιότητας Reusability Εναλλακτικό Πρότυπο Σχεδίασης Flexibility Understandability Functionality Extendibility Effectiveness 2.4 Συζήτηση Σε αυτό το κεφάλαιο παρουσιάζεται μια συζήτηση αναφορικά με το πώς θα μπορούσαν οι παραπάνω εξισώσεις να χρισιμοποιηθούν ώστε να παραχθούν κάποια χρήσιμα συμπεράσματα. Έτσι για κάθε διάγραμμα επιφανειών που αποδεικνύουν την ύπαρξη σημείων στα οποία η ποιότητα του προτύπου ισούται με την ποιότητα της εναλλακτικής σχεδιαστικά λύσης, με την φορά της ανίσωσης να αλλάζει εκατέρωθεν αυτών των σημείων. Σελίδα 61 από 84

62 2.4.1 Decorator Στην ενότητα αναλύσαμε την έννοια της κάθε μεταβλητής (n, m, p, q) που συμμετέχει στις εξισώσεις υπολογισμού των μετρικών. Για να μπορέσουμε να παρουσιάσουμε τριδιαστατα/δισδιάστατα γραφήματα της καθε μετρικής συναρτήσει των μεταβλητών, υποχρεωθήκαμε να θέσαμε τιμές σε κάποιες μεταβλητές, ωστε στο διάγραμμα να αναπαριστώντε δύ ή τρεις μεταβλητές. Για την απεικόνιση των διαγραμμάτων, χρησιμοποιήθηκε το πακέτο Wolfram Mathematica και πιο συγκεκριμένα η συνάρτηση Plot3D/Plot2D για την δημιουργία διαγραμμάτων Περίπτωση p=q=1 Θεωρούμε ότι οι κλάσεις ConcreteDecoratorA1 και ConcreteDecoratorB1 εμφανίζονται μόνο μία φορά, αφού η μεταβλητή (p) δείχνει πόσες ConcreteDecoratorA1 κλάσεις έχει το σύστημα καθώς και η μεταβλητή (q) δείχνει πόσες ConcreteDecoratorB1 κλάσεις υπάρχουν στο σύστημα Περίπτωση p=m=1 Θεωρούμε ότι η ConcreteDecoratorA1 εμφανίζεται μόνο μία φορά, αφού η μεταβλητή (p) δείχνει πόσες ConcreteDecoratorA1 κλάσεις έχει το σύστημα. Καθώς και κάθε κλάση έχει μόνο μια μέθοδο operation, αφού η μεταβλητή (m) δείχνει πόσες operation μεθόδους έχουμε σε κάθε κλάση Περίπτωση p=1, n=9-q Θεωρούμε ότι η ConcreteDecoratorA1 εμφανίζεται μόνο μία φορά, αφού η μεταβλητή (p) δείχνει πόσες ConcreteDecoratorA1 κλάσεις έχει το σύστημα. Επίσης, σύμφωνα με το [1] ο συνολικός αριθμός των κλάσεων στο σύστημα είναι n+p+q=10. Επόμενως, ο αριθμός των Leaf κλάσεων είναι n=9-q, αφού η μεταβλητή (n) δείχνει πόσες Leaf κλάσεις υπάρχουν στο σύστημα Αποτελέσματα περιπτώσεων Σελίδα 62 από 84

63 Στον Πίνακα 16, παρουσιάζουμε τα διαγράμματα για κάθε περίπτωση. Το κόκκινο διάγραμμα αντιπροσωπεύει το πρότυπο σχεδίασης και το μπλέ διάγραμμα το εναλλακτικό πρότυπο σχεδίασης. Πίνακας 16: Διαγράμματα περιπτώσεων Χαρακτηριστικά Ποιότητας Reusability p=q=1 p=m=1 p=1, n=9-q Flexibility Understandability Functionality Σελίδα 63 από 84

64 Extendibility Effectiveness Template Method Στην ενότητα αναλύσαμε την έννοια της κάθε μεταβλητής (n, m, p, q) που συμμετέχει στις εξισώσεις υπολογισμού των μετρικών. Για να μπορέσουμε να παρουσιάσουμε τριδιαστατα/δισδιάστατα γραφήματα της καθε μετρικής συναρτήσει των μεταβλητών, υποχρεωθήκαμε να θέσαμε τιμές σε κάποιες μεταβλητές, ωστε στο διάγραμμα να αναπαριστώντε δύ ή τρεις μεταβλητές. Για την απεικόνιση των διαγραμμάτων, χρησιμοποιήθηκε το πακέτο Wolfram Mathematica και πιο συγκεκριμένα η συνάρτηση Plot3D/Plot2D για την δημιουργία διαγραμμάτων Περίπτωση p=1 Θεωρούμε ότι η μέθοδος primitiveoperation εμφανίζεται μόνο μία φορά, αφού η μεταβλητή (p) δείχνει πόσες primitiveoperation μεθόδους υπάρχουν στο σύστημα Περίπτωση m=1 Θεωρούμε ότι η μέθοδος tempaltemethod εμφανίζεται μόνο μία φορά, αφού η μεταβλητή (m) δείχνει πόσες tempaltemethod μεθόδους υπάρχουν στο σύστημα. Σελίδα 64 από 84

65 Περίπτωση p=3 Θεωρούμε ότι η μέθοδος primitiveoperation εμφανίζεται τρεις φορές, αφού η μεταβλητή (p) δείχνει πόσες primitiveoperation μεθόδους υπάρχουν στο σύστημα Περίπτωση p=5 Θεωρούμε ότι η μέθοδος primitiveoperation εμφανίζεται πέντε φορές, αφού η μεταβλητή (p) δείχνει πόσες primitiveoperation μεθόδους υπάρχουν στο σύστημα Αποτελέσματα περιπτώσεων Στον Πίνακα 17, παρουσιάζουμε τα διαγράμματα για κάθε περίπτωση. Το κόκκινο διάγραμμα αντιπροσωπεύει το πρότυπο σχεδίασης και το μπλέ διάγραμμα το εναλλακτικό πρότυπο σχεδίασης. Πίνακας 17: Διαγράμματα περιπτώσεων Χαρακτηριστικά Ποιότητας Reusability p=1 m=1 p=3 p=5 Flexibility Σελίδα 65 από 84

66 Understandability Functionality Extendibility Effectiveness Σελίδα 66 από 84

67 2.4.3 Strategy Στην ενότητα αναλύσαμε την έννοια της κάθε μεταβλητής (n, m, p, q) που συμμετέχει στις εξισώσεις υπολογισμού των μετρικών. Για να μπορέσουμε να παρουσιάσουμε τριδιαστατα/δισδιάστατα γραφήματα της καθε μετρικής συναρτήσει των μεταβλητών, υποχρεωθήκαμε να θέσαμε τιμές σε κάποιες μεταβλητές, ωστε στο διάγραμμα να αναπαριστώντε δύ ή τρεις μεταβλητές. Για την απεικόνιση των διαγραμμάτων, χρησιμοποιήθηκε το πακέτο Wolfram Mathematica και πιο συγκεκριμένα η συνάρτηση Plot3D/Plot2D για την δημιουργία διαγραμμάτων Περίπτωση m=1 Θεωρούμε ότι η μέθοδος dooperation εμφανίζεται μόνο μία φορά, αφού η μεταβλητή (m) δείχνει πόσες dooperation μεθόδους υπάρχουν στο σύστημα Περίπτωση n=5 Σύμφωνα με το [1], ο συνολικός αριθμός των κλάσεων στο σύστημα είναι n+2=7. Επόμενως, ο αριθμός των ConcreteStrategy κλάσεων είναι n=5, αφού η μεταβλητή (n) δείχνει πόσες ConcreteStrategy κλάσεις υπάρχουν στο σύστημα Περίπτωση q=0 Θεωρούμε ότι η μέθοδος dooperationsame δεν εμφανίζεται καθόλου, αφού η μεταβλητή (q) δείχνει πόσες dooperationsame μεθόδους υπάρχουν στο σύστημα Περίπτωση m=5 Θεωρούμε ότι η μέθοδος dooperation εμφανίζεται πέντε φορές, αφού η μεταβλητή (m) δείχνει πόσες dooperation μεθόδους υπάρχουν στο σύστημα. Σελίδα 67 από 84

68 Αποτελέσματα περιπτώσεων Στον Πίνακα 18, παρουσιάζουμε τα διαγράμματα για κάθε περίπτωση. Το κόκκινο διάγραμμα αντιπροσωπεύει το πρότυπο σχεδίασης και το μπλέ διάγραμμα το εναλλακτικό πρότυπο σχεδίασης. Πίνακας 18: Διαγράμματα περιπτώσεων Χαρακτηριστικά Ποιότητας Reusability m=1 n=5 q=0 m=5 Flexibility Understandability Functionality Σελίδα 68 από 84

69 Extendibility Effectiveness 3. Εμπειρική Μελέτη H έρευνα στoν τομέα της τεχνολογίαs λογισμικού, αφορά στην κατανόηση των μεθόδων που έχουμε στη διάθεσή μας, τα όριά τους και πότε μπορούν να εφαρμοστούν. Σύμφωνα με το [11], υπάρχουν τέσσερις μέθοδοι έρευνας στον τομέα της μηχανικής λογισμικού. Οι μέθοδοι είναι οι εξής: 1)επιστημονική μέθοδος (scientific method) 2)μηχανική μέθοδος (engineering method) 3)εμπειρική μέθοδος (empirical method) 4)αναλυτική μέθοδος (analytical method) Στην επιστημονική μέθοδο παρατηρείται το περιβάλλον και δημιουργείται ένα μοντέλο με βάση την παρατήρηση, για παράδειγμα, ένα μοντέλο προσομοίωσης. Στην μηχανική μέθοδο οι υπάρχουσες λύσεις μελετώνται και προτείνονται οι αλλαγές, οι οποίες στη συνέχεια αξιολογούνται. Στην εμπειρική μέθοδο προτείνεται ένα μοντέλο και στη συνέχεια αξιολογείται με εμπειρικές μελέτες, όπως για παράδειγμα, μελέτες περιπτώσεων ή πειράματα. Τέλος, στην αναλυτική μέθοδο προτείνεται μια επίσημη θεωρία, συλλέγονται εμπειρικές παρατηρήσεις και στη συνέχεια με βάση τις παρατηρήσεις συγκρίνεται η προς διερεύνηση θεωρία. Σελίδα 69 από 84

70 Η μηχανική μέθοδος και η εμπειρική μέθοδος μπορούν να θεωρηθούν ως παραλλαγές της επιστημονικής μεθόδου [6]. Κάθε μία από αυτές τις μεθόδους κρίνεται ως καταλληλότερη και εφαρμόζεται σε κάποιο συγκεκριμένο τομέα. Υπάρχουν τρεις μεγάλες ερευνητικές μέθοδοι που χρησιμοποιούνται στις εμπειρικές μελέτες οι οποίες είναι οι εξής: μελέτη περίπτωσης (case study). έρευνα πεδίου(survey), τυπικό ή ελεγχόμενο πείραμα (formal experiment). Η ενότητα αυτή, στοχεύει στην διερεύνηση της χρήσης αντικειμενοστραφών προτύπων σχεδίασης στα σφάλματα και στην αποτελεσματικότητα της αποσφαλμάτωσης έργων ανοιχτού λογισμικού. 3.1 Μεθοδολογία Ο στόχος αυτής της ενότητας είναι να αξιολογηθεί η ύπαρξη του προτύπου σχεδίασης, μέσω στιγμιοτύπων του που εμφανίζονται σε λογισμικό ανοιχτού κώδικα. Για την επιβεβαίωση της αναλυτικής μεθοδολογίας, αναμένεται τα αποτελέσματα της εμπειρικής μελέτης να δείχνουν ότι η χρήση του προτύπου είναι μερικές φορές επωφελής όσον αφορά την δομική ποιότητα του λογισμικού και σε άλλες περιπτώσεις δεν είναι. Τα βήματα που θα διεξαχθούν κατά τη διάρκεια της μελέτης περίπτωσής, αναφέρονται παρακάτω [12]: Καθορισμός ερωτήσεων έρευνας Επιλογή project και αντικέιμενα Αναγνώριση μεθόδου σύγκρισης Ανάλυση και αναφορά των αποτελεσμάτων Καθορισμός ερωτήσεων έρευνας Σελίδα 70 από 84

71 Η μελέτη περίπτωσης που πραγματοποιήθηκε, αναμένεται να διερευνήσει την επίδραση της εφαρμογής του προτύπου, όπως περιγράφεται από τις ακόλουθες προϋποθέσεις και τα ερωτήματα της έρευνας. Προϋποθέσεις: μια έκδοση λογισμικού που δεν χρησιμοποιεί ένα πρότυπο σχεδίασης (μηπρότυπο) μια έκδοση λογισμικού που χρησιμοποιεί ένα πρότυπο σχεδίασης. Για κάθε, η είναι η βαθμολογία της μετρικής Για κάθε, η είναι η βαθμολογία της μετρικής Για κάθε, είναι η σχεδιαστική λύση (με πρότυπο ή χωρίς πρότυπο) η οποία θα έχει την καλύτερη βαμθολογία της μεταξύ και. Ερωτήσεις έρευνας: : Για κάθε, ποια είναι η συχνότερη πιθανή λύση; : Για κάθε, υπάρχει στατιστικά σημαντική διαφορά μεταξύ των μετρικών και ; Επιλογή project και αντικέιμενα Για αυτή την περίπτωση μελέτης της έρευνας μας επιλέξαμε να διερευνήσουμε πέντε (5) παιχνίδια ανοικτού κώδικα και μηχανές παιχνιδιών. Για κάθε project λογισμικού, επιλέξαμε δυο διαδοχικές εκδόσεις. Τα επιλεγόμενα λογισμικά και οι αντίστοιχες εκδόσεις αναφέρονται παρακάτω: Board Games (εκδόσεις 1.0 και 2.0) Gemp Animator (εκδόσεις 1.0 και 1.1) Diabolically Uncrashable (εκδόσεις και 0.4.0) Oware/Reversi Midlet (εκδόσεις και 0.1.4) Σελίδα 71 από 84

72 Mini Pauker (εκδόσεις 0.3 και 1.1) Η γλώσσα προγραμματισμού όλων των έργων είναι σε Java, λόγω των περιορισμών του εργαλείου ανίχνευσης προτύπου [14]. Επιπλέον, το εγχειρίδιο ελέγχου του πηγαίου κώδικα και το διάγραμμα κλάσεων έχουν πραγματοποιηθεί ούτως ώστε να εκχυλισθεί το σύνολο των κλάσεων που εκτελούν μια καθορισμένη λειτουργικότητα και να επικυρώνει την ύπαρξη των προτύπων υποδεικνύοντας το από το εργαλείο ανίχνευσης. Ως εκ τούτου, το μέγεθος, δηλαδή ο αριθμός των κλάσεων (NOC), που συμμετείχαν στη μελέτη περίπτωσης ήταν κατά προτίμηση μικρό Αναγνώριση μεθόδου σύγκρισης Το εμπειρικό σύνολο δεδομένων που έχει χρησιμοποιηθεί στην έρευνα αποτελείται από γραμμές για κάθε πρότυπο που έχει προστεθεί σε μια έκδοση λογισμικού. Όλες οι κλάσεις που συμμετέχουν σε ένα πρότυπο σχεδίασης θεωρούνται ως ένα πακέτο,. Στην προηγούμενη έκδοση του λογισμικού (χωρίς πρότυπο), το σύνολο των κλάσεων που παρέχουν παρόμοιες λειτουργικές δυνατότητες θεωρούνται ως ένα πακέτο,. Και στα δύο πακέτα, οι βαθμολογίες των μετρικών υπολογίζονται ως οι μέσες τιμές των βαθμολογιών των κλάσεων του πακέτου. MSjP i NOC i 1 k NOC MSjC i NOC : Συνολικός αριθμός των κλάσεων που υπάρχουν στο πακέτο MS j C i : Τιμή του βαθμού της μετρικής j από την κλάση i MS j P k : Τιμή του βαθμού της μετρικής j από το πακέτο k Τύπος Προτύπου Για να διερευνηθούν τα ερωτήματα της έρευνας, πραγματοποιούμε περιγραφική στατιστική και ο έλεγχος των υποθέσεων έχουν πραγματοποιηθεί με Wilcoxon. Πιο συγκεκριμένα, η υπόθεση έχει επικυρωθεί από τους πίνακες Σελίδα 72 από 84

73 συχνότητας και τα ιστογράμματα. Από την άλλη πλευρά, η υπόθεση έχει επικυρωθεί με δοκιμές Wilcoxon Rank Sum για ζεύγη δειγμάτων, που ερευνά την ύπαρξη στατιστικά σημαντικών διαφορών μεταξύ των μέσων τιμών των δύο μεταβλητών, δηλαδή για μια ομάδα, δηλαδή τα πακέτα που παρέχουν καθορισμένη λειτουργικότητα Ανάλυση και αναφορά των αποτελεσμάτων Στην ενότητα αυτή, παρουσιάζουμε τα αποτελέσματα της εμπειρικής μελέτης. Για την υπόθεση, δημιουργήσαμε 3 αρχεία τύπου excel ώστε να καταχωρήσουμε ομαδοποιημένα τα 3 πρότυπα που ερευνούμε (Decorator, Template Method, Strategy). H κάθε γραμμή αντιπροσωπεύει ένα πρότυπο που βρήσκεται σε κάποιο από τα πέντε έργα ανοιχτού λογισμικού. Η κάθε στήλη αντιπροσωπεύει τον μέσο όρο των μετρικών από όλες τις κλάσεις που υπάρχουν σε ένα πρότυπο. Χρησιμοποιώντας έναν έλεγχο στο αρχείο μας, διαπιστώσαμε ποια είναι η καλύτερη σχεδιαστική λύση (με πρότυπο ή χωρίς πρότυπο) στις μετρικές υψηλού επιπέδου ώστε να βρεθεί ο Περιγραφική Στατιστική Αναφορικά με το πρότυπο Decorator, το πλήθος των στιγμιοτύπων όπου η καλύτερη σχεδιαστική λύση είναι το πρότυπο ή και το πλήθος των στιγμιοτύπων όπου η λύση χωρίς πρότυπο είναι καλύτερη, σε ότι αφορά τις μετρικές υψηλού επιπέδου, φαίνεται στο Σχήμα 11. Σελίδα 73 από 84

74 Pattern Alternative Tie Σχήμα 11: Πρότυπο Decorator Από το σχήμα παρατηρείται ότι η σχεδιαστική λύση με πρότυπο(pattern) είναι συχνότερα καλύτερη στην μετρική Effectiveness σε σχέση με την σχεδιαστική λύση χωρίς πρότυπο(alternative). Στις μετρικές Extendibility και Flexibility φαίνεται πως συχνότερα καλύτερη σχεδιαστική λύση είναι αυτή χωρίς πρότυπο. Στις μετρικές Reusability, Functionality και Understandability φαίνεται πως δεν υπάρχει μεγάλη διαφορά μεταξύ των δύο σχεδιαστικών λύσεων. Αναφορικά με το πρότυπο Template Method, το πλήθος των στιγμιοτύπων όπου η καλύτερη σχεδιαστική λύση είναι το πρότυπο ή και το πλήθος των στιγμιοτύπων όπου η λύση χωρίς πρότυπο είναι καλύτερη, σε ότι αφορά τις μετρικές υψηλού επιπέδου, φαίνεται στο Σχήμα 12. Σελίδα 74 από 84

75 Pattern Alternative Tie Σχήμα 12: Πρότυπο Template Method Από το σχήμα παρατηρείται ότι η σχεδιαστική λύση με πρότυπο(pattern) είναι συχνότερα καλύτερη σε όλες τις μετρικές υψηλού επιπέδου σε σχέση με την σχεδιαστική λύση χωρίς πρότυπο(alternative). Αναφορικά με το πρότυπο Strategy, το πλήθος των στιγμιοτύπων όπου η καλύτερη σχεδιαστική λύση είναι το πρότυπο ή και το πλήθος των στιγμιοτύπων όπου η λύση χωρίς πρότυπο είναι καλύτερη, σε ότι αφορά τις μετρικές υψηλού επιπέδου, φαίνεται στο Σχήμα 13. Σελίδα 75 από 84

76 Pattern Alternative Tie Σχήμα 13: Πρότυπο Strategy Από το σχήμα παρατηρείται ότι η σχεδιαστική λύση με πρότυπο(pattern) είναι συχνότερα καλύτερη στην μετρική Effectiveness σε σχέση με την σχεδιαστική λύση χωρίς πρότυπο(alternative). Στις μετρικές Reusability και Understandability φαίνεται πως συχνότερα καλύτερη σχεδιαστική λύση είναι αυτή χωρίς πρότυπο. Στις μετρικές Functionality, Extendibility και Flexibility φαίνεται πως δεν υπάρχει μεγάλη διαφορά μεταξύ των δύο σχεδιαστικών λύσεων Έλεγχος Υποθέσεων Για την υπόθεση χρησιμοποιήσαμε το στατιστικό πακέτο SPSS και πιο συγκεκριμένα κάναμε paired sample T-test για να συγκρίνουμε εάν οι μετρικές της σχεδιαστικής λύσης με πρότυπο έχει στατιστικά σημαντική διαφορά με τις μετρικές της σχεδιαστικής λύσης χωρίς πρότυπο. Σελίδα 76 από 84

ΑΛΕΞΑΝΔΡΕΙΟ ΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

ΑΛΕΞΑΝΔΡΕΙΟ ΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΑΛΕΞΑΝΔΡΕΙΟ ΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Εμπειρική Μελέτη της Εξέλιξης της Ποιότητας του Κώδικα Ανοιχτού Λογισμικού Τριανταφυλλίδου Νόνα ΑΜ:05/2777

Διαβάστε περισσότερα

Εμπειρική Μελέτη της Εξέλιξης της Ποιότητας του Κώδικα Ανοιχτού Λογισμικού

Εμπειρική Μελέτη της Εξέλιξης της Ποιότητας του Κώδικα Ανοιχτού Λογισμικού ΑΛΕΞΑΝΔΡΕΙΟ ΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Εμπειρική Μελέτη της Εξέλιξης της Ποιότητας του Κώδικα Ανοιχτού Λογισμικού της φοιτήτριας: Τριανταφυλλίδου

Διαβάστε περισσότερα

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Αξιολόγηση των Σχεδιαστικών Προτύπων και της Ποιότητας του Λογισμικού μέσω Μετρικών, στις Περιπτώσεις Προσθήκης Λειτουργικότητας και

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Αξιολόγηση των Σχεδιαστικών Προτύπων και της Ποιότητας του Λογισμικού μέσω Μετρικών, στις Περιπτώσεις Προσθήκης Λειτουργικότητας και ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Αξιολόγηση των Σχεδιαστικών Προτύπων και της Ποιότητας του Λογισμικού μέσω Μετρικών, στις Περιπτώσεις Προσθήκης Λειτουργικότητας και Αναδόμησης του Κώδικα Η πτυχιακή περιλαμβάνει τα παρακάτω:

Διαβάστε περισσότερα

Στόχοι της Πτυχιακής

Στόχοι της Πτυχιακής Αξιολόγηση της επίδρασης της χρήσης προτύπων σχεδίασης στις τιμές των μετρικών αντικειμενοστρεφούς σχεδίασης. Εφαρμογή σε εργαλείο σχεδίασης λογισμικού Βούλγαρης Μιχάλης Στόχοι της Πτυχιακής Επίδραση των

Διαβάστε περισσότερα

Εισαγωγή στη Σχεδίαση Λογισμικού

Εισαγωγή στη Σχεδίαση Λογισμικού Εισαγωγή στη Σχεδίαση Λογισμικού περιεχόμενα παρουσίασης Τι είναι η σχεδίαση λογισμικού Έννοιες σχεδίασης Δραστηριότητες σχεδίασης Σχεδίαση και υποδείγματα ανάπτυξης λογισμικού σχεδίαση Η σχεδίαση του

Διαβάστε περισσότερα

Πληροφορική 2. Τεχνολογία Λογισμικού

Πληροφορική 2. Τεχνολογία Λογισμικού Πληροφορική 2 Τεχνολογία Λογισμικού 1 2 Κρίση Λογισμικού (1968) Στην δεκαετία του 1970 παρατηρήθηκαν μαζικά: Μεγάλες καθυστερήσεις στην ολοκλήρωση κατασκευής λογισμικών Μεγαλύτερα κόστη ανάπτυξης λογισμικού

Διαβάστε περισσότερα

Διαγράμματα Κλάσεων στη Σχεδίαση

Διαγράμματα Κλάσεων στη Σχεδίαση Διαγράμματα Κλάσεων στη Σχεδίαση περιεχόμενα παρουσίασης Αφηρημένες κλάσεις Ιδιότητες Λειτουργίες Απλοί τύποι Συσχετίσεις Εξάρτηση Διεπαφές αφηρημένες κλάσεις Οι αφηρημένες κλάσεις δεν μπορούν να δημιουργήσουν

Διαβάστε περισσότερα

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Πρότυπα Σχεδίασης. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Πρότυπα Σχεδίασης. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Πρότυπα Σχεδίασης Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική Θεσσαλονίκη, Σεπτέμβριος 2013 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Επίδραση των Προτύπων Σχεδίασης στην Ποιότητα Λογισμικού

Επίδραση των Προτύπων Σχεδίασης στην Ποιότητα Λογισμικού ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΜΠΑΤΖΟΓΛΟΥ ΑΠΟΣΤΟΛΟΣ Επίδραση των Προτύπων Σχεδίασης στην Ποιότητα Λογισμικού ΔΙΔΑΚΤΟΡΙΚΗ ΔΙΑΤΡΙΒΗ ΘΕΣΣΑΛΟΝΙΚΗ 2012 2

Διαβάστε περισσότερα

Αρχιτεκτονική Λογισμικού

Αρχιτεκτονική Λογισμικού Αρχιτεκτονική Λογισμικού περιεχόμενα παρουσίασης Τι είναι η αρχιτεκτονική λογισμικού Αρχιτεκτονική και απαιτήσεις Σενάρια ποιότητας Βήματα αρχιτεκτονικής σχεδίασης Αρχιτεκτονικά πρότυπα Διαστρωματωμένη

Διαβάστε περισσότερα

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE) EPL 603 TOPICS IN SOFTWARE ENGINEERING Lab 5: Component Adaptation Environment (COPE) Performing Static Analysis 1 Class Name: The fully qualified name of the specific class Type: The type of the class

Διαβάστε περισσότερα

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών ΜΟΡΥΕ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ Διαδικασιακός ή Διαδικαστικός (Procedural)

Διαβάστε περισσότερα

Ελεύθερο Λογισμικό. Η αρχή της ιστορίας Κιαγιαδάκης Γιώργος (το labάκι)

Ελεύθερο Λογισμικό. Η αρχή της ιστορίας Κιαγιαδάκης Γιώργος (το labάκι) Ελεύθερο Λογισμικό Η αρχή της ιστορίας Κιαγιαδάκης Γιώργος (το labάκι) Τι είναι το Λογισμικό; Τι είναι το Λογισμικό; Λογισμικό Οδηγίες (Προγράμματα) Δεδομένα... για τον Ηλεκτρονικό Υπολογιστή Τι είναι

Διαβάστε περισσότερα

ΑΛΕΞΑΝΔΡΕΙΟ Τ.Ε.Ι ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Πτυχιακή εργασία

ΑΛΕΞΑΝΔΡΕΙΟ Τ.Ε.Ι ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Πτυχιακή εργασία ΑΛΕΞΑΝΔΡΕΙΟ Τ.Ε.Ι ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Πτυχιακή εργασία «ΕΜΠΕΙΡΙΚΗ ΜΕΛΕΤΗ ΤΗΣ ΕΠΙΔΡΑΣΗΣ ΤΩΝ ΠΡΟΤΥΠΩΝ ΣΧΕΔΙΑΣΗΣ ΣΤΑ ΣΦΑΛΜΑΤΑ ΛΟΓΙΣΜΙΚΟΥ ΠΑΙΧΝΙΔΙΩΝ» Της φοιτήτριας

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΡΟΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΜΑΘΗΜΑ: ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Διδάσκων: Γ. Χαραλαμπίδης,

Διαβάστε περισσότερα

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης ΠΟΛΥΜΟΡΦΙΣΜΟΣ Λόγω της θεμελιώδους σημασίας της έννοιας του πολυμορφισμού (polymorphism) στην αντικειμενοστρεφή σχεδίαση, κρίνεται σκόπιμο στο σημείο αυτό του βιβλίου να αναλυθεί εκτενέστερα. Ο πολυμορφισμός

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ

ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Sites:

Διαβάστε περισσότερα

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού Πρόλογος...21 μέρος A Εισαγωγή στην Τεχνολογία Λογισμικού 1 Εισαγωγή στην Τεχνολογία Λογισμικού 1.1 Το λογισμικό...25 1.1.1 Ο ρόλος και η σημασία του λογισμικού...26 1.1.2 Οικονομική σημασία του λογισμικού...28

Διαβάστε περισσότερα

Μοτίβα Σχεδίασης (Design Patterns)

Μοτίβα Σχεδίασης (Design Patterns) Ενότητα 6 Μοτίβα Σχεδίασης (Design Patterns) Ορισµοί βασικές έννοιες. Σηµαντικά µοτίβα σχεδίασης: Παρατηρητής (Observer). Πρόσοψη (Façade). Προσαρµογέας (Adapter). Πληρεξούσιος (Proxy). Μοναχοπαίδι (Singleton).

Διαβάστε περισσότερα

Τεχνολογία Λογισμικού

Τεχνολογία Λογισμικού Τεχνολογία Λογισμικού Προαπαιτήσεις Γνώση Αρχών Προγραμματισμού Γνώση Γλώσσας Προγραμματισμού (C++, Java, Pascal) Χρήση Η/Υ (Σχεδίαση, Επεξ. Κειμένου) Κριτική και Συνθετική Ικανότητα Σκοπός μαθήματος Γνωριμία

Διαβάστε περισσότερα

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Κεφάλαιο 7 ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Ερωτήσεις 1. Να αναφέρετε διαφορές μεταξύ γλωσσών μηχανής και γλωσσών χαμηλού επιπέδου. Οι γλώσσες μηχανής κωδικοποιούν τις εντολές τους με ομάδες

Διαβάστε περισσότερα

Το Ευρωπαϊκό Πρόγραμμα. Motor Challenge

Το Ευρωπαϊκό Πρόγραμμα. Motor Challenge ΕΥΡΩΠΑΪΚΗ ΕΠΙΤΡΟΠΗ Γενική Διεύθυνση Ενέργειας και Μεταφορών Προώθηση των Ανανεώσιμων Πηγών Ενέργειας & Απαιτούμενη Διαχείριση Το Ευρωπαϊκό Πρόγραμμα Motor Challenge Ενότητα Πολιτικής Ενεργειακής Διαχείρισης

Διαβάστε περισσότερα

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Διαδικασίες παραγωγής λογισμικού Περιεχόμενα Παρουσίαση μοντέλων διεργασίας ανάπτυξης λογισμικού Περιγραφή τριών γενικών μοντέλων διεργασίας ανάπτυξης λογισμικού Γενική περιγραφή των διαδικασιών που περιλαμβάνονται

Διαβάστε περισσότερα

Σχεδίαση Κλάσεων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

Σχεδίαση Κλάσεων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση: Σχεδίαση Κλάσεων Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Έκδοση: 2010.11.19 Εισαγωγή 2 ιαρκής συντήρηση και επέκταση λογισµικού Οι εταιρίες συνήθως συντηρούν, επεκτείνουν

Διαβάστε περισσότερα

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 4 : Τεχνολογία λογισμικού. Δρ.

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 4 : Τεχνολογία λογισμικού. Δρ. 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Πληροφορική II Ενότητα 4 : Τεχνολογία λογισμικού Δρ. Γκόγκος Χρήστος 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Χρηματοοικονομικής

Διαβάστε περισσότερα

Ένωση Ελλήνων Χρηστών και Φίλων ΕΛ/ΛΑΚ

Ένωση Ελλήνων Χρηστών και Φίλων ΕΛ/ΛΑΚ Ένωση Ελλήνων Χρηστών και Φίλων ΕΛ/ΛΑΚ Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα Ελεύθερο Λογισμικό Λογισμικό Ανοικτού Κώδικα GNU/Linux and FOSS Το κίνημα του ελεύθερου λογισμικού Έχει ως στόχο να

Διαβάστε περισσότερα

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

Διαβάστε περισσότερα

. Μεθοδολογία Προγραμματισμού. Εισαγωγή. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

. Μεθοδολογία Προγραμματισμού. Εισαγωγή. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014 .. Μεθοδολογία Προγραμματισμού Νικόλαος Πεταλίδης Τμήμα Μηχανικών Η/Υ ΤΕΙ Κεντρικής Μακεδονίας Εαρινό Εξάμηνο 2014 Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 1 / 24 Μεθοδολογία

Διαβάστε περισσότερα

Σχεδιασµός βασισµένος σε συνιστώσες

Σχεδιασµός βασισµένος σε συνιστώσες Σχεδιασµός βασισµένος σε συνιστώσες 1 Ενδεικτικά περιεχόµενα του κεφαλαίου Ποια είναι τα "άτοµα", από τα οποία κατασκευάζονται οι υπηρεσίες; Πώς οργανώνουµε τις συνιστώσες σε ένα αρµονικό σύνολο; Τι είναι

Διαβάστε περισσότερα

Ελληνικό Ανοικτό Πανεπιστήµιο. Βασικές έννοιες αντικειµενοστρεφούς τεχνολογίας. ρ. Πάνος Φιτσιλής

Ελληνικό Ανοικτό Πανεπιστήµιο. Βασικές έννοιες αντικειµενοστρεφούς τεχνολογίας. ρ. Πάνος Φιτσιλής 1 Ελληνικό Ανοικτό Πανεπιστήµιο Βασικές έννοιες αντικειµενοστρεφούς τεχνολογίας ρ. Πάνος Φιτσιλής Περιεχόµενα Βασικές έννοιες αντικειµενοστεφούς τρόπου ανάπτυξης Τι είναι κλάση Τι είναι αντικείµενο 2 Βασικές

Διαβάστε περισσότερα

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Διάλεξη 8: Σχεδίαση Συστήματος Σχεδίαση Συστήματος 2 Διεργασία μετατροπής του προβλήματος σε λύση. Από το Τί στο Πώς. Σχέδιο: Λεπτομερής περιγραφή της λύσης. Λύση:

Διαβάστε περισσότερα

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 1: Βασικές Αρχές Αντικειμενοστραφούς Σχεδίασης Συστημάτων και Εφαρμογών (1ο Μέρος)

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 1: Βασικές Αρχές Αντικειμενοστραφούς Σχεδίασης Συστημάτων και Εφαρμογών (1ο Μέρος) Πληροφοριακά Συστήματα Διοίκησης Ενότητα 1: Βασικές Αρχές Αντικειμενοστραφούς Σχεδίασης Συστημάτων και Εφαρμογών (1ο Μέρος) Γρηγόριος Μπεληγιάννης Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης

Διαβάστε περισσότερα

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

Διαβάστε περισσότερα

Μοντελοποίηση Συστημάτων. Διαγράμματα Κλάσεων ClassDiagrams

Μοντελοποίηση Συστημάτων. Διαγράμματα Κλάσεων ClassDiagrams Μοντελοποίηση Συστημάτων Διαγράμματα Κλάσεων ClassDiagrams Διαγράμματα Κλάσεων Χρησιμοποιούνται στα βήματα: Ανάλυση απαιτήσεων Π.Σ. Σχεδιασμός Π.Σ. Είναι στατικά διαγράμματα που δείχνουν: Κλάσεις Ιδιότητες

Διαβάστε περισσότερα

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Διάλεξη 2: Βασικές Έννοιες Τεχνολογίας Λογισμικού Ο Ρόλος του Τεχνολόγου Λογισμικού Επιστήμη Υπολογιστών Πελάτης 2 Θεωρίες Λειτουργίες Υπολογιστή Πρόβλημα Σχεδιασμός

Διαβάστε περισσότερα

Εισαγωγή στην Τεχνολογία Λογισμικού

Εισαγωγή στην Τεχνολογία Λογισμικού Εισαγωγή στην Τεχνολογία Λογισμικού περιεχόμενα παρουσίασης Αντικείμενο της Τεχνολογίας Λογισμικού Η ανάπτυξη λογισμικού Μοντέλα διαδικασίας λογισμικού τεχνολογία λογισμικού Κλάδος της πληροφορικής που

Διαβάστε περισσότερα

ΠΙΝΑΚΑΣ ΚΡΙΤΗΡΙΩΝ ΑΞΙΟΛΟΓΗΣΗΣ. Τίτλος Κριτηρίου. Α.1 Οργανωτική Δομή - Οικονομικά στοιχεία 10%

ΠΙΝΑΚΑΣ ΚΡΙΤΗΡΙΩΝ ΑΞΙΟΛΟΓΗΣΗΣ. Τίτλος Κριτηρίου. Α.1 Οργανωτική Δομή - Οικονομικά στοιχεία 10% Κριτήρια Αξιολόγησης Η αξιολόγηση των υποβαλλόμενων προτάσεων θα πραγματοποιηθεί βάσει του ακόλουθου Πίνακα Κριτηρίων Αξιολόγησης. Παράλληλα με τα εν λόγω κριτήρια, θα συνυπολογισθεί η αξιοπιστία της πρότασης

Διαβάστε περισσότερα

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Νίκος Παπασπύρου Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής

Διαβάστε περισσότερα

Υποδείγματα Ανάπτυξης

Υποδείγματα Ανάπτυξης Υποδείγματα Ανάπτυξης περιεχόμενα παρουσίασης Αποσύνθεση Αφαίρεση Μοντελοποίηση Η δεδομένο λειτουργική προσέγγιση Η αντικειμενοστρεφής προσέγγιση αποσύνθεση Όταν επιχειρούμε τη λύση ενός προβλήματος, πρώτα

Διαβάστε περισσότερα

. Μεθοδολογία Προγραμματισμού. Μοτίβα σχεδίασης (Design Patterns) Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

. Μεθοδολογία Προγραμματισμού. Μοτίβα σχεδίασης (Design Patterns) Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014 .. Μεθοδολογία Προγραμματισμού Μοτίβα σχεδίασης (Design Patterns) Νικόλαος Πεταλίδης Τμήμα Μηχανικών Η/Υ ΤΕΙ Κεντρικής Μακεδονίας Εισαγωγή Εαρινό Εξάμηνο 2014 Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΡΟΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΜΑΘΗΜΑ: ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ ΔΙΑΔΙΚΑΣΙΕΣ ΠΑΡΑΓΩΓΗΣ ΛΟΓΙΣΜΙΚΟΥ Διδάσκων: Γ. Χαραλαμπίδης,

Διαβάστε περισσότερα

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

public void printstatement() { System.out.println(Employee:  + name +  with salary:  + salary); Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ ΥΠΟΥΡΓΕΙΟ ΕΘΝΙΚΗΣ ΠΑΙΔΕΙΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ Κ Υ Κ Λ Ο Υ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ Κ Α Ι Υ Π Η Ρ Ε Σ Ι Ω Ν Τ Ε Χ Ν Ο Λ Ο Γ Ι Κ Η

Διαβάστε περισσότερα

Οδηγίες Συγγραφής και Αξιολόγησης Εργασιών του μαθήματος

Οδηγίες Συγγραφής και Αξιολόγησης Εργασιών του μαθήματος ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Αντικειμενοστρεφής Προγραμματισμός Η/Υ Οδηγίες Συγγραφής και Αξιολόγησης Εργασιών του μαθήματος Το κείμενο αυτό γράφεται με σκοπό να βοηθήσει τους φοιτητές του μαθήματος

Διαβάστε περισσότερα

Ενότητα 3 (κεφάλαιο 16) Επαναχρησιμοποίηση Λογισμικού

Ενότητα 3 (κεφάλαιο 16) Επαναχρησιμοποίηση Λογισμικού ΕΠΛ362: Τεχνολογία Λογισμικού ΙΙ (μετάφραση στα ελληνικά των διαφανειών του βιβλίου Software Engineering, 9/E, Ian Sommerville, 2011) Ενότητα 3 (κεφάλαιο 16) Επαναχρησιμοποίηση Λογισμικού Οι διαφάνειες

Διαβάστε περισσότερα

Θέματα ποιότητας (1/5)

Θέματα ποιότητας (1/5) Θέματα ποιότητας (1/5) Καλό λογισμικό ποιότητα Ποιότητα: Προϊόντος Σε σχέση με διεργασίες του επιχειρηματικού περιβάλλοντος 1 Θέματα ποιότητας (2/5) Άποψη χρηστών με βάση τη λειτουργικότητα, τις αστοχίες,

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ Εισαγωγή Μεθοδολογία της Έρευνας ΕΙΚΟΝΑ 1-1 Μεθοδολογία της έρευνας.

ΚΕΦΑΛΑΙΟ Εισαγωγή Μεθοδολογία της Έρευνας ΕΙΚΟΝΑ 1-1 Μεθοδολογία της έρευνας. ΚΕΦΑΛΑΙΟ 1 Εισαγωγή Η Μεθοδολογία της Έρευνας (research methodology) είναι η επιστήμη που αφορά τη μεθοδολογία πραγματοποίησης μελετών με συστηματικό, επιστημονικό και λογικό τρόπο, με σκοπό την παραγωγή

Διαβάστε περισσότερα

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016 FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016 M8 Αντικειμενοστραφής Προγραμματισμός Δρ. Γεώργιος Παπαλάμπρου Επικ. Καθηγητής ΕΜΠ Εργαστήριο Ναυτικής Μηχανολογίας george.papalambrou@lme.ntua.gr

Διαβάστε περισσότερα

Έλεγχος Συνένωσης και Διασφάλιση Ποιότητας

Έλεγχος Συνένωσης και Διασφάλιση Ποιότητας Έλεγχος Συνένωσης και Διασφάλιση Ποιότητας περιεχόμενα παρουσίασης Έλεγχος συνένωσης Συνένωση και οικοδόμηση Ημερήσια οικοδόμηση Συνεχής συνένωση Σχετικές επιδόσεις μεθόδων διασφάλισης ποιότητας Μετρικές

Διαβάστε περισσότερα

Διαχείριση Ανθρώπινου Δυναμικού ή Διοίκηση Προσωπικού. Οργανωσιακή Κουλτούρα

Διαχείριση Ανθρώπινου Δυναμικού ή Διοίκηση Προσωπικού. Οργανωσιακή Κουλτούρα Διαχείριση Ανθρώπινου Δυναμικού ή Διοίκηση Προσωπικού Οργανωσιακή Κουλτούρα Οργανωσιακή Κουλτούρα, Εννοιολογικός Προσδιορισμός O Ο όρος Οργανωσιακή Κουλτούρα πρωτοεμφανίστηκε στην αμερικάνικη ακαδημαϊκή

Διαβάστε περισσότερα

Σχεδιαστικά Προγράμματα Επίπλου

Σχεδιαστικά Προγράμματα Επίπλου Σχεδιαστικά Προγράμματα Επίπλου Καθηγήτρια ΦΕΡΦΥΡΗ ΣΩΤΗΡΙΑ Τμήμα ΣΧΕΔΙΑΣΜΟΥ & ΤΕΧΝΟΛΟΓΙΑΣ ΞΥΛΟΥ - ΕΠΙΠΛΟΥ Σχεδιαστικά Προγράμματα Επίπλου Η σχεδίαση με τον παραδοσιακό τρόπο απαιτεί αυξημένο χρόνο, ενώ

Διαβάστε περισσότερα

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου J-GANNO ΓΕΝΙΚΕΥΜΕΝΟ ΠΑΚΕΤΟ ΥΛΟΠΟΙΗΣΗΣ ΤΕΧΝΗΤΩΝ ΝΕΥΡΩΝΙΚΩΝ ΙΚΤΥΩΝ ΣΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ JAVA Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β,

Διαβάστε περισσότερα

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού Τµήµα Διοίκησης Επιχειρήσεων Τει Δυτικής Ελλάδας Μεσολόγγι Δρ. Α. Στεφανή Διάλεξη 2 2 Agenda Ποιότητα Λογισµικού Εσωτερικές Μετρικές Εξωτερικές Μετρικές

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 1: Αντικειμενοστραφής Προγραμματισμός Εισαγωγή OBJECT-ORIENTED PROGRAMMING ΔΙΔΑΣΚΟΝΤΕΣ: Iωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ

Διαβάστε περισσότερα

Αρχιτεκτονικές Συστημάτων

Αρχιτεκτονικές Συστημάτων ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Αρχιτεκτονικές Συστημάτων Κατερίνα Πραματάρη Αρχιτεκτονικές Συστημάτων Σχεδίαση και Αρχιτεκτονική Συστήματος Αρχιτεκτονική Πελάτη-Εξυπηρετητή

Διαβάστε περισσότερα

ΑΝΑΛΥΣΗ ΑΠΑΙΤΗΣΕΩΝ ανάλυση απαιτήσεων Σε αυτό το μάθημα θα ασχοληθούμε με : Δημιουργία μοντέλων

ΑΝΑΛΥΣΗ ΑΠΑΙΤΗΣΕΩΝ ανάλυση απαιτήσεων Σε αυτό το μάθημα θα ασχοληθούμε με : Δημιουργία μοντέλων ΑΝΑΛΥΣΗ ΑΠΑΙΤΗΣΕΩΝ Οι Μηχανικοί Λογισμικού παράγουν μοντέλα που βοηθούν στη διατύπωση των απαιτήσεων με τη μορφή προδιαγραφών. Η εργασία της παραγωγής μοντέλων περιγράφεται ως ανάλυση απαιτήσεων. Η ανάλυση

Διαβάστε περισσότερα

Πληροφοριακά Συστήματα Διοίκησης. Διοικητική Επιστήμη και Λήψη Αποφάσεων

Πληροφοριακά Συστήματα Διοίκησης. Διοικητική Επιστήμη και Λήψη Αποφάσεων Πληροφοριακά Συστήματα Διοίκησης Διοικητική Επιστήμη και Λήψη Αποφάσεων Η πολυπλοκότητα των αποφάσεων Αυξανόμενη πολυπλοκότητα λόγω: Ταχύτητας αλλαγών στο εξωτερικό περιβάλλον της επιχείρησης. Έντασης

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό με C++

Εισαγωγή στον Προγραμματισμό με C++ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στον Προγραμματισμό με C++ Ενότητα # 9: Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό Κωνσταντίνος Κουκουλέτσος Τμήμα

Διαβάστε περισσότερα

Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙΔΙΚΕΥΣΗΣ. Υ7ΐοβάλλεται στην

Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙΔΙΚΕΥΣΗΣ. Υ7ΐοβάλλεται στην Κατηγοριοποίηση Σχεδιαστικών Προτύπων Αντικειμενοστρεφούς Σχεδίασης Βασισμένη σε Μετρικές Ποιότητας Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙΔΙΚΕΥΣΗΣ Υ7ΐοβάλλεται στην ορισθείσα από την Γενική Συνέλευση Ειδικής Σύνθεσης

Διαβάστε περισσότερα

ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ

ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ ΥΠΟΥΡΓΕΙΟ ΕΘΝΙΚΗΣ ΠΑΙΔΕΙΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΙΣΧΥΕΙ ΚΑΤΑ ΤΟ ΜΕΡΟΣ ΠΟΥ ΑΦΟΡΑ ΤΟ ΛΥΚΕΙΟ ΓΙΑ ΤΗΝ ΥΠΟΧΡΕΩΤΙΚΗ ΕΚΠΑΙΔΕΥΣΗ ΙΣΧΥΟΥΝ ΤΟ ΔΕΠΠΣ

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

Σύνθεση και Κληρονομικότητα

Σύνθεση και Κληρονομικότητα Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση

Διαβάστε περισσότερα

Διαγράμματα UML στην Ανάλυση. Μέρος Β Διαγράμματα Κλάσεων Διαγράμματα Αντικειμένων

Διαγράμματα UML στην Ανάλυση. Μέρος Β Διαγράμματα Κλάσεων Διαγράμματα Αντικειμένων Διαγράμματα UML στην Ανάλυση Μέρος Β Διαγράμματα Κλάσεων Διαγράμματα Αντικειμένων περιεχόμενα παρουσίασης Διαγράμματα κλάσεων Διαγράμματα αντικειμένων διαγράμματα κλάσεων Χρησιμοποιούνται στην ανάλυση

Διαβάστε περισσότερα

Εκπαιδευτική Μονάδα 10.2: Εργαλεία χρονοπρογραμματισμού των δραστηριοτήτων.

Εκπαιδευτική Μονάδα 10.2: Εργαλεία χρονοπρογραμματισμού των δραστηριοτήτων. Εκπαιδευτική Μονάδα 10.2: Εργαλεία χρονοπρογραμματισμού των δραστηριοτήτων. Στην προηγούμενη Εκπαιδευτική Μονάδα παρουσιάστηκαν ορισμένα χρήσιμα παραδείγματα διαδεδομένων εργαλείων για τον χρονοπρογραμματισμό

Διαβάστε περισσότερα

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13 Wrapper Classes, Abstract Classes and Interfaces Διάλεξη #13: Μεταβλητές/μέθοδοι κλάσης, αφηρημένες κλάσεις και διαπροσωπείες Μεταβλητές /πεδία κλάσης [class variables] Τα αντικείμενα ανήκουν σε κλάσεις

Διαβάστε περισσότερα

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Γρηγόρης Πράσινος Υποψήφιος ιδάκτωρ Τµήµα Μηχ/κων Η/Υ &

Διαβάστε περισσότερα

Συστήµατα Τηλεκπαίδευσης: Κύκλος ζωής εκπαιδευτικού υλικού

Συστήµατα Τηλεκπαίδευσης: Κύκλος ζωής εκπαιδευτικού υλικού 1 Συστήµατα Τηλεκπαίδευσης: Κύκλος ζωής εκπαιδευτικού υλικού Τµήµα Διοίκησης Επιχειρήσεων Τει Δυτικής Ελλάδας Μεσολόγγι Δρ. Α. Στεφανή Διάλεξη 3 Το Εκπαιδευτικό Υλικό Το Εκπαιδευτικό Υλικό, έχει έντυπη

Διαβάστε περισσότερα

Σύνθεση και Κληρονομικότητα

Σύνθεση και Κληρονομικότητα Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση

Διαβάστε περισσότερα

Περιεχόμενα. Κεφάλαιο 2 Κοινωνικοτεχνικά συστήματα 49

Περιεχόμενα. Κεφάλαιο 2 Κοινωνικοτεχνικά συστήματα 49 Περιεχόμενα Πρόλογος 5 Μέρος 1 Επισκόπηση 27 Κεφάλαιο 1 Εισαγωγή 29 1.1 Συχνές ερωτήσεις για την τεχνολογία λογισμικού 31 1.2 Επαγγελματική και ηθική ευθύνη 41 Κύρια σημεία 46 Πρόσθετες πηγές 46 Ασκήσεις

Διαβάστε περισσότερα

ΕΠΙΧΕΙΡΗΜΑΤΙΚΟΤΗΤΑ ΚΑΙ ΚΑΙΝΟΤΟΜΙΑ

ΕΠΙΧΕΙΡΗΜΑΤΙΚΟΤΗΤΑ ΚΑΙ ΚΑΙΝΟΤΟΜΙΑ ΕΠΙΧΕΙΡΗΜΑΤΙΚΟΤΗΤΑ ΚΑΙ Διοίκηση Επιχειρήσεων Έννοια του Μάνατζμεντ Ικανότητες των Μάνατζερ Στόχοι του Μάνατζμεντ Βασικές Λειτουργίες του Μάνατζμεντ Σχεδιασμός Οργάνωση Διεύθυνση Έλεγχος Εφαρμογή του Μάνατζμεντ

Διαβάστε περισσότερα

Μηχανική Λογισμικού με Ανοιχτό Λογισμικό Δρ. Γεώργιος Κακαρόντζας Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Α.Τ.Ε.Ι. Θεσσαλίας

Μηχανική Λογισμικού με Ανοιχτό Λογισμικό Δρ. Γεώργιος Κακαρόντζας Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Α.Τ.Ε.Ι. Θεσσαλίας Μηχανική Λογισμικού με Ανοιχτό Λογισμικό Δρ. Γεώργιος Κακαρόντζας Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Α.Τ.Ε.Ι. Θεσσαλίας 1 Ατζέντα Εισαγωγή Εργαλεία Ανοιχτού Λογισμικού για Μηχανικούς Λογισμικού Χρήση και

Διαβάστε περισσότερα

Κατασκευή Μαθησιακών Στόχων και Κριτηρίων Επιτυχίας: Αξιολόγηση για Μάθηση στην Πράξη

Κατασκευή Μαθησιακών Στόχων και Κριτηρίων Επιτυχίας: Αξιολόγηση για Μάθηση στην Πράξη Κατασκευή Μαθησιακών Στόχων και Κριτηρίων Επιτυχίας: Αξιολόγηση για Μάθηση στην Πράξη Μαργαρίτα Χριστοφορίδου 25 Απριλίου 2015 ΕΚΠΑΙΔΕΥΤΙΚΗ ΗΜΕΡΙΔΑ «ΑΞΙΟΛΟΓΗΣΗ ΤΟΥ ΜΑΘΗΤΗ- ΣΥΓΧΡΟΝΕΣ ΤΑΣΕΙΣ-ΠΡΑΚΤΙΚΕΣ ΕΦΑΡΜΟΓΕΣ»

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗ ΔΙΑΧΕΙΡΙΣΗ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΡΓΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗ ΔΙΑΧΕΙΡΙΣΗ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΡΓΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗ ΔΙΑΧΕΙΡΙΣΗ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΡΓΩΝ 1. Διαχείριση έργων Τις τελευταίες δεκαετίες παρατηρείται σημαντική αξιοποίηση της διαχείρισης έργων σαν ένα εργαλείο με το οποίο οι διάφορες επιχειρήσεις

Διαβάστε περισσότερα

Μεθοδολογίες Παραγωγής Λογισµικού

Μεθοδολογίες Παραγωγής Λογισµικού Μεθοδολογίες Παραγωγής Λογισµικού Βασικά Γενικά Μοντέλα Μοντέλο καταρράκτη (waterfall model) Ξεχωριστές φάσεις καθορισµού απαιτήσεων και ανάπτυξης, επικύρωσης, εξέλιξης Εξελικτική ανάπτυξη (evolutionary

Διαβάστε περισσότερα

Κεφάλαιο 2ο. Κατανοώντας την αντικειμενοστρέφεια

Κεφάλαιο 2ο. Κατανοώντας την αντικειμενοστρέφεια Περιεχόμενα Πρόλογος... 11 Κεφάλαιο 1ο. Εισαγωγή στη γλώσσα UML 1.1 Προσθέτοντας μια νέα μέθοδο...13 1.2 Πως αναπτύχθηκε η UML...14 1.3 Κατανοώντας την UML...15 1.4 Αναγνωρίζοντας τα επί μέρους τμήματα

Διαβάστε περισσότερα

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Τεχνολογία Λογισμικού Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

Comparative Study of API vs. Open-Source Software ZAPROUDI A. PASCHALIA. Supervisor: CHATZHGEORGIOU ALEXANDROS

Comparative Study of API vs. Open-Source Software ZAPROUDI A. PASCHALIA. Supervisor: CHATZHGEORGIOU ALEXANDROS Comparative Study of API vs. Open-Source Software ZAPROUDI A. PASCHALIA Supervisor: CHATZHGEORGIOU ALEXANDROS ΕΙΣΑΓΩΓΗ «Κάθε στοιχείο σε μία βιβλιοθήκη γράφεται για να διατηρηθεί στον χρόνο» J. Tulach.

Διαβάστε περισσότερα

ΣΧΕΔΙΑΣΗ & ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ

ΣΧΕΔΙΑΣΗ & ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΣΧΕΔΙΑΣΗ & ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ Διδάσκουσα: Χαρίκλεια Τσαλαπάτα Πανεπιστήμιο Θεσσαλίας ΤΗΜΜΥ 420 htsalapa@inf.uth.gr (e-ce.uth.gr) 1 Εκπαιδευτικό υλικό μαθήματος Ιστοσελίδα: http://eclass.uth.gr/eclass/courses/mhx330/

Διαβάστε περισσότερα

Η συμβολή στην επιτυχία ενός οργανισμού, παρουσιάζοντας σχετικά δεδομένα με τη χρήση τεχνικών 2Δ ή 3Δ τεχνολογίας. Αρμοδιότητα

Η συμβολή στην επιτυχία ενός οργανισμού, παρουσιάζοντας σχετικά δεδομένα με τη χρήση τεχνικών 2Δ ή 3Δ τεχνολογίας. Αρμοδιότητα Σχεδιαστής Ψηφιακών Κινούμενων Σχεδίων ή Digital Animator 1. Περιγραφή Ρόλου Τίτλος Προφίλ Σχε Σχεδιαστής Ψηφιακών Κινούμενων Σχεδίων ή Digital Animator Γνωστό και ως Ειδικός Σχεδιασμού 2Δ- 3Δ γραφικών,

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 15: Σχεδίαση Εφαρμογών Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

ΕΡΓΟ: Συγκριτική Μελέτη Λογισμικού Βιβλιοθηκών, Λογισμικού Εφαρμογών Ανοικτού Κώδικα και Βιομηχανικού Λογισμικού MIS:

ΕΡΓΟ: Συγκριτική Μελέτη Λογισμικού Βιβλιοθηκών, Λογισμικού Εφαρμογών Ανοικτού Κώδικα και Βιομηχανικού Λογισμικού MIS: ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ, ΔΙΑ ΒΙΟΥ ΜΑΘΗΣΗΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ΕΙΔΙΚΗ ΥΠΗΡΕΣΙΑ ΔΙΑΧΕΙΡΙΣΗΣ ΕΠΙΧΕΙΡΗΣΙΑΚΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΕΚΠΑΙΔΕΥΣΗ ΚΑΙ ΔΙΑ ΒΙΟΥ ΜΑΘΗΣΗ ΕΠΙΧΕΙΡΗΣΙΑΚΟ ΠΡΟΓΡΑΜΜΑ «ΕΚΠΑΙΔΕΥΣΗ ΚΑΙ

Διαβάστε περισσότερα

ΣΧΕ ΙΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ ΜΕ ΑΡΜΟ ΙΟΤΗΤΕΣ. Ορισµός σχεδιαστικών προτύπων Εφαρµογή των 9 GRASP προτύπων

ΣΧΕ ΙΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ ΜΕ ΑΡΜΟ ΙΟΤΗΤΕΣ. Ορισµός σχεδιαστικών προτύπων Εφαρµογή των 9 GRASP προτύπων ΣΧΕ ΙΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ ΜΕ ΑΡΜΟ ΙΟΤΗΤΕΣ Ορισµός σχεδιαστικών προτύπων Εφαρµογή των 9 GRASP προτύπων 1 Γενικά Εξαιρετικά σηµαντικά: η απόφαση για το που ανήκουν οι µέθοδοι, και πως αλληλεπιδρούν τα αντικείµενα

Διαβάστε περισσότερα

Πτυχιακή διατριβή. Η επίδραση της τασιενεργής ουσίας Ακεταλδεΰδης στη δημιουργία πυρήνων συμπύκνωσης νεφών (CCN) στην ατμόσφαιρα

Πτυχιακή διατριβή. Η επίδραση της τασιενεργής ουσίας Ακεταλδεΰδης στη δημιουργία πυρήνων συμπύκνωσης νεφών (CCN) στην ατμόσφαιρα ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΓΕΩΤΕΧΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ Πτυχιακή διατριβή Η επίδραση της τασιενεργής ουσίας Ακεταλδεΰδης στη δημιουργία πυρήνων συμπύκνωσης νεφών (CCN)

Διαβάστε περισσότερα

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

Διαβάστε περισσότερα

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια)

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια) Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018 Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια) ΠΕΡΙΟΧΗ Α: ΕΦΑΡΜΟΓΕΣ ΜΕ ΑΙΣΘΗΤΗΡΕΣ ΓΙΑ ΕΠΙΓΝΩΣΗ ΣΥΓΚΕΙΜΕΝΟΥ Οι αισθητήρες μας δίνουν τη δυνατότητα

Διαβάστε περισσότερα

Τεχνολογία Λογισμικού & Πνευματική Ιδιοκτησία. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Τεχνολογία Λογισμικού & Πνευματική Ιδιοκτησία. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Τεχνολογία Λογισμικού & Πνευματική Ιδιοκτησία ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Κύκλος ζωής λογισμικού source: Forouzan, Mosharraf Τροποποιήσεις διόρθωση σφαλμάτων, αλλαγή απαιτήσεων χρήστη,...

Διαβάστε περισσότερα

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016 FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016 Μ6. Φάσεις ανάπτυξης λογισμικού: προδιαγραφές, σχεδίαση, υλοποίηση, επαλήθευση, τεκμηρίωση, συντήρηση προγραμμάτων Δρ. Γεώργιος Παπαλάμπρου Επικ.

Διαβάστε περισσότερα

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4 Διαδικασίες παραγωγής λογισμικού Στόχοι Παρουσίαση μοντέλων παραγωγής λογισμικού Περιγραφή τριών γενικών μοντέλων παραγωγής λογισμικού και πότε μπορούν να χρησιμοποιούνται Γενική περιγραφή των μοντέλων

Διαβάστε περισσότερα

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016 FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016 Μ6. Φάσεις ανάπτυξης λογισμικού: προδιαγραφές, σχεδίαση, υλοποίηση, επαλήθευση, τεκμηρίωση, συντήρηση προγραμμάτων Δρ. Γεώργιος Παπαλάμπρου Επικ.

Διαβάστε περισσότερα

Τεχνολογία Λογισμικού

Τεχνολογία Λογισμικού ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα #9: Η σχεδίαση του συστήματος Σταμέλος Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1 ΚΕΦΑΛΑΙΟ 7 ο ΠΡΟΓΡΑΜΜΑ : Το πρόγραμμα αποτελείται από μια σειρά οδηγιών, που ονομάζονται εντολές, για την εκτέλεση τέτοιου είδους πράξεων, καθώς επίσης και από ένα σύνολο πρόσθετων οδηγιών ελέγχου, που

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Περιεχόμενα Java Classes Java Objects Java

Διαβάστε περισσότερα

Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016. Γεωργία Καπιτσάκη (Λέκτορας)

Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016. Γεωργία Καπιτσάκη (Λέκτορας) Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016 Γεωργία Καπιτσάκη (Λέκτορας) ΠΕΡΙΟΧΗ Α: ΕΦΑΡΜΟΓΕΣ ΜΕ ΑΙΣΘΗΤΗΡΕΣ ΓΙΑ ΕΠΙΓΝΩΣΗ ΣΥΓΚΕΙΜΕΝΟΥ Οι αισθητήρες μας δίνουν τη δυνατότητα συλλογής

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ

ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ Α.Μ. 123/04 ΕΠΙΒΛΕΠΩΝ: ΣΑΜΑΡΑΣ ΝΙΚΟΛΑΟΣ ΘΕΣΣΑΛΟΝΙΚΗ, ΙΟΥΝΙΟΣ 2007 Περιεχόμενα

Διαβάστε περισσότερα

(McCabe, 1976) (1/4) C = e n + 2p 29/4/2009

(McCabe, 1976) (1/4) C = e n + 2p 29/4/2009 Ανάπτυξη & Σχεδίαση Λογισµικού (ΗΥ420) ιάλεξη 9: Μετρικές Ποιότητας Λογισµικού Μετρικές Προϊόντος: Γραµµές Κώδικα 2 Γραµµές κώδικα Απλό; Αποδοτικό; Καλά ορισµένο; ; Όχι! Καλύτερος ορισµός (π.χ. για C/C++):

Διαβάστε περισσότερα

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

Διαβάστε περισσότερα

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 8 Πακέτα (Packages) Access

Διαβάστε περισσότερα

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Επιχειρηματική Μοντελοποίηση. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Επιχειρηματική Μοντελοποίηση. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Επιχειρηματική Μοντελοποίηση Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική Θεσσαλονίκη, Σεπτέμβριος 2013 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα