Διασφάλιση Ποιότητας Συστημάτων Βασισμένων σε Συστατικά Λογισμικού

Σχετικά έγγραφα
Βαζίιεο Βιάρνο Καζεγεηήο Δθαξκνγώλ. Αλδξέαο ηαπξηλίδεο Δπί πηπρίω θνηηεηήο - Τπεύζπλνο ζηνηρεηνζέηεζεο

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

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

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

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

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

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

Μάθημα «Υπηρεσίες Ηλεκτρονικής Υγείας»

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

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

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

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

ΔΙΠΛΩΜΑΤΙΚΕΣ ΕΡΓΑΣΙΕΣ

Κεφάλαιο 7: Τεχνολογία Λογισμικού

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

Ανάλυση Απαιτήσεων Mεθοδολογίες Ανάπτυξης

Ένωση Μηχανικών Πληροφορικής και Επικοινωνιών Ελλάδας (ΕΜηΠΕΕ) συνοπτικά

Εργαλεία CASE. Computer Assisted Systems Engineering. Δρ Βαγγελιώ Καβακλή. Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου

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

Ενότητα 2. Πηγές Λογισμικού. Πληροφοριακά Συστήματα Διοίκησης ΙI Νίκος Καρακαπιλίδης 2-1

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

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

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

Διαχείριση Πληροφοριακών Συστημάτων

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

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

Συλλογιστική εξαγωγής συμπερασμάτων από συγκεκριμένες υποθέσεις δοθείσα μεθοδολογία διαδικασία της σκέψης, πρέπει να «συλλογιστεί» υπόθεση/παραγωγή

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

Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές

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

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

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

«Αξιολόγηση ατόμων με αφασία για Επαυξητική και Εναλλακτική Επικοινωνία, σύμφωνα με το μοντέλο συμμετοχής»

09 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εαρινό εξάμηνο

UML. Γενικά χαρακτηριστικά Στοιχεία µοντέλων Συσχετίσεις. Παραδείγματα

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

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Πληροφοριακά Συστήματα & Περιβάλλον

Διαγράμματα UML για την τεκμηρίωση της Αρχιτεκτονικής

Έργα Πληροφορικής Δημόσιου Τομέα - Από την απορροφητικότητα στην παραγωγική λειτουργία

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

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

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

Η Πληροφορική ως γνώση και εργαλείο για τον σύγχρονο μηχανικό. Νικόλαος Μήτρου Καθηγητής, ΕΜΠ

Το Open Eclass ως Σύστημα Διαχείρισης Μάθησης

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


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

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

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

2016 IEEE/ACM International Conference on Mobile Software Engineering and Systems

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

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

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

υπηρεσίες / services ΜΕΛΕΤΗ - ΣΧΕΔΙΑΣΜΟΣ PLANNING - DESIGN ΕΜΠΟΡΙΚΗ ΜΕΛΕΤΗ COMMERCIAL PLANNING ΕΠΙΠΛΩΣΗ - ΕΞΟΠΛΙΣΜΟΣ FURNISHING - EQUIPMENT

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

Στρατηγικό Σχεδιασµό Πληροφοριακών Συστηµάτων

Σχεδιασμός και Διαχείριση Λογισμικού

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

Εφαρμογή Υπολογιστικών Τεχνικών στην Γεωργία

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

ΕΛΕΓΧΟΣ ΠΑΡΑΓΩΓΙΚΩΝ ΔΙΕΡΓΑΣΙΩΝ

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

Θεμελιώδεις αρχές επιστήμης και μέθοδοι έρευνας

ΕΙΣΑΓΩΓΗ ΣΤΗΝ UML ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΕΠΙΧΕΙΡΗΜΑΤΙΚΩΝ ΔΙΑΔΙΚΑΣΙΩΝ (ΔΙΑΓΡΑΜΜΑΤΑ ΔΡΑΣΤΗΡΙΟΤΗΤΩΝ & ΠΕΡΙΠΤΩΣΕΩΝ ΧΡΗΣΗΣ) (7-8)

06 Αντικειμενοστρεφής ανάλυση και σχεδιασμός

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

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

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

Σύστημα υποβολής αιτήσεων υποψήφιων συνεργατών ΕΚΤ

Απαιτήσεις Λογισμικού

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Παραδοτέο Π.1 (Π.1.1) Εκθέσεις για προµήθεια εκπαιδευτικού υλικού

Γενικό πλαίσιο. Software Evolution Monitor Requirements. Απόστολος Ζάρρας

ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ. 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

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

Software Evolution Monitor. Software Evolution Monitor (Requirements Definition) Έκδοση <1.0>

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

Εισαγωγή στην αντικειµενοστρεφή τεχνολογία

Οικονομικός Προγραμματισμός & Διαχείριση Εφαρμογών Πολυμέσων. Δημητριάδης Χρήστος ΕΑΠ / ΓΤΠ 61

DECO DECoration Ontology

Τεχνολογία Λογισµικού Ι Κεφάλαιο 6

ΚΑΤΑΛΟΓΟΣ ΕΚΠΑΙΔΕΥΣΗΣ

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

ΜΕΘΟΔΟΛΟΓΙΑ ΕΡΕΥΝΑΣ. 1 η ΠΑΡΟΥΣΙΑΣΗ. Ι. Δημόπουλος Τμήμα Διοίκησης Επιχειρήσεων και Οργανισμών. ΤΕΙ Πελοποννήσου

ΔΙΠΛΩΜΑΣΙΚΗ ΕΡΓΑΙΑ. του φοιτητή του Σμήματοσ Ηλεκτρολόγων Μηχανικών και. Σεχνολογίασ Τπολογιςτών τησ Πολυτεχνικήσ χολήσ του. Πανεπιςτημίου Πατρών

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

Δομημένος Προγραμματισμός

ΤΟ ΜΟΝΤΕΛΟ Οι Υποθέσεις Η Απλή Περίπτωση για λi = μi 25 = Η Γενική Περίπτωση για λi μi..35

Λογιστική Θεωρία και Έρευνα

Περιεχόμενο του μαθήματος

Πλεονεκτήματα και μειονεκτήματα της προσομοίωσης

Συστήματα Πληροφοριών Διοίκησης

Η θέση ύπνου του βρέφους και η σχέση της με το Σύνδρομο του αιφνίδιου βρεφικού θανάτου. ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΥΓΕΙΑΣ

Μοντελοποίηση Πεδίου

Εισαγωγή στη Δασική Πληροφορική

Μοντέλο Οντοτήτων-Συσχετίσεων. Η ανάγκη Διαγράμματα ΟΣ Σύνολα Οντοτήτων-Συσχετίσεων Απεικονίσεις Επεκτάσεις

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΟΙΚΗΣΗΣ MANAGEMENT INFORMATION SYSTEMS (M.I.S.)

þÿ¼ ½ ±Â : ÁÌ» Â Ä Å ÃÄ ²µ þÿä Å ÃÇ»¹º Í Á³ Å

Τεχνολογία Ψυχαγωγικού Λογισμικού και Εικονικοί Κόσμοι Ενότητα 8η - Εικονικοί Κόσμοι και Πολιτιστικό Περιεχόμενο

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΚΑΡΟΝΤΖΑΣ ΓΕΩΡΓΙΟΣ Διασφάλιση Ποιότητας Συστημάτων Βασισμένων σε Συστατικά Λογισμικού ΔΙΔΑΚΤΟΡΙΚΗ ΔΙΑΤΡΙΒΗ ΘΕΣΣΑΛΟΝΙΚΗ 2012

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΚΑΡΟΝΤΖΑΣ ΓΕΩΡΓΙΟΣ Διασφάλιση Ποιότητας Συστημάτων Βασισμένων σε Συστατικά Λογισμικού ΔΙΔΑΚΤΟΡΙΚΗ ΔΙΑΤΡΙΒΗ Υποβλήθηκε στο Τμήμα Πληροφορικής Ημερομηνία Προφορικής Εξέτασης: 15/11/2012 Εξεταστική Επιτροπή: Καθηγητής Ι. Βλαχάβας, Εξεταστής Καθηγητής Κ. Μαργαρίτης, Εξεταστής Αναπλ. Καθηγήτρια Α. Βακάλη, Εξεταστής Αναπλ. Καθηγητής Ν. Βασιλειάδης, Εξεταστής Αναπλ. Καθηγητής Ι. Σταμέλος, Επιβλέπων Αναπλ. Καθηγητής Α. Χατζηγεωργίου, Εξεταστής Επικ. Καθηγητής Π. Κατσαρός, Εξεταστής 1

Κακαρόντζας Γεώργιος ΑΠΘ, 2012 «Η έγκριση της παρούσης Διδακτορικής Διατριβής από το Τμήμα Πληροφορικής του Αριστοτελείου Πανεπιστημίου Θεσσαλονίκης δεν υποδηλώνει αποδοχή των γνωμών του συγγραφέα» (Ν. 5343/1932, άρθρο 202, παρ.2) 2

3

