Μεθοδολογίες Ανάπτυξης Π.Σ. (Διάλεξη 7)
Μια τυποποποιημένη προσέγγιση υλοποίησης Π.Σ. => μία λίστα βημάτων και παραδοτέων Διάφορες μεθοδολογίες ανάπτυξης συστημάτων Τυποποιημένα πρότυπα Άλλες έχουν αναπτυχθεί από εταιρείες Εσωτερικές μεθοδολογίες που διαθέτουν οι ίδιοι οι οργανισμοί
Βασιζόμενοι στην έννοια ενός Π.Σ. οι μεθοδολογίες στηρίζονται στις επιχειρηματικές διαδικασίες ή στα δεδομένα που υποστηρίζουν την επιχείρηση και γιαυτό χωρίζονται σε 2 κατηγορίες: Με επίκεντρο τις διαδικασίες (process-centered): εστιάζονται στο καθορισμό των διαδικασιών Με επίκεντρο τα δεδομένα (process-centered): εστιάζονται στα μοντέλα δεδομένων Αντικειμενοστραφείς μεθοδολογίες (Object-oriented) Προσπαθούν να εξισορροπήσουν μεταξύ διαδικασιών και δεδομένων ενσωματώνοντας και τα δύο σε ένα μοντέλο Σημαντικό ρόλο στην κατηγοροποίηση των μεθοδολογιών παίζει τόσο η σειρά των φάσεων, όσο ο χρόνος και η εργασία που αφιερώνονται σε κάθε μία από αυτές Υπάρχει πρόβλημα όταν έχουμε σύνθετες ή ασαφείς απαιτήσεις
Προσέγγιση η εισαγωγή της οποίας έγινε τη δεκαετία του 1980 Μέχρι την εισαγωγή τους τα Π.Σ. αναπτύσονταν «επί τούτω» και με μια άναρχη προσέγγιση Ο δομημένος σχεδιασμός υιοθετεί μία τυποποιημένη βαθμιαία προσέγγιση η οποία κινείται με λογικό τρόπο από τη μία φάση στην άλλη Γνωστές μεθοδολογίες Ανάπτυξη καταρράκτη Παράλληλη ανάπτυξη
Οι αναλυτές και οι χρήστες προχωρούν γραμμικά (με τη σειρά) από τη μία φάση στην επόμενη Τα βασικά παραδοτέα για κάθε φάση συνήθως έχουν πολύ μεγάλο μέγεθος (συχνά εκατοντάδες σελίδες) Τα παραδοτέα παρουσιάζονται στον εντολέα του έργου προς έγκριση καθώς το έργο τελειώνει μια φάση και μπαίνει στην επόμενη Η επιστροφή σε κάποιο προηγούμενο στάδιο είναι εξαιρετικά δύσκολη (μόνο σε πολύ κοντινές φάσεις)
Επειδή υπήρξε η πρώτη μεθοδολογία ανάπτυξης Π.Σ. εισήγαγε τη χρήση τυποποιημένων τεχνικών μοντελοποίησης ή σχεδίασης διαγραμμάτων Ο παραδοσιακός δομημένος σχεδιασμός χρησιμοποιεί συγκεκριμένα σύνολα διαγραμμάτων: Ένα για την αναπαράσταση των διαδικασιών Ένα για την αναπαράσταση των δεδομένων Το αν θα δοθεί προτεραιότητα στα δεδομένα ή τις διαδικασίες αποτελεί αντικείμενο μεγάλης διαμάχης Είναι ο αναλυτής ο οποίος πρέπει να αποφασίσει ποιο σύνολο θα αναπτύξει πρώτα
Πλεονεκτήματα μοντέλου: Οι απαιτήσεις του συστήματος προσδιορίζονται στο πρώτο (πολύ πριν ξεκινήσει ο προγραμματισμός) Ελαχιστοποιεί τις αλλαγές στις απαιτήσεις καθώς εξελίσσεται το έργο (η επιστροφή στις παλαιότερες φάσεις είναι πολύ δύσκολη) Μειονεκτήματα μοντέλου: Ο σχεδιασμός θα πρέπει να έχει καθοριστεί ολοκληρωτικά πριν ξεκινήσει ο προγραμματισμός Μεσολαβεί πολύς χρόνος μεταξύ της ολοκλήρωσης της πρότασης του συστήματος στη φάση ανάλυσης και παράδοσης του συστήματος (συνήθως πολλοί μήνες ή χρόνια)
Η εισαγωγή του έγινε για να παρακάμψει το πλεονέκτημα του μοντέλου καταράκτη και να αντιμετωπίσει το πρόβλημα των μεγάλων χρονικών διαστημάτων μεταξύ της φάσης της ανάλυσης και της παράδοσης του συστήματος Ο σχεδιασμός και η υλοποίηση δεν εκτελούνται πλέον με τη σειρά αλλά: Στην αρχή εκτελείται ένας γενικός σχεδιασμός για όλο το σύστημα Μετά από αυτό το έργο διαιρείται σε μια σειρά δευτερευόντων έργων τα οποία μπορούν να σχεδιαστούν και να υλοποιηθούν παράλληλα Με την ολοκλήρωση των δευτερεύοντων έργων, ακολουθείται μία τελική φάση ενοποίησης των ξεχωριστών τμημάτων και το σύστημα παραδίδεται
Πλεονεκτήματα: Περιορίζει πολλές φορές το χρονοδιάγραμμα παράδοσης του συστήματος λόγω της παράλληλης σχεδίασης και ανάπτυξης των δευτερεύοντων έργων Ως συνέπεια, υπάρχει λιγότερη πιθανότητα να παρουσιαστούν αλλαγές στο επιχειρηματικό περιβάλλον οι οποίες θα προκαλέσουν επανάληψη εργασίας Μειονεκτήματα: Έχει ακόμη τα προβλήματα που προκαλούν τα πολλά και μεγάλα έντυπα έγγραφα Τα δευτερεύονται έργα μπορεί να μην είναι απολύτως ανεξάρτητα, και γιαυτό το λόγο οι αποφάσεις που πρέπει να παρθούν για κάποιο να επηρεάζουν κάποιο άλλο, με συνέπεια να απαιτείται μεγάλη προσπάθεια στην ενοποίηση
Νεότερη κλάση μεθοδολογιών η εισαγωγή των οποίων έγινε την δεκαετία ’90 Προσπαθούν να αντιμετωπίσουν και τις δύο βασικές αδυναμίες των μεθοδολογιών δομημένου σχεδιασμού: Οι φάσεις ανάπτυξης του Π.Σ. αλλάζουν έτσι ώστε ένα μέρος του συστήματος να αναπτύσσεται και να παραδίδεται στα χέρια των χρηστών σε μικρότερο χρονικό διάστημα Μέσα από τα παραδοτέα οι τελικοί χρήστες έχουν τη δυνατότητα να κατανοήσουν καλύτερα το σύστημα αλλά και να προτείνουν αναθεωρήσεις οι οποίες θα το φέρουν πιο κοντά στο ζητούμενο
Οι αναλυτές χρησιμοποιούν ειδικές τεχνικές και εργαλεία υπολογιστών για να επιταχύνουν τις φάσεις της ανάλυσης, του σχεδιασμού, της υλοποίησης Τέτοια εργαλεία είναι: Εργαλεία CASE Σύνοδοι κοινού σχεδιασμού εφαρμογών (joint application design – JAD) Γλώσσες 4 ης γενιάς Οπτικές γλώσσες προγραμματισμού Γεννήτριές κώδικα (παράγουν αυτόματα προγράμματα από τις προδιαγραφές σχεδιασμού)
Βελτιώνεται η ταχύτητα και η ποιότητα ανάπτυξης των συστημάτων ΠΙΘΑΝΟ ΕΥΑΙΣΘΗΤΟ ΠΡΟΒΛΗΜΑ: Η διαχείριση των προσδοκιών του χρήστη Η ταχύτητα και η ποιότητα της ανάπτυξης συστημάτων, που οφείλεται στη χρήση εργαλείων και τεχνικών, μπορεί να αλλάξει δραστικά τις προσδοκίες των χρηστών
Διαιρεί το γενικό σύστημα σε μια σειρά εκδόσεων Οι εκδόσεις αναπτύσσονται διαδοχικά Η φάση της ανάλυσης προσδιορίζει τη γενική ιδέα του συστήματος Η ομάδα έργου, οι χρήστες και ο εντολέας κατηγοριοποιούν τις απαιτήσεις σε μια σειρά εκδόσεων Οι πιο σημαντικές και θεμελιώδεις απαιτήσεις συγκεντρώνονται στη πρώτη έκδοση του συστήματος Κατόπιν, η φάση της ανάλυσης οδηγεί στο σχεδιασμό και την υλοποίηση (μόνο βάση του συνόλου απαιτήσεων που προσδιορίστηκαν στην Έκδοση 1)
Ξεκινά η εργασία στην έκδοση 2 Εκτελείται πρόσθετη ανάλυση Βασίζεται στις απαιτήσεις που προσδιορίστηκαν προηγουμένως σε συνδυασμό με νέες ιδέες και ζητήματα που προέκυψαν από τις εμπειρίες των χρηστών με την έκδοση 1 Η έκδοση 2 σχεδιάζεται και υλοποιείται, οπότε ξεκινά η εργασία για την επόμενη έκδοση Η διαδικασία συνεχίζεται μέχρι το σύστημα να ολοκληρωθεί ή να μη χρησιμοποιείται πλέον
Πλεονεκτήματα: Γρήγορη παράδοση ενός χρήσιμου συστήματος στα χέρια των χρηστών Το σύστημα στις διάφορες εκδόσεις δεν είναι πλήρως λειτουργικό αλλά αρχίζει να έχει επιχειρηματική αξία σύντομα Οι χρήστες αρχίζουν να εργάζονται με το σύστημα πιο γρήγορα και έτσι μπορούν να προσδιοριστούν σημαντικές επιπλέον απαιτήσεις πιο σύντομα απ’ ότι στις περιπτώσεις δομημένου σχεδιασμού Μειονεκτήματα: Οι χρήστες ξεκινούν να εργάζονται με συστήματα που είναι σκοπίμως ελλιπή ΣΗΜΑΝΤΙΚΟ: να προσδιοριστούν οι πιο σημαντικές και χρήσιμες λειτουργίες (ώστε να συμπεριληφθούν στην αρχική έκδοση)
Οι φάσεις της ανάλυσης, σχεδιασμού και υλοποίησης εκτελούνται ταυτόχρονα και επαναλαμβάνονται συνεχώς σε ένα κύκλο μέχρι να ολοκληρωθεί το σύστημα Επειδή εκτελούνται οι βασικές δραστηριότητες της ανάλυσης και του σχεδιασμού, οι εργασίες ξεκινούν αμέσως σε ένα «πρωτότυπο συστήματος» Πρωτότυπο συστήματος (system prototype): “γρήγορο και πρόχειρο» πρόγραμμα που παρέχει ελάχιστη ποσότητα λειτουργικότητας
Πλεονεκτήματα: Άμεση παροχή ενός συστήματος με το οποίο οι χρήστες μπορούν να αλληλεπιδράσουν (ακόμη κι αν δεν είναι έτοιμο για χρήση από την αρχή) Καθησυχάζει τους χρήστες ότι η ομάδα εργάζεται επάνω στο σύστημα Βοηθά στην γρήγορη εξαγωγή πραγματικων απαιτήσεων Μειονεκτήματα: Ο γρήγορος ρυθμός των εκδόσεων δυσχεραίνει τις προσπάθειες να διεξαχθεί μια προσεκτική και συστηματική ανάλυση λόγω πολλών αλλαγών του πρωτοτύπου πολλές αρχικές αποφάσεις σχεδιασμού καθίστανται ανεπαρκείς
Τα αναλώσιμα πρώτυπα δημιουργούνται σε διαφορετικό σημείο του κύκλου ζωής και ανάπτυξης του συστήματος Ο σκοπός των πρωτοτύπων είναι διαφορετικός από προηγουμένως: Κάθε πρωτότυπο χρησιμοποιείται για να ελαχιστοποιήσει το κίνδυνο που σχετίζεται με το σύστημα, επιβεβαιώνοντας ότι διάφορα σημαντικά ζητήματα είναι επαρκώς κατανοητά πριν τη κατασκευή του πραγματικού προϊόντος Μόλις επιλυθούν τα ζητήματα σχεδιασμός και υλοποίηση εγκαταλείπονται (γι’ αυτό ονομάζονται ΑΝΑΛΩΣΙΜΑ)
Ο χρόνος παράδοσης του τελικού συστήματος είναι μεγαλύτερος σε σχέση με αντίστοιχες μεθοδολογίες κατασκευής πρωτοτύπων Παρέχουν πιο σταθερά και αξιόπιστα συστήματα
Μεθοδολογίες που επικεντρώνονται στη δραστηριότητα του προγραμματισμού διαθέτουν ελάχιστους κανόνες και πρακτικές που ακολουθούνται αρκετά εύκολα Εστιάζονται στην επιτάχυνση του κύκλου ζωής και ανάπτυξης του συστήματος προσπαθούν να εξαλείψουν ένα μεγάλο μέρος της επιβάρυνσης λόγω μοντελοποίησης και τεκμηρίωσης και του ανάλογου χρόνου που δαπανάται από αυτές τις δραστηριότητες Τα έργα επικεντρώνονται σε μια απλή, επαναληπτική ανάπτυξη εφαρμογών ΠΑΡΑΔΕΙΓΜΑΤΑ: Ακραίος προγραμματισμός Scrum Δυναμική μέθοδος ανάπτυξης συστημάτων
Εξαρτάται από το σύστημα υπό ανάπτυξη (δεν υπάρχει κάποια που θεωρείται καλύτερη για όλες τις περιπτώσεις)
Οι απαιτήσεις δεν είναι πάντα σαφείς Οι χρήστες συνήθως πρέπει να αλληλεπιδράσουν με τη τεχνολογία για να καταλάβουν τι μπορεί να κάνει ένα νέο σύστημα και ποιος ο καλύτερος τρόπος να εφαρμοστεί στις ανάγκες τους επιλέγω γιατί
Η γρήγορη εφαρμογή της νέας τεχνολογίας θα βελτιώσει τις πιθανότητες επιτυχίας Οι χρήστες συνήθως πρέπει να αλληλεπιδράσουν με τη τεχνολογία για να καταλάβουν τι μπορεί να κάνει ένα νέο σύστημα και ποιος ο καλύτερος τρόπος να εφαρμοστεί στις ανάγκες τους επιλέγω γιατί
Τα πολύπλοκα συστήματα απαιτούν προσεκτικές και λεπτομερείς φάσεις ανάλυσης και σχεδιασμού Ποιες μεθοδολογίες επιλέγονται; Μεθοδολογίες με βάση τη κατασκευή αναλώσιμων προϊόντων Παραδοσιακές με βάση το δομημένο σχεδιασμό Λιγότερο οι μεθοδολογίες με βάση τη σταδιακή ανάπτυξη
Είναι ο πιο σημαντικός, ίσως, παράγοντα στην ανάπτυξη Για ορισμένες εφαρμογές είναι πολύ κρίσιμη (π.χ. ιατρικός εξοπλισμός, πυραυλικά συστήματα) Για άλλες απλώς σημαντική (π.χ. παιχνίδια, διαδικτυακό βίντεο) επιλέγω γιατί
επιλέγω γιατί Χειρότερη επιλογή: Μεθοδολογία καταρράκτη (δεν επιτρέπει εύκολες αλλαγές στο χρονοδιάγραμμα)
επιλέγω γιατί Χειρότερη επιλογή: μεθοδολογίες δομημένου σχεδιασμού => η δυσκολία έγκειται στο ότι ο σχεδιασμός και η υλοποίηση λαμβάνουν χώρα στο τέλος του έργου
Στα μέχρι τώρα μοντέλα η ανάπτυξη παραμένει μια σειριακή διαδικασία που λαμβάνει χώρα είτε σε ολόκληρο είτε σε ένα μέρος του συστήματος Γενικά μειονεκτήματα Αυθαίρετη κατάτμηση του συστήματος Κάθε οπισθοδρόμηση ή ανατροπή κοστίζει σε χρόνο, σε χρήμα ή ακόμα και την αποτυχία της ανάπτυξης του συστήματος Ο αυστηρός προσδιορισμός των φάσεων δεν είναι δυνατό να ακολουθείται σε όλες τις περιπτώσεις Εισαγωγή του σπειροειδούς μοντέλου
Γενίκευση των μοντέλων της λειτουργικής επαύξησης και της πρωτοτυποποίησης με επιπρόσθετα: Οι φάσεις και οι διαδικασίες ανάπτυξης δεν είναι προκαθορισμένες αλλά προσδιορίζονται κατά την εφαρμογή Η ανάπτυξη όλου του συστήματος χωρίζεται σε πολλούς κύκλους σε καθένα από τους οποίους προστίθενται νέα λειτουργικά χαρακτηριστικά στο σύστημα Πριν την έναρξη κάποιου κύκλου γίνεται μελέτη σκοπιμότητας και ανάλυση κινδύνων. Έτσι ορίζονται τόσο οι εργασίες που πρέπει να εκτελεστουν μέσα στον κύκλο, όσο και το αν είναι εφικτό να εκτελεστεί ο ίδιος ο κύκλος
Προσδιορισμός στόχων: καθορίζονται τα αντικείμενα εργασιών, οι περιορισμοί επί του προϊόντος και της διαδικασίας που θα ακολουθηθεί, καταγράφονται οι κίνδυνοι και οι εναλλακτικές λύσεις Εντοπισμός και επίλυση κινδύνων: Αναλύονται οι κίνδυνοι που έχουν καταγραφεί και αποτιμάται κάθε εναλλακτική λύση. Πέρνονται αποφάσεις για την συνέχιση ή όχι της ανάπτυξης, για το μοντέλο που θα ακολουθηθεί στο συγκεκριμένο κύκλο, για την κατασκευή ή όχι πρωτοτύπου, κτλ. Διαδικασία ανάπτυξης λογισμικού Για το τμήμα του συστήματος που αφορά ο κύκλος ανάπτυξης Επαλήθευση των αποτελεσμάτων ανάπτυξης του λογισμοκού και προγραμματισμός της συνέχειας
Πλεονεκτήματα: Βελτιώνει την αποφυγή του κινδύνου Βοηθάει στην επιλογή της καλύτερης μεθόδου για την ανάπτυξη κάθε μέρους του συστήματος Ενσωματώνει όλα τα προηγούμενα μοντέλα σαν ειδικές περιπτώσεις Μειονεκτήματα: Δύσκολο να καθοριστούν οι ακριβής μεθοδολογίες ανάπτυξης Περίπλοκη και δεν βοηθάει στην περίπτωση επαναχρήσης Δεν υπάρχουν έλεγχοι για την μετάβαση από ένα κύκλο σε ένα άλλο (κάθε κύκλος μπορεί να παράγει περισσότερη εργασία για τον επόμενο) Δεν έχει σαφή προθεσμίες Στο τέλος το έργο υπάρχει κίνδυνος να υλοποιηθεί με το μοντέλο καταράκτη!!!!!
Βασίζεται στη αντικειμενοστραφή τεχνολογία για τις φάσεις της ανάλυσης, σχεδίασης και κωδικοποίησης Το αποτέλεσμα της διαδικασίας είναι επαναχρησιμοποιήσιμες μονάδες για μελλοντικά συστήματα Στο μοντέλο οι φάσεις Ανάλυση, Σχεδίαση, Κωδικοποίηση επικαλύπτονται
Τονίζει τα επιθυμητά χαρακτηριστικά της μεθοδολογίας κατασκευής λογισμικού σύμφωνα με την Αντικειμενοστραφή λογική Επικαλύψεις φάσεων
Γενική κατεύθυνση εφαρμογής των ιδεών που ενσωματώνουν τα προηγούμενα μοντέλα Ελευθερία στο κατασκευαστή λογισμικού Εξάλειψη ογκωδέστατων παραδοτέων με σχέδια και προδιαγραφές που…ήταν άχρηστα (αφού ήταν λευκά χαρτιά) Εξειδίκευση κατευθύνσεων στο εκάστοτε περιβάλλον ανάπτυξης, για το συγκεκριμένο πρόβλημα, για τον συγκεκριμένο κατασκευαστή, για τον συγκεκριμένο πελάτη, κτλ. Δεν είναι συνδεδεμένα με συγκεκριμένη μεθοδολογία ανάπτυξης λογισμικού
Ένα γενικό μοντέλο κύκλου ζωής Αλληλουχία των ενεργειών και ο ακριβής καθορισμός των κύκλων ανάπτυξης Είναι στην διακριτική ευχέρεια του κάθε κατασκευαστή