Εργαλειοθήκη ανάπτυξης συστατικών λογισμικού στην PHP

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

Download "Εργαλειοθήκη ανάπτυξης συστατικών λογισμικού στην PHP"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΔΙΑΤΜΗΜΑΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ «ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΔΙΟΙΚΗΣΗ» ΤΜΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ Εργαλειοθήκη ανάπτυξης συστατικών λογισμικού στην PHP Διπλωματική Εργασία του Κωνσταντίνου Ακριτίδη (ΑΕΜ: 434) Εξεταστική Επιτροπή Επιβλέπων: Σταμέλος Ιωάννης Μέλη: Βλαχάβας Ιωάννης Πετρίδου Ευγενία ΘΕΣΣΑΛΟΝΙΚΗ ΣΕΠΤΕΜΒΡΙΟΣ i-

2 Η πρόοδος είναι δυνατή μόνον εάν εκπαιδεύσουμε τους εαυτούς μας να σκέπτονται τα προγράμματα ως προγράμματα και όχι ως τμήματα εκτελέσιμου κώδικα Edsger Wybe Dijkstra -ii-

3 Στην Στελίνα -iii-

4

5 Πρόλογος Η επαναχρησιμοποίηση λογισμικού αποτελεί σήμερα έναν από τους σημαντικότερους τομείς της έρευνας στον κλάδο της Πληροφορικής και των Μηχανικών Λογισμικού. Στην παρούσα διπλωματική εργασία παρουσιάζεται μια πρόσφατη επισκόπηση βιβλιογραφίας στον τομέα της επαναχρησιμοποίησης λογισμικού καθώς και σύγχρονες τάσεις της όπως αυτές αποτυπώθηκαν στο πρόσφατο Διεθνές Συνέδριο για την Επαναχρησιμοποίηση Λογισμικού (ICSR) Στα πλαίσια της διπλωματικής εργασίας υλοποιήθηκε μια διαδικτυακή εφαρμογή βασικότερα αντικείμενα της οποίας είναι η ανάλυση PHP και Java έργων και η δυνατότητα στον χρήστη να ανεβάζει τον δικό του κώδικα online, ο οποίος αναλύεται αυτοματοποιημένα και εξάγονται συγκεκριμένες μετρικές (metrics). Η παραπάνω διαδικτυακή εφαρμογή βρίσκεται σε περιβάλλον cloud σε δοκιμαστικό server. Για την υλοποίησή της χρησιμοποιήθηκε κυρίως η γλώσσα προγραμματισμού PHP, σε ελάχιστα σημεία η γλώσσα προγραμματισμού Java καθώς και τεχνολογίες όπως HTML, MySQL, jquery,css. Για να υλοποιηθεί η παρούσα εργασία χρειάστηκε να γίνουν χρήσεις προγραμμάτων και τεχνολογιών ΕΛ/ΛΑΚ όπως του προγράμματος PHP Depend. -i-

6 Abstract Software reuse is currently one of the major areas of research in Information Technology and Software Engineering. This thesis presents a recent literature review in software reuse and modern trends as introduced in the recent International Conference on Software Reuse (ICSR) 2015 in Miami, Florida. Within the thesis a web application was implemented, main objects of which are the analysis of PHP and Java projects and the ability of a user to upload online his own source code that is being automatically analyzed and specific metrics are exported. The aforementioned web application is uploaded to a cloud environment in a test server. For the implementation of this application it was mainly used PHP programming language, Java programming language and technologies such as HTML, MySQL, jquery, CSS. To create this work FLOSS programs and technologies such as PHP Depend had been used. -ii-

7 Ευχαριστίες Στο σημείο αυτό θα ήθελα να ευχαριστήσω όλους όσοι συνέβαλαν στην υλοποίηση αυτής της εργασίας, αρχής γενομένης από τον επιβλέποντα καθηγητή, Καθηγητή κ. Ιωάννη Σταμέλο. Θα ήθελα να ευχαριστήσω επίσης τον υποψήφιο διδάκτορα Κρητικό Απόστολο για την άριστη συνεργασία που είχαμε κατά την διάρκεια της ενασχόλησής μου με την εργασία αυτή. Ειδική αναφορά θα ήθελα να κάνω εδώ στον φίλο μου Παύλο και τον ξάδερφό μου Νίκο για την συνεισφορά τους στην κατανόηση από μέρους μου συγκεκριμένων τεχνολογιών που χρησιμοποιήθηκαν στην παρούσα διπλωματική. Τέλος θα ήθελα να ευχαριστήσω την οικογένειά μου για την αμέριστη συμπαράσταση όλα αυτά τα χρόνια και την υπομονή που έδειξαν. Ελπίζω με την διπλωματική αυτή εργασία να δικαιώσω όλους αυτούς που πίστεψαν σε μένα. Κωνσταντίνος Ακριτίδης Σεπτέμβρης iii-

8

9 Περιεχόμενα ΠΡΟΛΟΓΟΣ... I ABSTRACT... II ΕΥΧΑΡΙΣΤΙΕΣ... III ΠΕΡΙΕΧΟΜΕΝΑ... V 1 ΕΙΣΑΓΩΓΗ ΣΚΟΠΟΣ ΤΗΣ ΕΡΓΑΣΙΑΣ ΔΟΜΗ ΚΑΙ ΠΕΡΙΕΧΟΜΕΝΟ Η ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PHP Ορισμός Λόγοι επιλογής της PHP ΕΙΔΗ ΛΟΓΙΣΜΙΚΟΥ ΚΑΙ COPE ΕΛΕΥΘΕΡΟ ΛΟΓΙΣΜΙΚΟ ΛΟΓΙΣΜΙΚΟ ΑΝΟΙΧΤΟΥ ΚΩΔΙΚΑ Ορισμός του Ανοιχτού Κώδικα (The Open Source Definition) ΣΤΑΤΙΚΗ ΑΝΑΛΥΣΗ ΚΩΔΙΚΑ (STATIC CODE ANALYSIS) COMPONENT ADAPTATION ENVIRONMENT (COPE) Τρόπος λειτουργίας ΣΥΣΤΑΤΙΚΑ ΛΟΓΙΣΜΙΚΟΥ (SOFTWARE COMPONENTS) ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ ΒΑΣΙΣΜΕΝΗ ΣΤΑ ΣΥΣΤΑΤΙΚΑ ΛΟΓΙΣΜΙΚΟΥ (COMPONENT BASED SOFTWARE ENGINEERING CBSE) ΕΠΑΝΑΧΡΗΣΙΜΟΠΟΙΗΣΗ ΚΩΔΙΚΑ ΟΡΙΣΜΟΣ ΣΚΟΠΟΣ Αύξηση παραγωγικότητας Μείωση κόστους v-

10 4.2.3 Βελτίωση ποιότητας Αύξηση αξιοπιστίας Επιτάχυνση ανάπτυξης Μείωση κινδύνου επεξεργασίας (en. process risk) ΠΡΟΣΕΓΓΙΣΕΙΣ ΣΥΓΧΡΟΝΕΣ ΤΑΣΕΙΣ ΣΤΗΝ ΕΠΑΝΑΧΡΗΣΙΜΟΠΟΙΗΣΗ ΚΩΔΙΚΑ ΜΕΤΡΙΚΕΣ ΜΕΤΡΙΚΕΣ ΛΟΓΙΣΜΙΚΟΥ (SOFTWARE METRICS) ΠΙΝΑΚΑΣ ΜΕΤΡΙΚΩΝ ΕΡΓΑΛΕΙΑ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ PHP DEPEND XML Ορισμός XML XML Parsing SPRING REST FRAMEWORK JACKSON JSON AJAX (ASYNCHRONOUS JAVASCRIPT AND XML) JAVASCRIPT ΚΑΙ JQUERY ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΕΦΑΡΜΟΓΗΣ ΑΠΑΙΤΗΣΕΙΣ Απαιτήσεις χρήστη Απαιτήσεις συστήματος Λειτουργικές και μη-λειτουργικές απαιτήσεις ΚΑΤΗΓΟΡΙΕΣ ΧΡΗΣΤΩΝ ΜΟΝΤΕΛΟ ΑΝΑΠΤΥΞΗΣ ΛΟΓΙΣΜΙΚΟΥ ΔΟΜΗ ΕΦΑΡΜΟΓΗΣ PHP Analyzer Java Analyzer Metrics Repository ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ vi-

11 9.1 ΕΝΟΤΗΤΕΣ ΕΦΑΡΜΟΓΗΣ ΑΡΧΙΚΗ ΣΕΛΙΔΑ ΕΦΑΡΜΟΓΗΣ PHP ANALYZER JAVA ANALYZER METRICS REPOSITORY PHP project details Java project details ΣΥΜΠΕΡΑΣΜΑΤΑ ΒΙΒΛΙΟΓΡΑΦΙΑ ΔΙΑΔΙΚΤΥΑΚΕΣ ΠΗΓΕΣ ΠΑΡΑΡΤΗΜΑ Α: LAMP ΠΑΡΑΡΤΗΜΑ Β: PHP DEPEND ΠΑΡΑΡΤΗΜΑ Γ: ΚΩΔΙΚΑΣ ΕΦΑΡΜΟΓΗΣ MAIN PROGRAM index.html archive.php db_handler.php parser_crud.php php_metrics - MySQL βάση δεδομένων JAVA ANALYZER AnalyzeController.java index.html onoma.php METRICS REPOSITORY index.html details.php details_java.php vii-

12

13 1 Εισαγωγή Την σημερινή εποχή το Ελεύθερο Λογισμικό / Λογισμικό Ανοιχτού Κώδικα (ΕΛ/ΛΑΚ) αποτελεί μια σημαντική πρωτοπορία που οδηγεί στην εξέλιξη προγραμμάτων αντάξιων των εμπορικών. Ο ρόλος του Διαδικτύου και η διάδοσή του αποτέλεσε καταλύτη στην τεχνολογική αυτή επανάσταση. Σκοπός ενός ΕΛ/ΛΑΚ προγράμματος είναι η δημοσίευσή του από τον προγραμματιστή που του δημιούργησε σε μια ή πολλές κοινότητες όπως το Sourceforge ή το Github προκειμένου να εξαχθούν χρήσιμα συμπεράσματα από τους χρήστες τις κοινότητας για το αν το πρόγραμμα που δημοσιεύτηκε είναι χρήσιμο. Η επαναδιάθεση του λογισμικού στην αγορά αποτελεί δομικό στοιχείο της φιλοσοφίας του ΕΛ/ΛΑΚ με την υποχρέωση πάντα του διανομέα να αναφέρει την αρχική πηγή χωρίς να ιδιοποιείται την δημιουργία του συγκεκριμένου κώδικα. Οι προγραμματιστές λογισμικού «ανοιχτού κώδικα» συχνά χρησιμοποιών τμήματα λογισμικού που έχουν ήδη δοκιμαστεί και είναι υλοποιημένα από άλλους προγραμματιστές. Η διαδικασία της επαναχρησιμοποίησης κώδικα ανθεί στα χρόνια που διανύουμε και για αυτό τον λόγο θεωρήθηκε σημαντικό η παρούσα εργασία να προσπαθήσει να συμβάλλει περισσότερο στο κομμάτι αυτό με την υλοποίηση μιας εφαρμογής, η οποία θα δίνει την δυνατότητα στους χρήστες να δημοσιεύουν τα projects τους στο cloud και θα εμφανίζει τις μετρικές του αναλυμένου προγράμματος. Σε ύστερη φάση θα γίνει προσπάθεια παραγωγής «τμημάτων λογισμικού» (en. software components). -9-

14 2 Σκοπός της εργασίας Η παρούσα διπλωματική εργασία εκπονήθηκε προκειμένου να δημιουργηθεί μια διαδικτυακή εφαρμογή η οποία θα δίνει την δυνατότητα σε προγραμματιστές λογισμικού να δημοσιεύουν online τα προγράμματά τους τα οποία θα αναλύονται και θα δίνεται η δυνατότητα στο κοινό να εμφανίζει τις μετρικές του επιλεγμένου προγράμματος. Η στατική ανάλυση κώδικα PHP και Java projects σε επίπεδο online εφαρμογής δεν υπήρχε ως την στιγμή της υλοποίησής της. Σε αυτό το κεφάλαιο αναλύονται η δομή και το περιεχόμενο της εργασίας καθώς και η σημασία της επιλογής της γλώσσας προγραμματισμού PHP για την υλοποίηση της εφαρμογής. 2.1 Δομή και περιεχόμενο Η παρούσα διπλωματική εργασία απαρτίζεται από τα παρακάτω οκτώ κεφάλαια: 1. Εισαγωγή Το εισαγωγικό κεφάλαιο το οποίο εισάγει τον αναγνώστη στο θέμα της διπλωματικής εργασίας και αναφέρει περιφραστικά το τι θα ακολουθήσει στα επόμενα κεφάλαια. 2. Είδη λογισμικού και COPE Στο κεφάλαιο αυτό γίνεται αναφορά στα είδη του λογισμικού. Πιο συγκεκριμένα αναλύονται οι όροι «ελεύθερο λογισμικό» και «λογισμικό ανοιχτού κώδικα». Γίνεται επιπλέον μια αναφορά στο Components Adaptation Environment (COPE). -10-

15 3. Επαναχρησιμοποίηση κώδικα Στο κεφάλαιο αυτό γίνεται μια βιβλιογραφική επισκόπηση σχετικά με το συγκεκριμένο θέμα καθώς και γίνεται αναφορά στα οφέλη αλλά και στα μειονεκτήματα της επαναχρησιμοποίησης κώδικα. 4. Σύγχρονες τάσεις στην επαναχρησιμοποίηση κώδικα Στο κεφάλαιο αυτό αναλύονται κάποια από τα άρθρα που παρουσιάστηκαν στο Διεθνές Συνέδριο για την Επαναχρησιμοποίηση Κώδικα (en. ICSR) 2015 που πραγματοποιήθηκε στο Μαϊάμι της Φλόριντα. 5. Μετρικές Αναφέρονται συνοπτικά οι μετρικές που χρησιμοποιήθηκαν στην παρούσα διπλωματική εργασία και γίνεται εκτενέστερη αναφορά σε κάποιες από αυτές. 6. Εργαλεία και τεχνολογίες Αναφέρονται τα εργαλεία και οι τεχνολογίες που χρησιμοποιήθηκαν προκειμένου να υλοποιηθεί το προγραμματιστικό κομμάτι της εργασίας αυτής. 7. Αρχιτεκτονική εφαρμογής Στο κεφάλαιο αυτό γίνεται αναφορά στον τρόπο που δομήθηκε και υλοποιήθηκε ο κώδικας της διαδικτυακής εφαρμογής που δημιουργήθηκε. 8. Μελέτη περίπτωσης Γίνεται χρήση μιας μελέτης περίπτωσης αναφορικά με έναν χρήστη ο οποίος χρησιμοποιεί την διαδικτυακή εφαρμογή που υλοποιήθηκε. 9. Συμπεράσματα Η διπλωματική εργασία κλείνει με τα συμπεράσματα που εξάχθηκαν αλλά και προτάσεις και βελτιώσεις για περαιτέρω έρευνα και ανάπτυξη. -11-