Προό λογος Η κατασκευή πληροφοριακών συστημάτων ολοένα αυξανόμενης πολυπλοκότητας εγείρει σοβαρά ζητήματα σε σχέση με την ποιότητα των συστημάτων αυτών. Μία λύση είναι η δημιουργία αυτών των συστημάτων από συστατικά λογισμικού (software components) τα οποία μπορούν να οδηγήσουν σε μειωμένους χρόνους ανάπτυξης με ταυτόχρονη μείωση του κόστους και βελτίωση της ποιότητας. Παρόλα αυτά μέχρι σήμερα δεν υπάρχει κάποια συστηματική τεχνική για την κατασκευή συστημάτων λογισμικού με συστατικά λογισμικού και ταυτόχρονα μία συμπληρωματική συστηματική μέθοδος για την κατασκευή συστατικών λογισμικού με διακρίνουσα την ποιότητα που θα μπορούσαν να επαναχρησιμοποιηθούν για την κατασκευή τέτοιων συστημάτων. Επιπλέον η κατασκευή συστημάτων από συστατικά λογισμικού δίνει την δυνατότητα για την επαναχρησιμοποίηση συστατικών λογισμικού ανοιχτού κώδικα. Παρόλα αυτά τα περισσότερα συστήματα ανοιχτού λογισμικού δεν είναι βασισμένα σε συστατικά λογισμικού με αποτέλεσμα ο κώδικάς τους να μην είναι εφικτό να χρησιμοποιηθεί για την κατασκευή τέτοιων συστημάτων παρά μόνο με την μέθοδο της ευκαιριακής επαναχρησιμοποίησης κατά την οποία οι προγραμματιστές απλά εντοπίζουν ενδιαφέροντα τμήματα κώδικα για τις εφαρμογές τους και τα επαναχρησιμοποιούν με αντιγραφή του κώδικα και προσαρμογή του στις δικές τους ανάγκες. Η διαδικασία αυτή είναι χρονοβόρα και επιρρεπής σε λάθη. Σε σχέση με τα προαναφερθέντα προβλήματα οι συνεισφορές αυτής της διδακτορικής διατριβής είναι οι ακόλουθες: 1. Δημιουργία Συστατικών Λογισμικού: Μία μεθοδολογία με βάση αρχιτεκτονικές τακτικές για την κατασκευή συστημάτων λογισμικού με συστατικά λογισμικού τα οποία εκλεπτύνονται σε σχέση με τις ποιοτικές προδιαγραφές του συστήματος με την χρήση των κατάλληλων αρχιτεκτονικών τακτικών. Η μεθοδολογία βασίζεται σε εκτελέσιμα μοντέλα του συστήματος και των συστατικών τα οποία επιτρέπουν την προσομοίωση των ποιοτικών χαρακτηριστικών που ενδιαφέρουν. 2. Εξαγωγή Συστατικών Λογισμικού: Μία ημι-αυτοματοποιημένη διαδικασία αναγνώρισης και εξαγωγής συστατικών λογισμικού από έργα ανοιχτού λογισμικού τα οποία χρησιμοποιούνται για τον εμπλουτισμό αποθετηρίων συστατικών λογισμικού ανοιχτού κώδικα. Η εξαγωγή συστατικών βασίζεται σε μετρικές της 4

εσωτερικής ποιότητας του λογισμικού (όπως οι μετρικές πολυπλοκότητας σχεδίασης αντικειμενοστραφούς λογισμικού). Παρότι η μεθοδολογία και τα εργαλεία της προτεινόμενης προσέγγισης δοκιμάστηκαν σε έργα ανοιχτού λογισμικού η εφαρμογή τους είναι γενικότερη και αφορά οποιοδήποτε έργο λογισμικού. 3. Γενίκευση Συστατικών Λογισμικού: Μία μεθοδολογία για την κατασκευή συστατικών λογισμικού ανεξάρτητα από οποιοδήποτε σύστημα λογισμικού. Λόγω της αδυναμίας προσδιορισμού των λειτουργικών και ποιοτικών χαρακτηριστικών του συστήματος στο οποίο θα επαναχρησιμοποιηθούν καθίσταται αναγκαία η κατασκευή μιας ιεραρχίας τέτοιων συστατικών για κάθε βασική λειτουργία. Η ιεραρχία αυτή ονομάζεται ελαστική ιεραρχία συστατικών λογισμικού. Τα ελαστικά συστατικά λογισμικού διακρίνονται με βάση τις λειτουργικές και ποιοτικές τους διαφοροποιήσεις ώστε να είναι εφικτή η επαναχρησιμοποίησή τους σε πολλά διαφορετικά συστήματα. Σε κάθε επίπεδο της ιεραρχίας ενός συστατικού λογισμικού χρησιμοποιούνται έλεγχοι λογισμικού για την επιβεβαίωση των λειτουργικών και ποιοτικών διαφοροποιήσεων. Τα ελαστικά συστατικά λογισμικού διερευνήθηκαν σε βάθος και πέρα από την μεθοδολογία κατασκευής τους προτείνονται τα εξής: i. Η μεταβλητότητα των γραμμών προϊόντων λογισμικού με ελαστικά συστατικά λογισμικού και ανάπτυξη λογισμικού υπό την καθοδήγηση ελέγχων. ii. Μία ευέλικτη μεθοδολογία ανάπτυξης που αποσκοπεί στην παράλληλη κατασκευή ενός αποθετηρίου ελαστικών συστατικών λογισμικού. iii. Η εφαρμογή των ευέλικτων συστατικών λογισμικού στο πεδίο των υπολογιστικών πλεγμάτων. iv. Μία προσέγγιση για την επιλογή ελαστικών συστατικών λογισμικού από ένα αποθετήριο συστατικών με χρήση ασαφούς λογικής. 5

Abstract The development of increasingly complex information systems raises some serious issues regarding the quality of these systems. One solution is the creation of these systems from software components, an approach which can lead to reduced development times and at the same time cost reduction and quality improvement. Nevertheless, a systematic approach for system development based on software components and a complementary systematic approach for the development of software components based on quality differentiation that could be used for the development of component-based systems is still lacking. Furthermore, system development from software components creates the opportunity of Open Source Software (OSS) component reuse. However most OSS systems are not component-based and as a result their code is not feasible to be reused as-is for the construction of component-based systems. Programmers very often reuse OSS code opportunistically, by locating interesting code segments for their applications which are then reused by copying and adaptation to the new applications needs. This process is time consuming and error prone. In relation to these aforementioned problems the contributions of this thesis are the following: 1. Software Component Development: An architectural tactics based process for the creation of software systems based on software components. Components are iteratively refined in relation to the quality requirements of the systems with the use of appropriate architectural tactics. The process is based on executable models of the systems and their components. Models allow the simulation of the different quality characteristics of interest. 2. Software Component Extraction: A semi-automated process for the identification and extraction of software components from OSS projects. These components are subsequently placed in OSS component repositories. Software component extraction is based on internal quality metrics (such as metrics of software design complexity). Although the process and the respective tools of the proposed approach in this work were tested on OSS projects their application is more general and they can be applied to any software system. 6

3. Software Component Generalization: A process for software component development which are independent from specific systems. Given the inability to determine the functional and quality characteristics of the system on which the components will be reused, makes necessary to develop a hierarchy of such components for each basic function. This hierarchy is called elastic components hierarchy. Elastic components are discriminated based on their functional and quality differences and it is therefore possible to be reused in many different systems. At every hierarchical level of a software component we use tests to confirm the functional and quality differences among the different hierarchical levels. In addition to the aforementioned elastic component development process we also examined: i. Software Product Line variability with elastic components and Test-Driven Development. ii. An agile system development process with the additional goal of creating a repository of elastic components. iii. The application of elastic components in the area of computational grids, and iv. An approach for software component selection from an elastic component repository based on (intuitionistic) fuzzy logic. 7

