Ε ΛΛΗΝΙΚΟ Α ΝΟΙΚΤΟ Π ΑΝΕΠΙΣΤΗΜΙΟ ΣΧΕ ΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ ΠΛΗ24 ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ ΙΙ ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟ ΚΑΤΑΣΤΗΜΑ Πάνος Φιτσιλής 2004
Πίνακας Περιεχοµένων 1 Γνωσιολογικοί στόχοι... 5 1.1 Σκοπός... 5 1.2 Προσδοκώµενα αποτελέσµατα... 5 1.3 Έννοιες κλειδιά... 5 2 Εισαγωγικές έννοιες... 6 3 Η διαδικασία... 11 3.1 Ο κύκλος ζωής στην ενοποιηµένη προσέγγιση... 12 4 Περιγραφή Μελέτης Περίπτωσης Ηλεκτρονικού Ανθοπωλείου... 17 5 Καταγραφή και Ανάλυση Απαιτήσεων (Requirements Capture and analysis) 19 5.1 Το µοντέλο του πεδίου προβλήµατος... 19 5.2 Το µοντέλο των περιπτώσεων χρήσης (use case model)... 28 5.2.1 Προσδιορισµός των χειριστών (actors)... 30 5.2.2 Προσδιορισµός των περιπτώσεων χρήσης (use cases)... 33 5.2.3 Αναλυτική περιγραφή των περιπτώσεων χρήσης... 40 5.2.4 Κανόνες για την ανάπτυξη του µοντέλου περιπτώσεων χρήσης... 50 5.3 ιαγράµµατα ραστηριοτήτων... 52 5.4 Το µοντέλο αλληλεπίδρασης του χρήστη µε το σύστηµα... 56 6 Μοντέλο Ανάλυσης... 63 6.1 Εκλέπτυνση του διαγράµµατος κλάσεων... 64 6.2 Η συνεργασία των αντικειµένων... 67 6.3 Ο κύκλος ζωής ενός αντικειµένου... 74 7 Μοντέλο Σχεδιασµού... 79 7.1 Αποθήκευση των δεδοµένων... 85 7.2 Προσδιορισµός των υποσυστηµάτων... 87 7.3 ιαγράµµατα διάταξης (deployment diagrams)... 88 8 Μοντέλο Υλοποίησης... 93 9 Μοντέλο Ελέγχου... 94 10 Συµπεράσµατα...104 11 Βιβλιογραφία...106 Πίνακας Εικόνων 2
Εικόνα 1: Η δοµή των διαγραµµάτων UML... 8 Εικόνα 2: Βασικές έννοιες του κύκλου ζωής στην ενοποιηµένη προσέγγιση... 13 Εικόνα 3: Παράδειγµα ορισµού ροής εργασίας... 14 Εικόνα 4: Ο κύκλος ζωής στην ενοποιηµένη προσέγγιση... 15 Εικόνα 5: Λεκτική ανάλυση αρχικής περιγραφής του συστήµατος... 22 Εικόνα 6: ιάγραµµα κλάσεων του πεδίου προβλήµατος... 26 Εικόνα 7: Η σχέση του µοντέλου περιπτώσεων χρήσης µε τα άλλα µοντέλα... 29 Εικόνα 8: Το αρχικό σύνολο περιπτώσεων χρήσης (scope map)... 30 Εικόνα 9: Οι χειριστές του συστήµατος ηλεκτρονικού ανθοπωλείου... 33 Εικόνα 10: Τα επίπεδα των περιπτώσεων χρήσης... 35 Εικόνα 11: Οι περιπτώσεις χρήσης για το χειριστή «Ανώνυµο πελάτη»... 36 Εικόνα 12: Οι περιπτώσεις χρήσης για το χειριστή «Καταχωρηµένος πελάτης»..37 Εικόνα 13: Η ανάλυση της περίπτωσης χρήσης «ιαχείριση Επετείων» σε υποπεριπτώσεις.... 38 Εικόνα 14: Οι περιπτώσεις χρήσης για το χειριστή «ιαχειριστή Συστήµατος»...39 Εικόνα 15: Το συνολικό διάγραµµα περιπτώσεων χρήσης του συστήµατος.... 40 Εικόνα 16: Πρότυπο περιγραφής περίπτωσης χρήσης σε µορφή πίνακα... 42 Εικόνα 17: Πρότυπο περιγραφής περίπτωσης χρήσης UP.... 43 Εικόνα 18: Περιγραφή της περίπτωσης χρήσης «ηµιουργία Ανθοδέσµης»... 44 Εικόνα 19: Περιγραφή της περίπτωσης χρήσης «ηµιουργία Λογαριασµού Πελάτη»... 46 Εικόνα 20: Περιγραφή της περίπτωσης χρήσης «Τροποποίηση Στοιχείων Πελάτη»... 48 Εικόνα 21: Περιγραφή της περίπτωσης χρήσης «log-in»... 50 Εικόνα 22: Παράδειγµα διαγράµµατος δραστηριότητας... 54 Εικόνα 23: ιάγραµµα δραστηριότητας για την περίπτωση χρήσης «ηµιουργία Λογαριασµού Πελάτη»... 55 Εικόνα 24: Παραδείγµατα σχέσεων συναρµολόγησης και σύνθεσης... 58 Εικόνα 25: Χάρτης πλοήγησης για τη «ιαχείριση Λογαριασµού Πελάτη»... 59 Εικόνα 26: Σελίδα δηµιουργίας λογαριασµού πελάτη... 60 Εικόνα 27: Σελίδα παρουσίασης συνθέσεων... 61 Εικόνα 28: Σελίδα λεπτοµερειών ανθοδέσµης... 62 Εικόνα 29: ιάγραµµα κλάσεων µε εµφάνιση πεδίων... 66 3
Εικόνα 30: ιάγραµµα κλάσης για περίπτωση χρήσης «ηµιουργία Λογαριασµού Πελάτη»... 67 Εικόνα 31: ιάγραµµα ακολουθίας για την περίπτωση χρήσης «ηµιουργία Λογαριασµού Πελάτη»... 68 Εικόνα 32: Ο συµβολισµός των κλάσεων και των στιγµιότυπων... 69 Εικόνα 33: Είδη µηνυµάτων σε διαγράµµατα ακολουθίας... 69 Εικόνα 34: ιάγραµµα συνεργασίας για την περίπτωση χρήσης «ηµιουργία Λογαριασµού Πελάτη»... 70 Εικόνα 35: Κανόνες διαγραµµάτων συνεργασίας... 72 Εικόνα 36: Παράδειγµα συνεργασίας συνοριακής κλάσης µε κλάση οντοτήτων.. 72 Εικόνα 37: Η αντιστοίχηση µεταξύ των στοιχείων του user interface και των συνοριακών κλάσεων... 73 Εικόνα 38: ιάγραµµα συνεργασίας για την περίπτωση χρήσης «Επιλογή ανθοδέσµης»... 74 Εικόνα 39: ιάγραµµα κατάστασης για την κλάση «Ηλεκτρονικό Καρότσι»... 78 Εικόνα 40: Αρχιτεκτονική πολλών επιπέδων... 83 Εικόνα 41: Σχεδιασµός της περίπτωσης χρήσης «Login»... 84 Εικόνα 42: ηµιουργία πινάκων από τις κλάσεις του συστήµατος... 87 Εικόνα 43: Οργάνωση υποσυστηµάτων... 88 Εικόνα 44: Απλοποιηµένο διάγραµµα διάταξης... 90 Εικόνα 45: Αναλυτικό διάγραµµα διάταξης για ηλεκτρονικό ανθοπωλείο... 92 4
1 Γνωσιολογικοί στόχοι 1.1 Σκοπός Σκοπός της παρούσας µελέτης περίπτωσης είναι να παρουσιάσει την κατασκευή ενός συστήµατος λογισµικού ηλεκτρονικού εµπορίου µε τη χρήση της γλώσσας UML (Unified Modeling Language). Επιπλέον, εκτός από τη χρήση UML κατά την ανάπτυξη του συστήµατος θα παρουσιασθούν πρακτικά θέµατα διαδικασιών ανάπτυξης λογισµικού µε αντικειµενοστρεφή τρόπο και θα δοθούν ανά κατηγορία πρακτικές οδηγίες για την καλύτερη χρήση της γλώσσας UML. 1.2 Προσδοκώµενα αποτελέσµατα Μετά τη µελέτη του παραδείγµατος ο αναγνώστης θα είναι σε θέση να: Να χρησιµοποιεί την Ενοποιηµένη Προσέγγιση (Unified Process - UP) για την ανάπτυξη ενός συστήµατος λογισµικού µε αντικειµενοστρεφή τρόπο Να δηµιουργεί τα απαραίτητα µοντέλα που απαιτούνται στην κάθε φάση ανάπτυξης λογισµικού Να εµβαθύνει στον τρόπο περιγραφής ενός συστήµατος µε τη χρήση της γλώσσας UML. 1.3 Έννοιες κλειδιά Τεχνολογία Λογισµικού UML (Unified Modeling Language) Ενοποιηµένη Προσέγγιση (Unified Process - UP) ιαχείριση Απαιτήσεων (Requirements Management) Ανάλυση και Σχεδιασµός Συστηµάτων Έλεγχος Συστηµάτων 5
2 Εισαγωγικές έννοιες Ο όρος UML προέρχεται από τα αρχικά των αγγλικών λέξεων «Unified Modelling Language», που σηµαίνει «Ενοποιηµένη Γλώσσα Μοντελοποίησης» η οποία είναι η στάνταρτ γλώσσα για την περιγραφή και ανάπτυξη πληροφοριακών συστηµάτων. Η UML περιλαµβάνει ένα σύνολο δοµικών στοιχείων τα οποία συντίθενται σε διαγράµµατα που έχουν τους παρακάτω στόχους: Τον προσδιορισµό πληροφοριακών συστηµάτων (Specification) Την οπτικοποίηση της δοµής αυτών, της συµπεριφοράς τους και του τρόπου που αλληλεπιδρούν µε το χρήστη (Visualization) Τον Αρχιτεκτονικό Σχεδιασµό Την Κατασκευή Τον Έλεγχο του συστήµατος και Την τεκµηρίωση Η UML κατασκευάσθηκε για να βελτιώσει την επικοινωνία των συµµετεχόντων στην ανάπτυξη συστηµάτων πληροφορικής µε αντικειµενοστρεφή τρόπο µε σκοπό την αύξηση της παραγωγικότητας. Πολύ γρήγορα όµως η UML άρχισε να επηρεάζει την ανάπτυξη λογισµικού γενικότερα καθώς και την κουλτούρα των ανθρώπων που συµµετείχαν στην ανάπτυξη συστηµάτων. Η UML ικανοποιεί µια βασική ανάγκη στην ανάπτυξη λογισµικού και συστηµάτων: την ανάγκη της µοντελοποίησης. Ένα µοντέλο είναι στην ουσία µια αφαίρεση (abstraction) του πραγµατικού κόσµου η οποία µας επιτρέπει να συγκεντρώσουµε την προσοχή µας σε συγκεκριµένα σηµεία και να µελετήσουµε πιθανά προβλήµατα µε σκοπό της εξαγωγή συµπερασµάτων που θα µας προφυλάξουν από σφάλµατα στην ανάπτυξη του συστήµατος. Ένα καλά ορισµένο µοντέλο αποτελεί µια αποδοτική µέθοδο επικοινωνίας των συµµετεχόντων (stakeholders) στο έργο αφού επιτρέπει την ακριβή περιγραφή του προβλήµατος και της λύσης που προτείνεται. Ένα από τα πιο απλά παραδείγµατα µοντέλου είναι ο χάρτης. Ένας χάρτης µοντελοποιεί τον κόσµο µε διαφορετικούς τρόπους (πολιτικός, γεωγραφικός, συγκοινωνιακός χάρτης), καθένας από τους οποίους παρουσιάζει µια διαφορετική όψη χωρίς ποτέ να ταυτίζεται µε τον πραγµατικό κόσµο. Αντίστοιχα κάθε διαφορετικού τύπου διάγραµµα UML µοντελοποιεί το πρόβληµα µε έναν διαφορετικό τρόπο, που παρουσιάζει µια διαφορετική οπτική γωνία του ιδίου προβλήµατος. Η χρήση της αφαίρεσης, στα µοντέλα και τα διαγράµµατα της UML, µας επιτρέπει να χειριστούµε καλύτερα την πολυπλοκότητα εφόσον κάθε φορά µπορούµε να εστιάσουµε την προσοχή µας σε διαφορετικά θέµατα-παραµέτρους του συστήµατος. Η UML επιτρέπει τη δηµιουργία εξειδικευµένων όψεων (view) του συστήµατος περιορίζοντας τα στοιχεία του διαγράµµατος που εµφανίζονται κάθε 6
φορά. Για παράδειγµα ένα διάγραµµα κλάσεων (class diagram) µπορεί να χρησιµοποιηθεί για την ανάλυση του προβλήµατος, για το σχεδιασµό της λύσης, για την υλοποίηση του συστήµατος καθώς και για τον έλεγχο αυτού. Έτσι κατά τη διάρκεια της ανάλυσης και για το ίδιο διάγραµµα κλάσεων εστιάζουµε την προσοχή µας σε λογικές έννοιες και σχέσεις του πεδίου του προβλήµατος, κατά τη διάρκεια του σχεδιασµού εστιάζουµε την προσοχή µας στο πως θα υλοποιήσουµε τις κλάσεις και τις σχέσεις µεταξύ τους ενώ τέλος κατά την υλοποίηση ενδιαφερόµαστε για τις προγραµµατιστικές κλάσεις. Συµπερασµατικά µπορούµε να πούµε ότι η χρήση UML για τη δηµιουργία µοντέλων µας επιτρέπει: 1. Να οπτικοποιήσουµε παραµέτρους του συστήµατος που θέλουµε να κατασκευάσουµε 2. Να προσδιορίσουµε τη δοµή και τη συµπεριφορά ενός συστήµατος 3. Να δηµιουργήσουµε πρότυπα που θα µας καθοδηγήσουν στην κατασκευή του συστήµατος και 4. Να τεκµηριώσουµε τις αποφάσεις που έχουµε λάβει σχετικά µε την ανάπτυξη του συστήµατος Η UML έχει µεγάλο αριθµό διαγραµµάτων, πράγµα το οποίο αποτελεί πολλές φορές λόγο σύγχυσης. Επιπλέον, η προσαρµοστικότητα (flexibility) της γλώσσας µας επιτρέπει να τοποθετούµε κατά το δοκούν στοιχεία από έναν τύπο διαγράµµατος σε έναν άλλο, ιδιότητα που αυξάνει την εκφραστικότητα της γλώσσας αλλά και περιπλέκει ακόµη περισσότερο τα πράγµατα. Στην UML 2.0 υπάρχουν 13 επίσηµα είδη διαγραµµάτων και αρκετά ανεπίσηµα. Στην Εικόνα 1 παρουσιάζονται τα διαφορετικά είδη επίσηµων διαγραµµάτων UML µε τη µορφή µιας σχέσης γενίκευσης ειδίκευσης. Σύµφωνα µε αυτήν την εικόνα υπάρχουν δύο µεγάλες κατηγορίες διαγραµµάτων: 1. Τα δοµικά διαγράµµατα (structural diagrams)και 2. Τα διαγράµµατα συµπεριφοράς (behavioral diagrams) Τα δοµικά διαγράµµατα είναι αυτά που περιγράφουν τη στατική δοµή του συστήµατος, τα συστατικά του στοιχεία και γενικά όλα αυτά τα χαρακτηριστικά που δε µεταβάλλονται στο χρόνο. Τα διαγράµµατα συµπεριφοράς περιγράφουν τη δυναµική συµπεριφορά του συστήµατος, πώς το σύστηµα αποκρίνεται στις απαιτήσεις και το πώς τα αντικείµενα συνεργάζονται για να επιτύχουν τους σκοπούς του συστήµατος. 7
Εικόνα 1: Η δοµή των διαγραµµάτων UML Στον παρακάτω πίνακα παρουσιάζεται επιγραµµατικά η χρησιµότητα του κάθε είδους διαγράµµατος: Τύπος ιαγράµµατος ιάγραµµα Κλάσεων (Class Diagram) ιάγραµµα Αντικειµένων (Object Diagram) ιάγραµµα Σύνθετης οµής (Composite Structure Σύντοµη Περιγραφή Παρουσιάζει τη στατική δοµή του συστήµατος, µε τη µορφή κλάσεων και συσχετίσεων µεταξύ τους Χρησιµοποιείται για να δείξει συγκεκριµένα παραδείγµατα του τρόπου µε τον οποίο συνδέονται τα αντικείµενα Είναι ένας νέος τύπος διαγράµµατος στην UML 2.0, το οποίο χρησιµοποιείται για να παρουσιάσει µε εναλλακτικό τρόπο τη σχέση σύνθεσης 8
Τύπος ιαγράµµατος Diagram) ιάγραµµα ιάταξης (Deployment Diagram) ιάγραµµα Συστατικών (Component Diagram) ιάγραµµα Πακέτων (Package Diagram) ιάγραµµα ραστηριοτήτων (Activity Diagram) ιάγραµµα Περιπτώσεων Χρήσης (Use Case Diagram) ιάγραµµα Καταστάσεων/Πρωτοκόλλου (State Machine Diagram/ Protocol State Machine Diagram) ιάγραµµα Συνοπτικό (Overview Diagram) ιάγραµµα Ακολουθίας (Sequence Diagram) ιάγραµµα Επικοινωνίας (Communication Diagram) Σύντοµη Περιγραφή (composition). Χρησιµοποιείται για να περιγράψει την αρχιτεκτονική του συστήµατος σε σχέση µε άλλα προϊόντα λογισµικού που απαιτούνται, σε σχέση µε το υλικό κ.λπ. Χρησιµοποιείται για να δείξει την οργάνωση και τις σχέσεις του συστήµατος Χρησιµοποιείται για την οµαδοποίηση των κλάσεων του συστήµατος Χρησιµοποιείται για την περιγραφή της ροής των δεδοµένων και του ελέγχου. Είναι επίσης πολύ καλός τρόπος για την περιγραφή της ροής των εργασιών. Χρησιµοποιείται για να περιγράψει τις υπηρεσίες που παρέχονται από το σύστηµα ή/και για να περιγράψει τη λειτουργικότητα του συστήµατος Χρησιµοποιείται για να περιγράψει τον κύκλο ζωής των αντικειµένων µιας κλάσης ή τις διαδοχικές καταστάσεις στις οποίες µπορεί να βρεθεί. Είναι ένα ειδικού τύπου διάγραµµα δραστηριότητας που χρησιµοποιείται για να περιγράψει µια σύνθετη περίπτωση χρήσης. Χρησιµοποιείται για να περιγράψει την ανταλλαγή µηνυµάτων µεταξύ αντικειµένων καθώς και τη σειρά εκτέλεσης των µηνυµάτων Όπως και το διάγραµµα ακολουθίας χρησιµοποιείται για την περιγραφή της επικοινωνίας µεταξύ των αντικειµένων. Ονοµάσθηκαν διαγράµµατα επικοινωνίας στην UML 2.0 ενώ στις προηγούµενες εκδόσεις της UML ονοµάζονταν διαγράµµατα συνεργασίας (collaboration diagrams). Για λόγους συµβατότητας µε το ήδη υπάρχον εκπαιδευτικό υλικό και καλύτερης κατανόησης θα εξακολουθήσουµε να τα αποκαλούµε διαγράµµατα 9
Τύπος ιαγράµµατος ιάγραµµα Χρονισµού (Timing Diagram) Σύντοµη Περιγραφή συνεργασίας. Τα διαγράµµατα χρονισµού χρησιµοποιούνται σε συστήµατα πραγµατικού χρόνου µε σκοπό να δείξουµε το χρονισµό του ρολογιού µέσα στο σύστηµα 10
3 Η διαδικασία Η ενοποιηµένη προσέγγιση (UP Unified Process) είναι µια επαναληπτική (iterative) διαδικασία ανάπτυξης συστηµάτων. Για ένα απλό σύστηµα, θα ήταν εφικτό να προσδιορισθεί αρχικά όλο το σύστηµα, να σχεδιαστεί ολόκληρη η λύση, να υλοποιηθεί το λογισµικό, και στη συνέχεια να ελεγχθεί το τελικό προϊόν. Εντούτοις, λαµβάνοντας υπόψη την πολυπλοκότητα, την εµβάθυνση που απαιτείται και την εκλέπτυνση που χρειάζεται για την ανάπτυξη ενός συστήµατος σήµερα, αυτή η γραµµική προσέγγιση είναι µη ρεαλιστική. Αντίθετα, µια επαναληπτική προσέγγιση επιτυγχάνει τη διαδοχικά αυξανόµενη κατανόηση του προβλήµατος µέσω της συνεχούς εµβάθυνσης στο πρόβληµα και εκλέπτυνσης της λύσης. Επιπλέον η επαναληπτική προσέγγιση προσφέρει την ευελιξία που απαιτείται στην ανάπτυξη των συστηµάτων σήµερα λόγω των συχνών αλλαγών στις απαιτήσεις ή των τακτικών αλλαγών στους επιχειρησιακούς στόχους. Οι δραστηριότητες της ενοποιηµένης προσέγγισης βασίζονται στη δηµιουργία και τη συντήρηση των µοντέλων παρά στη δηµιουργία και συντήρηση εγγράφων. Τα UML µοντέλα υπερέχουν έναντι των εγγράφων µια και περιέχουν πλούσια σηµειολογία και σηµασιολογία που εστιάζεται στην ανάπτυξη λογισµικού. Επιπλέον τα µοντέλα µπορούν να ειδωθούν από πολλές οπτικές γωνίες ενώ η πληροφορία που περιέχουν µπορεί να διαχειριστεί ηλεκτρονικά. Το σκεπτικό πίσω από την προσέγγιση αυτή είναι να ελαχιστοποιηθεί το κόστος ανάπτυξης πληροφοριακών συστηµάτων, µέσω της ελαχιστοποίησης του κόστους ανάπτυξης και συντήρησης εγγράφων. Η ενοποιηµένη προσέγγιση είναι µια διαδικασία αρχιτεκτονικο-κεντρική (architecture centric). Η ενοποιηµένη προσέγγιση εστιάζει την προσοχή στην όσο το δυνατόν νωρίτερα ανάπτυξη της αρχιτεκτονικής του λογισµικού καθώς και του καθαυτό λογισµικού. Η ύπαρξη µιας αρχιτεκτονικής σε ισχύ διευκολύνει την παράλληλη ανάπτυξη, ελαχιστοποιεί την επανάληψη, αυξάνει την πιθανότητα της επαναχρησιµοποίησης τµηµάτων και βελτιώνει τη συντηρησιµότητα των συστηµάτων. Τέλος, η ανάπτυξη συστηµάτων µε την ενοποιηµένη προσέγγιση είναι βασισµένη στις περιπτώσεις χρήσης, δίνοντας έµφαση στη λεπτοµερή κατανόηση για το πώς το σύστηµα θα χρησιµοποιηθεί. Συνοψίζοντας, θα µπορούσαµε να πούµε ότι τέσσερις είναι βασικές αρχές στις οποίες βασίζεται η ενοποιηµένη προσέγγιση: 1. Εφαρµόζεται επαναληπτικά (iterative) 2. Το σύστηµα χτίζεται σταδιακά (incremental) 3. Είναι αρχιτεκτονικό-κεντρική (architecture centric) και 4. Βασίζεται στις περιπτώσεις χρήσης (use case driven) 11
3.1 Ο κύκλος ζωής στην ενοποιηµένη προσέγγιση Σύµφωνα µε την ενοποιηµένη προσέγγιση, ο κύκλος ζωής ανάπτυξης λογισµικού έχει τέσσερις φάσεις: 1. Η έναρξη (inception) είναι η πρώτη φάση της ενοποιηµένης προσέγγισης, όπου παρουσιάζεται η αρχική ιδέα του συστήµατος τουλάχιστον µέχρι του σηµείου που είναι αρκετά καλά θεµελιωµένη έτσι ώστε να επιτρέψει την είσοδο στη φάση επεξεργασίας. 2. Η επεξεργασία (elaboration) είναι η δεύτερη φάση, όπου περιγράφεται το όραµα του συστήµατος καθώς και η υψηλού επιπέδου αρχιτεκτονική του. Σε αυτήν τη φάση, προσδιορίζονται οι απαιτήσεις του συστήµατος. 3. Η κατασκευή (construction) είναι η τρίτη φάση, όπου σχεδιάζεται και κατασκευάζεται το λογισµικό. 4. Η µετάβαση (transition) είναι η τέταρτη φάση της διαδικασίας, όπου το λογισµικό υπόκειται σε έλεγχο και τελικά παραδίδεται στους χρήστες. Η φάση της µετάβασης σηµατοδοτεί την έναρξη της φάσης της συντήρησης λογισµικού και όχι το τέλος της διαδικασίας. Αν προσπαθήσουµε να συνοψίσουµε σε µια φράση το περιεχόµενο της κάθε φάσης τότε θα λέγαµε: 1. Έναρξη (inception) - Τεκµηριώνουµε την επιχειρηµατική ανάγκη ύπαρξης του συστήµατος 2. Επεξεργασία (elaboration) Προγραµµατίζουµε το έργο (project planning) και δηµιουργούµε την αρχιτεκτονική του συστήµατος 3. Κατασκευή (construction) Αναπτύσσουµε το σύστηµα 4. Μετάβαση (transition) Παραδίδουµε το σύστηµα στους τελικούς χρήστες Σε κάθε φάση µπορεί να εκτελεστεί ένας αριθµός επαναλήψεων (iterations). Στη συνέχεια, σε κάθε επανάληψη µπορεί να εκτελείται ένας αριθµός διαδικασιών (process) όπου κάθε διαδικασία, περιγράφεται µε ένα αριθµό διαφορετικών εργασιών (workflows). Έτσι µπορούµε να πούµε ότι ξεκινούµε από ένα γενικό κύκλο ζωής ενός έργου, συνεχίζουµε µε τις φάσεις, όπου σε κάθε φάση εκτελούµε επαναλήψεις, επαναλήψεις διαδικασιών που περιγράφονται µε ροές εργασιών. Στην Εικόνα 2 παρουσιάζονται οι βασικές έννοιες του κύκλου ζωής και των επαναλήψεων που εκτελούνται µε γραφικό τρόπο. 12
Κύκλος ζωής επανάληψη φάση σύλληψη επεξεργασία κατασκευή µετάβαση Στόχοι συστήµατος Αρχιτεκτονική Συστήµατος Σύστηµα Λειτουργικά Ικανό Τελικό σύστηµα Εικόνα 2: Βασικές έννοιες του κύκλου ζωής στην ενοποιηµένη προσέγγιση Μια ροή εργασίας (workflow) είναι µια λογική οµαδοποίηση των δραστηριοτήτων και περιγράφει τους ρόλους των συµµετεχόντων, τις δραστηριότητες που εκτελούνται καθώς και τα αποτελέσµατα (artifacts) των δραστηριοτήτων που µπορεί να είναι παραδοτέα (deliverables), έγγραφα, κώδικας, πρότυπα ή οτιδήποτε άλλο µπορεί να παράγει µια δραστηριότητα. Στην ενοποιηµένη προσέγγιση έχουµε εννέα διαφορετικές ροές εργασιών (process workflows) οι οποίες είναι οι ακόλουθες: Βασικά workflows 1. Μοντελοποίηση επιχειρηµατικών διαδικασιών (business modeling): Περιγράφει τη δοµή και την οργάνωση των διαδικασιών µιας επιχείρησης 2. Προδιαγραφές (requirements): Περιγραφή προδιαγραφών συστήµατος µε χρήση περιπτώσεων χρήσης 3. Ανάλυση και σχεδίαση (analysis and design): Περιγραφή των µοντέλων του συστήµατος 4. Υλοποίηση (implementation): Υλοποίηση του συστήµατος, µοναδιαίος έλεγχος (unit testing) και έλεγχος ολοκλήρωσης (integration testing) 5. Έλεγχος (testing): Καταγραφή των περιπτώσεων ελέγχων, της διαδικασίας ελέγχου καθώς και των µετρικών που θα χρησιµοποιηθούν. 6. ιάταξη (deployment): Αναφέρεται στη διάταξη του παραδοτέου συστήµατος Βοηθητικά workflows Επιπλέον εκτός των βασικών ροών εργασιών υπάρχει και ένας αριθµός βοηθητικών ροών εργασιών. Οι βοηθητικές ροές εργασιών δεν είναι προαιρετικές, είναι και αυτές απαραίτητες, αλλά διαφέρουν από τις βασικές ροές στο ότι τα παραδοτέα που παράγονται κατά την εκτέλεσή τους δεν αναφέρονται στο έργο αυτό καθαυτό, αλλά στη διαχείριση των εργασιών και των παραδοτέων του έργου. 13
7. ιοίκηση Σχηµατισµών (configuration management): ιαχείριση όλων των παραδοτέων του έργου 8. ιαχείριση έργου (project management): ιαχείριση των στοιχείων του έργου (χρόνου, πόρων κ.λπ.) 9. Περιβάλλον (environment): ηµιουργία της αναγκαίας υποδοµής για την εκτέλεση του έργου Ένα παράδειγµα του τρόπου ορισµού της ροής εργασίας για τη διαχείριση έργου δίνεται στην Εικόνα 3. Εκτέλεση Ανάπτυξη Κύκλου Επιχειρηµατικής Περίπτωσης Προσδιορισµός Κινδύνων Ανάπτυξη Ανάπτυξη Πλάνου Πλάνου Επαναληπτικής Ανάπτυξης Έργου Στελέχωση ιευθυντής Έργου Έργου Επανεκτίµηση Κινδύνων Αξιολόγηση κύκλου Εικόνα 3: Παράδειγµα ορισµού ροής εργασίας Στην Εικόνα 4 παρουσιάζεται ο συνδυασµός των φάσεων και των εργασιών στον κύκλο ζωής ενός έργου στο οποίο ακολουθείται η ενοποιηµένη προσέγγιση. 14
ΕΡΓΑΣΙΕΣ ΦΑΣΕΙΣ Σύλληψη Επεξεργασία Κατασκευή Μετάβαση Μοντελοποίηση επιχειρηµατικών διαδικασιών Προδιαγραφές Ανάλυση και σχεδίαση Υλοποίηση Έλεγχος ιάταξη Συστήµατος ιοίκηση Σχηµατισµών ιαχείριση Έργου Περιβάλλον Εικόνα 4: Ο κύκλος ζωής στην ενοποιηµένη προσέγγιση. Τα βασικά παραδοτέα της ενοποιηµένης προσέγγισης όπως τονίστηκε και παραπάνω είναι τα µοντέλα. Εποµένως το αποτέλεσµα των παραπάνω workflows είναι η δηµιουργία ενός αριθµού µοντέλων τα οποία στις περισσότερες περιπτώσεις βρίσκονται σε αντιστοιχία µε το όνοµα του workflow και είναι τα ακόλουθα: 1. Επιχειρηµατικό µοντέλο (Business model). Μοντελοποιεί την επιχείρηση και τις διαδικασίες της 2. Μοντέλο πεδίου προβλήµατος (Domain model). Περιγράφει το σύστηµα και καθορίζει τα όρια του συστήµατος. 3. Μοντέλο περιπτώσεων χρήσης (Use case model). Ορίζει τις προδιαγραφές του συστήµατος 4. Μοντέλο ανάλυσης (Analysis model). Περιγράφει τις αρχικές ιδέες (concepts) του συστήµατος 5. Μοντέλο σχεδιασµού (Design model). Περιγράφει το πώς θα υλοποιηθεί το σύστηµα. 6. Μοντέλο διαδικασιών (Process model). Περιγράφει τις φυσικές διαδικασίες του συστήµατος και τους µηχανισµούς συγχρονισµού. 7. Μοντέλο διάταξης (Deployment Model). Περιγράφει τη διάταξη-τοπολογία του φυσικού συστήµατος σε σχέση µε το περιβάλλον όπου το λογισµικό εκτελείται. 15
8. Μοντέλο Υλοποίησης (Implementation model). Περιγράφει το τρόπο µε τον οποίο θα κατασκευασθεί το τελικό σύστηµα από τα συστατικά του στοιχεία. 9. Μοντέλο Ελέγχου (Test model). Περιγράφει τη στρατηγική και τις διαδικασίες ελέγχου καθώς και τις περιπτώσεις ελέγχου (test cases). Όπως περιγράφτηκε και παραπάνω ο τρόπος εφαρµογής της ενοποιηµένης προσέγγισης είναι δυναµικός και προσαρµόσιµος στις εκάστοτε ανάγκες. Στα επόµενα κεφάλαια θα περιγραφούν τα απαιτούµενα µοντέλα για την κατασκευή ενός συστήµατος για τη λειτουργία του ηλεκτρονικού ανθοπωλείου «Λευκός Κρίνος». Πιο συγκεκριµένα για τη µελέτη περίπτωσης του ηλεκτρονικού ανθοπωλείου «Λευκός Κρίνος» θα δοθούν για τις βασικές εργασίες ανάπτυξης του συστήµατος τα εξής: καταγραφή των προδιαγραφών του συστήµατος o το µοντέλο περιπτώσεων χρήσης και o το µοντέλο του πεδίου προβλήµατος, ανάλυση και το σχεδιασµό o το µοντέλο ανάλυσης o το µοντέλο του σχεδιασµού o το µοντέλο διάταξης υλοποίηση o το µοντέλο υλοποίησης έλεγχος o το µοντέλο ελέγχου 16
4 Περιγραφή Μελέτης Περίπτωσης Ηλεκτρονικού Ανθοπωλείου Το κεντρικό ανθοπωλείο «Λευκός Κρίνος» αποφάσισε να επεκτείνει τις δραστηριότητές του στο Internet δηµιουργώντας ένα ηλεκτρονικό ανθοπωλείο όπου οι πελάτες του θα µπορούν να παραγγέλνουν τις ανθοδέσµες της αρεσκείας τους. Πιο συγκεκριµένα το ανθοπωλείο αυτό θα προσφέρει τις εξής υπηρεσίες: 1. Ο κάθε πελάτης θα µπορεί να δηµιουργεί προσωπικό λογαριασµό στον οποίο θα αποθηκεύονται τα προσωπικά του δεδοµένα και ο οποίος θα προστατεύεται µε password. 2. To ανθοπωλείο θα µπορεί να δέχεται παραγγελίες από το internet. Ο χρήστης θα επιλέγει ένα-ένα τα διαφορετικά λουλούδια που θα βάλει στην ανθοδέσµη του καθώς και τον αριθµό των λουλουδιών του κάθε είδους που θέλει να αγοράσει. Εναλλακτικά, ο χρήστης θα µπορεί να επιλέξει µια ανθοσύνθεση η οποία είναι προκαθορισµένη όσον αφορά το περιεχόµενο αλλά και την τιµή της. 3. Ανάλογα µε το είδος του προορισµού (κοντινός, µακρινός) του παραλήπτη θα γίνεται µια επισήµανση προς τον πελάτη σχετικά µε την ανθεκτικότητα των λουλουδιών. Επιπλέον για κάθε λουλούδι θα παρουσιάζονται τα χαρακτηριστικά του, άρωµα, χρώµα, µέγεθος, οικογένεια, προέλευση, ειδική περίσταση στην οποία προσφέρεται, φωτογραφία κ.λπ. Αντίστοιχα για τις συνθέσεις θα δίνεται µια σύντοµη περιγραφή, ο τύπος της (ροµαντική, επαγγελµατική, κ.λπ.) καθώς και φωτογραφία. 4. Όταν ο πελάτης ολοκληρώσει την επιλογή των λουλουδιών θα ζητούνται από το σύστηµα τα στοιχεία του παραλήπτη των λουλουδιών. Τα στοιχεία αυτά θα αποθηκεύονται στο σύστηµα σε σχέση µε κάθε πελάτη και θα είναι διαθέσιµα για να χρησιµοποιηθούν κάποια επόµενη φορά. Ταυτόχρονα ο πελάτης θα γράφει το µήνυµα το οποίο θα ήθελε να συνοδεύει την ανθοδέσµη. 5. Ο πελάτης θα µπορεί να προσθέσει όσες ανθοδέσµες θέλει στο «ηλεκτρονικό καρότσι», να τις αφαιρέσει ακυρώνοντας την επιλογή του, ή να ολοκληρώσει τη συναλλαγή του µε την πληρωµή αυτών που έχει επιλέξει. 6. Επιπλέον, για κάθε πελάτη το σύστηµα θα µπορεί να αποθηκεύει τα ονόµατα φίλων, συνεργατών, αγαπηµένων προσώπων µαζί µε σηµαντικές ηµεροµηνίες επετείους έτσι ώστε όταν πλησιάζει η ηµεροµηνία της επετείου να στέλνει e-mail και να υπενθυµίζει την ηµέρα αυτή. 7. Το ηλεκτρονικό ανθοπωλείο θα συνδέεται µε το λογιστήριο της εταιρείας όπου υπάρχει το σύστηµα πληρωµής µε πιστωτικές κάρτες (το υποσύστηµα αυτό δεν ανήκει στο ηλεκτρονικό ανθοπωλείο αλλά συνεργάζεται µε αυτό). Το σύστηµα πιστωτικών καρτών επιτρέπει την ασφαλή πληρωµή των παραγγελθέντων λουλουδιών. 17
Την επιλεγµένη µελέτη περίπτωσης την συναντάµε πολύ συχνά στη διεθνή βιβλιογραφία για τον απλό λόγο ότι είναι εύκολη στην κατανόηση καθώς ο τρόπος λειτουργίας ενός ηλεκτρονικού καταστήµατος είναι γνωστός στους περισσότερους. Στα επόµενα κεφάλαια θα παρουσιασθεί βήµα-βήµα η ανάπτυξη του πληροφοριακού συστήµατος για το ηλεκτρονικό ανθοπωλείο. Πρέπει όµως στο σηµείο αυτό να γίνει ξεκάθαρο ότι στόχος δεν είναι να δοθεί η πλήρης τεκµηρίωση του συστήµατος αλλά να δοθούν ξεκάθαρα παραδείγµατα και πρακτικές συµβουλές για τον τρόπο ανάπτυξης µε τη χρήση της γλώσσας UML. 18
5 Καταγραφή και Ανάλυση Απαιτήσεων (Requirements Capture and analysis) Η καταγραφή και η ανάλυση των απαιτήσεων έχει ως στόχο να απαντήσει στη βασική ερώτηση για το τι πρέπει να κάνει το σύστηµα. Είναι µια διαδικασία ιδιαίτερα επίπονη και δύσκολη καθώς πρέπει να κατανοήσουµε τις πραγµατικές ανάγκες των χρηστών και στη συνέχεια να τις καταγράψουµε. Ορισµένα από τα χαρακτηριστικά γνωρίσµατα της καταγραφής των απαιτήσεων είναι: 1. στις περισσότερες περιπτώσεις το σύστηµα απευθύνεται σε πολλούς χρήστες, οι οποίοι έχουν γνώση ενός µικρού µέρους µόνο της συνολικής εργασίας που καλείται να υποστηρίξει το πληροφοριακό σύστηµα, 2. οι ανάγκες της επιχείρησης αλλάζουν κατά τη διάρκεια ανάπτυξης του συστήµατος, 3. κάθε έργο ανάπτυξης λογισµικού είναι µοναδικό η µοναδικότητα αυτή προέρχεται από τη διαφορετικότητα του πεδίου προβλήµατος, τη διαφορετικότητα του οργανισµού που θα χρησιµοποιεί το σύστηµα κ.λπ. 4. το σηµείο εκκίνησης για την καταγραφή των απαιτήσεων είναι διαφορετικό για κάθε έργο µια και µπορεί να ξεκινά από µια πολύ σύντοµη περιγραφή της γενικής ιδέας ή από την αναλυτική περιγραφή των αναγκών της επιχείρησης. Είναι προφανές λοιπόν ότι η καταγραφή των απαιτήσεων είναι µια διαδικασία σύνθετη η οποία και διαφέρει από έργο σε έργο. Στη γενική περίπτωση η καταγραφή και η ανάλυση των απαιτήσεων περιλαµβάνει τα ακόλουθα: 1. Προσδιορισµός του µοντέλου του πεδίου προβλήµατος (domain model). Το µοντέλο του προβλήµατος περιγράφει τις βασικές οντότητες-έννοιες που αποτελούν το σύστηµα. 2. Προσδιορισµός του αντικειµένου εργασιών του συστήµατος (scope map). Προσδιορίζει µε επιγραµµατικό τρόπο τις απαιτήσεις του συστήµατος. 3. Προσδιορισµός του µοντέλου των περιπτώσεων χρήσης (use case model). Προσδιορίζει τον τρόπο µε τον οποίο χρησιµοποιείται το σύστηµα 4. Οργάνωση των περιπτώσεων χρήσης σε πακέτα. Οµαδοποιεί τις περιπτώσεις χρήσεις σε λογικά πακέτα. 5. Ανάπτυξη πρωτότυπων του συστήµατος µε σκοπό την επίδειξη στο χρήστη βασικών παραµέτρων. 5.1 Το µοντέλο του πεδίου προβλήµατος Το µοντέλο πεδίου προβλήµατος είναι ένα από τα βασικά µοντέλα της UML. Πρωταρχικός µας στόχος στη δηµιουργία του µοντέλου του πεδίου προβλήµατος είναι να προσδιορίσουµε τις αφαιρέσεις του πραγµατικού κόσµου που απαιτούνται για την κατασκευή του συστήµατος δηλαδή τα κύρια εννοιολογικά (conceptual) 19
αντικείµενα που πρόκειται να συµµετέχουν σε αυτό το σύστηµα. Η παραπάνω προσέγγιση αποτελεί γενικότερη αρχή δηµιουργίας συστηµάτων µε αντικειµενοστρεφές τρόπο, ότι το λογισµικό πρέπει να βασίζεται στα αντικείµενα του πεδίου προβλήµατος. Η αρχή αυτή βασίζεται στη θεωρία ότι ο πραγµατικός κόσµος αλλάζει λιγότερο συχνά από ότι οι προδιαγραφές ενός συστήµατος λογισµικού. Θα περίµενε κάποιος ότι ο ορισµός των περιπτώσεων χρήσης προηγείται του ορισµού του µοντέλου πεδίου προβλήµατος. Αν και στην πράξη ο ορισµός των δύο µοντέλων γίνεται ταυτόχρονα, ο ορισµός του µοντέλου πεδίου προβλήµατος προηγείται των περιπτώσεων χρήσης µια και οι περιπτώσεις χρήσης πρέπει να γραφούν µε τέτοιο τρόπο ώστε να λαµβάνουν υπόψη τα εννοιολογικά αντικείµενα που καθορίζονται στο µοντέλο του προβλήµατος (conceptual model). Επιπλέον, µε την προσέγγιση αυτή µπορούµε να συνδέσουµε το στατικό και το δυναµικό µοντέλο του συστήµατος. Εν κατακλείδι, το µοντέλο του πεδίου προβλήµατος αποτελεί ένα αρχικό λεξικό όρων και εννοιών του προς ανάπτυξη συστήµατος. Καθώς προσδιορίζουµε τα εννοιολογικά αντικείµενα, πρέπει επίσης να προσδιορίσουµε τις σχέσεις µεταξύ τους. Τρεις είναι οι πιο σηµαντικοί τύποι σχέσεων: η σχέση γενίκευσης/ειδίκευσης (generalization/specialization) µε την οποία περιγράφουµε την κληρονοµικότητα, η σχέση συναρµολόγησης (aggregation) µε την οποία περιγράφουµε τη σύνθεση και τέλος οι απλές συσχετίσεις που περιγράφουν την ανάγκη ύπαρξης άλλων αντικειµένων µε σκοπό την υλοποίηση µιας συµπεριφοράς. Στην παρούσα φάση δε δίνουµε ιδιαίτερη έµφαση στην καταγραφή των πεδίων ή των µεθόδων µια και ο βασικός µας στόχος είναι ο προσδιορισµός των αντικειµένων και των σχέσεων µεταξύ τους. Μια από τις πρώτες ενέργειες που πρέπει να γίνει για τη δηµιουργία του στατικού µοντέλου είναι να βρεθούν οι κατάλληλες κλάσεις που αντιπροσωπεύουν ακριβώς τις αφαιρέσεις που παρουσιάζει η περιοχή προβλήµατος. Κλάσεις µπορεί να είναι φυσικές οντότητες είτε να αναπαριστούν γενικότερες ιδέες. Μερικοί βασικοί κανόνες για την εύρεση των κλάσεων είναι: 1. Τα ουσιαστικά και οι ονοµαστικές φράσεις γίνονται κλάσεις ή πεδία κλάσεων. 2. Τα ρήµατα και οι ρηµατικές φράσεις γίνονται µέθοδοι και συνδέσεις (associations). 3. Οι κτητικές φράσεις δείχνουν ότι το ουσιαστικό αναπαριστά µια ιδιότητα παρά µια κλάση. 20
Αν εφαρµόσουµε τους κανόνες χρησιµοποιώντας τη γενική περιγραφή του προβλήµατος τότε καταλήγουµε σε ένα αριθµό υποψηφίων κλάσεων. Οι κλάσεις που παράγονται µε τον τρόπο αυτό παρουσιάζονται υπογραµµισµένες. Το κεντρικό ανθοπωλείο «Λευκός Κρίνος» αποφάσισε να επεκτείνει τις δραστηριότητές του στο Internet δηµιουργώντας ένα ηλεκτρονικό ανθοπωλείο όπου οι πελάτες του θα µπορούν να παραγγέλνουν τις ανθοδέσµες της αρεσκείας τους. Πιο συγκεκριµένα το ανθοπωλείο αυτό θα πρέπει να δίνει τη δυνατότητα στους πελάτες του να κάνουν τα ακόλουθα: 1. Ο κάθε πελάτης µπορεί να δηµιουργεί προσωπικό λογαριασµό στον οποίο αποθηκεύονται τα προσωπικά του δεδοµένα και ο οποίος προστατεύεται µε password. 2. To ανθοπωλείο θα µπορεί να δέχεται παραγγελίες από το internet. Ο χρήστης επιλέγει ένα-ένα τα διαφορετικά λουλούδια που θα βάλει στην ανθοδέσµη του καθώς και τον αριθµό των λουλουδιών του κάθε είδους που θέλει να αγοράσει. Εναλλακτικά, ο χρήστης µπορεί να επιλέξει µια ανθοσύνθεση η οποία είναι προκαθορισµένη όσο αφορά το περιεχόµενο αλλά και την τιµή της. 3. Ανάλογα µε το είδος του προορισµού (κοντινός, µακρινός) του παραλήπτη γίνεται µια επισήµανση προς τον πελάτη σχετικά µε την ανθεκτικότητα των λουλουδιών. Επιπλέον για κάθε λουλούδι παρουσιάζονται τα χαρακτηριστικά του: άρωµα, χρώµα, µέγεθος, οικογένεια, προέλευση, ειδική περίσταση στην οποία προσφέρεται, φωτογραφία κ.λπ. Αντίστοιχα για τις συνθέσεις δίνεται µια σύντοµη περιγραφή, ο τύπος της (ροµαντική, επαγγελµατική, κ.λπ.) καθώς και φωτογραφία. 4. Όταν ο πελάτης ολοκληρώσει την επιλογή των λουλουδιών ζητούνται από το σύστηµα τα στοιχεία του παραλήπτη των λουλουδιών. Τα στοιχεία αυτά αποθηκεύονται στο σύστηµα σε σχέση µε κάθε πελάτη και είναι διαθέσιµα για να χρησιµοποιηθούν κάποια επόµενη φορά. Ταυτόχρονα ο πελάτης γράφει το µήνυµα το οποίο θα ήθελε να συνοδεύει την ανθοδέσµη. 5. Ο πελάτης µπορεί να προσθέσει όσες ανθοδέσµες θέλει στο «ηλεκτρονικό καρότσι», να τις αφαιρέσει ακυρώνοντας την επιλογή του, ή να ολοκληρώσει τη συναλλαγή του µε την πληρωµή αυτών που έχει επιλέξει. 6. Επιπλέον, για κάθε πελάτη το σύστηµα µπορεί να αποθηκεύει τα ονόµατα φίλων, συνεργατών, αγαπηµένων προσώπων µαζί µε σηµαντικές ηµεροµηνίες επετείους έτσι ώστε όταν πλησιάζει η ηµεροµηνία της επετείου να στέλνει e-mail και να υπενθυµίζει την ηµέρα αυτή. 7. Το ηλεκτρονικό ανθοπωλείο θα συνδέεται µε το λογιστήριο της εταιρείας όπου υπάρχει το σύστηµα πληρωµής µε πιστωτικές κάρτες (το υποσύστηµα αυτό δεν ανήκει στο ηλεκτρονικό ανθοπωλείο αλλά συνεργάζεται µε αυτό). Το σύστηµα πιστωτικών καρτών επιτρέπει την ασφαλή πληρωµή των παραγγελθέντων λουλουδιών. 21