16 2.2 Η γλώσσα προγραμματισμού PHP Ορισμός Η PHP είναι μια γλώσσα προγραμματισμού ειδικά σχεδιασμένη για την κατασκευή δυναμικών ιστοσελίδων. Με τον όρο δυναμική εννοείται μια ιστοσελίδα που αλλάζει αυτόματα, ανάλογα με τα στοιχεία του θεατή της. Στοιχεία όπως το λειτουργικό του σύστημα η διεύθυνση IP του κ.ά. Η PHP χρησιμοποιείται όχι για την διακόσμηση μιας ιστοσελίδας αλλά για τον χειρισμό των λειτουργιών και εργασιών που θα διεκπεραιώνει. Συνεπώς, ο κώδικας που γράφεται για μια ιστοσελίδα σε γλώσσα PHP δεν γίνεται άμεσα αντιληπτός αλλά μετά από την επέμβαση του θεατή στην ιστοσελίδα. Για να γίνει αυτό κατανοητό: η PHP χρησιμοποιείται ευρέως για τον χειρισμό ιστοσελίδων με δυνατότητες όπως η εγγραφή χρηστών (user registration), τα φόρουμ κ.ά. Λειτουργεί με την βοήθεια της HTML και πλέον και με την XHTML(νέα αναθεωρημένη έκδοση της HTML). Σε συνδυασμό και με την MySQL μπορεί να χρησιμοποιηθεί κάλλιστα για την διαχείριση δεδομένων μέσα σε βάσεις Λόγοι επιλογής της PHP Η γλώσσα προγραμματισμού PHP επιλέχθηκε γιατί ένας από τους σκοπούς της εργασίας αυτής είναι η ανάλυση PHP Projects και η εμφάνιση των μετρικών τους από μια βάση δεδομένων MySQL. Επιπλέον έπρεπε να χρησιμοποιηθεί μια server-side γλώσσα η οποία θα έδινε την δυνατότητα σύνδεσης στον server και εμφάνισης και επεξεργασίας της βάσης δεδομένων που δημιουργήθηκε. Η χρήση της MySQL είναι απαραίτητη για την δημιουργία της βάσης. Η γλώσσα προγραμματισμού PHP σύμφωνα με έρευνα 1 που έχει διενεργηθεί στο διαδίκτυο είναι αυτή στην οποία βασίστηκαν οι περισσότεροι προγραμματιστές για να δημιουργήσουν τις ιστοσελίδες τους ή τις διαδικτυακές τους εφαρμογές. 1 Η έρευνα έχει γίνει από την ιστοσελίδα

17 Εικόνα 1: Ιστοσελίδες που χρησιμοποιούν PHP Η γλώσσα προγραμματισμού PHP χρησιμοποιείται ευρέως όπως φαίνεται στο παρακάτω γράφημα Εικόνα 2: Η χρήση της PHP ανά κατηγορία ιστοσελίδων -13-

18 3 Είδη λογισμικού και COPE Στο κεφάλαιο αυτό θα αναφερθούμε στους ορισμούς του ελεύθερου λογισμικού, του λογισμικού ανοιχτού κώδικα καθώς και στο εργαλείο Components Adaptation Environment (COPE). 3.1 Ελεύθερο Λογισμικό Το Ελεύθερο Λογισμικό είναι ένας όρος που επινοήθηκε από τον Richard Stallman και το Free Software Foundation (FSF) και αναφέρεται στο λογισμικό που μπορεί να χρησιμοποιηθεί, να μελετηθεί και να τροποποιηθεί χωρίς περιορισμούς και να αντιγραφεί και να αναδιανεμηθεί σε τροποποιημένη ή μη μορφή είτε χωρίς περιορισμούς είτε με συγκεκριμένες απαιτήσεις προκειμένου να διασφαλιστεί ότι οι περαιτέρω αποδέκτες απολαμβάνουν επίσης τις ίδιες ελευθερίες. [1] Σύμφωνα με τους παραπάνω, ένα λογισμικό είναι ελεύθερο αν οι αποδέκτες του απολαμβάνουν τις παρακάτω τέσσερις ελευθερίες: Να μπορούν να τρέξουν το πρόγραμμα, για οποιονδήποτε λόγο (Ελευθερία 0) Να μπορούν να μελετήσουν τον τρόπο λειτουργίας του συγκεκριμένου λογισμικού και να το προσαρμόζουν στις δικές τους ανάγκες (Ελευθερία 1). Η πρόσβαση στον πηγαίο κώδικα είναι προϋπόθεση για αυτό. Να μπορούν να αναδιανείμουν αντίγραφα του λογισμικού για να βοηθήσουν τον γείτονά τους (Ελευθερία 2). Να μπορούν να βελτιώνουν το λογισμικό, και να «κυκλοφορούν»(en. release) τις βελτιώσεις τους στο κοινό, έτσι ώστε όλη η κοινότητα να επωφελείται (Ελευθερία 3). Η πρόσβαση στον πηγαίο κώδικα θεωρείται προϋπόθεση για αυτό. [2] -14-

19 3.2 Λογισμικό ανοιχτού κώδικα Λόγω της έννοιας ελεύθερος (en. free) που μπορεί να γίνει κατανοητή και ως «δωρεάν»(en. gratis), κάποιοι χρήστες της κοινότητας του Ελεύθερου Λογισμικού (en. Free Software community) δημιούργησαν τον όρο «Ανοιχτού Κώδικα»(en. Open Source) για την αποφυγή ασαφειών. Το Open Source Initiative (OSI), δημιουργήθηκε το 1998 από τον Eric S. Raymond και τον Bruce Perens [3], παρουσίασε τον ορισμό του Ανοιχτού Κώδικα για να προσδιορίσει αν μια άδεια λογισμικού (en. software license) μπορεί να θεωρηθεί ως «Ανοιχτού Κώδικα» ή όχι Ορισμός του Ανοιχτού Κώδικα (The Open Source Definition) Οι όροι διανομής του Λογισμικού Ανοιχτού Κώδικα πρέπει να πληρούν τα παρακάτω κριτήρια: 1. Ελεύθερη αναδιανομή 2. Πηγαίος κώδικας 3. Παραγόμενα έργα (en. Derived works) 4. Ακεραιότητα του πηγαίου κώδικα του συγγραφέα 5. Καμία διάκριση εναντίον ατόμων ή ομάδων 6. Καμία διάκριση ενάντια στα «πεδία της προσπάθειας» (en. Fields of Endeavor) 7. Διανομή της άδειας 8. Η άδεια δεν πρέπει να είναι συγκεκριμένη στο προϊόν 9. Η άδεια δεν πρέπει να απαγορεύει άλλο λογισμικό 10. Η άδεια πρέπει να είναι τεχνολογικά ουδέτερη Την δεκαετία του 1970 ο Stephan Johnson έγραψε το Lint, ένα εργαλείο για να εξετάσει κώδικα προγραμμάτων γραμμένα στην γλώσσα C που είχε συντάξει (en. compile) χωρίς σφάλματα και να βρει σφάλματα που είχαν διαφύγει από τον έλεγχο ανίχνευσης λαθών. 3.3 Στατική ανάλυση κώδικα (static code analysis) Υπάρχουν πολλοί τρόποι για να ελεγχθεί και να μειωθεί ο αριθμός σφαλμάτων σε ένα πρόγραμμα. Ύστερες έρευνες απέδειξαν ότι η ανάλυση του κώδικα (κυρίως οι αξιολογήσεις κώδικα) είναι ο καλύτερος τρόπος εξάλειψης των σφαλμάτων. Αυτό όμως δεν είναι πάντα δυνατό καθώς είναι πολύ δύσκολο να εκπαιδευτούν άνθρωποι -15-

20 προκειμένου να διαβάζουν και μελετούν τα προβλήματα που υπάρχουν στα προγράμματα που δημιουργούνται. Τα περισσότερα σφάλματα εμπίπτουν σε γνωστές κατηγορίες καθώς οι άνθρωποι έχουν την τάση να κάνουν τα ίδια επαναλαμβανόμενα λάθη. [4] Γενικά, με τον όρο στατική ανάλυση κώδικα αναφερόμαστε σε μια πλειάδα τεχνικών για την ανάλυση του κώδικα ενός προγράμματος, χωρίς την εκτέλεσή του. Η ανάλυση γίνεται σε κάποιο επίπεδο πηγαίου κώδικα και πολλές φορές σε αντικειμενικό κώδικα. Ο όρος στατική ανάλυση κώδικα αναφέρεται συνήθως στην ανάλυση η οποία προκύπτει από κάποιο αυτόματο εργαλείο, το οποίο εξετάζει τη συμπεριφορά συγκεκριμένων εκφράσεων ή δηλώσεων από το υπό ανάλυση πρόγραμμα είτε μπορεί να εξετάζει ολόκληρο τον πηγαίο κώδικά του. Η μέτρηση μιας οποιασδήποτε ιδιότητας ενός προγράμματος καθώς και ο αντίστροφος σχεδιασμός (reverse engineering) θεωρούνται επίσης είδη στατικής ανάλυσης. 3.4 Component Adaptation Environment (COPE) Η αλυσίδα εργαλείων OPEN-SME Component Adaptation Environment (COPE) σχεδιάστηκε για να υποστηρίξει με έναν ολιστικό τρόπο τις διαφορετικές δραστηριότητες του Domain Engineering Process. Το COPE είναι μια εφαρμογή με σαφώς καθορισμένες διασυνδέσεις (interfaces). Διαφορετικές υλοποιήσεις συστατικών (components) έχουν ως αποτέλεσμα διαφορετικά στιγμιότυπα του εργαλείου COPE για να υποστηρίξουν συγκεκριμένες γλώσσες μοντελοποίησης, γλώσσες προγραμματισμού, πλατφόρμες προορισμού κ.λ.π. Την στιγμή αυτή το COPE είναι 100% συμβατό με συστήματα βασισμένα στο Linux και υποστηρίζει την Unified Model Language(UML) και ΕΛ/ΛΑΚ έργα υλοποιημένα στην γλώσσα προγραμματισμού Java. [5] Τρόπος λειτουργίας Η διαδικασία εξαγωγής συστατικών χωρίζεται σε τρία γενικά στάδια. -16-

21 Προετοιμασία του προς ανάλυση έργου. Αφού βρεθεί το έργο ανοιχτού λογισμικού που προορίζεται για ανάλυση, πρέπει να προετοιμαστεί για να εισαχθεί στο COPE και να δημιουργηθεί ένα Reuse Project. Στο στάδιο της προετοιμασίας πρέπει να δημιουργηθεί το.jar αρχείο του έργου. Επίσης είναι απαραίτητο να συγκεντρωθούν όλες οι εξωτερικές εξαρτήσεις-βιβλιοθήκες του έργου. Απαραίτητη προϋπόθεση είναι να υπάρχει ο πηγαίος κώδικας του έργου. Ανάλυση του έργου Αυτό το τμήμα είναι που χρειάζεται τον περισσότερο χρόνο. Όσες περισσότερες κλάσεις και εξαρτήσεις έχει το έργο που αναλύεται,τόσο περισσότερο χρόνο και μνήμη χρειάζεται το COPE. Αρχικά πρέπει να δημιουργηθεί στο COPE ένα reuse project, δηλαδή το.jar του προς ανάλυση έργου, ο πηγαίος κώδικας και οι βιβλιοθήκες του. Για την επιτυχή ολοκλήρωση της ανάλυσης του έργου πρέπει η ιεραρχία των καταλόγων να ταυτίζεται. Εξαγωγή Συστατικών Η ανάλυση από το COPE δίνει αρκετές μετρικές για την αξιολόγηση των υποψήφιων προς εξαγωγή συστατικών. Κάποια από τα χαρακτηριστικά που εξάγονται είναι το όνομα, το μέγεθος των συστατικών και ο δείκτης επαναχρησιμοποίησης. Το όνομα, που περιλαμβάνει το όνομα της κλάσης η οποία χρησιμοποιήθηκε σαν βάση για την δημιουργία του συστατικού, φανερώνει ποια μπορεί να είναι η λειτουργία του. Επίσης στο όνομα που δίνει το COPE στο συστατικό φαίνεται και η ιεραρχία των πακέτων στα οποία βρίσκεται. Έτσι γρήγορα μπορεί κάποιος να διακρίνει αν το υποψήφιο συστατικό είναι κάποιο utility της εφαρμογής, κάποια κλάση που αναπαριστά κάποια οντότητα ή αν είναι μέρος του γραφικού τμήματος της. -17-

22 Όσον αφορά το μέγεθος σε κλάσεις, ένα συστατικό που αποτελείται από μία κι μόνο κλάση είναι απίθανο να περιέχει κάποια λειτουργία. Επίσης δεν έχει νόημα να εξαχθούν συστατικά των οποίων το μέγεθος πλησιάζει το συνολικό αριθμό των κλάσεων του έργου. 3.5 Συστατικά Λογισμικού (Software Components) Tο συστατικό λογισμικού «αποτελεί μια ανεξάρτητη μονάδα λογισμικού η οποία μπορεί να συνδυαστεί με άλλα συστατικά για τη δημιουργία ενός συστήματος λογισμικού» 2. Ο Szyperski [20] ορίζει τα συστατικά λογισμικού ως εξής: «Το συστατικό στοιχείο λογισμικού είναι μια μονάδα σύνθεσης η οποία διαθέτει αποκλειστικά διασυνδέσεις καθορισμένες μέσω συμβάσεων και ρητές εξαρτήσεις περιβάλλοντος. Το συστατικό στοιχείο λογισμικού μπορεί να διανεμηθεί ανεξάρτητα και να συνδυαστεί με άλλα στοιχεία». Με απλούστερα λόγια ένα συστατικό λογισμικού εμπεριέχει μία λειτουργία, η οποία αποτελεί μέρος ενός ευρύτερου συστήματος. 2 Βασικές Αρχές Τεχνολογίας Λογισμικού, Ian Sommerville, 8 η Έκδοση -18-

23 3.6 Τεχνολογία Λογισμικού βασισμένη στα Συστατικά Λογισμικού (Component Based Software Engineering CBSE) 3 Η Τεχνολογία Λογισμικού βασισμένη στα Συστατικά Λογισμικού (Component-based Software Engineering - CBSE), επίσης γνωστή και ως Ανάπτυξη βασισμένη στα Συστατικά Λογισμικού (en. Component-based development CBD) είναι ένας κλάδος της μηχανικής λογισμικού που δίνει έμφαση στο διαχωρισμό των concerns όσον αφορά την ευρεία λειτουργικότητα που είναι διαθέσιμη μέσα σε ένα δοθέν σύστημα λογισμικού. Πρόκειται για μια προσέγγιση που βασίζεται στην επαναχρησιμοποίηση για τον καθορισμό, την εφαρμογή και τη σύνθεση χαλαρά συνδεδεμένων ανεξάρτητων συστατικών σε συστήματα. Η πρακτική αυτή έχει ως στόχο να επιφέρει ένα εξίσου ευρή βαθμό από οφέλη τόσο βραχυπρόθεσμα όσο και μακροπρόθεσμα για το ίδιο το λογισμικό και για τις οργανώσεις που υποστηρίζουν το εν λόγω λογισμικό. Οι επαγγελματίες (en. practitioners) της Τεχνολογίας Λογισμικού θεωρούν τα συστατικά λογισμικού ως μέρος της πλατφόρμας εκκίνησης για την υπηρεσία προσανατολισμού (service-orientation). Τα συστατικά λογισμικού «παίζουν» αυτό το ρόλο, για παράδειγμα, σε υπηρεσίες web, και πιο πρόσφατα, σε service-oriented αρχιτεκτονικές (SOA), σύμφωνα με τις οποίες ένα συστατικό μετατρέπεται από μια web υπηρεσία σε υπηρεσία και συνεχώς κληρονομεί επιπλέον χαρακτηριστικά πέρα από αυτά ενός συνηθισμένου συστατικού. Τα συστατικά λογισμικού μπορούν να παράγουν ή να «καταναλώνουν» γεγονότα και μπορούν να χρησιμοποιηθούν για event-driven αρχιτεκτονικές (ΕDΑ)

