Περιεχόµενο Μαθήµατος Ανάπτυξη και Σχεδίαση Λογισµικού (ΗΥ622) 2005-200 2006 Αντώνης Καραγεώργος Τµήµα Μηχανικών Η/Υ και ικτύων Πανεπιστήµιο Θεσσαλίας karageorgos@inf.uth.gr Εισαγωγή Κύκλος Ζωής Λογισµικού (Κεφ. 1, 2) Εξαγωγή, Ανάλυση και Καταγραφή Απαιτήσεων, Καθορισµός Προδιαγραφών (Κεφ. 4) Σχεδιασµός Ι (Yourdon, FSM, Jackson) (Κεφ. 5) Μετρικές µέθοδοι Σχεδίου (Κεφ. 5) Αντικειµενοστραφής Σχεδιασµός ΙΙ (UML) (Κεφ. 6) Οργάνωση & ιαχείριση Έργου Ανάπτυξης Λογισµικού (Κεφ. 3) Αρχές Υλοποίησης (Κεφ. 7) Έλεγχος Λογισµικού (Κεφ. 8, 9 ήσηµειώσεις) Βιβλιογραφία Pfleeger, S.L., Τεχνολογία Λογισµικού: Θεωρία και πράξη. Τόµος 1, 2003: Κλειδάριθµος. Pfleeger, S.L., Τεχνολογία Λογισµικού: Θεωρία και πράξη. Τόµος 2, 2004 (?): Κλειδάριθµος. Stevens, P. and R. Pooley, Using UML: Software Engineering with Objects and Components. 2001: Addison-Wesley. Επιστηµονικά άρθρα Σηµειώσεις από το διδάσκοντα Ιστοσελίδα του µαθήµατος Βιβλιοθήκη, διαδίκτυο Αξιολόγηση Εξετάσεις (Φεβρουάριος 2006) 60% Εργασίες: Ανάλυση απαιτήσεων 04% (13/11/05) Σχεδίαση του συστήµατος 04% (27/11/05) Μετρικές µέθοδοι 04% (04/12/05) Αντικειµενοστραφής σχεδιασµός UML 04% (18/12/05) ιοίκηση έργου 04% (15/01/06) Εξαµηνιαία εργασία 20% (31/01/06) Υποχρεωτικές παρουσίες στις διαλέξεις!!! 1
Άλλες πληροφορίες για το µάθηµα Ενηµέρωση και πληροφορίες για το µάθηµα στίς ιστοσελίδες: http://eclass.uth.gr και http://inf-server.inf.uth.gr/courses/ce622 Λίστα ηλ/κής αλληλογραφίας CE622 (http://net-server.inf.uth.gr/mailman/listinfo) Επικοινωνία µε τοδιδάσκοντα Εργαστηριακή εξάσκηση και διαθέσιµα εργαλεία(π.χ. ARGO-UML, JUDE, Microsoft Visio) Χρήσεις Λογισµικού Σε όλους τους τοµείς: Επιχειρήσεις Επιστήµες Έρευνα Ασφάλεια Καθηµερινές ανάγκες Ψυχαγωγία Κατασκευή Λογισµικού Όπως κατασκευή τεχνικού έργου: Καταγραφή και κατανόηση των αναγκών και προβληµάτων Συστηµατική εφαρµογή µιας σειράς βηµάτων που είναι γνωστό οτι οδηγούν σε αποτέλεσµα υψηλής ποιότητας Αξιολόγηση της ποιότητας των αποτελεσµάτων Το λογισµικό κατασκευάζεται µε αρχές µηχανικής και δεν παρασκευάζεται τυποποιηµένα ως βιοµηχανικό προιόν Κατασκευή Λογισµικού ΙΙ Οι τεχνολόγοι κατασκευάζουν συστήµατα Η κατασκευή ενός συστήµατος απαιτεί: (1) Κατανόηση των αναγκών (τι θα πρέπει να αναπτυχθεί) (2) Σχεδιασµό τουσυστήµατος (3) Συγγραφή προγραµµάτων (4) Έλεγχο, και (5) Συντήρηση του συστήµατος 2
Μύθοι σχετικά µε τολογισµικό... 1. Είναι εύκολο να κάνουµε αλλαγές καθώς το λογισµικό είναι ευέλικτο!!! Κόστος αλλαγών Μύθοι σχετικά µε τολογισµικό (συνέχεια...) 2. Ηεργασίαµας τελειώνει όταν το πρόγραµµα αρχίζει να λειτουργεί 3. Μέχρι τότε δεν µπορούµε να αξιολογήσουµε την ποιότητα του προγράµµατος 4. Το παραδοτέο ενός έργου είναι µόνο το εκτελέσιµο πρόγραµµα Ορισµός Ανάπτυξη Μετά την παράδοση ΗΚρίσητουΛογισµικού Software Crisis 1968 NATO Conf. on Software Eng: Προβλήµατα : Παραδίδεται πολύ αργά εν συµπεριφέρεται σύµφωνα µε τις προδιαγραφές Σπανίως προσαρµόζεται σε εναλλασσόµενες απαιτήσεις Πολλά σφάλµατα προσδιορίζονται µετά την παράδοση υσκολίες στην επικοινωνία των εµπλεκοµένων µερών! ιαχείριση της Κρίσης του Λογισµικού Βελτίωση σε τρεις κατευθύνσεις: Ανθρώπινοι πόροι, κατανεµηµένη ανάπτυξη Πολυπλοκότητα εφαρµογών Συντήρηση Ητότεπροτεινόµενη λύση: Μια πιο τυπική, δοµηµένη προσέγγιση στην ανάπτυξη Έχει επιτευχθεί µέχρι σήµερα? 3
Τεχνολογία Λογισµικού Αφορά την εγκαθίδρυση και χρήση έγκυρων αρχών για την κατασκευή αξιόπιστου και αποδοτικού Περιλαµβάνει διεργασίες (processes), µεθόδους (methods) και εργαλεία (tools) καθώς και άλλες δραστηριότητες όπως διοίκηση έργου και ανθρωπίνων πόρων Λαµβάνει υπ όψει περιορισµούς όπως οικονοµικούς, επιχειρηµατικούς και κοινωνικούς (τον ανθρώπινο παράγοντα) στην κατασκευή του τελικού προϊόντος Η Τεχνολογία Λογισµικού χρησιµοποιεί την Επιστήµη Η/Υ γιατηνεπίλυση προβληµάτων Θεωρίες ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ Λειτουργίες Υπολογιστή ΣΧΕ ΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΠΕΛΑΤΗΣ Πρόβληµα Εργαλεία και τεχνικές για την επίλυση προβληµάτων Τι περιλαµβάνει η Τεχνολογία Λογισµικού Επίλυση Προβληµάτων: Ανάλυση Ανάλυση και Σύνθεση του προβλήµατος ιαίρεση σε επιµέρους στοιχεία Συναρµολόγηση λύσης µε χρήση µικρών δοµικών στοιχείων Μεθόδους ή Τεχνικές (methods or techniques): τυπικές ακολουθίες βηµάτων για την παραγωγή κάποιου αποτελέσµατος (π.χ. προετοιµασία ενός φαγητού) Εργαλεία (Tools): Βοηθήµατα ή αυτοµατοποιηµένα συστήµατα για αυτόµατη εφαρµογή µεθόδων (π.χ. Χρήση Η/Υ γιατήρηση λογιστικών βιβλίων) ιαδικασίες (Procedures): Συνδυασµός µεθόδων και εργαλείων Υποδείγµατα (Paradigms): Γενικέςπεριγραφέςτρόπων ενέργειας που αναφέρονται σε συγκεκριµένη προσέγγιση ή φιλοσοφία Υποπρόβληµα 1 ΠΡΟΒΛΗΜΑ Υποπρόβληµα 2 Υποπρόβληµα 3 Υποπρόβληµα 4 4
Επίλυση Προβληµάτων: Σύνθεση Περιγραφή Σφαλµάτων Λογισµικού Λύση 1 Λύση 2 ΛΥΣΗ Λύση 3 Λύση 4 Σφάλµα (Error): Ανθρώπινο λάθος π.χ. παράλειψη ικανοποίησης µιας απαίτησης κατά την σχεδίαση Ελάττωµα (fault): αποτέλεσµα σφάλµατος που εµφανίζεται σε κάποιο προϊόν ανάπτυξης ή συντήρησης π.χ. το ελλιπές σχέδιο που προκύπτει από την παραπάνω παράλειψη Αστοχία ή δυσλειτουργία (failure or malfunction): αποµάκρυνση από τη ζητούµενη συµπεριφορά του συστήµατος Ένα σφάλµα µπορεί να οδηγήσει σε πολλά ελαττώµατα Ένα ελάττωµα µπορεί να υπάρχει σε οποιοδήποτε προιόν ανάπτυξης και συντήρησης Τι είναι καλό λογισµικό; Εξαρτάται από το πεδίο εφαρµογής π.χ. Τα ηλεκτρονικά παιγνίδια διαστήµατος και το λογισµικό εκτόξευσης δορυφόρων έχουν διαφορετικές προδιαγραφές ποιότητας (τυχόν λάθος στον υπολογισµό τηςτροχιάς µπορεί να είναι καταστροφικό στην περίπτωση του πραγµατικού δορυφόρου) Το λογισµικό αξιολογείται από: (Kitchenham and Pfleeger 1996) Την ποιότητα του προϊόντος (quality of the product) Οι χρήστες σε σχέση µε την λειτουργικότητα Οι δηµιουργοί σε σχέση µε τα εσωτερικά χαρακτηριστικά Την ποιότητα της διεργασίας (quality of the process) Την ποιότητα σε σχέση µε τοεπιχειρηµατικό περιβάλλον (quality in the context of the business environment) Τι επιχειρηµατική αξία (business value ) προστίθεται στην επιχείρηση Ποιότητα του προϊόντος Μοντέλα συσχετίζουν την εξωτερική άποψη του χρήστη µε την εσωτερική άποψη του δηµιουργού (π.χ. McCall et al. 1977) Ορθότητα Αξιοπιστία Ευχρηστία Ευκολία δοκιµής Ευκολία συντήρησης Εξωτερικοί παράγοντες Ιχνηλασιµότητα Συνέπεια Εκπαίδευση Απλότητα Χρήση εργαλείων Εσωτερικοί παράγοντες 5
Ποιότητα της διεργασίας Πολλές δραστηριότητες κατά τη διάρκεια της ανάπτυξης θα επηρεάσουν την ποιότητα του τελικού προϊόντος όπως: Συζητήσεις µε πελάτες και χρήστες για να κατανοηθούν επακριβώςοιανάγκεςτους Επισκοπήσεις του πηγαίου κώδικα Προσδιορισµός χρόνου δοκιµών του Μοντελοποιούµε την διεργασία και αναζητούµε τρόπους βελτίωσής της Ποιότητα σε σχέση µε το επιχειρηµατικό περιβάλλον Απόδοση επένδυσης µε βάση: το χρηµατικό κόστος Την απαιτούµενη προσπάθεια εκπαίδευση χρονοδιάγραµµα παραγωγικότητα κίνδυνος πελάτες Συµµετέχοντες στην Ανάπτυξη Λογισµικού Χαρακτηριστικά Συνεργασίας Χρησιµοποιεί το σύστηµα ΠΕΛΑΤΗΣ ΧΡΗΣΤΗΣ Συµβατικές υποχρεώσεις Ανάγκες Σύστηµα Χρηµατοδοτεί την ανάπτυξη του συστήµατος χρήµατα ανάγκες ΗΜΙΟΥΡΓΟΣ ηµιουργεί το σύστηµα ΙΑΧΕΙΡΙΣΤΗΣ ΕΡΓΟΥ ιαχειρίζεται την ανάπτυξη του συστήµατος Απαραίτητες η επικοινωνία και αµοιβαία κατανόηση Πρόβληµα η αβεβαιότητα Ο ρόλοι των µερών επικαλύπτονται καθώς προχωράει το έργο 6
Πελάτης τί θα κατασκευαστεί Επιθυµεί και χρηµατοδοτεί για το προϊόν Παρέχει περιγραφή των απαιτήσεων οκιµάζει το τελικό προϊόν ιαχειριστής έργου Σύνδεσµος µεταξύ πελάτη και δηµιουργού ιαπραγµατεύεται µε τονπελάτη χρόνο παράδοσης και κόστος Προγραµµατίζει και επιβλέπει το έργο Θέτει περιορισµούς στο χρόνο και στην προσπάθεια στο δηµιουργό ηµιουργός Πώς θα κατασκευαστεί ηµιουργεί το προϊόν Προσπαθεί για την ικανοποίηση του πελάτη Προσέγγιση Συστηµάτων Ένα σύστηµα είναιµια συλλογή οντοτήτων και δραστηριοτήτων και µια περιγραφή των σχέσεων που τις συνδέουν µεταξύ τους ραστηριότητα (activity): Κάτι που συµβαίνει σε ένα σύστηµα και µετασχηµατίζει/τροποποιεί ένα στοιχείο δεδοµένων Συνήθως ξεκινάει από κάποιο ερέθισµα (trigger) και το αποτέλεσµά της περιγράφεται σαν ένα γεγονός ή συµβάν (event) π.χ. Υπολογισµός µιας τιµής και αποθήκευσή της σε αρχείο Οντότητα (entity) ή αντικείµενο (object): Στοιχείo που περιλαµβάνεται σε µια δραστηριότητα π.χ. Ένα από τα πεδία που περιέχεται στην καρτέλα ενός σπουδαστή Αφού οριστούν οντότητες και δραστηριότητες τότε δηµιουργείται και η αντιστοιχία που τις συνδέει π.χ. Το αναπνευστικό σύστηµα του ανθρώπου Σηµαντικό να ορίσουµε ταόρια του συστήµατος που θα αναπτυχθεί τί περιλαµβάνεται στο έργο καιτιόχι π.χ το λογισµικό εκτύπωσης επιταγών θα διαχειρίζεται και τη µισθοδοσία? 7
Όρια συστήµατος: Είσοδος και Έξοδος Τµήµα διεκπεραίωσης Αλληλοσχετιζόµενα συστήµατα Σύστηµα δηµιουργίας αναφορών από τα δεδοµένα Σύστηµα διαχείρισης των συγκεντρωµένων δεδοµένων Πληροφορίες µισθοδοσίας Επικύρωση Ηµ/νίας Υπολογισµοί Επιταγές Εκτυπώσεις Σύστηµα επικοινωνιών µεταξύ αποµακρυσµένων σηµείων και κεντρικής εγκατάστασης Σύστηµα υπολογισµών για τα αποµακρυσµένα δεδοµένα Σύστηµα συλλογής αποµακρυσµένων δεδοµένων Όρια συστήµατος εκτύπωσης επιταγών µισθοδοσίας Στρώσεις ενός συστήµατος παρακολούθησης υδάτινων πόρων Κατασκευή Συστηµάτων Λογισµικού Τα έργα εξελίσσονται παρόµοια µε αυτά της κατασκευής κτιρίων: Οι πελάτες παρέχουν πληροφορίες για το είδος του κτιρίου που θα κατασκευαστεί. Κατασκευάζονται σχέδια δωµατίων, στέγης και εξωτερικών χώρων Σχεδιάζεται η εσωτερική διαρρύθµιση (π.χ. που θα είναι οι διακόπτες φώτων) Το κτίριο κατασκευάζεται Ελέγχεται κάθε µέρος του κτιρίου (π.χ. Ελεγχονται οι διακόπτες και τα ηλεκτρικά Ελέγχονται οτι όλα δουλεύουν µεταξύ τους. Το κτίριο παραδίδεται και ορίζεται πρόγραµµα συντήρησης και επισκευής βλαβών που τυχόν προκύψουν Κατασκευή Συστηµάτων Λογισµικού (συνέχεια) Προσδιορισµός των δραστηριοτήτων και των αντικειµένων που περιλαµβάνονται στο σύστηµα Προσδιορισµός των ορίων του συστήµατος Εξέταση εµφωλιασµένων συστηµάτων και σχέσεων µεταξύ συστηµάτων 8
ιεργασία ανάπτυξης Μέλη της Οµάδας Ανάπτυξης ΑΝΑΛΥΣΗ ΑΠΑΙΤΗΣΕΩΝ/ ΚΑΘΟΡΙΣΜΟΣ ΠΡΟ ΙΑΓΡΑΦΩΝ ΑΝΑΛΥΤΗΣ Εξαγωγή και ανάλυση των απαιτήσεων Σχεδίαση του συστήµατος (εννοιολογικό σχέδιο) Σχεδίαση των προγραµµάτων (τεχνικό σχέδιο) Συγγραφή των προγραµµάτων (program implementation) οκιµή µονάδων και ολοκλήρωσης οκιµή συστήµατος Παράδοση και συντήρηση συστήµατος Βήµατα Ανάπτυξης Λογισµικού ΣΧΕ ΙΑΣΗ ΣΥΣΤΗΜΑΤΟΣ ΣΧΕ ΙΑΣΗ ΠΡΟΓΡΑΜΜΑΤΩΝ ΥΛΟΠΟΙΗΣΗ ΠΡΟΓΡΑΜΜΑΤΩΝ ΟΚΙΜΗ ΟΜΙΚΩΝ ΜΟΝΑ ΩΝ ΟΚΙΜΗ ΕΝΟΠΟΙΗΣΗΣ ΟΚΙΜΗ ΣΥΣΤΗΜΑΤΟΣ ΣΧΕ ΙΑΣΤΗΣ ΠΡΟΓ/ΤΗΣ ΟΚΙΜΑΣΤΗΣ DEVELOPER ROLES ΠΑΡΑ ΟΣΗ ΣΥΣΤΗΜΑΤΟΣ ΕΚΠΑΙ ΕΥΤΗΣ ΣΥΝΤΗΡΗΣΗ Μετεξέλιξη της Τεχνολογίας Λογισµικού Επιτραπέζιοι Υπολογιστές Αυξοµειώσεις του κόστους Τεχνολογία αντικειµένων ΑΛΛΑΓΕΣ ΣΤΟ ΣΧΕ ΙΑΣΜΟ ΚΑΙ ΤΗΝ ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ιασυνδέσεις χρήστη Προβλήµατα µοντέλου καταρράκτη νέα µοντέλα Χρόνος κυκλοφορίας στην αγορά ικτύωση (Wasserman 1996) Βασικές έννοιες της τεχνολογίας Αφαίρεση Μέθοδοι και σηµειολογίες ανάλυσης και σχεδίασης ηµιουργία των πρωτοτύπων διασύνδεσης µε το χρήστη Αρχιτεκτονική ιεργασία Επαναχρησιµοποίηση Μέτρηση Εργαλεία και ολοκληρωµένα περιβάλοντα (Wasserman 1996) 9
Αφαίρεση Αφαίρεση (abstraction) είναι µια περιγραφή του προβλήµατος σε κάποιο επίπεδο γενίκευσης το οποίο µας επιτρέπει να συγκεντρωθούµε στα κύρια σηµεία του προβλήµατος Προσδιορίζονται κλάσεις αντικειµένων που µας επιτρέπουν να τα οµαδοποιούµε. Σχηµατίζονται ιεραρχίες Αισθητήρας υγρών Ηλεκτρική συσκευή Αισθητήρας Αισθητήρας αερίων Παράδειγµα ιεραρχίας για εξοπλισµό µέτρησης Μέθοδοι και Σηµειολογίες Ανάλυσης και Σχεδίασης Κατασκευάζουµε µοντέλα και τα ελέγχουµε για πληρότητα και συνέπεια Χρησιµοποιούµε τυποποιηµένο συµβολισµό γιανα επικοινωνούµε και να τεκµηριώνουµε αποφάσεις Περιορισµοί: Ταυπάρχονταεργαλείακαιµεθοδοι συνήθως καλύπτουν ορισµένες µόνο πτυχές του προβλήµατος π.χ. Η µέθοδος δοµηµένη ανάλυσης και σχεδίαση δεν δίνει τη δυνατότητα αυτόµατης επαλήθευσης των απαιτήσεων. εν υπάρχει καθολικά αποδεκτή σηµειολογία ικανή να αναπαραστήσει συνολικά το πρόβληµα και να χρησιµοποιηθεί µε όλεςτιςµεθόδους. Προσπάθεια τέτοιας σηµειολογίας η UML. ηµιουργία πρωτοτύπων διασύνδεσης µε τοχρήστη Αρχιτεκτονική ηµιουργία πρωτοτύπων είναι η ανάπτυξη µιας περιορισµένης έκδοσης του συστήµατος για: Να βοηθηθούν οι πελάτες και οι χρήστες στην αντίληψη τωνκυρίωναπαιτήσεωντουσυστήµατος Να επιδειχθεί οτι µια σχεδίαση ή µια προσέγγιση είναι δυνατό να εφαρµοστεί. Πρωτότυπα χρησιµοποιούνται και σε άλλες περιπτώσεις π.χ για να δεί ο χρήστης ποιές λειτουργίες (hardware ή software) θα έχει στη διάθεσή του σε ένα ενσωµατωµένο σύστηµα (embedded system) Η αρχιτεκτονική ενός συστήµατος περιγράφει το σύστηµα µε βάση ένα σύνολο από αρχιτεκτονικές δοµικές µονάδες (architectural units) και µια απεικόνιση (map) που περιγράφει πως οι µονάδες σχετίζονται µεταξύ τους Είναι σηµαντική όχι µόνο για την υλοποίηση και δοκιµή του αλλά επίσης και για την αποτελεσµατική συντήρηση και τροποποίησή του 10
οµικές µονάδες αρχιτεκτονικής Τρόποι να διαµερίσουµε ένα σύστηµα σε επιπλέον µονάδες: Ανάλυση δοµικών µονάδων: βασίζεται στην ανάθεση λειτουργιών σε µονάδες Ανάλυση προσανατολισµένη στα δεδοµένα: βασίζεται σε εξωτερικές δοµές δεδοµένων Ανάλυση προσανατολισµένη στα γεγονότα: βασίζεται σε γεγονότα που πρέπει να χειριστεί το σύστηµα Σχεδίαση από έξω προς τα µέσα : βασίζεται στα δεδοµένα που εισάγει ο χρήστης Αντικειµενοστραφής σχεδίαση: βασίζεται στον προσδιορισµό κλάσεων αντικειµένων και των αλληλοσυσχετισµων τους ιεργασία ιεργασία που οδηγεί στην ανάπτυξη (οργάνωση και πειθαρχία στις δραστηριότητες) Συνεισφέρει στην αύξηση της ποιότητας του και της ταχύτητας που αυτό αναπτύσσεται Επαναχρησιµοποίηση Εκµεταλλεύεται τα κοινά χαρακτηριστικά κατά µήκος των εφαρµογών επαναχρησιµοποιώντας αντικείµενα από προηγούµενες εφαρµογές Επαναχρησιµοποιήσιµα στοιχείαµπορούν να αποτελέσουν περιουσιακά στοιχεία µιας επιχείρησης Μετρήσεις Ποσοτικοποιώντας όπου και ότι µπορούµε περιγράφουµε τις ενέργειές µας και τα αποτελέσµατά τους σε µια κοινή µαθηµατική γλώσσα που µας επιτρέπει να αξιολογούµε την πρόοδό µας 11
Εργαλεία και ολοκληρωµένα περιβάλλοντα Χρησιµοποιούµε εργαλεία για να υποστηρίξουµε την ανάπτυξη : Για υποβοηθούµενηανάπτυξη Για αυτόµατηανάπτυξη Για παρακολούθηση της προόδου της ανάπτυξης Για εκσφαλµάτωση των προγραµµάτων Για δοκιµή τωνπρογραµµάτων 12