Δημοσιευμεένες Εργασιίες Στο πλαίσιο της έρευνας που παρουσιάζεται σε αυτή την διατριβή δημοσιεύθηκαν οι ακόλουθες εργασίες σε συνέδρια και περιοδικά με κρίση: Περιοδικά: 1. George Kakarontzas, Eleni Constantinou, Apostolos Ampatzoglou, Ioannis Stamelos: Layer assessment of object-oriented software: A metric facilitating white-box reuse, Journal of Systems and Software, Available online 29 August 2012 (http://dx.doi.org/10.1016/j.jss.2012.08.041) 2. George Kakarontzas, Ilias K. Savvas and Ioannis Stamelos: Agents, clusters and components: A synergistic approach to the GSP, Future Generation Computer Systems, Volume 27, Issue 8, pp. 999 1010, Elsevier, October 2011 (http://dx.doi.org/10.1016/j.future.2011.05.002) Συνέδρια 3. George Kakarontzas, Ioannis Stamelos, Stefanos Skalistis and Athanasios Naskos: Extracting Components from Open Source: The Component Adaptation Environment (COPE) Approach, in proc. of the 38th Euromicro conference on Software Engineering and Advanced Applications - Model-Based Development, Components and Services (MOCS) track, pp. 192-199, IEEE, 2012 (http://dx.doi.org/10.1109/seaa.2012.39) 4. George Kakarontzas, Vassilis C. Gerogiannis and Ioannis Stamelos: Elastic Component Characterization with respect to Quality Properties: An intuitionistic fuzzy-based approach, in proceedings of the 15th Panhellenic Conference on Informatics, pp.270-274, IEEE, 2011 (Best paper award for PCI 2011) (http://doi.ieeecomputersociety.org/10.1109/pci.2011.27) 5. George Kakarontzas, Panagiotis Katsaros and Ioannis Stamelos: Component Certification as a Prerequisite for Widespread OSS Reuse, Electronic Communications of the EASST, Volume 33, 2010 (http://journal.ub.tuberlin.de/index.php/eceasst/article/view/449/433) 8

6. George Kakarontzas, Ioannis Stamelos: Component Recycling for Agile Methods, QUATIC 2010, pp. 397-402, IEEE, 2010 (http://dx.doi.org/10.1109/quatic.2010.72) 7. George Kakarontzas, Ioannis Stamelos and Panagiotis Katsaros: Product Line Variability with Elastic Components and Test-Driven Development, CIMCA/IAWTIC/ISE 2008, pp. 146-151, IEEE, 2008 (http://doi.ieeecomputersociety.org/10.1109/cimca.2008.84) 8. George Kakarontzas, Panagiotis Katsaros and Ioannis Stamelos: Elastic Components: Addressing Variance of Quality Properties in Components, 33rd EUROMICRO Conference on Software Engineering and Advanced Applications (EUROMICRO 2007),, pp.31-38, IEEE, 2007 (http://doi.ieeecomputersociety.org/10.1109/euromicro.2007.29) 9. George Kakarontzas and Ioannis Stamelos: A Tactic-Driven Process for Developing Reusable Components, 9th International Conference on Software Reuse (ICSR), LNCS Volume 4039, pp. 273-286, Springer, 2006 (http://dx.doi.org/10.1007/11763864_20) Επιπλέον δημοσιεύθηκε ένας αριθμός εργασιών στις οποίες συμμετείχε ερευνητικά ο συγγραφέας αυτής της διατριβής και ήταν περιφερειακές εργασίες του βασικού θέματος της διατριβής. Οι εργασίες αυτές είναι οι εξής: Περιοδικά 10. Apostolos Ampatzoglou, Apostolos Kritikos, George Kakarontzas and Ioannis Stamelos: "An Empirical Investigation on the Reusability of Design Patterns and Software Packages", Journal of Systems and Software, vol. 84, no. 12, pp. 2265 2283, December 2011 (http://dx.doi.org/10.1016/j.jss.2011.06.047) 11. Anakreon Mentis, Panagiotis Katsaros, Lefteris Angelis and George Kakarontzas: Quantification of interacting runtime qualities in software architectures: insights from transaction processing in client-server architectures, Information and Software Technology, Volume 52, Issue 12, Pages 1331-1345, December 2010 (http://dx.doi.org/10.1016/j.jss.2011.06.047) 9

Συνέδρια 12. Fotios Kokkoras, Konstantinos Ntonas, Apostolos Kritikos, George Kakarontzas and Ioannis Stamelos: Federated Search for Open Source Software Reuse, in proc. of the 38th Euromicro conference on Software Engineering and Advanced Applications - Model-Based Development, Components and Services (MOCS) track, pp. 200-203, IEEE, 2012 (http://dx.doi.org/10.1109/seaa.2012.55) 13. Eleni Constantinou, George Kakarontzas and Ioannis Stamelos: Towards Open Source Software System Architecture Recovery Using Design Metrics, in proceedings of the 15th Panhellenic Conference on Informatics, pp. 166-170, IEEE, 2011 (http://doi.ieeecomputersociety.org/10.1109/pci.2011.36) 14. Eleni Constantinou, George Kakarontzas, Ioannis Stamelos: Open source software: How can design metrics facilitate architecture recovery?, 4th Workshop on Intelligent Techniques in Software Engineering, 5 September 2011 at the European Conference on Machine Learning and Principles and Practices of Knowledge Discovery in Databases (ECML-PKDD) (http://arxiv.org/abs/1110.1992v1) 15. Apostolos Kritikos, George Kakarontzas and Ioannis Stamelos: A semi-automated process for open source code reuse, Proceedings of the 5th International Conference on Evaluation of Novel Approaches in Software Engineering (ENASE '10), pp. 179-185 24-25 July 2010 16. Vassilis C. Gerogiannis, George Kakarontzas and Ioannis Stamelos: A Unified Approach for Software Process Representation and Analysis, ICSOFT, vol. 2, pp. 127-132, 2006 Κεφάλαια Βιβλίων 17. Ioannis Stamelos and George Kakarontzas: AKM in Open Source Communities, Chapter 11 in Ali Babar, M.; Dingsøyr, T. Lago, P. Vliet, H. van (Eds.) Software Architecture Knowledge Management: Theory and Practice, Springer, 2009 (http://dx.doi.org/10.1007/978-3-642-02374-3_11) 10

Ευχαριστιίες Θα ήθελα να ευχαριστήσω τον αναπληρωτή καθηγητή του τμήματος πληροφορικής του ΑΠΘ Δρ. Σταμέλο Ιωάννη για την καθοδήγηση του και την αμέριστη συμπαράστασή του. Επίσης θα ήθελα να ευχαριστήσω τους Απόστολο Αμπατζόγλου, Ελένη Κωνσταντίνου, Αθανάσιο Νάσκο, Στέφανο Σκαλιστή, Αποστόλη Κρητικό, Αντώνη Γκορτζή και Γιώργο Μεδίτσκο για την συμμετοχή τους στο ευρωπαϊκό ερευνητικό έργο OPEN-SME και την καλή μας συνεργασία σε αυτό. Θα ήθελα ακόμη να ευχαριστήσω τους Παναγιώτη Κατσαρό, Βασίλη Γερογιάννη και Ηλία Σάββα για την καλή μας συνεργασία σε δημοσιεύσεις και για τις συζητήσεις ιδεών. Τέλος θα ήθελα να ευχαριστήσω την οικογένειά μου για την συμπαράσταση και κατανόησή της κατά τη διαδικασία αυτή. Τμήμα της παρούσας διατριβής χρηματοδοτήθηκε από την Ευρωπαϊκή Επιτροπή στο πλαίσιο του έργου OPEN-SME Open-Source Software Reuse Service for SMEs, υπό την συμφωνία αρ. FP7-SME-2008-2/243768. Τμήμα επίσης της διατριβής χρηματοδοτήθηκε από το Επιχειρησιακό Πρόγραμμα «Εκπαίδευση και Δια Βίου Μάθηση» το οποίο συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους, μέσω του «ΑΡΧΙΜΗΔΗΣ ΙΙI: Ενίσχυση ερευνητικών ομάδων στα ΤΕΙ» και του έργου SPRINT-SMEs. 11

12

Περιεχόμενα 1 Εισαγωγή... 20 1.1 Συνοπτική επισκόπηση ερευνητικής περιοχής... 20 1.2 Συνεισφορά διατριβής... 40 1.2.1 Μεθοδολογία με βάση αρχιτεκτονικές τακτικές... 40 1.2.2 Ημι-αυτοματοποιημένη διαδικασία αναγνώρισης και εξαγωγής συστατικών λογισμικού από έργα ανοιχτού λογισμικού... 41 1.2.3 Μεθοδολογία γενίκευσης συστατικών λογισμικού... 43 1.3 Δομή της διατριβής... 46 2 Κεφάλαιο 2: Μεθοδολογία κατασκευής συστατικών λογισμικού με βάση αρχιτεκτονικές τακτικές... 48 2.1 Εισαγωγή... 48 2.2 Μεθοδολογία με βάση αρχιτεκτονικές τακτικές... 50 2.2.1 Αρχιτεκτονικές τακτικές... 50 2.2.2 Προγράμματα-μοντέλα... 51 2.2.3 Περιγραφή της μεθοδολογίας με βάση αρχιτεκτονικές τακτικές... 51 2.3 Ένα παράδειγμα εφαρμογής της διαδικασίας... 53 2.3.1 Δημιουργία ενός τυπικού μοντέλου... 54 2.3.2 Δημιουργία των σεναρίων ελέγχου και εκτέλεσή τους... 58 2.3.3 Παραγωγή της τεκμηρίωσης... 61 3 Κεφάλαιο 3: Ημι-αυτοματοποιημένη διαδικασία αναγνώρισης και εξαγωγής συστατικών λογισμικού από έργα ανοιχτού λογισμικού και σχετικά εργαλεία... 62 3.1 Το εργαλείο COPE (Component Adaptation Environment)... 63 3.1.1 Η σχεδίαση του COPE... 65 3.1.2 Εμπειρικά αποτελέσματα από την χρήση του COPE... 77 13

3.2 Μετρική Επαναχρησιμοποίησης Αντικειμενοστραφούς Λογισμικού... 82 3.2.1 Εισαγωγή... 82 3.2.2 Διευκόλυνση της αποτίμησης επαναχρησιμοποίησης με βάση μετρικές πολυπλοκότητας σχεδίασης... 84 3.2.3 Συγκριτική αποτίμηση της προτεινόμενης μετρικής... 99 3.2.4 Ανάλυση ανά έργο και γύρω από μεγάλες κατηγορίες έργων... 111 3.2.5 Απειλές για την εγκυρότητα... 118 3.2.6 Συζήτηση... 120 4 Κεφάλαιο 4: Μεθοδολογία γενίκευσης συστατικών λογισμικού με τα ελαστικά συστατικά λογισμικού... 124 4.1 Εισαγωγή... 125 4.2 Ελαστικά Συστατικά Λογισμικού... 125 4.2.1 Εισαγωγή... 125 4.2.2 Το πρόβλημα της ποιοτικής αναντιστοιχίας και η έννοια των ελαστικών συστατικών λογισμικού... 126 4.2.3 Σχεδίαση και υλοποίηση ελαστικών συστατικών λογισμικού... 130 4.2.4 Παράδειγμα ελαστικού συστατικού λογισμικού από το πεδίο ελέγχου συστημάτων πραγματικού χρόνου... 135 4.3 Μεταβλητότητα Γραμμών Προϊόντων λογισμικού με ελαστικά συστατικά λογισμικού και ανάπτυξη καθοδηγούμενη από ελέγχους... 142 4.3.1 Εισαγωγή... 142 4.3.2 Ειδίκευση των ελαστικών συστατικών λογισμικού για γραμμές προϊόντων λογισμικού... 144 4.3.3 Δημιουργία ελαστικών συστατικών με ανάπτυξη καθοδηγούμενη από ελέγχους 147 4.4 Πρόσθετες ερευνητικές κατευθύνσεις σε σχέση με τα ελαστικά συστατικά λογισμικού... 154 14

4.4.1 Ανακύκλωση συστατικών για ευέλικτες μεθοδολογίες ανάπτυξης... 155 4.4.2 Χρήση των ελαστικών συστατικών για την εκτέλεση εργασιών σε δυναμικά υπολογιστικά πλέγματα... 164 4.4.3 Χαρακτηρισμός των ελαστικών συστατικών με αναφορά ποιοτικά χαρακτηριστικά: μία προσέγγιση με βάση διαισθητικά ασαφή σύνολα (intuitionistic fuzzy sets)... 166 5 Κεφάλαιο 5: Συμπεράσματα και μελλοντικές επεκτάσεις... 175 5.1 Γενική Σύνοψη και Συμπεράσματα... 175 5.2 Συμπεράσματα και μελλοντικές ερευνητικές κατευθύνσεις σχετικές με την προτεινόμενη μεθοδολογία κατασκευής συστατικών λογισμικού με βάση αρχιτεκτονικές τακτικές... 177 5.3 Συμπεράσματα και μελλοντικές ερευνητικές κατευθύνσεις σχετικές με την προτεινόμενη ημι-αυτοματοποιημένη διαδικασία αναγνώρισης και εξαγωγής συστατικών λογισμικού από έργα ανοιχτού λογισμικού... 178 5.4 Συμπεράσματα και μελλοντικές ερευνητικές κατευθύνσεις σχετικές με την προτεινόμενη μετρική επαναχρησιμοποίησης αντικειμενοστραφούς λογισμικού... 179 5.5 Συμπεράσματα και μελλοντικές ερευνητικές κατευθύνσεις σχετικές με την προτεινόμενη μεθοδολογία γενίκευσης συστατικών λογισμικού με τα ελαστικά συστατικά λογισμικού... 181 5.6 Συμπεράσματα και μελλοντικές ερευνητικές κατευθύνσεις σχετικές με την προτεινόμενη μεταβλητότητα Γραμμών Προϊόντων λογισμικού με ελαστικά συστατικά λογισμικού και ανάπτυξη καθοδηγούμενη από ελέγχους... 182 5.7 Συμπεράσματα και μελλοντικές ερευνητικές κατευθύνσεις σχετικές με την προτεινόμενη ανακύκλωση συστατικών για ευέλικτες μεθοδολογίες ανάπτυξης... 183 5.8 Συμπεράσματα και μελλοντικές ερευνητικές κατευθύνσεις σχετικές με την προτεινόμενη χρήση των ελαστικών συστατικών για την εκτέλεση εργασιών σε δυναμικά υπολογιστικά πλέγματα... 183 15

5.9 Συμπεράσματα και μελλοντικές ερευνητικές κατευθύνσεις σχετικές με την προτεινόμενη προσέγγιση χαρακτηρισμού των ελαστικών συστατικών λογισμικού με βάση διαισθητικά ασαφή σύνολα (intuitionistic fuzzy sets)... 184 6 Αναφορές... 185 16

Καταά λογος Εικοό νων Εικόνα 1: Δομή της διατριβής... 47 Εικόνα 2: Μοντέλο Ποιότητας κατά ISO/IEC 9126-1 [69]... 49 Εικόνα 3: Διάγραμμα δραστηριοτήτων της μεθοδολογίας με βάση αρχιτεκτονικές τακτικές51 Εικόνα 4: Το παράδειγμα του εξυπηρετητή... 54 Εικόνα 5: Αρχιτεκτονικές τακτικές απόδοσης [19, 11]... 59 Εικόνα 6: Διάγραμμα Οντοτήτων Συσχετίσεων για την ΒΔ του COPE... 67 Εικόνα 7: Τα επίπεδα του COPE... 68 Εικόνα 8: Διάλογος σύστασης συστοιχιών κλάσεων... 71 Εικόνα 9: Πλαίσιο διαλόγου του Dependency Component Maker... 72 Εικόνα 10: Δομή του πακέτου των συστατικών λογισμικού... 75 Εικόνα 11: Η γραφική διασύνδεση του Knowledge Manager... 76 Εικόνα 12: Δημιουργία του DAG από το Classycle... 88 Εικόνα 13: Η γραφική διασύνδεση του COPE... 90 Εικόνα 14: Boxplots των WMC, DIT και NOC πριν και μετά την εξάλειψη των ακραίων τιμών... 93 Εικόνα 15: Boxplots των CBO, RFC και LCOM πριν και μετά την εξάλειψη των ακραίων τιμών... 93 Εικόνα 16: Διάμεσος του CDS για κάθε D-Layer... 98 Εικόνα 17: Ποσοστά αρνητικών συσχετίσεων του CDS με τις μετρικές ανά επίπεδο και έργο.. 110 Εικόνα 18: Ποσοστά θετικών συσχετίσεων του CDS με τις μετρικές ανά επίπεδο και έργο... 111 Εικόνα 19: Ποιοτικά αντισταθμίσματα και η σχέση τους με τις απαιτήσεις του συστήματος... 128 Εικόνα 20: Ελαστικά συστατικά ως παραδοτέο μιας επιλεκτικής διαδικασίας... 131 Εικόνα 21: Διάγραμμα κλάσεων για την σχεδίαση ελαστικών συστατικών... 132 Εικόνα 22: Το μοντέλο του βασικού βρόχου εργασίας ελέγχου... 136 Εικόνα 23: Ελαστικό συστατικό για έναν EDF χρονοπρογραμματιστή... 139 Εικόνα 24: Αρχιτεκτονική χρονοπρογραμματισμού με έλεγχο ανάδρασης... 140 Εικόνα 25: Η διαδικασία υλοποίησης παραλλαγών... 146 Εικόνα 26: Ελαστικές ιεραρχίες συστατικών με βάση ελέγχους... 149 17

Εικόνα 27: Σχέση διαδικασίας ανάπτυξης εφαρμογών με τη διαδικασία ανάπτυξης πεδίου εφαρμογών... 151 Εικόνα 28: Υποσύνολο των κλάσεων της μελέτης περίπτωσης... 157 Εικόνα 29: Ιεραρχίες Συστατικών με βάση ελέγχους και χαρακτηριστικά... 162 Εικόνα 30: Οι τρεις φάσεις της GSP... 164 Εικόνα 31: Προτεινόμενη φυσική αρχιτεκτονική δυναμικών υπολογιστικών πλεγμάτων.. 166 18

Καταά λογος Πιναά κων Πίνακας 1: Συστατικά του έργου CentraView... 79 Πίνακας 2: Συστατικά του έργου ROSJava... 80 Πίνακας 3: Έργα ανοιχτού λογισμικού που χρησιμοποιήθηκαν με τα μεγέθη τους και τα πεδία εφαρμογής... 84 Πίνακας 4: Οι μετρικές των Chidamber & Kemerer [34]... 86 Πίνακας 5: Συσχέτιση D-Layer και CDS (Spearman ρ - p < 0.01)... 91 Πίνακας 6: Αποτελέσματα της παλινδρόμησης... 94 Πίνακας 7: Περιγραφικά στατιστικά στοιχεία για τις μετρικές CK & FWBR (N = 21.775 classes)... 97 Πίνακας 8: Spearman ρ για την συσχέτιση των μετρικών επαναχρησιμοποίησης με το CDS... 104 Πίνακας 9: Spearman ρ για την συσχέτιση των μετρικών επαναχρησιμοποίησης με τις διαμερίσεις επιπέδων... 105 Πίνακας 10: Aglets: CDS Spearman ρ... 107 Πίνακας 11: JabRef: CDS Spearman ρ... 107 Πίνακας 12: Ποσοστά αρνητικών συσχετίσεων του CDS με τις μετρικές ανά επίπεδο και έργο 109 Πίνακας 13: Ποσοστά θετικών συσχετίσεων του CDS με τις μετρικές ανά επίπεδο και έργο... 111 Πίνακας 14: Spearman ρ για την συσχέτιση μετρικών με το CDS ανά έργο... 112 Πίνακας 15: Spearman ρ για την συσχέτιση των μετρικών επαναχρησιμοποίησης με διαφορετικές διαμερίσεις επιπέδων ανά έργο... 113 Πίνακας 16: Αποτελέσματα ανάλυσης παλινδρόμησης ανά κατηγορία έργων... 114 Πίνακας 17: Γλωσσικοί όροι που χρησιμοποιούνται κατά τις αξιολογήσεις... 169 Πίνακας 18: Τιμές των μετρήσιμων χαρακτηριστικών των συστατικών ανά συστατικό... 170 Πίνακας 19: Τιμές της επίδρασης των μετρήσιμων χαρακτηριστικών στις ποιοτικές ιδιότητες... 172 Πίνακας 20: Αποστάσεις Hamming κάθε συστατικού από τις ποιοτικές ιδιότητες... 173 Πίνακας 21: Ευκλείδεια απόσταση κάθε συστατικού από τις ποιοτικές ιδιότητες... 173 19

1 Εισαγωγή Σε αυτή την ενότητα θα κάνουμε μία συνοπτική επισκόπηση της ερευνητικής περιοχής (Ενότητα 1.1) και στην συνέχεια θα αναφέρουμε συνοπτικά τις τρεις βασικές συνεισφορές της διατριβής (Ενότητα 1.2). 1.1 Συνοπτική επισκόπηση ερευνητικής περιοχής Η διδακτορική διατριβή συνεισφέρει: 1. Στην κατασκευή συστατικών με μία μεθοδολογία που υπό την καθοδήγηση αρχιτεκτονικών τακτικών και την εφαρμογής τους σε εκτελέσιμα μοντέλα-προγράμματα έχει ως στόχο την διαπίστωση και επίλυση ποιοτικών προβλημάτων (Κεφάλαιο 2). 2. Στην εξαγωγή συστατικών με μία ημι-αυτοματοποιημένη διαδικασία εξαγωγής συστατικών λογισμικού με την υποβοήθηση εργαλείων και μετρικών επαναχρησιμοποίησης που αναπτύχθηκαν στο πλαίσιο αυτής της ερευνητικής εργασίας (Κεφάλαιο 3), και 3. Στην γενίκευση των συστατικών, μέσω της μεθοδολογίας των ελαστικών συστατικών λογισμικού (Κεφάλαιο 4). Η γενίκευση είναι μία απαραίτητη διαδικασία αφού είτε εξαχθεί ένα συστατικό (π.χ. με την προτεινόμενη μεθοδολογία στο (2)) είτε αναπτυχθεί (π.χ. με την προτεινόμενη μεθοδολογία στο (1)) θα πρέπει πιθανώς να προσαρμοσθεί για την χρήση του σε ένα νέο σύστημα, ιδιαίτερα σε ότι αφορά τις ποιοτικές του ιδιότητες. Σε ότι αφορά την διαδικασία κατασκευής συστατικών λογισμικού που προτείνεται στο Κεφάλαιο 2, είναι καθοδηγούμενη από την ποιότητα και εφαρμόζει αρχιτεκτονικές τακτικές για την επίτευξη ποιοτικών στόχων. Η ποιότητα έχει απασχολήσει σε μεγάλο βαθμό την κοινότητα των συστατικών λογισμικού αφού είναι το πιο σημαντικό θέμα σε σχέση με την επιτυχή επαναχρησιμοποίηση συστατικών λογισμικού. Κάποιες σχετικές εργασίες με το θέμα αυτό αναφέρονται στην συνέχεια. Κάποιες εργασίες επικεντρώνονται σε συγκεκριμένα ποιοτικά χαρακτηριστικά ή/και στην μοντελοποίηση συγκεκριμένων περιβαλλόντων εκτέλεσης. Στις εργασίες [92] και [93], για παράδειγμα, χρησιμοποιούνται λεπτομερή μοντέλα της θεωρίας ουρών, τα οποία μπορούν να χρησιμοποιηθούν για την πρόβλεψη της απόδοσης των εφαρμογών Java 2 Enterprise 20

Edition (J2EE). Τα μοντέλα αποτυπώνουν με λεπτομέρειες τους σημαντικούς παράγοντες καθυστέρησης σε ένα εξυπηρετητή J2EE εφαρμογών και μπορούν να χρησιμοποιηθούν για την καθοδήγηση στην σχεδίαση εφαρμογών με αυτή τη τεχνολογία. Τέτοια λεπτομερή μοντέλα μπορούν να χρησιμοποιηθούν για την περιγραφή ρεαλιστικών περιβαλλόντων εκτέλεσης των συστατικών λογισμικού με την χρήση της προτεινόμενης μεθοδολογίας στο Κεφάλαιο 2. Παρόλα αυτά θα πρέπει να τονιστεί πως τα μοντέλα τα οποία είναι συγκεκριμένα για κάποια τεχνολογία έχουν την αξία τους αλλά είναι περιορισμένα από το χρόνο και απαιτείται η διαρκής ενημέρωσή τους. Για παράδειγμα η Java Enterprise Edition έχει αναθεωρηθεί δύο φορές από την δημοσίευση των προαναφερόμενων ερευνητικών εργασιών (Java Enterprise Edition 5 & 6). Επίσης αν περιορισθεί κανείς στην αποτίμηση ενός και μόνο ποιοτικού χαρακτηριστικού, μπορεί να χρησιμοποιήσει πιο εξειδικευμένες μορφές μοντέλων, αλλά χάνει την δυνατότητα πειραματισμού με πολλές ποιοτικές ιδιότητες ταυτόχρονα, πράγμα που κρίνεται απαραίτητο για αρχιτεκτονικά σχέδια γενικών πληροφοριακών συστημάτων, ιδιαίτερα αν λάβει κανείς υπόψη το γεγονός πως αρκετά ποιοτικά χαρακτηριστικά είναι μεταξύ τους αντικρουόμενα και ως εκ τούτου η βελτίωση του ενός μπορεί να οδηγήσει στην επιδείνωση άλλων. Για παράδειγμα οι συγγραφείς στο [19] αναφέρουν «Η επίτευξη του ενός (ποιοτικού χαρακτηριστικού) θα έχει μία επίδραση, κάποιες φορές θετική και κάποιες άλλες αρνητική, στην επίτευξη των άλλων». Η προτεινόμενη μεθοδολογία στο Κεφάλαιο 2 αποσκοπεί στην ταυτόχρονη εκτίμηση διαφορετικών ποιοτικών χαρακτηριστικών και γι αυτό χρησιμοποιεί αρχιτεκτονικές τακτικές και μία τυπική γλώσσα που δεν είναι εξειδικευμένη για ένα μόνο ποιοτικό χαρακτηριστικό. Οι αρχιτεκτονικές τακτικές δεν περιορίζονται μόνο στην απόδοση αλλά καλύπτουν ένα ευρύτερο φάσμα ποιοτικών χαρακτηριστικών μερικά από τα οποία είναι και λιγότερο κατανοητά από τα άλλα. Για παράδειγμα στο [17] αναφέρεται μία λίστα τακτικών για την ευχρηστία (usability) καθώς και τα πλεονεκτήματα από την χρήση των τακτικών αυτών για την ευχρηστία των συστημάτων, ενώ στο [19] αναφέρονται αρκετές τακτικές για άλλα ποιοτικά χαρακτηριστικά όπως η διαθεσιμότητα (availability), η δυνατότητα τροποποιήσεων (modifiability), η ασφάλεια (security), η δυνατότητα ελέγχων (testability), αλλά και η απόδοση και ευχρηστία. Στον αντίποδα των μεθόδων που προσπαθούν να αποτιμήσουν με ακρίβεια μία ποιοτική ιδιότητα, υπάρχουν απόπειρες τυπικής μοντελοποίησης όλων των πιθανών ποιοτικών 21

ιδιοτήτων κάτω από ένα κοινό τυπικό πλαίσιο. Για παράδειγμα στο [120] περιγράφεται η τεχνολογία PECT (Prediction Enabled Component Technology). Η PECT αποτελείται από ένα πλαίσιο υλοποίησης ενός ή περισσοτέρων πλαισίων λογισμού (reasoning frameworks) τα οποία χρησιμοποιούνται για την διερμήνευση του PECT. Το πλαίσιο υλοποίησης αποτελείται από την Abstract Component Technology (ACT) καθώς και εργαλεία (συντάκτες, ελεγκτές περιορισμών, αποθετήρια κλπ.). Το PECT είναι ένα πολύ φιλόδοξο έργο που προσπαθεί να αντιμετωπίσει πολλά διαρκή θέματα σε σχέση με την ποιότητα των συλλογών συστατικών λογισμικού (component assemblies). Ένα ιδιαίτερα δύσκολο σημείο με το PECT είναι πως απαιτείται η χρήση πολλαπλών πλαισίων λογισμού. Θέματα όπως η δυνατότητα αντικατάστασης καθώς και η συμβατότητα των πλαισίων λογισμικού μεταξύ τους είναι δύσκολα θέματα. Οι Abstract State Machines που χρησιμοποιούμε στο Κεφάλαιο 2 προτείνονται ως μία ενδιάμεση λύση, ανάμεσα στις εξειδικευμένες τυπικές γλώσσες για ένα μόνο ποιοτικό χαρακτηριστικό που εξαιτίας της αλληλεπίδρασης των ποιοτικών χαρακτηριστικών [19] θεωρούνται περιοριστικές και στη χρήση ενός εκτεταμένου τυπικού πλαισίου η οποία προϋποθέτει την ύπαρξη ενός πλαισίου λογισμού για κάθε ποιοτικό χαρακτηριστικό υπό διερεύνηση. Οι Abstract State Machines (ASMs) έχουν χρησιμοποιηθεί ευρύτατα για την μοντελοποίηση πολύπλοκων συστημάτων. Πολλές ενδιαφέρουσες εφαρμογές αναφέρονται στον δικτυακό τόπο των ASM [1]. Ενδεικτικά, στο [14] η AsmL χρησιμοποιήθηκε για τον έλεγχο συμφωνίας (conformance) της προδιαγραφής ενός συστατικού λογισμικού σε σχέση με την πραγματική υλοποίησή του. Ο έλεγχος συμφωνίας είναι ένα σημαντικό επόμενο βήμα της διεργασίας που θα περιγράψουμε στο Κεφάλαιο 2 αφού μπορεί να αποδείξει τον ισχυρισμό πως ένα συστατικό λογισμικού συμφωνεί με μία δοθείσα προδιαγραφή. Ένα άλλο σημαντικό θέμα είναι η εμβέλεια μιας μεθοδολογίας επαλήθευσης των ποιοτικών χαρακτηριστικών. Η Attribute-Driven Design μέθοδος (ADD) [18, 19] είναι μία μέθοδος για την σχεδίαση αρχιτεκτονικών λογισμικού που χρησιμοποιεί αρχιτεκτονικές τακτικές ως οδηγούς. Ενώ η ADD αποσκοπεί στην σχεδίαση αρχιτεκτονικών λογισμικού και είναι ουσιαστικά μία προσέγγιση από πάνω-προς-τα-κάτω (top-down), η προτεινόμενη μέθοδος εδώ υποθέτει ένα περιβάλλον (π.χ. ένα πλαίσιο συστατικών λογισμικού ή μία γραμμή προϊόντων λογισμικού) και αποσκοπεί στην σχεδίαση συστατικών λογισμικού που 22

ταιριάζουν με αυτό το περιβάλλον και ικανοποιούν τους ποιοτικούς στόχους που έχουν τεθεί γι αυτά. Η κατασκευή συστατικών λογισμικού με μία μεθοδολογία όπως η προτεινόμενη στο Κεφάλαιο 2 και ιδιαίτερα η γενίκευσή τους με τη δημιουργία πολλών παραλλαγών τους με μία μεθοδολογία όπως η προτεινόμενη στο Κεφάλαιο 4 είναι ενδεχομένως δαπανηρή. Η εξαγωγή συστατικών λογισμικού από έργα ανοιχτού λογισμικού ή/και κλειστού λογισμικού (δηλ. από προϋπάρχοντα συστήματα λογισμικού) είναι μία ιδιαίτερα αποτελεσματική μέθοδος για τη μείωση του κόστους δημιουργίας ενός αποθετηρίου συστατικών λογισμικού. Στην Ενότητα 3.1 περιγράφουμε την αρχιτεκτονική και την προσέγγιση του εργαλείου COPE (Component Adaptation Environment) στην εξαγωγή συστατικών λογισμικού. Εδώ θα αναφέρουμε σχετικές εργασίες και άλλα εργαλεία τα οποία μπορούν να χρησιμοποιηθούν για εξαγωγή συστατικών ή άλλες παρεμφερείς εργασίες (π.χ. κατανόηση κώδικα). Σε ότι αφορά τα παρεμφερή εργαλεία η πιο κοντινή εργασία στο προτεινόμενο εργαλείο COPE περιγράφεται στο [122]. Οι συγγραφείς στο [122] περιγράφουν μία αναδόμηση (refactoring) [100] για προγράμματα Java που ονομάζεται «Εξαγωγή Συστατικού». Η συγκεκριμένη αναδόμηση τροποποιεί μία ομάδα κλάσεων της Java με βάση τις εξαρτήσεις σε ένα Java Bean συστατικό και χρησιμοποιεί τις κλάσεις που χρησιμοποιούν το Java Bean στο σύστημα προέλευσης του συστατικού ως παραδείγματα χρήσης του. Ο αλγόριθμος ομαδοποίησης (clustering) κλάσεων που χρησιμοποιείται στο [122] είναι μόνο ένας από τους πιθανούς αλγορίθμους και προσεγγίσεις που μπορούν να χρησιμοποιηθούν με το COPE το οποίο όπως θα δούμε στην Ενότητα 3.1 διαχωρίζει την σύσταση από την εξαγωγή συστατικών και έχει πολλούς μηχανισμούς σύστασης. Επιπλέον το COPE παρέχει χαρακτηριστικά για τον έλεγχο/επικύρωση του συστατικού και την κατάταξή του σε ένα πεδίο εφαρμογών (domain classification). Σε σχέση με την μεθοδολογία αναγνώρισης των συστατικών το COPE είναι ανοιχτό στην επέκτασή του με νέους μηχανισμούς σύστασης ενώ προς το παρόν υποστηρίζει τρεις τέτοιους μηχανισμούς (οι οποίοι συζητούνται αναλυτικά στην Ενότητα 3.1.1.1) και βασίζονται σε στατική ανάλυση του κώδικα. Η τρέχουσα έκδοση του COPE δεν χρησιμοποιεί δυναμική ανάλυση για την ταυτοποίηση και εξαγωγή συστατικών, γιατί μία 23

από τις βασικές απαιτήσεις του COPE είναι πως αφορά συστήματα τα οποία είναι άγνωστα στον μηχανικό λογισμικού που το χρησιμοποιεί διότι το COPE σχεδιάστηκε ώστε να μπορεί να χρησιμοποιηθεί για την εξαγωγή συστατικών λογισμικού από οποιοδήποτε σύστημα ανοιχτού λογισμικού. Εξαιτίας αυτής της απαίτησης δεν μπορούμε να υποθέσουμε πως ο μηχανικός λογισμικού έχει την απαιτούμενη γνώση για την δημιουργία επαρκών ελέγχων στο επίπεδο του συστήματος, που είναι αναγκαίες για την δυναμική ανάλυση. Παρόλα αυτά η δυναμική ανάλυση είναι μία ενδιαφέρουσα κατεύθυνση για το COPE αν μπορεί αν συνδυαστεί με μία επαναληπτική προσέγγιση στην κατανόηση του συστήματος. Η τρέχουσα έκδοση του COPE χρησιμοποιεί δυναμική ανάλυση αφού εξαχθούν συστατικά, για την κατανόηση και την διασφάλιση ποιότητας των εξαγόμενων συστατικών λογισμικού. Σε σχέση με τεχνικές δυναμικής ανάλυσης. μπορούμε να αναφέρουμε τις ακόλουθες. Ο Allier και συνεργάτες στο [3], χρησιμοποιούν δυναμική ανάλυση για την αναγνώριση συστατικών. Η προσέγγισή τους υποθέτει πως υπάρχει τεκμηρίωση που αφορά στις περιπτώσεις χρήσης του συστήματος. Επίσης για την κατασκευή του δυναμικού γράφου κλήσεων μεταξύ των κλάσεων του προγράμματος, είναι απαραίτητη η ύπαρξη καλών δεδομένων ελέγχου. Από την εμπειρία μας αυτά τα δύο συνήθως δεν είναι διαθέσιμα σε προγράμματα ανοιχτού λογισμικού. Επιπλέον η καταμέριση του συστήματος που προτείνεται απαιτεί μία κλάση να ανήκει σε ένα και μόνο συστατικό. Παρόλα αυτά (α) οι κλάσεις που είναι χαμηλά στον ακυκλικό γράφο του έργου είναι συνήθως κλάσεις γενικού σκοπού με μεγάλο αριθμό κλήσεων (high fan-in) και (β) αυτές οι κλάσεις δεν καλούνται απευθείας από καμία περίπτωση χρήσης γιατί καλύπτουν απαιτήσεις υποδομής (δηλ. τεχνικές απαιτήσεις). Εξαιτίας του (β) δεν μπορούν να αναγνωριστούν ως αυτόνομα συστατικά από την δυναμική ανάλυση με βάση περιπτώσεις χρήσης και εξαιτίας του (α) είναι υπερβολικά περιοριστικό να επιβάλλουμε την συμπερίληψή τους σε κάποιο συγκεκριμένο συστατικό. Τα παραπάνω υποδεικνύουν πως η μέθοδος αυτή θα ήταν πιθανότητα πιο επιτυχημένη αν εφαρμόζονταν στο επίπεδο της επιχειρηματικής λογικής μιας εφαρμογής. Σε μία άλλη ερευνητική κατεύθυνση σχετική με την δυναμική ανάλυση για την κατανόηση προγραμμάτων, ο Cornelissen και άλλοι [41] παρουσιάζουν μία επισκόπηση της βιβλιογραφίας σχετικά με την έρευνα στο πεδίο της κατανόησης προγραμμάτων με τη χρήση δυναμικής ανάλυσης. Η κατανόηση των προγραμμάτων θα μπορούσε να χρησιμοποιηθεί μεταξύ άλλων και για την εξαγωγή συστατικών. Οι συγγραφείς στο [41] 24

παρέχουν μία πολύπλευρη κατάταξη των δημοσιευμένων εργασιών της ερευνητικής περιοχής. Οι πλευρές (facets) περιλαμβάνουν την δραστηριότητα (π.χ. εντοπισμός χαρακτηριστικών feature location), τον στόχο (π.χ. Αντικειμενοστραφές λογισμικό), την μέθοδο (π.χ. τεμαχισμός slicing) και την προσέγγιση αξιολόγησης αποτελεσμάτων (π.χ. μελέτη περίπτωσης). Ένα παράδειγμα μιας προσέγγισης για την κατανόηση προγραμμάτων με την χρήση δυναμικής ανάλυσης είναι αυτήν που αναλύεται στο [48] που χρησιμοποιεί ομαδοποίηση κλάσεων (clustering) με βάση την συμμετοχή τους σε τμήματα που παράγονται χρησιμοποιώντας ανάλυση ιχνών (trace analysis). Προτείνεται μία αρχιτεκτονική άποψη του συστήματος που απεικονίζει τις διάφορες ομάδες κλάσεων και τις κλάσεις που ενώ ανήκουν στις ίδιες ομάδες ανήκουν ταυτόχρονα σε διαφορετικά πακέτα. Αυτό είναι αναμενόμενο αφού ένα ίχνος επίσης διαπερνά την δομή των πακέτων. Οι ομάδες είναι λειτουργικές και επομένως είναι πιθανώς κατάλληλες ενότητες για δημιουργία συστατικών και επαναχρησιμοποίηση, αν και αυτή είναι κατεύθυνση που δεν διερευνάται στο [48]. Εκτός από την στατική παράταξη των ομάδων κλάσεων πάνω από την δομή των πακέτων, η προτεινόμενη αρχιτεκτονική όψη επίσης παρέχει διαγράμματα ακολουθίας της UML (sequence diagrams) που δείχνουν τις αλληλεπιδράσεις μεταξύ κλάσεων που ανήκουν σε διαφορετικές ομάδες. Αυτές οι αλληλεπιδράσεις περιέχουν πολύ λιγότερα συμβάντα από το τεράστιο πλήθος συμβάντων που θα απεικονίζονταν στο αρχικό ίχνος (με όλες τις κλάσεις) και επομένως είναι πιο εύκολο να απεικονισθούν και να κατανοηθούν. Οι συγγραφείς επίσης επαληθεύουν την προσέγγισή τους δείχνοντας πως τα διαγράμματα ακολουθίας καθώς και η παραγόμενη ομαδοποίηση είναι συναφείς με αυτές που θα παρήγαγε ένας μηχανικός λογισμικού χωρίς την βοήθεια εργαλείων. Η κατανόηση προγραμμάτων μπορεί να χρησιμοποιηθεί πέρα από την εξαγωγή συστατικών και για άλλους σκοπούς όπως η κατανόηση της αρχιτεκτονικής. Ένα χαρακτηριστικό παράδειγμα αυτής της κατεύθυνσης είναι η εργασία στο [30] που περιγράφει μία ημιαυτόματη προσέγγιση στην αναγνώριση εννοιών στον πηγαίο κώδικα (concept identification). Οι συγγραφείς χρησιμοποιούν μετρικές για την υπόδειξη σημαντικών εννοιών σε ένα πεδίο ανάπτυξης. Οι μετρικές που συλλέγονται είναι αυτές που παράγονται από το Eclipse metrics framework. Αφού συλλεχθούν οι μετρικές χρησιμοποιείται ένας αλγόριθμος μηχανικής μάθησης (supervised learning) και συγκεκριμένα ο Support Vector Machines, για την κατάταξη των αποτελεσμάτων. Έχουν εφαρμόσει την μέθοδό τους σε δύο 25

έργα και έδειξαν πως η προσέγγιση παρέχει μία καλή ένδειξη των κλάσεων στον πηγαίο κώδικα που αναπαριστούν έννοιες στο πεδίο της εφαρμογής. Το συμπέρασμα είναι πως οι κλάσεις που αποτελούν έννοιες του πεδίου εφαρμογής (domain classes) έχουν διανύσματα μετρικών που το μέγεθος και η πολυπλοκότητά τους είναι αισθητά διαφορετικά από τα αντίστοιχα διανύσματα των κλάσεων που δεν αναπαριστούν έννοιες του πεδίου εφαρμογής. Και οι τιμές της δικής μας προτεινόμενης μετρικής επαναχρησιμοποίησης, που θα συζητήσουμε διεξοδικά στην Ενότητα 3.2 διαφέρουν στατιστικά για τις κλάσεις του πεδίου εφαρμογής (domain classes), για τις κλάσεις υποδομής (infrastructure classes) και για τις κλάσεις της γραφικής διασύνδεσης χρηστών (UI classes). Η αποτίμηση της επαναχρησιμοποίησης με μετρικές είναι μία από τις μεθόδους που χρησιμοποιούνται στο COPE για την αναγνώριση πιθανώς ενδιαφερόντων κλάσεων ως σημεία εκκίνησης για την εξαγωγή συστατικών. Παρόλα αυτά έχουμε διαπιστώσει πως αν και χρήσιμη ένδειξη οι μετρικές μόνο δεν είναι επαρκείς για την ανάκτηση της αρχιτεκτονικής ενός συστήματος (Software Architecture Recovery). Μία από τις βασικές μεθόδους εξαγωγής συστατικών του COPE βασίζεται σε μία προτεινόμενη μετρική διευκόλυνσης επαναχρησιμοποίησης λευκού κουτιού (Facilitating Metric for White-Box Reuse FWBR) που αναλύεται διεξοδικά στην Ενότητα 3.2. H FWBR παράγεται από τις μετρικές των Chidamber-Kemerer [34]. Εκτός από τις εργασίες που θα εξετάσουμε λεπτομερώς και συγκριτικά στην Ενότητα 3.2.3 [12, 68, 104] εδώ θα εξετάζουμε ένα πλήθος σχετικών εργασιών που χρησιμοποίησαν υποσύνολα ή τροποποιημένες εκδόσεις των μετρικών που αναφέρονται στο [34] για να εκτιμήσουν την δυνατότητα επαναχρησιμοποίησης των κλάσεων ή ευρύτερων μονάδων λογισμικού (π.χ. συστατικά, βιβλιοθήκες κλπ.). Επίσης εξετάζουμε κάποιες εργασίες που χρησιμοποίησαν τις δικές τους μετρικές τις οποίες ανέπτυξαν από μηδενική βάση. Για κάθε εργασία που εξετάζουμε αναφέρουμε και την σχέση της με την προτεινόμενη από εμάς προσέγγιση. Στο [13] προτείνεται μία μετρική επαναχρησιμοποίησης αντικειμενοστραφούς λογισμικού με βάση άλλες μετρικές ή παράγοντες που συνήθως σχετίζονται με την επαναχρησιμοποίηση. Η εργασία αυτή περιγράφει δύο πειράματα: ένα γρήγορο πείραμα στο οποίο δύο προγραμματιστές ανέπτυξαν ένα πολύ επαναχρησιμοποιήσιμο και ένα πολύ συγκεκριμένο για μία εφαρμογή συστατικό αντίστοιχα και τα αποτελέσματά τους συγκρίθηκαν με την λίστα των μετρικών. Το δεύτερο πείραμα εφάρμοσε τις μετρικές σε 26

γνωστές αντικειμενοστραφείς βιβλιοθήκες από αρκετές αντικειμενοστραφείς γλώσσες (οι οποίες θεωρούνται πολύ επαναχρησιμοποιήσιμες). Τα πειράματα κατέδειξαν πως κάποιοι παράγοντες που συχνά αναφέρονται ως σημαντικοί για την επαναχρησιμοποίηση, στη πραγματικότητα δεν επηρεάζουν την επαναχρησιμοποίηση ενός συστατικού: «Για παράδειγμα, αποδείχθηκε πως το μέγεθος (γραμμές κώδικα), το πλήθος των μεθόδων και το πλήθος των ιδιοτήτων δεν φαίνεται να έχουν επίδραση στο πόσο επαναχρησιμοποιήσιμη είναι μία κλάση». Αντιθέτως μετρικές που έχουν σχέση με τη διασύνδεση της κλάσης όπως η σύζευξη μιας κλάσης με άλλες κλάσεις, η τεκμηρίωση, η ορθότητα και οι επιλογές ονομάτων είναι πολύ σημαντικές μετρικές που επηρεάζουν έντονα την επαναχρησιμοποίηση. Αυτό υποδεικνύει πως μία άποψη μαύρου κουτιού για την επαναχρησιμοποίηση των συστατικών είναι πιο σημαντική και δίνει λιγότερη βαρύτητα σε εσωτερικούς παράγοντες. Η συγγραφέας στη συνέχεια παρουσιάζει τις μετρικές με τη μεγαλύτερη επίδραση για την επαναχρησιμοποίηση των κλάσεων και τις συνδυάζει σε μία μετρική που ονομάζεται «Επαναχρησιμοποίηση για μια κλάση Rc. Η μετρική αυτή μπορεί να χρησιμοποιηθεί ως πρόβλεψη κατά την διαδικασία εξέτασης της συμπερίληψης μιας κλάσης σε ένα αποθετήριο επαναχρησιμοποίησης. Μία μη επαναχρησιμοποιήσιμη κλάση έχει τιμή Rc μικρότερη από 5, ενώ μια επαναχρησιμοποιήσιμη κλάση έχει τιμή Rc μεγαλύτερη από 10. Σε σύγκριση με την δική μας εργασία, αυτή η εργασία επικεντρώνεται περισσότερο στην επαναχρησιμοποίηση μαύρου κουτιού αφού συμπεριλαμβάνει απόψεις όπως η τεκμηρίωση. Παρόλα αυτά αφού τα συστατικά που εξετάσθηκαν ήταν κλάσεις, η σύζευξη θεωρείται επίσης ένας πολύ σημαντικός παράγοντας. Στο [108] ο συγγραφέας χρησιμοποιεί μία εμπειρική μελέτη επαναχρησιμοποίησης λογισμικού στη NASA για τον καθορισμό των παραγόντων που χαρακτηρίζουν την επιτυχημένη επαναχρησιμοποίηση σε μεγάλα συστήματα. Η μελέτη ακολουθεί την προσέγγιση στόχου-ερωτήματος-μετρικής (Goal-Question-Metric) για να χαρακτηρίσει την επαναχρησιμοποίηση λογισμικού στο επίπεδο του έργου, στο επίπεδο της σχεδίασης ενοτήτων, στο επίπεδο της υλοποίησης ενοτήτων, καθώς και σφάλματα ενοτήτων και αλλαγές σε σχέση με την επαναχρησιμοποίηση. Οι ενότητες λογισμικού που εξετάσθηκαν ήταν υπό-ρουτίνες, συναρτήσεις γενικού σκοπού, κύρια προγράμματα, μακροεντολές και ομαδοποιημένα δεδομένα. Η ερμηνεία των στατιστικών αναλύσεων έδειξε πως οι ενότητες που επαναχρησιμοποιήθηκαν χωρίς αλλαγές ήταν κυρίως μικρές, καλά τεκμηριωμένες, με 27

απλές διασυνδέσεις και λίγες επεξεργασίες εισόδου-εξόδου. Επιπλέον ήταν χαμηλά στην ιεραρχία των κλήσεων («τερματικοί κόμβοι») χαρακτηριστικό που είχε ως αποτέλεσμα τις λίγες αλληλεπιδράσεις με άλλες ενότητες και μεγάλο αριθμό αλληλεπιδράσεων με ενότητες γενικής χρήσης χαμηλού επιπέδου (utility modules). Επίσης τα σφάλματα σε επαναχρησιμοποιούμενες ενότητες χωρίς αναθεωρήσεις ήταν λίγα και επομένως η προσπάθεια επιδιόρθωσης λαθών ήταν μικρή. Τα αποτελέσματά μας σε μεγάλο βαθμό συμπίπτουν με τα εμπειρικά ευρήματα του [108] με την διαφορά πως η δική μας εργασία αφορά το αντικειμενοστραφές λογισμικό. Στο [4] οι συγγραφείς εξετάζουν την επαναχρησιμοποίηση των αντικειμενοστραφών βιβλιοθηκών της Java και της Eiffel. Για τον καθορισμό της ευκολίας επαναχρησιμοποίησής τους εξετάζουν τον αριθμό των δημοσίων μεθόδων μιας κλάσης (μια τροποποιημένη έκδοση της μετρικής WMC με πολυπλοκότητα μεθόδου ίση με 1). Ο λόγος της συμπερίληψης των δημοσίων μεθόδων είναι πως κατά την επαναχρησιμοποίηση μαύρου κουτιού (black box reuse) το μόνο που έχει σημασία είναι η διασύνδεση. Ένας μεγάλος αριθμός μεθόδων, σύμφωνα με τους συγγραφείς, υποδεικνύει μία περισσότερο συγκεκριμένη για μία εφαρμογή και επομένως λιγότερο επαναχρησιμοποιήσιμη κλάση. Παρόλα αυτά υψηλές τιμές του WMC μπορούν επίσης να θεωρηθούν ωφέλιμες κατά την επαναχρησιμοποίηση διότι δείχνουν πως τα συστατικά λογισμικού παρέχουν περισσότερες υπηρεσίες. Η μετρική Depth of Inheritance Tree (DIT) χρησιμοποιείται επίσης. Μεγάλες τιμές δείχνουν πως ο χρήστης θα χρειαστεί να εξετάσει ένα μεγάλο πλήθος προγονικών κλάσεων για να επαναχρησιμοποιήσει επιτυχώς μια κλάση. Επίσης μεγάλες τιμές του DIT δείχνουν περισσότερη εξειδίκευση και λιγότερη γενίκευση. Η εργασία αυτή διαφέρει από τη δική μας αφού εξετάζει επαναχρησιμοποιήσιμες βιβλιοθήκες που είναι ήδη διαμορφωμένα συστατικά λογισμικού ή πλαίσια. Είναι επομένως περισσότερο σχετική με την επαναχρησιμοποίηση μαύρου κουτιού. Στο [28] επίσης οι συγγραφείς εξετάζουν την επαναχρησιμοποίηση αντικειμενοστραφούς λογισμικού με βάση μετρικές. Χρησιμοποιούν τις μετρικές που προτάθηκαν στο [96]. Η εργασία αυτή εξετάζει την επαναχρησιμοποίηση φακέλων (folders) σε αποθετήρια ανοιχτού λογισμικού. Υπολογίζει την αστάθεια ενός φακέλου ως I = 28 C e (C e +C a ), όπου C e είναι η εισερχόμενη σύζευξη (efferent coupling), δηλ. φάκελοι που εξαρτώνται άμεσα από έναν φάκελο και C a είναι η εξερχόμενη σύζευξη (δηλ. φάκελοι τους οποίους χρησιμοποιεί αυτός

ο φάκελος). Η σταθερότητα είναι το συμπλήρωμα της αστάθειας (S = 1 I). Στην εργασία περιέχεται επίσης και μία μελέτη περίπτωσης της προσέγγισής τους που αφορά το σύστημα XMMS. Η εργασία αυτή διαφέρει από τη δική μας στο ότι εξετάζει πακέτα και επομένως ασχολείται με περισσότερο έτοιμες για επαναχρησιμοποίηση λύσεις. Στο [123] οι συγγραφείς περιγράφουν μία σουίτα μετρικών για συστατικά λογισμικού που είναι μαύρα κουτιά. Η προταθείσα σουίτα μετρικών μπορεί να χρησιμοποιηθεί για την εκτίμηση της επαναχρησιμοποίησης ενός συστατικού λογισμικού ελλείψει του κώδικά του. Η μη διαθεσιμότητα του πηγαίου κώδικα καθιστά αδύνατη τη χρήση άλλων δημοφιλών μετρικών, όπως αυτές που προτείνονται στο [34], καθώς αυτές οι μετρικές υπολογίζονται με ανάλυση του πηγαίου κώδικα. Η προτεινόμενη σουίτα μετρικών διερευνάται με εφαρμογή στο μοντέλο συστατικών λογισμικού Java Beans, αν και η χρήση είναι επίσης εφαρμόσιμη και σε άλλες τεχνολογίες συστατικών. Η προσέγγιση των Washizaki κ.α. ασχολείται περισσότερο με την επαναχρησιμοποίηση μαύρου κουτιού μιας συγκεκριμένης τεχνολογίας (Java Beans) και επομένως δεν είναι και τόσο συγκρίσιμη με την δική μας εργασία. Στο [2] προτείνονται δύο μετρικές σε σχέση με πρότυπα (templates) τα οποία χρησιμοποιούνται σε ένα αντικειμενοστραφές σύστημα. Η πρώτη μετρική είναι η Function Template Factor (FTF) και η δεύτερη η Class Template Factor (CTF). Αυτές οι μετρικές μπορούν να χρησιμοποιηθούν με αντικειμενοστραφείς γλώσσες προγραμματισμού που παρέχουν πρότυπα (templates ή generics) για συναρτήσεις και κλάσεις όπως η C++ και πιο πρόσφατα η C# και η Java. Η μετρική FTF είναι ο λόγος των συναρτήσεων-πρότυπα προς το συνολικό πλήθος των συναρτήσεων σε ένα σύστημα. Παρομοίως, η μετρική CTF είναι ο λόγος των κλάσεων-πρότυπα προς το συνολικό πλήθος κλάσεων σε ένα σύστημα. Σε σχέση με την δική μας εργασία, αυτή η εργασία εξετάζει συναρτήσεις-πρότυπα και κλάσειςπρότυπα αλλά δεν συμπεριλαμβάνει άλλα χαρακτηριστικά των κλάσεων. Ένα πλήθος Ευρωπαϊκών ερευνητικών προγραμμάτων, παρεμφερή με το OPEN-SME, που είναι το πλαίσιο της εργασίας στην Ενότητα 3.2, διερεύνησε το ερώτημα της ποιότητας του αντικειμενοστραφούς λογισμικού γενικά και ειδικότερα την επαναχρησιμοποίησή του, συμπεριλαμβανομένων των SQO-OSS [107] και QualiPSo [45]. Η διαφορά του OPEN-SME από αυτά τα έργα είναι πως είναι έχει στενότερη εμβέλεια μια και η υπηρεσία 29

επαναχρησιμοποίησης παρέχεται για συγκεκριμένα πεδία εφαρμογής, αλλά και βαθύτερη ταυτόχρονα εμβέλεια μια και προσπαθεί να παρέχει πιο προχωρημένες υπηρεσίες επαναχρησιμοποίησης σ αυτά τα πεδία εφαρμογής, συμπεριλαμβανομένων της εξαγωγής συστατικών λογισμικού καθώς και της πιστοποίησής τους. Η υποβοήθηση της εκτίμησης ετοιμότητας για επαναχρησιμοποίηση που περιγράφεται στην Ενότητα 3.2 είναι μια από τις βασικές απαιτήσεις μιας τέτοιας προσέγγισης σε υπηρεσίες επαναχρησιμοποίησης. Η παραγωγή από το μηδέν συστατικών με συγκεκριμένα ποιοτικά χαρακτηριστικά (Κεφάλαιο 2) καθώς και η εξαγωγή τους από υπάρχοντα έργα λογισμικού (Κεφάλαιο 3) δεν εξασφαλίζει πως τα παραγόμενα ή εξαγόμενα συστατικά είναι κατάλληλα προς επαναχρησιμοποίηση σε όλα τα μελλοντικά συστήματα. Πολύ συχνά απαιτείται η προσαρμογή των συστατικών για την χρήση τους σε ένα άλλο σύστημα. Στο Κεφάλαιο 4 συζητάμε μία μεθοδολογία γενίκευσης συστατικών λογισμικού: τα Ελαστικά Συστατικά Λογισμικού. Τα ελαστικά συστατικά λογισμικού είναι μία μέθοδος που εφαρμόζεται κατά τον χρόνο σχεδίασης και υλοποίησης των συστατικών λογισμικού. Έχουν προταθεί στην βιβλιογραφία άλλες μέθοδοι που είναι σχετικές με την προσαρμογή συστημάτων κατά τον χρόνο εκτέλεσης. Για παράδειγμα στο [64] τα συστατικά συνοδεύονται επίσης από συμβόλαια τα οποία εκφράζονται στην CQML+. Η προσέγγιση βασίζεται στο ότι το περιβάλλον εκτέλεσης των συστατικών πραγματικού χρόνου (container) ConQoS RT επιβάλλει τα συμβόλαια ποιότητας των συστατικών κατά το χρόνο εκτέλεσης και υποστηρίζει τη δυναμική προσαρμογή με τη χρήση διαφορετικών εκδόσεων των συστατικών. Τα συστατικά μπορεί να είναι σύνθετα συστατικά (composite components) [58], που είναι συστατικά τα οποία τροποποιούν την εσωτερική τους δομή για να υποστηρίξουν διαφορετικές απαιτήσεις. Ένα σύνθετο συστατικό υποστηρίζει την παραλλαγή του κατά το χρόνο εκτέλεσης με την αλλαγή της ρύθμισης της εσωτερικής του δομής. Εσωτερικά, χρησιμοποιούνται τελεστές απόψεων (aspect operators) και κώδικας συγκόλλησης (glue code) για την τροποποίηση της δομής του συστατικού με συστατικά που προέρχονται από ένα αποθετήριο συστατικών. Τα σύνθετα συστατικά είναι παρόμοια με τα προτεινόμενα ελαστικά συστατικά στην Ενότητα 4.2, με την βασική διαφορά να είναι ότι δεν τροποποιούμε την εσωτερική δομή των συστατικών κατά το χρόνο εκτέλεσης, αλλά αντί αυτού παρέχουμε ευελιξία μέσω μίας διεργασίας που καθοδηγείται από αρχιτεκτονικές τακτικές (και η οποία απαιτεί και την 30

ανθρώπινη διαίσθηση) κατά το χρόνο σχεδίασης και υλοποίησης. Αυτό δεν σημαίνει όμως πως τα ελαστικά συστατικά που προτείνονται δεν μπορούν να χρησιμοποιηθούν για προσαρμογή κατά το χρόνο εκτέλεσης: διαφορετικές παραλλαγές θα μπορούσαν να φορτωθούν σε ένα περιβάλλον εκτέλεσης συστατικών το οποίο ταιριάζει τις απαιτήσεις των εφαρμογών με τις κατάλληλες παραλλαγές συστατικών όπως το ConQoS RT. Θεωρούμε αυτές τις δύο προσεγγίσεις, της εσωτερικής αλλαγής ρύθμισης κατά το χρόνο εκτέλεσης και της παραλλαγής με βάση τακτικές κατά το χρόνο σχεδίασης, ως δύο συμπληρωματικές ερευνητικές κατευθύνσεις. Την ιδέα αυτή της χρήσης ελαστικών συστατικών κατά τον χρόνο εκτέλεσης την διερευνούμε στην Ενότητα 4.4.2 όπου εξετάζουμε τον τρόπο χρήσης των ελαστικών συστατικών λογισμικού σε υπολογιστικά πλέγματα ως μέσο προ-ρύθμισης μιας εφαρμογής πριν την εκτέλεσή της σε μία συστοιχία υπολογιστών. Η προτεινόμενη ρύθμιση της εφαρμογής λαμβάνει χώρα πριν την φάση της εκτέλεσης της Διαδικασίας Χρονοπρογραμματισμού Πλέγματος (Grid Scheduling Process GSP). Οι προσεγγίσεις με βάση συστατικά λογισμικού για υπολογιστικά πλέγματα είναι ένα από τα περισσότερο υποσχόμενα παραδείγματα προγραμματισμού το οποίο μπορεί να επιφέρει σημαντικές θετικές επιδράσεις στην ανάπτυξη εφαρμογών για υπολογιστικά πλέγματα. Τα μοντέλα συστατικών για υπολογιστικά πλέγματα όπως το GCM [40] και το CCA (Common Component Architecture) [56] υπόσχονται την απλοποίηση της ανάπτυξης εφαρμογών για υπολογιστικά πλέγματα. Παρόλα αυτά τα μοντέλα συστατικών για υπολογιστικά πλέγματα θεωρούμε πως δεν είναι η πλήρης απάντηση. Θεωρούμε πως όπως και στα μοντέλα συστατικών για επιχειρηματικές εφαρμογές (enterprise computing component models) στα οποία σχεδιαστικά ιδιώματα και καλές πρακτικές δημοσιεύονται συνεχώς, τα μοντέλα συστατικών για υπολογιστικά πλέγματα χρειάζονται επίσης την προσθήκη εξειδικευμένων σχεδιαστικών προτύπων για υπολογιστικά πλέγματα. Η εφαρμογή αυτών των προτύπων μπορεί να χρησιμοποιηθεί στο πλαίσιο της κατασκευής ελαστικών συστατικών λογισμικού για υπολογιστικά πλέγματα. Η προσέγγιση των ελαστικών συστατικών λογισμικού επιτρέπει την ανάπτυξη παραλλαγών συστατικών για την πιο αποδοτική εκμετάλλευση του επιλεγμένου συνόλου πόρων στο πλαίσιο της GSP. Η προσέγγιση των ελαστικών συστατικών δεν είναι εξαρτημένη με κάποιο συγκεκριμένο μοντέλο συστατικών αλλά είναι 31