24 4 Επαναχρησιμοποίηση κώδικα 4.1 Ορισμός Η επαναχρησιμοποίηση λογισμικού είναι η χρήση υπάρχοντος λογισμικού ή γνώση ενός λογισμικού(software knowledge) για να κατασκευαστεί ένα νέο λογισμικό. Τα επαναχρησιμοποιήσιμα στοιχεία (assets) μπορούν να είναι είτε επαναχρησιμοποιήσιμο λογισμικό είτε γνώση ενός λογισμικού. Επαναχρησιμοποίηση είναι η ιδιότητα ενός στοιχείου λογισμικού που υποδεικνύει την πιθανότητά του να επαναχρησιμοποιηθεί. Ο σκοπός της επαναχρησιμοποίησης λογισμικού είναι να βελτιώσει την ποιότητα του παραγόμενου λογισμικού και την παραγωγικότητά του. Η επαναχρησιμοποίηση είναι ένας από σημαντικότερους παράγοντες ποιότητας ενός λογισμικού. Είναι σημαντική επειδή οι προγραμματιστές θέλουν να δημιουργήσουν πληροφοριακά συστήματα που είναι μεγαλύτερα, πιο σύνθετα, πιο αποτελεσματικά, λιγότερο ακριβά και παραδίδονται σε σωστό χρόνο. Από έρευνες έχει διαπιστωθεί ότι οι παραδοσιακές μέθοδοι της τεχνολογίας λογισμικού (traditional software engineering) είναι ανεπαρκείς και η επαναχρησιμοποίηση μπορεί να προσφέρει έναν καλύτερο τρόπο για την τεχνολογία λογισμικού. Μια βασική ιδέα στην επαναχρησιμοποίηση λογισμικού είναι η μηχανική γραμμής παραγωγής (product line engineering). Μια βασική αντίληψη είναι ότι τα περισσότερα λογισμικά δεν είναι καινούρια. Αντιθέτως είναι παραλλαγές συστημάτων που έχουν ήδη δημιουργηθεί. Οι περισσότεροι οργανισμοί παράγουν λογισμικό μέσα σε λίγες business lines,που ονομάζονται domains, και επαναλαμβανόμενα παράγουν παραλλαγές του συστήματος μέσα σε αυτές. Αυτή η αντίληψη μπορεί να αξιοποιηθεί για τη βελτίωση της ποιότητας και της παραγωγικότητας κατά την διαδικασία παραγωγής λογισμικού. [6] -20-

25 4.2 Σκοπός Τα περισσότερα άρθρα που χρησιμοποιήθηκαν στην βιβλιογραφική έρευνα συμφωνούν ότι υπάρχουν πολλά οφέλη από την επαναχρησιμοποίηση κώδικα. Συνοπτικά τα κυριότερα είναι τα εξής: Αύξηση παραγωγικότητας Μείωση κόστους Βελτίωση ποιότητας Αύξηση αξιοπιστίας Επιτάχυνση ανάπτυξης Μείωση κινδύνου επεξεργασίας (en. process risk) Αύξηση παραγωγικότητας Τα υπάρχοντα προϊόντα λογισμικού χρησιμοποιούν επαναχρησιμοποιημένο κώδικα και πολύ λιγότερα δημιουργούν καινούριο κώδικα από την αρχή. Επομένως η παραγωγικότητα βελτιώνεται. Σύμφωνα με τον Singh [7], η έννοια της επαναχρησιμοποίησης για ένα διαθέσιμο στοιχείο λογισμικού (en. software component) θεωρείται ως βασικό χαρακτηριστικό για την αύξηση της παραγωγικότητας Μείωση κόστους Το κόστος δημιουργίας λογισμικού από την αρχή μπορεί να ξεπεραστεί αναγνωρίζοντας και εξάγοντας τα επαναχρησιμοποιούμενα στοιχεία (en. reusable components) από ήδη υπάρχοντα προγράμματα. [7] Βελτίωση ποιότητας Η καλή επαναχρησιμοποίηση λογισμικού βοηθά στην αύξηση της αξιοπιστίας και της ποιότητας. [8] Σύμφωνα με [9], η βελτίωση της ποιότητας του λογισμικού χρησιμοποιώντας οποιοδήποτε λογισμικό αντανακλά με το χρόνο αρκετά σφάλματα τα οποία δεν ήταν ευδιάκριτα όταν δημιουργούνταν. Για αυτό τον λόγο ένα προϊόν λογισμικού που έχει επαναχρησιμοποιηθεί αρκετές φορές θα περιέχει πολύ λιγότερα λάθη και ελαττώματα από ένα πρόσφατα δημιουργημένο λογισμικό. -21-

26 4.2.4 Αύξηση αξιοπιστίας Η αύξηση της αξιοπιστίας θα μειώσει το χρόνο της ανάπτυξης του λογισμικού από τη στιγμή που ελαχιστοποιεί τα σφάλματα κατά την διάρκεια της ανάπτυξης. Επαναχρησιμοποιημένο λογισμικό που έχει δοκιμαστεί σε συστήματα εργασίας θα πρέπει να είναι περισσότερο αξιόπιστο από πρόσφατο λογισμικό. [10] Επιτάχυνση ανάπτυξης Η επαναχρησιμοποίηση λογισμικού μπορεί να επιταχύνει την παραγωγή συστήματος επειδή τόσο ο χρόνος ανάπτυξης όσο και o χρόνος επικύρωσης μειώνονται. [11] Σύμφωνα με [12] επαναχρησιμοποιώντας λογισμικό για να δημιουργήσει κανείς ένα νέο προϊόν λογισμικού μπορεί να κυκλοφορήσει στην αγορά στο σωστό χρόνο για να ικανοποιήσει τις ανάγκες των πελατών. Γενικευμένα κομμάτια, στοιχεία λογισμικού μπορούν να ελαχιστοποιήσουν το χρόνο κατασκευής του προϊόντος και κυκλοφορίας του λογισμικού Μείωση κινδύνου επεξεργασίας (en. process risk) Αν υπάρχει λογισμικό, υπάρχει λιγότερη αβεβαιότητα στο κόστος της επαναχρησιμοποίησης αυτού του λογισμικού από ότι στο κόστος ανάπτυξης. Αυτός είναι ένας σημαντικός παράγοντας στη διαχείριση του έργου (project management) καθώς μειώνει το περιθώριο λάθους στην αξιολόγηση του κόστους του έργου. Αυτό ισχύει κυρίως όταν σχετικά μεγάλα μέρη λογισμικού όπως υποσυστήματα επαναχρησιμοποιούνται. [11] Σύμφωνα με το [12] ο κίνδυνος στη δημιουργία νέου λογισμικού μειώνεται όταν διαθέσιμα επαναχρησιμοποιούμενα κομμάτια/μέρη περιλαμβάνουν την επιθυμούμενη λειτουργικότητα και έχουν πρότυπες διεπαφές για να διευκολύνουν την ενσωμάτωση. -22-

27 4.3 Προσεγγίσεις Οι προσεγγίσεις που παρατηρήθηκε ότι χρησιμοποιούνται περισσότερο όσον αφορά την επαναχρησιμοποίηση κώδικα είναι έντεκα: 1. Application Frameworks 2. Application product lines 3. Aspect-oriented software development 4. Component-based development 5. Configurable vertical applications 6. COTS (Commercial-Off-The-Shelf) integration 7. Design Patters 8. Legacy system wrapping 9. Program generators 10. Program libraries 11. Service-oriented systems -23-

28 5 Σύγχρονες τάσεις στην επαναχρησιμοποίηση κώδικα Στο τελευταίο συνέδριο σχετικά με την επαναχρησιμοποίηση κώδικα (International Conference on Software Reuse ICSR 2015) που πραγματοποιήθηκε στις 4-6 Ιανουαρίου 2015 στο Μαϊάμι της Φλόριντα παρουσιάστηκαν είκοσι πέντε (25) άρθρα νέων και παλαιότερων μηχανικών λογισμικού. Το Διεθνές Συνέδριο για την Επαναχρησιμοποίηση Κώδικα (en. ICSR) είναι το κορυφαίο γεγονός στο πεδίο της επαναχρησιμοποίησης λογισμικού και ερευνητικά και τεχνολογικά. Σκοπός του συνεδρίου αυτού είναι να παρουσιάσει τις πιο σύγχρονες τάσεις και σκέψεις πάνω στον τομέα της επαναχρησιμοποίησης λογισμικού καθώς και να προωθήσει μια συνεχή ανταλλαγή μεταξύ ερευνητών και επαγγελματιών. Το συγκεκριμένο θέμα του συνεδρίου ήταν Reuse for Dynamic Systems in the Cloud and beyond. Οι εφαρμογές λογισμικού επιτρέπουν στους επιτραπέζιους υπολογιστές και στους single servers να γίνουν περισσότερο mobile όπως απαιτείται για το Διαδίκτυο των Πραγμάτων (en. Internet of Things) και το σύννεφο (en. cloud). Αυτό το φαινόμενο αυξάνει τη ζήτηση για πρακτική επαναχρησιμοποίηση λογισμικού και παραγωγικές προσεγγίσεις έτσι ώστε να αποφευχθεί η «επανεφεύρεση του τροχού». Στο πλαίσιο αυτό οι μη λειτουργικές πτυχές, όπως η απόδοση και η ασφάλεια δεδομένων, έχουν ιδιαίτερη σημασία για την εξασφάλιση μιας ικανοποιητικής εμπειρίας για τους χρήστες cloud-based και άλλων κατανεμημένων συστημάτων. [15] Στο κεφάλαιο αυτό θα αναφερθούν περιληπτικά κάποια άρθρα από το ICSR 2015 που θεωρήθηκαν σημαντικά και σχετικά με την παρούσα διπλωματική εργασία. -24-

29 Η διαδικασία της επαναχρησιμοποίησης λογισμικού στοχεύει στη δημιουργία νέων προϊόντων λογισμικού από ήδη υπάρχοντα με σκοπό την μέγιστη ικανοποίηση του καταναλωτή. Τα πλεονεκτήματα από τη παρούσα πρακτική είναι πολλαπλά και αφορούν τη μείωση της προσπάθειας και χρόνου που απαιτείται για τη δημιουργία ενός νέου προϊόντος αλλά και της επικείμενης συντήρησής του σε σύγκριση με τη δημιουργία ενός νέου λογισμικού. Επιπλέον η ποιότητα του νέου προϊόντος μπορεί να βελτιωθεί με τη επαναχρησιμοποίηση ευρημάτων από παλαιότερες εκδόσεις. Ωστόσο, είναι σημαντικό αυτά τα μέρη που επαναχρησιμοποιούνται ναι είναι συνοπτικά και κατανοητά ώστε η ανάπτυξη του τελικού λογισμικού να είναι αποτελεσματική και σύντομη. Διαφορετικά η πολυπλοκότητα των παλαιοτέρων τμημάτων λογισμικού ή η ανεπαρκής κατανόηση του μπορεί να οδηγήσει σε πολύπλοκες διεργασίες κάνοντας τη πρακτική της επαναχρησιμοποίησης ασύμφορη. H συστηματική επαναχρησιμοποίηση του λογισμικού στοχεύει να μεγιστοποιήσει τα κέρδη αλλά απαιτεί αρχικά επένδυση. Ο τύπος επένδυσης εξαρτάται από τον αρχικό σχεδιασμό και τη στρατηγική αλλά και από το πότε απαιτείται η χρήση του επενδυτικού κεφαλαίου. Είναι προφανές ότι η χρήση πόρων είναι πιο αποδοτική όταν αναπτύσσονται τα επαναχρησιμοποιούμενα τμήματα λογισμικού κατά τη διάρκεια ανάπτυξης ενός project ή ακόμη όταν η συμβατική software engineering μετατρέπεται γρήγορα σε μια σειρά προϊόντων (ανάπτυξη μια σειράς βασικών προϊόντων που δεν απαιτεί πόρους και χρόνο ώστε να αναπτυχθεί ξανά τεχνικά ώστε να επαναχρησιμοποιηθεί). Έτσι μπορεί να αποφευχθεί μια τεράστια επένδυση μεγάλου ρίσκου η οποία δε θα επιστρέψει τα αναμενόμενα κέρδη. Όπως αναφέρθηκε παραπάνω η ανάπτυξη μιας σειράς προϊόντων λογισμικού μπορεί να είναι πολύ αποδοτική αυξάνοντας τη ποιότητα και μειώνοντας τις ανάγκες σε χρόνο και πόρους. Μια τέτοια σειρά αποτελείται από συστήματα λογισμικού που έχουν κοινά χαρακτηριστικά που στηρίζονται πάνω σε κοινά χρήσιμα εργαλεία. Η προσπάθειες και προκλήσεις της ανάπτυξη μιας τέτοιας σειράς προϊόντων ή συστημάτων λογισμικού γίνονται σε πηγαίο κώδικα. Η επιτυχία μια τέτοιας σειράς στηρίζεται κυρίως στη ποιότητα της υποστήριξης των διαδικασιών ενσωμάτωσης. Μια άλλη προσέγγιση -25-

30 επαναχρησιμοποίησης αφορά την αποθήκευση στοιχείων επαναχρησιμοποίησης σε βιβλιοθήκες πηγαίου κώδικα. Η πιθανότητα επαναχρησιμοποίησης του στοιχείου αυξάνεται όσο περισσότερο χρησιμοποιείται το συγκεκριμένο στοιχείο. Ωστόσο η ένα μεγάλο εμπόδιο αυτής της προσέγγισης είναι οι ελλείψεις τέτοιων βιβλιοθηκών. Πολλοί ερευνητές που διεξήγαν παρόμοια projects κατέληξαν ότι η φιλοσοφία επαναχρησιμοποίησης ωφελεί την ανάπτυξη του λογισμικού σχετικά με τη ποιότητα και το χρόνο διεργασιών σε διάφορα βιομηχανικά projects. Οι Gasparic, Janes, Sillitti & Succi [16] διεξήγαν μια έρευνα σε βιομηχανικό περιβάλλον ώστε να αναλύσουν την διαδικασία επαναχρησιμοποίησης λογισμικού σε μια μεσαίου μεγέθους εταιρεία που είναι κυρίαρχη τεχνολογικά σε εξειδικευμένο τμήμα της αγοράς. H πανομοιότυπη επαναχρησιμοποίηση του κώδικα και 2 αδόμητες συνεντεύξεις αναλύουν αναφορές τεσσάρων αναφορών SVP dumps σχετικά με την αποτελεσματική ανάπτυξη του προγράμματος που μπορεί να οδηγήσει σε αποδοτικότερη συντήρηση. Σκοπός τους να αποδείξουν αν η επαναχρησιμοποίηση ενός προγράμματος και η επαναδιαμόρφωση είναι πιο αποδοτική σε σχέση με την εγκατάσταση ενός νέου προγράμματος από την αρχή. H έρευνα έγινε με μια μεσαίου μεγέθους εταιρεία που στόχο έχει να εξελίξει και βελτιστοποιήσει τις διαδικασίες ανάπτυξης καθώς και της ποιότητας των αποκλειστικών προϊόντων σχετικά με hardware και software. Ο στόχος της εντάσσεται στα πλαίσια του έρευνας πάνω στην μηχανική λογισμικού (software engineering) που εξετάζει την ανάπτυξη τις διεργασίες και τη συντήρηση που διεξάγουν οι μηχανικοί κάτω από ακαθόριστες συνθήκες και φιλοδοξεί να γεφυρώσει τις βιομηχανικές πρακτικές με την ακαδημαϊκή έρευνα. Οι ερευνητές εξέτασαν το κατά πόσο ο πηγαίος κώδικας που αναπτύχθηκε από μια εταιρεία παραμένει αμετάβλητος. Η στρατηγική αυτού του project επισημαίνει ακόμη και τα ζωτικά χαρακτηριστικά της επαναχρησιμοποίησης πηγαίου κώδικα. Πιο αναλυτικά μέσα από αυτό το project οι συγγραφείς διερεύνησα - Αν και πόσο σημεία ή μέρη του κώδικα επαναλαμβάνονται από το ένα project σε ένα άλλο -26-

