ΣΕΧΝΟΛΟΓΙΑ ΛΟΓΙΜΙΚΟΤ ΔΕΤΣΕΡΗ ΔΙΑΛΕΞΗ ΔΙΑΔΙΚΑΙΑ ΠΑΡΑΓΩΓΗ ΛΟΓΙΜΙΚΟΤ
ΠΕΡΙΕΦΟΜΕΝΑ Δομικά τοιχεία Λογισμικού Διαδικασία Παραγωγής Λογισμικού Αυτοματοποίηση Διαδικασιών Παραγωγής Λογισμικού Θεμελιώδεις Δραστηριότητες Λογισμικού Εξαγωγή Προδιαγραφών Λογισμικού χεδιασμός και Τλοποίηση Λογισμικού Επικύρωση Λογισμικού Εξέλιξη Λογισμικού Ας Μιλήσουμε για Κόστη
ΔΟΜΙΚΑ ΣΟΙΦΕΙΑ ΛΟΓΙΜΙΚΟΤ Οι χρήστες αντιλαμβάνονται ως λογισμικό το «πρόγραμμα» μαζί µε το αντίστοιχο εγχειρίδιο χρήσης μέρος του λογισμικού όμως είναι και πολλά ενδιάμεσα προϊόντα που παράγονται στις φάσεις που μεσολαβούν από τον καθορισμό των εργασιών που θα αυτοματοποιηθούν µε τη βοήθεια του λογισμικού μέχρι την παραγωγή του εκτελέσιμου κώδικα Σα προϊόντα αυτά είτε είναι ενδιάμεσα συστατικά λογισμικού που παράγονται μέχρι να φτάσουμε στον εκτελέσιμο κώδικα (πηγαίος κώδικας, κώδικας μορφής object, βιβλιοθήκες κ.ά.) είτε περιγράφουν τη δομή και τη συμπεριφορά του λογισμικού (τεκμηρίωση λογισμικού (software documentation)) και βρίσκονται σε έντυπη ή σε ηλεκτρονική μορφή ε αυτή την τεκμηρίωση του λογισμικού δεν καταγράφεται το γιατί το λογισμικό εκτελεί κάποιες εργασίες ή γιατί τις εκτελεί µε ένα συγκεκριμένο τρόπο, αλλά το ποιες εργασίες θα εκτελεί, πώς θα τις εκτελεί, ποιες δομές δεδομένων θα χρησιμοποιηθούν κ.ά.
ΔΙΑΔΙΚΑΙΑ ΠΑΡΑΓΩΓΗ ΛΟΓΙΜΙΚΟΤ Μια διαδικασία παραγωγής λογισμικού είναι ένα σύνολο δραστηριοτήτων που οδηγούν στην παραγωγή ενός προϊόντος λογισμικού Οι δραστηριότητες αυτές είτε εμπεριέχουν ανάπτυξη λογισμικού από την αρχή, είτε το νέο λογισμικό αναπτύσσεται με επέκταση και τροποποίηση υπαρχόντων συστημάτων, καθώς και με διευθέτηση και ενοποίηση έτοιμων συστατικών στοιχείων λογισμικού ή στοιχείων συστημάτων που βρίσκονται στο εμπόριο
ΑΤΣΟΜΑΣΟΠΟΙΗΗ ΔΙΑΔΙΚΑΙΩΝ ΠΑΡΑΓΩΓΗ ΛΟΓΙΜΙΚΟΤ Οι διαδικασίες παραγωγής λογισμικού είναι πολύπλοκες, καθώς είναι διανοητικές και δημιουργικές Σα αποτελέσματα κάθε προσπάθεια αυτοματοποίησης της ανθρώπινης κρίσης και δημιουργικότητας είναι περιορισμένα εργαλεία CASE (Computer-Assisted Software Engineering) Ο λόγος για την περιορισμένη αποτελεσματικότητα αυτών των εργαλείων είναι η τεράστια ποικιλομορφία των διαδικασιών παραγωγής λογισμικού Ιδανική διαδικασία δεν υπάρχει!!! Π.χ.: σε κρίσιμα συστήματα απαιτείται μια πολύ δομημένη διαδικασία ανάπτυξης, ενώ σε επιχειρηματικά συστήματα, όπου οι απαιτήσεις μεταβάλλονται συνεχώς, μια πιο ευέλικτη προσέγγιση είναι αποτελεσματικότερη
ΘΕΜΕΛΙΩΔΕΙ ΔΡΑΣΗΡΙΟΣΗΣΕ ΛΟΓΙΜΙΚΟΤ Παρόλο που υπάρχουν πολλές διαδικασίες παραγωγής, οι παρακάτω θεμελιώδεις δραστηριότητες είναι κοινές σε όλες: Εξαγωγή προδιαγραφών λογισμικού χεδιασμός και υλοποίηση του λογισμικού Επικύρωση του λογισμικού Εξέλιξη του λογισμικού Οι τέσσερεις αυτές δραστηριότητες οργανώνονται με διαφορετικό τρόπο σε κάθε διαδικασία ανάπτυξης Δεν υπάρχει μοναδικός τρόπος ανάλογα με το μοντέλο παραγωγής και τις απαιτήσεις του συστήματος
ΕΞΑΓΩΓΗ ΠΡΟΔΙΑΓΡΑΥΩΝ ΛΟΓΙΜΙΚΟΤ (1/8) Είναι ιδιαίτερα κρίσιμο στάδιο, αφού κάθε λάθος σε αυτό το στάδιο οδηγεί αναπόφευκτα σε προβλήματα σχεδίασης και υλοποίησης Έχει ως στόχο την κατανόηση και τον ορισμό των υπηρεσιών που απαιτούνται από το σύστημα, καθώς και τον προσδιορισμό των περιορισμών που επιβάλλονται για τη λειτουργία και την ανάπτυξη του συστήματος Η διαδικασία οδηγεί στην παραγωγή ενός εγγράφου απαιτήσεων, το οποίο αποτελεί τις προδιαγραφές του συστήματος το έγγραφο οι απαιτήσεις παρουσιάζονται σε δύο επίπεδα λεπτομέρειας: ε υψηλό επίπεδο για τους χρήστες και τους πελάτες Λεπτομερής παρουσίαση των προδιαγραφών του συστήματος για τους κατασκευαστές
ΕΞΑΓΩΓΗ ΠΡΟΔΙΑΓΡΑΥΩΝ ΛΟΓΙΜΙΚΟΤ (2/8) Η διαδικασία έχει τέσσερις κύριες φάσεις: Μελέτη σκοπιμότητας (feasibility study) Εξαγωγή και ανάλυση απαιτήσεων (requirements elicitation and analysis) Προδιαγραφή απαιτήσεων (requirements specification) Επικύρωση απαιτήσεων (requirements validation)
ΕΞΑΓΩΓΗ ΠΡΟΔΙΑΓΡΑΥΩΝ ΛΟΓΙΜΙΚΟΤ (3/8) Μελέτη σκοπιμότητας: Επιχειρείται μια εκτίμηση του εάν οι ανάγκες των χρηστών μπορούν να ικανοποιηθούν με τις τρέχουσες τεχνολογίες λογισμικού και υλικού Εξετάζεται για το εάν μπορεί να αναπτυχθεί μέσα στα όρια του οικονομικού προϋπολογισμού και εάν είναι συμφέρον ως προς το κόστος από επιχειρηματική άποψη Είναι γρήγορη και φθηνή Παρέχει χρήσιμες πληροφορίες για το εάν το έργο πρέπει να προχωρήσει σε πιο λεπτομερή ανάλυση
ΕΞΑΓΩΓΗ ΠΡΟΔΙΑΓΡΑΥΩΝ ΛΟΓΙΜΙΚΟΤ (4/8) Εξαγωγή και ανάλυση απαιτήσεων: Διαδικασία από την οποία προκύπτουν οι απαιτήσεις του συστήματος μέσω της εξέτασης των υπαρχόντων συστημάτων, συζητήσεων με τους χρήστες και προμηθευτές, ανάλυση εργασιών, κ.ά. Μπορεί να περιλάβει την ανάπτυξη ενός ή περισσοτέρων μοντέλων και πρωτοτύπων του συστήματος κατανόηση του συστήματος
ΕΞΑΓΩΓΗ ΠΡΟΔΙΑΓΡΑΥΩΝ ΛΟΓΙΜΙΚΟΤ (5/8) Προδιαγραφή απαιτήσεων: Διαδικασία κατά την οποία οι πληροφορίες που συγκεντρώθηκαν κατά την ανάλυση μεταφέρονται σε ένα έγγραφο που ορίζει ένα σύνολο απαιτήσεων Σο έγγραφο μπορεί να περιλαμβάνει δύο τύπους απαιτήσεων: Απαιτήσεις χρηστών: αφηρημένες διατυπώσεις των απαιτήσεων του συστήματος για τον πελάτη και τους τελικούς χρήστες Απαιτήσεις συστήματος: λεπτομερής περιγραφή της λειτουργικότητας του συστήματος
ΕΞΑΓΩΓΗ ΠΡΟΔΙΑΓΡΑΥΩΝ ΛΟΓΙΜΙΚΟΤ (6/8) Επικύρωση απαιτήσεων: Οι απαιτήσεις ελέγχονται για τη ρεαλιστικότητα, τη συνέπεια και την πληρότητά τους ε αυτή τη φάση συχνά εντοπίζονται λάθη ή παραλείψεις στο έγγραφο απαιτήσεων Σο έγγραφο τροποποιείται ώστε να διορθωθούν τα προβλήματα
ΕΞΑΓΩΓΗ ΠΡΟΔΙΑΓΡΑΥΩΝ ΛΟΓΙΜΙΚΟΤ (7/8) Οι προαναφερόμενες δραστηριότητες δεν πραγματοποιούνται με αυστηρή χρονική σειρά Η ανάλυση των απαιτήσεων συνεχίζεται κατά τον ορισμό και την προδιαγραφή, καθώς νέες απαιτήσεις αναδύονται καθ όλη τη διάρκεια της διαδικασίας οι δραστηριότητες της ανάλυσης, του ορισμού και της προδιαγραφής είναι αλληλένδετες
ΕΞΑΓΩΓΗ ΠΡΟΔΙΑΓΡΑΥΩΝ ΛΟΓΙΜΙΚΟΤ (8/8) Γραφική αναπαράσταση διαδικασίας Πηγή: Sommerville, I. (2008). Βασικές Αρχές Τεχνολογίας Λογισμικού, Κλειδάριθμος, Αθήνα: 115
ΦΕΔΙΑΜΟ ΚΑΙ ΤΛΟΠΟΙΗΗ ΛΟΓΙΜΙΚΟΤ (1/5) Είναι η διαδικασία της μετατροπής ενός συνόλου προδιαγραφών σε ένα σύστημα λογισμικού που λειτουργεί Ο σχεδιασμός του λογισμικού είναι μια περιγραφή της δομής του λογισμικού που πρόκειται να υλοποιηθεί, των δεδομένων που αποτελούν μέρος τους συστήματος, των διασυνδέσεων μεταξύ των συστατικών στοιχείων και, ενίοτε, των αλγορίθμων που θα χρησιμοποιηθούν Οι σχεδιαστές δεν καταλήγουν αμέσως σε ένα τελικό σχεδιασμό, αλλά τον αναπτύσσουν μέσω επαναληπτικών κύκλων προσδίδεται αυστηρότητα και λεπτομέρεια καθώς ο σχεδιασμός εξελίσσεται με διαρκείς επιστροφές για τη διόρθωση προηγούμενων σχεδιασμών Η διαδικασία του σχεδιασμού μπορεί να περιλαμβάνει την ανάπτυξη πολλών μοντέλων του συστήματος, σε διαφορετικά επίπεδα αφαίρεσης Καθώς αποδομείται το προϊόν ενδέχεται να διαπιστωθούν λάθη σε προηγούμενα μοντέλα σχεδιασμού Σο προϊόν κάθε δραστηριότητας σχεδιασμού είναι ένα σύνολο προδιαγραφών για το επόμενο στάδιο
ΦΕΔΙΑΜΟ ΚΑΙ ΤΛΟΠΟΙΗΗ ΛΟΓΙΜΙΚΟΤ (2/5) Η γραφική αναπαράσταση υπονοεί ότι τα επιμέρους στάδια πραγματοποιούνται με τη σειρά, ενώ στην πραγματικότητα διαπλέκονται Πηγή: Sommerville, I. (2008). Βασικές Αρχές Τεχνολογίας Λογισμικού, Κλειδάριθμος, Αθήνα: 116
ΦΕΔΙΑΜΟ ΚΑΙ ΤΛΟΠΟΙΗΗ ΛΟΓΙΜΙΚΟΤ (3/5) Όπως αναφέρεται και στο διάγραμμα, οι δραστηριότητες της διαδικασίας σχεδιασμού είναι: Αρχιτεκτονικός σχεδιασμός: προσδιορίζονται και τεκμηριώνονται τα υποσυστήματα που απαρτίζουν το σύστημα και οι μεταξύ τους σχέσεις Αφηρημένες προδιαγραφές: για κάθε υποσύστημα, παράγεται ένα σύνολο αφηρημένων προδιαγραφών των υπηρεσιών του και τους περιορισμούς με τους οποίους θα πρέπει να λειτουργεί Σχεδιασμός διασυνδέσεων: για κάθε υποσύστημα, σχεδιάζεται και τεκμηριώνεται η διασύνδεση του με τα άλλα υποσυστήματα. Οι προδιαγραφές πρέπει να είναι τόσο σαφείς ώστε να επιτρέπουν να χρησιμοποιείται το υποσύστημα χωρίς καμία γνώση για τη λειτουργία του Σχεδιασμός συστατικών στοιχείων: οι υπηρεσίες κατανέμονται σε συστατικά στοιχεία και σχεδιάζονται οι διασυνδέσεις για τα στοιχεία αυτά Σχεδιασμός δομών δεδομένων: σχεδιάζονται και προδιαγράφονται οι δομές δεδομένων που θα χρησιμοποιηθούν για την υλοποίηση του συστήματος Σχεδιασμός αλγορίθμων: σχεδιάζονται και προδιαγράφονται λεπτομερών οι αλγόριθμοι που θα χρησιμοποιηθούν για την παροχή υπηρεσιών
ΦΕΔΙΑΜΟ ΚΑΙ ΤΛΟΠΟΙΗΗ ΛΟΓΙΜΙΚΟΤ (4/5) την πράξη όμως Σα δύο τελευταία στάδια του σχεδιασμού (σχεδιασμός των δομών δεδομένων και των αλγορίθμων) μπορούν να καθυστερήσουν μέχρι τη διαδικασία υλοποίησης ε κάποιες σχεδιαστικές προσεγγίσεις, οι διασυνδέσεις των υποσυστημάτων μπορούν να σχεδιαστούν μετά τον καθορισμό των δομών δεδομένων Σο στάδιο των αφηρημένων προδιαγραφών συχνά παραλείπεται, αλλά παραμένει απαραίτητο μέρος του σχεδιασμού των κρίσιμων συστημάτων
ΦΕΔΙΑΜΟ ΚΑΙ ΤΛΟΠΟΙΗΗ ΛΟΓΙΜΙΚΟΤ (5/5) Η υλοποίηση του συστήματος προκύπτει φυσιολογικά από τις διαδικασίες σχεδιασμού του συστήματος Αν και μερικές κατηγορίες προγραμμάτων (κρίσιμα ως προς την ασφάλεια συστήματα) σχεδιάζονται συνήθως λεπτομερώς πριν από οποιαδήποτε υλοποίηση, είναι σύνηθες κάποια στάδια του σχεδιασμού και της υλοποίησης να διαπλέκονται Η υλοποίηση (ο προγραμματισμός) είναι μια προσωπική δραστηριότητα και δεν υπάρχει κάποια γενική διαδικασία που συνήθως ακολουθείται Κατά την υλοποίηση του λογισμικού, οι προγραμματιστές κάνουν δοκιμές ώστε να αποκαλυφθούν οι ατέλειες του προγράμματος και ακολουθεί η αποσφαλμάτωση (debugging) και η επανάληψη των δοκιμών
ΕΠΙΚΤΡΩΗ ΛΟΓΙΜΙΚΟΤ (1/8) Επικύρωση λογισμικού διαδικασίες επαλήθευσης και επικύρωσης τόχος: να δείξουν ότι το σύστημα είναι σύμφωνο με τις προδιαγραφές του και ότι ικανοποιεί τις προσδοκίες του πελάτη Περιλαμβάνουν: Διαδικασίες ελέγχου, όπως επιθεωρήσεις και επισκοπήσεις σε κάθε στάδιο της διαδικασίας παραγωγής λογισμικού, από τον καθορισμό των απαιτήσεων έως και την ανάπτυξη του προγράμματος Ωστόσο, το μεγαλύτερο κόστος επικύρωσης προκύπτει ΜΕΣΑ την υλοποίηση του συστήματος, όταν το σύστημα δοκιμάζεται σε πραγματικές συνθήκες λειτουργίας
ΕΠΙΚΤΡΩΗ ΛΟΓΙΜΙΚΟΤ (2/8) Σα μεγάλα συστήματα δεν πρέπει να δοκιμάζονται ως ενιαία μονολιθική μονάδα υνήθης διαδικασία: διαδικασία δοκιμών τριών σταδίων (βλ. επόμενες διαφάνειες) Ιδανική περίπτωση: Σα ελαττώματα των στοιχείων ανακαλύπτονται νωρίς κατά τη διαδικασία δοκιμών, και τα προβλήματα των διασυνδέσεων κατά την ενοποίηση του συστήματος Καθώς εντοπίζονται τα ελαττώματα, το πρόγραμμα πρέπει να αποσφαλματώνεται, και αυτό μπορεί να απαιτεί την επανάληψη άλλων σταδίων της διαδικασίας δοκιμών Π.χ.: κάποια σφάλματα σε συστατικά στοιχεία του προγράμματος μπορεί να έρθουν στο φως κατά τις δοκιμές του συστήματος υνεπώς, η διαδικασία είναι επαναληπτική απαιτεί την ανατροφοδότηση πληροφοριών από μεταγενέστερα στάδια της διαδικασίας σε προηγούμενα
ΕΠΙΚΤΡΩΗ ΛΟΓΙΜΙΚΟΤ (3/8) τάδια της διαδικασίας δοκιμών: Δοκιμές συστατικών στοιχείων ή υπομονάδων Δοκιμές συστήματος Δοκιμές αποδοχής Δοκιμές υστατικών τοιχείων Δοκιμές υστήματος Δοκιμές Αποδοχής
ΕΠΙΚΤΡΩΗ ΛΟΓΙΜΙΚΟΤ (4/8) Δοκιμές συστατικών στοιχείων ή υπομονάδων: Δοκιμάζονται τα μεμονωμένα συστατικά στοιχεία για να διασφαλιστεί ότι λειτουργούν σωστά Κάθε στοιχείο δοκιμάζεται ανεξάρτητα Σα στοιχεία μπορεί να είναι: Απλές ενότητες, όπως συναρτήσεις ή κλάσεις αντικειμένων υναφείς ομαδοποιήσεις τέτοιων ενοτήτων
ΕΠΙΚΤΡΩΗ ΛΟΓΙΜΙΚΟΤ (5/8) Δοκιμές συστήματος: Σα συστατικά στοιχεία ενοποιούνται για να αποτελέσουν το σύστημα Η διαδικασία των δοκιμών του συστήματος έχει ως στόχο τον εντοπισμό σφαλμάτων που προκύπτουν από απροσδόκητες αλληλεπιδράσεις μεταξύ στοιχείων και από προβλήματα των διασυνδέσεων των στοιχείων Επιπλέον στόχος είναι να εξακριβωθεί κατά πόσο το σύστημα ικανοποιεί τις λειτουργικές και μη λειτουργικές απαιτήσεις του και να δοκιμαστούν οι ανακύπτουσες ιδιότητές του ε μεγάλα συστήματα: Διαδικασία πολλών σταδίων τα συστατικά στοιχεία ενοποιούνται για να αποτελέσουν υποσυστήματα τα οποία δοκιμάζονται μεμονωμένα, προτού ενοποιηθούν και αυτά για να αποτελέσουν το τελικό σύστημα
ΕΠΙΚΤΡΩΗ ΛΟΓΙΜΙΚΟΤ (6/8) Δοκιμές αποδοχής: Σελικό στάδιο της διαδικασίας δοκιμών πριν παραδοθεί Σο σύστημα δοκιμάζεται με δεδομένα που προέρχονται από τον πελάτη και όχι με προσομοιωμένα δοκιμαστικά δεδομένα Μπορεί να αποκαλύψουν σφάλματα και παραλείψεις στον ορισμό των απαιτήσεων του συστήματος (πραγματικές συνθήκες) Μπορεί να αποκαλύψουν προβλήματα απαιτήσεων όπου οι λειτουργίες του συστήματος δεν ικανοποιούν πραγματικά τις ανάγκες του χρήστη ή η απόδοση του συστήματος δεν είναι ικανοποιητική
ΕΠΙΚΤΡΩΗ ΛΟΓΙΜΙΚΟΤ (7/8) Η ανάπτυξη και οι δοκιμές των συστατικών στοιχείων ΤΦΝΑ είναι αλληλένδετες δραστηριότητες οι προγραμματιστές επινοούν δικά τους δοκιμαστικά δεδομένα και δοκιμάζουν βαθμιαία τον κώδικα καθώς τον αναπτύσσουν Η προσέγγιση αυτή είναι λογική από οικονομικής άποψη, αφού ο προγραμματιστής γνωρίζει καλύτερα το συγκεκριμένο στοιχείο ώστε να δημιουργήσει τις κατάλληλες περιπτώσεις δοκιμής Καθώς ενοποιούνται τα συστήματα (την υλοποίηση των οποίων έχουν αναλάβει διάφοροι προγραμματιστές), οι διαδικασίες δοκιμών γίνονται από μια ανεξάρτητη ομάδα δοκιμαστών, οι οποίοι στηρίζονται σε πλάνα δοκιμών που έχουν καταρτιστεί από πριν (βασισμένα στις προδιαγραφές και στο σχεδιασμό του συστήματος) Σα πλάνα δοκιμών αποτελούν το σύνδεσμο μεταξύ των δραστηριοτήτων των δοκιμών και της ανάπτυξης
ΕΠΙΚΤΡΩΗ ΛΟΓΙΜΙΚΟΤ (8/8) Οι δοκιμές αποδοχής λέγονται και δοκιμές άλφα (alpha testing) Σα συστήματα επί παραγγελία αναπτύσσονται για ένα συγκεκριμένο πελάτη και οι διαδικασίες των δοκιμών άλφα συνεχίζονται έως ότου ο κατασκευαστής και ο πελάτης συμφωνήσουν ότι το παραδοτέο σύστημα συνιστά μια αποδεκτή υλοποίηση των απαιτήσεων Δοκιμές βήτα (beta testing) Φρησιμοποιούνται όταν ένα σύστημα πρόκειται να διατεθεί στην αγορά ως προϊόν λογισμικού Αφορούν την παράδοση του συστήματος σε ένα σύνολο πιθανών πελατών οι οποίοι συμφωνούν να το χρησιμοποιήσουν αυτοί αναφέρουν τυχόν προβλήματα στους κατασκευαστές Μετά από αυτή τη διαδικασία ανατροφοδότησης, το σύστημα τροποποιείται και είτε διατίθεται για περισσότερες δοκιμές βήτα είτε κυκλοφορεί στο εμπόριο
ΕΞΕΛΙΞΗ ΛΟΓΙΜΙΚΟΤ (1/3) Η ευελιξία των συστημάτων λογισμικού είναι ένας από τους κύριους λόγους για τους οποίους όλο και περισσότερο λογισμικό ενσωματώνεται σε μεγάλα, σύνθετα συστήματα Από τη στιγμή που θα ληφθούν αποφάσεις για την προμήθεια του υλικού, τυχόν αλλαγές μπορούν να επιφέρουν μεγάλο κόστος Αντιθέτως, στο λογισμικό μπορούν να γίνουν αλλαγές, ακόμα και μεγάλης έκτασης, οποιαδήποτε στιγμή κατά τη διάρκεια ή και μετά από την ανάπτυξη του συστήματος με περιορισμένο κόστος Εξαρχής υπήρχε διαχωριστική γραμμή μεταξύ της ανάπτυξης (δημιουργική διαδικασία) και της εξέλιξης - συντήρησης (βαρετή και αδιάφορη διαδικασία) ΌΜΩ το κόστος συντήρησης είναι συχνά πολύ μεγαλύτερο από το κόστος ανάπτυξης
ΕΞΕΛΙΞΗ ΛΟΓΙΜΙΚΟΤ (2/3) ύγχρονη εποχή: Η διάκριση μεταξύ ανάπτυξης και συντήρησης χάνει το νόημά της όλο και περισσότερο. ΓΙΑΣΙ; Ελάχιστα συστήματα λογισμικού σήμερα είναι εντελώς καινούργια. Είναι λογικό η διαδικασία της ανάπτυξης και της συντήρησης να θεωρείται πλέον μία μοναδική και διαρκή δραστηριότητα, καθώς το λογισμικό τροποποιείται συνεχώς κατά το χρόνο ζωής του προκειμένου να ικανοποιεί τις συνεχώς μεταβαλλόμενες απαιτήσεις των πελατών και της αγοράς
ΕΞΕΛΙΞΗ ΛΟΓΙΜΙΚΟΤ (3/3) Πηγή: Sommerville, I. (2008). Βασικές Αρχές Τεχνολογίας Λογισμικού, Κλειδάριθμος, Αθήνα: 122
Α ΜΙΛΗΟΤΜΕ ΓΙΑ ΚΟΣΗ (1/3) Σα κόστη λογισμικού είναι συνήθως μεγαλύτερο σε έναν υπολογιστή από το κόστος του υλικού Όπως αναφέρθηκε, το κόστος συντήρησης του λογισμικού είναι συνήθως πολύ μεγαλύτερο από το κόστος ανάπτυξής του ΟΜΩ Ποιο το κόστος διόρθωσης σφαλμάτων κατά τα διαφορετικά στάδια ανάπτυξης του λογισμικού (απαιτήσεις, αρχιτεκτονική/σχεδιασμός, κατασκευή, έλεγχος συστήματος και συντήρηση); ε ποια στάδια τα σφάλματα επιβαρύνουν περισσότερο το κόστος ανάπτυξης;
Α ΜΙΛΗΟΤΜΕ ΓΙΑ ΚΟΣΗ (2/3) Πηγή: Sommerville, I. (2008). Βασικές Αρχές Τεχνολογίας Λογισμικού, Κλειδάριθμος, Αθήνα: 51
ΔΡΑΣΗΡΙΟΣΗΣΑ Σι μας φανερώνει ο πίνακας; Ποιες είναι οι σημαντικότερες δραστηριότητες κατά τη διαδικασία ανάπτυξης ενός λογισμικού; Ποια η σημασία των αριθμών;
ΒΙΒΛΙΟΓΡΑΥΊΑ Γιακουμάκης, Ε. & Διαμαντίδης, Ν. (2009). Τεχνολογία λογισμικού, Εκδόσεις ταμούλη, Αθήνα Sommerville, I. (2008). Βασικές Αρχές Τεχνολογίας Λογισμικού, Κλειδάριθμος, Αθήνα Pressman, R. S. (2012). Τεχνολογία Λογισμικού Μια πρακτική προσέγγιση, Σζιόλα, Αθήνα