«Επαναχρησιμοποίηση συστατικών λογισμικού εφαρμογών ήχου»

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

Download "«Επαναχρησιμοποίηση συστατικών λογισμικού εφαρμογών ήχου»"

Transcript

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

2

3 Ευχαριστίες Η εργασία αυτή εκπονήθηκε στα πλαίσια του προπτυχιακού προγράμματος σπουδών του τμήματος Πληροφορικής του Αριστοτελείου Πανεπιστημίου Θεσσαλονίκης κατά το ακαδημαϊκό έτος Η επιλογή του αντικειμένου της εργασίας έγινε λόγω προσωπικού ενδιαφέροντος για το Ελεύθερο Λογισμικό και Λογισμικό Ανοιχτού Κώδικα και τον τομέα του Software Engineering. Θα ήθελα να ευχαριστήσω τον επιβλέποντα καθηγητή, κ. Ιωάννη Σταμέλο για την ευκαιρία που μου παρείχε να ασχοληθώ με ένα αντικείμενο εξαιρετικού ενδιαφέροντος όσο αφορά τη σύγχρονη ανάπτυξη λογισμικού, αλλά και για την άριστη συνεργασία, την άμεση υποστήριξη και την εμπιστοσύνη που μου έδειξε όλο αυτό το διάστημα. Επίσης, θα ήθελα να εκφράσω τις ευχαριστίες μου προς τον συνεργάτη του κ. Σταμέλου, υποψήφιο διδάκτορα κ. Κρητικό Απόστολο, για την πολύτιμη καθοδήγηση και βοήθεια που μου έδωσε καθ' όλη τη διάρκεια εκπονήσεως της παρούσας εργασίας, καθώς και για τον χρόνο που αφιέρωσε και τις συμβουλές του πάνω σε ζητήματα ή προβλήματα που προέκυψαν. Τέλος, θα ήθελα να ευχαριστήσω την οικογένειά μου, αλλά και όσους στάθηκαν δίπλα μου όλο αυτό το διάστημα, για την ανυπολόγιστη υποστήριξη και υπομονή που μου έδειξαν. Σπυρίδων Κρητικός Θεσσαλονίκη, Φεβρουάριος 2015

4 4

5 Πρόλογος Σε μία ψηφιακή εποχή όπως η σημερινή, το παγκόσμιο ενδιαφέρον γύρω από το Ελεύθερο Λογισμικό και Λογισμικό Ανοιχτού Κώδικα (ΕΛ/ΛΑΚ) αυξάνεται συνεχώς και καθημερινά παρουσιάζονται νέες ευκαιρίες, ενώ παράλληλα ο ιδιωτικός και ο δημόσιος τομέας στρέφονται συνεχώς προς αυτό. Η ανάπτυξη και η χρήση προϊόντων ΕΛ/ΛΑΚ έχει γνωρίζει ιδιαίτερη άνθηση τα τελευταία χρόνια, ενώ αντίστοιχο ενδιαφέρον πηγάζει από αυτό ως ιδέα. Μια ιδέα που μελετάται και αναπτύσσεται ομαδικά από την παγκόσμια προγραμματιστική κοινότητα και παρέχει στους χρήστες την ελευθερία για μελέτη, αντιγραφή και τροποποίηση του λογισμικού. Πρόκειται για το τεχνολογικό μέλλον το οποίο δεν επηρεάζει αρνητικά τις βασικές ελευθερίες του ανθρώπου, ενώ συντηρείται από διαφανή συστήματα, τα οποία είναι βασισμένα σε ανοικτά και ασφαλή πρότυπα. Στόχος της παρούσας εργασίας είναι η εξαγωγή συστατικών λογισμικού (software components) από έργα ΕΛ/ΛΑΚ, τμήματα δηλαδή λογισμικού τα οποία μπορούν να θεωρηθούν ως αυτόνομα βάσει προϋποθέσεων, και να χρησιμοποιηθούν μετέπειτα από άλλους προγραμματιστές κατά την ανάπτυξη λογισμικού. Απαραίτητη είναι η μελέτη και η τεκμηρίωση των συστατικών ως προς τη λειτουργικότητά τους, με σκοπό να διευκολυνθεί η επαναχρησιμοποίησή τους ως ξεχωριστό κομμάτι κώδικα. Η διαδικασία αυτή γίνεται εφικτή με τη χρήση συγκεκριμένων εργαλείων που αποτελούν μέρος της πλατφόρμας OPEN-SME. Η εφαρμογή των εργαλείων αυτών γίνεται σε έργα ΕΛ/ΛΑΚ που είναι γραμμένα στην αντικειμενοστραφή γλώσσα προγραμματισμού Java και ανήκουν στο πεδίο (domain) ήχου (sound & audio software). 5

6 Δομή εγγράφου Κεφάλαιο 1: Εισαγωγή Στο πρώτο κεφάλαιο περιγράφονται κάποιες βασικές έννοιες που είναι σημαντικές για την κατανόηση και εκτίμηση της εργασίας. Συγκεκριμένα γίνεται εισαγωγή στην έννοια του λογισμικού, δίνεται έμφαση στο ΕΛ/ΛΑΚ και τα χαρακτηριστικά του, αναφέρεται η Εταιρία ΕΛ/ΛΑΚ και οι στόχοι της και τέλος γίνεται μια σύντομη περιγραφή στην γλώσσα προγραμματισμού Java. Κεφάλαιο 2: Επαναχρησιμοποίηση Λογισμικού Στο κεφάλαιο αυτό παρουσιάζεται η διαδικασία της επαναχρησιμοποίησης λογισμικού όπου δίνεται ο ορισμός και οι τύποι της επαναχρησιμοποίησης καθώς και τα πλεονεκτήματά της. Επιπλέον, δίνεται ο ορισμός των συστατικών λογισμικού ώστε να γίνει κατανοητός ο ρόλος τους στην διαδικασία της επαναχρησιμοποίησης κατά την ανάπτυξη λογισμικού. Κεφάλαιο 3: Το project OPEN-SME και το εργαλείο COPE Σε αυτό το κεφάλαιο γίνεται αναφορά στο project OPEN-SME και τα εργαλεία που αναπτύχθηκαν στα πλαίσια αυτού με κυριότερο το εργαλείο COPE πάνω στο οποίο βασίστηκε η παρούσα εργασία. Παρουσιάζονται αναλυτικά οι λειτουργίες του εργαλείου αυτού μαζί με ένα παράδειγμα/σενάριο χρήσης. Κεφάλαιο 4: Εξαγωγή συστατικών / Πειραματική μελέτη Στο τέταρτο κεφάλαιο περιγράφεται το πεδίο εφαρμογής των έργων που επιλέχθηκαν και παρουσιάζεται ολοκληρωμένα η διαδικασία εξαγωγής και μελέτης συστατικών που εφαρμόστηκε στα πλαίσια της παρούσας εργασίας. Τέλος, αναλύονται ξεχωριστά όλα τα συστατικά λογισμικού που τελικά έγιναν αποδεκτά και δίνεται ένα παράδειγμα δοκιμής συστατικού. Κεφάλαιο 5: Συμπεράσματα / Επίλογος Εδώ γίνεται μία σύντομη ανασκόπηση της εργασίας μαζί με αναφορά σε προβλήματα, παρατηρήσεις και γενικά συμπεράσματα. 6

7 Περιεχόμενα Ευχαριστίες...3 Πρόλογος...5 Δομή εγγράφου...6 Περιεχόμενα Εισαγωγή Λογισμικό Ορισμός και βασικές έννοιες Κατηγορίες Άδεια χρήσης Ελεύθερο Λογισμικό και Λογισμικό Ανοιχτού Κώδικα Τι είναι το ΕΛ/ΛΑΚ Ελεύθερο ή ανοικτό λογισμικό? Σύντομη ιστορική αναδρομή Άδειες του ελεύθερου λογισμικού Κοινότητες και αποθετήρια κώδικα έργων ΕΛ/ΛΑΚ Πλεονεκτήματα του ΕΛ/ΛΑΚ Η Εταιρία ΕΛ/ΛΑΚ Τι είναι η ΕΕΛ/ΛΑΚ Βασικοί στόχοι της ΕΕΛ/ΛΑΚ Η γλώσσα προγραμματισμού Java Περιγραφή Βασικά χαρακτηριστικά Επαναχρησιμοποίηση Λογισμικού (Software Reuse) Τι είναι η επαναχρησιμοποίηση λογισμικού Ορισμός Τύποι επαναχρησιμοποίησης Πλεονεκτήματα Παραδείγματα επαναχρησιμοποίησης Συστατικά λογισμικού (software components) Τι είναι συστατικό λογισμικού Τεχνολογία λογισμικού βασισμένη στα συστατικά

8 3. Το project OPEN-SME και το εργαλείο COPE OPEN-SME Τι είναι το OPEN-SME Εργαλεία του OPEN-SME COPE Τι είναι το εργαλείο COPE Λειτουργίες και επίπεδα του COPE Παράδειγμα χρήσης Εξαγωγή συστατικών / Πειραματική μελέτη Πεδίο εφαρμογής (Domain) Διαδικασία εξαγωγής Αναζήτηση και επιλογή έργων Ανάλυση των έργων Εξαγωγή και μελέτη συστατικών Συστατικά που έγιναν αποδεκτά jmusic SoundHelix atunes Mp3dings Παράδειγμα δοκιμής συστατικού Συμπεράσματα / Επίλογος Γενικά συμπεράσματα Επίλογος...95 Βιβλιογραφία/Αναφορές...97 Εικόνες...99 Παράρτημα

9 1. Εισαγωγή 1.1 Λογισμικό Ορισμός και βασικές έννοιες Λογισμικό του υπολογιστή ή απλά λογισμικό (computer software) είναι ένα σύνολο οδηγιών που κατευθύνουν τον επεξεργαστή ενός υπολογιστικού συστήματος να εκτελεί συγκεκριμένες εργασίες. Το λογισμικό υπολογιστών διαφέρει από το υλικό του υπολογιστή (computer hardware), το οποίο εποπτεύει τις φυσικές διασυνδέσεις και διατάξεις που απαιτούνται για να αποθηκευτεί και να εκτελεστεί το λογισμικό. Στο υλικό περιλαμβάνονται τα αντικείμενα που έχουν υλική υπόσταση, ενώ στο λογισμικό περιλαμβάνονται τα άυλα προγράμματα και οι εφαρμογές που υπάρχουν στο εσωτερικό του υπολογιστή. Το υλικό και το λογισμικό απαιτούν το ένα το άλλο και κανένα δεν μπορεί να χρησιμοποιηθεί ρεαλιστικά χωρίς το άλλο. Για την παραγωγή του λογισμικού είναι απαραίτητη η συγγραφή πηγαίου κώδικα (source code). Πηγαίος κώδικας είναι μία συλλογή εντολών υπολογιστή γραμμένο σε κάποια ανθρώπινα αναγνώσιμη γλώσσα υπολογιστή, συνήθως ως κείμενο, που υπακούει σε αυστηρούς συντακτικούς κανόνες. Το σύνολο των εντολών του λογισμικού είναι αναγνώσιμες από το υπολογιστικό σύστημα και είναι συνήθως γραμμένο σε υψηλού επιπέδου γλώσσες προγραμματισμού που είναι ευκολότερες στη χρήση για τους ανθρώπους, δηλαδή πιο κοντά στη φυσική γλώσσα, για παράδειγμα C++, Java, Python κλπ. Οι υψηλού επιπέδου γλώσσες μεταγλωττίζονται σε γλώσσα μηχανής, η οποία είναι μία δυαδική αναπαράσταση των οδηγιών που σηματοδοτούν τον επεξεργαστή ώστε να αλλάξει την κατάσταση του υπολογιστή από μία προηγούμενη κατάσταση. 9

10 Η πρώτη θεωρία σχετικά με το λογισμικό - πριν από τη δημιουργία των ηλεκτρονικών υπολογιστών, όπως τα ξέρουμε σήμερα - προτάθηκε από τον Alan Turing το 1935 στο δοκίμιο Computable numbers with an application to the Entscheidungsproblem (πρόβλημα απόφασης) Κατηγορίες Είδη λογισμικού Σε σχεδόν όλες τις πλατφόρμες υπολογιστών, το λογισμικό μπορεί να ομαδοποιηθεί σε μερικές ευρύτερες κατηγορίες. Για παράδειγμα με βάση το στόχο, το λογισμικό του υπολογιστή μπορεί να διαχωριστεί σε: Λογισμικό εφαρμογών, το οποίο χρησιμοποιεί το υπολογιστικό σύστημα να εκτελέσει ειδικές λειτουργίες ή να παρέχει λειτουργίες ψυχαγωγίας πέρα από τη βασική λειτουργία του ίδιου του υπολογιστή. Παραδείγματα τέτοιων εφαρμογών είναι οι επεξεργαστές κειμένου, τα ηλεκτρονικά παιχνίδια, τα προγράμματα περιήγησης στο διαδίκτυο κλπ. Λογισμικό συστήματος, το οποίο είναι σχεδιασμένο να διαχειρίζεται άμεσα το υλικό του υπολογιστή, για να παρέχει τις 10

11 βασικές λειτουργίες που απαιτούνται από τους χρήστες και άλλο λογισμικό, καθώς και να παρέχει μια πλατφόρμα για την εκτέλεση του λογισμικού εφαρμογής. Βασικότερη υποκατηγορία εδώ αποτελεί το λειτουργικό σύστημα, το οποίο είναι μία συλλογή λογισμικού που διαχειρίζεται τους πόρους και παρέχει κοινές υπηρεσίες για άλλο λογισμικό που τρέχει "επάνω" σε αυτό. Παραδείγματα λειτουργικών συστημάτων είναι το Linux (Unix), Windows, Mac OS X κλπ. Το λογισμικό εκτελείται συνήθως μέσα από ένα λειτουργικό σύστημα (που είναι επίσης λογισμικό όπως αναφέραμε), και λειτουργεί πάνω σε μια πλατφόρμα που παρέχεται από αυτό ή από ανεξάρτητες πλατφόρμες όπως η Java και η.νετ. Ένα λογισμικό που έχει δημιουργηθεί για μία πλατφόρμα συνήθως δεν μπορεί να λειτουργήσει και σε άλλες πλατφόρμες. Για να συμβεί αυτό απαιτείται η κατάλληλη μορφοποίηση του πηγαίου κώδικα ώστε να είναι συμβατό με την πλατφόρμα στην οποία πρόκειται να εκτελεστεί ή σε κάποιες περιπτώσεις η χρήση ενός διερμηνέα (interpreter) ή μίας εικονικής μηχανής (Virtual Machine - VM). Ένας τυπικός επιτραπέζιος υπολογιστής 11

12 1.1.3 Άδεια χρήσης Κάθε έργο λογισμικού - ακόμα και το ελεύθερο λογισμικό - έχει κάποιο είδος άδειας χρήσης. Η άδεια χρήσης του λογισμικού (software license) είναι ένα νομικό μέσο (συνήθως μέσω του δικαίου των συμβάσεων, με ή χωρίς έντυπο υλικό) που διέπουν τη χρήση ή αναδιανομή του λογισμικού. Η άδεια του λογισμικού δίνει στο χρήστη το δικαίωμα να χρησιμοποιεί το λογισμικό στο περιβάλλον που παραχωρεί η άδεια, και στην περίπτωση των δωρεάν αδειών χρήσης λογισμικού (free software licenses), παρέχει και άλλα δικαιώματα, όπως το δικαίωμα να δημιουργεί αντίγραφα. 1.2 Ελεύθερο Λογισμικό και Λογισμικό Ανοιχτού Κώδικα (ΕΛ/ΛΑΚ) "Free software is a matter of liberty, not price. To understand the concept, you should think of free as in free speech, not as in free beer." Richard Stallman Τι είναι το ΕΛ/ΛΑΚ Ελεύθερο λογισμικό (Free software, software libre, or libre software) είναι το λογισμικό του υπολογιστή που δίνει στους χρήστες την ελευθερία να εκτελούν το λογισμικό για οποιοδήποτε σκοπό, καθώς και να μελετήσουν, να τροποποιήσουν, και να διανείμουν το αρχικό λογισμικό και τις προσαρμοσμένες εκδόσεις. Τα δικαιώματα για τη μελέτη και την τροποποίηση του ελεύθερου λογισμικού συνεπάγονται ελεύθερη πρόσβαση στον πηγαίο κώδικα του. Για τα προγράμματα λογισμικού, τα οποία καλύπτονται από το νόμο περί πνευματικών δικαιωμάτων, αυτό επιτυγχάνεται με μια άδεια χρήσης λογισμικού, όπου ο συγγραφέας παρέχει στους χρήστες τις προαναφερθείσες ελευθερίες. Το λογισμικό ανοιχτού κώδικα (Open-source software) είναι το λογισμικό του υπολογιστή του οποίου ο πηγαίος κώδικας διατίθεται 12