31 - Το κατά πόσο μπορεί αυτός ο κώδικας να επαναχρησιμοποιηθεί - Ποια μέρη έχουν παραποιηθεί σε περιπτώσεις όμοιων κλάσεων Τα ευρήματα του project επισημαίνουν την εκτενή επαναχρησιμοποίηση πανομοιότυπων τμημάτων πηγαίου κώδικα όπως επίσης και την μεγάλης κλίμακας χρήσης κοινών μεθόδων παρόλο που μεγάλο ποσοστό από αυτούς έπρεπε να υποστούν επεξεργασία καθώς δεν είχαν εξαρχής δημιουργηθεί για επαναχρησιμοποίηση. Ακόμα παρατηρήθηκε ότι η εταιρεία έχει αναπτύξει μια διαδικασία ανάπτυξης σειρά προϊόντων λογισμικού ad-hoc σε συνδυασμό με τη χρήση βιβλιοθηκών με κώδικα επαναχρησιμοποίησης. Η φιλοσοφία τους βασίζεται σε παλαιότερο μοντέλο (extractive model) που στηρίζεται σε βασικά projects που επαναχρησιμοποιούνται με τη χρήση ελάχιστων πόρων και προσπάθειας. Τα συμπεράσματα των ερευνητών συμφωνούν με την άποψη του CTO της εταιρείας ότι ο επαναχρησιμοποιούμενος κώδικας συνέβαλλε στη βελτίωση της αποδοτικότητας. Ωστόσο είναι σημαντικό να επισημανθεί ότι η διαδικασίες επαναχρησιμοποίησης θα πρέπει να τηρούν του κανόνες του software engineering (principle of encapsulation) έτσι ώστε να αποφεύγονται υπερβολικά κόστη συντήρησης των νέων προϊόντων λογισμικού. Γι αυτό το λόγο οι ερευνητές συνιστούν τη καταγραφή των διαδικασιών που ακολουθούνται σε συνδυασμό με την θέσπιση κανόνων που θα επιβάλουν κοινές διαδικασίες για όλα τα project. Είναι προφανές ωστόσο ότι μια ιδανική εφαρμογή της μεθόδου επαναχρησιμοποίησης απαιτεί αυξημένη προσαρμοστικότητα όσο αφορά τις διαδικασίες ώστε να επιτευχθεί ακόμα μεγαλύτερη αποδοτικότητα αλλά και περαιτέρω μειώσεις κόστους και χρόνου ανάπτυξης ενός project. Μετρική (metric) για τη λειτουργική επαναχρησιμοποίηση λογισμικού υπηρεσιών Οι υπηρεσίες είναι αυτοτελή τμήματα λογισμικού που χρησιμοποιούνται ανεξάρτητα από μια πλατφόρμα και στοχεύουν στη μέγιστη επαναχρησιμοποίηση λογισμικού. Βασικό χαρακτηριστικό στην αρχιτεκτονική αυτών των υπηρεσιών είναι η δυνατότητα μέτρησης της ικανότητας επαναχρησιμοποίησής τους. Ένα βασικό χαρακτηριστικό -27-

32 αυτών των υπηρεσιών είναι η λειτουργική τους επαναχρησιμοποίηση που φανερώνει πόσο σχετική είναι η λειτουργία και το ζήτημα το οποίο επιλύει. Τα τωρινά δεδομένα και η σχετική έρευνα πάνω στην επαναχρησιμοποίηση του λογισμικού είναι περιορισμένα. Έτσι ο Mohr [17] επιχείρησε μια νέα προσέγγιση που υπολογίζει την λειτουργική επαναχρησιμοποίηση υπηρεσίας με βάση τη σχετικότητα. Πιο συγκεκριμένα, ορίζει το βαθμό στο οποίο η υπηρεσία συμβάλλει στην εκτέλεση των άλλων υπηρεσιών. Αυτή η συμβολή καθορίζει και την σχετικότητα αυτών των υπηρεσιών που ορίζεται ως ο υπολογισμός της λειτουργική επαναχρησιμοποίησης του. Το βασικό θέμα φυσικά της λειτουργικής επαναχρησιμοποίησης που βασίζεται σε υπηρεσίες είναι πως θα μετρηθεί. Το μετρικό αυτής πρέπει να Υποστηρίζει την ανάλυση των σχέσεων μεταξύ των υπηρεσιών μέσα σε ένα δίκτυο υπηρεσιών Να επιτρέπει των υπολογισμό των δυνατών επιπτώσεων σε νέες υπηρεσίες Να επιτρέπει την εξεύρεση υπηρεσιών που να σχετίζονται με συγκεκριμένες λειτουργίες Μέχρι τώρα η μέτρηση της δυνατότητας επαναχρησιμοποίησης ήταν ελλιπής καθώς δεν ήταν κατάλληλη για υπηρεσίες ή ακόμα τα μετρικά δεν ήταν όσο κατανοητά και αντιπροσωπευτικά έπρεπε. Μέχρι τώρα τα περισσότερα μετρικά αφορούσαν την ανάλυση κώδικα που είναι αντίθετη με το concept των υπηρεσιών ενώ τα περισσότερα από αυτά αφορούσαν την ανάλυση του τρόπου επαναχρησιμοποίησης αγνοώντας την μέτρηση της δυνατότητας επαναχρησιμοποίησης. Έτσι απαραίτητος αποδεικνύεται ο καθορισμός μιας μετρικής για τον υπολογισμό της λειτουργικότητας της δυνατότητας επαναχρησιμοποίησης που βασίζεται στη σχετικότητα. Είναι προφανές ότι η δυνατότητα επαναχρησιμοποίησης μιας υπηρεσίας εξαρτάται από το πόσες άλλες υπηρεσίες μπορούν να χρησιμοποιήσουν με κάποιον τρόπο το εξαγώγιμο λειτουργικό αποτέλεσμα της πρώτης. Έτσι θα μπορούμε να μετρήσουμε τη συμβολή μια υπηρεσίας στο να κάνει κάποιες άλλες να λειτουργήσουν. Ο καθορισμός αυτής της συμβολής οδηγεί και στο καθορισμό της σχετικότητας μεταξύ -28-

33 των υπηρεσιών. Πιο συγκεκριμένα, ο καθορισμός της επαναληπτικής επιρροής μιας υπηρεσίας σε άλλες δείχνει και το βαθμό εφαρμοστικότητας της σε πολλαπλές περιπτώσεις. Έτσι η επιρροή/συμβολή μιας υπηρεσίας σε μία άλλη καθώς και η εφαρμοστικότητα της συνδυάζονται και καθορίζουν τη σχετικότητα μεταξύ αυτών των υπηρεσιών. Ο Mohr [17],λοιπόν, φιλοδοξεί να θέσει μια γενική λογική βάση και γνωστική δομή για μετρικά που στόχο να δημιουργήσουν τους απαραίτητους ισχυρισμούς για τη δυνατότητα επαναχρησιμοποίησης μιας υπηρεσίας. Σκοπός αυτής της προσέγγισης είναι η θέσπιση μιας γενικής μετρικής που δε θα σχετίζεται με συγκεκριμένα προβλήματα. Πιο συγκεκριμένα η προσέγγιση του Mohr [17] βασίζεται στο θεμελιώδες ιδεατό μετρικό της δυνατότητας επαναχρησιμοποίησης που είναι ο υπολογισμός του αριθμού των προβλημάτων που μια υπηρεσία μπορεί να επιλύσει. Αύτη συνοψίζεται στην πιθανότητα εμφάνισης προβλημάτων (P) που μια υπηρεσία S μπορεί να επιλύσει. Έτσι σε πρακτικό επίπεδο η επιρροή μιας υπηρεσίας S (impact) και η εφαρμοστικότητά της (applicability) θα συνδυαστούν αναλόγως προκειμένω να δημιουργήσουν το μετρικό της σχετικότητας. Ο Μοhr [17] λοιπόν ισχυρίζεται ότι υψηλότερη σχετικότητα μιας υπηρεσίας θα δηλώνει επίσης και το ότι αυτή θα μπορεί να επιλύει όλο και μεγαλύτερο αριθμό προβλημάτων. Είναι σημαντικό να τονίσουμε ότι η σχετικότητα θα είναι υψηλή μόνο όταν οι τιμές impact και applicability είναι υψηλές η σχετικότητα θα είναι μέτρια όταν μια από τις 2 τιμές impact και applicability θα είναι υψηλή και η άλλη χαμηλή η σχετικότητα θα είναι χαμηλή μόνο όταν και οι 2 τιμές impact και applicability θα είναι χαμηλές -29-

34 Ως τελικό συμπέρασμα ο Μοhr [17] καταγράφει ότι ο καθορισμός της σχετικότητας (relevance) πράγματι καθορίζει τις δυνατότητες μιας νέας υπηρεσίας σε ένα ευρύτερο δίκτυο υπηρεσιών. Έτσι ο εκάστοτε developer μπορεί εύκολα να διαπιστώσει της δυνατότητες χρήσης μιας υπηρεσίας. Για παράδειγμα χαμηλές τιμές σχετικότητας (relevance values) δηλώνουν την αναγκαιότητα ανάπτυξης νέων υπηρεσιών για την αποτελεσματική συνδεσιμότητα μιας υπηρεσίας σε ένα ευρύτερο δίκτυο υπηρεσιών ενώ υψηλές τιμές φανερώνουν τη δυνατότητα τους να προσφέρουν λύσεις σε πολλά προβλήματα σύνθεσης. Τέλος, ο Μοhr [17] αποδεικνύει ότι ο υπολογισμός της σχετικότητας δεν είναι μόνο ένας πολύ καλός τρόπος να υπολογιστεί η δυνατότητα επαναχρησιμοποίησης μιας υπηρεσίας αλλά είναι μια εξαιρετική βάση για semantic service repository analysis. Εντοπισμός παραβίασης άδειας ανοιχτού λογισμικού για αρχεία SPDX - Open Source License Violation Check for SPDX files Το βραβευμένο με την πρώτη θέση άρθρο της Γεωργίας Καπιτσάκη και του Frederik Kramer [18] αναφέρεται σε έρευνα που διεξήγαν σχετικά με τους τρόπους επιλογής μιας άδειας ανοιχτού λογισμικού (Open Source License) έτσι ώστε να επιλέγεται η σωστότερη δυνατή άδεια από τους επαγγελματίες (practitioners) του χώρου. Μια Ανοιχτή Άδεια Λογισμικού περιέχει τους όρους με τους οποίους ένα λογισμικό διανέμεται και τις προϋποθέσεις κάτω από τις οποίες μπορεί να χρησιμοποιηθεί, να υλοποιηθεί, να τροποποιηθεί και να αναδιανεμηθεί. Οι εταιρίες λογισμικού (en. Software vendors) πολλές φορές προκειμένου να υλοποιήσουν ένα πρόγραμμα χρειάζεται να χρησιμοποιήσουν λογισμικό που έχει παραχθεί από τρίτους (third party software). Το κυριότερο πρόβλημά τους είναι με ποιον τρόπο θα μπορέσουν να το χρησιμοποιήσουν χωρίς να καταπατήσουν τους όρους της άδειας με την οποία το συγκεκριμένο λογισμικό διανεμήθηκε. Υπάρχουν αρκετά είδη ανοιχτών αδειών λογισμικού. Κάποιες από αυτές έχουν λιγότερους περιορισμούς (π.χ. MIT, AFL) ενώ κάποιες άλλες έχουν περισσότερους (π.χ. GPL, OSL). Οι άδειες λογισμικού χωρίζονται σε permissive ή copyleft. Οι πρώτες επιτρέπουν το λογισμικό να αποτελεί μέρος ενός μεγαλύτερου προϊόντος διανεμημένο -30-

35 κάτω από οποιαδήποτε άδεια ενώ οι δεύτερες προβάλλουν περισσότερους περιορισμούς. Η προδιαγραφή Software Package Data Exchange (SPDX) στοχεύει στην ενσωμάτωση της πληροφορίας αδειών μέσα στην διανομή των πακέτων λογισμικού που μπορούν να διαμορφωθούν σύμφωνα με το SPDX. Έτσι, είναι πολύ σημαντικό να εξεταστεί εάν η πληροφορία που περιέχεται στο SPDX αρχείο σχετικά με την άδεια που έχει εφαρμοστεί στο πακέτο λογισμικού είναι σωστή. Οι Καπιτσάκη & Kramer[18] ασχολούνται με τον εντοπισμό παραβίασης της άδειας χρησιμοποιώντας SPDX αρχεία. Πιο συγκεκριμένα, έχουν σχεδιάσει και υλοποιήσει ένα εργαλείο συμβατότητας (compatibility tool) που βοηθά στα εξής: 1. Επαληθεύει ότι η πληροφορία σχετικά με την άδεια λογισμικού που εφαρμόστηκε στο πακέτο λογισμικού είναι σωστή. 2. Επαληθεύει εάν υπάρχουν ασυμβατότητες άδειας ανάμεσα στις άδειες του πακέτου λογισμικού 3. Κάνει προτάσεις για άδειες που μπορούν να χρησιμοποιηθούν χωρίς να προκαλέσουν παραβιάσεις Flexible and Efficient Reuse of Multi-mode Components for Building Multi-mode Systems Η επαναχρησιμοποίηση τμημάτων λογισμικού (en. Software component reuse) έχει κριθεί ως μια επιτυχημένη μέθοδος για την διαχείριση της αυξανόμενης πολυπλοκότητας λογισμικού των μεγάλων συστημάτων. Η πολυπλοκότητα λογισμικού μπορείς επίσης να μειωθεί με τον καταμερισμό της συμπεριφοράς του συστήματος σε διαφορετικές καταστάσεις (en. modes). Ένα τέτοιο «σύστημα πολλαπλών καταστάσεων» (en. multi-mode system) μπορεί να αλλάξει συμπεριφορά με την εναλλαγή των «καταστάσεων» στις οποίες λειτουργεί υπό συγκεκριμένες προϋποθέσεις. Οι ερευνητές Yin & Hansson [19] υλοποίησαν το MSL(Mode Switch Logic), ένα πλαίσιο (en. framework) αφοσιωμένο στην ανάπτυξη multi-mode συστημάτων που -31-

36 έχουν συντεθεί από επαναχρησιμοποιήσιμα τμήματα λογισμικού «πολλαπλών καταστάσεων» (en. multi-mode components). Στην εργασία τους προτείνουν μια τεχνική μετασχηματισμού μιας κατάστασης για να μετατραπεί ο κατανεμημένος χειρισμός της εναλλαγής μιας κατάστασης του MSL σε έναν κεντρικής διαχείρισης χειρισμό της κατάστασης. Ο στόχος της εργασίας είναι να ενισχυθεί η απόδοση του χρόνου εκτέλεσης της εναλλαγής μιας κατάστασης όταν τα «τμήματα» (en. components) έχουν αναπτυχθεί σε μια ενιαία πλατφόρμα υλικού (en. single harware platform) και είναι διαθέσιμη μια global mode πληροφορία. Οι Yin & Hansson [19] παρουσιάζουν την παραπάνω τεχνική με την χρήση ενός παραδείγματος και αποκαλύπτουν την πιθανή βιομηχανική αξία της. Η αυξανόμενη πολυπλοκότητα του λογισμικού θέτουν μια πρόκληση για την ανάπτυξη του λογισμικού των πολύπλοκων συστημάτων. Η Μηχανική Λογισμικού που βασίζεται σε συστατικά (en. Component-based Software Engineering - CBSE) είναι ένα ελπιδοφόρο παράδειγμα σχεδιασμού για τη διαχείριση της πολυπλοκότητας του λογισμικού κατά τον χρόνο σχεδίασης, που χαρακτηρίζεται από την επαναχρησιμοποίηση των ανεξάρτητα αναπτυγμένων συστατικών λογισμικού. Η επιτυχία της Μηχανικής Λογισμικού που βασίζεται σε συστατικά (en. Componentbased Software Engineering - CBSE) αποδεικνύεται από μια σειρά μοντέλων συστατικών (en. component models). Ως συμπληρωματική προσέγγιση, η πολυπλοκότητα του λογισμικού μπορεί να μειωθεί τόσο σε χρόνο σχεδιασμού και εκτέλεσης από την τμηματοποίηση της συμπεριφοράς του συστήματος σε διαφορετικές καταστάσεις λειτουργίας. Ένα τέτοιο «σύστημα πολλαπλών καταστάσεων» (en. multi-mode system) είναι σε θέση να αλλάξει την συμπεριφορά του κατά τον χρόνο εκτέλεσής του εναλλάσοντας τις «καταστάσεις» του υπό ορισμένες προϋποθέσεις. -32-

