Τεχνολογία Λογισμικού & Πνευματική Ιδιοκτησία ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική
Κύκλος ζωής λογισμικού source: Forouzan, Mosharraf Τροποποιήσεις διόρθωση σφαλμάτων, αλλαγή απαιτήσεων χρήστη,... 2
Διαδικασία ανάπτυξης Απαιτείται ένας αριθμός φάσεων ανάπτυξης: Ανάλυση και καθορισμός απαιτήσεων (requirements) Σχεδίαση (design) Υλοποίηση (implementation) Έλεγχος (Verification) Συντήρηση (Maintenance) 3
Μεθοδολογία καταρράκτη Waterfall methodology Οι φάσεις ακολουθούνται σειριακά πρέπει να τελειώσει η μία πριν περάσουμε στην επόμενη Υλοποιείται πολύ αργά Αν έχει λάθη, πρέπει να ανατρέξουμε σε όλη τη διαδικασία 4
Άλλες μεθοδολογίες Άλλες μεθοδολογίες αναπτύσσουν ένα (υποτυπώδες) πρωτότυπο γρήγορα (rapid prototyping) και το εξελίσσουν αυξητική: οι δυνατότητες του λογισμικού αυξάνουν επαναληπτική: συνεχής βελτίωση του λογισμικού 5
Καθορισμός απαιτήσεων Το αποτέλεσμα αυτής της φάσης είναι μια περιγραφή των προδιαγραφών του λογισμικού Λειτουργικές απαιτήσεις (functional requirements) τι λειτουργίες θα παρέχει Μη λειτουργικές απαιτήσεις (non-functional requirements) τι περιορισμοί υπάρχουν (π.χ. ταχύτητα απόκρισης, γραφικό περιβάλλον, λειτουργικό σύστημα,..) Χρησιμοποιούνται κείμενο σε φυσική γλώσσα και διάφορα διαγράμματα 6
Σχεδίαση Το βασικό πρόβλημα είναι η πολυπλοκότητα Πρέπει το λογισμικό να οργανωθεί σε τμήματα που επικοινωνούν μεταξύ τους άρα υπάρχει κάποια εξάρτηση ενός τμήματος από το άλλο Το ζητούμενο είναι να γίνει αυτή η οργάνωση με «καλό τρόπο» 7
Σύζευξη και συνεκτικότητα Γενικά θέλουμε μικρή εξάρτηση μεταξύ τμημάτων ονομάζεται σύζευξη (coupling) Μια γραμμή Α πρέπει να αλλάξει μόνο και μόνο επειδή μια γραμμή Β άλλαξε τα τμήματα μπορούν να ξαναχρησιμοποιηθούν μικρότερη πιθανότητα μεταφοράς σφάλματος σε άλλο τμήμα ευκολότερη τροποποίηση υπομονάδων Μέσα σε ένα τμήμα θέλουμε μεγάλη συνεκτικότητα (cohesion) Μια αλλαγή στη γραμμή Α επιτρέπει στη γραμμή Β να αλλαχτεί ώστε να προστεθεί «αξία» στο λογισμικό τα επιμέρους κομμάτια του τμήματος να έχουν στενή σχέση μεταξύ τους 8
Υλοποίηση Μετατροπή του «σχεδίου» σε κώδικα γραμμένο σε γλώσσα προγραμματισμού Χρειάζεται καλή ποιότητα παραγόμενου λογισμικού source: Forouzan, Mosharraf 9
Έλεγχος Ο σκοπός είναι ο εντοπισμός και η διόρθωση σφαλμάτων Σε διάφορα επίπεδα: μονάδας (Unit/module) ενσωμάτωσης (integration) συστήματος (system) Για διαφορετικούς σκοπούς σωστής λειτουργίας (σύμφωνα με τις προδιαγραφές) ταχύτητας (για εντοπισμό ευκαιριών βελτίωσης) 10
Έλεγχος μαύρου κουτιού Έλεγχος μονάδας χωρίς να «βλέπουμε» τι περιέχει η μονάδα απλά ελέγχουμε τις εξωτερικές δυνατότητες. π.χ. αν μία συνάρτηση C επιστρέφει τις σωστές τιμές σε όλες τις περιπτώσεις Μπορεί να αναπτυχθεί πριν ή παράλληλα με την υλοποίηση της μονάδας Συχνά είναι αδύνατο να ελέγξουμε όλους τους δυνατούς συνδυασμούς τιμών εισόδου εξετάζουμε οριακές τιμές τυχαίος έλεγχος... 11
Πνευματική/Διανοητική Ιδιοκτησία 12
Εισαγωγή Δεν είμαι νομικός, ούτε ειδικός στο θέμα Όταν κάποιος φτιάξει ένα φυσικό αντικείμενο, είναι γενικά αποδεκτό ότι του ανήκει και μπορεί να το πουλήσει σε άλλους Αυτό είναι σχετικά εύκολο να ελεγχθεί γιατί το αντικείμενο είναι «χειροπιαστό» Παρόμοια, ο έλεγχος είναι σχετικά εύκολος για παροχή υπηρεσιών Τί γίνεται όμως όταν το αποτέλεσμα της δουλειάς κάποιου είναι άυλο; 13
Διανοητική Ιδιοκτησία Τα προϊόντα πνευματικής εργασίας αποτελούν άυλα περιουσιακά στοιχεία και προστατεύονται νομικά Παραδείγματα προϊόντων: ανακαλύψεις, εφευρέσεις, διαδικασίες,... κείμενα (βιβλία, αναφορές, παρουσιάσεις,...) μουσική, έργα τέχνης Διαφορά μεταξύ έργου και «αντίτυπου» Μια εφαρμογή και ένα «αντίτυπο» σε DVD ή μια εγκατάστασή της σε έναν υπολογιστή Μία (ψηφιακή) φωτογραφία και τα αντίγραφά της 14
Τρόποι προστασίας Εμπορικά σήματα (trade mark) Καταχωρημένα σχέδια (registered design) Διπλώματα ευρεσιτεχνίας (patent) Κανόνες πνευματικών δικαιωμάτων (copyright) Εμπιστευτικές πληροφορίες, τεχνογνωσία, εμπορικά μυστικά 15
Εμπορικό σήμα Δεν προστατεύει την καινοτομία του προϊόντος αλλά προσδιορίζει και ίσως εξασφαλίζει την ποιότητα και την πηγή των αγαθών ή υπηρεσιών Μπορεί να είναι λέξεις, ονόματα, σχέδια,... Μπορεί να ανανεώνεται επ αόριστον, πληρώνοντας κάποια τέλη Παραδείγματα: Η επωνυμία μιας επιχείρησης Φράσεις κλειδιά 16
Καταχωρημένο σχέδιο Προστατεύει την εξωτερικά ορατή εικόνα ενός βιομηχανικού ή βιοτεχνικού προϊόντος ή μέρους αυτού, η οποία προκύπτει από τα ιδιαίτερα χαρακτηριστικά του όπως το περίγραμμα, το σχήμα, η μορφή, το χρώμα Π.χ. κοσμήματα, μηχανήματα, συσκευασίες, ρούχα,... 17
Δίπλωμα ευρεσιτεχίας (patent) Είναι ένα προσωρινό δικαίωμα που δίνεται από το κράτος σε έναν εφευρέτη για να τον προστατεύσει από τη εκμετάλλευση της εφεύρεσής του από άλλους χωρίς άδεια Ισχύει γενικά για φυσικά αντικείμενα ή διαδικασίες Υπάρχουν διαφωνίες σχετικά με λογισμικό Ισχυρότερο από δικαίωμα πνευματικής ιδιοκτησίας ακόμα και αν κάποιος έκανε την ίδια ανακάλυψη ανεξάρτητα, δεν μπορεί να την εκμεταλλευτεί Άλλα ισχύει για μικρότερο χρονικό διάστημα 20 χρόνια 18
Δίπλωμα ευρεσιτεχνίας 2 Πρέπει να υπάρχει καινοτομία και να είναι εφαρμόσιμη Κάποιες κατηγορίες απαγορεύονται π.χ. επιστημονικές θεωρίες Μετά τη κατοχύρωση, η πληροφορία είναι δημοσιευμένη καθένας μπορεί να τη διαβάσει Αν κάποιος δεν μπορεί να επιβάλει τα πνευματικά του δικαιώματα, αυτό είναι προβληματικό 19
Εμπιστευτικές πληροφορίες Όλες οι άλλες μορφές προστασίας δημοσιεύουν τη πληροφορία Συχνά όμως η αξία της πληροφορίας είναι μεγαλύτερη αν είναι μυστική ή δεν μπορεί να κατοχυρωθεί με δίπλωμα ευρεσιτεχνίας,... Αν χρειάζεται μια πληροφορία να χρησιμοποιηθεί από κάποιον «άλλο», πρέπει να υπογράψει ένα συμβόλαιο εμπιστευτικότητας (non-disclosure agreement) 20
Πνευματικά Δικαιώματα Προστατεύει την έκφραση της ιδέας όχι την ίδια την ιδέα Προστατεύουν τον κάτοχο από αντιγραφή και διάθεση του προϊόντος στο κοινό μετατροπή, μετάφραση του προϊόντος Ισχύει μέχρι το θάνατο του κατόχου + 70 χρόνια Δεν χρειάζεται να πληρώσει κανείς τέλη ούτε να δηλώσει το προϊόν αν και, πρακτικά, κάποιου είδους ενέργειες βοηθούν σε περίπτωση διαφορών Δεν χρειάζεται ο δημιουργός/κάτοχος να είναι επαγγελματίας π.χ. μια φωτογραφία μου προστατεύεται και ας μην είμαι επαγγελματίας φωτογράφος 21
Εκμετάλλευση Διαν. Ιδιοκτ. Όπως και τα φυσικά προϊόντα, τα πνευματικά προϊόντα χρησιμοποιούνται σε κάθε είδους συναλλαγές με χρήματα ή χωρίς (π.χ. ανταλλαγές χρήσης διπλ. ευρεσιτεχνίας) Συνήθως η εκμετάλλευση γίνεται με το ιδιοκτήτη να δίνει κάποιου είδους άδεια για τη χρήση του προϊόντος Για λογισμικό, η άδεια επιτρέπει το χρήστη να χρησιμοποιήσει ένα πρόγραμμα Θέτει διάφορους όρους, π.χ. απαγορεύει decompilation, δηλαδή να εξετάσει κάποιος τον κώδικα μηχανής και να δει πως δουλεύει 22
Εμπορικά προγράμματα Συνήθως δίνουν άδειες είτε σε συγκεκριμένους χρήστες είτε για συγκεκριμένους υπολογιστές Λειτουργικά συστήματα, προγράμματα γραφείου, συνήθως αδειοδοτούνται για ένα συγκεκριμένο υπολογιστή Επαγγελματικά προγράμματα συνήθως αδειοδοτούνται για έναν αριθμό ταυτόχρονων χρηστών μπορούν να χρησιμοποιούν διαφορετικούς υπολογιστές 23
Shareware Για σχετικά φτηνές, όχι πολύ γνωστές εφαρμογές συνηθίζεται να δίνεται δωρεάν μία δοκιμαστική έκδοση με ορισμένους περιορισμούς χρονική διάρκεια περιορισμός στον αριθμό, μέγεθος, κτλ απαγόρευση αποθήκευσης Πληρώνοντας, παίρνει ο χρήστης έναν κωδικό που ξεκλειδώνει όλες τις λειτουργίες 24
Δωρεάν χρήση Υπάρχουν αρκετά προγράμματα που επιτρέπουν δωρεάν χρήση Κάποια έχουν στην ουσία περιορισμούς π.χ. παιχνίδια που δεν μπορεί ο παίκτης να καταφέρει να μαζέψει αρκετές ιδιότητες εκτός και αν αγοράσει κάποιου είδους νομίσματα Άλλα δεν παρέχουν τεχνική υποστήριξη σε χρήστες που δεν πληρώνουν (είτε συνδρομή είτε άδεια) 25
Ανοιχτός (πηγαίος) κώδικας Όταν ο πηγαίος κώδικας λογισμικού είναι ελεύθερα διαθέσιμος, ένας χρήστης μπορεί να χρησιμοποιήσει και να αλλάξει το λογισμικό Γενικά η χρήση είναι ελεύθερη και η άδεια χρήσης έχει σκοπό να προστατεύσει τον κατασκευαστή από προβλήματα που μπορεί να προκληθούν. Η αλλαγή και μεταπώληση προγραμμάτων που στηρίζονται σε ανοιχτό κώδικα γενικά επιτρέπεται αλλά υπάρχουν περιορισμοί Η GPL (General Public License) θέτει περιορισμούς σε όσους αλλάζουν λογισμικό (ακόμα και βιβλιοθήκες) που διατίθενται με την άδεια αυτή 26