13 με άδεια στην οποία ο κάτοχος των πνευματικών δικαιωμάτων παρέχει τα δικαιώματα για τη μελέτη, την αλλαγή και την διανομή του λογισμικού σε οποιονδήποτε και για οποιονδήποτε σκοπό. Το λογισμικό ανοιχτού κώδικα αναπτύσσεται συνήθως με συνεργατικό τρόπο σε δημόσιο περιβάλλον. Ελεύθερο λογισμικό/λογισμικό ανοικτού κώδικα (Free and Opensource software) είναι το λογισμικό του υπολογιστή που μπορεί να χαρακτηριστεί και ως ελεύθερο λογισμικό και λογισμικό ανοιχτού κώδικα. Δηλαδή, ο καθένας έχει ελεύθερη άδεια χρήσης, αντιγραφής, μελέτης, και αλλαγής του λογισμικού με οποιονδήποτε τρόπο, και ο πηγαίος κώδικας είναι ελεύθερα προσβάσιμος. Αυτό έρχεται σε αντίθεση με το ιδιόκτητο λογισμικό (proprietary/ closedsource software), όπου το λογισμικό είναι υπό περιοριστικούς όρους πνευματικών δικαιωμάτων και ο πηγαίος κώδικας συνήθως κρύβεται από τους χρήστες. Ο όρος ελεύθερο (free) αναφέρεται στην ελευθερία του λογισμικού και όχι σε λογισμικό που απλώς διατίθεται δωρεάν (freeware), καθώς το ελεύθερο λογισμικό/λογισμικό ανοικτού κώδικα μπορεί να έχει τιμή πώλησης, ενώ αντίθετα υπάρχουν πολλά πακέτα δωρεάν λογισμικού των οποίων ο πηγαίος κώδικας είναι μη προσβάσιμος (κλειστός) σε άτομα εκτός της εταιρείας παραγωγής. Έτσι, το ελεύθερο λογισμικό είναι ζήτημα ελευθερίας του χρήστη και της κοινότητας, όχι κόστους. Το εύρος των πεδίων εφαρμογής των έργων ΕΛ/ΛΑΚ είναι αντίστοιχο με αυτό των προγραμμάτων κλειστού κώδικα και καλύπτουν σχεδόν όλες τις ανάγκες ακόμα και των πιο απαιτητικών χρηστών (επαγγελματιών και ιδιωτών). Κάποια γνωστά έργα ΕΛ/ΛΑΚ είναι τα λειτουργικά συστήματα Linux, Android και FreeBSD και τα λογισμικά εφαρμογών Mozilla Firefox, OpenOffice/ LibreOffice, VLC και WordPress. 13

14 1.2.2 Ελεύθερο ή ανοικτό λογισμικό? Αν και οι περισσότεροι άνθρωποι διατυπώνουν τους όρους "ελεύθερο" και "ανοικτό" λογισμικό αναφερόμενοι στο ίδιο πράγμα, υπάρχει μια ιδεολογική διαφορά ανάμεσα σε αυτά τα δύο. Σύμφωνα με τον Richard Stallman, δημιουργό του Ιδρύματος Ελεύθερου Λογισμικού (Free Software Foundation) και του GNU project, δεν είναι κάθε λογισμικό ελεύθερο μόνο και μόνο επειδή είναι ανοιχτού κώδικα. Αυτό διότι ο όρος "λογισμικό ανοιχτού κώδικα" και η σχετική καμπάνια προώθησης του εστιάζει κυρίως στα τεχνικά θέματα της ανάπτυξης του λογισμικού, αποφεύγοντας τα θέματα της ελευθερίας των χρηστών. Σύμφωνα με το FSF, οι ελευθερίες που δίνει μια άδεια χρήσης λογισμικού είναι οι εξής: Η ελευθερία να τρέξεις το πρόγραμμα, για οποιονδήποτε σκοπό (freedom 0). Η ελευθερία να διαβάσεις ή να τροποποιήσεις τον πηγαίο κώδικα του προγράμματος (και κατά συνέπεια και το ίδιο το πρόγραμμα) για ιδιωτική χρήση (freedom 1). Η ελευθερία του να αντιγράψεις το αρχικό πρόγραμμα και να το δώσεις σε κάποιον τρίτο (freedom 2). Η ελευθερία του να μπορείς να δημοσιοποιείς τροποποιημένες και βελτιωμένες εκδόσεις του προγράμματος σε τρίτα άτομα (freedom 3). Οι περισσότερες άδειες (EULA - End-User License Agreement) των προγραμμάτων κλειστού κώδικα δίνουν μόνο το επίπεδο ελευθερίας freedom 0 και απαγορεύουν ρητά ως ποινικό αδίκημα κατά πνευματικής ιδιοκτησίας τις υπόλοιπες. Θεωρητικά, οποιοδήποτε πρόγραμμα δίνει και το επίπεδο ελευθερίας freedom 1, θεωρείται ότι εμπίπτει στην κατηγορία του λογισμικού ανοικτού κώδικα, άσχετα με το εάν επιτρέπει τα επίπεδα ελευθερίας freedom 2 και freedom 3. Τα προγράμματα τα οποία δίνουν και τα τέσσερα επίπεδα ελευθερίας χρήσης ανήκουν στο ελεύθερο λογισμικό (free ή libre software). Στην πράξη τώρα, η πλειονότητα των προγραμμάτων ανοικτού κώδικα είναι και ελεύθερα, δηλαδή επιτρέπουν (υπό κάποιους όρους) στον χρήστη να τροποποιήσει 14

15 τον πηγαίο κώδικα του προγράμματος και να τον δώσει σε τρίτα άτομα. Είναι λίγα τα προγράμματα που παρέχουν μεν τον πηγαίο τους κώδικα, απαγορεύουν δε τη δημοσίευσή του (αυτούσιου ή τροποποιημένου) σε τρίτους. Για τον λόγο αυτό, χωρίς να είναι σωστό, για πολλούς οι όροι "ελεύθερο" και "ανοικτό" λογισμικό είναι σχεδόν συνώνυμοι Σύντομη ιστορική αναδρομή Στις δεκαετίες του 1950, του 1960, και του 1970, ήταν φυσιολογικό για τους χρήστες των υπολογιστών να έχουν ελευθερίες πάνω στο λογισμικό αντίστοιχες με αυτό που σήμερα ονομάζουμε ελεύθερο λογισμικό. Το λογισμικό μοιράζονταν ευρέως από τα άτομα που χρησιμοποιούσαν τους υπολογιστές και από τους κατασκευαστές του τεχνικού εξοπλισμού. Για την διευκόλυνση της ανταλλαγής του λογισμικού σχηματίστηκαν οργανώσεις από χρήστες και προμηθευτές (π.χ. η SHARE, Society to Help Avoid Redundant Effort). Στα τέλη όμως της δεκαετίας του 1960, η εικόνα άλλαξε. Τα κόστη του λογισμικού ανέβαιναν δραματικά, και μια αναπτυσσόμενη βιομηχανία λογισμικού ανταγωνίζονταν με τους κατασκευαστές του εξοπλισμού (hardware) που προσέφεραν δωρεάν συσκευασμένα προϊόντα λογισμικού (δωρεάν από την άποψη ότι το κόστος περιλαμβάνονταν στο κόστος του εξοπλισμού). Επίσης, τεχνικός εξοπλισμός που είχε αγοραστεί από ιδιώτες ή επιχειρήσεις απαιτούσε επιπλέον υποστήριξη λογισμικού, και μερικοί πελάτες που είχαν την δυνατότητα να ανταποκριθούν στις ιδιαίτερες ανάγκες του δεν ήθελαν τα κόστη του ελεύθερου λογισμικού να έρχονται ως ενιαία δέσμη με το κόστος των προϊόντων εξοπλισμού υπολογιστών. Στην δικαστική απόφαση για την υπόθεση Ομοσπονδιακό Κράτος των Η.Π.Α. εναντίον της εταιρίας IBM, που αρχειοθετήθηκε στις 17 Ιανουαρίου, 1969, αποφασίστηκε ότι το "λογισμικό σε πακέτο" ήταν εναντίον του ανταγωνισμού. Κι ενώ κάποια λογισμικά θα μπορούσαν πάντα να είναι ελεύθερα, παράλληλα δινόταν η δυνατότητα να παραχθεί ένα διαρκώς 15

16 αυξανόμενο σε ποσότητα λογισμικό που ήταν μόνον προς πώληση. Στις δεκαετίας του 1970 και στις αρχές του 1980, η βιομηχανία λογισμικού άρχισε να χρησιμοποιεί τεχνικά μέτρα (όπως την διανομή μόνον δυαδικών αντιγράφων από τα προγράμματα υπολογιστών) για να αποτρέψουν τους χρήστες από την μελέτη και τροποποίηση του λογισμικού. Το 1980 η νομοθεσία για την πνευματική ιδιοκτησία επεκτάθηκε και στα προγράμματα υπολογιστών. Το 1983, ο Richard Stallman, για πολλά χρόνια μέλος της κοινότητας των χάκερ στο Εργαστήριο Τεχνητής Νοημοσύνης του MIT, ανακοίνωσε το GNU Project, λέγοντας ότι είχε απογοητευθεί με τα αποτελέσματα που είχε η αλλαγή της κουλτούρας της βιομηχανίας των υπολογιστών και των χρηστών της. Η ανάπτυξη του λογισμικού για το GNU άρχισε τον Ιανουάριο του 1984, και τον Οκτώβριο του 1985 ιδρύθηκε το Ίδρυμα Ελεύθερου Λογισμικού (FSF) Άδειες του ελεύθερου λογισμικού Σύμφωνα με τη νομοθεσία περί πνευματικής ιδιοκτησίας, η ελεύθερη αντιγραφή,διανομή και τροποποίηση ενός λογισμικού δεν επιτρέπεται. Για τον λόγο αυτό, οι εκδόσεις του ελεύθερου λογισμικού κάνουν χρήση ειδικών αδειών (free software license), σύμφωνα με τις οποίες παραχωρούνται τα δικαιώματα αντιγραφής, τροποποίησης και αναδιανομής του λογισμικού στους χρήστες. Οι κυριότερες άδειες του ΕΛ/ΛΑΚ είναι οι εξής: GNU General Public License (GPL) Γράφτηκε αρχικά από τον Richard Stallman για το GNU project. Επιτρέπει την ανάγνωση, τροποποίηση και αναδιανομή του λογισμικού, μαζί με τον πηγαίο κώδικα του, με τον όρο ότι τροποποιημένες ή μη εκδόσεις του θα αναδιανείμονται υπό την ίδια άδεια. Εν ολίγοις, διασφαλίζει ότι οι χρήστες του 16

17 τροποποιημένου λογισμικού θα απολαμβάνουν τις ίδιες ελευθερίες με το χρήστη του αρχικού λογισμικού. Συνεπώς απαγορεύει την χρήση (ολόκληρου ή τμήματος) του πηγαίου κώδικα του προγράμματος σε κλειστά πακέτα λογισμικού. Αυτό εξασφαλίζεται δίνοντας το copyright του προγράμματος στον αρχικό δημιουργό, οπότε σε περίπτωση που κάποιος δε σεβαστεί την GPL μπορεί να μηνυθεί για καταπάτηση πνευματικών δικαιωμάτων. Η GNU GPL έχει κατηγορηθεί από πολλούς ως "ιός" (επειδή θα πρέπει κάθε πρόγραμμα που έχει σχέση με το αρχικό να τη φέρει) και ότι στερεί τη δημιουργία άμεσου κέρδους στον προγραμματιστή. Παρά τις κριτικές αποτελεί τη σημαντικότερη και πιο διαδεδομένη άδεια ελεύθερου λογισμικού. Σημαντικά προγράμματα που τη χρησιμοποιούν είναι ο πυρήνας του Linux, ο μεταγλωττιστής gcc, ο επεξεργαστής κειμένου Emacs, ο διερμηνέας της Perl, ο Mozilla Firefox, η ΜySQL, το Cygwin, το σύστημα αρχείων ReiserFS και πλέον και η βιβλιοθήκη Qt. Μια πιο ελαστική έκδοση της GPL είναι η GNU Lesser General Public License (LGPL). Το 2005 άρχισαν συζητήσεις για την τρίτη έκδοση της άδειας, η οποία δίνει ιδιαίτερη έμφαση σε θέματα πατεντών λογισμικού και DRM. Η GNU GPLv3 εκδόθηκε στις 27 Ιουνίου GNU GPL, v3.0: GNU LGPL, v3.0: BSD License Η άδεια αυτή αναπτύχθηκε αρχικά στο πανεπιστήμιο Berkeley στην Καλιφόρνια των ΗΠΑ. Είναι μια από τις πιο ελεύθερες άδειες, εφόσον επιτρέπει την ανάγνωση, την τροποποίηση και την αναδημοσίευση του προγράμματος υπό οποιαδήποτε άδεια, με ή χωρίς τον πηγαίο κώδικα, σε εμπορικά ή μη εμπορικά πακέτα. Επιπλέον, υπάρχουν τροποποιήσεις της άδειας, που αφορούν όμως μόνο το θέμα της χρήσης του ονόματος του αρχικού συγγραφέα για διαφημιστικούς σκοπούς. Ως αποτέλεσμα της ελευθερίας που δίδει η άδεια για χρήση κώδικα ελεύθερων 17

18 προγραμμάτων σε προγράμματα κλειστού κώδικα, πολλά κλειστά λειτουργικά συστήματα έχουν κομμάτια βασισμένα στο BSD. BSD License: Apache License Δημιουργήθηκε από το Apache Foundation και είναι η άδεια υπό την οποία διανέμεται ο εξυπηρετητής HTTP Apache. Είναι μια πολύ αναλυτικά διατυπωμένη άδεια, που ενώ επιτρέπει την αναδιανομή και τροποποίηση του λογισμικού, απαιτεί αυτή να γίνεται υπό την ίδια άδεια, να δείχνονται αναλυτικά ποια αρχεία του πηγαίου κώδικα πείραξε ο χρήστης και απαγορεύει τη χρήση υλικού που σχετίζεται με πατέντες λογισμικού καθώς και τη χρήση ονομάτων και συμβόλων του αρχικού συγγραφέα για διαφημιστικούς σκοπούς. Τέλος, απαλλάσσει το δημιουργό από κάθε ευθύνη σχετική με τη χρήση του προγράμματος. Apache Licenses: Artistic License Την συνέταξε ο συγγραφέας της Perl, Larry Wall. Η πρώτη της έκδοση ήταν τόσο περίπλοκα διατυπωμένη που πολλοί την κατηγόρησαν ότι δεν είναι άδεια ελεύθερου λογισμικού. Η γλώσσα προγραμματισμού Perl αλλά και πολλά modules της ήταν συνδεδεμένα με αυτήν. Η δεύτερη έκδοση είναι πιο σαφώς διατυπωμένη, και δίνει το δικαίωμα ανάγνωσης, τροποποίησης και αναδιανομής του πηγαίου κώδικα/προγράμματος (υπό οποιαδήποτε άδεια), εφόσον διατηρείται η αναφορά στον αρχικό συγγραφέα του προγράμματος, σε περίπτωση που δεν υπάρξει τροποποίηση. Επιπλέον, απαλλάσσει το συγγραφέα από κάθε ευθύνη σχετική με τη χρήση του προγράμματος. 18

19 Αρχική Artistic License: Artistic License, 2nd Edition: MIT License Η άδεια αυτή επιτρέπει την τροποποίηση και την αναδιανομή του προγράμματος με οποιονδήποτε τρόπο, υπό οποιαδήποτε άδεια, για οποιονδήποτε σκοπό. Το πιο γνωστό πρόγραμμα που τη χρησιμοποιεί είναι ο X Window System (X11) που χρησιμοποιείται για το παραθυρικό περιβάλλον στις περισσότερες διανομές Linux, και γι' αυτό η άδεια αυτή ονομάζεται πολλές φορές και X License ή X11 License. MIT License Template: Open Software License Ουσιαστικά δίνει τις ίδιες ελευθερίες και τους ίδιους περιορισμούς με την GNU GPL με σημαντική διαφορά τον όρο που αφορά τις πατέντες λογισμικού. Ο όρος αυτός τερματίζει αυτόματα την άδεια και στερεί τον χρήστη από τις ελευθερίες της στην περίπτωση που ο χρήστης μηνύσει οποιοδήποτε λογισμικό που τη χρησιμοποιεί για καταπάτηση πατεντών λογισμικού. Open Software Licence: 19

20 1.2.5 Κοινότητες και αποθετήρια κώδικα έργων ΕΛ/ΛΑΚ Στις κοινότητες και τα αποθετήρια κώδικα (code repositories) συμμετέχουν ερευνητικές ομάδες και άτομα που αναπτύσσουν ή συμμετέχουν στην ανάπτυξη πηγαίου κώδικα. Ένα αποθετήριο πηγαίου κώδικα είναι μια αποθήκη αρχείων και εγκατάσταση web hosting, όπου διατηρούνται μεγάλες ποσότητες πηγαίου κώδικα, είτε δημόσια είτε ιδιωτικά. Χρησιμοποιούνται συχνά από developers έργων ανοικτού κώδικα και άλλα έργα πολλαπλών developer με σκοπό τη διευκόλυνση του χειρισμού των διάφορων εκδόσεων των έργων. Βοηθάει τους προγραμματιστές να υποβάλουν προσθήκες ή αλλαγές του κώδικα με οργανωμένο τρόπο. Συχνά, αυτές οι ιστοσελίδες υποστηρίζουν έλεγχο και διαχείριση των εκδόσεων, παρακολούθηση σφαλμάτων, λίστες ηλεκτρονικού ταχυδρομείου, και τεκμηρίωση βασισμένη σε wiki. Οι χρήστες μπορούν να συνεργάζονται και να επικοινωνούν για την παραγωγή, βελτίωση και διόρθωση του κωδικά καθώς και για την εύρεση και διόρθωση σφαλμάτων, ενώ στους ιστοτόπους αυτούς αποθηκεύονται καθημερινά μεγάλες ποσότητες κώδικα. Μερικές από τις πιο σημαντικές κοινότητες και hosting sites έργων ΕΛ/ΛΑΚ είναι οι εξής: GitHub Το GitHub είναι ένα web-based hosting service για έργα ανάπτυξης λογισμικού που χρησιμοποιούν το Git revision control system. To GitHub προσφέρει και πληρωμένα σχέδια για ιδιωτική αποθήκευση, καθώς και δωρεάν λογαριασμούς για έργα ανοικτού κώδικα. Το 2014, το GitHub αναφέρει ότι έχει πάνω από 3,4 εκατομμύρια χρήστες και 16,7 εκατομμύρια αποθετήρια, καθιστώντας το το μεγαλύτερο code host στον κόσμο. Η ιστοσελίδα παρέχει λειτουργίες κοινωνικής δικτύωσης, όπως feeds, followers και network graph για να δειχτεί πως οι προγραμματιστές εργάζονται 20