37 6 Μετρικές Οι μετρικές λογισμικού αποτελούν ένα νέο πεδίο της επιστήμης υπολογιστών που έχει σχεδιαστεί για να επιτρέψει στους προγραμματιστές και σε άλλους επαγγελματίες να δημιουργήσουν κάποιους ποσοτικούς δείκτες για την αξία και την ποιότητα του λογισμικού 6.1 Μετρικές Λογισμικού (software metrics) Οι σημαντικότερες από τις μετρικές λογισμικού παρατίθενται παρακάτω: Weighted Methods per Class (WMC) Το ακέραιο πλήθος των μεθόδων που ορίζονται σε μία κλάση. Δεν υπάρχει ένα καθιερωμένο εύρος βέλτιστου WMC αλλά είναι γενικώς αποδεκτό ότι υπερβολικά μεγάλο WMC οδηγεί σε μεγαλύτερη πιθανότητα σφαλμάτων και προβλημάτων συντήρησης. Depth of Inheritance Tree (DIT) Το μήκος του μέγιστου μονοπατιού κληρονομικότητας από την τρέχουσα κλάση έως τη ρίζα μιας ιεραρχίας κλάσεων. Μεγάλες τιμές DIT αυξάνουν την πολυπλοκότητα της σχεδίασης, την πιθανότητα σφαλμάτων αλλά και την επαναχρησιμοποίηση κώδικα λόγω της κληροδότησης μεθόδων. Μία βέλτιστη τιμή DIT θεωρείται το 5. Number of Children (NOC) Το πλήθος των κλάσεων που κληρονομούν άμεσα από την τρέχουσα. Υψηλό NOC σημαίνει υψηλή επαναχρησιμοποίηση κώδικα αλλά πιθανόν να υποδεικνύει εννοιολογικά εσφαλμένη χρήση της κληρονομικότητας. Δεν υπάρχει κάποιο γενικώς αποδεκτό βέλτιστο NOC, αφού αυτό εξαρτάται από την εκάστοτε κλάση, αλλά εν γένει οι κλάσεις οι ευρισκόμενες υψηλότερα στην ιεραρχία κληρονομικότητας είναι θεμιτό -33-

38 να έχουν υψηλότερο NOC από όσες τοποθετούνται χαμηλότερα αφού είναι λιγότερο εξειδικευμένες. Coupling Between Object Classes (CBO) Το πλήθος των κλάσεων από τις οποίες εξαρτάται η τρέχουσα κλάση. Κάθε τέτοια εξάρτηση μπορεί να είναι αμφίδρομη ή μονόδρομη οποιασδήποτε κατεύθυνσης. Επομένως υψηλό CBO σημαίνει υψηλή σύζευξη (coupling) και δεν είναι επιθυμητό, καθώς αποτρέπει την επαναχρησιμοποίηση κώδικα και ζημιώνει τον αρθρωτό σχεδιασμό του προγράμματος. Όσο χαμηλότερο είναι το CBO μίας κλάσης τόσο πιθανότερο είναι να μπορεί η τελευταία να επαναχρησιμοποιηθεί ως μαύρο κουτί. Υπερβολικά υψηλές θεωρούνται οι τιμές CBO > Πίνακας μετρικών Παρατίθεται ο πίνακας με τις μετρικές που χρησιμοποιήθηκαν στην παρούσα διπλωματική εργασία. Metric Description Project Package File Class Method Average Hierarchy Height ahh andc The average of the maximum length from a root class to its deepest subclass subclass Average Number of Derived Classes The average of direct subclasses of a class Afferent Coupling X X ca Number of unique incoming dependencies from other artifacts of the same type. X -34-

39 Metric Description Project Package File Class Method calls Number of Method or Function Calls X Coupling Between Objects cbo Number of unique outgoing dependencies to other artifacts of the same type. X ccn Cyclomatic Complexity Number X X ccn2 Extended Cyclomatic Complexity Number X X Efferent Coupling ce Number of unique outgoing dependencies to other artifacts of the same type. Class Interface Size X cis Number of non private methods and properties of a class: CIS = public(nom + VARS) X Measures the size of the interface from other parts of the system to a class. cloc Comment Lines fo Code X X X X clsa Number of Abstract Classes X clsc Number of Concrete Classes X Code Rank cr Google PageRank applied on Packages and Classes. Classes with a high value X X should be tested frequently. csz Class Size X -35-

40 Metric Description Project Package File Class Method Number of methods and properties of a class: CSZ = NOM + VARS dit Measures the size of a class concerning operations and data. Depth of Inheritance Tree Depth of inheritance to root class X eloc Executable Lines of Code X X X X fanout leafs Number of Fanouts Referenced Classes Number of Leaf Classes (finla) classes X X lloc Logical Lines Of Code X X X X loc Lines Of Code X X X X Max Depth of Inheritance Tree maxdit Maximum depth of inheritance X noam Number Of Added Methods X nocc Number Of Child Classes X noom Number Of Overwritten Methods X ncloc Non Comment Lines Of Code X X X X noc Number Of Classes X X nof Number Of Functions X X noi Number Of Interfaces X X nom Number Of Methods X X X npm Number of Public Methods X -36-

41 Metric Description Project Package File Class Method npath NPath Complexity X nop Number of Packages X rcr Reverse Code Rank X X roots Number of Root Classes X vars Properties X varsi Inherited Properties X varsnp Non Private Properties X Weighted Method Count wmc wmci wmcnp The WMC metric is the sum of the complexities of all declared methods and constructors of class. Inherited Weighted Method Count Same as wmc, but only inherited methods. Non Private Weighted Method Count Same as wmc, but only non private methods. X X X -37-

42 7 Εργαλεία και τεχνολογίες Στο κεφάλαιο αυτό θα γίνει αναφορά στα εργαλεία και στις τεχνολογίες που χρησιμοποιήθηκαν στην παρούσα διπλωματική εργασία προκειμένου να υλοποιηθεί. 7.1 PHP Depend Το πρόγραμμα PHP Depend είναι ένα μικρό πρόγραμμα που εκτελεί στατική ανάλυση κώδικα σε μια δοθείσα πηγή. Το PHP Depend λαμβάνει πρώτα τον πηγαίο κώδικα και έπειτα τον αναλύει σε μια πιο εύκολα επεξεργάσιμη εσωτερική δομή δεδομένων. Αυτή η δομή δεδομένων συχνά αποκαλείται AST (Abstract Syntax Tree) δηλαδή Αφηρημένο Συντακτικό Δέντρο, που αντιπροσωπεύει τις διαφορετικές καταστάσεις και τα στοιχεία που χρησιμοποιούνται στην αναλυμένη πηγή κώδικα. Στη συνέχεια παίρνει το παραγόμενο AST και μετρά διάφορες τιμές, τις λεγόμενες μετρικές λογισμικού. Κάθε μια από αυτές τις τιμές αποτελεί μια πτυχή της ποιότητας του αναλυμένου λογισμικού, που παρατηρείται από ένα πολύ υψηλό επίπεδο αφαίρεσης, επειδή καμία πηγή δεν επανεξετάστηκε μέχρι τώρα. Το πρόγραμμα αυτό μετά την χρήση του παράγει ένα αρχείο xml που περιέχει τις μετρικές για το πρόγραμμα που έχει δοθεί σαν πηγή. Η ανάλυση του παραγόμενου, από το PHP Depend, xml αρχείου γίνεται με την χρήση κώδικα που έχει υλοποιηθεί στην παρούσα εργασία. Το αρχείο xml αναλύεται μέσω τεχνικών parsing και οι μετρικές που περιέχει εισάγονται σε μια βάση δεδομένων. [13] 7.2 XML Ορισμός XML H XML (αγγλ. αρκτ. από το Extensible Markup Language) είναι μία γλώσσα σήμανσης, που περιέχει ένα σύνολο κανόνων για την ηλεκτρονική κωδικοποίηση κειμένων. Ορίζεται, κυρίως, στην προδιαγραφή XML 1.0 (XML 1.0 Specification), που -38-

43 δημιούργησε ο διεθνής οργανισμός προτύπων W3C (World Wide Web Consortium), αλλά και σε διάφορες άλλες σχετικές προδιαγραφές ανοιχτών προτύπων XML Parsing Οι parsers («αναλυτές») της XML έχουν ως σκοπό την μετατροπή της σε αναγνώσιμο κώδικα. Το hardware ενός υπολογιστή «γνωρίζει» μόνο μια γλώσσα. Το λογισμικό είναι αυτό που μετατρέπει τις διάφορες γλώσσες προγραμματισμού σε μια λειτουργική μορφή. Όταν ο υπολογιστής βλέπει μια δέσμη κώδικα XML δεν μπορεί να την αναγνωρίσει. Χρησιμοποιώντας όμως έναν parser μετατρέπουμε την XML σε τέτοια μορφή ώστε ο υπολογιστής μας να την αναγνωρίζει. Στην συγκεκριμένη εργασία ένας από τους στόχους ήταν η ανάλυση του XML αρχείου που περιέχει τις μετρικές ενός PHP Project με την χρήση της γλώσσας προγραμματισμού PHP. Αυτό επιτεύχθηκε με την χρήση της SimpleXML. Η επέκταση SimpleXML της PHP παρέχει έναν πολύ απλό και εύκολα χρησιμοποιήσιμο σετ εργαλείων για τη μετατροπή XML σε ένα αντικείμενο που μπορεί να υποστεί επεξεργασία. 7.3 Spring REST Framework Το Spring REST Framework είναι μια πλατφόρμα Java που παρέχει μια ολοκληρωμένη υποδομή υποστήριξης για την ανάπτυξη εφαρμογών Java. Το Spring χειρίζεται την υποδομή (infrastructure) έτσι ώστε ο προγραμματιστής να μπορεί να επικεντρωθεί στην εφαρμογή που δημιουργεί. Το Spring δίνει την δυνατότητα στον προγραμματιστή να δημιουργεί εφαρμογές από plain old Java objects (POJOs) και να εφαρμόζει enterprise services με μη επεμβατικό τρόπο στα POJOs. Αυτή η δυνατότητα ισχύει και για το μοντέλο προγραμματισμού Java SE και για την πλήρη και μερική Java EE. Παραδείγματα για το πώς ένας προγραμματιστής μπορεί να χρησιμοποιήσει τα πλεονεκτήματα της πλατφόρμας Spring αποτελούν τα εξής: 1. Εκτέλεση μιας μεθόδου Java σε μια συναλλαγή με μια βάση δεδομένων χωρίς να γίνει χρήση APIs συναλλαγής (transaction APIs) -39-

44 2. Χρήση μιας τοπικής μεθόδου Java ως απομακρυσμένη διαδικασία χωρίς να γίνει χρήση απομακρυσμένων APIs (remote APIs). 7.4 Jackson Η Jackson είναι μια πολύ δημοφιλής και αποτελεσματική βιβλιοθήκη βασισμένη στην Java η οποία χρησιμοποιείται για την μετατροπή αντικειμένων Java (objects) σε JSON και το αντίστροφο. 7.5 JSON Η JSON (JavaScript Object Notation) είναι μία μορφή ανταλλαγής δεδομένων. Είναι πολύ απλή για τους ανθρώπους για να τη διαβάσουν ή και να τη γράψουν. Είναι επίσης απλή ακόμα και για τις μηχανές για να την αναλύσουν και να την παράγουν. Βασίζεται σε ένα υποσύνολο της γλώσσας προγραμματισμού JavaScript. Η JSON είναι μία μορφή κειμένου η οποία είναι εντελώς ανεξάρτητη ως γλώσσα αλλά χρησιμοποιεί συμβάσεις που είναι οικείες στους προγραμματιστές γλωσσών όπως οι C, C++, C#, Java, JavaScript, και άλλες. Αυτές οι ιδιότητες κάνουν την JSON ιδανική γλώσσα για ανταλλαγή δεδομένων. Η JSON αποτελείται από δύο δομές: 1. Μία συλλογή ζευγαριών ονομάτων/τιμών. Η συλλογή αυτή έχει διαφορετικά ονόματα σε άλλες γλώσσες όπως αντικείμενο(object στη JavaScript), εγγραφή(record), δομή(struct στη C) και πολλά ακόμα. 2. Μία ταξινομημένη λίστα τιμών. Πάλι αυτή η λίστα περιγράφεται με διαφορετικά ονόματα όπως: παράταξη(array), διάνυσμα(vector), λίστα(list) ή ακολουθία(sequence). Αυτές είναι παγκόσμιες δομές δεδομένων. Πρακτικώς όλες οι γλώσσες προγραμματισμού τις υποστηρίζουν στη μία μορφή ή στην άλλη. Εξάλλου όλες οι μορφές δεδομένων που είναι στηριγμένες για ανταλλαγή δεδομένων με γλώσσες προγραμματισμού είναι βασισμένες σε αυτές τις δομές. -40-

45 7.6 Ajax (Asynchronous Javascript and XML) H Ajax είναι μία μέθοδος για τη δημιουργία εφαρμογών αλληλεπίδρασης του Διαδικτύου η οποία διενεργεί τα αιτήματα του χρήστη άμεσα. Η Ajax συνδυάζει μεριά από τα εργαλεία προγραμματισμού όπως τη JavaScript, δυναμική HTML(DHTML), XML, CSS, DOM, και XMLHttpRequest. Η Ajax επιτρέπει την ανανέωση των ιστοσελίδων άμεσα όταν ο χρήστης εκτελέσει μία ενέργεια, σε αντίθεση με ένα αίτημα HTTP, όπου οι χρήστες πρέπει να περιμένουν να φορτωθεί ολόκληρη η σελίδα. Οι εφαρμογές δημιουργημένες με Ajax χρησιμοποιούν μία μηχανή που συμπεριφέρεται ως μεσολαβητής ανάμεσα στον περιηγητή του χρήστη και το server εκείνο που ζητείται η πληροφορία. Αντί να να φορτώνεται μία σελίδα, ο περιηγητής φορτώνει την Ajax. Η Ajax τρέχει από πίσω, χρησιμοποιώντας JavaScript για την επικοινωνία με τον περιηγητή. Τυχόν είσοδοι ή κλικάροντας στη σελίδα γίνεται κλήση της JavaScript στη μηχανή Ajax, η οποία ανταποκρίνεται άμεσα. Αν η μηχανή χρειάζεται επιπλέον δεδομένα, τα ζητά από τον server, συνήθως μέσω XML, όσο ταυτόχρονα ανανεώνει τη σελίδα. 7.7 JavaScript και jquery Η JavaScript είναι μία γλώσσα προγραμματισμού διαδεδομένη στην ανάπτυξη ιστοσελίδων. Δημιουργήθηκε από τη Netscape για την προσθήκη δυναμικών και διαδραστικών στοιχείων στις ιστοσελίδες. Παρότι είναι επηρεασμένη από την Java, το συντακτικό της είναι παρόμοιο με αυτό της C. Η JavaScript είναι μία client-side scripting γλώσσα, που σημαίνει ότι ο κώδικας επεξεργάζεται από τον περιηγητή του χρήστη και όχι από τον server και επομένως οι συναρτήσεις JavaScript μπορούν να τρέξουν και μετά τη φόρτωση της ιστοσελίδας χωρίς να υπάρχει επικοινωνία με το server. Για παράδειγμα, συνάρτηση JavaScript μπορεί να ελέγξει μία φόρμα πριν την αποστολή των δεδομένων για να σιγουρευτεί αν όλα τα πεδία της είναι συμπληρωμένα και να εμφανίσει μήνυμα σφάλματος πριν γίνει η αποστολή των πληροφοριών στο server. Η jquery είναι μία συνοπτική και γρήγορη βιβλιοθήκη της JavaScript διαδεδομένη για την απλούστευση του χειρισμού των events, της διαχείρισης των εγγράφων HTML, της -41-

