Μεθοδολογίες Παραγωγής Λογισµικού
Βασικά Γενικά Μοντέλα Μοντέλο καταρράκτη (waterfall model) Ξεχωριστές φάσεις καθορισµού απαιτήσεων και ανάπτυξης, επικύρωσης, εξέλιξης Εξελικτική ανάπτυξη (evolutionary development) Ανάµιξη των δραστηριοτήτων της εξαγωγής προδιαγραφών, της ανάπτυξης, και της επικύρωσης, γρήγορη ανάπτυξη prototype και ανάδραση από πελάτη Τεχνολογία λογισµικού βάσει συστατικών στοιχείων (component-based) Το σύστηµα συγκροτείται στο µεγαλύτερο µέρος του από τον συνδυασµό υπαρχόντων συστατικών στοιχείων Παραλλαγές των ανωτέρω Ορθολογική Ενοποιηµένη Διαδικασία (Rational Unified Process)
Μοντέλο Καταρράκτη
Φάσεις Μοντέλου Καταρράκτη Ανάλυση και καθορισµός απαιτήσεων µέσω συζητήσεων µε τους χρήστες: λειτουργικότητα, περιορισµοί στόχοι -> προδιαγραφές Σχεδιασµός συστήµατος και λογισµικού: υλικό και λογισµικό, καθορισµός αρχιτεκτονικής, components του συστήµατος, σχέσεις µεταξύ τους Υλοποίηση και δοκιµές υποµονάδων: συγγραφή κώδικα και επαλήθευση Ενοποίηση και δοκιµές συστήµατος: τα components ολοκληρώνονται µεταξύ τους και δοκιµάζονται ως ενιαίο σύστηµα, παράδοση Λειτουργία και συντήρηση: διόρθωση σφαλµάτων, βελτιστοποίηση υπηρεσιών Αποτέλεσµα κάθε φάσης: ένα ή περισσότερα εγκεκριµένα έγγραφα
Προβλήµατα Μοντέλου Καταρράκτη Το βασικό µειονέκτηµα του µοντέλου καταρράκτη είναι η δυσκολία στην πραγµατοποίηση τροποποιήσεων αφού η διαδικασία έχει ξεκινήσει. Πρέπει να ολοκληρωθεί µία φάση για να προχωρήσει η διαδικασία στην επόµενη φάση. Ο άκαµπτος διαµερισµός του έργου σε ξεχωριστά στάδια δυσχεραίνει την ανταπόκριση σε αλλαγές των απαιτήσεων του πελάτη. Εποµένως, το µοντέλο αυτό πρέπει να χρησιµοποιείται µόνο όταν οι απαιτήσεις είναι καλά κατανοητές και αναµένονται µόνο περιορισµένες αλλαγές κατά την ανάπτυξη του συστήµατος. λίγα επιχειρηµατικά συστήµατα έχουν σταθερές απαιτήσεις. Αν επιχειρηθούν αλλαγές κατά την πορεία, συνήθως προκύπτει κακή οργάνωση Συνήθως οδηγεί σε αυξηµένο κόστος
Εξελικτική Ανάπτυξη
Τύποι Εξελικτικής Ανάπτυξης Διερευνητική ανάπτυξη Η διαδικασία έχει στόχο τη συνεργασία µε τον πελάτη προκειµένου να αναπτυχθεί το τελικό σύστηµα από το αρχικό περίγραµµα προδιαγραφών. Ξεκινά από τις απαιτήσεις που είναι καλά κατανοητές και εξελίσσεται µε την προσθήκη νέων δυνατοτήτων που προτείνονται από τον πελάτη. Δηµιουργία αναλώσιµων πρωτοτύπων Ο στόχος είναι η κατανόηση των απαιτήσεων του συστήµατος. Ξεκινά από τις απαιτήσεις που δεν είναι καλά κατανοητές για να διασαφηνιστεί τι πραγµατικά χρειάζεται.
Προβλήµατα Εξελικτικής Ανάπτυξης Έλλειψη διαφάνειας της διαδικασίας δεν είναι αποδοτική η παραγωγή τεκµηρίωσης για κάθε εκδοχή του συστήµατος δεν µπορεί να παρακολουθηθεί η πρόοδος Τα συστήµατα συχνά έχουν κακή οργάνωση και δοµή Μπορεί να απαιτούνται ειδικές ικανότητες για παράδειγµα, ικανότητες σε συγκεκριµένες τεχνολογίες για τη γρήγορη παραγωγή πρωτοτύπων ->ADF
Εφαρµογή Εξελικτικής Ανάπτυξης Σε διαδραστικά συστήµατα µικρού ή µεσαίου µεγέθους (µέχρι 500.000 γραµµές κώδικα) Για συστήµατα µικρής διάρκειας ζωής Σε τµήµατα µεγάλων συστηµάτων (για παράδειγµα, για τη διασύνδεση χρήστη)
Τεχνολογία Λογισµικού Βάσει Συστατικών Στοιχείων
Τεχνολογία Λογισµικού Βάσει Συστατικών Στοιχείων Βασίζεται στην αρχή της επαναχρησιµοποίησης, η οποία προβλέπει την ενσωµάτωση συστηµάτων από υπάρχοντα συστατικά στοιχεία ή από εµπορικά συστήµατα. Στάδια της διαδικασίας Ανάλυση συστατικών στοιχείων Τροποποίηση απαιτήσεων Σχεδιασµός συστήµατος µε επαναχρησιµοποίηση Ανάπτυξη και ενοποίηση Η συγκεκριµένη προσέγγιση χρησιµοποιείται ολοένα και περισσότερο λόγω της εµφάνισης προτύπων συστατικών στοιχείων. Βοήθησε η διάδοση του ΕΛΛΑΚ
Τεχνολογία Λογισµικού Βάσει Συστατικών Στοιχείων Πλεονεκτήµατα Απαιτείται η ανάπτυξη λιγότερου λογισµικού Μειωµένο κόστος κίνδυνοι χρόνος Μειονεκτήµατα Συµβιβασµοί στις απαιτήσεις Δεν υπάρχει πλήρης έλεγχος της εξέλιξης του συστήµατος (τι γίνεται όταν διατεθεί µια νέα έκδοση κάποιου component από κάποιον τρίτο;) Πρέπει να δοθεί προσοχή σε ασφάλεια και αξιοπιστία του κώδικα τρίτων Licencing (π.χ. GPL)
Κατανοµή Κόστους Διαδικασίας Η κατανοµή του κόστους εξαρτάται από το χρησιµοποιούµενο µοντέλο ανάπτυξης
Επαναληπτικές Διαδικασίες Οι απαιτήσεις ενός συστήµατος εξελίσσονται κατά την πορεία ενός έργου, συνεπώς στη διαδικασία ανάπτυξης µεγάλων συστηµάτων πάντα υπάρχουν επαναληπτικές διαδικασίες που περιλαµβάνουν την αναθεώρηση προγενέστερων σταδίων. Η επαναληπτική µεθοδολογία µπορεί να εφαρµοστεί σε οποιοδήποτε από τα γενικά µοντέλα διαδικασιών. Προσεγγίσεις Βαθµιαία παράδοση Σπειροειδής ανάπτυξη
Βαθµιαία Παράδοση Συνδυάζει καταρράκτη και εξελικτική ανάπτυξη Το σύστηµα δεν παραδίδεται σε ένα και µόνο στάδιο, αλλά η ανάπτυξη και η παράδοση χωρίζονται σε παραδοτέες επαυξήσεις (increments), καθεµιά από τις οποίες αποδίδει υποσύνολο των απαιτούµενων λειτουργιών. Ορίζεται η προτεραιότητα των απαιτήσεων των χρηστών και οι απαιτήσεις µε την πιο υψηλή προτεραιότητα περιλαµβάνονται στις πρώτες επαυξήσεις. Αφού ξεκινήσει η ανάπτυξη µιας επαύξησης, οι απαιτήσεις της συγκεκριµένης επαύξησης παγιώνονται, αλλά οι απαιτήσεις µεταγενέστερων επαυξήσεων µπορούν να συνεχίσουν να εξελίσσονται.
Βαθµιαία Παράδοση
Πλεονεκτήµατα Βαθµιαίας Παράδοσης Κάθε επαύξηση ικανοποιεί κάποιες απαιτήσεις των πελατών, εποµένως µέρος των λειτουργιών του συστήµατος διατίθεται προς χρήση πριν από την ολοκλήρωση του έργου. Οι πρώτες επαυξήσεις αποτελούν πρωτότυπα που συµβάλλουν στην κατάστρωση των απαιτήσεων για τις επαυξήσεις που ακολουθούν. Μικρότερος κίνδυνος ολικής αποτυχίας του έργου. Οι υπηρεσίες υψηλότερης προτεραιότητας συνήθως δοκιµάζονται περισσότερο εντοπίζονται αστοχίες και λάθη
Σπειροειδής Ανάπτυξη Η διαδικασία αναπαρίσταται µε τη µορφή ελικοειδούς γραµµής και όχι ως ακολουθία δραστηριοτήτων µε κάποιες επανόδους από τη µία δραστηριότητα στην άλλη. Κάθε βρόχος της σπείρας αντιπροσωπεύει και µια φάση της διαδικασίας. Δεν υπάρχουν σταθερές φάσεις όπως η φάση της εξαγωγής προδιαγραφών ή του σχεδιασµού λογισµικού - οι βρόχοι της σπείρας επιλέγονται ανάλογα µε τις απαιτήσεις. Καθόλη τη διαδικασία γίνεται ρητή εκτίµηση (αξιολόγηση) και επίλυση των κινδύνων.
Σπειροειδής Ανάπτυξη
Τοµείς Σπειροειδούς Μοντέλου Ορισµός αντικειµενικών στόχων Προσδιορίζονται συγκεκριµένοι στόχοι σε κάθε φάση και λεπτοµερές πλάνο διαχείρισης φάσης, εντοπίζονται κίνδυνοι και καταρτίζονται εναλλακτικές στρατηγικές Αξιολόγηση και περιορισµός κινδύνων Γίνεται λεπτοµερής ανάλυση και αξιολόγηση κινδύνων και δηµιουργούνται διαδικασίες περιορισµού τους. Ανάπτυξη και επικύρωση Επιλέγεται ένα µοντέλο για την ανάπτυξη του συστήµατος - µπορεί να είναι οποιοδήποτε από τα γενικά µοντέλα Π.χ. αν κύριο µέληµα το interface -> εξελικτική ανάπτυξη αν κύριο µέληµα ασφάλεια -> τυπικοί µετασχηµατισµοί Προγραµµατισµός Γίνεται µια επισκόπηση του έργου και προγραµµατισµός της επόµενης φάσης της σπειροειδούς ανάπτυξης.
Ενδεικτική Βιβλιογραφία Κεφάλαιο 8 ο «Μοντέλα Συστήµατος» του βιβλίου «Βασικές Αρχές Τεχνολογίας Λογισµικού» του Ian Sommerville Κεφάλαιο 1 ο Εισαγωγή στην Ανάλυση και το Σχεδιασµό Συστηµάτων (σελ. 25-65) του βιβλίου «Ανάλυση και Σχεδιασµός Συστηµάτων µε τη UML 2.0 των Davis, Wixon, Tegarden
Ενδεικτικά Ζητήµατα Μοντέλα διαδικασίας παραγωγής λογισµικού Μοντέλο Καταρράκτη Μοντέλο εξελικτικής ανάπτυξης Μοντέλο συστατικών στοιχείων Ορισµός και στόχος κάθε µοντέλου/ Πλεονεκτήµατα και Μειονεκτήµατα Διαφορές ανάµεσα στα µοντέλα Σπυροειδής ανάπτυξη Που και πως συνεισφέρει η επαναληπτική διαδικασία? Μειονεκτήµατα και πλεονεκτήµατα Ορθολογική Ενοποιηµένη Διαδικασία (RUP) Ορισµός, στόχος UML και εργαλεία Εργαλεία CASE Ορισµός, στόχος