ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Εισαγωγή 7 Oκτωβρίου 2009
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Agenda γιά σήμερα Στόχος του Μαθήματος Τρόπος διεξαγωγής, Υλικό Ομάδα Υποστήριξης Μαθήματος Περιεχόμενο του Μαθήματος Εισαγωγή στην Τεχνολογία Λογισμικού
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Στόχος του Μαθήματος Να δημιουργήσει μιά κατανόηση για: Τι είναι Τεχνολογία Λογισμικού Πως εφαρμόζονται οι τεχνικές της στην ανάπτυξη συστημάτων πληροφορικής
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Τρόπος Διεξαγωγής Μαθήματος Παραδόσεις Τετάρτη 3-6μμ 2ωρα Φροντιστήρια ( ημέρα και ώρα θα ανακοινωθούν στο e-class ) Απαλλακτική Εργασία
Εκπαιδευτικό Υλικό Βιβλίο: "Τεχνολογία Λογισμικού - Θεωρία καί Πράξη" της Bhari Lawrence Pfleeger, εκδόσεις Κλειδάριθμος (δύο τόμοι). Βιβλίο: «Βασικές Αρχές Τεχνολογίας Λογισμικού, Sommerville», εκδόσεις Κλειδάριθμος Ηλεκτρονικές Σημειώσεις στο e-class Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού
Oμάδα Υποστήριξης Μαθήματος Διδάσκουσα, Υπεύθυνη Μαθήματος ●Αφροδίτη Τσαλγατίδου, atsalga at di.uoa.gr, Γραφείο: Β2, τηλ Φροντιστήρια: ●Χριστίνα Τσαγκάνη, Υποψ. Διδάκτωρ, ●Χαράλαμπος Φραντζής, Υποψ. Διδάκτωρ
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Ύλη Μαθήματος Τι είναι Τεχνολογία Λογισμικού Μοντέλα Ανάπτυξης Λογισμικού Τεκμηρίωση Μελέτη Σκοπιμότητας Σχεδιασμός και Χρονοπρογραμματισμός Έργων Διοίκηση Έργων Προδιαγραφές Απαιτήσεων Σχεδιασμός Συστήματος Πρωτοτυποποίηση Αξιοπιστία Λογισμικού Εξασφάλιση Ποιότητας Λογισμικού Τεχνικές Ελέγχου, Επαλήθευση, Επικύρωση Configuration Management Συντήρηση Λογισμικού και Παράδοση Συστήματος
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Εισαγωγή στην Τεχνολογία Λογισμικού Χαρακτηριστικά Τεχνολογίας λογισμικού Καλώς κατασκευασμένο λογισμικό Διαδικασία Παραγωγής Λογισμικού – Μοντέλα Μοντέλο Καταρράκτη Μοντέλο Εξερευνητικού Προγραμματισμού Διαδικασία Παραγωγής Λογισμικού από την άποψη της Διοίκησης Έργων (Project Mgmt) Μοντέλα παραδοτέων εγγράφων (Deliverable-based Process Models) Risk-Based Process Models Μοντέλο διοίκησης της διαδικασίας ανάπτυξης λογισμικού
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Χαρακτηριστικά τεχνολογίας λογισμικού (1/2) Τεχνολογία λογισμικού (Software Engineering) Αφορά σε συστήματα λογισμικού που παράγονται από ομάδες ανθρώπων και όχι από μεμονωμένα άτομα Αρχές μηχανολογίας Τεχνικές και μη τεχνικές όψεις Όχι μόνο τεχνικές γνώσεις αλλά και επικοινωνία και συνεργασία Διοίκηση του όλου έργου (project management) Προβλήματα που απασχολούν τους χρήστες του λογισμικού
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Χαρακτηριστικά τεχνολογίας λογισμικού (2/2) Λογισμικό: πρόγραμμα που διαχειρίζονται οι χρήστες έγγραφα που απαιτούνται για την εγκατάσταση, χρήση, ανάπτυξη και συντήρηση
Εμφάνιση της Τεχνολογίας Λογισμικού (Τ.Λ.) Εμφανίστηκε στα τέλη του 1960, κατά τη διάρκεια σύσκεψης για την ανάγκη για νέο λογισμικό Μη ικανοποιητικές μέθοδοι ανάπτυξης για μεγάλα πακέτα -> Επιτακτική ανάγκη εύρεσης νέων μεθόδων Πολλά λάθη παρατηρούνται ακόμη Απαίτηση για νέα εργαλεία, μεθόδους και τεχνικές, και κυρίως, καλύτερη εκπαίδευση προσωπικού, ώστε να μπορεί η βιομηχανία παραγωγής λογισμικού να ανταποκριθεί στις αυξανόμενες ανάγκες της αγοράς. Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού
Που αναφέρεται ο όρος Τ.Λ. Διαδικασία Παραγωγής Λογισμικού Με Οικονομικό Τρόπο Πρόκληση: Κατασκευή Υψηλής Ποιότητας Λογισμικού με συγκεκριμένους πόρους και σε καθορισμένο χρονικό πλαίσιο Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού
Καλώς κατασκευασμένο λογισμικό (1/3) Συντηρήσιμο – οι αλλαγές που παρατηρούνται να καταγράφονται και να τεκμηριώνονται ώστε να γίνονται χωρίς ανώφελο κόστος Αξιόπιστο – λειτουργία σύμφωνα με τις απαιτήσεις και πιθανότητες κατάρρευσης σύμφωνα με τις προδιαγραφές του Αποδοτικό – ελάχιστη σπατάλη και μέγιστη αξιοποίηση των πόρων του συστήματος όπως π.χ μνήμη, κύκλοι μηχανής Κατάλληλη διεπαφή (interface) για τον χρήστη – μεγαλύτερη αξιοποίηση του λογισμικού
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Καλώς κατασκευασμένο λογισμικό (2/3) Κόστος – από τους σημαντικότερους παράγοντες Επιδίωξη η μείωσή του Συντηρησιμότητα: σημαντικός παράγων κόστους -> το μεγαλύτερο ποσοστό κόστους αφορά αλλαγές που γίνονται αφού έχει τεθεί σε λειτουργία Στόχος: βελτίωση των παραπάνω παραγόντων Ωστόσο μερικοί παράγοντες αλληλοαποκλείονται (π.χ. καλύτερο UI -> μείωση απόδοσης) Μη γραμμική σχέση κόστους και βελτιστοποίησης Πολλές φορές χρειάζεται να βελτιστοποιηθεί κάποιο χαρακτηριστικό εις βάρος κάποιου άλλου Οι μέθοδοι/στρατηγικές/πολιτικές που αναφέρονται στη συνέχεια θέτουν ως προτεραιότητες την αποδοτικότητα και τη συντηρησιμότητα
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Καλώς κατασκευασμένο λογισμικό (3/3) Σχέση κόστους με άλλους παράγοντες μη γραμμική, π.χ. κόστος – απόδοση εκθετική.
Η Διαδικασία Παραγωγής Λογισμικού (1/2) H Κρίση Λογισμικού στο 1960 και η άποψη ότι η παραγωγή λογισμικού είναι μια τεχνολογική διαδικασία (engineering process) -> Μοιάζει με τις άλλες τεχνολογίες διαδικασίες (engineering) To 1o μοντέλο (μοντέλο καταρράκτη) προέκυψε από άλλες αντίστοιχες τεχνολογικές διαδικασίες «Καταρράκτης» -> κάθετη μετάβαση από φάση σε φάση Δεν καλύπτει όλα τα συστήματα Η Διαδικασία παραγωγής λογισμικού είναι πολύ πιο σύνθετη και πολύπλοκη Σήμερα συνεχίζεται η έρευνα για Εξειδικευμένα Μοντέλα Όμως υπάρχουν αρκετά γενικευμένα μοντέλα για παραγωγή λογισμικού – ένα από αυτά είναι το μοντέλο καταρράκτη Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού
Η Διαδικασία Παραγωγής Λογισμικού (2/2) Μοντέλα Παραγωγής Λογισμικού Γενικευμένα Μοντέλα Μοντέλο Καταρράκτη Εξερευνητικός Προγραμματισμός Πρωτοτυποποίηση Τυπικοί Μετασχηματισμοί Συναρμολόγηση Συστήματος από Επαναχρησιμοποιούμενα συστατικά Μοντέλα με Εστίαση στην Παραγωγή Εγγράφων Μοντέλα Διοίκησης της Διαδικασίας Παραγωγής Λογισμικού Μοντέλο Σπιράλ (Boehm)
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Γενικευμένα μοντέλα (Ι) Μοντέλο καταρράκτη (Waterfall approach) Βασισμένο στην άποψη ότι η διαδικασία παραγωγής λογισμικού όμοια με άλλες τεχνολογικές διαδικασίες Πολύ απλό για να περιγράψει την πολυσύνθετη και πολύπλοκη διαδικασία παραγωγής λογισμικού Εξερευνητικός προγραμματισμός (Exploratory programming) Κατασκευή ενός αρχικού συστήματος Συνεχείς τροποποιήσεις ώστε να φτάσει σε ένα ικανοποιητικό σημείο Ανάπτυξη μοντέλων συστημάτων τεχνητής νοημοσύνης – αδυναμία προσδιορισμού απαιτήσεων Πρωτοτυποποίηση (Prototyping) Παρόμοια με την προηγούμενη Στόχος καθορισμός των απαιτήσεων του συστήματος Στη συνέχεια ανάπτυξη από την αρχή με ποιοτικό τρόπο
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Γενικευμένα μοντέλα (ΙΙ) Τυπικός μετασχηματισμός (Formal transformation) Ανάπτυξη τυπικού προσδιορισμού του συστήματος Μετασχηματισμός του σε πρόγραμμα, ώστε να διασφαλίζεται η ορθότητά του. Συναρμολόγηση του συστήματος από επαναχρησιμοποιήσιμα κομμάτια Σύνθεση - συναρμολόγηση συστήματος από ήδη υπάρχοντα κομμάτια
Μοντέλο Καταρράκτη (1/6) Υπάρχουν πολλές ποικιλίες Μερικές φορές λέγεται και «Μοντέλο Κύκλου Ζωής Λογισμικού» Όλες οι ποικιλίες μπορούν να ενσωματωθούν στο μοντέλο καταρράκτη που θα δούμε στη συνέχεια Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού
Μοντέλο καταρράκτη (2/6)
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Μοντέλο καταρράκτη (3/6) Στάδια Ανάλυση και προσδιορισμός των απαιτήσεων Συζήτηση με χρήστες του συστήματος για καθορισμό υπηρεσιών, στόχων και περιορισμών Σχεδιασμός συστήματος και λογισμικού Γενική αρχιτεκτονική του συστήματος και διαχωρισμός απαιτήσεων του συστήματος σε hardware ή software απαιτήσεις. Υλοποίηση και έλεγχος ενοτήτων (units) Υλοποίηση του λογισμικού ως ένα σύνολο από προγράμματα και ενότητες προγραμμάτων Έλεγχος κάθε ενότητας σύμφωνα με τις προδιαγραφές τους
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Μοντέλο καταρράκτη (4/6) Στάδια (συνέχεια) Ολοκλήρωση και έλεγχος του συστήματος Χτίσιμο συστήματος από τις επι μέρους ενότητες και έλεγχος ως ολοκληρωμένο πλέον σύστημα Λειτουργία και συντήρηση Εγκατάσταση και χρήση του συστήματος Συντήρηση διόρθωση των λαθών που δεν είχαν ανακαλυφθεί σε προηγούμενα στάδια του σχεδιασμού βελτίωση των προγραμμάτων βελτίωση των υπηρεσιών του συστήματος όσο ανάλογα με νέες απαιτήσεις
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Μοντέλο καταρράκτη (5/6) Μειονεκτήματα Παρότι είναι χρήσιμο για λόγους διαχείρισης να φαίνονται τα στάδια σχεδίασης, το μοντέλο δεν καθρεφτίζει τις πραγματικές δραστηριότητες παραγωγής λογισμικού γιατί τα στάδια συχνά επικαλύπτονται και τροφοδοτούν το ένα το άλλο Η πραγματική διαδικασία παραγωγής λογισμικού δεν είναι γραμμική αλλά έχει πολλές επαναλήψεις Δεν είναι εφικτό να οριστούν συγκεκριμένα σημεία ελέγχου (check points) που βοηθούν στον περαιτέρω προγραμματισμό του σχεδιασμού και στη δημιουργία αναφορών για την πορεία του έργου «Πάγωμα» των απαιτήσεων από πολύ νωρίς, οδηγεί πιθανώς σε μη αναμενόμενη λειτουργικότητα συστήματος (προβλήματα που εμφανίζονται αγνοούνται ή αφήνονται για μελλοντική επίλυση)
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Μοντέλο καταρράκτη (6/6) Περιορισμός Κόστους Το κόστος κάθε στάδιου παραγωγής λογισμικού δεν μπορεί να προκαθοριστεί, εξαρτάται από το είδος της εφαρμογής Μείωση του συνολικού κόστους επιτυγχάνεται από καλύτερη και αποδοτική διατίμηση των απαιτήσεων του συστήματος, της υλοποίησης και του κύκλου σχεδίασης που σχετίζεται με την επαλήθευση και επικύρωση Το κόστος για τη συντήρηση του λογισμικού εξαρτάται και αυτό από το είδος της εφαρμογής Συνήθως το κόστος συντήρησης μειώνεται όταν το λογισμικό έχει αναπτυχθεί ακολουθώντας μια μεθοδολογική προσέγγιση
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Εξερευνητικός προγραμματισμός (1/2) Ανάπτυξη πρώτης υλοποίησης Συνεχείς εκθέσεις της πρώτης αυτής ιδέας για το σύστημα στο χρήστη Εξέλιξη και εμπλουτισμός με βάση τα σχόλια και τις παρατηρήσεις του Δεν υφίσταται η έννοια της επαλήθευσης (verification) Η επαλήθευση έχει νόημα μόνο όταν το πρόγραμμα συγκρίνεται με τις προδιαγραφές του, οι οποίες όμως δεν υπάρχουν στον εξερευνητικό προγραμματισμό
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Εξερευνητικός προγραμματισμός (2/2) Προβληματική Διαχείριση συστατικών λογισμικού -> παραγωγή μεγάλου αριθμού εγγράφων Δεν είναι οικονομική - πολλά έγγραφα για ένα σύστημα το οποίο υφίσταται τόσες συνεχείς αλλαγές Εφαρμογή σε συστήματα με όχι τόσο σαφή δομή Συνεχής αλλαγή στο σύστημα -> αλλοίωση δομής του Δύσκολη και δαπανηρή συντήρηση για μεγάλα συστήματα Ομάδες ανάπτυξης Μικρές με υψηλή κατάρτιση και εξειδίκευση Προσόντα και τεχνικές στην παραγωγή λογισμικού δεν επαρκούν σ’ αυτό το είδος ανάπτυξης λογισμικού
ΜΟΝΤΕΛA ΜΕ ΕΣΤΙΑΣΗ ΣΤΗΝ ΠΑΡΑΓΩΓΗ ΠΑΡΑΔΟΤΕΩΝ ΕΓΓΡΑΦΩΝ Χαρακτηριστικά, Πλεονεκτήματα, Μειονεκτήματα
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού ΕΝΕΡΓΕΙΑΕΓΓΡΑΦΑ ΕΞΟΔΟΥ Αρχικός ορισμός των απαιτήσεωνΜελέτη σκοπιμότητας Περίγραμμα απαιτήσεων Ανάλυση απαιτήσεωνΠροδιαγραφές απαιτήσεων Προδιαγραφές συστήματοςΛειτουργικές προδιαγραφές Προδιαγραφές Ελέγχου αποδοχής Πρόχειρο εγχειρίδιο χρήστη Αρχιτεκτονικός σχεδιασμόςΠροδιαγραφές σχεδιασμού αρχιτεκτονικής Προδιαγραφές ελέγχου Σχεδιασμός InterfaceΠροδιαγραφές Interface Προδιαγραφές ελέγχου ολοκλήρωσης Λεπτομερής σχεδιασμόςΠροδιαγραφές σχεδιασμού Προδιαγραφές ελέγχου τμημάτων του συστήματος ΚωδικοποίησηΚώδικας προγράμματος Έλεγχος ενοτήτωνΑναφορές ελέγχου ενοτήτων Έλεγχος τμημάτωνΑναφορές ελέγχου τμημάτων Έλεγχος ολοκλήρωσηςΑναφορά ελέγχου ολοκλήρωσης Τελικό εγχειρίδιο χρήστη Εγχειρίδιο Χειριστή Έλεγχος συστήματοςΑναφορά ελέγχου συστήματος Έλεγχος αποδοχήςΤελικό σύστημα ΜΟΝΤΕΛΑ ΠΑΡΑΔΟΤΕΩΝ ΕΓΓΡΑΦΩΝ: Χαρακτηριστικά, Πλεονεκτήματα
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Μειονεκτήματα μοντέλου παραδοτέων εγγράφων Κίνδυνος παραγωγής μη αξιόπιστων ή μη πραγματικών εγγράφων Περιορισμός της διαδικασίας επανάληψης λόγω ανάγκης δημιουργίας και αποδοχής εγγράφων Η όλη διαδικασία παραγωγής δεν ακολουθεί πάντα γραμμική εξέλιξη Σημαντικός χρόνος επαλήθευσης εγγράφου Σπάνια υπάρχει μια ομαλή μετάβαση από στάδιο σε στάδιο
ΜΟΝΤΕΛΑ ΔΙΟΙΚΗΣΗΣ ΤΗΣ ΔΙΑΔΙΚΑΣΙΑΣ ΑΝΑΠΤΥΞΗΣ ΛΟΓΙΣΜΙΚΟΥ
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Το μοντέλο σπιράλ του BOEHM (1/2) Συμπεριλαμβάνει όλα τα μοντέλα παραγωγής λογισμικού ικανοποιεί τις απαιτήσεις των προμηθευτών λογισμικού Αποτίμηση κάποιων διαχειριστικών ρίσκων σε τακτά στάδια της παραγωγής και εκκίνηση διαδικασιών που θα αντιμετωπίσουν αυτά τα ρίσκα Βρίσκουμε τα ρίσκα όταν σκεφτόμαστε τι μπορεί να πάει λάθος Π.χ ένα ρίσκο μπορεί να είναι να αποφασίσουμε να χρησιμοποιήσουμε για την ανάπτυξη του λογισμικού μια νέα γλώσσας προγραμματισμού ενώ δεν υπάρχει συγκεκριμένος compiler διαθέσιμος Γιά κάθε ρίσκο χρειάζεται να πάρουμε προληπτικά μέτρα για να μη συμβεί ή/και μέτρα για να το αντιμετωπίσουμε αν συμβεί
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Το μοντέλο σπιράλ του BOEHM (ΙΙ)
Εισαγωγή – Μοντέλα Ανάπτυξης Λογισμικού Περισσότερες Πληροφορίες