21 στις δικές τους εκδόσεις ενός αποθηκευτικού χώρου. SourceForge Πρόκειται για ένα web-based αποθετήριο πηγαίου κώδικα. Λειτουργεί ως μια κεντρική τοποθεσία για την ανάπτυξη του λογισμικού, αλλά και για τον έλεγχο και την διαχείριση έργων του ελεύθερου λογισμικού και λογισμικού ανοικτού κώδικα. Ήταν το πρώτο το οποίο παρείχε την υπηρεσία αυτή δωρεάν σε έργα ανοικτού κώδικα. Από μετρήσεις που έγιναν τον Μάρτιο του 2014 διαπιστώθηκε ότι φιλοξενεί περισσότερα από έργα, ενώ έχει παραπάνω από 2 εκατομμύρια εγγεγραμμένους χρήστες. Apache software Foundation (ASF) Παλαιότερα γνωστή ως Ομάδα Apache, το ASF ιδρύθηκε το Η ιστορία του ASF συνδέεται με τον εξυπηρετητή HTTP Apache, που άρχισε να αναπτύσσεται το Το ASF παρέχει οργανωτική, νομική και οικονομική υποστήριξη για ένα ευρύ φάσμα των έργων ελεύθερου λογισμικού. Το Ίδρυμα παρέχει ένα καθιερωμένο πλαίσιο για την πνευματική ιδιοκτησία. Μέσα από μια συλλογική και αξιοκρατική διαδικασία ανάπτυξης, τα έργα της Apache είναι ελεύθερα διαθέσιμα προϊόντα λογισμικού που προσελκύουν μεγάλες κοινότητες χρηστών. Η άδεια Apache καθιστά εύκολο σε όλους τους χρήστες, επιχειρηματίες και ιδιώτες, να αναπτύξουν Apache προϊόντα. Το λογισμικό που παράγουν διανέμεται υπό τους όρους της άδειας χρήσης Apache και ως εκ τούτου είναι ελεύθερο και ανοικτού κώδικα λογισμικό (ΕΛ/ΛΑΚ). 21

22 Bitbucket Πρόκειται για μια υπηρεσία η οποία φιλοξενεί έργα που χρησιμοποιούν είτε το σύστημα ελέγχου αναθεώρησης Mercurial είτε το Git. Προσφέρει τόσο εμπορικά σχέδια όσο και ελεύθερους λογαριασμούς στους χρήστες, με απεριόριστο αριθμό από ιδιωτικές αποθήκες. Το Σεπτέμβριο του 2008, εξαγοράστηκε από την VCfunded Atlassian και τον Οκτώβριο του 2011 ανακοίνωσε επίσημα την υποστήριξη για φιλοξενία και έργων του Git. Assembla Το Assembla είναι μια εταιρεία που παρέχει cloud-based εργαλεία για την οργάνωση και τη διαχείριση ανοικτού κώδικα και την εμπορική ανάπτυξη λογισμικού. Το Assembla χρησιμοποιείται σήμερα από περισσότερους από χρήστες σε 100 χώρες. Tigris Το tigris.org είναι μια κοινότητα ανάπτυξης λογισμικού ανοιχτού κώδικα. Φιλοξενεί υπηρεσίες ανάπτυξης λογισμικού όπως web hosting, mailing lists, issue tracking, wiki, download and revision control. Φιλοξενείται από το CollabNet και τρέχει την CollabNet Enterprise Edition. Το tigris.org ανταγωνίζεται με το πιο γνωστό SourceForge, αν και επικεντρώνεται κυρίως σε έργα συνεργατικής ανάπτυξης λογισμικού. 22

23 JavaForge Πρόκειται για μία μη κερδοσκοπική κοινότητα ανάπτυξης ελεύθερου λογισμικού ανοικτού κώδικα με μια πύλη φιλοξενίας για έργα ανοικτού κώδικα. Φιλοξενεί υπηρεσίες ανάπτυξης λογισμικού, όπως web hosting έργων, διαχείριση εγγράφων, wiki, forum, online chat, παρακολούθηση έκδοσης ενσωματωμένη προαιρετικά με Git, Mercurial ή Subversion revision control. LaunchPad Το Launchpad είναι μια web εφαρμογή και ιστοσελίδα που επιτρέπει στους χρήστες να αναπτύξουν και να διατηρήσουν το λογισμικό, κυρίως το λογισμικό ανοιχτού κώδικα. Το Launchpad αναπτύσσεται και συντηρείται από την Canonical Ltd Πλεονεκτήματα του ΕΛ/ΛΑΚ Τα οφέλη από τη χρήση ΕΛ/ΛΑΚ περιλαμβάνουν μείωση του κόστους λογισμικού, αύξηση της ασφάλειας και της σταθερότητας (ειδικά όσο αφορά το κακόβουλο λογισμικό), προστασία της ιδιωτικής ζωής, και δυνατότητα για καλύτερο έλεγχο από τους χρήστες πάνω στο δικό τους υλικό. Δωρεάν, λειτουργικά συστήματα ανοιχτού κώδικα, όπως το Linux και οι απόγονοι του BSD χρησιμοποιούνται ευρέως σήμερα, και χειρίζονται από εκατομμύρια servers, επιτραπέζιους υπολογιστές, smartphones (πχ Android), και άλλες συσκευές. Οι άδειες του ελεύθερου λογισμικού και άδειες ανοικτού κώδικα χρησιμοποιούνται από πολλά πακέτα λογισμικού. 23

24 Αρκετοί είναι εκείνοι οι φορείς, ιδιωτικοί ή δημόσιοι, αλλά και οργανισμοί οι οποίοι προχωρούν στην υιοθέτηση και στην χρήση ΕΛ/ΛΑΚ, καθώς τα σχετικά πλεονεκτήματα που προκύπτουν υπερτερούν από το κόστος της αλλαγής. Η αλήθεια βέβαια είναι ότι χρειάστηκαν αρκετά χρόνια προκειμένου να εγκαταλειφθούν οι προκαταλήψεις που αφορούσαν το ΕΛ/ΛΑΚ, έτσι ώστε σήμερα να θεωρείται ισότιμο, αν όχι προνομιακό, με το εμπορικό λογισμικό του κλειστού κώδικα. Έχουν υπάρξει πολλές αναφορές σχετικά με τις τεράστιες εξοικονομήσεις από το ΕΛ/ΛΑΚ, με τις πιο αξιοσημείωτες να είναι από μεγάλες εταιρείες που έχουν μεταναστεύσει τα εσωτερικά τους συστήματα σε GNU / Linux, όπως η Intel και η Amazon. Εκτός όμως από το χαμηλό κόστος του ΕΛΛΑΚ, υπάρχουν πολλοί άλλοι λόγοι για τους οποίους δημόσιες και ιδιωτικές οργανώσεις υιοθετούν δυναμικά το ΕΛ/ΛΑΚ. Αυτοί περιλαμβάνουν: Ασφάλεια Αξιοπιστία / Σταθερότητα Διαμόρφωση και προσαρμογή Δικαιώματα πνευματικής ιδιοκτησίας και πειρατεία Ανοικτά πρότυπα και ανεξαρτησία του πωλητή Μειωμένη εξάρτηση από εισαγωγές Τοπική προσαρμογή λογισμικού (εντοπιοποίηση) Ανάπτυξη βάσεων τοπικού λογισμικού Ασφάλεια Αν και δεν υπάρχει απολύτως ασφαλές λειτουργικό σύστημα ή πλατφόρμα, παράγοντες όπως ο τρόπος ανάπτυξης, την αρχιτεκτονική του προγράμματος και η αγορά-στόχος μπορεί να επηρεάσει σημαντικά την ασφάλεια του συστήματος και, κατά συνέπεια, καταστήσει πιο εύκολη ή πιο δύσκολη η παραβίαση. Τρεις είναι οι λόγοι που αναφέρονται συχνά και χαρακτηρίζουν την ασφάλεια του ΕΛ/ΛΑΚ: 24

25 1. Η διαθεσιμότητα του πηγαίου κώδικα των συστημάτων ΕΛΛΑΚ καθιστά ευκολότερη την ανακάλυψη και επιδιόρθωση τυχών ελαττωμάτων και τρωτών σημείων από τους προγραμματιστές και τους χρήστες. 2. Επικεντρώνεται περισσότερο στην ευρωστία και τη λειτουργικότητα, παρά την ευκολία χρήσης, και νέα χαρακτηριστικά προστίθενται μόνο αν είναι σίγουρο πως δεν θα θέσουν σε κίνδυνο την ασφάλεια του συστήματος. 3. Τα συστήματα ΕΛ/ΛΑΚ ως επί το πλείστον βασίζονται στο multi-user, network-ready μοντέλο Unix. Εξαιτίας αυτού, χαρακτηρίζονται από ισχυρή δομή ασφάλειας και δικαιωμάτων. Αξιοπιστία / Σταθερότητα Τα συστήματα ΕΛΛΑΚ είναι γνωστά για τη σταθερότητα και την αξιοπιστία τους, ενώ δεν είναι τυχαίο το ότι οι περισσότεροι εξυπηρετητές διακομιστές χρησιμοποιούν ΕΛ/ΛΑΚ, οι οποίοι από τη φύση τους εκτελούν κρίσιμες διεργασίες. Διαμόρφωση και προσαρμογή Η διαμόρφωση και η προσαρμογή ανάλογα με τις ανάγκες του χρήστη τείνουν να ευκολότερες με τη χρήση ΕΛ/ΛΑΚ. Ακόμα και εάν ο χρήστης δεν έχει τα προσόντα για να προσαρμόσει ένα πρόγραμμα στις τις ανάγκες του, δεν χρειάζεται να ζητήσει άδεια για να αναθέσει σε κάποιον άλλο να το κάνει, εφόσον τηρηθούν οι αρχές που διέπουν το λογισμικό. Δικαιώματα πνευματικής ιδιοκτησίας και πειρατεία Η πειρατεία λογισμικού είναι ένα πρόβλημα που αντιμετωπίζει σχεδόν κάθε χώρα στον κόσμο. Ακόμη και στις ανεπτυγμένες χώρες, όπου το λογισμικό είναι προσιτό θεωρητικά, τα ποσοστά πειρατείας είναι αρκετά υψηλά. Η πειρατεία λογισμικού και οι 25

26 χαλαροί νόμοι εναντίον της μπορεί και να βλάψει μια χώρα με πολλούς τρόπους. Μια χώρα με κακή προστασία των δικαιωμάτων πνευματικής ιδιοκτησίας δεν είναι τόσο ελκυστική για τους ξένους επενδυτές. Επιπλέον η κουλτούρα της πειρατείας λογισμικού μπορεί να βλάψει την τοπική ανάπτυξη λογισμικού, καθώς υπάρχει λιγότερο κίνητρο από τους δημιουργούς λογισμικού για τη δημιουργία ενός τοπικού προϊόντος. Ανοικτά πρότυπα και ανεξαρτησία του πωλητή Τα ανοικτά πρότυπα δίνουν στους χρήστες, είτε πρόκειται για ιδιώτες ή για κυβερνήσεις, την ευελιξία και την ελευθερία να αλλάξουν μεταξύ των διαφορετικών πακέτων λογισμικού, πλατφορμών και πωλητών. Ένα σημαντικό επιχείρημα κατά της εφαρμογής του ιδιόκτητου λογισμικού στο δημόσιο τομέα είναι η μεταγενέστερη εξάρτηση από τις προμηθευτές ιδιοκτησιακού λογισμικού. Ένα άλλο πλεονέκτημα του ΕΛ/ΛΑΚ είναι ότι σχεδόν πάντα χρησιμοποιούν ανοικτά πρότυπα. Αυτό οφείλεται σε δύο βασικούς λόγους, τη διαθεσιμότητα του πηγαίου κώδικα και την ενεργή συμμόρφωση με τα πρότυπα. Μειωμένη εξάρτηση από εισαγωγές Ένα σημαντικό κίνητρο για τις αναπτυσσόμενες χώρες να υιοθετήσουν συστήματα ΕΛ/ΛΑΚ είναι το τεράστιο κόστος των ιδιόκτητων αδειών χρήσης λογισμικού. Επειδή σχεδόν όλο το ιδιόκτητο λογισμικό στις αναπτυσσόμενες χώρες είναι εισαγόμενο, η αγορά τους καταναλώνει πολύτιμο συνάλλαγμα και πράξεις νομισματικής. Τα αποθεματικά αυτά θα μπορούσαν να δαπανηθούν καλύτερα σε άλλους αναπτυξιακούς στόχους. Τοπική προσαρμογή λογισμικού (εντοπιοποίηση) Αυτό περιλαμβάνει τη προσαρμογή ενός προϊόντος λογισμικού 26

27 ώστε να γίνει γλωσσικά και πολιτισμικά κατάλληλο για την χώρα, περιοχή και γλώσσα όπου θα χρησιμοποιηθεί και θα πωληθεί. Η τοπική προσαρμογή λογισμικού είναι ένας από τους τομείς όπου το ΕΛ/ΛΑΚ ξεχωρίζει, λόγω του ανοικτού χαρακτήρα της. Οι χρήστες είναι σε θέση να τροποποιήσουν το λογισμικό ώστε να ανταποκρίνεται στις ιδιαίτερες απαιτήσεις μιας συγκεκριμένης πολιτιστικής περιοχής, ανεξαρτήτως οικονομικού μεγέθους. Ανάπτυξη βάσεων τοπικού λογισμικού Έχει παρατηρηθεί ότι υπάρχει θετική συσχέτιση μεταξύ της ανάπτυξης μιας βάσης δημιουργών έργων ΕΛ/ΛΑΚ και των καινοτόμων ικανοτήτων μιας οικονομίας. Ένας λόγος γι' αυτό είναι οι χαμηλοί φραγμοί στην απόκτηση, όπου το ΕΛ/ΛΑΚ ενθαρρύνοντας την ελεύθερη τροποποίηση και αναδιανομή το καθιστά εύκολο να αποκτηθεί και να χρησιμοποιηθεί. Επιπλέον, το ΕΛ/ΛΑΚ είναι ένα εξαιρετικό σύστημα εκπαίδευσης με την ανοικτή και συνεργατική φύση του, να επιτρέπει σε ένα μαθητή να εξετάσει και να πειραματιστεί με τις έννοιες του λογισμικού με σχεδόν κανένα άμεσο κόστος για την κοινωνία. Τέλος το ΕΛ/ΛΑΚ είναι πηγή προτύπων και με το να συμμετέχει ενεργά στον καθορισμό των προτύπων σε μια συγκεκριμένη εφαρμογή ΕΛ/ΛΑΚ, μια περιοχή μπορεί να διασφαλίσει ότι το πρότυπο που παράγεται λαμβάνει υπόψη τις περιφερειακές ανάγκες και πολιτιστικές πτυχές της. Παρ' όλα τα οφέλη του ΕΛ/ΛΑΚ, υπάρχουν περιοχές όπου χρειάζεται βελτίωση. Έλλειψη επιχειρηματικών εφαρμογών: Ενώ υπάρχουν πολλά έργα ΕΛ/ΛΑΚ, εξακολουθούν να υπάρχουν πολλές περιοχές που δεν διαθέτουν ένα πλήρως εξοπλισμένο προϊόν, ιδιαίτερα στον επιχειρηματικό κόσμο. 27

28 Η έλλειψη υποστήριξης και τεκμηρίωσης: Δυστυχώς, τα περισσότερα λογισμικά ΕΛ/ΛΑΚ παρέχονται χωρίς υποστήριξη. Επίσης, πολλά έργα ΕΛ/ΛΑΚ, στερούνται την εκτεταμένη τεκμηρίωση και ευχρηστία που υπάρχουν σε εμπορικά λογισμικά, και αυτό κυρίως διότι ο πρωταρχικός στόχος των δημιουργών ΕΛ/ΛΑΚ ήταν η λειτουργικότητα. Διαλειτουργικότητα με ιδιόκτητα συστήματα: Τα συστήματα ΕΛ/ΛΑΚ, ειδικά στον επιτραπέζιο υπολογιστή, δεν είναι απόλυτα συμβατά με τα ιδιόκτητα συστήματα. Για τις οργανώσεις που έχουν ήδη επενδύσει τεράστια ποσά κεφαλαίων σε ιδιόκτητες εφαρμογές και μορφές αποθήκευσης δεδομένων, η προσπάθεια για τη ενσωμάτωση λύσεων ΕΛ/ΛΑΚ μπορεί να αποδειχθεί απαγορευτικά ακριβή. Με τον καιρό, καθώς οι οργανώσεις κάνουν στροφή προς τα ανοικτά πρότυπα, το πρόβλημα αυτό θα μειωθεί. 1.3 Η Εταιρία Ελεύθερου Λογισμικού / Λογισμικού Ανοικτού Κώδικα (ΕΕΛ/ΛΑΚ) Τι είναι η ΕΕΛ/ΛΑΚ Η μη-κερδοσκοπική Εταιρεία ΕΛ/ΛΑΚ ιδρύθηκε το 2008 και σήμερα αποτελείται από 29 Πανεπιστήμια, Ερευνητικά Κέντρα και κοινωφελείς φορείς. Η ΕΕΛ/ΛΑΚ έχει ως κύριο στόχο να συμβάλλει στην ανοιχτότητα και ειδικότερα στην προώθηση και ανάπτυξη των ανοικτών προτύπων, του ελεύθερου λογισμικού, του ανοιχτού περιεχομένου, των ανοιχτών δεδομένων και των τεχνολογιών ανοιχτής αρχιτεκτονικής στο χώρο της εκπαίδευσης, του δημόσιου τομέα και των επιχειρήσεων στην Ελλάδα, ενώ παράλληλα φιλοδοξεί να αποτελέσει κέντρο γνώσης και πλατφόρμα διαλόγου για τις ανοιχτές τεχνολογίες. Ανάμεσα στους φορείς που 28

