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