46 αλληλεπίδρασης της Ajax για γρήγορη ανάπτυξη ιστοσελίδων. Η jquery απλοποιεί το scripting της HTML από τη μεριά του πελάτη, και επιπλέον απλοποιεί την ανάπτυξη εφαρμογών στον Ιστό 2.0. Η jquery είναι μία δωρεάν, ανοικτού κώδικα βιβλιοθήκη με την άδεια της GNU General Public Licence. Θεωρείται μία από τις αγαπημένες βιβλιοθήκες της JavaScript στις μέρες μας. Χρησιμοποιείται μάλιστα σε πάνω από τις μισές κορυφαίες ιστοσελίδες. Η jquery προσφέρει επιπλέον λειτουργικότητα που επιτρέπει τους προγραμματιστές να χτίσουν plug-ins, επιπρόσθετα με τη βιβλιοθήκη JavaScript. Το λειτουργικό του μηχανισμού της βιβλιοθήκης jquery διευκολύνει την ανάπτυξη υψηλά αποδοτικών και ισχυρών Διαδικτυακών εφαρμογών και ιστοσελίδων. Η βιβλιοθήκη jquery παρέχει επιπλέον μερικές φιλικές στρατηγικές και συναρτήσεις για πλούσια ανάπτυξη εφαρμογών. Επειδή οι συναρτήσεις της jquery είναι απλές, είναι πολύ διαδεδομένη στους προγραμματιστές. Μπορεί να χρησιμοποιηθεί σε όλες της εφαρμογές Ιστού. Μερικές από αυτές είναι η ASP, PHP, JSP, CGI, Servlets και πολλές από τις γλώσσες προγραμματισμού του Διαδικτύου. -42-

47 8 Αρχιτεκτονική εφαρμογής 8.1 Απαιτήσεις Η απαίτηση μπορεί να είναι από μια υψηλού επιπέδου αφηρημένη δήλωση μιας υπηρεσίας μέχρι έναν εξειδικευμένο προγραμματιστικό ορισμό μιας λειτουργίας του λογισμικού. Η λειτουργία των απαιτήσεων μπορεί να είναι διττή: Μπορεί να είναι ο θεμέλιος λίθος της διαπραγμάτευσης μιας σύμβασης, που σημαίνει ότι πρέπει να επιτρέπουν την διαφορετικότητα στην ερμηνεία. Μπορεί να είναι ο θεμέλιος λίθος της ίδιας της σύμβασης, άρα θα πρέπει να καθοριστούν με λεπτομέρεια. Σύμφωνα με τον Alan M. Davis «αν μια εταιρία επιθυμεί να συνάψει σύμβαση για ένα μεγάλο έργο ανάπτυξης λογισμικού, πρέπει να ορίσει τις ανάγκες της με έναν αρκετά αφηρημένο τρόπο ώστε η λύση να μην είναι προκαθορισμένη. Οι απαιτήσεις πρέπει να γραφούν έτσι ώστε να επιτρέψουν σε πολλούς εργολάβους να κάνουν προσφορά για τη σύμβαση, προσφέροντας, ίσως, διαφορετικούς τρόπους ικανοποίησης των αναγκών της εταιρείας-πελάτη. Αφού ανατεθεί η σύμβαση σε κάποιον εργολάβο, εκείνος πρέπει να γράψει έναν ορισμό συστήματος για τον πελάτη με περισσότερες λεπτομέρειες, ώστε ο πελάτης να μπορεί να καταλάβει και να επαληθεύσει τι θα κάνει το λογισμικό. Και τα δύο αυτά έγγραφα μπορεί να ονομαστούν έγγραφα απαιτήσεων για το σύστημα.» [14] Απαιτήσεις χρήστη Το PHP Toolbox θα πρέπει να αναλύει το δημοσιευμένο (en. uploaded) PHP ή Java project. Το PHP Toolbox θα πρέπει να εμφανίζει τις μετρικές του επιλεγμένου PHP ή Java project Απαιτήσεις συστήματος Κατά την διαδικασία δημοσίευσης στον server (en. upload) θα πρέπει να παρουσιάζεται στον χρήστη μήνυμα επιτυχούς ή μη δημοσίευσης. -43-

48 Τα projects που δημοσιεύονται στον server θα πρέπει να αποθηκεύονται στην βάση δεδομένων για ένα χρόνο από την ημερομηνία που δημοσιεύτηκαν Πριν δημοσιευτούν τα projects από τους χρήστες θα πρέπει να γίνεται έλεγχος για μολυσματικό περιεχόμενο (π.χ. virus) Λειτουργικές και μη-λειτουργικές απαιτήσεις Λειτουργικές απαιτήσεις Η εφαρμογή πρέπει να είναι πλήρως λειτουργική (responsive) και για τα κινητά καθώς και για tablet. Επίσης θα πρέπει να είναι λειτουργική και για όλες τις αναλύσεις οθονών. Η εφαρμογή πρέπει να έχει συμβατότητα με όλους τους δημοφιλείς φυλλομετρητές (π.χ. Internet Explorer, Chrome, Firefox, Opera) Ο χρήστης πρέπει να έχει την δυνατότητα να ανεβάσει οποιοδήποτε αρχείο.zip ή.jar επιθυμεί Ο χρήστης πρέπει να έχει την δυνατότητα εμφάνισης των δημοσιευμένων προγραμμάτων Η εφαρμογή πρέπει να παρέχει στον χρήστη την δυνατότητα δημοσίευσης προγράμματος PHP ή Java σε μορφή.zip ή.jar Σε κάθε δημοσιευμένο project πρέπει να αποδίδεται ένα μοναδικό αναγνωριστικό (ID) βάσει της ημερομηνίας που δημοσιεύτηκε Η εφαρμογή πρέπει να παρέχει στον χρήστη την δυνατότητα εμφάνισης λεπτομερειών σχετικά με το δημοσιευμένο πρόγραμμα που θα επιλέξει Μη-λειτουργικές απαιτήσεις Η διασύνδεση χρήστη του PHP toolbox πρέπει να γίνει σε HTML με χρήση Javascript Ο χρόνος απόκρισης της εφαρμογής δεν πρέπει να υπερβαίνει τα 3 δευτερόλεπτα Το σύστημα (εφαρμογή και server) πρέπει να λειτουργεί χωρίς διακοπές όλο τον χρόνο Η εφαρμογή πρέπει να συμμορφώνεται με τους φορείς ελέγχου CSS και HTML -44-

49 8.2 Κατηγορίες χρηστών Επισκέπτες Κύριοι στόχοι χρήσης συστήματος: Δυνατότητα δημοσίευσης project καθώς και δυνατότητα εμφάνισης δημοσιευμένων projects και άλλων χρηστών Επισκέπτες είναι είτε developers λογισμικού είτε επισκέπτες γενικού ενδιαφέροντος Προγραμματιστής εφαρμογής Κύριοι στόχοι χρήσης συστήματος: Ενημέρωση των υπηρεσιών που ενδέχεται να αλλάξουν στο μέλλον, βελτίωση του υπάρχοντος πηγαίου κώδικα καθώς και τροποποίηση των κειμένων που ήδη υπάρχουν. 8.3 Μοντέλο ανάπτυξης λογισμικού Η εφαρμογή που δημιουργήθηκε στην παρούσα διπλωματική εργασία βασίστηκε στην λογική της επαναχρησιμοποίησης λογισμικού σε συνδυασμό με την υλοποίηση κομματιών κώδικα όπου δεν ήταν δυνατή η εύρεση του κατάλληλου «τμήματος λογισμικού». Η επαναχρησιμοποίηση λογισμικού είναι βασισμένη στην λογική αντιμετώπισης των απαιτήσεων του συστήματος που αναπτύσσεται υλοποιώντας το τμηματικά. Οι προγραμματιστές εφαρμογών ανοιχτού κώδικα συνήθως οργανώνουν τον κώδικά τους σε συστατικά λογισμικού (software components), μεγαλύτερα ή μικρότερα. 8.4 Δομή εφαρμογής Πέρα της αρχικής σελίδα η εφαρμογή που υλοποιήθηκε χωρίζεται σε τρεις ενότητες: PHP Analyzer Java Analyzer Metrics Repository PHP Analyzer Η συγκεκριμένη ενότητα χωρίζεται σε τέσσερις υποενότητες κώδικα: index.html Αρχική σελίδα του PHP Analyzer archive.php Διαχείριση και ανάλυση του project του χρήστη -45-

50 db_handler.php Διαχείριση της βάσης δεδομένων parser_crud.php Εισαγωγή στην βάση δεδομένων των μετρικών που προέκυψαν από την ανάλυση του project του χρήστη Java Analyzer Η συγκεκριμένη ενότητα χωρίζεται σε δυο ενότητες κώδικα: index.html Αρχική σελίδα του Java Analyzer onoma.php Διαχείριση και ανάλυση του project του χρήστη Metrics Repository Η συγκεκριμένη ενότητα χωρίζεται σε τέσσερις ενότητες: index.php Αρχική σελίδα του Metrics Repository db_handler.php Διαχείριση της βάσης δεδομένων details.php Εμφάνιση των μετρικών επιλεγμένου PHP project details_java.php Εμφάνιση των μετρικών του επιλεγμένου Java project -46-

51 9 Μελέτη περίπτωσης Στο κεφάλαιο αυτό θα αναλυθεί ο τρόπος χρήσης της διαδικτυακής εφαρμογής που δημιουργήθηκε στα πλαίσια της παρούσας διπλωματικής εργασίας. Η διαδικτυακή εφαρμογή την στιγμή αυτή βρίσκεται online στην διεύθυνση Ενότητες εφαρμογής Η εφαρμογή PHP Toolbox χωρίζεται στις εξής σελίδες ενότητες: Αρχική σελίδα εφαρμογής (index.html) PHP Analyzer (/php-analyzer) Java Analyzer (/java-analyzer) Metrics Repository (/repository) 9.2 Αρχική σελίδα εφαρμογής Στην σελίδα αυτή ο χρήστης έρχεται σε επαφή για πρώτη φορά με την εφαρμογή που δημιουργήθηκε. Εικόνα 3: Αρχική σελίδα εφαρμογής -47-

52 Στην αρχή της σελίδας υπάρχει ένα σύντομο κείμενο σχετικά με την εφαρμογή και ότι δημιουργήθηκε στα πλαίσια μιας διπλωματικής εργασίας.ο χρήστης μπορεί να επιλέξει μια από τις τρεις ενότητες της εφαρμογής προκειμένου να εισέλθει σε αυτή. 9.3 PHP Analyzer Στην σελίδα αυτή ο χρήστης μπορεί να ανεβάσει το project που έχει δημιουργήσει, με την χρήση της γλώσσα προγραμματισμού PHP, μέσω μιας φόρμας που δημιουργήθηκε. Εικόνα 4: Σελίδα της ενότητας PHP Analyzer Ο χρήστης πατώντας το κουμπί Add Files του δίνεται η δυνατότητα να επιλέξει το αρχείο.zip από τον υπολογιστή του, που περιέχει τον κώδικα της εφαρμογής του. Εικόνα 5: Επιλογή αρχείου.zip -48-

53 Αφού ο χρήστης επιλέξει την εφαρμογή του και πατήσει open τότε μπορεί να επιλέξει το Start προκειμένου να ξεκινήσει να ανεβαίνει στον server το επιλεγμένο αρχείο. Εικόνα 6: Start upload file Αφού ολοκληρωθεί το ανέβασμα του αρχείου ο χρήστης βλέπει το παρακάτω μήνυμα. Εικόνα 7: Επιτυχές ανέβασμα της εφαρμογής στον server 9.4 Java Analyzer Στην σελίδα αυτή ο χρήστης μπορεί να ανεβάσει το project που έχει δημιουργήσει, με την χρήση της γλώσσας προγραμματισμού JAVA, μέσω μιας φόρμας που δημιουργήθηκε. -49-

54 Εικόνα 8: Σελίδα της ενότητας Java Analyzer Ο χρήστης πατώντας το κουμπί Browse του δίνεται η δυνατότητα να επιλέξει το αρχείο.jar από τον υπολογιστή του, το οποίο περιέχει τον κώδικα της εφαρμογής του. Εικόνα 9: Επιλογή αρχείου.jar Αφού ο χρήστης πατήσει το κουμπί Open και αν είναι επιτυχής η διαδικάσια του εμφανίζεται το παρακάτω μήνυμα. Εικόνα 10: Επιτυχής διαδικασία ανεβάσματος του αρχείου.jar -50-

55 9.5 Metrics repository Στην ενότητα αυτή της διαδικτυακής εφαρμογής εμφανίζονται τα PHP και Java Projects που είναι διαθέσιμα (όσα έχουν ανέβει από τους χρήστες). Ο χρήστης μπορεί να δει λεπτομέρειες σχετικά με το καθένα από αυτά. Δηλαδή να δει κυρίως τις μετρικές που έχουν εξαχθεί για το συγκεκριμένο project. Εικόνα 11: Σελίδα ενότητας Metrics Repository O χρήστης έχει την δυνατότητα να επιλέξει ανάμεσα στα υπάρχοντα projects όπως φαίνεται στην παραπάνω εικόνα PHP project details Στην σελίδα αυτή ο χρήστης βλέπει λεπτομερώς τις μετρικές που εξάχθηκαν από την ανάλυση του PHP project που έγινε upload νωρίτερα είτε από τον ίδιο είτε από κάποιον άλλον χρήστη. -51-

56 Εικόνα 12: Επιλογή εμφάνισης λεπτομερειών του PHP project Αφού ο χρήστης sεπιλέξει ένα project για να δει τις λεπτομέρειές του οδηγείται στην παρακάτω σελίδα. Εικόνα 13: Σελίδα λεπτομερειών για ένα PHP project -52-

57 9.5.2 Java project details Στην σελίδα αυτή ο χρήστης βλέπει λεπτομερώς τις μετρικές που εξάχθηκαν από την ανάλυση του Java project που έγινε upload νωρίτερα είτε από τον ίδιο είτε από κάποιον άλλον χρήστη. Εικόνα 14: Επιλογή εμφάνισης λεπτομερειών του Java project Αφού ο χρήστης επιλέξει ένα project για να δει τις λεπτομέρειές του οδηγείται στην παρακάτω σελίδα. Εικόνα 15: Σελίδα λεπτομερειών για ένα Java project -53-

58

