ΥΜΛ Αππλιεδ Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν Υσινγ τηε ΥΜΛ Α Χουρσε Χοmπανιον ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ Αυτηορσ ανδ Χονταχτσ Πλεασε χονταχτ ινφο≅αριαδνετραινινγ.χο.υκ, ορ σεε τηε ωεβσιτε ατ ωωω.αριαδνετραινινγ.χο.υκ φορ φυρτηερ δεταιλσ αβουτ Αριαδνε’σ συππορτινγ τραινινγ χουρσεσ Χοmmεντσ ανδ φεεδβαχκ αρε ωελχοmε ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ Χοντεντσ ΑΝ ΙΝΤΡΟDΥΧΤΙΟΝ ΤΟ ΤΗΕ ΥΜΛ Wηατ ισ τηε ΥΜΛ? Α Χοmmον Λανγυαγε Συmmαρψ 7 ΤΗΕ ΥΜΛ WΙΤΗΙΝ Α DΕςΕΛΟΠΜΕΝΤ ΠΡΟΧΕΣΣ 10 Τηε ΥΜΛ ασ α Νοτατιον Τηε Wατερφαλλ Μοδελ Τηε Σπιραλ Μοδελ Ιτερατιϖε, Ινχρεmενταλ Φραmεωορκσ Ινχεπτιον Ελαβορατιον Χονστρυχτιον Τρανσιτιον Ηοω Μανψ Ιτερατιονσ? Ηοω Λονγ Σηουλδ Τηεψ Βε? Τιmε Βοξινγ Τψπιχαλ Προϕεχτ Τιmινγσ Τηε Ρατιοναλ Υνιφιεδ Προχεσσ Συmmαρψ 10 10 12 13 13 14 14 15 15 16 16 17 18 ΟΒϑΕΧΤ ΟΡΙΕΝΤΑΤΙΟΝ 19 Στρυχτυρεδ Προγραmmινγ Τηε Οβϕεχτ Οριεντατεδ Αππροαχη Ενχαπσυλατιον Οβϕεχτσ Τερmινολογψ Τηε Οβϕεχτ Οριεντεδ Στρατεγψ Συmmαρψ 19 22 23 23 24 24 25 ΑΝ ΟςΕΡςΙΕW ΟΦ ΤΗΕ ΥΜΛ 26 Τηε Υσε Χασε Dιαγραm Τηε Χλασσ Dιαγραm Χολλαβορατιον Dιαγραmσ Σεθυενχε Dιαγραm Στατε Dιαγραmσ Παχκαγε Dιαγραmσ Χοmπονεντ Dιαγραmσ Dεπλοψmεντ Dιαγραmσ Συmmαρψ 27 28 29 30 31 32 33 34 34 ΤΗΕ ΙΝΧΕΠΤΙΟΝ ΠΗΑΣΕ 35 ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ ΤΗΕ ΕΛΑΒΟΡΑΤΙΟΝ ΠΗΑΣΕ 37 Dελιϖεραβλεσ Συmmαρψ 37 38 ΥΣΕ ΧΑΣΕ ΜΟDΕΛΛΙΝΓ 39 Αχτορσ Τηε Πυρποσε οφ Υσε Χασεσ Υσε Χασε Γρανυλαριτψ Υσε Χασε Dεσχριπτιονσ Υσε Χασεσ ατ τηε Ελαβορατιον Πηασε Φινδινγ Υσε Χασεσ ϑοιντ Ρεθυιρεmεντσ Πλαννινγ Wορκσηοπσ (ϑΡΠ) Βραινστορmινγ Αδϖιχε Συmmαρψ 39 40 41 43 43 44 44 45 45 ΧΟΝΧΕΠΤΥΑΛ ΜΟDΕΛΛΙΝΓ 46 Φινδινγ Χονχεπτσ Εξτραχτινγ Χονχεπτσ Φροm Ρεθυιρεmεντσ Τηε Χονχεπτυαλ Μοδελ ιν τηε ΥΜΛ Φινδινγ Αττριβυτεσ Γυιδελινεσ φορ Φινδινγ Αττριβυτεσ Ασσοχιατιονσ Ποσσιβλε Χαρδιναλιτιεσ Βυιλδινγ τηε Χοmπλετε Μοδελ Συmmαρψ 47 47 48 49 50 50 51 51 53 ΡΑΝΚΙΝΓ ΥΣΕ ΧΑΣΕΣ 54 Συmmαρψ 55 ΤΗΕ ΧΟΝΣΤΡΥΧΤΙΟΝ ΠΗΑΣΕ 56 Χονστρυχτιον Συmmαρψ 56 57 ΤΗΕ ΧΟΝΣΤΡΥΧΤΙΟΝ ΠΗΑΣΕ : ΑΝΑΛΨΣΙΣ 58 Βαχκ το τηε Υσε Χασεσ Πρε−Χονδιτιονσ Ποστ Χονδιτιονσ Μαιν Φλοω Αλτερνατε Φλοωσ Εξχεπτιον Φλοωσ Τηε Χοmπλετε Υσε Χασε Τηε ΥΜΛ Σεθυενχε Dιαγραm Συmmαρψ 58 59 59 59 60 60 61 61 63 ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ ΤΗΕ ΧΟΝΣΤΡΥΧΤΙΟΝ ΠΗΑΣΕ : DΕΣΙΓΝ 64 Dεσιγν − Ιντροδυχτιον Χολλαβορατιον οφ Οβϕεχτσ ιν Ρεαλ Λιφε Χολλαβορατιον Dιαγραmσ Χολλαβορατιον Σψνταξ : Τηε Βασιχσ Χολλαβορατιον Dιαγραmσ : Λοοπινγ Χολλαβορατιον Dιαγραmσ : Χρεατινγ νεω οβϕεχτσ Μεσσαγε Νυmβερινγ Χολλαβορατιον Dιαγραmσ : Wορκεδ Εξαmπλε Σοmε Γυιδελινεσ Φορ Χολλαβορατιον Dιαγραmσ Χηαπτερ Συmmαρψ 64 65 66 66 68 68 68 69 72 73 DΕΣΙΓΝ ΧΛΑΣΣ DΙΑΓΡΑΜΣ 74 Χρεδιτινγ ανδ Dεβιτινγ Αχχουντσ Στεπ : Αδδ Οπερατιονσ Στεπ : Αδδ Ναϖιγαβιλιτψ Στεπ : Ενηανχε Αττριβυτεσ Στεπ : Dετερmινε ςισιβιλιτψ Αγγρεγατιον Χοmποσιτιον Φινδινγ Αγγρεγατιον ανδ Χοmποσιτιον Συmmαρψ 74 75 75 75 76 76 77 77 77 ΡΕΣΠΟΝΣΙΒΙΛΙΤΨ ΑΣΣΙΓΝΜΕΝΤ ΠΑΤΤΕΡΝΣ 78 Τηε ΓΡΑΣΠ Παττερνσ Wηατ ισ α παττερν? Γρασπ : Εξπερτ Γρασπ : Χρεατορ Γρασπ : Ηιγη Χοηεσιον Γρασπ : Λοω Χουπλινγ Γρασπ : Χοντρολλερ Συmmαρψ 78 78 78 80 81 83 86 87 ΙΝΗΕΡΙΤΑΝΧΕ 88 Ινηεριτανχε – τηε βασιχσ Ινηεριτανχε ισ Wηιτε Βοξ Ρευσε Τηε 100% Ρυλε Συβστιτυταβιλιτψ Τηε Ισ−Α−Κινδ−Οφ Ρυλε Εξαmπλε − Ρευσινγ θυευεσ τηρουγη ινηεριτανχε Προβλεmσ Wιτη Ινηεριτανχε ςισιβιλιτψ οφ Αττριβυτεσ Πολψmορπηισm Αβστραχτ Χλασσεσ Τηε Ποωερ οφ Πολψmορπηισm Συmmαρψ 88 90 91 91 92 92 94 95 96 97 98 99 ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ ΣΨΣΤΕΜ ΑΡΧΗΙΤΕΧΤΥΡΕ − ΛΑΡΓΕ ΑΝD ΧΟΜΠΛΕΞ ΣΨΣΤΕΜΣ 100 Τηε ΥΜΛ Παχκαγε Dιαγραm Ελεmεντσ Ινσιδε α Παχκαγε Wηψ Παχκαγινγ? Σοmε Παχκαγινγ Ηευριστιχσ Εξπερτ Ηιγη Χοηεσιον Λοοσε Χουπλινγ Ηανδλινγ Χροσσ Παχκαγε Χοmmυνιχατιον Τηε Φαχαδε Παττερν Αρχηιτεχτυρε−Χεντριχ Dεϖελοπmεντ Εξαmπλε Ηανδλινγ Λαργε Υσε Χασεσ Τηε Χονστρυχτιον Πηασε Συmmαρψ 100 101 101 102 102 102 102 102 104 105 105 106 107 107 ΜΟDΕΛΛΙΝΓ ΣΤΑΤΕΣ 108 Εξαmπλε Στατεχηαρτ Στατε Dιαγραm Σψνταξ Συβστατεσ Εντρψ/Εξιτ Εϖεντσ Σενδ Εϖεντσ Γυαρδσ Ηιστορψ Στατεσ Οτηερ Υσεσ φορ Στατε Dιαγραmσ Συmmαρψ 108 109 110 111 111 111 112 112 113 ΤΡΑΝΣΙΤΙΟΝ ΤΟ ΧΟDΕ 114 Σψνχηρονισινγ Αρτιφαχτσ Μαππινγ Dεσιγνσ το Χοδε Dεφινινγ τηε Μετηοδσ Στεπ Στεπ Στεπ Στεπ Μαππινγ Παχκαγεσ ιντο Χοδε Ιν ϑαϖα Ιν Χ++ Τηε ΥΜΛ Χοmπονεντ Μοδελ Αδα Χοmπονεντσ Συmmαρψ 114 115 117 118 118 119 119 119 119 120 120 121 121 ΒΙΒΛΙΟΓΡΑΠΗΨ 123 ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ Χηαπτερ Αν Ιντροδυχτιον το τηε ΥΜΛ Wηατ ισ τηε ΥΜΛ? Τηε Υνιφιεδ Μοδελλινγ Λανγυαγε, ορ τηε ΥΜΛ, ισ α γραπηιχαλ mοδελλινγ λανγυαγε τηατ προϖιδεσ υσ ωιτη α σψνταξ φορ δεσχριβινγ τηε mαϕορ ελεmεντσ (χαλλεδ αρτιφαχτσ ιν τηε ΥΜΛ) οφ σοφτωαρε σψστεmσ Ιν τηισ χουρσε, ωε ωιλλ εξπλορε τηε mαιν ασπεχτσ οφ τηε ΥΜΛ, ανδ δεσχριβε ηοω τηε ΥΜΛ χαν βε αππλιεδ το σοφτωαρε δεϖελοπmεντ προϕεχτσ Τηρουγη το ιτσ χορε, ΥΜΛ λεανσ τοωαρδσ οβϕεχτ οριεντεδ σοφτωαρε δεϖελοπmεντ, σο ιν τηισ χουρσε, ωε ωιλλ αλσο εξπλορε σοmε οφ τηε ιmπορταντ πρινχιπλεσ οφ οβϕεχτ οριεντατιον Ιν τηισ σηορτ χηαπτερ, ωε’λλ λοοκ ατ τηε οριγινσ οφ τηε ΥΜΛ, ανδ ωε’λλ δισχυσσ τηε νεεδ φορ α χοmmον λανγυαγε ιν τηε σοφτωαρε ινδυστρψ Τηεν ωε ωιλλ σταρτ το λοοκ ατ ηοω το εξπλοιτ τηε ΥΜΛ ον α σοφτωαρε προϕεχτ Α Χοmmον Λανγυαγε Οτηερ ινδυστριεσ ηαϖε λανγυαγεσ ανδ νοτατιονσ, ωηιχη αρε υνδερστοοδ βψ εϖερψ mεmβερ οφ τηατ παρτιχυλαρ φιελδ Φιγυρε − Α Ματηεmατιχαλ Ιντεγραλ Αλτηουγη τηε πιχτυρε αβοϖε ισ α φαιρλψ σιmπλε δραωινγ (α στψλισεδ ∀Σ∀ φιγυρε), mατηεmατιχιανσ τηε ωορλδ οϖερ ρεχογνισε ινσταντλψ τηατ Ι αm ρεπρεσεντινγ αν ιντεγραλ Αλτηουγη τηισ νοτατιον ισ σιmπλε, ιτ mασκσ α ϖερψ δεεπ ανδ χοmπλιχατεδ τοπιχ (τηουγη περηαπσ νοτ ασ δεεπ ασ τηε χονχεπτ ρεπρεσεντεδ βψ τηε φιγυρε οφ ειγητ ον ιτσ σιδε!) Σο τηε νοτατιον ισ σιmπλε, βυτ τηε παψοφφ ισ τηατ mατηεmατιχιανσ αλλ αρουνδ τηε ωορλδ χαν χλεαρλψ ανδ υναmβιγυουσλψ χοmmυνιχατε τηειρ ιδεασ υσινγ τηισ, ανδ α σmαλλ χολλεχτιον ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ οφ οτηερ σψmβολσ Ματηεmατιχιανσ ηαϖε α χοmmον λανγυαγε Σο δο mυσιχιανσ, ελεχτρονιχ ενγινεερσ, ανδ mανψ οτηερ δισχιπλινεσ ανδ προφεσσιονσ Το δατε, Σοφτωαρε Ενγινεερινγ ηασ λαχκεδ συχη α νοτατιον Βετωεεν 1989 ανδ 1994, α περιοδ ρεφερρεδ το ασ τηε “mετηοδ ωαρσ”, mορε τηαν 50 σοφτωαρε mοδελλινγ λανγυαγεσ ωερε ιν χοmmον υσε – εαχη οφ τηεm χαρρψινγ τηειρ οων νοτατιονσ! Εαχη λανγυαγε χονταινεδ σψνταξ πεχυλιαρ το ιτσελφ, ωηιλστ ατ τηε σαmε τιmε, εαχη λανγυαγε ηαδ ελεmεντσ ωηιχη βορε στρικινγ σιmιλαριτιεσ το τηε οτηερ λανγυαγεσ Το αδδ το τηε χονφυσιον, νο ονε λανγυαγε ωασ χοmπλετε, ιν τηε σενσε τηατ ϖερψ φεω σοφτωαρε πραχτιτιονερσ φουνδ χοmπλετε σατισφαχτιον φροm α σινγλε λανγυαγε! Ιν τηε mιδ 1990’σ, τηρεε mετηοδσ εmεργεδ ασ τηε στρονγεστ Τηεσε τηρεε mετηοδσ ηαδ βεγυν το χονϖεργε, ωιτη εαχη χονταινινγ ελεmεντσ οφ τηε οτηερ τωο Εαχη mετηοδ ηαδ ιτσ οων παρτιχυλαρ στρενγτησ: • • • Βοοχη ωασ εξχελλεντ φορ δεσιγν ανδ ιmπλεmεντατιον Γραδψ Βοοχη ηαδ ωορκεδ εξτενσιϖελψ ωιτη τηε Αδα λανγυαγε, ανδ ηαδ βεεν α mαϕορ πλαψερ ιν τηε δεϖελοπmεντ οφ Οβϕεχτ Οριεντεδ τεχηνιθυεσ φορ τηε λανγυαγε Αλτηουγη τηε Βοοχη mετηοδ ωασ στρονγ, τηε νοτατιον ωασ λεσσ ωελλ ρεχειϖεδ (λοτσ οφ χλουδ σηαπεσ δοmινατεδ ηισ mοδελσ − νοτ ϖερψ πρεττψ!) ΟΜΤ (Οβϕεχτ Μοδελλινγ Τεχηνιθυε) ωασ βεστ φορ αναλψσισ ανδ δατα−ιντενσιϖε ινφορmατιον σψστεmσ ΟΟΣΕ (Οβϕεχτ Οριεντεδ Σοφτωαρε Ενγινεερινγ) φεατυρεδ α mοδελ κνοων ασ Υσε Χασεσ Υσε Χασεσ αρε α ποωερφυλ τεχηνιθυε φορ υνδερστανδινγ τηε βεηαϖιουρ οφ αν εντιρε σψστεm (αν αρεα ωηερε ΟΟ ηασ τραδιτιοναλλψ βεεν ωεακ) Ιν 1994, ϑιm Ρυmβαυγη, τηε χρεατορ οφ ΟΜΤ, στυννεδ τηε σοφτωαρε ωορλδ ωηεν ηε λεφτ Γενεραλ Ελεχτριχ ανδ ϕοινεδ Γραδψ Βοοχη ατ Ρατιοναλ Χορπ Τηε αιm οφ τηε παρτνερσηιπ ωασ το mεργε τηειρ ιδεασ ιντο α σινγλε, υνιφιεδ mετηοδ (τηε ωορκινγ τιτλε φορ τηε mετηοδ ωασ ινδεεδ τηε ∀Υνιφιεδ Μετηοδ∀) Βψ 1995, τηε χρεατορ οφ ΟΟΣΕ, Ιϖαρ ϑαχοβσον, ηαδ αλσο ϕοινεδ Ρατιοναλ, ανδ ηισ ιδεασ (παρτιχυλαρλψ τηε χονχεπτ οφ ∀Υσε Χασεσ∀) ωερε φεδ ιντο τηε νεω Υνιφιεδ Μετηοδ − νοω χαλλεδ τηε Υνιφιεδ Μοδελλινγ Λανγυαγε1 Τηε τεαm οφ Ρυmβαυγη, Βοοχη ανδ ϑαχοβσον αρε αφφεχτιονατελψ κνοων ασ τηε ∀Τηρεε Αmιγοσ∀ Dεσπιτε σοmε ινιτιαλ ωαρσ ανδ αργυmεντσ, τηε νεω mετηοδ βεγαν το φινδ φαϖουρ αmονγστ τηε σοφτωαρε ινδυστρψ, ανδ α ΥΜΛ χονσορτιυm ωασ φορmεδ Ηεαϖψωειγητ χορπορατιονσ ωερε παρτ οφ τηε χονσορτιυm, ινχλυδινγ Ηεωλεττ−Παχκαρδ, Μιχροσοφτ ανδ Οραχλε Τηε ΥΜΛ ωασ αδοπτεδ βψ τηε ΟΜΓ2 ιν 1997, ανδ σινχε τηεν τηε ΟΜΓ ηαϖε οωνεδ ανδ mαινταινεδ τηε λανγυαγε Τηερεφορε, τηε ΥΜΛ ισ εφφεχτιϖελψ α πυβλιχ, νον− προπριεταρψ λανγυαγε Οφφιχιαλλψ, τηε σπελλινγ ισ ∀mοδελινγ∀, βυτ Ι φαϖουρ τηε Ενγλιση σπελλινγ Τηε ΟΜΓ αρε τηε Οβϕεχτ Μαναγεmεντ Γρουπ, αν ινδυστρψ ωιδε, νον προφιτ mακινγ στανδαρδσ βοδψ Σεε ωωω.οmγ.οργ φορ φυλλ δεταιλσ ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ Συmmαρψ Τηε ΥΜΛ ισ α γραπηιχαλ λανγυαγε φορ χαπτυρινγ τηε αρτιφαχτσ οφ σοφτωαρε δεϖελοπmεντσ Τηε λανγυαγε προϖιδεσ υσ ωιτη τηε νοτατιονσ το προδυχε mοδελσ Τηε ΥΜΛ ισ γαινινγ αδοπτιον ασ α σινγλε, ινδυστρψ ωιδε λανγυαγε Τηε ΥΜΛ ωασ οριγιναλλψ δεσιγνεδ βψ τηε Τηρεε Αmιγοσ ατ Ρατιοναλ Χορπ Τηε λανγυαγε ισ ϖερψ ριχη, ανδ χαρριεσ ωιτη ιτ mανψ ασπεχτσ οφ Σοφτωαρε Ενγινεερινγ βεστ πραχτιχε ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ 10 ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ Χηαπτερ Τηε ΥΜΛ ωιτηιν α Dεϖελοπmεντ Προχεσσ Τηε ΥΜΛ ασ α Νοτατιον Τηε Τηρεε Αmιγοσ, ωηεν δεϖελοπινγ τηε ΥΜΛ, mαδε α ϖερψ χλεαρ δεχισιον το ρεmοϖε ανψ προχεσσ βασεδ ισσυεσ φροm τηε λανγυαγε Τηισ ωασ βεχαυσε προχεσσεσ αρε ϖερψ χοντεντιουσ − ωηατ ωορκσ φορ χοmπανψ Α mιγητ βε α δισαστερ φορ χοmπανψ Β Α δεφενχε χοmπανψ ρεθυιρεσ mυχη mορε δοχυmεντατιον, θυαλιτψ ανδ τεστινγ τηαν (σαψ) αν ε−χοmmερχε χοmπανψ Σο τηε ΥΜΛ ισ α γενεριχ, βροαδ λανγυαγε εναβλινγ τηε κεψ ασπεχτσ οφ α σοφτωαρε δεϖελοπmεντ το βε χαπτυρεδ ον ∀παπερ∀ Ιν οτηερ ωορδσ, τηε ΥΜΛ ισ σιmπλψ α λανγυαγε, α νοτατιον, α σψνταξ, ωηατεϖερ ψου ωαντ το χαλλ ιτ Χρυχιαλλψ, ιτ δοεσ νοτ τελλ ψου ηοω το δεϖελοπ σοφτωαρε Το λεαρν ηοω το υσε τηε ΥΜΛ εφφεχτιϖελψ, ηοωεϖερ, ωε ωιλλ φολλοω α σιmπλε προχεσσ ον τηισ χουρσε, ανδ τρψ το υνδερστανδ ηοω τηε ΥΜΛ ηελπσ ατ εαχη σταγε Το σταρτ ωιτη, λετ∋σ ηαϖε α λοοκ ατ σοmε χοmmον σοφτωαρε προχεσσεσ Τηε Wατερφαλλ Μοδελ Φιγυρε − Τηε τραδιτιοναλ “Wατερφαλλ” mοδελ ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ 109 ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ Wε ωιλλ λοοκ ατ τηε σψνταξ οφ τηισ διαγραm ιν δεταιλ σηορτλψ, βυτ τηε βασιχσ οφ τηε διαγραm σηουλδ βε οβϖιουσ Τηε σεθυενχε οφ εϖεντσ τηατ χαν οχχυρ το τηε τελεπηονε αρε σηοων, ανδ τηε στατεσ τηατ τηε τελεπηονε χαν βε ιν αρε αλσο σηοων Φορ εξαmπλε, φροm βεινγ ιδλε, τηε τελεπηονε χαν ειτηερ γο το βεινγ ∀Οφφ τηε Ηοοκ∀ (ιφ τηε ρεχειϖερ ισ λιφτεδ), ορ τηε τελεπηονε χαν γο το ∀Ρινγινγ∀ (ιφ α χαλλ ισ ρεχειϖεδ) Στατε Dιαγραm Σψνταξ Φιγυρε 95 − Σψνταξ οφ τηε Στατε Dιαγραm − αν Ε−Μαιλ εξαmπλε Τηε διαγραm αβοϖε σηοωσ mοστ οφ τηε στατε διαγραm σψνταξ Τηε οβϕεχτ ωιλλ ηαϖε α σταρτ στατε (τηε φιλλεδ χιρχλε), δεσχριβινγ τηε στατε οφ τηε οβϕεχτ ατ τηε ποιντ οφ χρεατιον Μοστ οβϕεχτσ ηαϖε αν ενδ στατε (τηε ∀βυλλσεψε∀), δεσχριβινγ τηε εϖεντ τηατ ηαππενσ το δεστορψ τηε οβϕεχτ Σοmε εϖεντσ χαυσε α στατε τρανσιτιον τηατ χαυσεσ τηε οβϕεχτ το ρεmαιν ιν τηε σαmε στατε Ιν τηε εξαmπλε αβοϖε, τηε ε−mαιλ χαν ρεχειϖε αν ∀εδιτ∀ εϖεντ ονλψ ιφ τηε στατυσ οφ τηε οβϕεχτ ισ ∀υνσεντ∀ Βυτ τηε εϖεντ δοεσ νοτ χαυσε α στατε χηανγε Τηισ ισ α υσεφυλ σψνταξ το ιλλυστρατε τηατ τηε ∀εδιτ∀ εϖεντ χαν νοτ ηαππεν ιν ανψ οφ τηε οτηερ στατεσ ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ 110 ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ Συβστατεσ Φιγυρε 96 − Μεσσψ Στατε Μοδελ Σοmετιmεσ, ωε ρεθυιρε α mοδελ τηατ δεσχριβεσ στατεσ ωιτηιν στατεσ Τηε αβοϖε στατεχηαρτ ισ περφεχτλψ ϖαλιδ (δεσχριβινγ α τραφφιχ λιγητ οβϕεχτ∋σ στατεσ), βυτ ιτ ισ ηαρδλψ ελεγαντ Εσσεντιαλλψ, ιτ χαν βε σωιτχηεδ οφφ ατ ανψ τιmε, ανδ ιτ ισ τηισ σετ οφ εϖεντσ τηατ ισ χαυσινγ τηε mεσσ Τηερε ισ α ∀συπερστατε∀ πρεσεντ ιν τηισ mοδελ Τηε τραφφιχ λιγητ χαν βε ειτηερ ∀Ον∀ ορ ∀Οφφ∀ Wηεν ιτ ισ ιν τηε ∀Ον∀ στατε, ιτ χαν βε ιν α σεριεσ οφ συβστατεσ οφ ∀Ρεδ∀, ∀Αmβερ∀ ορ ∀Γρεεν∀ Τηε ΥΜΛ προϖιδεσ φορ τηισ βψ αλλοωινγ ∀νεστινγ∀ οφ στατεσ: Φιγυρε 97 − Σιmπλερ στατε mοδελ υσινγ συβστατεσ Νοτε τηατ ιν τηε διαγραm αβοϖε, τηε σmαλλ αρροω ποιντινγ ιν το τηε ∀ρεδ∀ στατε ινδιχατεσ τηατ τηισ ισ τηε δεφαυλτ στατε − ον χοmmενχεmεντ οφ τηε ∀ον∀ στατε, τηε λιγητ ωιλλ βε σετ το ∀Ρεδ∀ ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ 111 ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ Εντρψ/Εξιτ Εϖεντσ Σοmετιmεσ ιτ ισ υσεφυλ το χαπτυρε ανψ αχτιονσ τηατ νεεδ το τακε πλαχε ωηεν α στατε τρανσιτιον τακεσ πλαχε Τηε φολλοωινγ νοτατιον αλλοωσ φορ τηισ: Φιγυρε 98 − Ηερε, ωε νεεδ το ισσυε α βεττινγ σλιπ ωηεν τηε στατε χηανγε οχχυρσ Φιγυρε 99 − Ηερε, τηε ρινγ τονε σταρτσ ον εντρψ το τηε στατε − τηε ρινγ τονε στοπσ ον εξιτ Σενδ Εϖεντσ Τηε αβοϖε νοτατιον ισ υσεφυλ ωηεν ψου νεεδ το χοmmεντ τηατ α παρτιχυλαρ αχτιον νεεδσ το τακε πλαχε Σλιγητλψ mορε φορmαλλψ, ωε χαν τιε τηισ αππροαχη το τηε ιδεα οφ οβϕεχτσ ανδ χολλαβορατιον Ιφ α στατε τρανσιτιον ιmπλιεσ τηατ α mεσσαγε ηασ το βε σεντ το ανοτηερ οβϕεχτ, τηεν τηε φολλοωινγ νοτατιον ισ υσεδ (αλονγσιδε τηε εντρψ ορ εξιτ βοξ): ^object.method (parameters) Φιγυρε 100 − φορmαλ νοτατιον ινδιχατινγ τηατ α mεσσαγε mυστ βε σεντ ον τηε στατε τρανσιτιον Γυαρδσ Σοmετιmεσ ωε νεεδ το ινσιστ τηατ α στατε τρανσιτιον ισ ποσσιβλε ονλψ ιφ α παρτιχυλαρ χονδιτιον ισ τρυε Τηισ ισ αχηιεϖεδ βψ πλαχινγ α χονδιτιον ιν σθυαρε βραχκετσ ασ φολλοωσ: ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ 112 ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ Φιγυρε 101 − Ηερε, τηε τρανσιτιον το τηε ∀Πλαχεδ∀ στατε χαν ονλψ οχχυρ ιφ τηε βαλανχε οφ τηε αχχουντ ισ ιν χρεδιτ Ηιστορψ Στατεσ Φιναλλψ, ρετυρνινγ το συβστατεσ βριεφλψ, ιτ ισ ποσσιβλε το νοτατε τηατ ιφ τηε συπερστατε ισ ιντερρυπτεδ ιν σοmε ωαψ, ωηεν τηε συπερστατε ισ ρεσυmεδ, τηε στατε ωιλλ βε ρεmεmβερεδ Τακε τηε φολλοωινγ εξαmπλε Α χριmιναλ ινϖεστιγατιον σταρτσ ιν τηε ∀πενδινγ∀ στατε Ονχε ιτ σωιτχηεσ το τηε ∀Βεινγ Αχτιονεδ∀ στατε, ιτ χαν βε ιν α νυmβερ οφ συβστατεσ Ηοωεϖερ, ατ ρανδοm ιντερϖαλσ, τηε χασε χαν βε αυδιτεδ Dυρινγ αν αυδιτ, τηε ινϖεστιγατιον ισ βριεφλψ συσπενδεδ Ονχε τηε αυδιτ ισ χοmπλετε, τηε ινϖεστιγατιον mυστ ρεσυmε ατ τηε στατε φροm ωηερε ιτ ωασ βεφορε τηε αυδιτ Τηε σιmπλε ∀ηιστορψ νοτατιον∀ (α ∀Η∀ ιν α χιρχλε) αλλοωσ υσ το δο τηισ, ασ φολλοωσ: Φιγυρε 102 − Ηιστορψ Στατε Οτηερ Υσεσ φορ Στατε Dιαγραmσ Αλτηουγη τηε mοστ οβϖιουσ υσε φορ τηεσε διαγραmσ ισ το τραχκ τηε στατε οφ αν οβϕεχτ, ιν φαχτ, στατεχηαρτσ χαν βε υσεδ φορ ανψ στατε−βασεδ ελεmεντ οφ τηε σψστεm Υσε Χασεσ αρε α χλεαρ χανδιδατε (φορ εξαmπλε, α υσε mιγητ ονλψ βε αβλε το προχεεδ ιφ τηε υσερ ηασ λογγεδ ον) Εϖεν τηε στατε οφ τηε εντιρε σψστεm χαν βε mοδελλεδ υσινγ τηε στατεχηαρτ − τηισ ισ χλεαρλψ α ϖαλυαβλε mοδελ φορ τηε ∀χεντραλ αρχηιτεχτυρε τεαm∀ ιν α λαργε δεϖελοπmεντ ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ 113 ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ Συmmαρψ Ιν τηισ χηαπτερ, ωε λοοκεδ ατ Στατε Τρανσιτιον Dιαγραmσ Wε σαω: • Τηε σψνταξ οφ τηε διαγραm • Ηοω το υσε Συβστατεσ • Εντρψ ανδ Εξιτ Αχτιονσ • Σενδ Εϖεντσ ανδ Γυαρδσ • Ηιστορψ Στατεσ Στατεχηαρτσ αρε θυιτε σιmπλε το προδυχε, βυτ οφτεν ρεθυιρε δεεπ τηουγητ προχεσσεσ Μοστ χοmmονλψ προδυχεδ φορ Χλασσεσ, βυτ χαν βε υσεδ φορ ανψτηινγ : Υσε Χασεσ, εντιρε Σψστεmσ, ετχ ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ 114 ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ Χηαπτερ 18 Τρανσιτιον το Χοδε Τηισ βριεφ σεχτιον δεσχριβεσ σοmε οφ τηε ισσυεσ συρρουνδινγ τηε mοϖε φροm τηε mοδελ το χοδε Φορ τηε εξαmπλεσ, ωε∋λλ υσε ϑαϖα, βυτ τηε ϑαϖα ισ ϖερψ σιmπλε ανδ χαν βε εασιλψ αππλιεδ το ανψ mοδερν Οβϕεχτ Οριεντεδ λανγυαγε Σψνχηρονισινγ Αρτιφαχτσ Ονε οφ τηε κεψ προβλεmσ οφ δεσιγν ανδ χοδινγ ισ κεεπινγ τηε mοδελ ιν λινε ωιτη τηε χοδε Σοmε προϕεχτσ ωιλλ ωαντ το τοταλλψ σεπαρατε δεσιγν φροm χοδε Ηερε, τηε δεσιγνσ αρε βυιλτ το βε ασ χοmπλετε ασ ποσσιβλε, ανδ χοδινγ ισ χονσιδερεδ α πυρελψ mεχηανιχαλ τρανσφορmατιον προχεσσ Φορ σοmε προϕεχτσ, τηε δεσιγν mοδελσ ωιλλ βε κεπτ φαιρλψ λοοσε, ωιτη σοmε δεσιγν δεχισιονσ δεφερρεδ υντιλ τηε χοδινγ σταγε Ειτηερ ωαψ, τηε χοδε ισ λικελψ το ∀δριφτ∀ αωαψ φροm τηε mοδελ το α λεσσερ ορ γρεατερ εξτεντ Ηοω δο ωε χοπε ωιτη τηισ? Ονε αππροαχη ισ το αδδ αν εξτρα σταγε το εαχη ιτερατιον − Σψνχηρονισινγ αρτιφαχτσ Ηερε, τηε mοδελσ αρε αλτερεδ το ρεφλεχτ τηε δεσιγν δεχισιονσ τηατ ωερε mαδε δυρινγ χοδινγ ιν τηε πρεϖιουσ ιτερατιον Φιγυρε 103 − Εξτρα σταγε ιν τηε ωατερφαλλ − σψνχηρονισατιον ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ 115 ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ Χλεαρλψ, τηισ ισ α φαρ φροm σιmπλε σολυτιον, ασ οφτεν, mαϕορ χηανγεσ ωιλλ ηαϖε βεεν mαδε Ηοωεϖερ, ιτ ισ ωορκαβλε ασ λονγ ασ τηε ιτερατιονσ αρε σηορτ ανδ τηε χοmπλεξιτψ οφ εαχη ονε ισ mαναγεαβλε Wελλ, τηατ∋σ ωηατ ωε∋ϖε βεεν αιmινγ φορ αλλ αλονγ!! Σοmε ΧΑΣΕ τοολσ αλλοω ∀ρεϖερσε ενγινεερινγ∀ − τηατ ισ, τηε γενερατιον οφ α mοδελ φροm χοδε Τηισ χουλδ βε α ηελπ ωιτη σψνχηρονισινγ − ατ τηε ενδ οφ ιτερατιον 1, ρεγενερατε τηε mοδελ φροm τηε χοδε, ανδ τηεν ωορκ φροm τηισ νεω mοδελ φορ ιτερατιον (ανδ ρεπεατ τηε προχεσσ) Ηαϖινγ σαιδ τηατ, τηε τεχηνολογψ οφ ρεϖερσε ενγινεερινγ ισ φαρ φροm αδϖανχεδ, σο τηισ mαψ νοτ συιτ αλλ προϕεχτσ! Μαππινγ Dεσιγνσ το Χοδε Ψουρ χοδε∋σ χλασσ δεφινιτιονσ ωιλλ βε δεριϖεδ φροm τηε Dεσιγν Χλασσ Dιαγραm Τηε mετηοδ δεφινιτιονσ ωιλλ χοmε λαργελψ φροm τηε Χολλαβορατιον Dιαγραmσ, βυτ εξτρα ηελπ ωιλλ χοmε φροm τηε Υσε Χασε δεσχριπτιονσ (φορ τηε εξτρα δεταιλ, παρτιχυλαρλψ ον εξχεπτιον/αλτερνατε φλοωσ) ανδ τηε Στατε Χηαρτσ (αγαιν, φορ τραππινγ ερρορ χονδιτιονσ) Ηερε∋σ αν εξαmπλε χλασσ, ανδ ωηατ τηε χοδε mιγητ λοοκ λικε: Φιγυρε 104 − Τηε Ορδερ Λινε χλασσ, ωιτη α χουπλε οφ εξαmπλε mεmβερσ Τηε ρεσυλτινγ χοδε ωουλδ ενδ υπ λοοκινγ σοmετηινγ λικε τηισ (φολλοωινγ α mεχηανιχαλ χονϖερσιον προχεσσ): public class OrderLine { public OrderLine(int qty, SKU product) { // constructor } public double subtotal() { // method definition } private int quantity; } Φιγυρε 105 − Σαmπλε Ορδερ Λινε Χοδε Νοτε τηατ ιν τηε χοδε αβοϖε, Ι ηαϖε αδδεδ α χονστρυχτορ Wε οmιττεδ τηε χρεατε() mετηοδσ φροm τηε Χλασσ Dιαγραm (ασ ιτ σεεmσ το βε α χονϖεντιον τηεσε δαψσ), σο τηισ νεεδεδ το βε αδδεδ ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ 116 ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ Φιγυρε 106 − Τηε αγγρεγατιον οφ Ορδερ Λινεσ ανδ ΣΚΥ∋σ Αν ορδερ λινε χονταινσ α ρεφερενχε το α σινγλε ΣΚΥ, σο ωε αλσο νεεδ το αδδ τηισ το τηε χλασσ χοδε: public class OrderLine { public OrderLine(int qty, SKU product); public float subtotal(); private int quantity; private SKU SKUOrdered; } Φιγυρε 107 − Αδδινγ τηε ρεφερενχε αττριβυτε (mετηοδ βλοχκσ οmιττεδ φορ χλαριτψ) Wηατ ιφ α χλασσ νεεδσ το ηολδ α λιστ οφ ρεφερενχεσ το ανοτηερ χλασσ? Α γοοδ εξαmπλε ισ τηε ρελατιονσηιπ βετωεεν Πυρχηασε Ορδερσ ανδ Πυρχηασε Ορδερ Λινεσ Α Πυρχηασε Ορδερ ∀οωνσ∀ α λιστ οφ λινεσ, ασ ιν τηε φολλοωινγ ΥΜΛ: ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ 117 ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ Φιγυρε 108 − Α Πυρχηασε Ορδερ ηολδσ α λιστ οφ Ορδερ Λινεσ Τηε αχτυαλ ιmπλεmεντατιον οφ τηισ δεπενδσ υπον τηε σπεχιφιχ ρεθυιρεmεντ (φορ εξαmπλε, σηουλδ τηε λιστ βε ορδερεδ, ισ περφορmανχε αν ισσυε, ετχ), βυτ ασσυmινγ ωε νεεδ α σιmπλε αρραψ, τηε φολλοωινγ χοδε ωιλλ συφφιχε: public class PurchaseOrder { public float total(); private date datePlaced; private int customerID; private Vector OrderLineList; } Φιγυρε 109 − Αδδινγ α λιστ οφ ρεφερενχεσ Ινιτιαλισινγ τηε λιστ ωουλδ βε τηε ϕοβ οφ τηε χονστρυχτορ Φορ νον ϑαϖα ανδ Χ++ χοδερσ, α ςεχτορ ισ σιmπλψ αν αρραψ τηατ χαν βε δψναmιχαλλψ ρεσιζεδ Dεπενδινγ ον τηε ρεθυιρεmεντ, α βογ στανδαρδ αρραψ ωουλδ ηαϖε ωορκεδ τοο Dεφινινγ τηε Μετηοδσ Τηε χολλαβορατιον διαγραm ισ α λαργε ινπυτ ιντο τηε mετηοδ δεφινιτιονσ Τηε φολλοωινγ ωορκεδ εξαmπλε δεσχριβεσ τηε ∀γετ τοταλ∀ mετηοδ φορ τηε Πυρχηασε Ορδερ Τηισ mετηοδ ρετυρνσ τηε τοταλ χοστ οφ αλλ οφ τηε λινεσ ιν τηε ορδερ: ã2001 Αριαδνε Τραινινγ Λιmιτεδ ωωω.αριαδνετραινινγ.χο.υκ 118 ΥΜΛ Αππλιεδ − Οβϕεχτ Οριεντεδ Αναλψσισ ανδ Dεσιγν υσινγ τηε ΥΜΛ Φιγυρε 110 − ∀Γετ τοταλ∀ χολλαβορατιον Στεπ Χλεαρλψ, ωε ηαϖε α mετηοδ χαλλεδ ∀γετΤοταλ()∀ ιν τηε πυρηχασε ορδερ χλασσ: public double getTotal() { } Φιγυρε 111 − mετηοδ δεφινιτιον ιν τηε Πυρχηασε Ορδερ Χλασσ Στεπ Τηε χολλαβορατιον σαψσ τηατ τηε πυρχηασε ορδερ χλασσ νοω πολλσ τηρουγη εαχη λινε: public double getTotal() { double total; for (int x=0; x