Εθνικό Μετσόβιο Πολυτεχνείο Σχολή ΗMMY Εισαγωγή στη γλώσσα µοντελοποίησης UML Ανδρέας Παπασαλούρος andpapas@softlab.ntua.gr Περίγραµµα Γενικά Τύποι διαγραµµάτων οµικά στοιχεία Ειδικά θέµατα Βιβλιογραφία Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 2 Τι είναι µοντέλο UML: χαρακτηριστικά Αποτελεί µια αφηρηµένη περιγραφή ενός φυσικού συστήµατος Αποτελεί ένα σχέδιο για την κατασκευή ενός συστήµατος Βοηθάει στην κατανόηση ενός µεγάλου µεγέθους συστήµατος Βοηθάει στην επικοινωνία των µελών της κοινότητας που αναπτύσσει το σύστηµα είναι µια οπτική (visual) γλώσσα µοντελοποίησης. Έχει εκφραστικές δυνατότητες για την: Απεικόνιση (visualization) Προδιαγραφή (specification) Τεκµηρίωση (documentation) Κατασκευή (construction) των προϊόντων της αναπτυξιακής διαδικασίας συστηµάτων (λογισµικού ή όχι) Αντικειµενοστρεφής Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 3 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 4 UML: Χαρακτηριστικά (2) Προήλθε από την ενοποίηση των συµβολισµών που χρησιµοποιούσαν οι µεθοδολογίες Booch, OMT, OOSE κ.λπ. Ενσωµατώνει τις ιδέες καλής πρακτικής από τη βιοµηχανία Λογισµικού Είναι σήµερα βιοµηχανικό πρότυπο και αναπτύχθηκε στο πλαίσιο του οργανισµού OMG. Υλοποιεί την ανάγκη της βιοµηχανίας λογισµικού για µια ενιαία γλώσσα µοντελοποίησης Είδη συστηµάτων που µοντελοποιούνται µε τη UML Συστήµατα µε έµφαση στο λογισµικό (software-intensive systems) Επιχειρησιακά συστήµατα (business systems) Συστήµατα που δεν περιέχουν λογισµικό (non-software systems) Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 5 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 6 1
UML και µεθοδολογίες ανάπτυξης Τα δοµικά συστατικά της UML ιαφορετικές µεθοδολογίες ανάπτυξης είναι δυνατόν να υιοθετηθούν υιοθετώντας τη UML ως γλώσσα µοντελοποίησης (π.χ. USDP, RUP, κλπ) Κάθε µεθοδολογία προτείνει τα δικά της µοντέλα Στο πλαίσιο του µαθήµατος χρησιµοποιείται η µεθοδολογία είναι η YASM ιαγράµµατα Στοιχεία Σχέσεις Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 7 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 8 οµικά ιαγράµµατα ιάγραµµα Περιπτώσεων Χρήσης Κλάσεων (Class Diagram) Στατικά στοιχεία µοντελοποίησης, και τις σχέσεις µεταξύ τους Αντικειµένων (Component) Ένα σύνολο αντικειµένων και οι συσχετίσεις τους σε µια συγκεκριµένη χρονική στιγµή Ψηφιδικό (Component) Η οργάνωση και τις εξαρτήσεις των µελών ενός συνόλου συνθετηµάτων Παραταξιακό (Deployment) Η τοπολογία των υπολογιστικών κόµβων ενός συστήµατος και η κατανοµή των συνθετηµάτων µεταξύ τους Designer Creates Graph Edits Graph Prints Graph Reviewer Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 9 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 10 ιάγραµµα κλάσεων: Κλάσεις-συσχετίσεις ιάγραµµα κλάσεων: Σχέση Γενίκευσης Χαρακτηριστικά GraphicsElement selected : boolean Κλάση Link theta : double Link() setpolygon() setlinestyle() contains() select() deselect() getfirstend() getsecondend() gettheta() +link 0..n Ρόλοι connects Συσχέτιση Πολλαπλότητα ρόλων Node width : int = 0 height : int = 0 Node() handlerpressed() +nodes setsize() 2 getposition() getcenter() getnodeelement() getwidth() getheight() getvirtualheight() Λειτουργίες Σχέση Γενίκευσης Link theta : double Link() setpolygon() setlinestyle() contains() select() deselect() getfirstend() getsecondend() gettheta() updateposition() select() deselect() isselected() Node width : int = 0 height : int = 0 Node() handlerpressed() setsize() getposition() getcenter() getnodeelement() getwidth() getheight() getvirtualheight() Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 11 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 12 2
ιάγραµµα Κλάσεων: Ενσωµάτωση ιάγραµµα Κλάσεων: ιαπροσωπείες DefaultGraphModel ιαπροσωπεία NodeElement LinkElement DefaultGraphModel nodes : java::util::vector links : java::util::vector Σχέσεις Ενσωµάτωσης DefaultGraphModel() insertnode() deletenode() deletelink() getnodes() getlinks() insertlink() GraphModel Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 13 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 14 ιάγγραµµα Κλάσεων: Πακέτα ιάγραµµα Αντικειµένων model : Link controllers Αντικείµενο : Node ui Πολλαπλά στιγµιότυπα Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 15 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 16 ιάγραµµα Συνθετηµάτων Παραταξιακό ιάγραµµα Link.java GraphComponent.java PC Printer Node.java Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 17 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 18 3
Συµπεριφορικά διαγράµµατα ιάγραµµα Καταστάσεων (1) Περιπτώσεων Χρήσης (Use Case) Η λειτουργικότητα του συστήµατος, όπως φαίνεται από εξωτερικούς «Συνεργάτες» (Actors). Αλληλουχίας (Sequence) Μια αλληλεπίδραση αντικειµένων µε έµφαση στην χρονική σειρά ανταλλαγής µηνυµάτων Συνεργασίας (Collaboration) Μια αλληλεπίδραση αντικειµένων µε έµφαση στη δοµική τους οργάνωση Κατάστασης (Statechart) Οι καταστάσεις του κύκλου ζωής των αντικειµένων ραστηριότητας (Activity) Ο έλεγχος ροής σε ένα σύνολο δραστηριοτήτων State1 event[condition ]/action State2 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 19 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 20 ιάγραµµα Καταστάσεων (2) ιάγραµµα Αλληλουχίας SELECT Mo use U p mousepressed[ mouseonnode ] ^selectnode(point) mousedragged / repaintnode : Designer : Frame : DefaultGraphModel : NodeElement setmode( mode )[ mode=node ] mousereleased MouseDownOnSelected setmode( mode )[ mode=link ] 1: newnode() 2: insertnode() 3: setname() MouseUp NODE mousepressed( MouseEvent ) ^model.insertnode MouseDown LINK MouseUp 4: addnode() mousepressed[ not mouseonnode ] mousepressed[ mouseonnode ] / selectnode(point) mousereleased( MouseEvent ) mousedragged / redrawline mousereleased[ not MouseOnNode ] LinkGeneration mousereleased[ mouseonnode ] ^model.insertlink(node1, node2) Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 21 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 22 ιάγραµµα Συνεργασίας ιάγραµµα ραστηριότητας 1: newnode() : Frame Designer Reviewer : Designer 2: insertnode() Create Diagram Review Diagram 3: setname() : DefaultGraphModel : NodeElement 4: addnode() Revise Diagram Finalize [ not OK ] [ OK ] Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 23 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 24 4
οµικά στοιχεία (1) οµικά στοιχεία (2) Κλάση (Class) Ένα σύνολο αντικειµένων που έχουν την ίδια δοµή και συµπεριφορά. ιαπροσωπεία (Interface) Ένα σύνολο από λειτουργίες που ορίζουν την εξωτερική συµπεριφορά ενός αντικειµένου Συνεργασία (Collaboration) Η περιγραφή µιας διάδρασης µεταξύ ενός συνόλου αντικειµένων Περίπτωση χρήσης (Use Case) Μια λειτουργία που επιτελεί ένα σύστηµα και είναι διαθέσιµη στο χρήστη Ενεργή κλάση (active class) Μια κλάση που περιγράφει µια διεργασία ή ένα νήµα εκτέλεσης Ψηφίδα (component) Ένα φυσικό και επαναχρησιµοποιήσιµο µέρος ενός συστήµατος που συνήθως υλοποιεί κάποιες διαπροσωπείες (interfaces) Κόµβος (Node) Ένας υπολογιστικός πόρος που έχει κάποια µνήµη και υπολογιστική ικανότητα. Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 25 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 26 Συµπεριφορικά στοιχεία Οµαδοποιητικά στοιχεία Κατάσταση (State) Μια συνθήκη ή περίπτωση στο χρόνο ζωής ενός αντικειµένου, όπου ικανοποιεί κάποιες συνθήκες, εκτελεί κάποια δραστηριότητα ή αναµένει κάποιο γεγονός Μετάβαση (Transition) Μια σχέση µεταξύ δύο καταστάσεων ενός αντικειµένου που υποδηλώνει αλλαγή στην κατάσταση του αντικειµένου µε την εµφάνιση ενός γεγονότος ραστηριότητα (Activity) Μια εκτέλεση λειτουργίας κατά τη διάρκεια ζωής ενός αντικείµενου Πακέτο (Package) Ένα δοµικό στοιχείο γενικής χρήσης για την οργάνωση άλλων δοµικών στοιχείων, διαγραµµάτων ή και άλλων πακέτων της UML σε οµάδες. Υποσύστηµα (Subsystem) Μια µονάδα στην ιεραρχική αποσύνθεση ενός µεγάλου συστήµατος. Επικοινωνεί µε το περιβάλλον του µέσω διαπροσωπειών Μοντέλο (Model) Μια όψη ενός συστήµατος Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 27 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 28 Επεξηγηµατικά στοιχεία Σχέσεις Σηµείωση (note) Ένα δοµικό στοιχείο κειµενικού σχολιασµού για την περιγραφή ή επεξήγηση ενός άλλου δοµικού στοιχείου ή µιας οµάδας δοµικών στοιχείων. Συσχέτιση (Association) Μια δοµική σχέση που περιγράφει ένα σύνολο συνδέσεων µεταξύ αντικειµένων Εξάρτηση (Dependency) Μια σχέση µεταξύ δυο δοµικών στοιχείων, όπου µια αλλαγή στο πρώτο επιδρά στο δεύτερο Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 29 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 30 5
Σχέσεις Μηχανισµοί επέκτασης Γενίκευση (Generalization) Μια σχέση µεταξύ ενός δοµικού στοιχείου (πατέρας) και ενός δεύτερου (παιδί) που εξειδικεύει το πρώτο Πραγµατοποίηση (Realization) Μια σχέση µεταξύ δυο δοµικών στοιχείων, όπου το πρώτο προδιαγράφει µια συµπεριφορά, και το δεύτερο την υλοποιεί Στερεότυπα (stereotypes) επεκτείνουν το λεξιλόγιο της UML ορίζοντας καινούρια δοµικά στοιχεία, βασισµένα σε ήδη υπάρχοντα <<subsystem>> Ετικέτες τιµών (tagged values) επεκτείνουν τις ιδιότητες των δοµικών στοιχείων,προσθέτοντας πληροφορία στις προδιαγραφές τους {Version=1.2} Περιορισµοί (constraints) επεκτείνουν τη σηµασιολογία των δοµικών στοιχείων της UML, ορίζοντας νέους κανόνες ή τροποποιώντας τους ήδη υπάρχοντες. {this.salary<boss.salary} Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 31 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 32 Object Constraint Language H Object Constraint Language (OCL) είναι µια τυπική γλώσσα για την έκφραση περιορισµών σε διαγράµµατα UML Οι εκφράσεις OCL (που ορίζουν περιορισµούς) είναι τριών ειδών Αναλλοίωτες συνθήκες (invariant conditions) Προαπαιτούµενες συνθήκες (pre-conditions) Αποτελέσµατα (post-conditions) context Company inv: self.numberofemployees > 50 context Person::birthdayHappens() post: age = age@pre + 1 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 33 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 34 Επέκταση της UML Σχετικές τεχνολογίες και πρότυπα Χρήση των µηχανισµών επέκτασης UML Profiles (πχ. Corba profile, EDOC, Testing, κλπ) Η αρχιτεκτονική τεσσάρων επιπέδων της γλώσσας: Meta-MetaModel M3 (π.χ.mof) MetaModel M2 (π.χ. UML) User Model M1 (π.χ. Μοντέλο του συστήµατος ABC) Instance M0 (π.χ. Στιγµιότυπα των στοιχείων του µοντέλου του ABC συστήµατος) XML Metadata Interchange (XMI) Meta Object Facility (MOF) Model Driven Architecture (MDA) Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 35 Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 36 6
Βιβλιογραφία Σύνδεσµοι στο Web G. Booch, J. Rumbaugh and I. Jacobson, The UML User Guide, Addison-Wesley, 1999. J. Rumbaugh, I. Jacobson and G. Booch, The UML Reference Manual, Addison-Wesley, 1999. H. Eriksson and M. Penker, UML Toolkit, John Wiley & Sons, 1998. G. Schneider and J. Winters, Applying Use Cases, Addison- Wesley, 1999. M. Fowler and, K. Scott, UML Distilled Applying the Standard Object Modeling Language, Addison-Wesley, 1997. John Cheesman and John Daniels, UML Components: A Simple Process for Specifying Component-Based Software, Addison- Wesley, 2000. Sinan Si Alhir, UML in a nutshell a desktop quick reference, O Reilly, 1998. Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 37 Object Management Group http://www.omg.org/uml Rational Software Corp. http://www.rational.com/uml Οκτ. 2004 Εργαστήριο Τεχνολογίας Λογισµικού 38 7