59 10 Συμπεράσματα Η διπλωματική εργασία αυτή αποτελεί μια αυτόνομη διαδικτυακή εφαρμογή με δικό της γραφικό περιβάλλον που δημιουργήθηκε για να μπορεί ο οποιοσδήποτε χρήστης να ανεβάζει δικά του projects σε PHP ή Java τα οποία αναλύονται, εξάγονται οι μετρικές τους και εμφανίζονται στον χρήστη από την σελίδα του repository καθώς και να μπορεί να βλέπει τις μετρικές που εξάχθηκαν από τα projects άλλων χρηστών. Η εφαρμογή που δημιουργήθηκε αποτελεί μια αρχή όσον αφορά την online στατική ανάλυση κώδικα για PHP και Java projects. Μπορούν να προστεθούν επιπλέον επεκτάσεις έτσι ώστε να καλύπτει πλήρως το κομμάτι της στατικής ανάλυσης κώδικα και να προστεθούν και μηχανισμοί σύστασης συστατικών σε PHP και Java. Στα πλαίσια της διπλωματικής εργασίας δεν θα μπορούσε φυσικά να γίνει ο επαρκής έλεγχος για να αποφευχθούν ζητήματα ασφάλειας σχετικά με τον κώδικα. Κάτι που όμως πρέπει να γίνει σε μελλοντικό στάδιο προκειμένου οι χρήστες της εφαρμογής να μην αντιμετωπίσουν τέτοιου είδους προβλήματα. Θα μπορούσε επιπλέον να δημιουργηθεί μια πλατφόρμα χρηστών με χρήση usernames και passwords έτσι ώστε οι χρήστες να μπορούν να έχουν την δικιά τους σελίδαrepository. Τέλος, η διάδραση μεταξύ χρήστη και εφαρμογής καθώς και η εμφάνιση της εφαρμογής σε κάποια σημεία της χρήζουν και αυτές μελλοντικής βελτίωσης. -55-

60

61 Βιβλιογραφία [1] Wikipedia, «Free Software,» [Ηλεκτρονικό]. Available: [Πρόσβαση 16 July 2015]. [2] G. Project, «The Free Software Foundation,» [Ηλεκτρονικό]. Available: [Πρόσβαση 17 July 2015]. [3] Wikipedia, «Open Source Software,» [Ηλεκτρονικό]. Available: [Πρόσβαση 16 July 2015]. [4] A. G. Bardas, «Static code analysis,» Journal of Information Systems & Operations Management, τόμ. 4, αρ. 2, pp , [5] W. B. Frakes και K. Kang, «Software Reuse Research: Status and Future,» IEEE Transactions on software engineering, τόμ. 31, αρ. 7, pp , [6] A. University, «COPE's Github page,» [Ηλεκτρονικό]. Available: [7] Y. Singh, P. K. Bhatia και O. Sangwanl, «Software reusability accessment using soft computing techniques,» ACM SIGSOFT Software Engineering Notes, τόμ. 36, αρ. 1, pp. 1-7, [8] B. Jalendar, A. Govardhan και R. Emchand, «Designing code level reusable software,» International Journal of Software Engineering & Applications, τόμ. 3, αρ. 1, pp , [9] R. Keswani, S. Joshi και A. Jatain, «Software Reuse in Practice,» σε IEEE International Conference on Advanced Computing & Communication Technologies (ACCT), [10] Y. Y. A. Ibraheem, A. M. Abualki και M. Z. Mohd Yussof, «Taxonomy, Definition, Approaches, Benefits, Reusability Levels, Factors and adaptation of Software Reusability: A Review of the Research Literature,» Journal of Applied Sciences, τόμ. 14, αρ. 20, pp ,

62 [11] P. Sandhu και P. S. S. Kakkar, «A survey on software reusability,» σε 2nd International Conference of Applications of Mechanical and Electrical Technology (ICMET), [12] G. Singaravel, V. Palanisamy και A. Krishnan, «Overview analysis of reusability metrics in software development for risk reduction,» σε International Conference on Innovative Computing Technologies, [13] M. Pichler, «PHP Depend,» [Ηλεκτρονικό]. Available: [14] A. M. Davis, Software Requirements: Objects, Functions and States, Prentice Hall; 2nd edition (March 14, 1993), [15] I. Schafer και I. Stamelos, «Software Reuse for Dynamic Systems in the Cloud and Beyond,» σε 14th International Conference on Software Reuse, Miami, FL, USA, [16] M. Gasparic, A. Janes, A. Silliti και G. Succi, «An Analysis of a Project Reuse Approach in an Industrial Setting,» σε 14th International Conference on Software Reuse, Miami, FL, USA, [17] F. Mohr και S. Walther, «Template-Based Generation of Semantic Services,» σε 14th International Conference on Software Reuse, Miami, FL, USA, [18] G. M. Kapitsaki και F. Kramer, «Open Source License Violation Check for SPDX Files,» σε 14th International Conference on Software Reuse, Miami, FL, USA, [19] H. Yin και H. Hansson, «Flexible and Efficient Reuse of Multi-mode Components for Building Multi-mode Systems» σε 14 th International Conference on Software Reuse, Miami, FL, USA, [20] C. Szypersky, D. Gruntz και S. Murer, Component Software Beyond Objectoriented Programming, Addison-Wesley Longman Publishing Co.; 2nd edition, Inc.,

63 -59-

64 Διαδικτυακές πηγές

65

66

67 Παράρτημα Α: LAMP Εγκατάσταση Apache Αρχικά ανοίγουμε το terminalτου Ubuntu και πληκτρολογούμε: ~ $ sudo apt-get install apache2 Για να λειτουργήσει ο Apache server χρειάζεται να γίνει restart επομένως πληκτρολογούμε: ~ $ sudo service apache2 restart Για να ελέγξουμε αν η εγκατάσταση έχει γίνει σωστά ανοίγουμε ένα πρόγραμμα περιήγησης(προτεινόμενο: Mozilla Firefox) και πληκτρολογούμε localhost ή την διεύθυνση IP του server. Αν η εγκατάσταση είναι πετυχημένη θα δούμε στο πρόγραμμα περιήγησης το εξής: Εικόνα 16: Οθόνη επιτυχημένης εγκατάστασης Apache σε διανομή Ubuntu Εγκατάσταση MySQL με PHP5 Για να εγκαταστήσουμε την MySQLστον serverμαζί με την PHP5, ανοίγουμε το terminalκαι πληκτρολογούμε: ~ $ sudo apt-get install mysql-server libapache2-mod-authmysql php5-mysql -63-

68 Κατά την διάρκεια της εγκατάστασης θα σας ζητηθεί να δώσετε τον κωδικό για τον χρήστη root. Πληκτρολογήστε οποιοδήποτε κωδικό επιθυμείτε. Μετά την εγκατάσταση της MySQLκαι της PHP5 απομένει ο έλεγχος για την επιβεβαίωσης της εύρυθμης λειτουργίας τους. Ανοίγουμε το terminalκαι πληκτρολογούμε: ~ $ sudo gedit /var/www/info.php Αφού ανοίξει ο editor πληκτρολογούμε <?php phpinfo();?> και αποθηκεύουμε το αρχείο. Έπειτα ανοίγουμε οποιοδήποτε πρόγραμμα περιήγησης και πληκτρολογούμε την διεύθυνση localhost/info.php. Εικόνα 17: Οθόνη επιτυχημένης εγκατάστασης PHP -64-

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο 08 Η γλώσσα UML I Τεχνολογία Λογισμικού Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Χειμερινό εξάμηνο 2017 18 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Unified Modeling Language

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

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

Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Τεχνολογία Λογισμικού 8ο Εξάμηνο 2018 19 Unified Modeling Language II Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Μοντελοποίηση δομής Διαγράμματα κλάσεων Class diagrams

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

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

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

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

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

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

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

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

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

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

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

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

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

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ Μάθημα Πρώτο Εισαγωγή στις Υπηρεσίες Ιστού (Web Services) Μοντέλα WS JSON Χρήση (consume) WS μέσω python Πρόσβαση σε WS και άντληση δεδομένων Παραδείγματα

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

Ασφάλεια σε χώρους αναψυχής: Ένα σύστημα από έξυπνα αντικείμενα

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

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

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

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

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

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

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

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

ΗΥ562 Προχωρημένα Θέματα Βάσεων Δεδομένων Efficient Query Evaluation over Temporally Correlated Probabilistic Streams

ΗΥ562 Προχωρημένα Θέματα Βάσεων Δεδομένων Efficient Query Evaluation over Temporally Correlated Probabilistic Streams ΗΥ562 Προχωρημένα Θέματα Βάσεων Δεδομένων Efficient Query Evaluation over Temporally Correlated Probabilistic Streams Αλέκα Σεληνιωτάκη Ηράκλειο, 26/06/12 aseliniotaki@csd.uoc.gr ΑΜ: 703 1. Περίληψη Συνεισφοράς

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

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1 Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα Προγραμματισμός II 1 lalis@inf.uth.gr Χρήση λογισμικού που ήδη υπάρχει Τα πολύπλοκα συστήματα αναπτύσσονται σταδιακά, «χτίζοντας» πάνω σε υπάρχουσα λειτουργικότητα

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

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

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

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

Περιεχόµενα. Πληροφοριακά Συστήµατα: Κατηγορίες και Κύκλος Ζωής. Π.Σ. ιαχείρισης Πράξεων. Π.Σ. ιοίκησης. Κατηγορίες Π.Σ. Ο κύκλος ζωής Π.Σ.

Περιεχόµενα. Πληροφοριακά Συστήµατα: Κατηγορίες και Κύκλος Ζωής. Π.Σ. ιαχείρισης Πράξεων. Π.Σ. ιοίκησης. Κατηγορίες Π.Σ. Ο κύκλος ζωής Π.Σ. Πληροφοριακά Συστήµατα: Κατηγορίες και Κύκλος Ζωής Περιεχόµενα Κατηγορίες Π.Σ. ιαχείρισης Πράξεων ιοίκησης Υποστήριξης Αποφάσεων Έµπειρα Συστήµατα Ατόµων και Οµάδων Ο κύκλος ζωής Π.Σ. Ορισµός Φάσεις Χρήστες

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

Η Διαλειτουργικότητα στην Υπηρεσία του Πολίτη

Η Διαλειτουργικότητα στην Υπηρεσία του Πολίτη Η Διαλειτουργικότητα στην Υπηρεσία του Πολίτη Μαρίκα Λάμπρου Διευθύνουσα Σύμβουλος SingularLogic Integrator ICT Forum Περιεχόμενα Ορισμός Διαλειτουργικότητας Στόχοι Διαλειτουργικότητας Πρότυπο Ηλεκτρονικό

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

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

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

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

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

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

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

Υπολογιστική Νέφους Cloud computing

Υπολογιστική Νέφους Cloud computing Υπολογιστική Νέφους Cloud computing Χρ. Ηλιούδης Clouds Cloud computing??? Διείσδυση του Cloud Ορισμός - χαρακτηριστικά Ο όρος cloud έχει τις ρίζες στου στην αρχή του internet όπου συνήθιζαν να το αναπαριστούν

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

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

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΟΜΕΑΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ, ΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΚΤΥΩΝ Εργ. Τεχνολογίας Λογισμικού & Υπηρεσιών S 2 E Lab Π Τ Υ Χ Ι

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

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

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

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

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

Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές Μεταπτυχιακό Δίπλωμα Ειδίκευσης Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές Δρ. Κακαρόντζας Γεώργιος Επίκουρος Καθηγητής Τμ. Μηχανικών Πληροφορικής Τ.Ε. Μηχανική Λογισμικού για Διαδικτυακές

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

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

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

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

Company LOGO. Nazaret Kazarian. www.company.com 1

Company LOGO. Nazaret Kazarian. www.company.com 1 Nazaret Kazarian www.company.com 1 Agenda Επισκόπηση του Spring Web Flow Συμβολή στο framework Case study: Intracom IT Services Projects www.company.com 2 Background 2004-2005: Ervacon Web Flow Οκτ 2006:

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

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

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

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

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

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

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

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ Διαδικτυακές Εφαρμογές Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

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

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

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

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

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

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

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

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

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

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

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. ΤΕΙ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΥΣ Θέμα: ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ. Εισηγητής: Δ. Ν. Καλλέργης, MSc. Φοιτήτρια: Κοντζοπούλου Παναγιώτα Εισαγωγή

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

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία. AtYourService CY : Create a REST API. Δημήτρης Χριστοδούλου

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία. AtYourService CY : Create a REST API. Δημήτρης Χριστοδούλου ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Πτυχιακή εργασία AtYourService CY : Create a REST API Δημήτρης Χριστοδούλου Λεμεσός 2016 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία ΕΤΟΙΜΑΣΙΑ ΔΕΛΤΙΟΥ ΠΟΣΟΤΗΤΩΝ ΜΕ ΤΗ ΧΡΗΣΗ ΛΟΓΙΣΜΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Πτυχιακή εργασία ΕΤΟΙΜΑΣΙΑ ΔΕΛΤΙΟΥ ΠΟΣΟΤΗΤΩΝ ΜΕ ΤΗ ΧΡΗΣΗ ΛΟΓΙΣΜΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ Χρύσω Κωνσταντίνου Λεμεσός 2016 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

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

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

Ένωση Μηχανικών Πληροφορικής και Επικοινωνιών Ελλάδας (ΕΜηΠΕΕ) συνοπτικά Δρ. Οδυσσέας Ι. Πυροβολακης Πρόεδρος ΔΣ ΕΜηΠΕΕ Ένωση Μηχανικών Πληροφορικής και Επικοινωνιών Ελλάδας (ΕΜηΠΕΕ) συνοπτικά Ιδρύθηκε το 1987, ως Πανελλήνιος Σύλλογος ιπλωματούχων Μηχανικών Η/Υ & Πληροφορικής

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

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

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

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

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

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

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

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

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

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

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

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

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

Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress

Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress ΚΟΤΣΟΓΙΑΝΝΙΔΗΣ ΛΑΖΑΡΟΣ Επιβλέπων καθηγητής Σφέτσος Παναγιώτης ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ Ως Ηλεκτρονικό Εμπόριο ή

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

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

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

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

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

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

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

Τίτλος Ειδικού Θεματικού Προγράμματος: «Διοίκηση, Οργάνωση και Πληροφορική για Μικρο-μεσαίες Επιχειρήσεις»

Τίτλος Ειδικού Θεματικού Προγράμματος: «Διοίκηση, Οργάνωση και Πληροφορική για Μικρο-μεσαίες Επιχειρήσεις» ΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, ΒΑΣΙΚΟΣ ΠΑΡΑΓΟΝΤΑΣ ΓΙΑ ΤΗΝ ΟΙΚΟΝΟΜΙΚΗ ΚΑΙ ΚΟΙΝΩΝΙΚΗ ΑΝΑΠΤΥΞΗ ΤΟΥ ΑΙΓΑΙΟΠΕΛΑΓΙΤΙΚΟΥ ΧΩΡΟΥ Τίτλος Ειδικού Θεματικού Προγράμματος: «Διοίκηση, Οργάνωση και Πληροφορική για Μικρο-μεσαίες

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

Ανάλυση Συστηµάτων και Τεχνολογία Λογισµικού

Ανάλυση Συστηµάτων και Τεχνολογία Λογισµικού ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΜΑΤΙΚΗΣ Ανάλυση Συστηµάτων και Τεχνολογία Λογισµικού Μάρα Νικολαϊδου Αντικείµενο & Σκοπός Παρουσίαση και ανάλυση όλων των σταδίων της διαδικασίας ανάπτυξης

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

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Λαμπαδαρίδης Αντώνιος el04148@mail.ntua.gr Διπλωματική εργασία στο Εργαστήριο Συστημάτων Βάσεων Γνώσεων και Δεδομένων Επιβλέπων: Καθηγητής Τ. Σελλής Περίληψη

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

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

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

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

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

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

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

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

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

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

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

Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής

Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής oard Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής Πρόγραµµα Μεταπτυχιακών Σπουδών «Πληροφορική» Μεταπτυχιακή ιατριβή Τίτλος ιατριβής Masters Thesis Title Ονοµατεπώνυµο Φοιτητή Πατρώνυµο Ανάπτυξη διαδικτυακής

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

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

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ ΘΕΣΣΑΛΟΝΙΚΗ, 2016 ΕΙΣΑΓΩΓΗ Μια διαδικτυακή υπηρεσία μπορεί να περιγραφεί απλά σαν μια οποιαδήποτε

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

