Ενότητα 7 Λογισμικό Πληροφοριακών Συστημάτων Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-1 Στόχοι και αντικείμενο ενότητας Περιγραφή βασικών τύπων λογισμικού Λειτουργικό σύστημα Λογισμικό εφαρμογών Γλώσσες προγραμματισμού Η/Υ Σύγχρονα εργαλεία και προσεγγίσεις Κύκλος ζωής λογισμικού Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-2
Ι. Λογισμικό Βασικοί τύποι Λογισμικό το σύνολο των εντολών που ρυθμίζουν τη λειτουργία ενός υπολογιστικού συστήματος Λογισμικό συστήματος Περιλαμβάνει το το σύνολο σύνολο των των προγραμμάτων που που ελέγχουν, διαχειρίζονται και και συντονίζουν τους τους πόρους πόρους των των Η/Υ Η/Υ Ανεξάρτητο από από συγκεκριμένες εφαρμογές Η λειτουργία του του δεν δεν είναι είναι άμεσα άμεσα αντιληπτή από από τον τον απλό απλό χρήστη χρήστη Λογισμικό εφαρμογών Περιλαμβάνει προγράμματα που που επιτρέπουν την την εκτέλεση συγκεκριμένων εργασιών των των χρηστών, π.χ. π.χ. τη τη δημιουργία κειμένων, τη τη σχεδίαση γραφικών, την την οργάνωση δεδομένων κλπ. κλπ. Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-3 Λειτουργικό Σύστημα Υπεύθυνο για τις ακόλουθες λειτουργίες Το λειτουργικό σύστημα ελέγχει και συντονίζει την λειτουργία των μονάδων περιφερειακής μνήμης, την κύρια μνήμη και την κεντρική μονάδα επεξεργασίας Διαχείριση συσκευών (χρήση οδηγών συσκευής) Διαχείριση διαδικασιών (processes) Επικοινωνία μεταξύ των διαδικασιών Διαχείριση μνήμης Διαχείριση αρχείων Λογισμικό εφαρμογών Λειτουργικό σύστημα Υλικό (hardware) (operating system) Το λειτουργικό σύστημα περιέχει τις απαραίτητες εντολές που υποδεικνύουν στην ΚΜΕ πώς να επικοινωνεί με τις υπόλοιπες μονάδες, άλλα προγράμματα και τους χρήστες Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-4
Λειτουργικό Σύστημα (συν.) Διαχείριση των πόρων του Η/Υ Διανομή χρόνου της ΚΜΕ ανάμεσα σε διάφορους χρήστες και διάφορες ταυτόχρονες εργασίες, κατανομή περιφερειακής μνήμης στα διάφορα αρχεία, εύρυθμη λειτουργία μονάδων εισόδου / εξόδου Διαχείριση των δεδομένων Εντοπισμός, αποθήκευση, τροποποίηση κατάλληλων αρχείων κλπ. Δρομολόγηση των διαφόρων εργασιών Επίβλεψη και έλεγχος των εργασιών που έχουν καθορισθεί από τους χρήστες ότι πρέπει να εκτελεσθούν στην ΚΜΕ Παροχή τρόπου επικοινωνίας μεταξύ χρηστών και υπολογιστικών συστημάτων Καθορισμός των συμβάσεων που αποτελούν τον προκαθορισμένο τρόπο επικοινωνίας των χρηστών Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-5 Λειτουργικά Συστήματα Βασικές έννοιες Τύποι επεξεργασίας Πολυεπεξεργασία (multiprocessing) Δύο ή περισσότερες (ισοδύναμες) μονάδες επεξεργασίας εκτελούν από κοινού μια διεργασία Κάθε μονάδα επεξεργασίας εργάζεται πάνω σε ένα διαφορετικό σύνολο από εντολές ή πάνω σε ένα διαφορετικό τμήμα της ίδιας της επεξεργασίας Αύξηση ταχύτητας επεξεργασίας και της υπολογιστικής ισχύος Πολυπρογραμματισμός (multiprogramming) Είναι η ταυτόχρονη εκτέλεση περισσοτέρων του ενός προγραμμάτων από τον ίδιο Η/Υ Τα προγράμματα φορτώνονται κανονικά στη μνήμη και η επεξεργασία τους γίνεται εκ περιτροπής κατά μικρά χρονικά διαστήματα Στην πραγματικότητα, η ΚΜΕ επεξεργάζεται μόνο ένα πρόγραμμα κάθε συγκεκριμένη στιγμή. Επιτυγχάνεται πολυπρογραμματισμός γιατί την ίδια στιγμή μπορεί να γίνεται επεξεργασία μέρους άλλου προγράμματος από άλλο τμήμα του Η/Υ Βέλτιστη χρήση επιμέρους τμημάτων (μνήμη, επεξεργαστής, περιφερειακά) ενός Η/Υ και μείωση του συνολικού χρόνου επεξεργασίας των προγραμμάτων Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-6
Λειτουργικά Συστήματα Βασικές έννοιες (συν.) Άλλα θέματα Ιδεατή μνήμη (αποθήκευση) virtual memory (storage) Βοηθητική μνήμη (π.χ. στο δίσκο), η οποία χρησιμοποιείται σε συνεργασία με την κύρια μνήμη, όταν η χωρητικότητα της τελευταίας δεν επαρκεί για την εκτέλεση ενός μεγάλου προγράμματος Το πρόγραμμα χωρίζεται σε τμήματα (segments ή pages ), τα οποία αποθηκεύονται στη βοηθητική μνήμη και μεταφέρονται διαδοχικά στην κύρια, όπου παραμένουν μόνον όσο χρειάζεται για την επεξεργασία segments: μεταβλητό μέγεθος, pages: προκαθορισμένο μέγεθος Χρονικός καταμερισμός (time sharing) Όλα οι πόροι ενός Η/Υ είναι στη διάθεση δύο ή περισσοτέρων χρηστών Ο χρόνος της ΚΜΕ διαιρείται σε πολύ μικρά τμήματα (time slices), της τάξης των 2 milliseconds Η ΚΜΕ διαθέτει τα τμήματα χρόνου διαδοχικά σε κάθε χρήστη Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-7 Λειτουργικά Συστήματα Βασικές έννοιες (συν.) Αριθμός χρηστών ΛΣ ενός χρήστη (single-user) Υποστηρίζουν έναν μόνο χρήστη κάθε φορά ΛΣ πολλαπλών χρηστών (multi-user) Επιτρέπουν σε δύο ή περισσότερους χρήστες να έχουν ταυτόχρονη πρόσβαση στο υπολογιστικό σύστημα Αριθμός εργασιών ΛΣ μιας εργασίας (single-tasking) Επιτρέπουν να εκτελείται μόνο μια εργασία κάθε φορά Η εργασία πρέπει να ολοκληρωθεί για να αρχίσει η εκτέλεση της επομένης ΛΣ πολλαπλών εργασιών (multi-tasking) Δυνατότητα εκτέλεσης πολλών εργασιών ταυτοχρόνως Επιτρέπουν την εισαγωγή πολλών εργασιών σε έναν Η/Υ με μία ΚΜΕ Εναλλασσόμενη επεξεργασία εργασιών με σκοπό την ταυτόχρονη απεικόνιση των αποτελεσμάτων τους στην οθόνη του χρήστη Πολυπρογραμματισμός σε σύστημα ενός χρήστη Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-8
Λειτουργικά Συστήματα Συστατικά μέρη Επεξεργαστής εντολών (command processor) Παρακολουθεί το πληκτρολόγιο, το ποντίκι και γενικά, όλες τις προσαρτημένες στον Η/Υ μονάδες εισόδου και μεταφράζει τις σχετικές εντολές Χρονοδρομολογητής (scheduler) Διευθετεί την εκτέλεση του προγράμματος Σύστημα Διαχείρισης Αρχείων (file manager) Καθιστά δυνατή τη δημιουργία, διαγραφή ή ανεύρεση ενός αρχείου μέσα σ ένα μέσο αποθήκευσης Καλείται από τον χρονοδρομολογητή όταν χρειάζεται να βρει το απαραίτητο προς εκτέλεση πρόγραμμα Κατανεμητής Πόρων (resource allocator) Συντονίζει την εκχώρηση των πόρων του Η/Υ (π.χ., επεξεργαστή, μνήμης) Επιλογέας (dispatcher) Σε ένα σύστημα με χρονικό καταμερισμό, συντονίζει τη καταχώρηση της μηχανής μεταξύ των διαφόρων εργασιών που είναι έτοιμες προς εκτέλεση μετά από μία παύση, στάση ή διακοπή Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-9 Λειτουργικά Συστήματα Παραδείγματα Λειτουργικό Σύστημα Windows 9x Windows NT & 2000 Windows CE OS/2 UNIX Mac OS DOS Χαρακτηριστικά 32-bit operating system, GUI, multitasking, networking capabilities 32-bit operating system not limited to Intel chips, multitasking, multiprocessing, intensive networking Pared-down for handheld computers, wireless communication devices 32-bit, developed for IBM PS/2, supports multitasking & networking For powerful PCs, workstations, minicomputers. Supports multitasking, multi-user processing & networking. Portable to various computer platforms For Macintosh computers. Supports multitasking & networking.powerful multimedia capabilities For IBM (PC-DOS) and IBM-compatible (MS-DOS) PCs. Limits program use of memory to 640K Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-10
Επεξεργαστές κειμένου (word processing software) Λογισμικό εφαρμογών Λογιστικά φύλλα (spreadsheets) Λογισμικό διαχείρισης δεδομένων (data management software) Λογισμικό παρουσιάσεων (presentation graphics) Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-11 Λογισμικό εφαρμογών (συν.) Ολοκληρωμένα πακέτα λογισμικού (integrated software packages) Ηλεκτρονικό ταχυδρομείο (e-mail software) Εργαλεία περιήγησης του Διαδικτύου (Web browsers) Λογισμικό ομάδων εργασίας (groupware) Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-12
ΙΙ. Προγραμματισμός Η/Υ Βήματα ανάπτυξης ενός προγράμματος Ορισμός του προβλήματος Λύση του προβλήματος Ανάπτυξη του αλγορίθμου Σχεδιασμός διαγράμματος ροής Δημιουργία ψευδοκώδικα Κωδικοποίηση του προγράμματος Διόρθωση λαθών του προγράμματος Σύνταξη τεκμηρίωσης Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-13 Προγραμματισμός Η/Υ (συν.) Αρχή Διάβασε όνομα φοιτητή open STUDENT.DAT read STUDENT_NAME Τέλος αρχείου? Όχι Ναι Τέλος while not EOF do read STUDENT_INFO if YEAR = 1 then print STUDENT_NAME read STUDENT_NAME Διάβασε υπόλοιπα στοιχεία φοιτητή end while close STUDENT.DAT end Είναι πρωτοετής? Όχι Ναι Τύπωσε όνομα φοιτητή ψευδοκώδικας Διάβασε όνομα φοιτητή Διάγραμμα ροής Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-14
Γλώσσες προγραμματισμού Γλώσσα Μηχανής (Machine Language) - Γλώσσα πρώτης γενιάς (40 s) Είναι η φυσική γλώσσα των Η/Υ Είναι κώδικας σε δυαδική μορφή (0,1) Διακρίνεται για την ταχύτητα εκτέλεσης των εντολών της και την βέλτιστη χρήση της κύριας μνήμης Είναι δύσκολη στην χρήση της, στον εντοπισμό και διόρθωση τυχόν λαθών Συμβολική γλώσσα (Assembly Language) - Γλώσσα δεύτερης γενιάς (50 s) Μνημονική αναπαράσταση Είναι πιο εύκολη στην γραφή και στην κατανόηση Η εκτέλεση της απαιτεί την μετάφραση της σε γλώσσα μηχανής μέσω των συμβολομεταφραστών (assemblers) Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-15 Γλώσσες προγραμματισμού (συν.) Γλώσσες υψηλού επιπέδου (High level Languages) - Γλώσσες τρίτης Γενιάς (60 s) Εννοιολογικά βρίσκονται πιο κοντά στις ανθρώπινες γλώσσες (χρήση ενός μικρού συνόλου από αγγλικές λέξεις) Για να εκτελεστεί ένα τέτοιο πρόγραμμα γίνεται χρήση μεταφραστών (compilers) και των διερμηνευτών (interpreters) Cobol, Fortran, Basic, Logo, Pascal, Ada, C Γλώσσες τέταρτης γενιάς (80 s) Ο προγραμματιστής δεν περιγράφει αλγορίθμους, απλά καθορίζει τα δεδομένα και τις ενέργειες που πρέπει να γίνουν και το ίδιο το εργαλείο δημιουργεί τον κώδικα σε κάποια γλώσσα προγραμματισμού Αντικειμενοστραφείς (Object-Oriented) γλώσσες προγραμματισμού Π.χ C++, Java, Visual Basic Γλώσσες ανάπτυξης εφαρμογών τεχνητής νοημοσύνης, Π.χ LISP, PROLOG Γλώσσες ερωταποκρίσεων Γεννήτριες προγραμμάτων Συστήματα διαχείρισης βάσεων δεδομένων Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-16
Γλώσσες προγραμματισμού (συν.) Oι παραπάνω γλώσσες προκειμένου να γίνουν κατανοητές από τον Η/Υ πρέπει να μεταφραστούν σε γλώσσα μηχανής Εργαλεία μετάφρασης Συμβολομεταφραστής (assembler) μεταφράζει προγράμματα σε γλώσσα assembly Μεταγλωττιστής (compiler) Ελέγχει το πρόγραμμα για συντακτικά λάθη και το μεταφράζει ολόκληρο πριν ξεκινήσει η εκτέλεση οποιουδήποτε μέρους του Η εκτέλεση του προγράμματος γίνεται κατόπιν απαίτησης του ίδιου του χρήστη Κάθε γλώσσα έχει το δικό της μεταγλωττιστή Το πρόγραμμα που είναι γραμμένο σε γλώσσα υψηλού επιπέδου λέγεται πηγαίος κώδικας (source code) ενώ το αποτέλεσμα της μεταγλώττισης λέγεται αντικειμενικός κώδικας (object code) Διερμηνευτής (interpreter) Η μετάφραση (και η εκτέλεση) γίνεται γραμμή-γραμμή σε αντίθεση με τον μεταγλωττιστή ο οποίος μεταφράζει ολόκληρο το πρόγραμμα Αντικειμενικό πρόγραμμα δεν δημιουργείται και δεν χρησιμοποιείται Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-17 ΙIΙ. Σύγχρονα εργαλεία και προσεγγίσεις Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-18
Αντικειμενοστραφής προγραμματισμός Παράδειγμα - Σχεδιασμός λειτουργικού συστήματος Τα διάφορα jobs ταξινομούνται ανάλογα με το αν έχουν high priority, medium priority, ή low priority. Πρέπει να υπάρχουν τρία queues για τα incoming jobs, ένα για κάθε τύπο job. Όταν στέλνεται ένα job, αυτό προστίθεται στο κατάλληλο queue, ενώ όταν το λειτουργικό σύστημα αποφασίζει ότι το job είναι έτοιμο προς εκτέλεση, τότε αυτό αποσύρεται από το αντίστοιχο queue Ολοκλήρωση δεδομένων (data) και διεργασιών (procedures) σε ένα αντικείμενο (object) Αποστολή μηνυμάτων (messages) στο object για να κάνει κάποια διεργασία Ενθυλάκωση δεδομένων (encapsulated data) Επαναχρησιμοποιήσιμος κώδικας (reusable code) Μείωση χρόνου και κόστους ανάπτυξης λογισμικού Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-19 Αντικειμενοστραφής προγραμματισμός (συν.) Objects Το προϊόν σχεδιάζεται με βάση τα abstract data types Τα αντικείμενα (objects) είναι instantiations αυτών των abstract data types Class: abstract data type η οποία υποστηρίζει inheritance Τα objects είναι instantiations των classes Κληρονομιά (inheritance) Έστω humanbeing μία class Ένα humanbeing έχει attributes, όπως age, height, gender Καταχώριση τιμών στα attributes κατά την περιγραφή του object Ορισμός της parent ως subclass του humanbeing Ένας parent έχει όλα τα attributes του humanbeing και, επιπλέον, τα δικά του attributes (name_of_oldest_child, num_of_children) Ένας parent «κληρονομεί» όλα τα attributes του humanbeing Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-20
Αντικειμενοστραφής προγραμματισμός (συν.) Πολυμορφισμός και dynamic binding Το μόνο που χρειάζεται είναι η myfile.open() Η κατάλληλη μέθοδος καλείται σε run-time (δυναμικά) Η μέθοδος open μπορεί να εφαρμοστεί σε objects διαφορετικών classes (πολυμορφισμός) FileClass virtual method open DiskFileClass Implementation of method open for a disk file TapeFileClass Implementation of method open for a tape file DisketteFileClass Implementation of method open for a diskette file Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-21 HTML Hypertext Markup Language Γλώσσα περιγραφής μιας ιστοσελίδας με δυνατότητες υπερκειμένου και υπερμέσων Χρήση εντολών, γνωστές ως ετικέτες (tags), για καθορισμό του τρόπου εμφάνισης των διαφόρων μέσων (κείμενο, γραφικά, βίντεο, ήχος) σε μια ιστοσελίδα και δημιουργία δυναμικών συνδέσμων (links) σε άλλα αρχεία (αποθηκευμένα στον ίδιο ή σε απομακρυσμένους Η/Υ) HTML editors: Claris Home Page, Adobe PageMill, Microsoft s FrontPage Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-22
XML extensible Markup Language «what Java did for portability of code, XML claims to do for portability of data» [McLaughlin, Java and XML] Είναι μια μεταγλώσσα που χρησιμοποιείται για να ορίσει άλλες γλώσσες (πολύ πιο απλή από την SGML) Δεν ορίζει ούτε το σύνολο των tags ούτε τη «γραμματική» μιας γλώσσας. Άρα, είναι πλήρως προεκτάσιμη <?xml version="1.0"?> <dining-room> <table type="round" wood="maple"> <manufacturer>neoset</manufacturer> <price>$549.9</price> </table> <chair wood="oak"> <quantity>4</quantity> <quality>excellent</quality> </chair> </dining-room> Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-23 Περιλαμβάνει: ΙV. Κύκλος Ζωής Λογισμικού Μοντέλο κύκλου ζωής Άνθρωποι (managers, experts, programmers, ) Εργαλεία CASE (computer-aided software engineering) Φάσεις κύκλου ζωής: Απαιτήσεων (requirements) Ορισμού Προδιαγραφών (specification) Σχεδιασμού (design) Υλοποίησης (implementation) Συνένωσης Κώδικα (integration) Συντήρησης (maintenance) Απόσυρσης (retirement) Ανάλυση απαιτήσεων Επαλήθευση Καθορισμός προδιαγραφών Επαλήθευση Σχεδιασμός Επαλήθευση Υλοποίηση Έλεγχος Συνένωση κώδικα Έλεγχος Αλλαγμένες απαιτήσεις Επαλήθευση Κατάσταση λειτουργίας Ανάπτυξη Συντήρηση Απόσυρση Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-24
Φάση συντήρησης Σχετικά κόστη κάθε φάσης Αντιστοιχεί στο 67% του ολικού κόστους "Καλό" είναι το λογισμικό που συντηρείται, ενώ το "κακό" πετιέται Τύποι συντήρησης Διορθωτική (corrective maintenance) - 20% Επαυξητική 80% Τελειοποίησης (perfective maintenance) -60% Προσαρμογής (adaptive maintenance) - 20% Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-25 Προϋπόθεση Φάση Ανάλυσης Απαιτήσεων Η διαδικασία θεωρείται εύλογη οικονομικά Αναλυτική διερεύνηση του προβλήματος Κατανόηση του τι χρειάζεται και όχι τι θέλει ο πελάτης Καταγραφή περιορισμών (constraints) Περαιτέρω ανάλυση και «εκλέπτυνση» του προβλήματος Είναι το προϊόν τεχνικά εφικτό; Γίνεται στα πλαίσια του budget του πελάτη; Βασικός έλεγχος φάσης απαιτήσεων Γρήγορο prototype Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-26
Φάση Καθορισμού Προδιαγραφών Τα σχετικά έγγραφα έχουν νομική υπόσταση (contract) Πρέπει να συμπληρωθούν έτσι ώστε να καθορίζουν επακριβώς το πρόβλημα Οι προδιαγραφές δεν πρέπει να είναι: Διφορούμενες, Ημιτελείς, Αντιφατικές (contradictory) Μετά τη συμπλήρωση των σχετικών εγγράφων: Αναλυτικός σχεδιασμός παραγωγής Υπολογισμός κόστους Τι πρέπει να κάνει το σύστημα; Software product management plan (SPMP) Παραδοτέα (deliverables) Βασικά χρονικά σημεία (milestones) Budget Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-27 Φάση Σχεδιασμού Καθορισμός σπονδύλων (modules) συστήματος και της μεταξύ τους επικοινωνίας (architectural design) Επιλογή αλγορίθμων, δομών δεδομένων και ροών δεδομένων (detailed design) Καταγραφή των σχετικών αποφάσεων Περιπτώσεις dead-end (backtrack and redesign) Συντήρηση Στην ιδανική περίπτωση, ο σχεδιασμός θα πρέπει να είναι openended Έλεγχος φάσης σχεδιασμού Αντιστοίχιση με προδιαγραφές Αναζήτηση λαθών λογικής, διαπροσωπείας (interface) μεταξύ των modules, απουσίας exception handling, Πώς πρέπει να το κάνει; Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-28
Φάση Υλοποίησης Υλοποίηση του αναλυτικού σχεδιασμού (κώδικας) Τεκμηρίωση Σχόλια (comments) στον κώδικα Επιπλέον: ανάλυση περιπτώσεων, αποτελέσματα, Έλεγχος φάσης υλοποίησης Code review Test cases Informal testing (desk checking) Formal testing (Software Quality Assurance Group) Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-29 Φάση Συνένωσης Κώδικα Συνένωση «σπονδύλων» λογισμικού και έλεγχος σωστής λειτουργίας του προϊόντος ως ενιαία οντότητα Υλοποίηση και συνένωση κώδικα πρέπει να γίνονται παράλληλα Έλεγχος φάσης Product testing (functionality against specifications, περιορισμοί, ορθότητα, αξιοπιστία, «ευρωστία» (robustness), συμβατότητα με άλλο λογισμικό, ) Acceptance testing (στον πελάτη, με πραγματικά δεδομένα) Commercial off-the-shelf software (COTS) Alpha version, beta version (σχεδόν τελική) Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-30
Συντήρηση Φάση Συντήρησης Περιλαμβάνει οποιαδήποτε αλλαγή αφότου ο πελάτης έχει παραλάβει το προϊόν λογισμικού Πρέπει πάντα να θεωρείται ως αναπόσπαστο τμήμα της διαδικασίας ανάπτυξης λογισμικού Κοστίζει περισσότερο απ ότι όλες οι άλλες φάσεις μαζί Βασικό πρόβλημα η έλλειψη (καλής) τεκμηρίωσης Έλεγχοι στη φάση αυτή Όχι μόνο αν έγιναν οι απαιτούμενες αλλαγές, αλλά και αν αυτές επέφεραν κάποιες άλλες, ανεπιθύμητες αλλαγές (regression testing) Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-31 Φάση Απόσυρσης Το «καλό» λογισμικό συντηρείται Το λογισμικό γράφεται από την αρχή όταν: Απαιτούνται δραστικές αλλαγές στο σχεδιασμό του τελικού προϊόντος Η συντήρηση καταντά αδύνατη ή ασύμφορη Αντικατασταθεί το υλικό (hardware) ή το λειτουργικό σύστημα Η τεκμηρίωση είναι ανύπαρκτη, ελλιπής ή ανακριβής Πραγματική (ολική) απόσυρση ενός προϊόντος είναι σπάνιο φαινόμενο Πληροφοριακά Συστήματα Διοίκησης Ι Διδάσκων: Νίκος Καρακαπιλίδης 7-32