ΣΕΧΝΟΛΟΓΙΑ ΛΟΓΙΜΙΚΟΤ ΔΕΤΣΕΡΗ ΔΙΑΛΕΞΗ ΔΙΑΔΙΚΑΙΑ ΠΑΡΑΓΩΓΗ ΛΟΓΙΜΙΚΟΤ

Σχετικά έγγραφα
Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

Μεθοδολογίες Παραγωγής Λογισµικού

Ανάλυση Απαιτήσεων Απαιτήσεις Λογισµικού

ΣΧΕΔΙΑΣΗ & ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ

Περιεχόμενα. Κεφάλαιο 2 Κοινωνικοτεχνικά συστήματα 49

Τεχνολογία Λογισμικού

Ενότητα 3 (κεφάλαιο 16) Επαναχρησιμοποίηση Λογισμικού

Σημειώσεις στο μάθημα «Στοιχεία Προγραμματισμού σε Γραφικό Περιβάλλον»

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Μεθοδική Ανάπτυξη Δικτυακής Υποδομής. Παρουσίαση στην ημερίδα για Σύγχρονες τάσεις στις Τηλεπικοινωνίες και Τεχνολογίες Αιχμής

Αλληλεπίδραση Ανθρώπου- Υπολογιστή & Ευχρηστία

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Εισαγωγή στην τεχνολογία λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 1

ΚΕΦΑΛΑΙΑ XIII, XIV. Εκσφαλμάτωση προγράμματος - Κύκλος Ζωής Λογισμικού

Εισαγωγή στην Τεχνολογία Λογισμικού

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Η συμβολή στην επιτυχία ενός οργανισμού, παρουσιάζοντας σχετικά δεδομένα με τη χρήση τεχνικών 2Δ ή 3Δ τεχνολογίας. Αρμοδιότητα

Απαιτήσεις Λογισμικού

Πληροφορική 2. Τεχνολογία Λογισμικού

Ανάλυση Απαιτήσεων Mεθοδολογίες Ανάπτυξης

Σχεδιασµός βασισµένος σε συνιστώσες

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

8 Τεχνικός Εφαρμογών Πληροφορικής με Πολυμέσα

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

Διαδικασίες της τεχνολογίας απαιτήσεων requirements engineering. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ.

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού

Τεχνολογία λογισμικού στην πράξη

Ανάλυση Συστηµάτων και Τεχνολογία Λογισµικού

Τεχνολογία Λογισμικού

Εισαγωγή στην. Γιάννης Σμαραγδάκης

Σκοπός του μαθήματος

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Rational Unified Process. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

Αρχιτεκτονική Λογισμικού

6. Διαχείριση Έργου. Έκδοση των φοιτητών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Εισαγωγή στη Σχεδίαση Λογισμικού

Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές

ΣΧΕΔΙΑΣΜΟΣ & ΑΝΑΠΤΥΞΗ ΠΡΟΪΟΝΤΟΣ

Ορισμός Ευκαιρίας. 2.Διαδικασία Αναγνώρισης Ευκαιρίας

Προδιαγραφές Απαιτήσεων Επικύρωση Απαιτήσεων

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Ελληνικό Ανοικτό Πανεπιστήµιο Εισαγωγή στη Ενοποιηµένη Προσέγγιση Unified Process (UP) ρ. Πάνος Φιτσιλής

Αρχιτεκτονική υπολογιστών

Τεχνολογία Λογισµικού Ι Κεφάλαιο 6

Κεφάλαιο 1. Εισαγωγή στα συστήματα σχεδιομελέτης και παραγωγής με χρήση υπολογιστή computer aided design and manufacture (cad/cam)

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Αρχιτεκτονική υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Διαχείριση έργων. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Βασίλειος Κοντογιάννης ΠΕ19

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΤΕΡΕΑΣ ΕΛΛΑΔΑΣ- ΤΜΗΜΑ ΠΕΡΙΦΕΡΕΙΑΚΗΣ ΟΙΚΟΝΟΜΙΚΗΣ ΑΝΑΠΤΥΞΗΣ, ΜΑΘΗΜΑ: ΔΙΑΧΕΙΡΙΣΗ ΑΝΘΡΩΠΙΝΩΝ ΚΑΙ ΦΥΣΙΚΩΝ ΠΟΡΩΝ- ΧΡΙΣΤΟΣ ΑΠ.

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Εισαγωγή στην Πληροφορική

Ανάπτυξη πληροφοριακών συστημάτων

U T C C R E A T I V E L A B. Σύμβουλοι Καινοτομικής Επιχειρηματικότητας

Σχεδιαστής Ιστοσελίδων

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