29 συμμετέχουν στην ΕΕΛ/ΛΑΚ είναι τα πιο πολλά ελληνικά Πανεπιστήμια και Ερευνητικά Κέντρα, ενώ για την υλοποίηση των δράσεων της η ΕΕΛ/ΛΑΚ βασίζεται στην συνεργασία και ενεργή συμμετοχή των μελών της και της ελληνικής κοινότητας χρηστών και δημιουργών ελεύθερου λογισμικού, ανοιχτού περιεχομένου και τεχνολογιών ανοιχτής αρχιτεκτονικής. Η ΕΕΛ/ΛΑΚ εκπροσωπεί τα Creative Commons [5] και είναι ιδρυτικό μέλος του COMMUNIA [6], είναι ο ελληνικό κόμβος για το Open Data Institute [7] και είναι μέλος του Open Budget Initiative [8]. Εννέα μέλη της ΕΕΛ/ΛΑΚ συμμετέχουν στο έργο του ΕΔΕΤ, Μονάδες Αριστείας Ανοιχτού Λογισμικού που έχει ως αντικείμενο τη διοργάνωση και υλοποίηση δράσεων κατάρτισης για την ανάπτυξη εφαρμογών ανοιχτού λογισμικού σε δέκα θεματικές περιοχές. Οι συνεργάτες της ΕΕΛ/ΛΑΚ έχουν διεπιστημονική εμπειρία στο σχεδιασμό και ανάπτυξη δράσεων διαφάνειας και διαβούλευσης. Οι δράσεις αυτές περιλαμβάνουν έργα ηλεκτρονικής διαβούλευσης, συμμετοχικής διαμόρφωσης αποφάσεων και ανοιχτής καινοτομίας. Για τον καλύτερο συντονισμό των δράσεων των επιστημονικών συνεργατών της ΕΕΛ/ΛΑΚ έχουν δημιουργηθεί ομάδες εργασίας, με περισσότερα από 200 μέλη, ενώ η κάθε ομάδα διαμορφώνει το πρόγραμμα δράσης της συνεργατικά μέσα από Wiki Βασικοί στόχοι της ΕΕΛ/ΛΑΚ Η ΕΕΛ/ΛΑΚ μέσα από τις πρωτοβουλίες που αναλαμβάνει στοχεύει: Να συμβάλλει στην ευαισθητοποίηση του κοινού σχετικά με τα οφέλη που προκύπτουν από την χρήση και ανάπτυξη του ελεύθερου λογισμικού, του ανοιχτού περιεχομένου και των τεχνολογιών ανοιχτής αρχιτεκτονικής. Να φροντίσει για την έγκυρη και έγκαιρη πληροφόρηση σε θέματα που αφορούν τις ανοιχτές τεχνολογίες στην Ελλάδα και το διεθνή χώρο. 29

30 Να εργαστεί ώστε να υπάρχει συνεργασία με την ισότιμη συμμετοχή όλων των άλλων φορέων που έχουν άμεσο ή έμμεσο ρόλο στη διάδοση και ανάπτυξη του του ελεύθερου λογισμικού, του ανοιχτού περιεχομένου και των τεχνολογιών ανοιχτής αρχιτεκτονικής στην Ελλάδα, όπως μεταξύ άλλων της κοινότητας προγραμματιστών ΕΛ/ΛΑΚ στην Ελλάδα καθώς και όσων ενδιαφέρονται να αναπτύξουν επιχειρηματική δραστηριότητα που σχετίζεται με το ΕΛ/ΛΑΚ. Να δημιουργήσει κέντρα προώθησης για τις ανοιχτές τεχνολογίες στην Ελλάδα με στόχους την διοργάνωση εκπαιδευτικών σεμιναρίων, την καταγραφή αναγκών για την εισαγωγή και χρήση του ΕΛ/ΛΑΚ σε διαφορετικούς τομείς καθώς και την καταγραφή των φορέων και των οργανώσεων που ασχολούνται με το ΕΛ/ΛΑΚ στην Ελλάδα). Να συμβάλει στο συντονισμό των ομάδων εθελοντών προγραμματιστών ΕΛ/ΛΑΚ στην Ελλάδα, ώστε να αποτελέσουν τον βασικό κορμό για την ανάπτυξη και υλοποίηση λογισμικού και εφαρμογών. Να υποστηρίξει την ανάπτυξη και προώθηση επιχειρηματικών μοντέλων που βασίζονται στο ΕΛ/ΛΑΚ, καθώς και την ενημέρωση επιχειρήσεων για την υιοθέτηση τους ή για τη μετάβαση τους σε αυτά. Να προσφέρει τεχνική υποστήριξη εφαρμογών ΕΛ/ΛΑΚ και συγκεκριμένα: δημιουργία υπηρεσίας υποστήριξης (help-desk) για χρήστες και ομάδες ΕΛ/ΛΑΚ, μέριμνα για εξελληνισμό (εντοπιοποίηση) λογισμικού, ανάπτυξη γλωσσαρίου, καθώς και να συμβάλει στην ανάπτυξη εφαρμογών για τις οποίες υπάρχει ζήτηση στην Ελλάδα. Να συμβάλει στο σχεδιασμό, ανάπτυξη και προώθηση δράσεων ανοιχτού περιεχομένου και τεχνολογιών ανοιχτής αρχιτεκτονικής. 30

31 Να συμμετέχει στο σχεδιασμό και υλοποίηση αναπτυξιακών και ερευνητικών έργων σε συνεργασία με τα μέλη της. Η υλοποίηση των παραπάνω στόχων βασίζεται στην ενεργή συνεργασία : - της ελληνικής κοινότητας χρηστών και δημιουργών (developers) εφαρμογών ΕΛ/ΛΑΚ, - των ενδιαφερόμενων φορέων-χρηστών (δημόσιοι φορείς, εκπαιδευτικοί φορείς και επιχειρήσεις), - των εταιρειών που δραστηριοποιούνται στους τομείς των τεχνολογιών πληροφορικής και επικοινωνιών που θα συμβάλλουν στην ανάπτυξη και υποστήριξη υπηρεσιών ΕΛ/ΛΑΚ. - των εργαστηρίων ΑΕΙ, ΑΤΕΙ και Ερευνητικών Κέντρων της Χώρας που χρησιμοποιούν και αναπτύσσουν ελεύθερο λογισμικό, ανοιχτό περιεχόμενο και τεχνολογίες ανοιχτής αρχιτεκτονικής. 1.4 Η γλώσσα προγραμματισμού Java Περιγραφή Η Java είναι μια γενικού σκοπού γλώσσα προγραμματισμού ηλεκτρονικών υπολογιστών που είναι παράλληλη, αντικειμενοστραφής, βασίζεται στις κλάσεις και είναι ειδικά σχεδιασμένη για να έχει όσο το δυνατόν λιγότερες εξαρτήσεις από την υλοποίηση. Ένας από τους βασικούς στόχους της είναι να επιτρέπει τους προγραμματιστές εφαρμογών να "γράφουν μία φορά και να τρέχει οπουδήποτε" (write once, run anywhere), που σημαίνει ότι ο μεταγλωττισμένος κώδικας Java μπορεί να τρέξει σε όλες τις 31

32 πλατφόρμες που υποστηρίζουν Java, χωρίς την ανάγκη για επαναμεταγλώττιση. Οι εφαρμογές Java συνήθως μεταγλωττίζονται σε bytecode που μπορεί να τρέξει σε οποιοδήποτε Java Virtual Machine (JVM) ανεξάρτητα από την αρχιτεκτονική του υπολογιστή. Το 2015, η Java είναι μία από τις πιο δημοφιλείς γλώσσες προγραμματισμού σε χρήση, ιδιαίτερα για τις εφαρμογές web clientserver, με χρήση, σύμφωνα με αναφορές, από 9 εκατομμύρια προγραμματιστές. Η Java αναπτύχθηκε αρχικά από τον James Gosling στη Sun Microsystems (η οποία έχει συγχωνευθεί από τότε στο Oracle Corporation) και κυκλοφόρησε το 1995 ως πυρήνας της πλατφόρμας Java της Sun Microsystems. Η γλώσσα αντλεί μεγάλο μέρος της σύνταξης της από τις γλώσσες C και C++, αλλά έχει λιγότερες λειτουργίες χαμηλού επιπέδου από αυτές. Οι μεταγλωττιστές, οι εικονικές μηχανές, και οι βιβλιοθήκες κλάσεων της Java κυκλοφόρησαν αρχικά από τη Sun κάτω από ιδιόκτητες άδειες. Από τον Μάιο του 2007, σύμφωνα με τις προδιαγραφές της Java Community Process, η Sun επανέκδοσε τις περισσότερες από τις τεχνολογίες της υπό την άδεια GNU General Public License Βασικά χαρακτηριστικά Υπήρχαν πέντε πρωταρχικοί στόχοι για τη δημιουργία της γλώσσας Java: 1. Θα πρέπει να είναι απλή, αντικειμενοστραφής και οικεία" 2. Θα πρέπει να είναι "ισχυρή και ασφαλής 3. Θα πρέπει να είναι "ανεξάρτητη αρχιτεκτονικής και φορητή" 4. Θα πρέπει να εκτελείται με "υψηλές επιδόσεις" 5. Θα πρέπει να είναι ερμηνευόμενη, δυναμική και να υποστηρίζει πολλά νήματα" 32

33 1. Απλή, αντικειμενοστραφής και οικεία Τα πρωταρχικά χαρακτηριστικά της γλώσσας προγραμματισμού Java περιλαμβάνουν μια απλή γλώσσα που μπορεί να προγραμματιστεί χωρίς εκτεταμένη κατάρτιση του προγραμματιστή ενώ ανταποκρίνεται στις τρέχουσες πρακτικές του λογισμικού. Επιπλέον, η τεχνολογία της Java παρέχει μια καθαρή και αποδοτική πλατφόρμα ανάπτυξης βασισμένη στο αντικείμενο καθώς έχει σχεδιαστεί εξ' αρχής για να είναι αντικειμενοστραφής. Τέλος διατηρώντας τις ομοιότητες της γλώσσας προγραμματισμού Java με C++, όσο αυτό είναι δυνατόν, την καθιστά μια οικεία γλώσσα, αφαιρώντας παράλληλα την περιττή πολυπλοκότητα της C++, και έτσι οι προγραμματιστές μπορούν να μεταναστεύσουν εύκολα στην πλατφόρμα Java και να είναι παραγωγικοί γρήγορα. 2. Ισχυρή και ασφαλής Η γλώσσα προγραμματισμού Java έχει σχεδιαστεί με στόχο τη δημιουργία εξαιρετικά αξιόπιστου λογισμικού. Παρέχει εκτενή έλεγχο χρόνου μεταγλώττισης, που ακολουθείται από ένα δεύτερο επίπεδο του ελέγχου χρόνου εκτέλεσης. Το μοντέλο διαχείρισης της μνήμης είναι εξαιρετικά απλό: ο προγραμματιστής δεν ορίζει σαφείς τύπους δεδομένων δεικτών, δεν υπάρχει αριθμητική δεικτών, ενώ γίνεται αυτόματη συλλογή των απορριμμάτων (garbage collector). Η τεχνολογία Java έχει σχεδιαστεί για να λειτουργεί σε κατανεμημένα περιβάλλοντα, πράγμα που σημαίνει ότι η ασφάλεια είναι υψίστης σημασίας. 3. Ανεξάρτητη αρχιτεκτονικής και φορητή Η τεχνολογία Java έχει σχεδιαστεί για την υποστήριξη εφαρμογών που θα αναπτυχθούν σε ετερογενή περιβάλλοντα δικτύου. Σε τέτοια περιβάλλοντα, οι εφαρμογές πρέπει είναι σε θέση να εκτελούνται σε μια πληθώρα αρχιτεκτονικών υλικού (hardware architecture). Επιπλέον, μέσα σε αυτές τις πλατφόρμες hardware, οι εφαρμογές 33

34 θα πρέπει να εκτελούνται επάνω σε μια ποικιλία λειτουργικών συστημάτων και σε συνεργασία με πολλαπλές διεπαφές γλωσσών προγραμματισμού. Η ανεξαρτησία αρχιτεκτονικής είναι μόνο ένα μέρος ενός πραγματικά φορητού συστήματος. Τα προγράμματά Java είναι τα ίδια σε κάθε πλατφόρμα - δεν υπάρχουν ασυμβατότητες τύπων δεδομένων ανάμεσα στις διάφορες αρχιτεκτονικές υλικού και λογισμικού. Για όλα αυτά είναι υπεύθυνη η εικονική μηχανή της Java (Java Virtual Machine JVM). Είναι η προδιαγραφή μιας αφηρημένης μηχανής για την οποία οι μεταγλωττιστές της γλώσσας προγραμματισμού Java μπορούν να παράγουν κώδικα, και παρέχονται ειδικές υλοποιήσεις της JVM για τις διάφορες πλατφόρμες υλικού και λογισμικού. 4. Υψηλές επιδόσεις Η πλατφόρμα Java επιτυγχάνει υψηλή απόδοση με την υιοθέτηση ενός συστήματος με το οποίο ο διερμηνέας μπορεί να λειτουργεί σε πλήρη ταχύτητα, χωρίς να χρειάζεται να ελέγχει το περιβάλλον χρόνου εκτέλεσης (run-time environment). Εφαρμογές που απαιτούν μεγάλες ποσότητες υπολογιστικής ισχύος μπορεί να σχεδιαστούν έτσι ώστε τα τμήματα υπολογιστικής έντασης μπορούν να επανεγγραφούν σε εγγενή κώδικα μηχανής όπως απαιτείται, και να διασυνδεθούν με την πλατφόρμα Java. 5. Ερμηνευόμενη, δυναμική και υποστηρίζει πολλά νήματα Ο διερμηνέας της Java μπορεί να εκτελέσει Java bytecodes άμεσα σε κάθε μηχάνημα στο οποίο έχουν μεταφερθεί ο διερμηνέας και το σύστημα χρόνου εκτέλεσης. Σε μια διερμηνευόμενη πλατφόρμα, όπως ένα σύστημα που βασίζεται στην τεχνολογία Java, η φάση σύνδεσης του προγράμματος είναι απλή, σταδιακή, και ελαφριά. Τα οφέλη από αυτό είναι η ταχεία ανάπτυξη, προτυποποίηση και πειραματισμός, σε σχέση με τις παραδοσιακές, βαρύτερες διαδικασίες κύκλου μεταγλώττισης, σύνδεσης και δοκιμής. Επίσης, η ικανότητα multithreading της τεχνολογίας Java παρέχει τα μέσα για να δημιουργηθούν εφαρμογές με πολλά ταυτόχρονα νήματα 34

35 δραστηριότητας με αποτέλεσμα το multithreading να οδηγεί σε έναν υψηλό βαθμό διαδραστικότητας για τον τελικό χρήστη. Αυτό πραγματοποιείται με την προσθήκη εξελιγμένων αρχών συγχρονισμού: το σύστημα χρόνου εκτέλεσης αναλαμβάνει την παρακολούθηση και την κατάσταση κλειδώματος, οι υψηλού επιπέδου βιβλιοθήκες του συστήματος έχουν γραφτεί για να είναι ασφαλείς για τα νήματα (thread-safe) και η λειτουργικότητα που παρέχεται από τις βιβλιοθήκες είναι διαθέσιμη χωρίς σύγκρουση σε πολλαπλά ταυτόχρονα εκτελούμενα νήματα. Τέλος, ενώ ο μεταγλωττιστής της Java είναι αυστηρός στον στατικό έλεγχο χρόνου μεταγλώττισης, η γλώσσα και το σύστημα χρόνου εκτέλεσης είναι δυναμικά στα στάδια σύνδεσης. Οι κλάσεις συνδέονται μόνο, όπως απαιτείται. Νέα τμήματα κώδικα μπορούν να συνδεθούν κατά απαίτηση από μια ποικιλία πηγών, ακόμη και από πηγές μέσω ενός δικτύου. 35

36 2. Επαναχρησιμοποίηση Λογισμικού (Software Reuse) 2.1 Τι είναι η επαναχρησιμοποίηση λογισμικού Ορισμός Η επαναχρησιμοποίηση λογισμικού, που συχνά αναφέρεται και ως επαναχρησιμοποίηση κώδικα, είναι η διαδικασία σύμφωνα με την οποία, κατά την ανάπτυξη και τη συντήρηση λογισμικού, εκμεταλλευόμαστε τις ομοιότητες που παρουσιάζουν οι διάφορες εφαρμογές χρησιμοποιώντας ξανά ορισμένα στοιχεία από προηγούμενες εργασίες ανάπτυξης. Για παράδειγμα, χρησιμοποιούμε το ίδιο λειτουργικό σύστημα ή το ίδιο σύστημα διαχείρισης βάσεων δεδομένων στα διαδοχικά έργα ανάπτυξης λογισμικού και δεν δημιουργούμε κάθε φορά καινούρια. Παρόμοια, όταν πρέπει να αναπτύξουμε ένα σύστημα λογισμικού που είναι παρόμοιο (αλλά όχι πανομοιότυπο) με κάποιο άλλο που είχαμε αναπτύξει στο παρελθόν, χρησιμοποιούμε ξανά ομάδες προδιαγραφών, τμήματα σχεδίασης και ομάδες σεναρίων δοκιμών και δοκιμαστικών δεδομένων. Η επαναχρησιμοποίηση λογισμικού αποτελεί μία κοινή πρακτική για την ανάπτυξη λογισμικού ανοικτού κώδικα, ώστε αυτό να οργανώνεται σε συστατικά (software components), τα οποία βρίσκονται κατά βάση σε αποθετήρια. Η επαναχρησιμοποίηση δεν είναι καινούρια ανακάλυψη και υπάρχουν πολλά ενδιαφέροντα παραδείγματα του τρόπου με τον οποίο χρησιμοποιούμε ξανά πολλά στοιχεία, και όχι μόνο κώδικα. Τα τελευταία χρόνια, πολλοί ερευνητές έχουν εργαστεί για να κάνουν την επαναχρησιμοποίηση κώδικα γρηγορότερη, ευκολότερη και πιο συστηματική, ώστε να αποτελεί αναπόσπαστο μέρος της διαδικασίας του προγραμματισμού. Αυτό, μαζί με την αλματώδη ανάπτυξη του ΕΛ/ΛΑΚ οδήγησε την επαναχρησιμοποίηση έτοιμων 36

