HMMY Τεχνολογία Λογισμικού Διδάσκων Κώστας Κοντογιάννης Αναπλ
Προδιαγραφή Δυναμικού Μοντέλου Συμπεριφοράς Συστήματος Λογισμικού Προδιαγραφή Δυναμικού Μοντέλου Συμπεριφοράς Συστήματος Λογισμικού Όπως έχουμε αναφέρει, Δυναμικό Μοντέλο Συμπεριφοράς (Dynamic Model) παρουσιάζει και περιγράφει τη συμπεριφορά του συστήματος. Η συμπεριφορά του συστήματος ορίζεται σχετικά με: Μοντελοποίηση γενικών δυναμικών χαρακτηριστικών του συστήματος όσον αφορά την ανταλλαγή μηνυμάτων ανάμεσα σε υποσυστήματα, υπομονάδες (components/ψηφίδες), και κλάσεις ή αντικείμενα. Ένα σύστημα αποτελείται από πολλά υποσυστήματα, υπομονάδες και κλάσεις που ορίζουν μια ιεραρχική δομή. Χρησιμοποιούμε ακολουθιακά διαγράμματα, και επικοινωνιακά διαγράμματα Μοντελοποίηση των βημάτων και της λογικής ροής τους για την εκτέλεσης μιας διαδικασίας (process). Ένα σύστημα αποτελείται από πολλές διαδικασίες (λειτουργίες). Οι διαδικασίες μπορούν να ορισθούν και σε ιεραρχική βάση Χρησιμοποιούμε διαγράμματα δραστηριότητας Μοντελοποίηση λεπτομερών δυναμικών χαρακτηριστικών του συστήματος όσον αφορά τις καταστάσεις (states) της κάθε κλάσης σε σχέση με τα μηνύματα που λαμβάνει και στέλνει
Μοντελοποίηση με τη γλώσσα UML Μοντελοποίηση Απαιτήσεων Σενάρια, Διαγράμματα Χρήσης (Scenaria, Use Case Diagrams) Μοντελοποίηση στατικής δομής του συστήματος Διαγράμματα Κλάσεων (Class Diagrams) Διαγράμματα Αντικειμένων (Object Diagrams) Ψηφιδικά Διαγράμματα (Component Diagrams) Παραταξιακά Διαγράμματα (Deployment Diagrams) Μοντελοποίηση δυναμικών χαρακτηριστικών του συστήματος Ακολουθιακά Διαγράμματα (Sequence Diagrams) Συνεργατικά Διαγράμματα (Collaboration Diagrams – Communication Diagrams στη UML 2.0) Μοντελοποίηση της συμπεριφοράς συγκεκριμένων αντικειμένων Διαγράμματα Κατάστασης (State Diagrams) Μοντελοποίηση των βημάτων εκτέλεσης μιας διαδικασίας Διαγράμματα Δραστηριότητας (Activity Diagrams) Περιγραφή λειτουργίας από τη σκοπιά του χρήστη Στατική Δομή Συμπεριφορά
Κατηγοριοποίηση Διαγραμμάτων UML Χρησιμοποιήθηκαν για τη μοντελοποίηση απαιτήσεων
Χρήση των Διαγραμμάτων Δραστηριότητας Τα διαγράμματα δραστηριότητας (activity diagrams) είναι χρήσιμα τη μοντελοποίηση βημάτων διαδικασιών σε εφαρμογές όπου αυτές οι διαδικασίες βασίζονται σε ανταλλαγή δεδομένων ή εμπεριέχουν πολύπλοκη λογική ροή
Βήματα στα Διαγράμματα Δραστηριότητας Action Απλή Δραστηριότητα Subactivity Σύνθετη δραστηριότητα Τα διαγράμματα δραστηριότητας μοιάζουν με τις μηχανές κατάστασης με τη διαφορά ότι: Οι μεταβολές κατάστασης συμβαίνουν όταν ένα βήμα τελειώνει και όχι με βάση κάποιο μήνυμα (signal) Μπορούν να μοντελοποιήσουν παράλληλα βήματα σε κάποια διαδικασία
Απλή Δραστηριότητα (State) Απλή δραστηριότητα Send message Απλή δραστηριότητα με έκφραση Index := lookup(e) + 7; * Απλές παράλληλες δραστηριότητες Send message Ένας κόμβος απλής δραστηριότητας ορίζει ένα βήμα σε μια διαδικασία Ένας κόμβος απλής δραστηριότητας δεν μπορεί να αρχίσει μια νέα σύνθετη διαδικασία
Σύνθετη Δραστηριότητα Subactivity Subactivity * Ένας κόμβος σύνθετης δραστηριότητας αρχίζει από μόνη της μια νέα διαδικασία Χρησιμοποιείται για την ιεραρχική δόμηση των διαγραμμάτων
Παράδειγμα aPOEmployee.sortMail Deliver Mail Deliver Mail POEmployee Check Out Truck Put Mail In Boxes Deliver Mail No standard notation yet for the name of an action, to indicate what kind of object and operation are being invoked. No standard notation for connecting an action state to the object it invokes an operation on. Likewise for the decomposition of a subactivity state into another state machine. The action state is polymorphic, the subactivity state is not.
Παράδειγμα Διαγράμματος Δραστηριότητας σε Επίπεδο Μεθόδων aPOEmployee.sortMail POEmployee.deliverMail POEmployee sortMail() deliverMail() «realize» Check Out Truck Put Mail In Boxes PO Employee Deliver Mail Method
Αντικείμενα (Δεδομένα) Όνομα:Κλάση [Κατάσταση] Αυτοί ο κόμβοι στα διαγράμματα δραστηριότητας περιγράφουν δεδομένα τα οποία μπορεί να παράγονται ή να χρησιμοποιούνται από απλές ή σύνθετες δραστηριότητες και που μπορούν να είναι σε κάποια συγκεκριμένη κατάσταση Αυτοί οι κόμβοι δεν μπορούν να καλέσουν διαδικασίες
Παράδειγμα με Χρήση Αντικειμένου :Order [Taken] Take Order Fill Order Παρατηρήστε τη χρήση διακεκομμένων γραμμών όταν έχουμε κόμβους με αντικείμενα
Παράδειγμα aPOEmployee.sortMail Deliver Mail Deliver Mail POEmployee Check Out Truck Put Mail In Boxes Deliver Mail No standard notation yet for the name of an action, to indicate what kind of object and operation are being invoked. No standard notation for connecting an action state to the object it invokes an operation on. Likewise for the decomposition of a subactivity state into another state machine. The action state is polymorphic, the subactivity state is not.
Αρχικοί και Τελικοί Κόμβοι Αρχικός Κόμβος Τελικός Κόμβος Διακλάδωση και Ένωση
Σημεία Αποφάσεων Οι ακμές των διαγραμμάτων δραστηριότητας μπορούν να περιέχουν σημεία αποφάσεων. Η σημειολογία για τα σημεία αποφάσεων δίνεται με το σύμβολο Calculate Cost Charge Account Get Authorization [cost < $50] [cost >= $50] Use merge instead of dummy state before join.
Παράλληλες Διαδικασίες – Σημεία Συγχρονισμού Τα σημεία συγχρονισμού ορίζουν σημεία διεπαφής παράλληλων ροών. Build Frame Put On Roof Install Walls {and} Synch state keep track at runtime of the difference in the number of times an incoming trigger has been traversed compared to an outgoing transition. It is Petri-like in this respect. This number can be bounded. An asterisk means no bound. In workflow systems these are called parallel synchronized or chained processes. Install Foundation Inspect * * Install Electricity in Foundation Install Electricity In Frame {and} Install Electricity Outside
Παράλληλες Διαδικασίες – Σημεία Συγχρονισμού (Εναλλακτικό) Build Frame Install Foundation Electricity in Foundation Put On Roof In Frame Outside Walls Inspect {and} {and} {and}
Σημεία Συγχρονισμού Κόμβοι αντικειμένων σαν σημεία συγχρονισμού
Ομαδοποίηση Management Support Engineering Register Bug Evaluate Impact Fix Revise Plan Release Test {priority = 1} Management Support Engineering
Κόμβοι Σημάτων Παραγωγή σήματος Είσοδος σήματος Wake Up Get Cups Turn on Coffee Pot Signal Παραγωγή σήματος Coffee Pot Είσοδος σήματος Coffee Done Drink Coffee Signal receipt is a natural way to model a wait state. Dashed line notation is specifically for use with the signal icons. Can you rotate icons when flow drawn horizontally? Signal Χρησιμοποιούνται για να δηλώσουν ότι ένα βήμα χρειάζεται συγκεκριμένα δεδομένα
Παράδειγμα Διαγράμματος Δραστηριότητας Request Return Get Return Number Ship Item Item [returned] Receive Restock Credit Account [available] Customer Telesales Warehouse Accounting Diagram assumes that: 1) Receive Item and the OFS Item can be traversed in parallel. Same for Credit Account and Item OFS. 2) Restock item will not start until its Item input has arrived. 3) State machine can terminate with hanging Item OFS. These are natural assumptions for an object flow language, but UML is state machine based.
Customer Telesales Warehouse Accounting Request Return Get Return Number Ship Item Item [returned] Receive Restock Credit Account [available] Customer Telesales Warehouse Accounting
Παράδειγμα Διαγράμματος Δραστηριότητας http://www.agilemodeling.com/artifacts/activityDiagram.htm
Μηχανές Κατάστασης (Αυτόματα) Ένα σύνολο από σήματα εισόδου (input alphabet) Ένα σύνολο από σήματα εξόδου (output alphabet) Ένα σύνολο από καταστάσεις (states) Ένα σύνολο από πιθανές δράσεις Ένα σύνολο από μεταβολές (Κατάσταση x Σήμα Κατάσταση x Δράση Αρχική κατάσταση Ένα σύνολο τελικών καταστάσεων
Παράδειγμα Μηχανής Κατάστασης off on Lamp On Lamp Off
Αποτελέσματα και Δράσεις Καθώς η μηχανή αλλάζει κατάσταση μπορεί να παράγει και συγκεκριμένα αποτελέσματα και να καλεί συγκεκριμένες δράσεις: on off Lamp On Lamp Off on/print(”on”) Αυτόματο Mealy on off Lamp On print(”on”) Lamp Off Αυτόματο Moore
Διευρυμένη Μηχανή Κατάστασης Χρήση μεταβλητών off on Lamp On Lamp Off on/ctr := ctr + 1 ctr : Integer
Συνθήκες – Φρουροί (Guards) Οι μεταβολές από κατάσταση σε κατάσταση ενεργοποιούνται με συγκεκριμένες συνθήκες που δεν έχουν παράπλευρες συνέπειες) Selling Unhappy Happy bid [(value >= 100) & (value < 200)] /sell bid [value >= 200] /sell bid [value < 100] /reject
Ιεραρχικές Μηχανές Κατάστασης Καταστάσεις είναι και αυτές μηχανές off/ LampOff entry/lamp.off() LampOn entry/lamp.on() on/ LampFlashing flash/ 1sec/ FlashOff entry/lamp.off() FlashOn entry/lamp.on() on/
Σιωπηλά Γεγονότα Εάν κάποια γεγονότα δεν συμβάλουν για τη μεταβολή κάποιας κατάστασης τότε μπορούν να αναβληθούν ή να αποσιωπηθούν Deferred event LampOff entry/lamp.off() off/defer off/ on/ LampOn entry/lamp.on()
Διαγράμματα Κατάστασης Περιγράφουν την συμπεριφορά (καταστάσεις) που μπορεί να βρίσκεται ένα αντικείμενο σε σχέση με τα μηνύματα (signals) και γεγονότα (events) που λαμβάνει/παρατηρεί Περιγράφουν τις καταστάσεις που ορίζουν μια διαδικασία (process) ή ένα μοντέλο εργασίας (business model)
Παράδειγμα Διαγράμματος Κατάστασης (Γενικό) http://www.agilemodeling.com/artifacts/stateMachineDiagram.htm
Παράδειγμα Διαγράμματος Κατάστασης (Λεπτομερές) http://www.agilemodeling.com/artifacts/stateMachineDiagram.htm