Μι κοδοία αλλιλων Πάνο...

171
ΕΛΛΘΝΙΚΟ ΑΝΟΙΚΣΟ ΠΑΝΕΠΙΣΘΜΙΟ 2007 Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java Μισκοδοςία υπαλλιλων Πάνοσ Φιτςιλισ ΘΕΜΑΣΙΚΗ ΕΝΟΣΗΣΑ ΠΛΗ24

Transcript of Μι κοδοία αλλιλων Πάνο...

  • 333333333333333333333333333

    ΕΛΛΘΝΙΚΟ ΑΝΟΙΚΣΟ ΠΑΝΕΠΙΣΘΜΙΟ

    2007

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ

    με UML και Java

    Μισκοδοςία υπαλλιλων

    Πάνοσ Φιτςιλισ

    ΘΕΜΑΣΙΚΗ ΕΝΟΣΗΣΑ ΠΛΗ24

  • [2] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    Η παροφςα μελζτθ περίπτωςθσ δεν ζχει ολοκλθρωκεί και θ παροφςα ζκδοςθ δεν είναι τελικι. Αυτό ςθμαίνει ότι μπορεί μζςα ςτο κείμενο να υπάρχουν ςφάλματα ι αςάφειεσ. Για παρατθριςεισ και ςχόλια ςτείλτε e-mail ςτο [email protected]

    mailto:[email protected]

  • [3] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    ΠΙΝΑΚΑ ΠΕΡΙΕΦΟΜΕΝΩΝ

    1. ΚΟΠΟ ΣΗ ΜΕΛΕΣΗ ΠΕΡΙΠΣΩΗ 9

    2. ΠΑΡΟΤΙΑΗ ΣΗ ΜΕΛΕΣΗ ΠΕΡΙΠΣΩΗ 10

    3. H ΜΕΘΟΔΟΛΟΓΙΑ ICONIX 12

    3.1 Δομι τθσ μεκοδολογίασ 14

    3.2 Φάςθ 1. Ανάλυςθ Απαιτιςεων 17

    3.3 θμείο ελζγχου 1. Επιςκόπθςθ απαιτιςεων 19

    3.4 Φάςθ 2. Αρχικόσ χεδιαςμόσ 20

    3.5 θμείο ελζγχου 2. Προκαταρκτικι επιςκόπθςθ ςχεδιαςμοφ 22

    3.6 Φάςθ 3. χεδιαςμόσ 24

    3.7 θμείο ελζγχου 3. Κρίςιμθ επιςκόπθςθ ςχεδιαςμοφ 26

    4 ΣΟ ΜΟΝΣΕΛΟ UML 29

    4.1 Απαρίκμθςθ των απαιτιςεων 30

    4.2 Παραδοχζσ τθσ μελζτθσ περίπτωςθσ 31

    4.3 Φάςθ 1- Βιμα 1. Αναπαράςταςθ πεδίου προβλιματοσ 32

    4.3.1 Εφρεςθ κλάςεων πεδίου προβλιματοσ 32

    4.3.2 Δθμιουργία πρωτότυπου ςυςτιματοσ 47

    4.4 Φάςθ 1- Βιμα 2. χεδίαςθ περιπτϊςεων χριςθσ 50

    4.4.1 Οι περιπτϊςεισ χριςθσ 50

    4.4.2 Θ αναλυτικι περιγραφι των περιπτϊςεων χριςθσ 60

    4.4.3 Χριςθ περιπτϊςεων χριςθσ για υπολογιςμό κόςτουσ ανάπτυξθσ λογιςμικοφ 68

  • [4] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    4.5 Φάςθ 2 - Βιμα 3. Ανάλυςθ ευρωςτίασ 76

    4.6 Φάςθ 3 - Βιμα 4. Λεπτομερισ ςχεδιαςμόσ 82

    4.6.1 Διαγράμματα ακολουκίασ 83

    4.6.2 Διάγραμμα κλάςεων λεπτομεροφσ ςχεδιαςμοφ 86

    5. Ο ΚΩΔΙΚΑ JAVA 94

    5.1 Γενικοί κανόνεσ για το μεταςχθματιςμό του μοντζλου UML ςε κϊδικα 94

    5.2 Η κλάςθ Payroll 96

    5.2.1 H δομι ενόσ αρχείου java 97

    5.2.2 Θ μζκοδοσ menu() 98

    5.3 Κλάςθ PayrollRun 101

    5.3.1 Οι ςυλλογζσ Java 101

    5.3.2 Ο κϊδικασ τθσ κλάςθσ PayrollRun 103

    5.4 Κλάςθ PayrollRunEntry 105

    5.4.1 Θ δεςμευμζνθ λζξθ this 105

    5.4.2 Διαχείριςθ των θμερομθνιϊν 107

    5.4.3 Θ μζκοδοσ toString 109

    5.4.4 Ο κϊδικασ τθσ κλάςθσ PayrollRunEntry 109

    5.5 Κλάςθ Employee 111

    5.5.1 Ο κϊδικασ τθσ κλάςθσ Employee 111

    5.6 Κλάςθ CommissionedEmployee 113

    5.6.1 Ο κϊδικασ τθσ κλάςθσ CommissionedEmployee 114

    5.7 Κλάςθ PartTimeEmployee 117

    5.7.1 Ο κϊδικασ τθσ κλάςθσ PartTimeEmployee 118

    5.8 Κλάςθ FullTimeEmployee 119

    5.8.1 Ο κϊδικασ τθσ κλάςθσ FullTimeEmployee 120

    5.9 Κλάςθ Timecard 121

    5.9.1 Ο κϊδικασ τθσ κλάςθσ TimeCard 121

  • [5] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    5.10 Κλάςθ TimeCardReader 123

    5.10.1 Θ κλάςθ random 123

    5.10.2 Οι εξαιρζςεισ (exceptions) 124

    5.10.3 Εμβζλεια των μεταβλθτϊν (scope) 127

    5.10.4 Δθμιουργία αντικειμζνων ωσ παράμετροι ςε κλιςεισ μεκόδων 128

    5.10.5 Ο κϊδικασ τθσ κλάςθσ TimeCardReader 130

    5.11 Κλάςθ LogEntry 131

    5.11.1 Ο κϊδικασ τθσ κλάςθσ LogEntry 131

    5.12 Κλάςθ PurchaseOrder 134

    5.12.1 Ο κϊδικασ τθσ κλάςθσ PurchaseOrder 134

    5.13 Κλάςθ OrderLine 137

    5.13.1 O κϊδικασ τθσ κλάςθσ OrderLine 137

    5.14 Κλάςθ Product 138

    5.14.1 Ο κϊδικασ τθσ κλάςθσ Product 138

    5.15 Κλάςθ PersistentStorage 140

    5.15.1 Ειςαγωγι ςτο JDBC 140

    5.15.2 Σα βιματα ανάπτυξθσ μιασ εφαρμογισ με ςφνδεςθ ςτθ βάςθ δεδομζνων 142

    5.15.3 Θ βάςθ δεδομζνων Payroll 143

    5.15.4 Ο κϊδικασ τθσ κλάςθσ PersistentStorage 144

    6. ΑΝΑΥΟΡΕ 151

    7. ΠΑΡΑΡΣΗΜΑ Α – ΕΤΕΛΙΚΣΕ ΜΕΘΟΔΟΙ 153

    8. ΠΑΡΑΡΣΗΜΑ Β - ΕΝΔΕΙΚΣΙΚΕ ΑΠΑΝΣΗΕΙ ΣΙ

    ΔΡΑΣΗΡΙΟΣΗΣΕ 161

  • [6] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    ΠΙΝΑΚΑ ΕΙΚΟΝΩΝ

    Εικόνα 1: To υποςφνολο ICONIX ................................................................................ 14

    Εικόνα 2: Επιςκόπθςθ τθσ μεκοδολογίασ ICONIX...................................................... 16

    Εικόνα 3: Ο ςκοπόσ του διαγράμματοσ ευρωςτίασ ................................................... 21

    Εικόνα 4: Κλάςεισ του πεδίου προβλιματοσ ............................................................. 38

    Εικόνα 5: χζςθ κλθρονομικότθτασ εργαηομζνων ..................................................... 39

    Εικόνα 6: χζςθ ςυναρμολόγθςθσ μεταξφ κλάςεων TimeCard και LogEntry ............ 40

    Εικόνα 7: χζςθ ςφνκεςθσ μεταξφ κλάςεων TimeCard και LogEntry ........................ 41

    Εικόνα 8: χζςεισ μεταξφ κλάςεων PurchaseOrder, OrderLine και Product ............. 41

    Εικόνα 9: Οι κλάςεισ του πακζτου Payroll ................................................................. 42

    Εικόνα 10: Θ μοντελοποίθςθ τθσ κλάςθσ PayrollPeriod ............................................ 43

    Εικόνα 11: Κατθγοριματα ιεραρχίασ κλάςεων Employee ......................................... 44

    Εικόνα 12: Απεικόνιςθ ςυςχετίςεων ςτο μοντζλο κλάςεων ..................................... 45

    Εικόνα 13: Πακζτα ςυςτιματοσ μιςκοδοςίασ. .......................................................... 46

    Εικόνα 14: Μοντζλο κλάςεων πεδίου προβλιματοσ ................................................. 47

    Εικόνα 15: Καταςκευι πρωτότυπου μενοφ εφαρμογισ ............................................ 49

    Εικόνα 16: Διαχείριςθ παραγγελιϊν .......................................................................... 49

    Εικόνα 17: Σο διάγραμμα περιπτϊςεων χριςθσ ....................................................... 52

    Εικόνα 18: Εναλλακτικι λφςθ διαγράμματοσ περιπτϊςεων χριςθσ ........................ 54

    Εικόνα 19: χζςθ include μεταξφ περιπτϊςεων χριςθσ ............................................ 55

    Εικόνα 20: Περίπτωςθ χριςθσ CRUD ......................................................................... 56

    Εικόνα 21: χζςθ μεταξφ περιπτϊςεων χριςθσ τφπου extend ................................. 57

    Εικόνα 22: Παράδειγμα περιπτϊςεων χριςθσ «φςτθμα Διαχείριςθσ Ζργων» ....... 59

  • [7] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    Εικόνα 23: Βαςικι ροι και εναλλακτικζσ ροζσ μιασ περίπτωςθσ χριςθσ ................. 60

    Εικόνα 24: Γραφικι απεικόνιςθ περίπτωςθσ χριςθσ υπολογιςμοφ μιςκοδοςίασ ... 62

    Εικόνα 25: Γραφικι απεικόνιςθ αντικειμζνων κατά τθν ανάλυςθ ευρωςτίασ ......... 77

    Εικόνα 26: υνδυαςμοί αντικειμζνων ανάλυςθσ ευρωςτίασ .................................... 78

    Εικόνα 27: Διάγραμμα ευρωςτίασ για τθν ΠΧ «Τπολογιςμόσ Μιςκοδοςίασ» .......... 79

    Εικόνα 28: Λανκαςμζνο διάγραμμα ευρωςτίασ ........................................................ 82

    Εικόνα 29: Παράδειγμα διαγράμματοσ ακολουκίασ ................................................. 83

    Εικόνα 30: Είδθ μθνυμάτων ςτα διαγράμματα ακολουκίασ ..................................... 85

    Εικόνα 31: Σο διάγραμμα ακολουκίασ για τθν ΠΧ «Τπολογιςμόσ Μιςκοδοςίασ» .... 86

    Εικόνα 32: Κλάςεισ του πακζτου Employees ............................................................. 88

    Εικόνα 33: Οι ςυςχετιςμοί των πακζτων ................................................................... 89

    Εικόνα 34: Ο αναλυτικόσ ςχεδιαςμόσ των κλάςεων του πακζτου Payroll ................ 90

    Εικόνα 35: Αναλυτικόσ ςχεδιαςμόσ των κλάςεων του πακζτου Purchases .............. 91

    Εικόνα 36: H κλάςθ PersistentStorage ....................................................................... 93

    Εικόνα 37: Δθμιουργία κλάςεων java από διάγραμμα κλάςεων .............................. 95

    Εικόνα 38: Μεταςχθματιςμόσ ςχζςεων ςυςχζτιςθσ ςε κϊδικα java ........................ 96

    Εικόνα 39: H κλάςθ Payroll ........................................................................................ 96

    Εικόνα 40: H κλάςθ PayrollRun ................................................................................ 101

    Εικόνα 41: Θ κλάςθ PayrollRunEntry ....................................................................... 105

    Εικόνα 42: Θ δεςμευμζνθ λζξθ this ......................................................................... 106

    Εικόνα 43:Θ κλάςθ Employee ................................................................................. 111

    Εικόνα 44: H κλάςθ CommissionedEmployee .......................................................... 113

    Εικόνα 45: Θ κλάςθ PartTimeEmployee ................................................................... 117

    Εικόνα 46: Θ κλάςθ FullTimeEmployee .................................................................... 119

  • [8] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    Εικόνα 47: H κλάςθ TimeCard .................................................................................. 121

    Εικόνα 48: Θ κλάςθ TimeCardReader ...................................................................... 123

    Εικόνα 49: Θ ιεραρχία των εξαιρζςεων ................................................................... 125

    Εικόνα 50: H εμβζλεια των μεταβλθτϊν μζςα ςτθν κλάςθ TimeCardReader ......... 128

    Εικόνα 51: Ανάλυςθ ςφνκετων κλιςεων μεκόδων ................................................. 129

    Εικόνα 52: Θ κλάςθ LogEntry ................................................................................... 131

    Εικόνα 53: Θ κλάςθ PurchaseOrder ......................................................................... 134

    Εικόνα 54: H κλάςθ OrderLine ................................................................................. 137

    Εικόνα 55: Θ κλάςθ Product ..................................................................................... 138

    Εικόνα 56: H κλάςθ PersistentStorage ..................................................................... 140

    Εικόνα 57: Αρχιτεκτονικι JDBC ................................................................................ 141

    Εικόνα 58: O πίνακασ Employee .............................................................................. 144

    Εικόνα 59: O πίνακασ Product .................................................................................. 144

    Εικόνα 60: O πίνακασ Product .................................................................................. 144

    Εικόνα 61: Ανατροφοδότθςθ κατά τθ διάρκεια του κφκλου ηωισ τθσ μεκοδολογίασ

    XP ........................................................................................................................................... 156

    Εικόνα 62: Οι δϊδεκα πρακτικζσ τθσ μεκοδολογίασ XP .......................................... 157

    Εικόνα 63: Κφκλοσ ηωισ ζργου με βάςθ τθ μεκοδολογία XP .................................. 158

    Εικόνα 64: Κφκλοσ ηωισ ζργου με βάςθ τθ μεκοδολογία Scrum ............................ 160

  • [9] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    1. κοπόσ τθσ μελζτθσ περίπτωςθσ

    Θ παροφςα μελζτθ περίπτωςθσ ζχει τριπλό ςκοπό:

    1. Να παρουςιάςει τθ χριςθ αντικειμενοςτραφϊν μεκοδολογιϊν ανάπτυξθσ ςτθ

    δθμιουργία λογιςμικοφ

    2. Να παρουςιάςει τθν καταςκευι ενόσ ςυςτιματοσ μιςκοδοςίασ υπαλλιλων με

    τθ χριςθ τθσ γλϊςςασ UML.

    3. Να παρουςιάςει το μεταςχθματιςμό του μοντζλου UML ςε κϊδικα Java. Θ

    ανάπτυξθ του κϊδικα κα παρουςιαςκεί βιμα-βιμα ενϊ ταυτόχρονα γίνεται

    αναλυτικι επεξιγθςθ του κϊδικα.

    Μετά τθ μελζτθ του παραδείγματοσ ο αναγνϊςτθσ κα είναι ςε κζςθ :

    1. Να χρθςιμοποιιςει τθ μεκοδολογία ICONIX για τθν ανάπτυξθ ενόσ ςυςτιματοσ

    λογιςμικοφ με αντικειμενοςτραφι τρόπο.

    2. Να αναπτφξει τα απαραίτθτα μοντζλα που απαιτοφνται ςτθν κάκε φάςθ

    ανάπτυξθσ λογιςμικοφ ςυςτιματοσ με τθ χριςθ τθσ γλϊςςασ UML.

    3. Να καταςκευάςει τον κϊδικα Java με βάςθ τα μοντζλα UML που

    αναπτφχκθκαν.

    4. Να αποκθκεφει δεδομζνα ςτθ βάςθ δεδομζνων.

  • [10] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    2. Παρουςίαςθ τθσ μελζτθσ περίπτωςθσ

    Σο ςφςτθμα που καλοφμαςτε να μοντελοποιιςουμε είναι ζνα ςφςτθμα

    μιςκοδοςίασ που ζχει αναπτυχκεί για τισ ανάγκεσ μιασ επιχείρθςθσ. τθ γενικι περίπτωςθ,

    θ εφαρμογι μιςκοδοςίασ αποτελεί μια ςφνκετθ επιχειρθματικι εφαρμογι αφοφ οφείλει να

    λάβει υπόψθ μεγάλο αρικμό επιχειρθματικϊν κανόνων (business rules), που ζχουν ςχζςθ

    με το είδοσ τθσ αςφάλειασ του εργαηομζνου, τθν προχπθρεςία του εργαηομζνου, τθν

    οικογενειακι κατάςταςθ κ.λπ.

    το παράδειγμά μασ παρουςιάηουμε μια απλοποιθμζνθ μορφι μιςκοδοςίασ με

    περιοριςμζνο αρικμό απαιτιςεων. το παράδειγμα αυτό, θ επιχείρθςθ ζχει εργαηομζνουσ

    διαφορετικϊν κατθγοριϊν, όπου κάκε κατθγορία εργαηομζνων πλθρϊνεται με διαφορετικό

    τρόπο. Ζτςι, θ ςυγκεκριμζνθ εταιρεία ζχει εργαηομζνουσ:

    Πλιρουσ απαςχόλθςθσ

    Μερικισ απαςχόλθςθσ

    Μια ειδικι κατθγορία εργαηομζνων πλιρουσ απαςχόλθςθσ είναι οι πωλθτζσ, οι

    οποίοι εκτόσ από το μθνιαίο μιςκό τουσ λαμβάνουν πρόςκετθ αμοιβι (bonus) θ οποία

    εξαρτάται από το ςυνολικό ποςό των παραγγελιϊν που ζλαβαν για τθ δεδομζνθ χρονικι

    περίοδο. Ζτςι ζνασ πωλθτισ λαμβάνει:

    επιπλζον 5% του μιςκοφ του, ςε εβδομαδιαία βάςθ, εάν οι παραγγελίεσ που

    ζλαβε είναι μικρότερεσ των 10.000 €.

    επιπλζον 7% του μιςκοφ του, ςε εβδομαδιαία βάςθ, εάν οι παραγγελίεσ που

    ζλαβε είναι περιςςότερεσ ι ίςεσ των 10.000 € και λιγότερεσ των 20.000 €.

    Για παραγγελίεσ μεγαλφτερεσ ι ίςεσ των 20.000 € λαμβάνουν επιπλζον 10% του

    μιςκοφ τουσ ςε εβδομαδιαία βάςθ.

    Επιπλζον, το ςφςτθμα μιςκοδοςίασ κα πρζπει να υπολογίηει το ποςό που

    αντιςτοιχεί ςτισ υπερωρίεσ των εργαηομζνων. Ωσ υπερωρία κεωρείται θ εργαςία μετά τισ 8

    ϊρεσ θμερθςίωσ, θ οποία αμείβεται με το ωρομίςκιο του κάκε εργαηομζνου προςαυξθμζνο

    κατά 50%.

    Για τθν ακριβι καταγραφι των ωρϊν εργαςίασ των εργαηομζνων, θ εταιρεία ζχει

  • [11] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    εγκαταςτιςει ςφςτθμα «Ελζγχου Προςζλευςθσ/Αποχϊρθςθσ Εργαηομζνων», το οποίο

    καταγράφει τθν ϊρα προςζλευςθσ και αποχϊρθςθσ του κάκε εργαηομζνου. Για το λόγο

    αυτό, ο κάκε εργαηόμενοσ είναι εφοδιαςμζνοσ με προςωπικι κάρτα ειςόδου, ενϊ ςτθν

    είςοδο των εγκαταςτάςεων τθσ εταιρείασ ζχει εγκαταςτακεί αναγνϊςτθσ καρτϊν.

    Οι πωλθτζσ εκτόσ από τθ χριςθ τθσ κάρτασ τουσ μποροφν να ςυνδζονται ςτο

    ςφςτθμα και να καταχωροφν τισ παραγγελίεσ που ζχουν λάβει.

    Σο υπό ανάπτυξθ ςφςτθμα διαχειρίηεται ο υπεφκυνοσ μιςκοδοςίασ, ο οποίοσ ζχει

    τθν αρμοδιότθτα ειςαγωγισ, διαγραφισ, τροποποίθςθσ ςτοιχείων τθσ μιςκοδοςίασ, κακϊσ

    επίςθσ και τθν παραγωγι τθσ μιςκοδοςίασ.

    Σζλοσ, το ςφςτθμα κα πρζπει να διακζτει δυνατότθτα παραγωγισ εκτυπϊςεων:

    Φφλλο μιςκοδοςίασ ανά εργαηόμενο

    υγκεντρωτικι μιςκοδοςία για όλθ τθν εταιρεία

    Παραγγελίεσ ανά εργαηόμενο

  • [12] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    3. H μεκοδολογία ICONIX

    το κεφάλαιο αυτό κα παρουςιάςουμε τθ μεκοδολογία αντικειμενοςτραφοφσ

    ανάπτυξθσ ICONIX1, θ οποία με τθν αμεςότθτα και τθν πλθρότθτά τθσ μπορεί να ελαττϊςει

    τον ανταγωνιςμό ανάμεςα ςτισ ομάδεσ ανάπτυξθσ και διαχείριςθσ ενόσ ζργου λογιςμικοφ,

    αυξάνοντασ ταυτόχρονα τθν ποιότθτα του παραγόμενου λογιςμικοφ. φμφωνα με το

    ςυγγραφζα τθσ ICONIX, Doug Rosenberg, θ μεκοδολογία ICONIX είναι παλαιότερθ τθσ UML

    και τθσ ενοποιθμζνθσ προςζγγιςθσ (unified process) και δθμιουργικθκε από τθ ςφνκεςθ

    τθσ μεκοδολογίασ OMT του Jim Rumbaugh’s, τθσ μεκοδολογίασ Objectory του Ivar

    Jacobson’s, και τθσ μεκοδολογίασ του Grady Booch’s. Πάντα ςφμφωνα με τον Doug

    Rosenberg χρθςιμοποιικθκαν ςτοιχεία τθσ ΟΜΣ για τθν εκφραςτικότθτά τουσ ςτθ

    μοντελοποίθςθ του πεδίου προβλιματοσ (problem domain), ςτοιχεία τθσ μεκοδολογίασ του

    Booch για τισ δυνατότθτζσ τθσ ςτθ αναλυτικι ςχεδίαςθ και ςτοιχεία τθσ μεκοδολογίασ

    Objectory για τθ μοντελοποίθςθ των δυναμικϊν χαρακτθριςτικϊν των ςυςτθμάτων.

    Θ ICONIX είναι απλοφςτερθ και ςυντομότερθ από τθν πολφ εκτενι μεκοδολογία

    Rational Unified Process (RUP). Όπωσ και θ RUP, θ ICONIX υιοκετεί τθν UML ωσ γλϊςςα

    ζκφραςθσ των απαιτιςεων και των προδιαγραφϊν του υπό ςχεδίαςθ λογιςμικοφ και είναι

    «κακοδθγοφμενθ από τισ περιπτϊςεισ χριςθσ». Σαυτόχρονα, αποφεφγει τθν πλθκϊρα

    μοντζλων χωρίσ να παραλείπει τισ διαδικαςίεσ ανάλυςθσ και ςχεδιαςμοφ.

    Επιπλζον, θ μεκοδολογία ICONIX είναι εφκαμπτθ μζκοδοσ ανάπτυξθσ λογιςμικοφ. Θ

    ευκαμψία (agility) ςτθν ανάπτυξθ ςυςτθμάτων λογιςμικοφ είναι θ ικανότθτα τθσ

    προςαρμογισ και του επαναπροςδιοριςμοφ ενόσ αναπτυςςόμενου και ςυνεχϊσ

    εξελιςςόμενου ςυςτιματοσ ςτθν περίπτωςθ που εμφανίηονται αλλαγζσ ςτισ αρχικζσ

    απαιτιςεισ και παραδοχζσ. Οι εφκαμπτεσ μζκοδοι αποτελοφν τθν πλζον ςφγχρονθ

    1 Τν παξόλ θεθάιαην θάλεη κόλν κηα ζύληνκε επηζθόπεζε ηεο ICONIX. Θα βξείηε ηελ πιήξε

    αλάπηπμε ηεο κεζνδνινγίαο κε αλαιπηηθά παξαδείγκαηα ζηα βηβιία «Applying Use Case Driven

    Object Modeling with UML», θαη «Applying Use Case Driven Object Modeling with UML: An

    Annotated e-Commerce Example» ηωλ Doug Rosenberg θαη Kendall Scott (εθδ. Addison Wesley)

    θαζώο θαη ζηελ πην πξόζθαηε έθδνζε ηωλ Doug Rosenberg, Matt Stephens θαη Mark Collins-Cope κε

    ηίηιν Agile Development with ICONIX Process—People, Process, and Pragmatism.

  • [13] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    προςζγγιςθ και τάςθ ςτθν ανάπτυξθ λογιςμικοφ. To Agile Software Development Manifesto

    εκδόκθκε από μία ομάδα προγραμματιςτϊν και ςυμβοφλων επιχειριςεων το 2001

    (http://agilemanifesto.org/) (Cockburn, 2006; Anderson, 2003; Highsmith, 2002) και

    εςτιάηεται ςτθν αναγνϊριςθ του ανκρϊπινου παράγοντα ωσ τον πρωταρχικό παράγοντα

    επιτυχίασ ενόσ ζργου λογιςμικοφ, τθ ςυνεχι ζμφαςθ ςτθν αποτελεςματικότθτα, τθν

    προςαρμοςτικότθτα και τθ διαχείριςθ τθσ αλλαγισ

    (http://c2.com/cgi/wiki?ExtremeProgramming)2.

    υνοψίηοντασ, τα πλεονεκτιματα τθσ ICONIX είναι:

    Χρθςιμοποιεί UML αλλά περιζχει μόνο τον ελάχιςτο αρικμό απαραίτθτων

    βθμάτων, αποφεφγοντασ τθν παράλυςθ τθσ ομάδασ ζργου λόγω υπερβολικισ

    ανάλυςθσ.

    Παρζχει ςε κάκε βιμα τθ δυνατότθτα ανίχνευςθσ του βακμοφ υλοποίθςθσ των

    απαιτιςεων – δεν επιτρζπει ςε κανζνα ςθμείο τθν απομάκρυνςθ από τισ

    ανάγκεσ του χριςτθ.

    Είναι επαναλθπτικι και αυξθτικι – το ςτατικό μοντζλο εκλεπτφνεται κακϊσ

    αναλφεται το δυναμικό μοντζλο – χωρίσ να επιφζρει μεγάλθ διαχειριςτικι

    επιβάρυνςθ.

    Είναι εφκαμπτθ.

    Για να εφαρμόςουμε τθν ICONIX κα χρθςιμοποιιςουμε μόνο τζςςερα UML

    διαγράμματα:

    1. Διάγραμμα περιπτϊςεων χριςθσ για να αναπαραςτιςουμε τα ςενάρια χριςθσ

    και τουσ χειριςτζσ του ςυςτιματοσ.

    2. Διάγραμμα κλάςεων για να αναπαραςτιςουμε το πεδίο προβλιματοσ του

    ςυςτιματοσ αλλά και τθ λεπτομερι ςτατικι δομι του ςυςτιματοσ.

    2 Μηα ζύληνκε εηζαγωγή ζηηο εύθακπηεο κεζόδνπο παξνπζηάδεηαη ζην Παξάξηεκα Α.

    http://c2.com/cgi/wiki?ExtremeProgramming

  • [14] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    3. Διάγραμμα ευρωςτίασ για να αναπαραςτιςουμε τον τρόπο με τον οποίο θ

    ςτατικι δομι υλοποιεί τα ςενάρια χριςθσ του ςυςτιματοσ.

    4. Διάγραμμα ακολουκίασ για να ςυςχετίςουμε λεπτομερϊσ τθ δυναμικι

    ςυμπεριφορά με τθ ςτατικι δομι του ςυςτιματοσ.

    Θ ςχζςθ του υποςυνόλου διαγραμμάτων τθσ ICONIX με το ςφνολο των διακζςιμων

    διαγραμμάτων UML παρουςιάηεται ςτθν Εικόνα 1.

    ΤποςφνολοICONIX

    UML

    Διαγράμματα ςυνεργαςίασ

    Διαγράμματα δραςτθριοτιτων

    Διαγράμματα διάταξθσ

    Διαγράμματα ςυςτατικϊν

    Διαγράμματα καταςτάςεων

    Διαγράμματα αντικειμζνων

    Διαγράμματα κλάςεων

    Διαγράμματα ΠεριπτϊςεωνΧριςθσ

    Διαγράμματα ευρωςτίασ

    Διαγράμματα ακολουκίασ

    Εικόνα 1: To υποςφνολο ICONIX

    3.1 Δομή τησ μεθοδολογίασ

    Θ μεκοδολογία ICONIX περιλαμβάνει τρεισ φάςεισ:

    1. Ανάλυςθ απαιτιςεων

    2. Αρχικόσ ςχεδιαςμόσ

    3. χεδιαςμόσ

  • [15] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    τα πλαίςια κάκε φάςθσ, αναπτφςςουμε ζνα ςφνολο μοντζλων, τα οποία ςυνολικά

    μασ επιτρζπουν να φτάςουμε ςτθν παραγωγι κϊδικα ξεκινϊντασ από τισ περιπτϊςεισ

    χριςθσ. Θ διαδικαςία περιλαμβάνει ζνα ςφνολο ορόςθμων (milestones) ςτα οποία ζχουμε

    τθν ευκαιρία να ελζγξουμε τθν ποιότθτα τθσ δουλειάσ.

    Μια οπτικοποιθμζνθ περιγραφι τθσ μεκοδολογίασ ICONIX φαίνεται ςτθν Εικόνα 2.

    υνοψίηοντασ, ξεκινάμε με μια γριγορθ πρϊτθ εκτίμθςθ των αντικειμζνων που βαςίηεται

    εντελϊσ ςτθν περιγραφι του προβλιματοσ, τθν οποία καταγράφουμε ςε ζνα ςυνοπτικό

    διάγραμμα κλάςεων. τθ ςυνζχεια, εφαρμόηουμε μια μακρά διαδικαςία βαςιςμζνθ ςτθν

    ανάλυςθ τθσ δυναμικισ ςυμπεριφοράσ του ςυςτιματοσ, κατά τθν οποία αναλφουμε

    λεπτομερϊσ τθν αναμενόμενθ λειτουργία κάκε ςεναρίου χρθςιμοποιϊντασ διαγράμματα

    ςυνεργαςίασ και ακολουκίασ, και ενθμερϊνοντασ ταυτόχρονα το διάγραμμα κλάςεων του

    ςυςτιματοσ. Ζπειτα επιςτρζφουμε ςτο ςενάριο και αναλφουμε περιςςότερο τθ

    ςυμπεριφορά του ςυςτιματοσ, επαναλαμβάνοντασ τθ διαδικαςία. Με τον τρόπο αυτό

    αρχικά αποδομοφμε το ςφςτθμα με βάςθ τα όρια των περιπτϊςεων χριςθσ και ςτθ

    ςυνζχεια, ανάλογα με τα αποτελζςματα τθσ ανάλυςθσ των ςεναρίων χριςθσ,

    δθμιουργοφμε μοντζλα τθσ δομισ του ςυςτιματοσ που είναι αρκετά λεπτομερι για να

    βαςίςουμε ςε αυτά τθν παραγωγι του κϊδικα.

  • [16] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    Εικόνα 2: Επιςκόπθςθ τθσ μεκοδολογίασ ICONIX

    Ακολουκϊντασ τθ μεκοδολογία ICONIX, μασ δίνεται θ δυνατότθτα να ελζγξουμε τα

    παραγόμενα μοντζλα τρεισ φορζσ. το τζλοσ τθσ ανάλυςθσ απαιτιςεων ελζγχουμε κυρίωσ

    τα διαγράμματα περιπτϊςεων χριςθσ ςε ςυνδυαςμό με το μοντζλο πεδίου προβλιματοσ.

    το τζλοσ του αρχικοφ και του τελικοφ ςχεδιαςμοφ ελζγχουμε τα διαγράμματα κλάςεων ςε

    ςυνδυαςμό με τα διαγράμματα ςυνεργαςίασ και τα διαγράμματα ακολουκίασ, αντίςτοιχα.

    Επιγραμματικά τα βιματα τθσ μεκοδολογίασ ICONIX είναι τα παρακάτω:

    Βιμα 1: Προςδιοριςμόσ των αντικειμζνων του πεδίου προβλιματοσ.

    Βιμα 2: Προςδιοριςμόσ των απαιτιςεων του ςυςτιματοσ με χριςθ

    περιπτϊςεων χριςθσ.

    Βιμα 3: Ανάλυςθ ευρωςτίασ με ςκοπό τον εντοπιςμό κενϊν ςτο μοντζλο του

    πεδίου προβλιματοσ (domain model).

    Βιμα 4: Λεπτομερισ ςχεδιαςμόσ, προςδιοριςμόσ τθσ ςυμπεριφοράσ των

  • [17] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    αντικειμζνων με τθν ανάπτυξθ διαγραμμάτων ακολουκίασ.

    Βιμα 5: Ολοκλιρωςθ του ςτατικοφ μοντζλου, δθλαδι του διαγράμματοσ

    κλάςεων.

    Βιμα 6: υγγραφι του κϊδικα.

    Βιμα 7: Ζλεγχοσ (testing) του ςυςτιματοσ κακϊσ και ζλεγχοσ αποδοχισ

    (acceptance testing).

    Επιπλζον, επιγραμματικά τα ςθμεία ελζγχου-ορόςθμα που ορίηονται ςτθ

    μεκοδολογία ICONIX είναι τα ακόλουκα:

    Ορόςθμο 1: Επιςκόπθςθ απαιτιςεων

    Ορόςθμο 2: Προκαταρτικι επιςκόπθςθ ςχεδιαςμοφ

    Ορόςθμο 3: Κρίςιμθ επιςκόπθςθ ςχεδιαςμοφ

    Ορόςθμο 4: Παράδοςθ του ςυςτιματοσ

    3.2 Φάςη 1. Ανάλυςη Απαιτήςεων

    Βιμα 1. Αναπαράςταςθ πεδίου προβλιματοσ

    Περιλαμβάνει τον εντοπιςμό εννοιολογικϊν οντοτιτων (αφαιρζςεων) – που ίςωσ

    προζρχονται από τον πραγματικό κόςμο – που κα ςυγκροτιςουν τελικά το υπό ανάπτυξθ

    ςφςτθμα και τθν περιγραφι των ςχζςεων ανάμεςα ςε αυτζσ.

    Ο ςτόχοι του πρϊτου βιματοσ είναι δφο:

    να παραχκεί το αρχικό διάγραμμα κλάςεων του ςυςτιματοσ από το μοντζλο

    του πεδίου προβλιματοσ.

    να δθμιουργιςουμε πρωτότυπα του ςυςτιματοσ με τεχνικζσ ταχείασ

    πρωτοτυποποίθςθσ

    Βαςικζσ δραςτθριότθτεσ

    Εντοπιςμόσ κλάςεων που αναπαριςτοφν με ακρίβεια τισ εννοιολογικζσ

  • [18] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    οντότθτεσ του πεδίου προβλιματοσ: για τθ δραςτθριότθτα αυτι κα βαςιςτοφμε

    ςτο κείμενο που περιγράφει το υπό ανάπτυξθ ςφςτθμα και ςτθν εμπειρία μασ

    (ι ςτθ βιβλιογραφία ςχετικά) με παρόμοια ςυςτιματα. Από το κείμενο τθσ

    περιγραφισ μποροφμε να πάρουμε μια γριγορθ αναπαράςταςθ του πεδίου

    προβλιματοσ εάν ςε κάκε ουςιαςτικό αντιςτοιχίςουμε μια κλάςθ και ςε κάκε

    ριμα μια ςχζςθ ανάμεςα ςε κλάςεισ. Στο ςθμείο αυτό είναι αρκετό να

    εντοπίςουμε τα ονόματα των κλάςεων.

    Εντοπιςμόσ ςχζςεων γενίκευςθσ (is-a) και ςυναρμολόγθςθσ (has) ανάμεςα ςτισ

    κλάςεισ. Μποροφμε ακόμθ και να ςχεδιάςουμε πολλά επίπεδα

    κλθρονομικότθτασ εάν αιςκανόμαςτε ότι ζχουμε κατανοιςει καλά το πεδίο

    εφαρμογισ.

    Βιμα 2. χεδίαςθ περιπτϊςεων χριςθσ

    Βαςικόσ ςτόχοσ του βιματοσ είναι να αναπτφξουμε το μοντζλο περιπτϊςεων

    χριςθσ. Σο μοντζλο περιπτϊςεων χριςθσ κακορίηει τθ δυναμικι ςυμπεριφορά του

    ςυςτιματοσ.

    Βαςικζσ δραςτθριότθτεσ

    Σχεδιαςμόσ προτφπων οκονϊν και ςεναρίων λειτουργίασ του ςυςτιματοσ. Θ

    καλφτερθ πρακτικι είναι να γράψουμε πρϊτα το εγχειρίδιο χριςθσ του

    ςυςτιματοσ (ι τουλάχιςτο να το ζχουμε ςτο μυαλό μασ)! Κάκε περίπτωςθ

    χριςθσ αντιςτοιχεί ςε μια ξεχωριςτι ενότθτα του εγχειρίδιου.

    Ανάλυςθ ςεναρίων (ζνα κάκε φορά) και ςχεδιαςμόσ των περιπτϊςεων χριςθσ.

    Ο ςτόχοσ είναι να εντοπίςουμε όςεσ περιςςότερεσ περιπτϊςεισ χριςθσ

    μποροφμε και να τισ αναλφςουμε ςτθ ςυνζχεια.

    Ανάλυςθ κάκε περίπτωςθσ χριςθσ, ϊςτε θ περιγραφι τθσ να είναι λιτι

    (υποκείμενο-ριμα-αντικείμενο), κατανοθτι και πλιρθσ, με αναφορζσ ςτα

    αντικείμενα του μοντζλου πεδίου προβλιματοσ.

    Εμπλουτιςμόσ του μοντζλου πεδίου προβλιματοσ με όποια νζα αντικείμενα

  • [19] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    εντοπίςτθκαν κατά τθν ανάλυςθ.

    Εντοπιςμόσ περιπτϊςεων χριςθσ που εμφανίηονται ςε πολλά ςενάρια και

    «παραγοντοποίθςθ» του μοντζλου, ϊςτε να αποφφγουμε τθν επανάλθψθ των

    περιγραφϊν. Για να αναπαραςτιςουμε γραφικά τθν παραγοντοποίθςθ

    χρθςιμοποιοφμε τθν ςχζςθ “include” τθσ UML.

    Επανάλθψθ των τριϊν τελευταίων βθμάτων μζχρι να είμαςτε βζβαιοι ότι:

    o Ζχουμε ςχεδιάςει ζνα ςφνολο περιπτϊςεων χριςθσ που περιγράφει

    πλιρωσ και αναλυτικά τθν επικυμθτι λειτουργικότθτα του ςυςτιματοσ

    Ζχουμε γράψει πλιρεισ και κατανοθτζσ περιγραφζσ για όλεσ τισ

    βαςικζσ λειτουργίεσ και για όλεσ τισ εναλλακτικζσ ακολουκίεσ

    ενεργειϊν και αποκρίςεων που ςχετίηονται με κακεμία από

    αυτζσ

    o Ζχουμε παραγοντοποιιςει λειτουργίεσ που είναι κοινζσ ςε πολλζσ

    περιπτϊςεισ χριςθσ

    Ομαδοποίθςθ των περιπτϊςεων χριςθσ ςε πακζτα (packages), με κριτιριο το

    λογικό διαχωριςμό των λειτουργιϊν του ςυςτιματοσ. Κάκε πακζτο αντιςτοιχεί

    ςε ζνα κεφάλαιο του εγχειρίδιου χριςθσ και μπορεί να ανατεκεί ςε ξεχωριςτι

    ομάδα ανάπτυξθσ. Μποροφμε να ςχεδιάςουμε και ζνα διάγραμμα πακζτων, το

    οποίο κα λειτουργεί και ωσ ευρετιριο.

    3.3 Σημείο ελζγχου 1. Επιςκόπηςη απαιτήςεων

    Ο ςτόχοσ είναι να επιτευχκεί ςυμφωνία ανάμεςα ςε όλεσ τισ πλευρζσ ότι οι

    περιπτϊςεισ χριςθσ που ζχουν ςχεδιαςτεί, όταν εφαρμόηονται ςτα πλαίςια του μοντζλου

    του πεδίου προβλιματοσ, αντικατοπτρίηουν ακριβϊσ και πλιρωσ τισ λειτουργικζσ

    απαιτιςεισ του ςυςτιματοσ, όπωσ αυτζσ περιγράφονται ςτα ςενάρια λειτουργίασ.

    Σαυτόχρονα, θ ομάδα ανάπτυξθσ πρζπει να βεβαιωκεί ότι οι πελάτεσ γνωρίηουν τι κζλουν

    να κάνει το ςφςτθμα – αν χρειαςτεί, θ ομάδα ανάπτυξθσ κα πρζπει να βοθκιςει τουσ

    πελάτεσ να ςυνειδθτοποιιςουν και να εκφράςουν τι κζλουν να κάνει το ςφςτθμα.

  • [20] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    Κατά τθν επιςκόπθςθ πρζπει να:

    Βεβαιωκοφμε ότι το κείμενο που περιγράφει τισ περιπτϊςεισ χριςθσ

    περιγράφει επακριβϊσ «τι» κα κάνει το ςφςτθμα με βάςθ τισ απαιτιςεισ των

    χρθςτϊν.

    Χρθςιμοποιιςουμε ζνα πρωτότυπο ςχζδιο τθσ διεπαφισ του ςυςτιματοσ, το

    οποίο κα μασ επιτρζψει να βεβαιωκοφμε ότι οι περιγραφζσ των περιπτϊςεων

    χριςθσ ταιριάηουν με τισ αναμενόμενεσ δραςτθριότθτεσ αλλθλεπίδραςθσ του

    χριςτθ με το λογιςμικό. Σαυτόχρονα, το πρωτότυπο κα μασ επιτρζψει να

    ςυμφωνιςουμε και τθ μορφι τθσ διεπαφισ με τουσ χριςτεσ, κακοδθγϊντασ

    του ςχεδιαςτζσ τθσ διεπαφισ και των διαλόγων.

    Φροντίςουμε ϊςτε οι περιγραφζσ των περιπτϊςεων χριςθσ να είναι ακριβείσ,

    ςυνοπτικζσ και – το κυριότερο – ςυγκεκριμζνεσ, ϊςτε να είναι κατανοθτζσ και

    από μθ τεχνικό προςωπικό (π.χ. χριςτεσ, διαχειριςτζσ).

    Βεβαιωκοφμε ότι το μοντζλο του πεδίου προβλιματοσ αναπαριςτά επακριβϊσ

    τα ςχετικά με αυτό αντικείμενα του πραγματικοφ κόςμου και ότι οι περιγραφζσ

    των περιπτϊςεων χριςθσ αναφζρονται ςτα αντικείμενα αυτά.

    Εξετάςουμε εάν ζχουμε καταγράψει όλεσ τισ εναλλακτικζσ ακολουκίεσ

    ενεργειϊν και αποκρίςεων για κάκε περίπτωςθ χριςθσ. υνικωσ, κάκε

    περίπτωςθ χριςθσ περιλαμβάνει πράξεισ ελζγχου δεδομζνων ι λιψθσ

    αποφάςεων (που ςθμαίνει ότι ο ζλεγχοσ εκτζλεςθσ μπορεί να ακολουκιςει

    διαφορετικι διαδρομι ανάλογα με το αποτζλεςμα μιασ τζτοιασ πράξθσ).

    υνεπϊσ, κάκε περίπτωςθ χριςθσ κα πρζπει να περιλαμβάνει εναλλακτικζσ

    ακολουκίεσ ενεργειϊν.

    3.4 Φάςη 2. Αρχικόσ Σχεδιαςμόσ

    Βιμα 3. Ανάλυςθ ευρωςτίασ

    Θ ανάλυςθ ευρωςτίασ μασ βοθκά να μεταβοφμε από τθν ανάλυςθ του τι κάνει το

    ςφςτθμα ςτο ςχεδιαςμό του πϊσ κα το κάνει. Πρόκειται για ζνα κακοριςτικό βιμα κάκε

  • [21] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    μεκοδολογίασ ανάπτυξθσ λογιςμικοφ. τθν ICONIX, κα πρζπει ςτο βιμα αυτό να

    απαντιςουμε ςτθν ερϊτθςθ «ποια αντικείμενα χρειαηόμαςτε για να υλοποιιςουμε κάκε

    περίπτωςθ χριςθσ;».

    χάςμα

    Μοντζλο ΑνάλυςθσΤι κζλουμε να φτιάξουμε

    Μοντζλο χεδιαςμοφΠωσ κα το φτιάξουμε

    Εικόνα 3: Ο ςκοπόσ του διαγράμματοσ ευρωςτίασ

    τόχοσ τθσ ανάλυςθσ ευρωςτίασ είναι να παραχκοφν διαγράμματα ςυνεργαςίασ –

    ζνα για κάκε ςενάριο. Κάκε διάγραμμα κα αναπαριςτά τα αντικείμενα του ςυςτιματοσ που

    ςυμμετζχουν ςτο ςενάριο και τον τρόπο με τον οποίο αλλθλεπιδροφν. Σο διάγραμμα

    ςυνεργαςίασ αναπαριςτά το μοντζλο ευρωςτίασ – ςτθν πραγματικότθτα είναι ζνα

    διάγραμμα κλάςεων, όπου όμωσ ςτθ κζςθ κάκε κλάςθσ βρίςκεται ζνα εννοιολογικό

    αντικείμενο, (ιδθ όμωσ τα αντικείμενα αυτά είναι λιγότερο αφαιρετικά και βρίςκονται πιο

    κοντά ςτο πραγματικό ςφςτθμα). Σαυτόχρονα, κα εμπλουτίςουμε τισ περιγραφζσ των

    περιπτϊςεων χριςθσ αλλά και το ςτατικό μοντζλο του ςυςτιματοσ.

    Βαςικζσ δραςτθριότθτεσ

    Διαπερνοφμε το κείμενο που περιγράφει τισ περιπτϊςεισ χριςθσ, ζνα ςενάριο

    τθ φορά, και ςχεδιάηουμε τουσ χειριςτζσ, τα αντικείμενα (ςυνοριακά,

    οντοτιτων, ελζγχου) και τισ ςυνδζςεισ ανάμεςα ςτα ςτοιχεία του

    διαγράμματοσ. Εφαρμόηουμε τζςςερισ βαςικοφσ κανόνεσ:

    o Οι χειριςτζσ επικοινωνοφν μόνο με ςυνοριακά αντικείμενα

  • [22] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    o Σα ςυνοριακά αντικείμενα επικοινωνοφν μόνο με χειριςτζσ και ελεγκτζσ

    o Σα αντικείμενα οντοτιτων επικοινωνοφν μόνο με ελεγκτζσ

    o Οι ελεγκτζσ επικοινωνοφν με ςυνοριακά αντικείμενα, αντικείμενα

    οντοτιτων και άλλουσ ελεγκτζσ, αλλά όχι με χειριςτζσ

    Ελζγχουμε τθν ορκότθτα και πλθρότθτα ενόσ διαγράμματοσ ςυνεργαςίασ

    κάνοντασ το «τεςτ των ακμϊν»: για κάκε ακολουκία ενεργειϊν τθσ περίπτωςθσ

    χριςθσ, πρζπει να μποροφμε, διατρζχοντασ το διάγραμμα ςυνεργαςίασ, να

    εντοπίςουμε πάνω ςτισ ακμζσ του μια διατεταγμζνθ ςειρά από αρικμθμζνα

    βζλθ, θ οποία αντιςτοιχίηεται ςτα βιματα τθσ ακολουκίασ.

    Εντοπίηουμε τθν εμφάνιςθ προτφπων ςχεδίαςθσ (design patterns) ςτα

    διαγράμματα ςυνεργαςίασ. Σα πρότυπα κα αποδειχκοφν χριςιμα ςτο επόμενο

    βιμα, αλλά και ςτθ φάςθ του προγραμματιςμοφ.

    χεδιάηουμε τθν τεχνικι αρχιτεκτονικι του ςυςτιματοσ, θ οποία περιλαμβάνει

    επιλογζσ τθσ τεχνολογίασ που κα χρθςιμοποιιςουμε για να υλοποιιςουμε το

    ςφςτθμα (π.χ. πλατφόρμα ανάπτυξθσ, βιβλιοκικεσ, διάδραςθ κ.α.). Οι επιλογζσ

    μασ πρζπει να αντικατοπτρίηονται ςτο διάγραμμα ςυνεργαςίασ.

    Εμπλουτίηουμε το κείμενο των περιπτϊςεων χριςθσ, μειϊνοντασ τθν αςάφεια

    των περιγραφϊν, αλλά και το μοντζλο του πεδίου προβλιματοσ προςκζτοντασ

    άμεςα όποια νζα αντικείμενα εντοπίςτθκαν κατά τον αρχικό ςχεδιαςμό και

    καταγράφοντασ βαςικά κατθγοριματα ςτισ πιο ςθμαντικζσ κλάςεισ.

    3.5 Σημείο ελζγχου 2. Προκαταρκτική επιςκόπηςη

    ςχεδιαςμοφ

    Ο ςτόχοσ τθσ προκαταρκτικισ επιςκόπθςθσ ςχεδιαςμοφ είναι να βεβαιωκοφμε ότι

    ζχουμε εντοπίςει τα ςθμαντικά αντικείμενα του πεδίου προβλιματοσ και ότι αυτά είναι

    αρκετά για να υλοποιιςουν τθν επικυμθτι ςυμπεριφορά του ςυςτιματοσ. Για το ςκοπό

    αυτό, οι (τϊρα πια τελικζσ) περιγραφζσ των περιπτϊςεων χριςθσ και τα διαγράμματα

  • [23] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    ςυνεργαςίασ κα πρζπει να αποτελζςουν το ςυμβόλαιο ανάμεςα ςτθν ομάδα ανάπτυξθσ και

    τουσ χριςτεσ.

    Θα χρθςιμοποιιςουμε το μοντζλο του πεδίου προβλιματοσ (διάγραμμα κλάςεων),

    τα ςχζδια των οκονϊν του ςυςτιματοσ, τα διαγράμματα περιπτϊςεων χριςθσ μαηί με τισ

    περιγραφζσ τουσ και τα διαγράμματα ςυνεργαςίασ που ςχεδιάςαμε για κάκε ςενάριο

    χριςθσ.

    τθ διαδικαςία ςυμμετζχουν εκπρόςωποι των χρθςτϊν, τθσ ομάδασ ανάπτυξθσ και

    οι διαχειριςτζσ του ζργου. Πρόκειται όμωσ για τθν τελευταία ευκαιρία που ζχουν οι

    πελάτεσ να τροποποιιςουν τισ απαιτιςεισ, πριν αρχίςει θ κακαυτό ανάπτυξθ του

    ςυςτιματοσ. Μετά το ςθμείο αυτό, οι πελάτεσ δε ςυμμετζχουν άλλο ςτθ διαδικαςία, παρά

    μόνο όταν αρχίςει θ δοκιμαςτικι λειτουργία του ςυςτιματοσ.

    Θ διαδικαςία περιλαμβάνει:

    Σθν επιςκόπθςθ των διαγραμμάτων ςυνεργαςίασ ςε ςχζςθ με τισ περιγραφζσ

    των περιπτϊςεων χριςθσ για κάκε ςενάριο λειτουργίασ που κα υποςτθρίξει το

    ςφςτθμα που αναπτφςςουμε, με ςτόχουσ να βεβαιωκοφμε ότι (α) τα

    διαγράμματα ταιριάηουν με τισ περιγραφζσ, (β) είναι πλιρθ και (γ)

    αναπαριςτοφν ςωςτά τθν επικυμθτι ςυμπεριφορά του ςυςτιματοσ.

    Σθν επιςκόπθςθ του ςτατικοφ μοντζλου με ςτόχο να βεβαιωκοφμε ότι

    αναπαριςτοφμε ςτο διάγραμμα κλάςεων όλα τα αντικείμενα οντοτιτων που

    εμφανίηονται ςτα διαγράμματα ςυνεργαςίασ.

    Σθν επιςκόπθςθ των κλάςεων του ςτατικοφ μοντζλου ςε ςχζςθ με τισ οκόνεσ

    του ςυςτιματοσ με ςτόχουσ να βεβαιωκοφμε ότι (α) οι κλάςεισ περιλαμβάνουν

    τα πιο ςθμαντικά κατθγοριματα και (β) ότι μποροφμε να ιχνθλατιςουμε τθ ροι

    δεδομζνων από ςτοιχεία των οκονϊν ςε κλάςεισ οντοτιτων και ίςωσ ςε κάποια

    αρχικά υποςυςτιματα αποκικευςθσ (π.χ. αρχεία, πίνακεσ βάςεων δεδομζνων

    κ.λπ.).

    Σθν επιςκόπθςθ των τεχνολογικϊν επιλογϊν (με άλλα λόγια, τθσ «τεχνικισ

  • [24] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    αρχιτεκτονικισ») που ζχουμε κάνει κατά τον αρχικό ςχεδιαςμό, με ςτόχο να

    βεβαιωκοφμε ότι ο ςχεδιαςμόσ που επιχειροφμε είναι εφικτόσ μζςα ςτα

    πλαίςια που θ τεχνικι αρχιτεκτονικι επιβάλλει.

    3.6 Φάςη 3. Σχεδιαςμόσ

    Βιμα 4. Λεπτομερισ ςχεδιαςμόσ

    Περιλαμβάνει τον ςχεδιαςμό τθσ ςυμπεριφοράσ των αντικειμζνων που ζχουμε

    εντοπίςει, μζςα από τθν αντιςτοίχθςθ μεκόδων ςτισ κλάςεισ του ςυςτιματοσ.

    Ακολουκοφμε μια επαναλθπτικι διαδικαςία, επανεξετάηοντασ λεπτομερϊσ τον

    αρχικό ςχεδιαςμό μζςα από τα ςενάρια χριςθσ και προςπακϊντασ τϊρα να περιγράψουμε

    επακριβϊσ πϊσ ςυνεργάηονται τα αντικείμενα που εντοπίςαμε. Πριν ξεκινιςουμε τθ

    διαδικαςία πρζπει να βεβαιωκοφμε ότι ζχουμε λεπτομερείσ, ακριβείσ και ορκζσ

    περιγραφζσ των περιπτϊςεων χριςθσ και ότι ζχουμε «ανακαλφψει» όλα ςχεδόν τα

    αντικείμενα που ςυνιςτοφν το ςφςτθμα. Εάν για κάποιο από αυτά δεν είμαςτε βζβαιοι ότι

    ζχουμε πετφχει το καλφτερο δυνατό αποτζλεςμα, τότε δεν πρζπει να προχωριςουμε ςτο

    βιμα 4, αλλά να επαναλάβουμε τα αντίςτοιχα προθγοφμενα βιματα.

    Ο ςτόχοσ είναι να παραχκοφν τα πλιρθ μοντζλα τθσ ςτατικισ δομισ και τθσ

    δυναμικισ ςυμπεριφοράσ του ςυςτιματοσ. Οι επιμζρουσ ςτόχοι τθσ λεπτομεροφσ

    ςχεδίαςθσ περιλαμβάνουν:

    Σθν αντιςτοίχιςθ ςυμπεριφοράσ ςτα ςυνοριακά αντικείμενα, τα αντικείμενα

    οντοτιτων και τουσ ελεγκτζσ.

    Σθ λεπτομερι ςχεδίαςθ των αλλθλεπιδράςεων κατά τθ διάρκεια του χρόνου

    ανάμεςα ςτα αντικείμενα που εμπλζκονται ςτθν υλοποίθςθ κάκε περίπτωςθσ

    χριςθσ. Κατά τθ διάρκεια τθσ εκτζλεςθσ του λογιςμικοφ, τα αντικείμενα κάκε

    κλάςθσ ανταλλάςςουν μθνφματα, προκαλϊντασ τθν εκτζλεςθ μεκόδων κάκε

    κλάςθσ.

    Σθν οριςτικι και πλιρθ κατανομι πεδίων και μεκόδων ςτισ κλάςεισ.

  • [25] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    Βαςικζσ δραςτθριότθτεσ:

    Αντιγράφουμε ςτο αριςτερό άκρο τθσ ςελίδασ το κείμενο που περιγράφει τα

    βιματα τθσ βαςικισ ακολουκίασ και των εναλλακτικϊν ακολουκιϊν ενεργειϊν

    τθσ περίπτωςθσ χριςθσ (από το μοντζλο των περιπτϊςεων χριςθσ)

    Προςκζτουμε ςε μια γραμμι ςτθν κορυφι τα αντικείμενα οντοτιτων (από το

    μοντζλο ευρωςτίασ). Κακζνα από αυτά είναι ζνα ςτιγμιότυπο μιασ κλάςθσ του

    ςτατικοφ μοντζλου. Κάκε νζο κατθγόρθμα που ανακαλφπτουμε κατά τθ

    δραςτθριότθτα αυτι το προςκζτουμε χωρίσ κακυςτζρθςθ ςτο ςτατικό μοντζλο

    Προςκζτουμε ςτθν ίδια γραμμι τα ςυνοριακά αντικείμενα και τουσ χειριςτζσ

    (από το μοντζλο ευρωςτίασ).

    Καταχωρίηουμε μεκόδουσ ςε κλάςεισ. Πρόκειται για τθν ουςία τθσ λεπτομεροφσ

    ςχεδίαςθσ και περιλαμβάνει τθ μετατροπι κακενόσ αντικειμζνου ελζγχου (από

    το διάγραμμα ευρωςτίασ) ςε ζνα ςφνολο μεκόδων και μθνυμάτων που

    υλοποιοφν τθ ςυμπεριφορά του. Σα τρία πρϊτα βιματα μποροφν να

    εφαρμοςτοφν με μθχανικό τρόπο. Για το παρόν τζταρτο βιμα (που είναι το

    ςθμαντικότερο) υπάρχουν διάφορεσ εναλλακτικζσ ςτρατθγικζσ – τα μζλθ τθσ

    ομάδασ ανάπτυξθσ κα πρζπει ζγκαιρα να αποφαςίςουν ποια κα ακολουκιςουν

    Ελζγχουμε ότι ζχουμε ςυμπεριλάβει όλθ τθν επικυμθτι δυναμικι

    ςυμπεριφορά του ςυςτιματοσ κατά τθν υλοποίθςθ τθσ ςυγκεκριμζνθσ

    περίπτωςθσ χριςθσ ςτο αντίςτοιχο διάγραμμα ακολουκίασ – ωσ λίςτα ελζγχου

    μποροφμε να χρθςιμοποιιςουμε το διάγραμμα ςυνεργαςίασ, φροντίηοντασ να

    ςυμπεριλάβουμε ςτο διάγραμμα ακολουκίασ μεκόδουσ και μθνφματα που

    υλοποιοφν τθ ςυμπεριφορά κάκε ελεγκτι. Με τον τρόπο αυτό βεβαιωνόμαςτε

    ότι θ ςχεδίαςι μασ ικανοποιεί τισ ανάγκεσ των χρθςτϊν.

    Εξετάηουμε ςυνεχϊσ τθν περίπτωςθ να εμφανίηονται ςτα διαγράμματα

    ακολουκίασ πρότυπα ςχεδίαςθσ λογιςμικοφ

    Εμπλουτίηουμε το διάγραμμα κλάςεων ϊςτε να ςυμπεριλαμβάνει τισ

  • [26] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    ςχεδιαςτικζσ αποφάςεισ που λάβαμε κατά τθ ςχεδίαςθ των διαγραμμάτων

    ακολουκίασ

    3.7 Σημείο ελζγχου 3. Κρίςιμη επιςκόπηςη ςχεδιαςμοφ

    Ο ςτόχοσ είναι να βεβαιωκοφμε ότι ο τρόποσ λειτουργίασ του ςυςτιματοσ (δθλαδι,

    θ περιγραφι του «πϊσ επιτυγχάνεται θ επικυμθτι ςυμπεριφορά»), όπωσ αντανακλάται ςτα

    διαγράμματα ακολουκίασ και τα διαγράμματα κλάςεων, ταιριάηει ακριβϊσ με τισ

    απαιτιςεισ χριςθσ του ςυςτιματοσ (δθλαδι, τθν περιγραφι του «ποια είναι θ επικυμθτι

    ςυμπεριφορά»), όπωσ περιγράφονται ςτισ περιπτϊςεισ χριςθσ. Θ ανάλυςθ ευρωςτίασ ζχει

    ιδθ καταδείξει ότι θ ςχεδίαςθ μζςα ςτα πλαίςια του μοντζλου πεδίου προβλιματοσ είναι

    εφικτι. Σϊρα πρζπει να βεβαιωκοφμε ότι γνωρίηουμε τον τρόπο να υλοποιιςουμε τα

    ςυγκεκριμζνα ςχζδια. Είναι θ «τελευταία ςτάςθ» πριν τον προγραμματιςμό, γι’αυτό και

    προςπακοφμε να λφςουμε όλα τα εκκρεμι κζματα ςχεδιαςμοφ.

    Θα χρθςιμοποιιςουμε το μοντζλο του πεδίου προβλιματοσ (διάγραμμα κλάςεων),

    τα ςχζδια των οκονϊν του ςυςτιματοσ, τα διαγράμματα περιπτϊςεων χριςθσ μαηί με τισ

    περιγραφζσ τουσ, τα διαγράμματα ςυνεργαςίασ που ςχεδιάςαμε για κάκε ςενάριο χριςθσ

    και τα λεπτομερι διαγράμματα ακολουκίασ που ςχεδιάςαμε για κάκε περίπτωςθ χριςθσ.

    Πριν ξεκινιςουμε, πρζπει να βεβαιωκοφμε ότι ζχουμε ςχεδιάςει ζνα διάγραμμα

    ακολουκίασ για κάκε βαςικι ακολουκία ενεργειϊν και για όλεσ τισ εναλλακτικζσ

    ακολουκίεσ κακεμίασ περίπτωςθσ χριςθσ.

    τθ διαδικαςία ςυμμετζχουν αποκλειςτικά μζλθ τθσ ομάδασ ανάπτυξθσ

    (ςχεδιαςτζσ, προγραμματιςτζσ, ελεγκτζσ κ.λ.π.). Οι πελάτεσ αποκλείονται, όπωσ

    αποκλείεται και θ όποια αλλαγι των ςυμπεφωνθμζνων περιπτϊςεων χριςθσ.

    Θ διαδικαςία περιλαμβάνει:

    Σθν επιβεβαίωςθ ότι, για κάκε περίπτωςθ χριςθσ, θ ροι μθνυμάτων ςτο

    διάγραμμα ακολουκίασ ταιριάηει με τθν ακολουκία ενεργειϊν ςτθν περιγραφι

    τθσ περίπτωςθσ χριςθσ, για τθ βαςικι και όλεσ τισ εναλλακτικζσ ακολουκίεσ

    ενεργειϊν και αποκρίςεων.

  • [27] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    Σον ζλεγχο τθσ ορκότθτασ τθσ ροισ ελζγχου ςε κάκε διάγραμμα ακολουκίασ,

    ελζγχοντασ τθν ορκότθτα τθσ κατεφκυνςθσ των μθνυμάτων και τθ διαςφάλιςθ

    τθσ ςυνεχοφσ λειτουργίασ του ςυςτιματοσ. Πρζπει να είναι εμφανζσ ποιο

    αντικείμενο ςτζλνει και ποιο λαμβάνει κάκε μινυμα, ενϊ δεν πρζπει να

    υπάρχει μεταφορά ελζγχου εκτζλεςθσ ανάμεςα ςε αντικείμενα χωρίσ τθν

    ανταλλαγι αντίςτοιχου μθνφματοσ.

    Σον ζλεγχο τθσ καλισ κατανομισ μεκόδων ςε κλάςεισ, κακϊσ αυτι επθρεάηει

    τθν ποιότθτα των κλάςεων. Χρθςιμοποιοφμε τα ακόλουκα κριτιρια:

    o Επαναχρθςιμοποιθςιμότθτα (reusability): όςο πιο γενικι είναι μια

    κλάςθ, τόςο πιο εφκολα μποροφμε να τθν επαναχρθςιμοποιιςουμε.

    Πριν ενςωματϊςουμε μια μζκοδο ςε μια ςυγκεκριμζνθ κλάςθ, πρζπει

    να αναρωτθκοφμε κατά πόςο αυτι κα επθρεάςει τθ δυνατότθτα

    επαναχρθςιμοποίθςισ τθσ.

    o Εφαρμοςιμότθτα (applicability): πρζπει κάκε φορά να εξετάηουμε κατά

    πόςο μια μζκοδοσ «ταιριάηει» με τθν κλάςθ ςτθν οποία ςκεφτόμαςτε

    να τθν κατανείμουμε. Για παράδειγμα, θ μζκοδοσ κα πρζπει να

    χρθςιμοποιεί δεδομζνα τθσ κλάςθσ και να υλοποιεί λειτουργίεσ που

    ταιριάηουν με αυτζσ που υλοποιοφν οι υπόλοιπεσ μζκοδοι τθσ κλάςθσ.

    o Πολυπλοκότθτα (complexity): εξετάηουμε το βακμό δυςκολίασ

    υλοποίθςθσ μιασ μεκόδου μζςα ςε μια ι άλλθ κλάςθ, προςπακϊντασ

    να μειϊςουμε τθν πολυπλοκότθτα τθσ υλοποίθςθσ.

    o Εςωτερικι γνϊςθ υλοποίθςθσ τθσ κλάςθσ: εξετάηουμε εάν θ υλοποίθςθ

    μιασ μεκόδου μζςα ςε μια κλάςθ απαιτεί τθ γνϊςθ εςωτερικϊν

    λεπτομερειϊν υλοποίθςθσ τθσ κλάςθσ.

    Σον ζλεγχο τθσ ποιότθτασ των κλάςεων, δθλαδι το βακμό ςτον οποίο ο

    ςχεδιαςμόσ τουσ ικανοποιεί τα ακόλουκα κριτιρια:

    o φηευξθ (coupling): ςτοχεφουμε ςε χαλαρι (μειωμζνθ) ςφηευξθ, ϊςτε

  • [28] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    να μεγιςτοποιιςουμε τθ ςυναρμολογθςιμότθτα (modularity) του

    ςυςτιματοσ.

    o υνοχι (cohesion): ςτοχεφουμε ςε υψθλό βακμό λειτουργικισ ςυνοχισ

    ανάμεςα ςτα κατθγοριματα και τισ μεκόδουσ μιασ κλάςθσ.

    o Επάρκεια (sufficiency): ςτοχεφουμε ςε υψθλό βακμό επάρκειασ κάκε

    κλάςθσ, δθλαδι αυτι πρζπει να ενκυλακϊνει αρκετά αντικείμενα του

    πεδίου προβλιματοσ, ϊςτε να αποτελεί ζνα αυτόνομο και λογικά

    πλιρεσ τμιμα του ςυςτιματοσ, με το οποίο άλλα τμιματα μποροφν να

    επικοινωνοφν.

    o Πλθρότθτα (completeness): ςτοχεφουμε ςε υψθλό βακμό πλθρότθτασ,

    ϊςτε θ κάκε κλάςθ να είναι επαναχρθςιμοποιιςιμθ ςε παρόμοια πεδία

    εφαρμογισ. Αυτό ςθμαίνει ότι ςτθ διεπαφι τθσ κλάςθσ ζχουμε

    φροντίςει να αναπαραςτιςουμε όλουσ τουσ τρόπουσ με τουσ οποίουσ

    μπορεί να χρθςιμοποιθκεί.

    o Πρωτογζνεια (primitiveness): ο ςτόχοσ είναι να ςχεδιάςουμε οριςμζνεσ

    βαςικζσ μεκόδουσ, οι οποίεσ κα ζχουν πρόςβαςθ ςε ζννοιεσ και

    αφαιρζςεισ των μοντζλων του ςυςτιματοσ, και τισ οποίεσ ςτθ ςυνζχεια

    κα χρθςιμοποιιςουμε ωσ δομικά υλικά ςε περιςςότερο πολφπλοκεσ

    μεκόδουσ.

    Σθ διαςφάλιςθ ότι τα διαγράμματα ακολουκίασ περιγράφουν ςτθ μεγαλφτερθ

    δυνατι λεπτομζρεια τον τρόπο υλοποίθςθσ του ςυςτιματοσ,

    ςυμπεριλαμβάνοντασ πρότυπα ςχεδιαςμοφ, κακϊσ και τα απαραίτθτα ςτοιχεία

    τθσ τεχνικισ αρχιτεκτονικισ και τον τρόπο με τον οποίο αυτά επθρεάηουν τθν

    υλοποίθςθ του ςυςτιματοσ.

  • [29] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    4 Σο μοντζλο UML

    τθ μελζτθ κα ακολουκιςουμε τα βιματα τθσ μεκοδολογίασ ICONIX δίνοντασ

    ςυμπλθρωμικά ςτοιχεία ςχετικά με τα διαγράμματα ι καλζσ πρακτικζσ όπου κεωροφμε

    ςκόπιμο.

    Ωσ ζνα αρχικό βιμα πριν τθν επεξεργαςία του προβλιματοσ κεωροφμε τθν

    απαρίκμθςθ των απαιτιςεων3(requirements) όπωσ αυτζσ προκφπτουν από τθ γενικι

    περιγραφι τθσ μελζτθσ περίπτωςθσ.

    H απαρίκμθςθ των απαιτιςεων κα μασ βοθκιςει ςτθν ιχνθλαςιμότθτα (traceability)

    αυτϊν κατά τθ διάρκεια τθσ ανάπτυξθσ του ςυςτιματοσ. Γενικότερα, θ διαχείριςθ

    απαιτιςεων (requirements management)4 και το μοντζλο που προκφπτει αποτελεί τθ βάςθ

    για τθ ςχεδίαςθ, τον ζλεγχο και τθν τεκμθρίωςθ του ςυςτιματοσ.

    Θ ιχνθλάτιςθ των απαιτιςεων επιτρζπει:

    Σθν καλφτερθ αξιολόγθςθ των αλλαγϊν ςτισ απαιτιςεισ, θ οποία κα ιταν

    απαραίτθτθ ςτθν ανάπτυξθ ενόσ πραγματικοφ ςυςτιματοσ.

    Σθν αξιολόγθςθ των αποτελεςμάτων του ελζγχου (testing).

    Σθν επαλικευςθ τθσ ικανοποίθςθσ των απαιτιςεων.

    Σθ διαχείριςθ των αλλαγϊν.

    Επιπλζον, εκτόσ από τισ λειτουργικζσ απαιτιςεισ κα πρζπει να λάβουμε υπόψθ μασ τισ

    μθ λειτουργικζσ απαιτιςεισ (non-functional requirements)5 του ςυςτιματοσ.

    3 Απαίηεζε είλαη κηα ηθαλόηεηα πνπ ζα πξέπεη λα δηαζέηεη ην ινγηζκηθό κε ζθνπό ν ρξήζηεο λα ιύλεη έλα πξόβιεκα ή λα πεηπραίλεη έλα ζηόρν ηνπ ή λα ηθαλνπνηείηαη έλα πξόηππν ή έλαο όξνο ηνπ

    ζπκβνιαίνπ θ.ιπ. 4 Δηαρείξηζε απαηηήζεωλ είλαη ν ζπζηεκαηηθόο ηξόπνο εύξεζεο, νξγάλωζεο θαη ηεθκεξίωζεο ηωλ

    απαηηήζεωλ ηνπ ζπζηήκαηνο θαζώο θαη ν έιεγρνο ηωλ αιιαγώλ πνπ ζπκβαίλνπλ ζε όιε ηε δηάξθεηα

    ηνπ έξγνπ 5 Οη κε ιεηηνπξγηθέο απαηηήζεηο πξνζδηνξίδνπλ ηδηόηεηεο ηνπ ζπζηήκαηνο θαη πεξηνξηζκνύο ζηνπο

    νπνίνπο ππόθεηηαη ην ζύζηεκα. Σηηο πην πνιιέο πεξηπηώζεηο νη κε ιεηηνπξγηθέο απαηηήζεηο είλαη

    βαζηθέο αθνύ ε κε ηθαλνπνίεζε απηώλ αρξεζηεύεη ην ζύζηεκα. Ωο παξαδείγκαηα κε ιεηηνπξγηθώλ

    απαηηήζεωλ κπνξνύκε λα αλαθέξνπκε ηελ απόδνζε (performance), ηε δηαζεζηκόηεηα (availability),

    ηελ επεθηαζηκόηεηα (scalability), ηελ επθνιία ρξήζεο (usability), ην είδνο ηεο γξαθηθή δηεπαθή κε ην

  • [30] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    4.1 Απαρίθμηςη των απαιτήςεων

    Nο Περιγραφι απαίτθςθσ

    Α

    R1

    Οι εργαηόμενοι τθσ εταιρείασ είναι δυο κατθγοριϊν:

    Πλιρουσ απαςχόλθςθσ και

    Μερικισ απαςχόλθςθσ

    Μια ειδικι κατθγορία εργαηομζνων πλιρουσ απαςχόλθςθσ είναι οι πωλθτζσ.

    Ρ

    R2

    Θ πλθρωμι των εργαηομζνων πλιρουσ απαςχόλθςθσ γίνεται με βάςθ το μθνιαίο

    μιςκό λαμβάνοντασ υπόψθ τισ θμζρεσ απουςίασ.

    R3 Θ πλθρωμι των εργαηομζνων μερικισ απαςχόλθςθσ γίνεται με βάςθ τισ

    πραγματικζσ ϊρεσ εργαςίασ και το ωρομίςκιο του κάκε εργαηομζνου.

    R4 Oι πωλθτζσ, λαμβάνουν εκτόσ από το μθνιαίο μιςκό πρόςκετθ αμοιβι (bonus) θ

    οποία εξαρτάται από το ςυνολικό ποςό των παραγγελιϊν που ζλαβαν για τθ

    δεδομζνθ χρονικι περίοδο. Ζτςι ζνασ πωλθτισ λαμβάνει

    επιπλζον 5% του μιςκοφ του, ςε εβδομαδιαία βάςθ, εάν οι

    παραγγελίεσ που ζλαβε είναι μικρότερεσ των 10.000 €.

    επιπλζον 7% του μιςκοφ του, ςε εβδομαδιαία βάςθ, εάν οι

    παραγγελίεσ που ζλαβε είναι περιςςότερεσ των 10.000 € και λιγότερεσ

    των 20.000 €.

    Για παραγγελίεσ μεγαλφτερεσ των 20.000 € λαμβάνουν επιπλζον 10%

    του μιςκοφ τουσ ςε εβδομαδιαία βάςθ.

    R5 Οι εργαηόμενοι πλιρουσ απαςχόλθςθσ λαμβάνουν υπερωρίεσ. Ωσ υπερωρία

    κεωρείτε θ εργαςία μετά τισ 8 ϊρεσ θμερθςίωσ, θ οποία αμείβεται με το

    ωρομίςκιο του κάκε εργαηομζνου προςαυξθμζνο κατά 50%. Οι υπερωρίεσ

    υπολογίηονται ςε θμεριςια βάςθ.

    ρξήζηε (user interface) θ.ιπ.

  • [31] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    R6 Για τθν ακριβι καταγραφι των ωρϊν εργαςίασ των εργαηομζνων, θ εταιρεία ζχει

    εγκαταςτιςει ςφςτθμα «Ελζγχου Προςζλευςθσ/Αποχϊρθςθσ Εργαηομζνων», το

    οποίο καταγράφει τθν ϊρα προςζλευςθσ και αποχϊρθςθσ του κάκε εργαηομζνου.

    R7 Κάκε εργαηόμενοσ ζχει μια κάρτα ειςόδου θ οποία χρθςιμοποιείται για τθν

    καταγραφι τθσ ϊρασ προςζλευςθσ και αναχϊρθςθσ.

    R8 Ο υπεφκυνοσ μιςκοδοςίασ ζχει τθν αρμοδιότθτα ειςαγωγισ, διαγραφισ και

    τροποποίθςθσ των ςτοιχείων των εργαηομζνων.

    R9 Ο υπεφκυνοσ μιςκοδοςίασ ζχει τθν αρμοδιότθτα παραγωγισ μιςκοδοςίασ.

    Β

    R10

    Σο ςφςτθμα κα πρζπει να διακζτει δυνατότθτα παραγωγισ εκτυπϊςεων τόςο ανά

    εργαηόμενο όςο και ςυγκεντρωτικζσ. Πιο ςυγκεκριμζνα κα πρζπει να παράγει

    Φφλλο μιςκοδοςίασ ανά εργαηόμενο

    υγκεντρωτικι μιςκοδοςία για όλθ τθν εταιρεία

    Παραγγελίεσ ανά εργαηόμενο

    9

    R11

    Σόςο, τα δεδομζνα τθσ μιςκοδοςίασ όςο και τα ςτοιχεία των υπαλλιλων κα

    αποκθκεφονται ςε ΒΔ. Όταν ξεκινά θ εφαρμογι κα πρζπει να διαβάηεται

    αυτόματα θ πλθροφορία των υπαλλιλων από τθ ΒΔ και να δθμιουργοφνται τα

    κατάλλθλα αντικείμενα (υπαλλιλων, κάρτασ ειςόδου, κ.ο.κ).6

    4.2 Παραδοχζσ τησ μελζτησ περίπτωςησ

    Οι παρακάτω παραδοχζσ ζγιναν με ςκοπό να παρουςιαςκεί μια απλοποιθμζνθ

    ζκδοςθ του ςυςτιματοσ που να ικανοποιεί με καλφτερο τρόπο τισ εκπαιδευτικζσ ανάγκεσ

    που ζκεςε θ παροφςα μελζτθ περίπτωςθσ.

    6 Αλ θαη ε απαίηεζε απηή δελ πξνζδηνξίδεηαη ζαθώο ζηε κειέηε πεξίπηωζεο, ζεωξνύκε όηη ππνλνείηαη

    θαζώο ε απνζήθεπζε ηωλ δεδνκέλωλ κηαο επηρεηξεκαηηθήο εθαξκνγήο ζε κηα βάζε δεδνκέλωλ είλαη

    πξνθαλήο θαη αλαγθαία.

  • [32] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    Οι παραδοχζσ αυτζσ είναι:

    1. Κάκε εργαηόμενοσ ζχει μια κάρτα ειςόδου θ οποία χρθςιμοποιείται για τθν

    καταγραφι τθσ ϊρασ προςζλευςθσ και αναχϊρθςθσ. Για τθν καταγραφι κα

    πρζπει να εξομοιωκεί θ λειτουργία ενόσ αναγνϊςτθ κάρτασ κακϊσ και θ

    προςζλευςθ/αναχϊρθςθ των υπαλλιλων. Ο αναγνϊςτθσ κάρτασ κάκε θμζρα

    και για κάκε υπάλλθλο δζχεται δφο μθνφματα: Προςζλευςθ και Αναχϊρθςθ.

    Κατά τθν προςζλευςθ θ χρονικι ςτιγμι ειςαγωγισ τθσ κάρτασ κα ορίηεται με

    τυχαίο τρόπο για το χρονικό διάςτθμα από 8:00 ζωσ 8:15. Κατά τθν αναχϊρθςθ

    θ χρονικι ςτιγμι ειςαγωγισ τθσ κάρτασ κα ορίηεται με τυχαίο τρόπο για το

    χρονικό διάςτθμα από 16:00 ζωσ 16:30.

    2. Σο ςφςτθμα «Ελζγχου Προςζλευςθσ/Αποχϊρθςθσ Εργαηομζνων» αν και

    ςυνεργάηεται με το ςφςτθμα μιςκοδοςίασ δεν αποτελεί τμιμα του.

    3. Θ εφαρμογι που παρουςιάηεται καταγράφει τουσ χρόνουσ εργαςίασ όλων των

    υπαλλιλων για τισ εργάςιμεσ μζρεσ ενόσ μινα. Για τθν απλοποίθςθ τθσ λογικισ

    υποκζτουμε πωσ δεν υπάρχουν απουςίεσ υπαλλιλων ςτθ διάρκεια του μινα

    και πωσ οι ωρομίςκιοι πλθρϊνονται ςτο τζλοσ κάκε μινα.

    4. τθν παροφςα μελζτθ περίπτωςθσ δε κα αςχολθκοφμε με τθ διεπαφι του

    ςυςτιματοσ με το χριςτθ (graphical user interface) ςτο επίπεδο του κϊδικα. Αν

    και το παράδειγμα, περιλαμβάνει γραφικζσ οκόνεσ (διαχείριςθ παραγγελιϊν)

    ςκοπόσ είναι να παρουςιαςκεί ο τρόποσ με τον οποίο κάνουμε τθν

    πρωτοτυποποίθςθ του ςυςτιματοσ και αναπτφςςουμε τθ διεπαφι με το

    χριςτθ. Για το λόγο αυτό δε δίνεται ιδιαίτερθ ζμφαςθ ςτθν επεξιγθςθ των

    τεχνικϊν χαρακτθριςτικϊν που ςχετίηονται με τθν ανάπτυξθ του GUI.

    5. Θ παροφςα μελζτθ περίπτωςθσ δεν ζχει περιοριςμοφσ ειςόδου (login,

    password). υνεπϊσ θ λειτουργικότθτα που παρουςιάηεται είναι κοινι για

    όλουσ τουσ χριςτεσ.

    4.3 Φάςη 1- Βήμα 1. Αναπαράςταςη πεδίου προβλήματοσ

    4.3.1 Εύρεςη κλάςεων πεδίου προβλήματοσ

    τόχοσ του πρϊτου βιματοσ τθσ μεκοδολογίασ ICONIX είναι θ ανάπτυξθ του

    αρχικοφ διαγράμματοσ κλάςεων του ςυςτιματοσ από το μοντζλο του πεδίου προβλιματοσ.

  • [33] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    Ζνασ από τουσ πιο απλοφσ τρόπουσ για τθν εφρεςθ των κλάςεων του πεδίου

    προβλιματοσ είναι θ μελζτθ των απαιτιςεων. Μερικοί απλοί κανόνεσ που βοθκοφν είναι:

    1) Σα ουςιαςτικά αντιςτοιχοφν ςε κλάςεισ ι πεδία κλάςεων.

    2) Σα ριματα ι οι φράςεισ που δίνουν ενζργεια γίνονται μζκοδοι ι/και ςυςχετίςεισ

    (associations).

    3) Οι κτθτικζσ φράςεισ ςυνικωσ περιγράφουν ιδιότθτεσ/πεδία των κλάςεων και

    ςυςχετίςεισ.

    Αν εφαρμόςουμε τουσ κανόνεσ χρθςιμοποιϊντασ τθ γενικι περιγραφι του

    προβλιματοσ τότε καταλιγουμε ςε ζνα αρικμό υποψθφίων κλάςεων. Οι κλάςεισ που μασ

    ενδιαφζρουν και που βρικαμε με τον τρόπο αυτό παρουςιάηονται υπογραμμιςμζνεσ, ενϊ

    με τα λοξά γράμματα (italics) είναι οι μζκοδοι που ζχουν εντοπιςκεί.

    Nο Περιγραφι απαίτθςθσ

    Α

    R1

    Οι εργαηόμενοι τθσ εταιρείασ είναι δυο κατθγοριϊν:

    Πλιρουσ απαςχόλθςθσ και

    Μερικισ απαςχόλθςθσ

    Μια ειδικι κατθγορία εργαηομζνων πλιρουσ απαςχόλθςθσ είναι οι πωλθτζσ.

    Ρ

    R2

    Η πλθρωμι των εργαηομζνων πλιρουσ απαςχόλθςθσ γίνεται με βάςθ το μθνιαίο

    μιςκό λαμβάνοντασ υπόψθ τισ θμζρεσ απουςίασ.

    R3 Η πλθρωμι των εργαηομζνων μερικισ απαςχόλθςθσ γίνεται με βάςθ τισ

    πραγματικζσ ϊρεσ εργαςίασ και το ωρομίςκιο του κάκε εργαηομζνου.

    R4 Oι πωλθτζσ, λαμβάνουν εκτόσ από το μθνιαίο μιςκό πρόςκετθ αμοιβι (bonus) θ

    οποία εξαρτάται από το ςυνολικό ποςό των παραγγελιϊν που ζλαβαν για τθ

    δεδομζνθ χρονικι περίοδο. Ζτςι ζνασ πωλθτισ λαμβάνει:

    επιπλζον 5% του μιςκοφ του, ςε εβδομαδιαία βάςθ, εάν οι

    παραγγελίεσ που ζλαβε είναι μικρότερεσ των 10.000 €.

    επιπλζον 7% του μιςκοφ του, ςε εβδομαδιαία βάςθ, εάν οι

  • [34] Draft

    Ανάπτυξθ ςυςτιματοσ λογιςμικοφ με UML και Java

    Nο Περιγραφι απαίτθςθσ

    παραγγελίεσ που ζλαβε είναι πε