37 τμημάτων λογισμικού να κερδίζει ολοένα και περισσότερο έδαφος. Αυτό συμβαίνει κυρίως λόγω του χαμηλού κόστους παραγωγής και συντήρησης, και της υψηλής ποιότητας και αξιοπιστίας, αφού τα επαναχρησιμοποιούμενα τμήματα είναι κατά βάση δοκιμασμένα, ελεγμένα και περιέχουν λιγότερα λάθη ή ανωμαλίες από τα νέα τμήματα λογισμικού. Διαδικασία επαναχρησιμοποίησης Τύποι επαναχρησιμοποίησης Υπάρχουν δύο είδη επαναχρησιμοποίησης που καθορίζονται από την πλευρά αυτού που κάνει την επαναχρησιμοποίηση: Η επαναχρησιμοποίηση δημιουργού (producer reuse), που δημιουργεί επαναχρησιμοποιήσιμα συστατικά. Η επαναχρησιμοποίηση καταναλωτή (consumer reuse), που χρησιμοποιεί τα συστατικά σε επόμενα συστήματα. Οι καταναλωτές μπορούν να χρησιμοποιήσουν το σύνολο ενός προϊόντος, χωρίς τροποποιήσεις, που καλείται επαναχρησιμοποίηση μαύρου κουτιού (black box reuse), ή να 37

38 το τροποποιήσει ώστε να ταιριάζει με τις ιδιαίτερες ανάγκες του, που καλείται επαναχρησιμοποίηση διαφανούς ή λευκού κουτιού (clear/white box reuse). Στην επαναχρησιμοποίηση μαύρου κουτιού σημαντική είναι η επαλήθευση για το αν το επαναχρησιμοποιούμενο συστατικό εκτελεί τις απαιτούμενες λειτουργίες με αποδεκτό τρόπο. Όσο αφορά την επαναχρησιμοποίηση διαφανούς κουτιού, η προσπάθεια κατανόησης και τροποποίησης ενός συστατικού θα πρέπει να είναι μικρότερη από την προσπάθεια κατασκευής ενός ισοδύναμου συστατικού. Διακρίνουμε δύο είδη με βάση την προσέγγιση της επαναχρησιμοποίησης: Η συνθετική επαναχρησιμοποίηση (compositional reuse), η οποία βλέπει τα διαθέσιμα επαναχρησιμοποιήσιμα συστατικά ως ένα σύνολο δομικών στοιχείων, και η κατασκευή του υπόλοιπου συστήματος γίνεται γύρω από αυτά. Η γεννητική επαναχρησιμοποίηση (generative reuse), στην οποία τα συστατικά σχεδιάζονται με ειδικό τρόπο ώστε να αντιμετωπίσουν τις ανάγκες κάποιας ιδιαίτερης εφαρμογής και να επαναχρησιμοποιηθούν σε παρόμοια εφαρμογή που θα προκύψει κάποια άλλη στιγμή. Όσον αφορά τα κίνητρα και τους παράγοντες που την οδηγούν, η επαναχρησιμοποίηση μπορεί να είναι: Ευκαιριακή (opportunistic reuse). Ενώ ετοιμάζονται να ξεκινήσουν ένα έργο, οι developers αντιλαμβάνονται ότι υπάρχουν συστατικά που μπορούν να επαναχρησιμοποιηθούν. Προγραμματισμένη (planned reuse). Οι developers σχεδιάζουν συστατικά με στρατηγικό τρόπο, έτσι ώστε να είναι επαναχρησιμοποιήσιμα σε μελλοντικά έργα. Η επαναχρησιμοποίηση μπορεί να κατηγοριοποιηθεί περαιτέρω σε: 38

39 Εσωτερική επαναχρησιμοποίηση (internal reuse). Μια ομάδα προγραμματιστών επαναχρησιμοποιεί τα δικά της στοιχεία. Αυτό μπορεί να είναι μια επιχειρηματική απόφαση, δεδομένου ότι οι προγραμματιστές μπορεί να θέλουν να ελέγξουν ένα συστατικό κρίσιμο για το έργο. Εξωτερική επαναχρησιμοποίηση (external reuse). Η ομάδα των developers μπορεί να επιλέξει να χρησιμοποιήσει, με την κατάλληλη άδεια, συστατικά λογισμικού που έχουν αναπτυχθεί από τρίτους. Φυσικά, θα πρέπει να εξεταστεί ο χρόνος που χρειάζεται για να βρεθεί το κατάλληλο συστατικό, να κατανοηθεί και να ενσωματωθεί στο δικό τους έργο Πλεονεκτήματα Η μέθοδος επαναχρησιμοποίησης συνήθως οδηγεί στη βελτίωση της ποιότητας των προϊόντων. Με την επαναχρησιμοποίηση των προϊόντων που έχουν ήδη ελεγχθεί, διανεμηθεί και χρησιμοποιηθεί, αποφεύγεται η επανάληψη σφαλμάτων. Οι developers έχουν τη δυνατότητα να εκμεταλλευτούν τις προσπάθειες άλλων μηχανικών λογισμικού, και να χρησιμοποιήσουν τα ιστορικά σφαλμάτων και αλλαγών ενός συστατικού σχεδίου ή κώδικα ώστε να εξασφαλίσουν την καλή λειτουργία του στο νέο περιβάλλον χρήσης. Τα κυριότερα πλεονεκτήματα της επαναχρησιμοποίησης λογισμικού είναι: Αύξηση της αξιοπιστίας του προϊόντος Τα επαναχρησιμοποιήσιμα τμήματα είναι πιο αξιόπιστα από τα νέα καθώς έχουν ελεγχθεί στην πράξη σε άλλα συστήματα, κάτω από ρεαλιστικές συνθήκες χρήσης. Αύξηση αποδοτικότητας Ο συνολικός χρόνος δημιουργίας του λογισμικού μειώνεται λόγω της μείωσης του χρόνου σχεδιασμού και της εγγραφής του κώδικα. 39

40 Ο κώδικας είναι ελεγμένος για σφάλματα Η πιθανότητα εμφάνισης σφάλματος είναι αρκετά πιο μικρή, συνεπώς δεν χρειάζεται να ξοδευτεί χρόνος για τη διόρθωση τμημάτων του λογισμικού. Μείωση κόστους Η επαναχρησιμοποίηση λογισμικού και η χρήση των συστατικών μειώνουν το κόστος και οδηγούν σε μικρότερη ανάγκη οικονομικών πόρων για την ανάπτυξη και συντήρηση πληροφοριακών συστημάτων. Το συνολικό ρίσκο της διαδικασίας μειώνεται Το κόστος ενός επαναχρησιμοποιήσιμου τμήματος λογισμικού μπορεί να εκτιμηθεί με μεγαλύτερη ακρίβεια από την αρχή, έτσι μειώνεται η αβεβαιότητα της συνολικής εκτίμησης κόστους. Ανάπτυξη πολύπλοκων πληροφοριακών συστημάτων Με την επαναχρησιμοποίηση υπαρχόντων συστατικών γίνεται ευκολότερος ο έλεγχος της ανάπτυξης πολύπλοκων πληροφοριακών συστημάτων. Αποτελεσματική αξιοποίηση των ειδικών Ο ειδικός παράγει τμήματα κυρίως στο πεδίο εξειδίκευσής του και δεν απαιτείται παράλληλα συμμετοχή του σε όλη την εφαρμογή. Παρ' όλα αυτά, η επαναχρησιμοποίηση δεν είναι πάντα εύκολη υπόθεση, καθώς υπάρχουν φραγμοί που δυσχεραίνουν την διαδικασία αυτή: Μερικές φορές, η δημιουργία ενός συστατικού είναι ταχύτερη από την αναζήτησή του σε μία βιβλιοθήκη επαναχρησιμοποιήσιμων στοιχείων. Η επαναχρησιμοποίηση πρέπει να στηρίζεται σε τεχνικές κατηγοριοποίησης και 40

41 ανάκτησης τμημάτων από βιβλιοθήκες οι οποίες τεχνικές δεν είναι αρκετά εξελιγμένες. Μερικές φορές, το κόστος της επαναχρησιμοποίησης μπορεί να είναι μεγαλύτερο από το κόστος υλοποίησης των τμημάτων από την αρχή. Οι τεχνολόγοι λογισμικού πολλές φορές δεν εμπιστεύονται την ποιότητα κώδικα αναπτυγμένου από άλλους και επιπλέον, η κατανόηση και επαναχρησιμοποίηση ενός συστατικού μπορεί να αποδειχθεί χρονοβόρα και ακριβή. Υπάρχει μεγάλη πιθανότητα το συστατικό να μην είναι πλήρως τεκμηριωμένο και να μην υπάρχει πλήρης καταγραφή του ιστορικού ελέγχου και αναθεωρήσεων Παραδείγματα επαναχρησιμοποίησης - Βιβλιοθήκες λογισμικού (software libraries) Ένα πολύ κοινό παράδειγμα της επαναχρησιμοποίησης κώδικα είναι η τεχνική της χρήσης βιβλιοθηκών λογισμικού. Οι βιβλιοθήκες μαζί με υλοποιήσεις συγκεκριμένων αλγορίθμων και δομών είναι ο παλαιότερος και πλέον ώριμος τρόπος επαναχρησιμοποίησης κώδικα. Πολλές κοινές λειτουργίες, όπως η μετατροπή πληροφορίας μεταξύ των διαφόρων γνωστών μορφών, η πρόσβαση σε εξωτερικά μέσα αποθήκευσης, η διασύνδεση με εξωτερικά προγράμματα, ή ο χειρισμός της πληροφορίας (αριθμοί, λέξεις, ονόματα, τοποθεσίες, ημερομηνίες, κλπ), απαιτούνται από πολλά διαφορετικά προγράμματα. Οι συγγραφείς των νέων προγραμμάτων χρησιμοποιούν τον κώδικα σε μια βιβλιοθήκη λογισμικού για την εκτέλεση των καθηκόντων αυτών, αντί να συντάξουν ένα πλήρως νέο κώδικα απευθείας σε ένα πρόγραμμα για να εκτελέσουν μια λειτουργία. 41

42 - Πρότυπα σχεδίασης (design patterns) Ένα πρότυπο σχεδίασης είναι μια γενική λύση σε ένα επαναλαμβανόμενο πρόβλημα. Τα πρότυπα σχεδίασης μπορούν να τροποποιηθούν ώστε να ταιριάζουν ακριβώς σε μια συγκεκριμένη ανάγκη. Ωστόσο, αφηρημένες κλάσεις (abstract classes) και διεπαφές (interfaces) μπορούν να επαναχρησιμοποιηθούν για την υλοποίηση ορισμένων προτύπων. - Πλαίσια λογισμικού (software frameworks) Τα πλαίσια λογισμικού είναι σύνολα βιβλιοθηκών, εξαρτημάτων και εργαλείων τα οποία μπορούν να χρησιμοποιηθούν για τη δημιουργία μιας ολόκληρης εφαρμογής. Οι προγραμματιστές γενικά επαναχρησιμοποιούν μεγάλα κομμάτια λογισμικού μέσω εφαρμογών άλλων προγραμματιστών και πλαισίων. Τα πλαίσια ανήκουν συνήθως σε συγκεκριμένους τομείς και ισχύουν μόνο σε συγκεκριμένες οικογένειες εφαρμογών. - Συστηματική επαναχρησιμοποίηση λογισμικού Η συστηματική επαναχρησιμοποίηση λογισμικού είναι μια στρατηγική για την αύξηση της παραγωγικότητας και τη βελτίωση της ποιότητας στη βιομηχανία λογισμικού. Αν και είναι απλή στη σύλληψη, η επιτυχής εφαρμογή της επαναχρησιμοποίησης του λογισμικού είναι δύσκολη στην πράξη. Ένας λόγος για αυτό είναι η εξάρτηση της επαναχρησιμοποίησης του λογισμικού από το πλαίσιο στο οποίο εφαρμόζεται. 42

43 2.2 Συστατικά λογισμικού (software components) Τι είναι συστατικό λογισμικού Το συστατικό λογισμικού αποτελεί μια ανεξάρτητη μονάδα λογισμικού η οποία μπορεί να συνδυαστεί με άλλα συστατικά για τη δημιουργία ενός συστήματος λογισμικού. Ο Szyperski ορίζει τα συστατικά λογισμικού ως εξής: Το συστατικό στοιχείο λογισμικού είναι μια μονάδα σύνθεσης η οποία διαθέτει αποκλειστικά διασυνδέσεις καθορισμένες μέσω συμβάσεων και ρητές εξαρτήσεις περιβάλλοντος. Το συστατικό στοιχείο λογισμικού μπορεί να διανεμηθεί ανεξάρτητα και να συνδυαστεί με άλλα στοιχεία. Με πιο απλά λόγια ένα συστατικό περικλείει μία λειτουργία, η οποία αποτελεί μέρος ενός ευρύτερου συστήματος. Ένα μεμονωμένο συστατικό λογισμικού μπορεί να είναι ένα πακέτο λογισμικού (software package), μια διαδικτυακή υπηρεσία (web service), ένας πόρος στον Παγκόσμιο Ιστό (web resource), ή μια ενότητα (module) που ενσωματώνει ένα σύνολο σχετικών λειτουργιών (ή δεδομένα). Συνήθως, όλες οι διεργασίες ενός συστήματος τοποθετούνται σε ξεχωριστά συστατικά, έτσι ώστε όλα τα δεδομένα και οι λειτουργίες μέσα σε κάθε συστατικό να είναι σημασιολογικά συναφή (όπως ακριβώς και με το περιεχόμενο των κλάσεων). Για αυτόν τον λόγο λέγεται συχνά ότι τα συστατικά είναι αρθρωτά και συνεκτικά. Επικοινωνία συστατικών 43

44 Όσο αφορά ολόκληρο το σύστημα συντονισμού, τα συστατικά επικοινωνούν μεταξύ τους μέσω των διεπαφών. Όταν ένα συστατικό προσφέρει υπηρεσίες στο υπόλοιπο σύστημα, παρέχει τη διεπαφή που καθορίζει τις υπηρεσίες που μπορούν να χρησιμοποιήσουν τα άλλα συστατικά, και τον τρόπο με τον οποίο μπορούν να το κάνουν. Η διεπαφή μπορεί να θεωρηθεί ως υπογραφή του συστατικού - ο χρήστης των υπηρεσιών δεν χρειάζεται να γνωρίζει τις εσωτερικές λειτουργίες του συστατικού (υλοποίηση), προκειμένου να κάνει χρήση του Τεχνολογία λογισμικού βασισμένη στα συστατικά (Component-based software engineering) Η τεχνολογία λογισμικού βασισμένη στα συστατικά (componentbased software engineering - CBSE), επίσης γνωστή και ως ανάπτυξη βασισμένη στα συστατικά (component-based development - CBD) είναι ένας κλάδος της τεχνολογίας λογισμικού που δίνει έμφαση στο διαχωρισμό των προβλημάτων που αφορούν την ευρεία λειτουργικότητα που είναι διαθέσιμη σε ένα δεδομένο σύστημα λογισμικού. Πρόκειται για μια προσέγγιση που βασίζεται στην επαναχρησιμοποίηση και περιλαμβάνει τον καθορισμό, την υλοποίηση και τη σύνθεση χαλαρά συνδεδεμένων, ανεξάρτητων συστατικών με σκοπό τη δημιουργία ολόκληρων συστημάτων. Συστήματα που βασίζονται σε συστατικά 44

45 Η CBSE βασίζεται σε στιβαρές σχεδιαστικές αρχές που υποστηρίζουν την κατασκευή κατανοητού και συντηρήσιμου λογισμικού. Τα συστατικά στοιχεία είναι ανεξάρτητα και έτσι δεν παρεμβαίνει το ένα στη λειτουργία του άλλου. Οι λεπτομέρειες υλοποίησης είναι κρυμμένες, οπότε η υλοποίηση ενός συστατικού μπορεί να τροποποιηθεί χωρίς να επηρεαστεί το υπόλοιπο σύστημα. Η πρακτική αυτή έχει ως στόχο να αποφέρει οφέλη τόσο βραχυπρόθεσμα όσο και μακροπρόθεσμα για το ίδιο το λογισμικό αλλά και για τις οργανώσεις που υποστηρίζουν, προωθούν ή χρηματοδοτούν το εν λόγω λογισμικό. Η δημιουργία λογισμικού σύμφωνα με την CBSE αποτελείται από τα εξής βασικά στοιχεία: Ανεξάρτητα συστατικά που καθορίζονται πλήρως από τις διασυνδέσεις τους Πρότυπα συστατικών τα οποία διευκολύνουν το συνδυασμό και τη συνεργασία των συστατικών Ενδιάμεσο λογισμικό που παρέχει υποστήριξη λογισμικού γα την ενοποίηση των συστατικών στοιχείων Μια διαδικασία ανάπτυξης η οποία είναι προσανατολισμένη στην ανάπτυξη λογισμικού βάση συστατικών στοιχείων. 45

46 3. Το project OPEN-SME και το εργαλείο COPE 3.1 OPEN-SME Τι είναι το OPEN-SME Το project OPEN-SME (Open-Source Software Reuse Service for Small-Medium Enterprises) είναι μια πλατφόρμα που έχει στόχο την διάδοση πρακτικών επαναχρησιμοποίησης κώδικα ελεύθερου λογισμικού και λογισμικού ανοικτού κώδικα και την ενσωμάτωση τους στην παραγωγική διαδικασία ανάπτυξης λογισμικού Μικρομεσαίων Επιχειρήσεων (ΜμΕ). Αντικείμενο του έργου αποτελεί η έρευνα και ανάπτυξη μεθοδολογιών, εργαλείων και επιχειρηματικών μοντέλων, τα οποία θα διευκολύνουν τις μικρομεσαίες επιχειρήσεις να υιοθετούν ελεύθερο και ανοιχτό λογισμικό (ΕΛ/ΛΑΚ) στις διαδικασίες παραγωγής τους. Τα ουσιαστικά οφέλη της υιοθέτησης πρακτικών επαναχρησιμοποιήσιμου κώδικα είναι ότι προσφέρουν σημαντικά πλεονεκτήματα έναντι των μεγάλων παικτών, μέσα από τη βελτίωση της παραγωγικότητας, την αύξησης της ανταγωνιστικότητας (καθώς προσφέρουν ανταγωνιστικές πρακτικές), και τη διευκόλυνση της εισόδου σε νέες αγορές. Οι κύριοι λόγοι που αποτρέπουν την υιοθέτηση λύσεων επαναχρησιμοποίησης λογισμικού από τις ΜμΕ λογισμικού είναι οι εξής: Η αδυναμία των ΜμΕ να επενδύσουν σε τεχνογνωσία και εργαλεία αξιοποίησης ΕΛ/ΛΑΚ, κυρίως λόγω οικονομικής δυσκολίας Η αποτελεσματική συσσώρευση μονάδων (modules) απαιτεί πολλαπλά προϊόντα σε διαφορετικά πεδία εφαρμογής. Οι ΜμΕ 46

