ΕΛΛΗΝΙΚΟ ΑΝΟΙΧΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Πρόγραµµα σπουδών "ΠΛΗΡΟΦΟΡΙΚΗ" - Θ.Ε. ΠΛΗ11 Τεχνολογία Λογισµικού Ι Κεφάλαια 1-21 Βασίλειος Βεσκούκης ιδάκτωρ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών v.vescoukis@cs.ntua.gr
Τι είναι Λογισµικό; Προγράµµατα ηλεκτρονικού υπολογιστή οµές δεδοµένων µε µόνιµη ή προσωρινή αποθήκευση Τεκµηρίωση σχετικά µε τα παραπάνω Συστατικά λογισµικού εδοµένα Προγράµµατα Τεκµηρίωση
Συστατικά Λογισµικού Software components / elements / artifacts είναι ΌΛΑ τα παρακάτω: Πηγαίος κώδικας Προδιαγραφές, εκθέσεις, αναφορές, κείµενα γενικά Σχέδια ιαγράµµατα
Τεχνολογία λογισµικού: Τεχνολογία: «Λόγος περί Τέχνης» Περιγραφή του τρόπου υλοποίησης τεχνικών κατασκευών, εν προκειµένω του Λογισµικού. Λογισµικό και άλλες τεχνικές κατασκευές Τεχνικές κατασκευές Εχουν υλική υπόσταση Περιγράφονται και γίνονται αντιληπτές µε µοναδικό τρόπο Το Λογισµικό είναι µια ιδεατή οντότητα Γίνεται αντιληπτό από τα αποτελέσµατα της χρήσης του εν περιγράφεται εύκολα και µοναδικά
Το λογισµικό στο περιβάλλον του ΕΥΡΥΤΕΡΟ ΠΕΡΙΒΑΛΛΟΝ ΧΡΗΣΗΣ ΛΟΓΙΣΜΙΚΟΥ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗΣ ΛΟΓΙΣΜΙΚΟΥ ΑΝΑΓΚΗ & ΣΥΛΛΗΨΗ ΛΟΓΙΣΜΙΚΟΥ ΠΕΡΙΓΡΑΦΗ ΛΟΓΙΣΜΙΚΟ ΣΧΕ ΙΑΣΗ ΘΕΜΑΤΙΚΟ ΠΕ ΙΟ ΛΟΓΙΣΜΙΚΟΥ ΥΛΟΠΟΙΗΣΗ ΕΠΗΡΡΕΑΖΕΙ ΕΞΕΛΙΞΗ
Η ανάγκη για «καλό λογισµικό» Είναι αυτονόητη και επιτακτική διότι Ο ρόλος των υπολογιστών... Στην οικονοµία και την παραγωγή Στην ενηµέρωση και την ψυχαγωγία Στην εκπαίδευση και αλλού εκπληρώνεται µόνο µε Λογισµικό το οποίο: Κάνει σωστά τη δουλειά του, παράγεται µε λογικό κόστος, σε λογικό χρόνο, και είναι καλής ποιότητας
Αντικείµενο της τεχνολογίας λογισµικού είναι... Ηεπιστηµονική θεµελίωση Του κύκλου ζωής Της διαδικασίας παραγωγής Του τρόπου περιγραφής Του τρόπου συντήρησης Του οργανωτικού πλαισίου χρήσης του Λογισµικού Οι εργασίες αυτές είναι ιδιαίτερα δύσκολες: Από τη φύση του Λογισµικού Από την υπόστασή του ως προϊόν
Αντικείµενο της τεχνολογίας λογισµικού είναι... Ηαναζήτηση συστηµατικών τρόπων για να αποκαλύπτουµε Ποια συστατικά στοιχεία λογισµικού πρέπει να κατασκευάσουµε, πώς να τα περιγράψουµε κλπ, ώστε να... δηµιουργήσουµε µια εφαρµογή λογισµικού που κάνει κάποια χρήσιµη εργασία και την κάνει σωστά Ανάλογο: Η δουλειά του πολιτικού µηχανικού που υπολογίζει τα δοµικά χαρακτηριστικά του σπιτιού... ώστε αυτό να έχει τα δωµάτια που θέλουµε, και επιπλέον να µπορεί να σταθεί ώστε η διαµονή σε αυτό να είναι ασφαλής
Κύκλος ζωής Λογισµικού Οι φάσεις από τις οποίες διέρχεται µια εφαρµογή Λογισµικού από την σύλληψή της κατά την κατασκευή, χρήση, συντήρησή της µέχρι την απόσυρσή της Ενα µοντέλο κύκλου ζωής περιγράφει Ποιες είναι αυτές οι φάσεις Ποιες εργασίες γίνονται και ποια προϊόντα παράγονται σε καθεµία Πώς διαδέχονται η µία την άλλη
Παράσταση µοντέλων κύκλου ζωής Με τη βοήθεια ενός διαγράµµατος δραστηριοτήτων Μέσα σε ένα παραλληλόγραµµο περιέχεται ο τίτλος µιας εργασίας Με βελάκια υποδηλώνεται η µετάβαση σε κάποια άλλη εργασία Με λεπτοµερή τεκµηρίωση σε µορφή κειµένου Με πρότυπα για την περιγραφή των συστατικών λογισµικού ΣΥΛΛΗΨΗ ΤΗΣ Ι ΕΑΣ ΕΠΙΛΟΓΗ ΜΙΑΣ ΛΥΣΗΣ ΚΑΤΑΣΚΕΥΗ ΛΟΓΙΣΜΙΚΟΥ ΕΓΚΑΤΑΣΤΑΣΗ ΚΑΙ ΧΡΗΣΗ
Χαρακτηριστικά µοντέλα κύκλου ζωής λογισµικού Το µοντέλο του καταρράκτη Το µοντέλο πρωτοτυποποίησης Το µοντέλο λειτουργικής επαύξησης Το σπειροειδές µοντέλο Το µοντέλο του πίδακα Ένα γενικό µοντέλο κύκλου ζωής
Το µοντέλο του καταρράκτη Ολόκληρη η εφαρµογή λογισµικού διέρχεται από διακριτές φάσεις ανάπτυξης. ΠΡΟ ΙΑΓΡΑΦΗ ΑΝΑΛΥΣΗ Απαιτήσεις από το Σύστηµα Επικύρωση Απαιτήσεις από το Λογισµικό Επικύρωση ΣΧΕ ΙΑΣΗ Προκαταρτική Σχεδίαση Επαλήθευση ΑΝΑΠΤΥΞΗ Λεπτοµερής Σχεδίαση Επαλήθευση Κωδικοποίηση Ελεγχος µονάδων ΚΩ ΙΚΟΠΟΙΗΣΗ Συνένωση Επαλήθευση ΕΠΑΛΗΘΕΥΣΗ Προλειτουργία - Ελεγχος Ελεγχος Συστήµατος ΕΞΕΛΙΞΗ Λειτουργία - Συντήρηση Επανεπικύρωση
Το µοντέλο πρωτοτυποποίησης Κατασκευάζονται διαδοχικά πρωτότυπα µε ολοένα και περισσότερα χαρακτηριστικά. ΑΠΑΙΤΗΣΕΙΣ ΑΠΟ ΤΟ ΣΥΣΤΗΜΑ ΠΛΑΝΟ ΑΝΑΠΤΥΞΗΣ ΚΑΤΑΣΚΕΥΗ ΠΡΩΤΟΤΥΠΟΥ ΑΝΑΛΥΣΗ ΣΧΕ ΙΑΣΗ ΚΩ ΙΚΟΠΟΙΗΣΗ ΕΛΕΓΧΟΣ ΟΧΙ ΑΠΟ ΕΚΤΟ ΟΚΙΜΑΣΤΙΚΗ ΧΡΗΣΗ ΠΡΩΤΟΤΥΠΟ ΑΠΟ ΕΚΤΟ ΠΛΗΡΕΣ ΣΥΣΤΗΜΑ
Το µοντέλο λειτουργικής επαύξησης Κατάτµηση του λογισµικού και εφαρµογή του µοντέλου του καταρράκτη σε κάθε τµήµα. Συνένωση στο τέλος. τµήµα 1 ΑΝΑΛΥΣΗ ΣΧΕ ΙΑΣΗ ΚΩ ΙΚΟΠΟΙΗΣΗ ΕΛΕΓΧΟΣ τµήµα 2 Ολοκλήρωση ΑΝΑΛΥΣΗ ΣΧΕ ΙΑΣΗ ΚΩ ΙΚΟΠΟΙΗΣΗ ΕΛΕΓΧΟΣ τµήµα 3 ΑΝΑΛΥΣΗ ΣΧΕ ΙΑΣΗ ΚΩ ΙΚΟΠΟΙΗΣΗ ΕΛΕΓΧΟΣ Ολοκλήρωση και ενσωµάτωση Ολοκλήρωση και ενσωµάτωση... τµήµα ν ΑΝΑΛΥΣΗ ΣΧΕ ΙΑΣΗ ΚΩ ΙΚΟΠΟΙΗΣΗ ΕΛΕΓΧΟΣ Ολοκλήρωση και ενσωµάτωση ΧΡΟΝΟΣ
Το σπειροειδές µοντέλο Κύκλοι εργασιών µε σταδιακή επέκταση των λειτουργικών χαρακτηριστικών της εφαρµογής. Εκτίµηση του ρίσκου σε κάθε κύκλο ΚΑΘΟΡΙΣΜΟΣ ΣΤΟΧΩΝ, ΕΝΑΛΛΑΚΤΙΚΩΝ ΕΠΙΛΟΓΩΝ, ΠΕΡΙΟΡΙΣΜΩΝ ΧΡΟΝΟΣ Σχέδιο ενοποίησης και ελέγχου ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΠΟΜΕΝΗΣ ΦΑΣΗΣ ΑΝΑΠΤΥΞΗΣ Σχέδιο ανάπτυξης ΑΝΑΘΕΩΡΗΣΗ Σχέδιο απαιτήσεων Σχέδιο κύκλου ζωής Ανάλυση ρίσκου Ανάλυση ρίσκου Ανάλυση ρίσκου Πρωτότυπο 1 Βασική ιδέα λειτουργίας Επικύρωση απαιτήσεων Επικύρωση σχεδίασης Ανάλυση ρίσκου Πρωτότυπο 2 Προσωµοιώσεις λειτουργίας, µοντέλα, µέτρηση επιδόσεων Απαιτήσεις από το λογισµικό ΕΠΙΛΟΓΗ ΕΝΑΛΛΑΚΤΙΚΩΝ ΛΥΣΕΩΝ ΕΝΤΟΠΙΣΜΟΣ ΚΑΙ ΕΠΙΛΥΣΗ ΚΙΝ ΥΝΩΝ Πρωτότυπο ν Προκαταρτική σχεδίαση λογισµικού Ελεγχος ενοποίησης Λειτουργικό πρωτότυπο Λεπτοµερής σχεδίαση λογισµικού Κωδικοποίηση Ελεγχος µονάδας Ελεγχος αποδοχής Εγκατάσταση και υποστήριξη ΕΚΤΕΛΕΣΗ ΙΑ ΙΚΑΣΙΩΝ ΑΝΑΠΤΥΞΗΣ ΛΟΓΙΣΜΙΚΟΥ
Το µοντέλο του πίδακα Ανάπτυξη µε αντικειµενοστρεφή φιλοσοφία και επαναχρησιµοποίηση έτοιµων συστατικών Συντήρηση Συστήµατος Χρήση Συστήµατος Ελεγχος Συστήµατος Γενίκευση Συστατικών Ελεγχος Μονάδων ΥΛΟΠΟΙΗΣΗ Προγραµµατισµός ΣΧΕ ΙΑΣΗ Σχεδίαση Λογισµικού Σχεδίαση Συστήµατος Προδιαγραφή Λογισµικού Ανάλυση Απαιτήσεων ΑΝΑΛΥΣΗ Ετοιµες Μονάδες Λογισµικού
Ένα γενικό µοντέλο κύκλου ζωής Ανάπτυξη σε κύκλους σύµφωνα µε τα χαρακτηριστικά και τις δυνατότητες του κατασκευαστή. ΣΥΛΛΗΨΗ ΚΑΙ ΕΠΙΛΟΓΗ ΛΥΣΗΣ ΚΑΤΑΣΚΕΥΗ ΧΡΗΣΗ Γενικευµένη µορφή των προηγούµενων µοντέλων κύκλου ζωής. ΚΥΚΛΟΣ ΑΝΑΠΤΥΞΗΣ 1 ΚΥΚΛΟΣ ΑΝΑΠΤΥΞΗΣ 2... ΚΥΚΛΟΣ ΑΝΑΠΤΥΞΗΣ Ν ΠΛΑΝΟ ΕΡΓΑΣΙΩΝ ΑΝΑΛΥΣΗ ΣΧΕ ΙΑΣΗ ΥΛΟΠΟΙΗΣΗ ΕΛΕΓΧΟΣ
Σύγκριση µοντέλων κύκλου ζωής λογισµικού Μοντέλο Καταρράκτη Πρωτοτυποποίησης Λειτουργικής επαύξησης Σπειροειδές Μέγεθος εφαρµογών Μικρό έως µεσαίο Μικρό ως µεσαίο Μεσαίο ως µεγάλο Μεσαίο ως µεγάλο Μεταβολές στις απαιτήσεις Ανεπιθύµητες εκτές Ανεπιθύµητες εκτές Προσαρµοστικότητα στον κατασκευαστή Καµία Μικρή Καµία Αρκετή ιάδοση Μεγάλη µε τάση µείωσης Μικρή µε τάση αύξησης Μικρή µε τάση µείωσης Μικρή µε τάση µείωσης Πίδακα Οποιοδήποτε εκτές Αρκετή Μικρή Γενικό Οποιοδήποτε εκτές Μεγάλη Μικρή µε ισχυρές τάσεις αύξησης
Περιγραφή εργασιών και συστατικών στοιχείων λογισµικού ιαδοχικά επίπεδα λεπτοµέρειας, ανάλογα µε το σηµείο εστίασης της προσοχής του παρατηρητή. Καθολικό ΦΑΣΗ ΙΑ ΙΚΑΣΙΑ ΠΡΟΙΟΝ Εποπτικό Αναλυτική περιγραφή διαδικασίας Αναλυτική περιγραφή προϊόντος Ατοµικό
Περιγραφή εργασιών και συστατικών στοιχείων λογισµικού ιαδοχικά επίπεδα λεπτοµέρειας, ανάλογα µε το σηµείο εστίασης της προσοχής του παρατηρητή. ΕΠΟΠΤΙΚΟ ΚΑΘΟΛΙΚΟ Συνθήκες εισόδου Κατάσταση εισόδου Συνθήκες εισόδου υπο-εργασίας Συνθήκες εισόδου ΥΠΟ- ΕΡΓΑΣΙΑ ΕΡΓΑΣΙΑ ΠΑΡΑΓΟΜΕΝΑ ΣΥΣΤΑΤΙΚΑ ΛΟΓΙΣΜΙΚΟΥ Συνθήκες εξόδου Κατάσταση εξόδου Συνθήκες εξόδου υπο-εργασίας Συνθήκες εξόδου ανατροφοδό -τηση Εποπτεία ανατροφοδό -τηση Εποπτεία ΑΤΟΜΙΚΟ Συνθήκες εισόδου Συνθήκες εισόδου υπο-εργασίας ΥΠΟ- ΕΡΓΑΣΙΑ ΠΑΡΑΓΟΜΕΝΑ ΣΥΣΤΑΤΙΚΑ ΛΟΓΙΣΜΙΚΟΥ Συνθήκες εξόδου υπο-εργασίας Συνθήκες εξόδου ανατροφοδό -τηση ραστηριότητα 1... Συστατικό 1 ΣΕ.1 ανατροφοδό -τηση ραστηριότητα ν Συστατικό 2 ΣΕ.2 Συστατικό ν ΣΕ.κ
Περιγραφή συστατικών στοιχείων λογισµικού Μοντέλα, δηλαδή αναπαραστάσεις κάποιων χαρακτηριστικών του λογισµικού Αφαιρετικά, δηλαδή δεν περιέχουν όλες τις λεπτοµέρειες Συµπληρωµατικά, δηλαδή πολλά µαζί περιγράφουν πλήρως το λογισµικό Υλοποιήσιµα, δηλαδή µπορούν να καθοδηγούν την κατασκευή λογισµικού οµηµένο κείµενο (πρότυπα) Συµβολισµοί ιαγράµµατα Αλλοι τρόποι (π.χ. ψευδοκώδικας)
Προβλήµατα στην περιγραφή στοιχείων λογισµικού Οι συµβολισµοί και οι ορισµοί είναι Μη καθολικά αποδεκτοί Αντιληπτοί µε διφορούµενα Με πλουραλισµό διατυπώσεων Ανάγκη για Πρότυπα Παρέχουν τη δοµή της περιγραφής του Λογισµικού Εξασφαλίζουν µια ελάχιστη πειθαρχία Αποτελούν ένα κοινό σηµείο αναφοράς των κατασκευαστών Το πρόβληµα των οργανισµών τυποποίησης IEEE, ACM, OMG, κ.ά.
Συζήτηση - προβληµατισµός Συγκεντρώστε όλα τα "ναι µεν, αλλά..." που έχετε σκεφτεί µέχρι τώρα, και βάλτε τα στο forum για συζήτηση