ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Ενότητα 6: Τεχνολογία Λογισμικού-Software Engineering Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών Σπουδών
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοποί ενότητας Εξερεύνηση των προβλημάτων που παρουσιάζονται κατά τη διάρκεια της ανάπτυξης μεγάλων, σύνθετων συστημάτων λογισμικού. Εισαγωγή στις αρχές που κατευθύνουν τη διαδικασία ανάπτυξης λογισμικού και οδηγούν σε αποδοτικά, αξιόπιστα προϊόντα λογισμικού. 4
Περιεχόμενα ενότητας (1/2) Η επιστήμη της Τεχνολογίας Λογισμικού. Ο κύκλος ζωής του λογισμικού. Ο κύκλος ως σύνολο. Η παραδοσιακή φάση ανάπτυξης. Μεθοδολογίες τεχνολογίας λογισμικού. Τμηματικότητα. Τμηματική Υλοποίηση. Σύζευξη. Συνοχή. Συστατικά. 5
Περιεχόμενα ενότητας (2/2) Εργαλεία ανάπτυξης. Παλιοί φίλοι. Ενοποιημένη γλώσσα μοντελοποίησης. Πρότυπα σχεδίασης. Έλεγχος. Τεκμηρίωση. Ιδιοκτησία και ευθύνη λογισμικού. 6
Η επιστήμη της Τεχνολογίας Λογισμικού (1/3) Σχεδιασμός, ανάπτυξη και συντήρηση μεγάλων συστημάτων λογισμικού. Διαφέρει από τα άλλα επιστημονικά και τεχνικά πεδία. Προκατασκευασμένα Τμήματα. Σύστημα μέτρησης. Πρακτικοί εναντίον θεωρητικών. 7
Η επιστήμη της Τεχνολογίας Λογισμικού (2/3) Οι οικονομίες όλων των αναπτυγμένων χωρών εξαρτώνται από το λογισμικό. Όλο και περισσότερα συστήματα είναι ελεγχόμενα από λογισμικό. Η τεχνολογία λογισμικού ασχολείται με θεωρίες, μεθόδους και εργαλεία για «επαγγελματική» ανάπτυξη λογισμικού (ανάπτυξη, διαχείριση και εξέλιξη συστημάτων). 8
Η επιστήμη της Τεχνολογίας Λογισμικού (3/3) Τα προϊόντα λογισμικού αποτελούνται από προγράμματα και εγχειρίδια. Τα κυριότερα χαρακτηριστικά των προϊόντων είναι δυνατότητα συντήρησης, εξάρτηση (συνδεσιμότητα) και φιλικότητα χρήσης. Η διαδικασία λογισμικού αποτελείται από τις δραστηριότητες που υπάρχουν στην ανάπτυξη λογισμικού. 9
Υπολογιστικάεργαλείαυποβοήθησης τεχνολογίαςλογισμικού Computer Aided Software Engineering (CASE) tools και αφορούν: Σχεδιασμός έργου. Διαχείριση έργου. Τεκμηρίωση. Πρωτότυπα και προσομοίωση. Σχεδίαση διεπαφής. Προγραμματισμός. 10
Ο κύκλος ζωής του λογισμικού Σχήμα: Ο κύκλος ζωής του λογισμικού. Πηγή: BROOKSHEAR (2004). 11
Η παραδοσιακή φάση ανάπτυξης Σχήμα: Η παραδοσιακή φάση ανάπτυξης. Πηγή: BROOKSHEAR (2004). 12
Ανάλυση Απαιτήσεις. Προσανατολισμένες στην εφαρμογή. Προδιαγραφές Τεχνικά προσανατολισμένες. Έγγραφο απαιτήσεων λογισμικού. Συνήθως οι απαιτήσεις δεν είναι ομαλές - δεν είναι πλήρεις. Η διάκριση μεταξύ απαιτήσεων - σχεδιασμού και παραγωγής είναι πολύ θολή. Δεν υπάρχει φυσική αναπαραγωγή του συστήματος για έλεγχο. 13
Σχεδιασμός Μεθοδολογίες και εργαλεία (στη συνέχεια). Διεπαφή χρήστη (ψυχολογία και εργονομία). 14
Υλοποίηση Κατασκευή συστήματος από σχεδιασμό. Γράψιμο προγραμμάτων. Δημιουργία αρχείων δεδομένων. Ανάπτυξη βάσεων δεδομένων. Ο ρόλος του αναλυτή λογισμικού απέναντι στον προγραμματιστή. 15
Έλεγχος Έλεγχος εγκυρότητας. Επιβεβαίωση ότι το σύστημα ακολουθεί τις προδιαγραφές. Έλεγχος κακοτεχνιών. Εύρεση ελαττωμάτων (bugs). 16
Μεθοδολογίες τεχνολογίας Μοντέλο καταρράκτη. λογισμικού (1/2) Διαχωρισμός φάσεων απαιτήσεων και ανάπτυξης. Εξελικτικό μοντέλο. Η εξειδίκευση και η ανάπτυξη γίνονται μαζί. Πρωτότυπα (Εξελικτικά έναντι Μιας χρήσεως- Throwaway). Ανάπτυξη ανοιχτού κώδικα. 17
Μεθοδολογίες τεχνολογίας λογισμικού (2/2) Extreme Programming. Formal transformation. Ένα μαθηματικό συστηματικό μοντέλο μετατρέπεται σε υλοποίηση. Reuse-based development. Το σύστημα αναπτύσσεται από υπάρχοντα στοιχεία. 18
Μοντέλο καταρράκτη (1/2) Σχήμα: Μοντέλο καταρράκτη. Πηγή: Διδάσκων (2015). 19
Μοντέλο καταρράκτη (2/2) Εξειδίκευση - εντοπισμός των απαιτήσεων και περιορισμών του συστήματος. Σχεδιασμός - παραγωγή μοντέλου σε χαρτί. Παραγωγή - ανάπτυξη του συστήματος. Έλεγχος αν το σύστημα ικανοποιεί την περιγραφή των απαιτήσεων. Εγκατάσταση του συστήματος στον πελάτη και έλεγχος λειτουργικότητας. Συντήρηση - επισκευή προβλημάτων όταν αυτά προκύπτουν. 20
Κατανομή Χρόνου σε ένα τυπικό έργο Σχήμα: Κατανομή Χρόνου σε ένα τυπικό έργο. Πηγή:http://java.uom.gr/OOD/slides/Intro_Software_Engineering.ppt (Ανακτήθηκε 18 Ιουνίου, 2015). 21
Τμηματικότητα (modularity) Αρθρωτός προγραμματισμός Διαδικασίες Προστακτικές γλώσσες. Σχεδιαγράμματα δομής. Αντικείμενα Αντικειμενοστραφείς γλώσσες. Διαγράμματα συνεργασίας. Δομικά στοιχεία (components). Component architecture. 22
Εικόνα: Σχεδιάγραμμα απλής δομής Σχήμα: Σχεδιάγραμμα απλής δομής. Πηγή: BROOKSHEAR (2004). 23
Η δομή της PlayerClass και τα στιγμιότυπα Σχήμα: Η δομή της PlayerClass και τα στιγμιότυπα. Πηγή: BROOKSHEAR (2004). 24
Αλληλεπίδρασημεταξύαντικειμένων που προκαλείταιαπό τοσερβίς του PlayerA Σχήμα: Αλληλεπίδραση μεταξύ αντικειμένων που προκαλείται από το σερβίς του PlayerA. Πηγή: BROOKSHEAR (2004). 25
Σχεδιάγραμμα δομής με σύζευξη δεδομένων Σχήμα: Σχεδιάγραμμα δομής με σύζευξη δεδομένων. Πηγή: BROOKSHEAR (2004). 26
Σύζευξη εναντίον Συνοχής Σύζευξη. Σύζευξη ελέγχου. Σύζευξη δεδομένων. Συνοχή. Λογική συνοχή. Λειτουργική συνοχή. 27
Λογική και λειτουργική συνοχή μέσα σε αντικείμενο Σχήμα: Λογική και λειτουργική συνοχή μέσα σε αντικείμενο. Πηγή: BROOKSHEAR (2004). 28
Εργαλεία ανάπτυξης Διάγραμμα ροής. Διάγραμμα Οντοτήτων-Σχέσεων. Σχέση ένα-προς-ένα. Σχέση ένα-προς-πολλά. Σχέση πολλά-προς-πολλά. Λεξικό δεδομένων. 29
Σχέση ένα-προς-ένα, ένα-προςπολλά και πολλά-προς-πολλά Σχήμα: Σχέση ένα-προς-ένα, ένα-προς-πολλά και πολλά-προς-πολλά. Πηγή: BROOKSHEAR (2004). 30
Απλό διάγραμμα ροής Σχήμα: Απλό διάγραμμα ροής. Πηγή: BROOKSHEAR (2004). 31
Διάγραμμα απλής κλάσης Σχήμα: Διάγραμμα απλής κλάσης. Πηγή: BROOKSHEAR (2004). 32
Ενοποιημένη γλώσσα μοντελοποίησης Διαγράμματα Use Case. Use cases. Actors. Διαγράμματα κλάσεων. 33
Διάγραμμα απλού use case Σχήμα: Διάγραμμα απλού use case. Πηγή: BROOKSHEAR (2004). 34
Διάγραμμα κλάσης για απεικόνιση γενικεύσεων Σχήμα: Διάγραμμα κλάσης για απεικόνιση γενικεύσεων. Πηγή: BROOKSHEAR (2004). 35
Διάγραμμα ακολουθίας που απεικονίζει κοινή βολή Σχήμα: Διάγραμμα ακολουθίας που απεικονίζει κοινή βολή. Πηγή: BROOKSHEAR (2004). 36
Πρότυπα σχεδίασης Καλά σχεδιασμένα πλαίσια (templates) για επίλυση επαναλαμβανόμενων προβλημάτων Παραδείγματα: Προσαρμοστικό πρότυπο: Προσαρμογή μιας διεπαφής τμήματος (module s interface) στις τρέχουσες ανάγκες. Συνδυαστικό πρότυπο: Έλεγχος της πολυπλοκότητας που εμπλέκεται όταν απαιτούνται πολλοί συνδυασμοί των ίδιων δραστηριοτήτων. 37
Στρατηγικές ελέγχου λογισμικού Glass-box testing. Αρχή του Pareto (80/20). Έλεγχος διαδρομής βάσης όλες οι εντολές. Black-box testing. Ανάλυση οριακών τιμών. Πλεονασματικός έλεγχος - Redundancy testing. Beta testing. 38
Στρατηγικές ελέγχου λογισμικού (συνέχεια) Δομημένα περάσματα. Θεατρικό πείραμα. Κάρτες κλάσης, αρμοδιότητας, συνεργασίας. 39
Τεκμηρίωση (Documentation) Τεκμηρίωση χρήστη. Βιβλία για όλους τους πελάτες. On-line βοήθεια. Τεκμηρίωση συστήματος. Πηγαίος κώδικας. Έγγραφα σχεδιασμού. Τεχνική τεκμηρίωση. Για εγκατάσταση, προσαρμογή, ανανέωση, κλπ. 40
Τεκμηρίωση Παραγόμενα Έγγραφα Δραστηριότητα. Ανάλυση Απαιτήσεων. Καθορισμός. Απαιτήσεων. Σχεδίαση Συστήματος. Κωδικοποίηση. Έλεγχος Μονάδων. Έλεγχος Τμημάτων. Έλεγχος Συστήματος. Παράδοση Προϊόντος. Παραγόμενα Έγγραφα. Feasibility Study. Requirements Specification. Functional Specification. Design Specification. Program code. Unit test report. Module test report. System test report. User Guide Refer. Manual. 41
Ιδιοκτησία λογισμικού (1/3) Copyright. Επιτρέπει την κυκλοφορία ενός προϊόντος διατηρώντας την πνευματική ιδιοκτησία Ισχύει για όλα τα έργα: Προδιαγραφές. Πηγαίος κώδικας. Τελικό αποτέλεσμα. 42
Ιδιοκτησία λογισμικού (2/3) Άδεια χρήσης λογισμικού. Νομική συμφωνία που χορηγεί στο χρήστη συγκεκριμένες άδειες χωρίς να του μεταβιβάζει την κυριότητα. Πατέντες. Πρέπει να αποδείξει ότι είναι νέο, μπορεί να χρησιμοποιηθεί και δεν είναι πρόδηλο σε άλλα με παρόμοια υπόβαθρα. Διαδικασία ακριβή και χρονοβόρα. 43
Ιδιοκτησία λογισμικού (3/3) Οι μηχανικοί λογισμικού δεν πρέπει να ασχολούνται μόνο με τεχνικά θέματα. Η ευθύνη τους είναι μεγαλύτερη και αφορά θέματα ηθικής, κοινωνικά και επαγγελματικά. Τα παραπάνω δεν είναι ξεκάθαρα όταν: Αναπτύσσονται στρατιωτικά συστήματα. Whistleblowing. 44
Evolutionary development Σχήμα: Evolutionary development. Πηγή: http://www.gemwriters.com/wpcontent/uploads/2014/01/evolutionary-process-model.jpg (Ανακτήθηκε 18 Ιουνίου, 2015). 45
Spiral model για την Διαδικασία Λογισμικού Σχήμα: Spiral model για την Διαδικασία Λογισμικού. Πηγή: http://slideplayer.gr/slide/3184447/ (διαφάνεια 24) (Ανακτήθηκε 18 Ιουνίου, 2015). 46
Βιβλιογραφία BROOKSHEAR, J. G. (2004), Computer Science: An Overview, 9th Edition, ISBN13: 9780321247261. 47
Τέλος Ενότητας
Σημείωμα Αναφοράς Copyright Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης, Δημοσθένης Πασχαλίδης. «ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ». Έκδοση: 1.0. Θεσσαλονίκη 2015. 49
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο. που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο. που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο. Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 50
Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς. το Σημείωμα Αδειοδότησης. τη δήλωση Διατήρησης Σημειωμάτων. το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει). μαζί με τους συνοδευόμενους υπερσυνδέσμους. 51
Σημείωμα Χρήσης Έργων Τρίτων Το Έργο αυτό κάνει χρήση των ακόλουθων έργων: Εικόνες/Σχήματα/Διαγράμματα/Φωτογραφίες. http://java.uom.gr/ood/slides/intro_software_engineerin g.ppt. http://www.gemwriters.com/wp- content/uploads/2014/01/evolutionary-process- Model.jpg. http://slideplayer.gr/slide/3184447/. BROOKSHEAR, J. G. (2004), Computer Science: An Overview, 9th Edition, ISBN13: 9780321247261. 52