Δομημένος Προγραμματισμός

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Εργαλεία CASE. Computer Assisted Systems Engineering. Δρ Βαγγελιώ Καβακλή. Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου

Τεχνολογία Λογισμικού

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

Κεφάλαιο 7: Τεχνολογία Λογισμικού

ΤΕΙ ΚΡΗΤΗΣ ΤΜΗΜΑ ΛΟΓΙΣΤΙΚΗΣ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΣΥΣΤΗΜΑΤΑ ΠΟΙΟΤΗΤΑΣ

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

ΚΕΦΑΛΑΙΟ 13 ΔΙΑΣΦΑΛΙΣΗ ΠΟΙΟΤΗΤΑΣ ΛΟΓΙΣΜΙΚΟΥ. Έννοιες-κλειδιά. Σύνοψη

Εισαγωγή στην ανάλυση

Ενότητα 8 (κεφάλαιο 21) Θεματοκεντρική Τεχνολογία Λογισμικού

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Μοντέλο επιχειρηματικής αριστείας

Ενότητα 1 (κεφάλαια 3 και 23.4) Ευέλικτη Ανάπτυξη Λογισμικού

Σχεδιαστικά Προγράμματα Επίπλου

. Μεθοδολογία Προγραμματισμού. Εισαγωγή. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Τεχνολογικό Εκπαιδευτικό Ίδρυμα Πειραιά

Εισαγωγή στη Δασική Πληροφορική

Διαφορές single-processor αρχιτεκτονικών και SoCs

Παρουσίαση: Ανθρωποκεντρικός σχεδιασμός πολυμέσων ΜΙΚΡΟΠΟΥΛΟΥ ΕΥΓΕΝΙΑ ΓΤΠ61

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 1 Ο. Εισαγωγή στις έννοιες Πρόβλημα, Αλγόριθμος, Προγραμματισμός, Γλώσσες Προγραμματισμού

ΔΙΕΚ ΜΥΤΙΛΗΝΗΣ ΤΕΧΝΙΚΟΣ ΜΗΧΑΝΟΓΡΑΦΗΜΕΝΟΥ ΛΟΓΙΣΤΗΡΙΟΥ Γ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΛΟΓΙΣΤΙΚΗ ΚΟΣΤΟΥΣ Ι ΜΑΘΗΜΑ 2 ο

Διαχείριση Έργων Πληροφορικής

ΣΧΕ ΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΩΝ ΙΑΧΕΙΡΙΣΗΣ ΕΠΙΧΕΙΡΗΣΙΑΚΩΝ ΠΟΡΩΝ

Εισαγωγή στην εκτίμηση κόστους Λογισμικού / Μέθοδος COCOMO

Τεχνολογία Λογισμικού

ΕΚΘΕΜΑ 2-1 Σύστηµα επιστροφής µπάλας, ένα από τα προϊόντα µπόουλινγκ της AMF Bowling.

Transcript:

ΣΕΧΝΟΛΟΓΙΑ ΛΟΓΙΜΙΚΟΤ ΔΕΤΣΕΡΗ ΔΙΑΛΕΞΗ ΔΙΑΔΙΚΑΙΑ ΠΑΡΑΓΩΓΗ ΛΟΓΙΜΙΚΟΤ

ΠΕΡΙΕΦΟΜΕΝΑ Δομικά τοιχεία Λογισμικού Διαδικασία Παραγωγής Λογισμικού Αυτοματοποίηση Διαδικασιών Παραγωγής Λογισμικού Θεμελιώδεις Δραστηριότητες Λογισμικού Εξαγωγή Προδιαγραφών Λογισμικού χεδιασμός και Τλοποίηση Λογισμικού Επικύρωση Λογισμικού Εξέλιξη Λογισμικού Ας Μιλήσουμε για Κόστη

ΔΟΜΙΚΑ ΣΟΙΦΕΙΑ ΛΟΓΙΜΙΚΟΤ Οι χρήστες αντιλαμβάνονται ως λογισμικό το «πρόγραμμα» μαζί µε το αντίστοιχο εγχειρίδιο χρήσης μέρος του λογισμικού όμως είναι και πολλά ενδιάμεσα προϊόντα που παράγονται στις φάσεις που μεσολαβούν από τον καθορισμό των εργασιών που θα αυτοματοποιηθούν µε τη βοήθεια του λογισμικού μέχρι την παραγωγή του εκτελέσιμου κώδικα Σα προϊόντα αυτά είτε είναι ενδιάμεσα συστατικά λογισμικού που παράγονται μέχρι να φτάσουμε στον εκτελέσιμο κώδικα (πηγαίος κώδικας, κώδικας μορφής 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). Τεχνολογία Λογισμικού Μια πρακτική προσέγγιση, Σζιόλα, Αθήνα