"Αθηνά" - Ερευνητικό Κέντρο Καινοτομίας στις Τεχνολογίες της Πληροφορίας, των Επικοινωνιών και της Γνώσης

Αθηνά - Ερευνητικό Κέντρο Καινοτομίας στις Τεχνολογίες της Πληροφορίας, των Επικοινωνιών και της Γνώσης "Αθηνά" - Ερευνητικό Κέντρο Καινοτομίας στις Τεχνολογίες της Πληροφορίας, των Επικοινωνιών και της Γνώσης ΙΝΣΤΙΤΟΥΤΟ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΡΟΣΚΛΗΣΗ ΕΚΔΗΛΩΣΗΣ ΕΝΔΙΑΦΕΡΟΝΤΟΣ Ημ/νία ανάρτησης στον ιστότοπο

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

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA Διαδικτυακές Εφαρμογές Ενότητα 1: JPA Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 1: Εισαγωγή Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΟΙΚΗΣΗΣ MANAGEMENT INFORMATION SYSTEMS (M.I.S.) ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΟΙΚΗΣΗΣ MANAGEMENT INFORMATION SYSTEMS (M.I.S.) 1.1 Κωνσταντίνος Ταραμπάνης Καθηγητής Τμήμα Οργάνωσης και Διοίκησης Επιχειρήσεων Πανεπιστήμιο Μακεδονίας Γρ. 307 2310-891-578 kat@uom.gr

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

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

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

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

ΕΝΟΤΗΤΑ 2 η ΙΑΧΕΙΡΙΣΗ ΡΟΗΣ ΕΡΓΑΣΙΑΣ (WORKFLOW MANAGEMENT) 2.1 Εισαγωγή

ΕΝΟΤΗΤΑ 2 η ΙΑΧΕΙΡΙΣΗ ΡΟΗΣ ΕΡΓΑΣΙΑΣ (WORKFLOW MANAGEMENT) 2.1 Εισαγωγή ΕΝΟΤΗΤΑ 2 η ΙΑΧΕΙΡΙΣΗ ΡΟΗΣ ΕΡΓΑΣΙΑΣ (WORKFLOW MANAGEMENT) 2.1 Εισαγωγή Οι σηµερινές δραστηριότητες των επιχειρήσεων δηµιουργούν την ανάγκη για όσο το δυνατό µεγαλύτερη υποστήριξη από τα πληροφοριακά τους

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

Φορολογική Βιβλιοθήκη. Θανάσης Φώτης Προγραμματιστής Εφαρμογών

Φορολογική Βιβλιοθήκη. Θανάσης Φώτης Προγραμματιστής Εφαρμογών Φορολογική Βιβλιοθήκη Θανάσης Φώτης Προγραμματιστής Εφαρμογών Το έργο Η φορολογική βιβλιοθήκη πρόκειται για ένα έργο που φιλοδοξεί να αποτελέσει σημαντικό βοήθημα για τον επαγγελματία λογιστή και όχι μόνο.

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

Νέες τεχνολογίες εισάγονται ή χρησιµοποιούνται

Νέες τεχνολογίες εισάγονται ή χρησιµοποιούνται special report τoυ Γιώργου Φετοκάκη / gfetokakis@boussias.com Jobs scheduling Η χρυσή τοµή της αυτοµατοποίησης Μια λύση job scheduling πρέπει να είναι αρκετά περιεκτική. Πρέπει να υποστηρίζει την ενσωµάτωση

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

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

Ανάλυση Απαιτήσεων Mεθοδολογίες Ανάπτυξης ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΜΑΤΙΚΗΣ Ανάλυση Απαιτήσεων Mεθοδολογίες Ανάπτυξης Μάρα Νικολαϊδου Μοντελοποίηση Συστήµατος Περιπτώσεις χρήσης Οι περιπτώσεις χρήσης είναι µια τεχνική

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

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

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

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί

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

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

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

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

Αρχές Προγραμματισμού Υπολογιστών

Αρχές Προγραμματισμού Υπολογιστών Αρχές Προγραμματισμού Υπολογιστών Ανάπτυξη Προγράμματος Β ΕΠΑΛ Τομέας Πληροφορικής Βελώνης Γεώργιος Καθηγητής Πληροφορικής ΠΕ20 Κύκλος ανάπτυξης προγράμματος/λογισμικού Η διαδικασία ανάπτυξης λογισμικού,

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

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

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

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

Διαχείριση Πολιτισμικών Δεδομένων

Διαχείριση Πολιτισμικών Δεδομένων Διαχείριση Πολιτισμικών Δεδομένων Μάθημα 1 Εισαγωγή στις Βάσεις Δεδομένων Τζανέτος Πομόνης ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Συντήρησης Πολιτισμικής Κληρονομιάς Τι είναι οι Βάσεις

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

Managing Information. Lecturer: N. Kyritsis, MBA, Ph.D. Candidate Athens University of Economics and Business. e-mail: kyritsis@ist.edu.

Managing Information. Lecturer: N. Kyritsis, MBA, Ph.D. Candidate Athens University of Economics and Business. e-mail: kyritsis@ist.edu. Managing Information Lecturer: N. Kyritsis, MBA, Ph.D. Candidate Athens University of Economics and Business e-mail: kyritsis@ist.edu.gr Ανάπτυξη Πληροφοριακών Συστημάτων και Διαχείριση Έργων Learning

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

Ανάλυση Πληροφοριακών Συστημάτων. Εαρινό Εξάμηνο Lec06 (Εργαστήριο) 26/03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

Ανάλυση Πληροφοριακών Συστημάτων. Εαρινό Εξάμηνο Lec06 (Εργαστήριο) 26/03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Ανάλυση Πληροφοριακών Συστημάτων Εαρινό Εξάμηνο 2018-2019 Lec06 (Εργαστήριο) 26/03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Διαλέξεις παρουσιάσεις Το υλικό του μαθήματος στηρίζεται στο υλικό που χρησιμοποίησε

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Hardware System Integration & It Services Internet Business Solutions e-commerce Web Applications & On Line Databases

Hardware System Integration & It Services Internet Business Solutions e-commerce Web Applications & On Line Databases Πατέντες λογισµικού και επιχειρήσεις Θεόφιλος Μυλωνάς Αντιπρόεδρος Συνδέσµου Επιχειρήσεων Πληροφορικής Βορείου Ελλάδος (ΣΕΠΒΕ) Πρόεδρος και ιευθύνων Σύµβουλος Cardisoft AE Τεχνικό Επιµελητήριο / Τµήµα

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

Διαδίκτυο των Αντικειμένων - IoT.

Διαδίκτυο των Αντικειμένων - IoT. Διαδίκτυο των Αντικειμένων - IoT sdima@ece.upatras.gr ΑΠΟΚΤΗΣΗ ΑΚΑΔΗΜΑΪΚΗΣ ΔΙΔΑΚΤΙΚΗΣ ΕΜΠΕΙΡΙΑΣ ΣΕ ΝΕΟΥΣ ΕΠΙΣΤΗΜΟΝΕΣ ΚΑΤΟΧΟΥΣ ΔΙΔΑΚΤΟΡΙΚΟΥ ΣΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ (ΦΚ/MIS) Ε.655/ 5001184. sdima@ece.upatras.gr

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

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

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΟΜΕΑΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ, ΠΛΗΡΟΦΟΡΙΚΗΣ & ΙΚΤΥΩΝ Εργ. Τεχνολογίας Λογισμικού & Υπηρεσιών S 2 ELab Π Τ Υ Χ Ι Α

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

Αξιολόγηση Υπηρεσιών ιαδικτύου µέσω Περιπτώσεων Μελέτης

Αξιολόγηση Υπηρεσιών ιαδικτύου µέσω Περιπτώσεων Μελέτης Αξιολόγηση Υπηρεσιών ιαδικτύου µέσω Περιπτώσεων Μελέτης Κωστής Αϊβαλής Μηχανικός Πληροφορικής TU-Berlin 2/5/2008 ΕΑΠ-ΓΤΠ61-Κωστής Αϊβαλής 1 Εισαγωγή Η ταχύτητα επεξεργασίας των εφαρµογών διαδικτυακών υπηρεσιών

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

Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές

Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές Ελληνικό Ανοικτό Πανεπιστήμιο ΓΤΠ61 Πληροφορική Πολυμέσα Αγγελική Μαζαράκη Τι είναι η UML Είναι μια γραφική γλώσσα μοντελοποίησης συστημάτων.

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

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

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

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

Ανοικτά Δεδομένα. Η εμπειρία του OpenDataCloud

Ανοικτά Δεδομένα. Η εμπειρία του OpenDataCloud Ανοικτά Δεδομένα Προκλήσεις και Ευκαιρίες: Η εμπειρία του OpenDataCloud Κώστας Σαΐδης, PhD Πάροχοι Ανοικτών Δεδομένων datagov.gr diavgeia.gr geodata.gov.gr Πυροσβεστικό σώμα Ελληνική Αστυνομία Υπουργείο

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

Ενσωματωμένα controls τα οποία προσαρμόζονται και χρησιμοποιούνται σε οποιαδήποτε ιστοσελίδα επιλέγει ο φορέας.

Ενσωματωμένα controls τα οποία προσαρμόζονται και χρησιμοποιούνται σε οποιαδήποτε ιστοσελίδα επιλέγει ο φορέας. Η Πυξίδα Απασχόλησης είναι ένα πλήρως παραμετροποιήσιμο portal που απευθύνεται σε Κέντρα Επαγγελματικής Κατάρτισης, Δήμους, Εκπαιδευτικούς Οργανισμούς και Εταιρίες Εύρεσης Εργασίας, με στόχο τόσο την μηχανογράφηση

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

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

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

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

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

Συστήματα Πληροφοριών Διοίκησης ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Τεχνολογικό Εκπαιδευτικό Ίδρυμα Πειραιά Συστήματα Πληροφοριών Διοίκησης Ενότητα 2: Γενική θεώρηση και κατάταξη συστημάτων πληροφοριών διοίκησης Διονύσιος Γιαννακόπουλος, Καθηγητής Τμήμα

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

(Διαφάνειες Νίκου Βιδάκη)

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

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

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

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

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

ΠΛΑΤΩΝΑΣ Έργο ΓΓΕΤ 1SME2009

ΠΛΑΤΩΝΑΣ Έργο ΓΓΕΤ 1SME2009 ΠΛΑΤΩΝΑΣ Έργο ΓΓΕΤ 1SME2009 4o Συνέδριο InfoCom Green ICT 2012 ΕΥΡΩΠΑΪΚΗ ΕΝΩΣΗ ΠΛΑΤΩΝΑΣ ΠΛΑΤφόρμα έξυπνου διαλογισμικού για συλλογή, ανάλυση, επεξεργασία δεδομένων από συστήματα πολλαπλών ετερογενών ΑισθητήρΩΝ

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

Π4.2.1 ΣΧΕΔΙΟ ΔΗΜΟΣΙΟΤΗΤΑΣ

Π4.2.1 ΣΧΕΔΙΟ ΔΗΜΟΣΙΟΤΗΤΑΣ Π4.2.1 ΣΧΕΔΙΟ ΔΗΜΟΣΙΟΤΗΤΑΣ Αριθμός Έκδοσης: ΕΚΕΤΑ ΙΜΕΤ ΕΜ Β 2013 9 Παραδοτέο ΙΜΕΤ Τίτλος Έργου: «Ολοκληρωμένο σύστημα για την ασφαλή μεταφορά μαθητών» Συγγραφέας: Δρ. Μαρία Μορφουλάκη ΘΕΣΣΑΛΟΝΙΚΗ, ΜΑΙΟΣ

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

Εισαγωγή, Βασικές Έννοιες, Οφέλη και Κίνδυνοι

Εισαγωγή, Βασικές Έννοιες, Οφέλη και Κίνδυνοι Εισαγωγή, Βασικές Έννοιες, Οφέλη και Κίνδυνοι Ευθύμιος Ταμπούρης tambouris@uom.gr Επιστημονική Επιχειρηματική Χρήση των Η/Υ Η επιστημονική κοινότητα ασχολείται με τη λύση πολύπλοκων μαθηματικών προβλημάτων

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

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

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

Προτεινόμενες Διπλωματικές Εργασίες 2009

Προτεινόμενες Διπλωματικές Εργασίες 2009 Προτεινόμενες Διπλωματικές Εργασίες 2009 Αλγοριθμικές Διαδικασίες για Smart Energy Profiling μέσω Διαδικτύου με βάση τηλεμετρικά δίκτυα AMR και προχωρημένων αλγορίθμων Διαχείρισης Ενεργειακής Γνώσης Η

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

ΓΕΩΠΛΗΡΟΦΟΡΙΚΗ. και ΣΥΣΤΗΜΑΤΑ ΓΕΩΓΡΑΦΙΚΩΝ ΠΛΗΡΟΦΟΡΙΩΝ

ΓΕΩΠΛΗΡΟΦΟΡΙΚΗ. και ΣΥΣΤΗΜΑΤΑ ΓΕΩΓΡΑΦΙΚΩΝ ΠΛΗΡΟΦΟΡΙΩΝ ΓΕΩΠΛΗΡΟΦΟΡΙΚΗ και ΣΥΣΤΗΜΑΤΑ ΓΕΩΓΡΑΦΙΚΩΝ ΠΛΗΡΟΦΟΡΙΩΝ ΣΚΟΠΟΣ ΜΑΘΗΜΑΤΟΣ ΣΥΝΔΕΣΗ ΜΕ ΑΛΛΑ ΜΑΘΗΜΑΤΑ ΣΕ ΠΟΙΟΥΣ ΑΠΕΥΘΥΝΕΤΑΙ ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ ΟΡΓΑΝΩΣΗ ΠΗΓΕΣ ΔΙΔΑΣΚΟΝΤΕΣ 1o μάθημα: ΕΙΣΑΓΩΓΗ Τί είναι Γεωπληροφορική

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

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

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

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

Λιόλιου Γεωργία. ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα

Λιόλιου Γεωργία. ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα Λιόλιου Γεωργία ΕπιβλέπουσαΚαθηγήτρια: ΣατρατζέµηΜάγια, καθηγήτρια, τµ. ΕφαρµοσµένηςΠληροφορικής, ΠΑΜΑΚ Εισαγωγή Γενικά στοιχεία εφαρµογή

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ - Π.Μ.Σ. ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ - Π.Μ.Σ. ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ > ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ - Π.Μ.Σ. ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΟΡΙΣΜΟΣ: Το Cloud Computing είναι η ονοµασία της τεχνολογίας η οποία επιτρέπει στους χρήστες να

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

"Αθηνά" - Ερευνητικό Κέντρο Καινοτοµίας στις Τεχνολογίες της Πληροφορίας, των Επικοινωνιών και της Γνώσης

Αθηνά - Ερευνητικό Κέντρο Καινοτοµίας στις Τεχνολογίες της Πληροφορίας, των Επικοινωνιών και της Γνώσης "Αθηνά" - Ερευνητικό Κέντρο Καινοτοµίας στις Τεχνολογίες της Πληροφορίας, των Επικοινωνιών και της Γνώσης ΙΝΣΤΙΤΟΥΤΟ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΡΟΣΚΛΗΣΗ ΕΚΔΗΛΩΣΗΣ ΕΝΔΙΑΦΕΡΟΝΤΟΣ Το Ινστιτούτο Πληροφοριακών

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