47 λογισμικού συνήθως αναπτύσσουν μόνο έναν περιορισμένο αριθμό των προϊόντων ή απλά ένα ενιαίο σύστημα που εξελίσσεται σε διαφορετικές εκδόσεις. Η αγορά αυτήν τη στιγμή δεν έχει τις υπηρεσίες που θα επιτρέψουν τον αποτελεσματικό εντοπισμό, την καταγραφή, αναδιαμόρφωση και αξιοποίηση των συστατικών λογισμικού ανοιχτού κώδικα. Αυτό αποτρέπει σημαντικά την επαναχρησιμοποίηση του κώδικα, όσον αφορά τη λειτουργία των εφαρμογών, η οποία είναι κοινή σε ένα περιορισμένο σύνολο πεδίων. Το project OPEN-SME αποσκοπεί στην παροχή μίας βιώσιμης λύσης για τα προαναφερθέντα προβλήματα των ΜμΕ, με την ανάπτυξη κατάλληλων μεθοδολογιών και εργαλείων και τον καθορισμό κατάλληλων επιχειρηματικών μοντέλων που θα επιτρέψουν στις ενώσεις ΜμΕ να παρέχουν αποτελεσματικά τις υπηρεσίες επαναχρησιμοποίησης λογισμικού ανοικτού κώδικα στα μέλοι τους. Το έργο είχε διάρκεια 24 μηνών (από τον Ιούλιο του 2010 έως τον Ιούλιο του 2012) και εκπονήθηκε με τη συμμετοχή 11 φορέων από έξι διαφορετικές χώρες (Γερμανία, Ελλάδα, Κύπρος, Ολλανδία, Σερβία και Σουηδία). Την ευθύνη της διοίκησης και της διαχείρισης του έργου έχει η Ένωση Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Ελλάδος. Καθοριστική συμβολή στην ανάπτυξη του έργου είχε και το Αριστοτέλειο Πανεπιστήμιο της Θεσσαλονίκης και πιο συγκεκριμένα το εργαστήριο τεχνολογίας λογισμικού του τμήματος Πληροφορικής Εργαλεία του OPEN-SME OCEAN (Open Source Search Engine): Εργαλείο για την αναζήτηση μηχανών αναζήτησης κώδικα ΕΛ/ΛΑΚ. Η μηχανή 47

48 αναζήτησης OCEAN παρέχει ενιαία πρόσβαση στις υπάρχουσες μηχανές αναζήτησης ΕΛ/ΛΑΚ (Google Code Search, Koders, SourceForge κ.α.). Τα πλεονεκτήματα της χρήσης του OCEAN αντί για την απευθείας χρησιμοποίηση άλλων μηχανών αναζήτησης κώδικα ΕΛ/ΛΑΚ έχουν να κάνουν με τη δυνατότητα αναζήτησης σε περισσότερες μηχανές αναζήτησης ταυτόχρονα, την ικανότητα αποθήκευσης των αποτελεσμάτων σε μια βάση δεδομένων και την πρόσβαση στο OCEAN από άλλες εφαρμογές μέσω ενός application programming interface (API). COMPARE (Component Repository and Search Engine): Το COMPARE είναι ένα αποθετήριο συστατικών λογισμικού που επιτρέπει στους χρήστες επαναχρησιμοποίησης λογισμικού των ΜμΕ να αναζητήσουν και να ανακαλύψουν έργα λογισμικού, τεχνικά έγγραφα, σουίτες τεστ και μεταμοντέλα που σχετίζονται με το λογισμικό ανοιχτού κώδικα προσαρμοσμένο για την ποιότητα και την αξιοπιστία. Συστατικά που εξάγονται από το COPE ή και άλλα συστατικά, μπορούν να γίνουν upload σε ένα αποθετήριο συστατικών για να έχουν πρόσβαση σε αυτά οι προγραμματιστές. Μερικά από τα χαρακτηριστικά του COMPARE είναι ότι δεν υποστηρίζει απλά αποθήκευση, καταγραφή και αναζήτηση των συστατικών, αλλά κατασκευάζει επίσης ένα κοινωνικό περιβάλλον γύρω από τα συστατικά, παρέχοντας παράδειγμα μια σελίδα Wiki και ένα φόρουμ για κάθε συστατικό. COPE (Component Adaptation Environment): Το COPE είναι ένα εργαλείο που μπορεί να χρησιμοποιηθεί για την ανάλυση των συστημάτων λογισμικού. Μπορεί να προσφέρει μια επισκόπηση της πολυπλοκότητας του συστήματος με μετρικές σχεδιαστικής πολυπλοκότητας. Μπορεί επίσης να προτείνει συστάδες κλάσεων (clusters) κατάλληλες για εξαγωγή ως ανεξάρτητα συστατικά λογισμικού. Αυτές οι συστάδες μπορούν να εξεταστούν και να εξαχθούν ως Ant- 48

49 based projects τα οποία οι προγραμματιστές μπορούν να εισάγουν σε ένα IDE για περαιτέρω επεξεργασία. 3.2 COPE Τι είναι το εργαλείο COPE Το COPE (Component Adaptation Environment), όπως έχουμε ήδη αναφέρει, είναι ένα εργαλείο που αναπτύχθηκε στα πλαίσια του Ευρωπαϊκού ερευνητικού έργου OPEN-SME. Κύριος στόχος του COPE είναι να παρέχει μία αυτοματοποιημένη διαδικασία για τον εντοπισμό και την εξαγωγή συστατικών λογισμικού. Περιέχει μία σειρά από εργαλεία και επιλογές που ο χρήστης μπορεί να εφαρμόσει στο έργο ΕΛ/ΛΑΚ του οποίου τον κώδικα έχει σκοπό να επαναχρησιμοποιήσει. Το COPE είναι απόλυτα συμβατό με λειτουργικά σύστηματα που βασίζονται σε Linux και υποστηρίζει την γλώσσα UML (Unified Model Language). Προς το παρόν, υποστηρίζονται μόνο έργα λογισμικού που έχουν αναπτυχθεί σε γλώσσα προγραμματισμού Java, όμως λόγω της ουδετερότητας του μοντέλου του, είναι δυνατή η επέκταση του για την υποστήριξη διαφορετικών γλωσσών προγραμματισμού και τεχνολογιών Λειτουργίες και επίπεδα του COPE Τα βασικά επίπεδα λειτουργίας του COPE είναι τα εξής: Εισαγωγή του έργου προς επαναχρησιμοποίηση στο COPE Ανάλυση του έργου Σύσταση ομάδων κλάσεων Δημιουργία και εξαγωγή συστατικών Διαχείριση γνώσης Κάθε ΕΛ/ΛΑΚ έργο που έχει επιλεγεί για να αναλυθεί και να 49

50 επαναχρησιμοποιηθεί με το COPE, αποθηκεύεται με τη μορφή ενός "Reuse Project". Το reuse project αποτελεί μια εκτεταμένη εκδοχή του αρχικού έργου ΕΛ/ΛΑΚ και συνδυάζει την πληροφορία από τον πηγαίο κώδικα του έργου με αυτήν που προκύπτει από τη διαδικασία της στατικής ανάλυσης. Ο κύκλος ζωής ενός reuse project αποτελείται από τις ακόλουθες φάσεις: Φάση Ανάλυσης (Analysis phase): ο πηγαίος κώδικας του έργου ΕΛΛΑΚ αναλύεται και τα αποτελέσματα της ανάλυσης αυτής αποθηκεύονται στο αντίστοιχο reuse project. Το COPE υποστηρίζει προς το παρόν: 1. Στατική ανάλυση (Static analysis): Υπολογίζει διάφορες μετρικές και τις εξαρτήσεις μεταξύ των συστατικών αναλύοντας στατικά τον πηγαίο κώδικα (δηλαδή χωρίς την εκτέλεση του προγράμματος). 2. Δημιουργία ευρετηρίου πηγαίων αρχείων (Source file indexing): Δημιουργεί ένα ευρετήριο για τα πηγαία αρχεία κατάλληλο αναζήτηση ελεύθερου κειμένου. 3. Δημιουργία τεκμηρίωσης (Documentation generation): Δημιουργεί την τεκμηρίωση του πηγαίου κώδικα (Javadoc) με την προσθήκη διαγραμμάτων UML για κάθε κλάση και πακέτο (package). 4. Δυναμική ανάλυση (Dynamic analysis): Αναλύει το πρόγραμμα χρησιμοποιώντας δυναμική ανάλυση (δηλαδή εκτελώντας το πρόγραμμα). Ο μηχανικός επαναχρησιμοποίησης χρησιμοποιεί δυναμική ανάλυση μετά την εξαγωγή συστατικών για να κατανοήσει τη λειτουργία ενός συστατικού που εξάγεται, να προσδιοριστεί την κάλυψη της δυναμικής ανάλυσης, να επικυρώσει το συστατικό χρησιμοποιώντας model-based τεχνικές ελέγχου κλπ. 5. Ανάλυση ιστορικού (History analysis): Αποθηκεύει τις αλλαγές που σημειώθηκαν στην ιστορικό της ανάπτυξης ενός έργου στα αποθετήρια Subversion. 50

51 6. Ανάλυση προτύπων (Pattern analysis): Χρησιμοποιεί τεχνικές ανίχνευσης προτύπων (π.χ. εντοπισμός προτύπων σχεδιασμού Adapter ή Proxy) για να εντοπίσει τις κλάσεις που συμμετέχουν σε σχεδιαστικά πρότυπα. Σύσταση ομάδων κλάσεων (Cluster recommendation): Σε αυτή τη φάση, το COPE προτείνει αυτόματα συστάδες κλάσεων που θα μπορούσαν να είναι πιθανά επαναχρησιμοποιήσιμα συστατικά. Προς το παρόν, οι ακόλουθοι recommenders είναι διαθέσιμοι στο COPE: 1. Recommender εξαρτήσεων (Dependencies recommender): Εξάγει συστατικά που βασίζονται σε μία ανάλυση των εξαρτήσεων των κλάσεων σε ένα πρόγραμμα. 2. Recommender προτύπων (Pattern recommender): Εξάγει συστατικά που βασίζονται στην ανίχνευση προτύπων στο έργο. Δημιουργία συστατικών (Component making): Αυτό το σύνολο λειτουργιών επιτρέπει στο χρήστη να εξάγει συστατικά από το reuse project είτε χρησιμοποιώντας συστάδες κλάσεων που έχουν προταθεί κατά την προηγούμενη φάση από τον recommender ή επιλέγοντας μια μόνο κλάση που μαζί με τις εξαρτήσεις της θα σχηματίσουν μία συστάδα κλάσεων που θα αποτελέσει το τελικό επαναχρησιμοποιήσιμο συστατικό. Επί του παρόντος, τέσσερις διαφορετικοί κατασκευαστές συστατικών είναι διαθέσιμοι στο COPE: 1. Κατασκευαστής διεπαφής (Interface maker): Χρησιμοποιεί μια κλάση ως σημείο εκκίνησης και δημιουργεί ένα συστατικό που περιλαμβάνει όλες τις εξαρτήσεις της κλάσης (αναδρομικά). 2. Κατασκευαστής εξάρτησης (Dependency maker): Χρησιμοποιεί τις συστάδες που παράγονται από το recommender εξαρτήσεων για να δημιουργήσει συστατικά. 51

52 3. Κατασκευαστής προτύπου Adapter (Adapter pattern maker): Δημιουργεί συστατικά χρησιμοποιώντας ως σημείο εκκίνησης τις κλάσεις που υλοποιούν το πρότυπο σχεδιασμού Adapter. 4. Κατασκευαστής προτύπου Proxy (Proxy pattern maker): Δημιουργεί συστατικά χρησιμοποιώντας ως σημείο εκκίνησης τις κλάσεις που υλοποιούν το πρότυπο σχεδιασμού Proxy. Διαχείριση γνώσης (Knowledge management): Σε αυτήν τη φάση ο χρήστης παρέχει πληροφορίες για τα συστατικά που εξάγονται. Χρησιμοποιώντας τη λειτουργία "Semantic Application", ο χρήστης μπορεί να περιγράψει τη λειτουργικότητα του κάθε συστατικού και επιπλέον, μπορεί να ταξινομήσει το προκύπτον συστατικό σε ένα συγκεκριμένο εννοιολογικό πεδίο ή τομέα. Σημειώνεται πώς οι προαναφερθείσες φάσεις και επιλογές αποτελούν την πλήρη μορφή της λειτουργίας του COPE. Ωστόσο, κατά την χρήση του είναι δυνατόν να παραλειφθούν ορισμένες φάσεις ή λειτουργίες Παράδειγμα χρήσης Ακολουθεί ένα παράδειγμα χρήσης του COPE για την εξαγωγή ενός συστατικού με τη βοήθεια του dependency maker, έπειτα από στατική ανάλυση ενός έργου ΕΛ/ΛΑΚ. Τα βήματα είναι: 1. Δημιουργία νέου reuse project 2. Στατική ανάλυση του έργου 3. Αναζήτηση συστατικών στα αποτελέσματα 4. Εξαγωγή συστατικού 52

53 1. Δημιουργία νέου reuse project Για είναι σε θέση ένα έργο ΕΛ/ΛΑΚ να χρησιμεύσει ως reuse project για το COPE, θα πρέπει για είναι διαθέσιμες οι παρακάτω πληροφορίες: Το δυαδικό αρχείο (.jar) του έργου Τυχόν εξωτερικές βιβλιοθήκες (εξαρτήσεις, συνήθως σε μορφή.jar) Ο πηγαίος κώδικας του έργου Το URL του αποθετηρίου SVN του έργου (προαιρετικό) Αυτά συνήθως είναι διαθέσιμα μέσω των κοινοτήτων ή των αποθετηρίων από όπου πήραμε το έργο. Δημιουργία νέου reuse project 2. Στατική ανάλυση του έργου Εφαρμόζουμε στατική ανάλυση μέσω του περιβάλλοντος λειτουργίας του COPE. 53

54 Εκτέλεση στατικής ανάλυσης 3. Αναζήτηση συστατικών στα αποτελέσματα Μετά την ολοκλήρωση της στατικής ανάλυσης εμφανίζονται τα αποτελέσματα. Στο παράθυρο παρουσιάζονται όλες οι κλάσεις του έργου και από τις οποίες μπορούν να προκύψουν επαναχρησιμοποιήσιμα συστατικά με βάση τις εξαρτήσεις που εντοπίστηκαν. Δίπλα στο όνομα κάθε κλάσης, που πιθανώς υποδηλώνει και την λειτουργία του συστατικού, εμφανίζονται διάφορες μετρικές που προσφέρουν επιπλέον πληροφορία σχετικά με την κλάση αυτή όπως ο τύπος της κλάσης, ο αριθμός των κλάσεων της συστάδας που προκύπτει, έναν δείκτη επαναχρησιμοποίησης και άλλα. Αυτές οι πληροφορίες θα βοηθήσουν τον μηχανικό επαναχρησιμοποίησης να αποφασίσει ποια συστατικά είναι υποσχόμενα για εξαγωγή. 54

55 Το παράθυρο του COPE μετά την στατική ανάλυση 4. Εξαγωγή συστατικού Αφού ο μηχανικός επαναχρησιμοποίησης εντοπίσει κάποιο υποψήφιο συστατικό με βάση τα κριτήρια που επέλεξε, εξάγει και προαιρετικά μετονομάζει το συστατικό με τη βοήθεια του dependency maker. Συγκεκριμένα, επιλέγει την αρχική κλάση η οποία μαζί με τις εξαρτήσεις της θα αποτελέσουν το συστατικό και ενεργοποιεί την επιλογή extract components from here. Τέλος, μετά από ορισμένες επιλογές δημιουργείται και αποθηκεύεται ως ξεχωριστό συστατικό. 55

56 Το παράθυρο του dependency maker Τα εξαγόμενα συστατικά θα ανοιχθούν για περαιτέρω επεξεργασία με τη χρήση ενός IDE (π.χ. Eclipse ή NetBeans). Ο μηχανικός επαναχρησιμοποίησης θα χρησιμοποιήσει το IDE για να κατανοήσει το συστατικό, να δημιουργήσει περιπτώσεις ελέγχου ή σενάρια εκτέλεσης και να ανακαλύψει περαιτέρω εξαρτήσεις που απαιτούνται, οι οποίες δεν είναι ανιχνεύσιμες μέσω της στατικής ανάλυσης (π.χ. εξαρτήσεις δεδομένων). 56

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

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

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

Μπορούμε και χωρίς Πατέντες

Μπορούμε και χωρίς Πατέντες Μπορούμε και χωρίς Πατέντες Ι. Σταμέλος Αναπλ. Καθηγητής Α.Π.Θ. Μέλος Δ.Σ. Εταιρείας ΕΛΛΑΚ Με τη συνδρομή του Π. Τσιάβου, Νομικού, Μέλους Δ.Σ. ΕΛΛΑΚ Εταιρεία ΕΛΛΑΚ Εταιρεία μη κερδοσκοπικού χαρακτήρα,

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ

ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ ΕΡΩΤΗΣΗ 1: Σε ποιες μεγάλες κατηγορίες μπορούμε να χωρίσουμε το Λογισμικό. Μπορούμε να χωρίσουμε το Λογισμικό στις παρακάτω μεγάλες κατηγορίες: στο Λογισμικό Συστήματος (System Software),

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

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

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

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

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

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

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

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

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

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

