ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Προγραμματισμός Η/Υ Ενότητα 1 η : Ανάπτυξη Λογισμικού & Προγραμματισμός Ι. Ψαρομήλιγκος Χ. Κυτάγιας Τμήμα Λογιστικής & Χρηματοοικονομικής
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοπός ενότητας Η ενότητα στοχεύει να εισάγει τον φοιτητή/φοιτήτρια στον προγραμματισμό Η/Υ μέσα στα πλαίσια της ευρύτερης εργασίας ανάπτυξης λογισμικού. 4
Περιεχόμενα ενότητας Προγραμματισμός Η/Υ Πρόγραμμα Η/Υ Γλώσσα Μηχανής Εκτέλεση Προγράμματος Υπολογιστικό Σύστημα Η Εργασία της Ανάπτυξης Λογισμικού Κύκλος Ζωής Λογισμικού Το πρόβλημα των αλλαγών Ποιοτικά χαρακτηριστικά λογισμικού Ευχρηστία λογισμικού 5
Προγραμματισμός Η/Υ (1) είναι η εργασία που ξεκινά από μια αρχική διατύπωση ενός υπολογιστικού προβλήματος (δηλαδή προβλήματος για το οποίο μπορούμε να βρούμε έναν αλγόριθμο που να το επιλύει) και καταλήγει σε προγράμματα ικανά να εκτελεστούν από έναν Η/Υ 6
Προγραμματισμός Η/Υ (2) Αποτελεί μια από τις εργασίες που γίνονται κατά την ανάπτυξη λογισμικού. Ο Η/Υ χωρίς πρόγραμμα δεν παράγει έργο. Με τον προγραμματισμό πραγματοποιείται η κωδικοποίηση ενός υπολογιστικού προβλήματος σε μορφή που μπορεί να εκτελεστεί (execute) από έναν Η/Υ. Ο Η/Υ εκτελεί κατά γράμμα τις εντολές του προγράμματος που συνέταξε ο προγραμματιστής. 7
Πρόγραμμα Η/Υ Μια ακολουθία εντολών γραμμένες για να τις εκτελέσει ένας Η/Υ με σκοπό να παραχθεί ένα επιθυμητό για το χρήστη αποτέλεσμα. Σύμφωνα με τον γενικό ορισμό που έδωσε ο Τζον φον Νόιμαν το 1945, το πρόγραμμα αποτελείται από μια συνεχή αλληλουχία εντολών τις οποίες ο υπολογιστής καλείται να εκτελέσει μία προς μία για να παραχθεί το επιθυμητό αποτέλεσμα. Πως γράφονται οι εντολές; Σε τι γλώσσα; 8
Γλώσσα Μηχανής Ο Η/Υ είναι κατασκευασμένος έτσι ώστε να φέρει σε πέρας εντολές που είναι γραμμένες σε μια πάρα πολύ απλή γλώσσα που καλείται «Γλώσσα Μηχανής» (Machine Language) Κάθε τύπος Η/Υ έχει τη δική του γλώσσα μηχανής και μπορεί να εκτελεί απευθείας ένα πρόγραμμα μόνο αν είναι γραμμένο σαυτήν τη γλώσσα. ένας Η/Υ μπορεί να εκτελεί προγράμματα γραμμένα και σε άλλες γλώσσες αρκεί αυτά να έχουν πρώτα μεταφραστεί σε γλώσσα μηχανής. 9
Εκτέλεση Προγράμματος από τη CPU Κεντρική Μονάδα Επεξεργασίας Central Processing Unit CPU Program Counter 1 0 1 1 1 0 1 0 Δεδομένα προς μνήμη Δεδομένα από μνήμη Διεύθυνση μνήμης για ανάγνωση ή εγγραφή RAM Κεντρική Μνήμη 0 0 1 1 1 0 1 0 1 1 0 0 1 1 1 0 0 1 1 0 1 0 1 1 1 0 1 0 1 0 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 (Θέση μνήμης 0) (Θέση μνήμης 1) (Θέση μνήμης 2) (Θέση μνήμης 3) (Θέση μνήμης ν) (Περιεχόμενο) Διευθύνσεις / Θέσεις μνήμης 10
Υπολογιστικό Σύστημα (1) Σύστημα (system) είναι ένα σύνολο συνεργαζόμενων οντοτήτων που μπορούν να εκτελούν μια ορισμένη εργασία με ορισμένους κανόνες Ένα υπολογιστικό σύστημα είναι ένα: δυναμικό σύστημα χρησιμοποιείται στην επίλυση προβλημάτων αλληλεπιδρά με το περιβάλλον του, δηλαδή, δέχεται δεδομένα εισόδου και παράγει δεδομένα εξόδου αποτελείται από υλικό και λογισμικό 11
Υπολογιστικό Σύστημα (2) Κεντρική Μονάδα Επεξεργασίας CPU Μνήμη Memory Καλώδιο Δικτύου (Network Cable) Κάρτα Δικτύου Network Interface Μονάδα Ελέγχου Εισόδου/Εξόδου Input/Output Controller Δίαυλος Δεδομένων (Data Bus) Δίαυλος Διευθύνσεων (Address Bus) Δίαυλος Σημάτων Ελέγχου (Control Bus) Οθόνη με τον Ελεγκτή της Πληκτρολόγιο Keyboard Video Controller & Monitor 12
Από τον φυσικό κόσμο στον ψηφιακό Φυσικός Κόσμος Ψηφιακός Κόσμος Μετάφραση Φυσική Γλώσσα Γλώσσα Μηχανής 13
Προγραμματισμός Προγραμματιστής Η/Υ Προγράμματα Μετάφρασης Γλώσσες Προγραμματισμού Εντολές σε Γλώσσα Προγραμματισμού Εντολές σε Γλώσσα Μηχανής 14
Μια άποψη για την εργασία του Προγραμματισμού 15
Αλγόριθμος ένας τρόπος για να περιγράψουμε με λεπτομέρειες τις εργασίες ενέργειες που πρέπει να γίνουν για να επιλύσουμε ένα πρόβλημα Αλγόριθμος είναι μια συστηματική διαδικασία που περιλαμβάνει αυστηρά καθορισμένα βήματα για την επίλυση ενός προβλήματος σε ένα πεπερασμένο αριθμό βημάτων Διαδικασία βήμα-βήμα Πεπερασμένος αριθμός βημάτων 16
Βασικές Εργασίες κατά την Ανάπτυξη Λογισμικού Παράδοση & Συντήρηση (Transition & Maintenance) Ανάλυση (Analysis) Κατασκευή (Construction) Σχεδίαση (Design) 17
Ανάλυση Απαιτήσεων Βασικό μέλημα να προσδιορίσουμε και να αναλύσουμε τις απαιτήσεις του χρήστη από το σύστημα λογισμικού https://www.youtube.com/watch?v=xtpyjprpyx8 Ο σκοπός στην ανάπτυξη λογισμικού είναι η ανάπτυξη ποιοτικού λογισμικού μέσα τόσο στα χρονικά πλαίσια όσο και στον προϋπολογισμό που διαθέτουμε και να ικανοποιεί της πραγματικές απαιτήσεις του τελικού χρήστη Ένα τέτοιο επιτυχημένο έργο εξαρτάται από την αποτελεσματική διαχείριση των απαιτήσεων (effective requirements management) Τα λάθη στις απαιτήσεις είναι τα πιο κοινά λάθη στην ανάπτυξη συστημάτων και τα πιο κοστοβόρα στην επιδιόρθωση 18
Σχεδίαση Ενώ οι απαιτήσεις πρέπει να προσδιορίσουν το τι (WΗΑΤ) θα κάνει το σύστημα λογισμικού η σχεδίαση πρέπει να προσδιορίσει το πως (HOW) θα το κάνει. Το σχέδιο του λογισμικού είναι ένας τρόπος περιγραφής της κατασκευής λογισμικού έτσι ώστε να μπορεί να εκτελεί τις επιθυμητές λειτουργίες και να έχει τα επιθυμητά χαρακτηριστικά που προσδιορίστηκαν κατά την ανάλυση Αρχιτεκτονική σχεδίαση Λεπτομερής σχεδίαση ( αλγόριθμος) 19
Κατασκευή Συγγραφή προγραμμάτων Περιλαμβάνει: Παραγωγή πηγαίου κώδικα (source code) Έλεγχος και διόρθωση σφαλμάτων (testing and debugging) Παραγωγή εκτελέσιμου κώδικα (executable code) 20
Παράδοση & Συντήρηση Εγκατάσταση στον πελάτη-χρήστη Εκπαίδευση Συντήρηση 21
Η Λογισμική Εργασία Λογισμική Εργασία (Software Proces) Μοντέλο Κύκλου Ζωής (Life Cycle Model) Διοίκηση Εργου (Project Management) Προ-Ανάπτυξη (Pre- Development) Ανάπτυξη (Development) Μετά-Ανάπτυξη (Post-Development) Ολοκληρωτική (Integral) Έναρξη Έργου (Project Initiation) Επιτήρηση Έλεγχος Έργου (Project Monitoring and Contrtol) Διοίκηση Ποιότητας (Quality Management) Εξερεύνηση Ιδέας (System Exploration) Ανάθεση Συστήματος (System Allocation) Εγκατάσταση (Installation) Λειτουργία (operation) Συντήρηση (Maintenance) Απαιτήσεις (Requirement) Σχεδίαση (Design) Υλοποίηση (Implementation) Επαλήθευση & Επικύρωση (Verification & Validation) Διοίκηση Σχηματισμών (Configuration Management) Ανάπτυξη Τεκμηρίωσης (Documentation Development) Κατάρτιση (Training) IEEE (Institute of Electrical and Electronics Engineers) Απόσυρση (Retirement) 22
Μακροσκοπική - Μικροσκοπική όψη 1 st Life Cycle Prod-1 V1 Top-Level Phase 1 Prod-2 V1 Top-Level Phase 2 Prod-3 V1 Top-Level Phase N 2 nd Life Cycle Top-Level Phase 1 Prod-2 V2 Top-Level Phase 2 Prod-3 V2 Top-Level Phase N 3 rd Life Cycle Top-Level Phase 2 Prod-3 V3 Top-Level Phase N Macro-View 1 st Cycle of Top Level Phase-2 2 nd Cycle of Top Level Phase-2 3 rd Cycle of Top Level Phase-2 Micro-View 23
Κύκλος Ζωής Λογισμικού ΣΥΛΛΗΨΗ ΚΑΤΑΣΚΕΥΗ ΛΕΙΤΟΥΡΓΙΑ ΣΥΝΤΗΡΗΣΗ ΑΠΟΣΥΡΣΗ Επιμέρους κύκλοι ζωής: αρχικής κατασκευής (initial development) (1 instance) λειτουργίας (operation) (many instances) συντήρησης (maintenance)(many instances) απόσυρσης (1 instance) 24
Το πρόβλημα των αλλαγών Ανάλυση Απαιτήσεων Αλλαγές στις απαιτήσεις Σχεδίαση Αποδοχή τελικού χρήστη 25
Ανάπτυξη Συστημάτων = Αλλαγές Άνθρωποι Πελάτες Προμηθευτές Managers Προσωπικό Τεχνολογία Hardware Software Networks Databases Επιχείρηση Προϊόντα Οργανισμός Κόστοι/Κέρδη Νομικές Απαιτήσεις 26
Κύκλος Ζωής Πρωτοτύπου Βασικός σκοπός της δημιουργίας πρωτοτύπου (Prototyping) η εκμαίευση πολύτιμης πληροφορίας για την κατασκευή του πραγματικού συστήματος Αρχική ανάλυση των απαιτήσεων του χρήστη (προσδιορισμός του σκοπού του πρωτοτύπου) Καθορισμός των στόχων του πρωτοτύπου Κάθε επανάληψη χρειάζεται «καθαρές» προσδιαγραφές Κατασκεύασε το πρωτότυπο το γρηγορότερο δυνατόν (RAD τεχνικές) Αξιολόγηση της λειτουργικότητας σε σχέση με τους στόχους. Επανέλαβε τον κύκλο μέχρι να επιτευχθούν οι στόχοι. Αρχική Ανάλυση Αξιολόγησε Ολοκλήρωση πρωτοτύπου Καθόρισε Στόχους Προσδιόρισε Κατασκεύασε 27
Άλλα ποιοτικά χαρακτηριστικά Τι λειτουργίες παρέχει το λογισμικό; Είναι αξιόπιστο; Έχει σφάλματα & πόσο εύκολα μπορούν να βρεθούν & να διορθωθούν; Μπορώ να το χρησιμοποιήσω εύκολα; Είναι αποδοτικό; Μπορεί να μεταφερθεί εύκολα σε μια νέα πλατφόρμα; (άλλο λειτουργικό σύστημα, άλλη συσκευή π.χ. PDA?) 28
Ευχρηστία (1) Η Ευχρηστία ορίζεται κατά ISO/DIS 9241-11 : η δυνατότητα ενός προϊόντος που χρησιμοποιείται από καθορισμένους χρήστες με καθορισμένους στόχους, υπό καθορισμένες συνθήκες χρήσης να είναι: αποτελεσματικό (effectiveness), αποδοτικό (efficiency) και να παρέχει υποκειμενική ικανοποίηση (satisfaction) στους χρήστες του. 29
Ευχρηστία (2) η ευχρηστία αναλύεται στα παρακάτω χαρακτηριστικά: Ευκολία εκμάθησης (learnability) Ευκολία κατανόησης (understandability) Ευκολία λειτουργίας (operability) 30
Τέλος Ενότητας