Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Τεχνολογία Λογισμικού 3/12/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr
Physical Diagrams Διαγράμματα Υλοποίησης
Διαγράμματα UML Διάγραμμα περιπτώσεων χρήσης (use case diagram) Διάγραμμα κλάσεων (class diagram) Διάγραμμα αντικειμένων (object diagram) Διάγραμμα καταστάσεων (state diagram) Διάγραμμα δραστηριοτήτων (activity diagram) Διαγράμματα αλληλεπίδρασης (interaction diagrams) Διάγραμμα ακολουθίας (sequence diagram) Διάγραμμα επικοινωνίας (communication diagram) Διαγράμματα υλοποίησης (physical diagrams) Διάγραμμα συστατικών (component diagram) Διάγραμμα ανάπτυξης (deployment diagram)
Άξονες Μοντελοποίησης Λειτουργικότητα functionality Τι κάνει το σύστημα; Ποιες λειτουργίες υποστηρίζει; Ανάλυση απαιτήσεων Περιγραφές από κείμενο Στατικά διαγράμματα Πώς είναι οργανωμένα τα συστατικά του τμήματα; Δυναμική συμπεριφορά Πώς ανταποκρίνεται και από ποιες καταστάσεις περνάει; Δομή structure Συμπεριφορά behaviour
Κατηγοριοποίηση Διαγραμμάτων UML 2.0
Μέχρι τώρα λογική αρχιτεκτονική... Μελετά κυρίως τη λειτουργικότητα του συστήματος και πώς αυτή αναπτύσσεται Περιέχει τη λογική της εφαρμογής κι όχι τη φυσική διανομή αυτής της λογικής σε διαφορετικές διεργασίες, προγράμματα ή υπολογιστές Τα διαγράμματα της UML που χρησιμοποιούνται για τον προσδιορισμό της λογικής αρχιτεκτονικής είναι τα: διαγράμματα περπτώσεων χρήσης διαγράμματα κλάσης διαγράμματα κατάστασης διαγράμματα δραστηριοτήτων διαγράμματα ακολουθίας και διαγράμματα επικοινωνίας
Βασικές ερωτήσεις Οι υπολογιστικές πλατφόρμες αποτελούνται από υλικό, λογισμικό και δικτύωση Ποια πλατφόρμα είναι πιο κατάλληλη για αυτό το πληροφοριακό σύστημα? Πώς να επιλέξουμε το υλικό (hardware)? Πώς να επιλέξουμε το λογισμικό (software)? Πώς να επιλέξουμε τη δικτύωση (networking)? Πώς να εκφράσουμε τη φυσική αρχιτεκτονική του συστήματος με μια στάνταρτ διαγραμματική μορφή?
Φυσική αρχιτεκτονική Ασχολείται με τη λεπτομερή περιγραφή του συστήματος από άποψη υλικού καί λογισμικού. Περιγράφει: Τη δομή του υλικού (hardware), περιλαμβάνοντας διάφορους κόμβους και πώς αυτοί συνδέονται μεταξύ τους Τη φυσική δομή καί τις εξαρτήσεις του κώδικα που υλοποιεί τις έννοιες που ορίστηκαν στη λογική αρχιτεκτονική Την κατανομή του run-time λογισμικού σε διεργασίες, προγράμματα κι άλλα προϊόντα λογισμικού
Φυσική αρχιτεκτονική Η φυσική αρχιτεκτονική περιγράφει τα συστατικά του υλικού καί του λογισμικού Υπάρχει αντιστοίχιση από τη λογική αρχιτεκτονική στη φυσική αρχιτεκτονική, όπου οι κλάσεις κλπ. αντιστοιχούνται σε συστατικά, processes καί υπολογιστές Έτσι μπορούμε από ένα τμήμα της λογικής αρχιτεκτονικής να μεταβούμε στο αντίστοιχο τμήμα της φυσικής αρχιτεκτονικής και αντίστροφα
Φυσική αρχιτεκτονική Απαντά σε ερωτήματα όπως: σε ποια προγράμματα ή processes βρίσκονται οι κλάσεις καί τα αντικείμενα? σε ποιους υπολογιστές εκτελούνται τα προγράμματα καί οι διαδικασίες? ποιοι υπολογιστές καί τί άλλα περιφερειακά βρίσκονται στο σύστημα καί πώς συνδέονται μεταξύ τους? ποιες είναι οι εξαρτήσεις ανάμεσα σε διαφορετικά αρχεία κώδικα? Αν αλλάξει ένα αρχείο, ποια άλλα αρχεία πρέπει να επαναμεταγλωττιστούν (recompiled)?
Φυσικά Διαγράμματα Η φυσική αρχιτεκτονική μοντελοποιείται με τα Φυσικά Διαγράμματα: Διάγραμμα Συστατικών/Συνιστωσών (Component Diagram) Aναπαριστά σε υψηλό επίπεδο τη δομή του κώδικα. Συστατικό είναι μία φυσική μονάδα υλοποίησης κώδικα (source code and binary code). Επιπλέον αναπαριστώνται οι αλληλοσυνδέσεις μεταξύ συστατικών, συμπεριλαμβανομένου συστατικών κώδικα, συστατικών δυαδικού κώδικα και εκτελέσιμων συστατικών Διάγραμμα Ανάπτυξης (Deployment Diagram) Αναπαριστά τη φυσική/run-time αρχιτεκτονική του υλικού (hardware) και του λογισμικού σε ένα σύστημα. Αναπαριστώνται οι μηχανές και οι υπολογιστές (nodes) που χρησιμοποιούνται από το σύστημα καθώς και οι συνδέσεις τους. Κόμβοι είναι τα φυσικά αντικείμενα που στη γενική περίπτωση έχουν τουλάχιστον μνήμη και δυνατότητα επεξεργασίας.
Υλικό Οι έννοιες του υλικού που χρησιμοποιούνται στη φυσική αρχιτεκτονική είναι οι εξής: Επεξεργαστές: Σε αυτήν την κατηγορία περιλαμβάνονται οι υπολογιστές που εκτελούν το πρόγραμμα (μικροεπεξεργαστές ή ακόμα και υπερυπολογιστές). Περιφερειακές Συσκευές: Υποστηρίζουν το σύστημα (π.χ. εκτυπωτές, δρομολογητές, αναγνώστες καρτών) και είναι συνδεδεμένες σε έναν επεξεργαστή που τις ελέγχει Συνδέσεις: Οι επεξεργαστές συνδέονται με άλλους επεξεργαστές και με περιφερειακές συσκευές. Μια σύνδεση ανάμεσα σε δύο κόμβους περιγράφεται τόσο από το φυσικό μέσο (π.χ. οπτική ίνα), όσο κι από το πρωτόκολλο λογισμικού (π.χ. TCP/IP)
Διάγραμμα Συστατικών Τα διαγράμματα συστατικών περιέχουν συστατικά και εξαρτήσεις: τα συστατικά αναπαριστούν το φυσικό πακετάρισμα μια ομάδας κώδικα οι εξαρτήσεις είναι οι σχέσεις μεταξύ των συστατικών και δείχνουν πώς οι αλλαγές που πραγματοποιούνται σε ένα συστατικό μπορούν να επηρεάσουν τα άλλα συστατικά. Οι εξαρτήσεις αναπαρίστανται με μία διακεκομμένη γραμμή μεταξύ δύο ή περισσοτέρων συστατικών Τα διαγράμματα συστατικών λογισμικού αναπαριστούν επίσης τα συστήματα διεπαφής (interfaces) που χρησιμοποιούνται από τα συστατικά για να επικοινωνήσουν μεταξύ τους
Φυσική άποψη Διαγράμματα συστατικών Τα διαγράμματα συστατικών (component diagrams) αναπαριστούν το φυσικό διαχωρισμό του συστήματος Ένα συστατικό είναι μία φυσική μονάδα υλοποίησης κώδικα (πηγαίο αρχείο, αρχείο επικεφαλίδων, εκτελέσιμο αρχείο, μια βιβλιοθήκη.dll) κ.ο.κ. Το διάγραμμα συστατικών απεικονίζει το δίκτυο των εξαρτήσεων μεταξύ των συστατικών ΣυστατικόΒ Διασύνδεση Β ΣυστατικόΒ ΣυστατικόΑ ΣυστατικόΑ ΣυστατικόC Διασύνδεση C ΣυστατικόC
Διάγραμμα Συστατικών Η κυριότερη διαφορά των διαγραμμάτων συστατικών με τα υπόλοιπα διαγράμματα UML είναι ότι τα διαγράμματα αυτά αναπαριστούν την όψη υλοποίησης (deployment view) του συστήματος. Τα συστατικά : είναι επαναχρησιμοποιήσιμα και μπορούν να αντικατασταθούν πρέπει να παρέχουν μια διεπαφή για να επιτρέπουν σε άλλα συστατικά να αλληλεπιδρούν με αυτά και να χρησιμοποιούν τις υπηρεσίες τους αποτελούνται ή υλοποιούνται από Artifacts τα οποία μπορεί να είναι εκτελέσιμα, βιβλιοθήκες εφαρμογών, συστατικά αρχείων που αναπαριστούν τον πηγαίο κώδικα μιας εφαρμογής
Βασικά στοιχεία Διαγραμμάτων Συστατικών Διεπαφή (interface): συλλογή από λειτουργίες που χρησιμοποιούνται για να καθορίσουν τη λειτουργία μιας κλάσης ή ενός συστατικού. Η σχέση μεταξύ ενός συστατικού (component) και μιας διεπαφής (interface) είναι πολύ σημαντική. Μεταξύ μιας διεπαφής και ενός συστατικού υπάρχουν 2 είδη σχέσεων Μια διεπαφή μπορεί να παρέχεται από ένα συστατικό ώστε τα άλλα συστατικά να επικοινωνούν μαζί του Μια διεπαφή μπορεί να απαιτείται από ένα συστατικό για να επικοινωνήσει με ένα άλλο συστατικό
Συστατικά Αναπαριστά ένα modular, αντικαταστήσιμο τμήμα του συστήματος Σημαντικά τα καλά ορισμένα interfaces: Το απαιτούμενο interface προσδιορίζει τυπικά ποια λειτουργικότητα αναμένει το συσταικό από το περιβάλλον του Το παρεχόμενο interface προσδιορίζει τη λειτουργικότητα που μπορεί να παρέχει το συστατικό (στα άλλα συστατικά) Ιδανικά, τα interfaces συλλαμβάνουν την απαιτούμενη και την παρεχόμενη λειτουργικότητα σε τόσο λεπτομερή τρόπο έτσι ώστε να επιτρέπεται ελεύθερα η ανταλλαγή δύο συστατικών που ακολουθούν τα ίδια interfaces. Συνεπώς, εύκολη η αντικατάσταση ενός (παλιότερου) συστατικού με ένα άλλο (νεώτερο) χωρίς καμία αλλαγή στο υπόλοιπο του συστήματος
Συμβολισμοί
Συμβολισμοί Tα δύο interfaces συνήθως δείχνονται με το συμβολισμό lollipop-socket / ball-socket : Το παρεχόμενο (provided) interface συμβολίζεται με ένα κύκλο ( lollipop ) και το απαιτούμενο (required) interface με ένα ημικύκλιο ( socket ). Provided interface Required interface
Εσωτερική δομή συστατικών Τα συστατικά μπορούν να κτιστούν από άλλα συστατικά και κλάσεις. Τα περιεχόμενα τμήματα είναι μονάδες στην υλοποίηση συστατικών.
Διάγραμμα Συστατικών Scheduler Reservations Planner Update GUI
Διάγραμμα Συστατικών
Διάγραμμα συστατικών κατά τη διάρκεια compile-time
Διάγραμμα συστατικών κατά τη διάρκεια run-time
Δείχνει τους υπολογιστές και τις συσκευές (κόμβους) καθώς και τον τύπο των συνδέσεων. Εκτελέσιμα αντικείμενα φανερώνουν ποιες μονάδες λογισμικού εκτελούνται σε κάθε κόμβο Διάγραμμα Ανάπτυξης Client A: Compaq Pro PC Application Server: Silicon Graphics «Decnet» Database SERVER: VAX Client B: Compaq Pro PC
Διάγραμμα Ανάπτυξης
Φυσική άποψη Διαγράμματα ανάπτυξης Τα διαγράμματα ανάπτυξης (deployment diagrams) αναπαριστούν την αντιστοίχιση του λογισμικού σε επεξεργαστικές μονάδες κόμβους. Μπορούν να χρησιμοποιηθούν για να δείξουν ποια συστατικά τρέχουν σε ποιους κόμβους Ένας κόμβους (node) είναι ένα φυσικό αντικείμενο που στη γενική περίπτωση έχει τουλάχιστον μνήμη και δυνατότητα επεξεργασίας FlightServer download_nightly Backup Web Server Ethernet Database Server TCP/IP DBMS software Client RS-232 Internet Browser Printer
Διάγραμμα ανάπτυξης Ένα διάγραμμα ανάπτυξης δείχνει Τη φυσική υλοποίηση του λογισμικού (artifacts) Ποια τμήματα του software τρέχουν σε ποια τμήματα του hardware (nodes) Πώς μπορούν να επικοινωνούν οι κόμβοι
Διάγραμμα ανάπτυξης
Παράδειγμα
Παράδειγμα
Κόμβοι περιλαμβάνουν υπολογιστές με επεξεργαστές καθώς κι άλλες συσκευές όπως εκτυπωτές, αναγνώστες καρτών, συσκευές επικοινωνίας. Τύπος κόμβου : περιγράφει τα χαρακτηριστικά του επεξεργαστή ή του τύπου της συσκευής. Στιγμιότυπο κόμβου : περιγράφει ένα συγκεκριμένο μηχάνημα αυτού του τύπου.παίζει το ρόλο του αντικειμένου και είναι πάντα υπογραμμισμένο. Τύπος κόμβου Στιγμιότυπο κόμβου Dell Pentium 466 MMX Bill s Machine: Dell Pentium 466 MMX
Διάγραμμα ανάπτυξης AdminServer:HostMachine :Scheduler «database» meetingsdb reservations Joe smachine:pc :Planner
Διάγραμμα ανάπτυξης Node1 «cluster» x y «database» w z «become» Node2 «cluster» x y
Είδη artifacts Η UML2.0 έχει 4 pre-defined τύπους artifacts (αλλά και άλλοι τύποι μπορούν πολύ εύκολα να οριστούν μέσω των μηχανισμών επέκτασης της UML, όπως τα stereotypes) executable μπορεί να εκτελεστεί σε ένα κόμβο library σταική ή δυναμική βιβλιοθήκη αντικειμένων file έγγραφο που περιέχει source code ή δεδομένα document documentation, configuration,
Διάγραμμα ανάπτυξης
Συνδιάζοντας τα δύο φυσικά διαγράμματα Τοποθέτηση του διαγράμματος συστατικών πάνω από το διάγραμμα ανάπτυξης Ποια συστατικά τρέχουν σε ποιους κόμβους? Ενημερώτητα του συστήματος για τα συστατικά Λεπτομέρειες της επικοινωνίας component Interface
Συνδιάζοντας τα δύο φυσικά διαγράμματα
Διάγραμμα ανάπτυξης χωρίς το software
Διάγραμμα ανάπτυξης με το software
Συνδιάζοντας τα δύο φυσικά διαγράμματα
Λιγότερο τυπικός τρόπος αναπαράστασης διαγραμμάτων ανάπτυξης
Πηγές Ε. Κιουντούζης, Μεθοδολογίες Ανάλυσης και Σχεδιασμού Πληροφοριακών Συστημάτων,Εκδόσεις Α.Σταμούλη, Αθήνα 2002 Γιάννης Τζίτζικας. Ανάλυση και Σχεδίαση Πληροφοριακών Συστημάτων, Πανεπιστήμιο Κρήτης Shari Lawrence Pfleeger. Τεχνολογία Λογισμικού: Θεωρία και Πράξη, τόμος 1, Κλειδάριθμος, Αθήνα, 2003 Leszek A. Maciaszek, Requirements Analysis and System Design (2nd edition), Addison Wesley, 2005 A.Dennis, B. Haley Wixom, D. Tegarden, Systems Analysis and Design with UML Version 2.0 (2nd edition) Wiley, 2005 Booch G., Rumbaugh J., Jacobson I. Unified Modeling Language User Guide. Addison- Wesley Professional 2 Edition, ISBN 0321267974. Pascal Roques, UML in Practice, John Wiley, 2004 UML Fundamentals & OOAD UML 2.0, www.acm.org Αφροδίτη Τσαλγατίδου. Εισαγωγή στη UML, Καποδιστριακό Πανεπιστήμιο Αθηνών Αντικειμενοστρεφής Ανάπτυξη Λογισμικού με τη UML, επιμέλεια Π. Φιτσιλής, Κλειδάριθμος 2006 Ιωάννης Γαβιώτης. Πληροφοριακά Συστήματα Μοντελοποίηση με UML, Πανεπιστήμιο Αιγαίου http://www.ibm.com/developerworks/rational/library/content/rationaledge