www.ellak.gr ΠΑΡΟΥΣΙΑΣΗ ΕΕΛ/ΛΑΚ www.eellak.gr

www.ellak.gr ΠΑΡΟΥΣΙΑΣΗ ΕΕΛ/ΛΑΚ www.eellak.gr www.ellak.gr ΠΑΡΟΥΣΙΑΣΗ ΕΕΛ/ΛΑΚ www.eellak.gr Εταιρεία ΕΛ/ΛΑΚ Η ΕΕΛ/ΛΑΚ (www.eellak.gr) είναι μη κερδοσκοπική εταιρεία που ιδρύθηκε το 2008 Αποτελείται σήμερα από 29 μέλη (Πανεπιστήμια, Ερευνητικά Κέντρα

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

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «Εκμάθηση, δοκιμή και εφαρμογή των εργαλείων της πλατφόρμας OPEN-SME για επαναχρησιμοποίηση κώδικα»

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

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

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

ΜΟΝΑΔΕΣ ΑΡΙΣΤΕΙΑΣ ΑΝΟΙΧΤΟΥ ΛΟΓΙΣΜΙΚΟΥ ΜΟΝΑΔΕΣ ΑΡΙΣΤΕΙΑΣ ΑΝΟΙΧΤΟΥ ΛΟΓΙΣΜΙΚΟΥ Συστήματα γεωγραφικών πληροφοριών 1 ος Κύκλος Εκπαίδευσης 1 ο σεμινάριο 27 Μαΐου 2014 Ελεύθερο Λογισμικό ΕΛ/ΛΑΚ: Ελεύθερο Λογισμικό / Λογισμικό Ανοικτού Κώδικα (ΕΛ/ΛΑΚ)

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

Από την Διακίνηση της Πληροφορίας ως τα Creative Commons

Από την Διακίνηση της Πληροφορίας ως τα Creative Commons Εργαστήριο Ψηφιακών Βιβλιοθηκών και Ηλεκτρονικής Δημοσίευσης Τμήμα Αρχειονομίας Βιβλιοθηκονομίας Ιόνιο Πανεπιστήμιο Από την Διακίνηση της Πληροφορίας ως τα Creative Commons Σαράντος Καπιδάκης sarantos@ionio.gr

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

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

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

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

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

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

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

Ελεύθερο Λογισμικό. Ερευνητική Εργασία Τμήμα Α2-3 ου ΓΕΛ Κομοτηνής Ιανουάριος 2014

Ελεύθερο Λογισμικό. Ερευνητική Εργασία Τμήμα Α2-3 ου ΓΕΛ Κομοτηνής Ιανουάριος 2014 Ελεύθερο Λογισμικό Ερευνητική Εργασία Τμήμα Α2-3 ου ΓΕΛ Κομοτηνής Ιανουάριος 2014 1 Τι θα παρακολουθήσουμε Τι είναι το Λογισμικό Κατηγορίες Λογισμικού Ιστορική αναφορά Οικονομικά στοιχεία Πηγές εσόδων

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

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

ΜΟΝΑΔΕΣ ΑΡΙΣΤΕΙΑΣ ΑΝΟΙΧΤΟΥ ΛΟΓΙΣΜΙΚΟΥ ΜΟΝΑΔΕΣ ΑΡΙΣΤΕΙΑΣ ΑΝΟΙΧΤΟΥ ΛΟΓΙΣΜΙΚΟΥ Συστήματα γεωγραφικών πληροφοριών 2 η Σειρά Εκπαίδευσης 1 ο σεμινάριο 21 Οκτωβρίου 2014 Ελεύθερο Λογισμικό ΕΛ/ΛΑΚ: Ελεύθερο Λογισμικό / Λογισμικό Ανοικτού Κώδικα (ΕΛ/ΛΑΚ)

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

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

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

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

Βασικές Έννοιες Διαδικτύου, Wordpress και BuddyPress

Βασικές Έννοιες Διαδικτύου, Wordpress και BuddyPress ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Βασικές Έννοιες Διαδικτύου, Wordpress και BuddyPress Σταύρος Καουκάκης Χάρης Παπαγιαννάκης Ευτύχης Βαβουράκης 1 Περιεχόμενα Γενικές Έννοιες Διαδικτύου Η αρχιτεκτονική του Web Συστήματα

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

Στρατηγική Επιλογή Capital B.O.S. Capital B.O.S.

Στρατηγική Επιλογή Capital B.O.S. Capital B.O.S. Στρατηγική Επιλογή Το ταχύτατα μεταβαλλόμενο περιβάλλον στο οποίο δραστηριοποιούνται οι επιχειρήσεις σήμερα, καθιστά επιτακτική -όσο ποτέ άλλοτε- την ανάπτυξη ολοκληρωμένων λύσεων που θα διασφαλίζουν,

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

Σταύρος Καουκάκης Ευτύχιος Βαβουράκης

Σταύρος Καουκάκης Ευτύχιος Βαβουράκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Βασικές Έννοιες Διαδικτύου Wordpress & Κοινωνικά Δίκτυα (Part 1) Σταύρος Καουκάκης Ευτύχιος Βαβουράκης 1 Περιεχόμενα Γενικές Έννοιες Διαδικτύου Η αρχιτεκτονική του Web Συστήματα Διαχείρισης

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

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

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ 2.3.1.1. Παπαγιάννη Νάσια Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών ΕΜΠ 1 περιλαμβάνει: Η έννοια του προγράμματος Επίλυση προβλήματος 1. Ακριβή προσδιορισμό

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

Οι Ανοικτοί Εκπαιδευτικοί Πόροι του Αποθετηρίου «Κάλλιπος» του ΣEAB: Οφέλη χρήσης και προοπτικές βιώσιμης ανάπτυξης

Οι Ανοικτοί Εκπαιδευτικοί Πόροι του Αποθετηρίου «Κάλλιπος» του ΣEAB: Οφέλη χρήσης και προοπτικές βιώσιμης ανάπτυξης Οι Ανοικτοί Εκπαιδευτικοί Πόροι του Αποθετηρίου «Κάλλιπος» του ΣEAB: Οφέλη χρήσης και προοπτικές βιώσιμης ανάπτυξης Αναστασοπούλου Χρ., Κουής Δ., Κουτσιλέου Στ., Χριστάκη Στ. Επιστημονικά Υπεύθυνος Δράσης:

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

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

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

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

Επικοινωνία Ανθρώπου- Υπολογιστή Σχεδίαση Αλληλεπίδρασης Ενότητα: 8 η

Επικοινωνία Ανθρώπου- Υπολογιστή Σχεδίαση Αλληλεπίδρασης Ενότητα: 8 η ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Επικοινωνία Ανθρώπου- Υπολογιστή Σχεδίαση Αλληλεπίδρασης Ενότητα: 8 η Δ.Πολίτης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε

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

Το ελεύθερο λογισμικό στη ζωή μας

Το ελεύθερο λογισμικό στη ζωή μας Το ελεύθερο λογισμικό στη ζωή μας Τάσος Κούτλας @akoutlas Μονάδα Αριστείας ΕΛΛΑΚ ΕΤΕΠΗ 11/06/2014 τι είναι το ελεύθερο λογισμικό / πώς άλλαξε την τεχνολογία / ελεύθερο λογισμικό στην Ελλάδα τι είναι το

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

http://www.gunet.gr/09_02.php

http://www.gunet.gr/09_02.php ΑΚΑΔΗΜΑΪΚΟ ΔΙΑΔΙΚΤΥΟ ΚΕΝΤΡΟ ΛΕΙΤΟΥΡΓΙΑΣ & ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟΥΠΟΛΗ 157 84 ΑΘΗΝΑ ΤΗΛ.: (210) 7275611 FAX: (210) 7275601 www.gunet.gr ΑΠΟΤΕΛΕΣΜΑΤΑ ΔΙΑΒΟΥΛΕΥΣΗΣ Κωδ ΟΠΣ (MIS)

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

Μονάδες Αριστείας ΕΛ/ΛΑΚ. 28/9/2014 Μονάδες Αριστείας ΕΛ/ΛΑΚ 1

Μονάδες Αριστείας ΕΛ/ΛΑΚ. 28/9/2014 Μονάδες Αριστείας ΕΛ/ΛΑΚ 1 28/9/2014 Μονάδες Αριστείας ΕΛ/ΛΑΚ 1 Τι είναι; Οι Μονάδες Αριστείας, είναι ομάδες σε Πανεπιστημιακά Ιδρύματα και Ερευνητικά Κέντρα που υλοποιούν το έργο ΕΣΠΑ «Ηλεκτρονικές Υπηρεσίες για την Ανάπτυξη και

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

Επιτελική σύνοψη κάθε παραγόµενο λογισµικό µπορεί να χρησιµοποιηθεί, να αντιγραφεί και να διανεµηθεί ελεύθερα

Επιτελική σύνοψη κάθε παραγόµενο λογισµικό µπορεί να χρησιµοποιηθεί, να αντιγραφεί και να διανεµηθεί ελεύθερα Επιτελική σύνοψη Το Ελεύθερο Λογισµικό/Λογισµικό Ανοικτού Κώδικα (ΕΛ/ΛΑΚ) είναι ένα εναλλακτικό µοντέλο ανάπτυξης και χρήσης λογισµικού, σύµφωνα µε το οποίο κάθε παραγόµενο λογισµικό µπορεί να χρησιµοποιηθεί,

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

Επέκταση Υπηρεσιών Ασύγχρονης Τηλεκπαίδευσης και Δικτυακής πύλης για το ΕΛ/ΛΑΚ του Πανελλήνιου Σχολικού Δικτύου

Επέκταση Υπηρεσιών Ασύγχρονης Τηλεκπαίδευσης και Δικτυακής πύλης για το ΕΛ/ΛΑΚ του Πανελλήνιου Σχολικού Δικτύου http:// e-learning.sch.gr http://opensoft.sch.gr Επέκταση Υπηρεσιών Ασύγχρονης Τηλεκπαίδευσης και Δικτυακής πύλης για το ΕΛ/ΛΑΚ του Πανελλήνιου Σχολικού Δικτύου Καθηγητής Κωνσταντίνος Μαργαρίτης Πανεπιστήμιο

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

Ανοιχτές Τεχνολογίες ως εργαλεία Καινοτομίας. Θεόδωρος Καρούνος htp://eellak.gr/

Ανοιχτές Τεχνολογίες ως εργαλεία Καινοτομίας. Θεόδωρος Καρούνος htp://eellak.gr/ Ανοιχτές Τεχνολογίες ως εργαλεία Καινοτομίας Θεόδωρος Καρούνος htp://eellak.gr/ ΤΕΙ ΑΘΗΝΑΣ 31-1-2015 Δομή Παρουσίασης Ιστορική Εξέλιξη Οφέλη/Μειονεκτήματα Επιχειρηματικά Μοντέλα & Άδειες Χρήσης Παραδείγματα

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

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

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

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

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

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

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

οικονομικές τάσεις Εκτεταμένη συνεργασία της εφοδιαστικής αλυσίδας. έργου FLUID-WIN το οποίο χρηματοδοτήθηκε από το 6ο Πρόγραμμα Πλαίσιο Παγκόσμιες

οικονομικές τάσεις Εκτεταμένη συνεργασία της εφοδιαστικής αλυσίδας. έργου FLUID-WIN το οποίο χρηματοδοτήθηκε από το 6ο Πρόγραμμα Πλαίσιο Παγκόσμιες Συνοπτική παρουσίαση του ευνητικού έργου FLUID-WIN το οποίο χρηματοδοτήθηκε από το 6ο Πρόγραμμα Πλαίσιο Ενοποίηση τρίτων παρόχων υπηρεσιών με ολόκληρη την εφοδιαστική αλυσίδα σε πολυλειτουργικές πλατφόρμες

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

Ημερίδα «Δείκτες ερευνητικής δραστηριότητας και σχεδιασμός πολιτικών για έρευνα, Τεχνολογική Ανάπτυξη και Καινοτομία

Ημερίδα «Δείκτες ερευνητικής δραστηριότητας και σχεδιασμός πολιτικών για έρευνα, Τεχνολογική Ανάπτυξη και Καινοτομία 1 Ημερίδα «Δείκτες ερευνητικής δραστηριότητας και σχεδιασμός πολιτικών για έρευνα, Τεχνολογική Ανάπτυξη και Καινοτομία Αθήνα 2 Μαΐου 2012 Εθνικό Ίδρυμα Ερευνών (Αμφιθέατρο Λ. Ζερβας) Κ. Κοκκινοπλιτης Γενικός

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

Wikis: Ανάπτυξη συνεργατικότητας με αξιοποίηση εφαρμογών και υπηρεσιών διαδικτύου

Wikis: Ανάπτυξη συνεργατικότητας με αξιοποίηση εφαρμογών και υπηρεσιών διαδικτύου ΕΘΝΙΚΗ ΣΧΟΛΗ ΔΗΜΟΣΙΑΣ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΑΥΤΟΔΙΟΙΚΗΣΗΣ Wikis: Ανάπτυξη συνεργατικότητας με αξιοποίηση εφαρμογών και υπηρεσιών διαδικτύου Το υλικό παραχωρήθηκε από τον Δρ Σπυρίδωνα Σαλαμούρα (ssalamouras@gmail.com)

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

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

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

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

Ελεύθερο Λογισμικό/ Λογισμικό Ανοικτού Κώδικα. Μονάδα Αριστείας Ανοικτού Λογισμικού - Χαροκόπειο Πανεπιστήμιο

Ελεύθερο Λογισμικό/ Λογισμικό Ανοικτού Κώδικα. Μονάδα Αριστείας Ανοικτού Λογισμικού - Χαροκόπειο Πανεπιστήμιο Ελεύθερο Λογισμικό/ Λογισμικό Ανοικτού Κώδικα Μονάδα Αριστείας Ανοικτού Λογισμικού - Χαροκόπειο Πανεπιστήμιο Ελεύθερο Λογισμικό Free software is a matter of liberty, not price. To understand the concept,

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

Εισαγωγή στην Python. Διάλεξη 0

Εισαγωγή στην Python. Διάλεξη 0 Εισαγωγή στην Python Διάλεξη 0 Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 Τι είναι ο προγραμματισμός : Αλγόριθμος γραμμένος σε γλώσσα που καταλαβαίνει

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Β ) Λειτουργικό Σύστημα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

Προσφερόμενα Διπλώματα (Προσφερόμενοι Τίτλοι)

Προσφερόμενα Διπλώματα (Προσφερόμενοι Τίτλοι) Εισαγωγή Το Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών του Πανεπιστημίου Κύπρου προσφέρει ολοκληρωμένα προπτυχιακά και μεταπτυχιακά προγράμματα σπουδών στους κλάδους του Ηλεκτρολόγου Μηχανικού

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

Προγραμματισμός Διαχείρισης Συστημάτων Ι

Προγραμματισμός Διαχείρισης Συστημάτων Ι Προγραμματισμός Διαχείρισης Συστημάτων Ι Μάθημα 7ο X Window System Μιχαηλίδης Παναγιώτης Tι είναι παραθυρικό σύστημα; Ένα παραθυρικό σύστημα (window system) είναι μια γραφική διεπαφή χρήστη (Graphical

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

Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ»

Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ» Πρόγραμμα Πιστοποίησης Γνώσεων και Δεξιοτήτων H/Y ΕΝΟΤΗΤΑ 1: «ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ» Μάθημα 0.2: Το Λογισμικό (Software) Δίκτυα υπολογιστών Αντώνης Χατζηνούσκας 2 ΠΕΡΙΕΧΟΜΕΝΑ Α. Σκοπός του Μαθήματος

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

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

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

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

ΚΕΦΑΛΑΙΟ 1. Εισαγωγή στην Python. 1.1 Εισαγωγή

ΚΕΦΑΛΑΙΟ 1. Εισαγωγή στην Python. 1.1 Εισαγωγή ΚΕΦΑΛΑΙΟ 1 Εισαγωγή στην Python Σύνοψη Σε αυτό το κεφάλαιο κάνουμε μια σύντομη εισαγωγή στην Python και στα εργαλεία λογισμικού που θα χρησιμοποιήσουμε στη συνέχεια του συγγράμματος. Προαπαιτούμενη γνώση

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

MEDLAB: Mediterranean Living Lab for Territorial Innovation

MEDLAB: Mediterranean Living Lab for Territorial Innovation MEDLAB: Mediterranean Living Lab for Territorial Innovation Παραδοτέο 2.2.2 ΣΥΝΟΨΗ ΠΟΛΙΤΙΚΗΣ: ΖΩΝΤΑΝΑ ΕΡΓΑΣΤΗΡΙΑ Ή ΠΑΡΟΜΟΙΕΣ ΠΡΩΤΟΒΟΥΛΙΕΣ Θεσσαλονίκη, Αύγουστος 2010 ΠΕΡΙΕΧΟΜΕΝΑ Σύνθεση Πολιτικής...3 Στοιχεία

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

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Β ) Λειτουργικό Σύστημα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

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

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. 4o Εργαστήριο Σ.Α.Ε

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. 4o Εργαστήριο Σ.Α.Ε ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα 4o Εργαστήριο Σ.Α.Ε Ενότητα : Μελέτη και Σχεδίαση Σ.Α.Ε Με χρήση του MATLAB Aναστασία Βελώνη Τμήμα Η.Υ.Σ Άδειες Χρήσης Το παρόν

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

Κεφάλαιο 4: Λογισμικό Συστήματος

Κεφάλαιο 4: Λογισμικό Συστήματος Κεφάλαιο 4: Λογισμικό Συστήματος Ερωτήσεις 1. Να αναφέρετε συνοπτικά τις κατηγορίες στις οποίες διακρίνεται το λογισμικό συστήματος. Σε ποια ευρύτερη κατηγορία εντάσσεται αυτό; Το λογισμικό συστήματος

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

Εθνικό Κέντρο Τεκμηρίωσης

Εθνικό Κέντρο Τεκμηρίωσης Εθνικό Κέντρο Τεκμηρίωσης Ευρωπαϊκές Ερευνητικές Υποδομές: Εστιάζοντας στις ψηφιακές υποδομές και υποδομές νέφους M. Ανδρουτσοπούλου Υπεύθυνη Γραφείου Στρατηγικής Ανάπτυξης & Συντονισμού Ψηφιακές ερευνητικές

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

AN IMPLEMENTATION OF THE CLOUD BASED SCHOOL

AN IMPLEMENTATION OF THE CLOUD BASED SCHOOL AN IMPLEMENTATION OF THE CLOUD BASED SCHOOL V.S. Belesiotis K. Alexopoulos Selected article for the European Journal of Engineering Research and Science Τεχνολογικές Προκλήσεις στην Εκπαίδευση Γρήγοροι

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

ΚΕΦΑΛΑΙΟ 2 ΛΟΓΙΣΜΙΚΟ

ΚΕΦΑΛΑΙΟ 2 ΛΟΓΙΣΜΙΚΟ ΚΕΦΑΛΑΙΟ 2 ΛΟΓΙΣΜΙΚΟ ΤΙ ΕΊΝΑΙ ΛΟΓΙΣΜΙΚΟ Για τη λειτουργία ενός υπολογιστικού συστήματος χρειάζεται εκτός από το υλικό (hardware) και το λογισμικό (software). Σε αυτό περιλαμβάνονται όλα τα Προγράμματα

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

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

Εισαγωγή στην Πληροφορική Εισαγωγή στην Πληροφορική Λογισμικό Συστήματος & Εφαρμογών ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Συντήρησης Πολιτισμικής Κληρονομιάς Γενική Δομή Υπολογιστών Λειτουργικό σύστημα Υπολογιστής

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

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος Εισαγωγή στον προγραµµατισµό Η έννοια του προγράµµατος Ο προγραµµατισµός ασχολείται µε τη δηµιουργία του προγράµµατος, δηλαδή του συνόλου εντολών που πρέπει να δοθούν στον υπολογιστή ώστε να υλοποιηθεί

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

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

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

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

Ωφελήματα από την χρήση Ελεύθερου Λογισμικού/Λογισμικού Ανοικτού Κώδικα (ΕΛ/ΛΑΚ) Τοπική Κοινότητα Χρηστών Ubuntu Κύπρου

Ωφελήματα από την χρήση Ελεύθερου Λογισμικού/Λογισμικού Ανοικτού Κώδικα (ΕΛ/ΛΑΚ) Τοπική Κοινότητα Χρηστών Ubuntu Κύπρου Ωφελήματα από την χρήση Ελεύθερου Λογισμικού/Λογισμικού Ανοικτού Κώδικα (ΕΛ/ΛΑΚ) Τοπική Κοινότητα Χρηστών Ubuntu Κύπρου Ελεύθερο Λογισμικό (Free Software) Ελευθερία χρήσης του προγράμματος για οποιονδήποτε

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

GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα

GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα GreekLUG ΕΙΣΑΓΩΓΗ: Τι είναι Ελεύθερο Λογισμικό; Η φιλοσοφία και οι αξίες του ΕΛ/ΛΑΚ Ζήσης Μιχάλης GreekLUG ΕΛ/ΛΑΚ! Τι είναι Λογισμικό & τι Λειτουργικό

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

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

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

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

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

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

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

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

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

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

ΕΛΛΑΚ και Τοπική Αυτοδιοίκηση

ΕΛΛΑΚ και Τοπική Αυτοδιοίκηση ΕΛΛΑΚ και Τοπική Αυτοδιοίκηση Παναγιώτης Κρανιδιώτης panagiotis.kranidiotis@gmail.com 21 Δεκεμβρίου 2012 Τι είναι το ΕΛΛΑΚ Το λογισμικό το οποίο διατίθεται με ειδικές άδειες οι οποίες επιτρέπουν στους

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

Προπαρασκευαστική δράση του Ευρωπαϊκού Κοινοβουλίου

Προπαρασκευαστική δράση του Ευρωπαϊκού Κοινοβουλίου Προπαρασκευαστική δράση του Ευρωπαϊκού Κοινοβουλίου Υφιστάμενη και επιθυμητή κατάσταση του οικονομικού δυναμικού σε περιοχές εκτός της περιοχής της ελληνικής πρωτεύουσας 1. ΕΙΣΑΓΩΓΗ Αυτή η προπαρασκευαστική

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

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι Λειτουργικά Συστήματα 1 Λογισμικό του Υπολογιστή Για να λειτουργήσει ένας Η/Υ εκτός από το υλικό του, είναι απαραίτητο και το λογισμικό Το σύνολο των προγραμμάτων που συντονίζουν τις λειτουργίες του υλικού

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

Μέθοδος : έρευνα και πειραματισμός

Μέθοδος : έρευνα και πειραματισμός 1 Ο ΓΥΜΝΑΣΙΟ ΠΕΥΚΩΝ Γ ΓΥΜΝΑΣΙΟΥ ΜΑΘΗΜΑ : ΤΕΧΝΟΛΟΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΣ : Τρασανίδης Γεώργιος, διπλ. Ηλεκ/γος Μηχανικός Μsc ΠΕ12 05 Μέθοδος : έρευνα και πειραματισμός Στόχος της Τεχνολογίας στην Γ Γυμνασίου

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

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

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

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

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

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

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

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Λειτουργικά Συστήματα Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Λειτουργικά Συστήματα», 2015-2016 Κεφάλαιο 1: Βασικές Έννοιες Λειτουργικών Συστημάτων

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

Λειτουργικό Σύστημα Linux ~ Μια σύντομη εισαγωγή

Λειτουργικό Σύστημα Linux ~ Μια σύντομη εισαγωγή Λειτουργικό Σύστημα Linux ~ Μια σύντομη εισαγωγή Πως ξεκίνησε το Linux Linus Torvalds : Εμπνευστής και δημιουργός του, φοιτητής του Πανεπιστημίου του Helsinki στην Φιλανδία Πως ξεκίνησε το Linux Βασίστηκε

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

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

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

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

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

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

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

G. Johnson, R.Whittington, K. Scholes, D. Angwin, P. Regnér. Βασικές αρχές στρατηγικής των επιχειρήσεων. 2 η έκδοση. Chapter 1

G. Johnson, R.Whittington, K. Scholes, D. Angwin, P. Regnér. Βασικές αρχές στρατηγικής των επιχειρήσεων. 2 η έκδοση. Chapter 1 G. Johnson, R.Whittington, K. Scholes, D. Angwin, P. Regnér Βασικές αρχές στρατηγικής των επιχειρήσεων 2 η έκδοση Chapter 1 Κεφάλαιο 8 Καινοτομία και επιχειρηματικότητα Chapter 2 Μαθησιακά αποτελέσματα

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr Διπλωματικές

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

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

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

Ηλεκτρονική Επιχειρηματικότητα

Ηλεκτρονική Επιχειρηματικότητα ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ Ι Ο Ν Ι Ω Ν Ν Η Σ Ω Ν Σ Χ ΟΛ Η Δ Ι Ο Ι Κ Η Σ Η Σ Κ Α Ι Ο Ι ΚΟ Ν Ο Μ Ι Α Σ Τ Μ Η Μ Α Δ Ι Ο Ι Κ Η Σ Η Σ Ε Π Ι Χ Ε Ι Ρ Η Σ Ε Ω Ν ΕΙΣΑΓΩΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ: ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

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

Περιβαλλοντική Εκπαίδευση

Περιβαλλοντική Εκπαίδευση ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 5: Η κοινωνική διάσταση της καινοτομίας ως μοχλός της αειφορίας Αφροδίτη Παπαδάκη-Κλαυδιανού Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

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

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

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

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

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

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

Στρατηγικές συμπράξεις στους τομείς της εκπαίδευσης, της κατάρτισης και της νεολαίας

Στρατηγικές συμπράξεις στους τομείς της εκπαίδευσης, της κατάρτισης και της νεολαίας KA2 Συνεργασία για Καινοτομία και Ανταλλαγή Καλών Πρακτικών Αναμενόμενα αποτελέσματα Τα σχέδια που υποστηρίζονται στο πλαίσιο αυτής της Δράσης αναμένονται να επιφέρουν τα παρακάτω αποτελέσματα: Καινοτόμες

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

Λειτουργικά Συστήματα Η/Υ

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 4 «Αρχιτεκτονικές ΛΣ» Διδάσκων: Δ Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 1. Μονολιθικά συστήματα Αρχιτεκτονικές ΛΣ 2. Στρωματοποιημένη αρχιτεκτονική 3. Αρχιτεκτονική

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

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ TRAVIS-V1-2012 TRAVIS Λογισμικό Διαχείρισης Παραβάσεων Φωτοεπισήμανσης Το σύστημα διαχείρισης παραβάσεων φωτοεπισήμανσης

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

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 4 η. Βασίλης Στεφανής

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 4 η. Βασίλης Στεφανής Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ Διάλεξη 4 η Βασίλης Στεφανής Πληροφοριακό σύστημα Υπενθύμιση του βασικού μοντέλου Είσοδος Επεξεργασία Έξοδος Ας δούμε επιπλέον λεπτομέρειες! Λογισμικό Λογισμικό: Δίνει εντολές στο

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

Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας. Παρουσίαση Μονάδας & Δράσεων. Ιφιγένεια Φουντά Επιστημονικά Υπεύθυνη Μονάδας Αριστείας ΕΛ/ΛΑΚ του ΤΕΙ Αθήνας

Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας. Παρουσίαση Μονάδας & Δράσεων. Ιφιγένεια Φουντά Επιστημονικά Υπεύθυνη Μονάδας Αριστείας ΕΛ/ΛΑΚ του ΤΕΙ Αθήνας Ημερίδα Μονάδας Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας «1 η Σειρά Εκπαίδευσης» Αποθετήρια & Ανοιχτοί Εκπαιδευτικοί Πόροι (K.E. A1) Συστήματα Ηλεκτρονικής Μάθησης & Ηλεκτρονική Αξιολόγηση (K.E. B1) Ανάπτυξη εφαρμογής

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

Όλες οι υπηρεσίες είναι διαθέσιμες μέσω διαδικτύου.

Όλες οι υπηρεσίες είναι διαθέσιμες μέσω διαδικτύου. ΚΕΦΑΛΑΙΟ 13 Όλες οι υπηρεσίες είναι διαθέσιμες μέσω διαδικτύου. Οι υπηρεσίες νέφους παρέχονται με τέτοιο τρόπο ώστε ο τελικός χρήστης δεν μπορεί να διακρίνει τεχνικές λεπτομέρειες. Η χρηστικότητα, η διαθεσιμότητα

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

Τμήμα Μηχανικών Πληροφορικής ΤΕ. Επιχειρηματικά Μοντέλα Ανοιχτού Λογισμικού. Άννα Ρήγα (ΑΜ: Τ03134)

Τμήμα Μηχανικών Πληροφορικής ΤΕ. Επιχειρηματικά Μοντέλα Ανοιχτού Λογισμικού. Άννα Ρήγα (ΑΜ: Τ03134) ΑΤΕΙ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Τμήμα Μηχανικών Πληροφορικής ΤΕ Επιχειρηματικά Μοντέλα Ανοιχτού Λογισμικού ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Άννα Ρήγα (ΑΜ: Τ03134) Επιβλέπων:

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

2018 / 19 ΜΕΤΑΠΤΥΧΙΑΚΑ ΠΡΟΓΡΑΜΜΑΤΑ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ & ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

2018 / 19 ΜΕΤΑΠΤΥΧΙΑΚΑ ΠΡΟΓΡΑΜΜΑΤΑ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ & ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 2018 / 19 ΜΕΤΑΠΤΥΧΙΑΚΑ ΠΡΟΓΡΑΜΜΑΤΑ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ & ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 2 ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ: ΑΣΦΑΛΕΙΑ ΠΛΗΡΟΦΟΡΙΑΚΩΝ & ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

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

Δημιουργία Συνεργατικών Δικτύων Ανοιχτής Καινοτομίας Coopetitive Open Innovation Networks - COINs

Δημιουργία Συνεργατικών Δικτύων Ανοιχτής Καινοτομίας Coopetitive Open Innovation Networks - COINs Δημιουργία Συνεργατικών Δικτύων Ανοιχτής Καινοτομίας Coopetitive Open Innovation Networks - COINs «Στρατηγικές Ανάπτυξης Συνεργατικών Σχηματισμών στις Ελληνικές Περιφέρειες» Κωνσταντίνος Μπουρλετίδης Οικονομολόγος

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

ZA6589. Flash Eurobarometer 415 (Innobarometer The Innovation Trends at EU Enterprises) Country Questionnaire Cyprus

ZA6589. Flash Eurobarometer 415 (Innobarometer The Innovation Trends at EU Enterprises) Country Questionnaire Cyprus ZA89 Flash Eurobarometer (Innobarometer 0 - The Innovation Trends at EU Enterprises) Country Questionnaire Cyprus FL Innobarometer - CY ΡΩΤΗΣΤΕ ΟΛΟΥΣ Θα ήθελα να ξεκινήσω με μερικές βασικές ερωτήσεις σχετικά

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

IBM WebSphere Cast Iron Live

IBM WebSphere Cast Iron Live Περιγραφή Υπηρεσιών IBM WebSphere Cast Iron Live Στην παρούσα Περιγραφή Υπηρεσιών περιγράφεται η Υπηρεσία Cloud που παρέχεται από την IBM στον Πελάτη. Με τον όρο "Πελάτης" νοούνται η εταιρεία, οι εξουσιοδοτημένοι

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1 ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 03/01/09 Χαράλαμπος Τζόκας 1 Πρόγραμμα - Προγραμματισμός Πρόγραμμα: Σύνολο εντολών που πρέπει να δοθούν στον Υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος της επίλυσης

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

Διαδίκτυο: δίκτυο διασυνδεμένων δικτύων Ξεκίνησε ως ένα μικρό κλειστό στρατιωτικό δίκτυο, απόρροια του Ψυχρού Πολέμου μεταξύ ΗΠΑ και ΕΣΣΔ.

Διαδίκτυο: δίκτυο διασυνδεμένων δικτύων Ξεκίνησε ως ένα μικρό κλειστό στρατιωτικό δίκτυο, απόρροια του Ψυχρού Πολέμου μεταξύ ΗΠΑ και ΕΣΣΔ. ΚΕΦΑΛΑΙΟ 9 Διαδίκτυο: δίκτυο διασυνδεμένων δικτύων Ξεκίνησε ως ένα μικρό κλειστό στρατιωτικό δίκτυο, απόρροια του Ψυχρού Πολέμου μεταξύ ΗΠΑ και ΕΣΣΔ. Το 1966 αρχίζει ο σχεδιασμός του ARPANET, του πρώτου

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

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

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

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

Εγχειρίδιο της εφαρμογής αναπαραγωγής CD V2.6 i. Εγχειρίδιο της εφαρμογής αναπαραγωγής CD V2.6

Εγχειρίδιο της εφαρμογής αναπαραγωγής CD V2.6 i. Εγχειρίδιο της εφαρμογής αναπαραγωγής CD V2.6 i της CD V2.6 ii Copyright 2002, 2003, 2004 Sun Microsystems Copyright 2009 Στέργιος Προσινικλής (steriosprosinikls@gmail.com) Δίνεται άδεια για αντιγραφή, διανομή και/ή τροποποίηση του εγγράφου υπό τους

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

Η διάρκεια πραγματοποίησης της ανοιχτής εκπαιδευτικής πρακτικής ήταν 2 διδακτικές ώρες

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

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

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΨΗΦΙΑΚΕΣ ΒΙΒΛΙΟΘΗΚΕΣ. Σαράντος Καπιδάκης

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΨΗΦΙΑΚΕΣ ΒΙΒΛΙΟΘΗΚΕΣ. Σαράντος Καπιδάκης ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΨΗΦΙΑΚΕΣ ΒΙΒΛΙΟΘΗΚΕΣ Σαράντος Καπιδάκης 0_CONT_Ω.indd iii τίτλος: ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΨΗΦΙΑΚΕΣ ΒΙΒΛΙΟΘΗΚΕΣ συγγραφέας: Καπιδάκης Σαράντος 2014 Εκδόσεις Δίσιγμα Για την ελληνική γλώσσα σε όλον τον

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

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5 A. EVANS, K. MARTIN, M. A. POATSY Εισαγωγή στην πληροφορική Θεωρία και πράξη 2 η έκδοση Κεφάλαιο 5 Λογισμικό συστημάτων: Το λειτουργικό σύστημα, τα βοηθητικά προγράμματα και η διαχείριση αρχείων Τα βασικά

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

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

ΠΝΕΥΜΑΤΙΚΗ Ι ΙΟΚΤΗΣΙΑ: ΗΜΟΣΙΟΣ ΤΟΜΕΑΣ ΚΑΙ ΙΑΧΕΙΡΙΣΗ ΑΝΟΙΧΤΗΣ ΠΡΟΣΒΑΣΗΣ ΠΝΕΥΜΑΤΙΚΗ Ι ΙΟΚΤΗΣΙΑ: ΗΜΟΣΙΟΣ ΤΟΜΕΑΣ ΚΑΙ ΙΑΧΕΙΡΙΣΗ ΑΝΟΙΧΤΗΣ ΠΡΟΣΒΑΣΗΣ ιονυσία Καλλινίκου, Αναπληρώτρια καθηγήτρια Νομικής Σχολής Πανεπιστημίου Αθηνών email: kallinikoudionysia@yahoo.gr Βασιλική Στρακαντούνα,

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

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

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

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

Γιατί OpenOffice;;; (2)

Γιατί OpenOffice;;; (2) OpenOffice Απο τον: Ανδρέα Μπουράκη Msc in Distributed Systems Engineering Bourakis@gmail.com ΕΙΣΑΓΩΓΗ Το OpenOffice σπονσοράρεται απο την Sun Microsystems. H Sun Microsystems αναπτύσσει το StarOffice

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