Τεχνολογία Λογιςμικού Έκτη Διάλεξη Πολυπλοκότητα Λογιςμικού Προςεγγίςεισ Ανάλυςησ και Σχεδίαςησ
Περιεχόμενα Πολυπλοκότθτα Λογιςμικοφ Αποςφνκεςθ Αφαίρεςθ Μοντελοποίθςθ Προςεγγίςεισ Ανάλυςθσ και χεδίαςθσ Δεδομενολειτουργικι Προςζγγιςθ Αντικειμενοςτρεφισ Προςζγγιςθ Βαςικζσ Ζννοιεσ Αντικειμενοςτρεφοφσ Προςζγγιςθσ
Πολυπλοκότητα Λογιςμικού (1/2) Σρόποι διαχείριςθσ: Αποςφνκεςθ: για τθν καλφτερθ κατανόθςθ του προβλιματοσ, γίνεται αποςφνκεςθ του προβλιματοσ ςε υποπροβλιματα, θ «πολυπλοκότθτα» των οποίων επιτρζπει τθν επιμζρουσ επίλυςι τουσ. Η ςφνκεςθ των επιμζρουσ λφςεων οδθγεί ςτθν επίλυςθ του αρχικοφ προβλιματοσ Αφαίρεςθ: όταν θ περιγραφι και θ διαχείριςθ του προβλιματοσ είναι πολφ λεπτομερισ, επιχειρείται θ επικζντρωςθ τθσ προςοχισ ςτισ λεπτομζρειεσ που κρίνονται ςθμαντικζσ για τθ δεδομζνθ χρονικι ςτιγμι, αγνοώντασ προσ ςτιγμιν τισ υπόλοιπεσ. ΠΡΟΟΧΗ: θ διαδικαςία τθσ αφαίρεςθσ δε κα πρζπει να αλλοιώνει τθ φφςθ του προβλιματοσ
Πολυπλοκότητα Λογιςμικού (2/2) Σρόποι διαχείριςθσ (ςυνζχεια ) Μοντελοποίθςθ: αξιοποιεί τθν ζννοια τθσ αφαίρεςθσ και χρθςιμοποιείται ευρφτατα ςε πολλοφσ επιςτθμονικοφσ κλάδουσ. Είναι πολφ χριςιμθ ςε ςυςτιματα που παρουςιάηουν μεγάλθ πολυπλοκότθτα, κακώσ είναι τεχνικά πολφ δφςκολο, οικονομικά επικίνδυνο και πρακτικά διακινδυνευμζνο να επιχειρθκεί θ ανάπτυξθ τουσ χωρίσ καμία αφαιρετικι αποτφπωςθ. Η μοντελοποίθςθ μπορεί να εφαρμοςτεί κακ όλθ τθ διαδικαςία ανάπτυξθσ του ςυςτιματοσ ι ςε μζροσ αυτισ Δεν είναι ςυμφζρων να χρθςιμοποιθκεί θ μοντελοποίθςθσ όταν ςυντρζχουν όλοι ι ζςτω ζνασ από τουσ ακόλουκουσ λόγουσ: Όλεσ οι πτυχζσ του προβλιματοσ είναι πλιρωσ κατανοθτζσ Η επίλυςθ του προβλιματοσ δεν παρουςιάηει ιδιαίτερεσ δυςκολίεσ Ο αρικμόσ των εμπλεκομζνων ςτθν ανάλυςθ και ςτθν υλοποίθςθ του ςυςτιματοσ είναι περιοριςμζνοσ Σο ςφςτθμα δε χρειάηεται ςυντιρθςθ Σο ςφςτθμα δεν προβλζπει ςθμαντικζσ αλλαγζσ κατά τθ διάρκεια χριςθσ του
Προςεγγίςεισ Ανάλυςησ και Σχεδίαςησ Οι τεχνολογικζσ εξελίξεισ επθρεάηουν ςθμαντικά τθν ανάπτυξθ του κλάδου τθσ Σεχνολογίασ Λογιςμικοφ Ιςτορικά διακρίνονται δφο προςεγγίςεισ: Δεδομενολειτουργικι προςζγγιςθ (data-function oriented) Λειτουργικι προςζγγιςθ Δεδομενοκεντρικι προςζγγιςθ Αντικειμενοςτρεφι προςζγγιςθ (object oriented)
Δεδομενολειτουργική Προςέγγιςη Είναι θ πιο χρθςιμοποιθμζνθ προςζγγιςθ ςε βάκοσ χρόνου Θεωρεί ότι: Κάκε ςφςτθμα αποτελείται από δεδομζνα και λειτουργίεσ Δεδομζνα: το πακθτικό μζροσ του ςυςτιματοσ με βαςικι λειτουργία θ αποκικευςθ τθσ πλθροφορίασ Λειτουργίεσ: το ενεργό μζροσ του ςυςτιματοσ, διακζτουν ςυμπεριφορά και τροποποιοφν τα δεδομζνα Σα δεδομζνα διακινοφνται μζςω των λειτουργιών με ςκοπό να παραχκεί το επικυμθτό αποτζλεςμα Διαχωρίηεται ςε: Λειτουργικι προςζγγιςθ Δεδομενοκεντρικι προςζγγιςθ
Λειτουργική Προςέγγιςη Εςτιάηει: τισ λειτουργίεσ του ςυςτιματοσ Θζτει 3 βαςικά ερωτιματα: Ποιεσ λειτουργίεσ κα παρζχει το ςφςτθμα; Ποια δεδομζνα κα χρθςιμοποιοφν οι λειτουργίεσ; Ζχει νόθμα θ διάςπαςθ των λειτουργιών ςε μικρότερεσ λειτουργίεσ; Κάκε ςφνκετθ λειτουργία αποςυντίκεται Η διαδικαςία τθσ αποςφνκεςθσ είναι από πάνω προσ τα κάτω (top-down) Η ανάπτυξθ του ςυςτιματοσ επικεντρώνεται ςε κάκε υπολειτουργία ξεχωριςτά Χρθςιμοποιεί: Διαγράμματα ροισ ςτθν ανάλυςθ των απαιτιςεων Δομθμζνο ςχζδιο ςτθ ςχεδίαςθ
Δεδομενοκεντρική Προςέγγιςη Εςτιάηει: τα δεδομζνα, το οποία αποκθκεφονται ςυνικωσ ςε βάςεισ δεδομζνων Αναγνωρίηει: Η δομι των δεδομζνων είναι το ςθμαντικότερο ςτοιχείο τθσ ςχεδίαςθσ του ςυςτιματοσ Θζτει τα ερωτιματα: Ποια δεδομζνα διαχειρίηεται το ςφςτθμα; Ποιεσ είναι οι ςχζςεισ μεταξφ των δεδομζνων; Πωσ επθρεάηουν οι λειτουργίεσ τα δεδομζνα; Οι λειτουργίεσ εξακολουκοφν να εξετάηονται, αλλά περιςςότερο ωσ προσ τθν επίδραςθ που ζχουν ςτα δεδομζνα και λιγότερο ωσ προσ τι δεδομζνα ανταλλάςςουν Χρθςιμοποιεί: Μοντζλα ςχζςεων οντοτιτων
Αντικειμενοςτρεφήσ Προςέγγιςη (1/2) Η πιο πρόςφατθ προςζγγιςθ Θεωρεί: Σο ςφςτθμα αποτελείται από ζνα ςφνολο αντικειμζνων που αλλθλεπιδροφν και ςυνεργάηονται μεταξφ τουσ με ςτόχο τθν ικανοποίθςθ των αναγκών του χριςτθ ενοποιεί τισ λειτουργίεσ και τα δεδομζνα ςε μια νζα αυτόνομθ οντότθτα (αντικείμενο) οι οντότθτεσ διαχειρίηονται τόςο τισ λειτουργίεσ όςο και τα δεδομζνα Θζτει τα ερωτιματα: Ποια τα αντικείμενα του ςυςτιματοσ; Ποια είναι τα δεδομζνα που αφοροφν ζνα αντικείμενο; Ποιεσ λειτουργίεσ προςφζρει ζνα αντικείμενο; Πωσ ςυνεργάηονται τα αντικείμενα μεταξφ τουσ για τθν ολοκλιρωςθ των λειτουργιών;
Αντικειμενοςτρεφήσ Προςέγγιςη (2/2) Πλεονεκτιματα: Καλφτερθ αποτφπωςθ των δομικών ςτοιχείων του ςυςτιματοσ, θ οποία προςεγγίηει καλφτερα το χώρο εννοιών του προβλιματοσ Ενοποιεί τα δφο βαςικά ςτοιχεία του λογιςμικοφ (λειτουργίεσ δεδομζνα) ςε ζνα κοινό μθχανιςμό διαχείριςθσ Χρθςιμοποιεί κοινζσ ζννοιεσ μοντελοποίθςθσ και ςτθν ανάλυςθ αλλά και ςτθ ςχεδίαςθ Διευκολφνει τθν εφαρμογι τθσ αφαίρεςθσ και τθσ επαναχρθςιμοποίθςθσ Δθμιουργεί λογιςμικά που είναι εφκολα ςτθ ςυντιρθςθ και ςτισ αλλαγζσ
Βαςικέσ Έννοιεσ Αντικειμενοςτρεφούσ Προςέγγιςησ (1/7) Αντικείμενο Ενκυλάκωςθ Κλάςθ και ςτιγμιότυπο Κλθρονομικότθτα Πολυμορφιςμόσ
Βαςικέσ Έννοιεσ Αντικειμενοςτρεφούσ Προςέγγιςησ (2/7) Αντικείμενο: Αποτελεί μια αυτόνομθ και ανεξάρτθτθ οντότθτα Χαρακτθρίηεται από τθν τριάδα: Σαυτότθτα: αποτελεί το χαρακτθριςτικό που το διακρίνει από όλα τα άλλα Κατάςταςθ: φνολο δεδομζνων που αφοροφν ςτο αντικείμενο και αποτυπώνουν τισ ιδιότθτζσ του. Η κατάςταςθ του αντικειμζνου μπορεί να μεταβάλλεται χωρίσ να μεταβάλλεται θ ταυτότθτά του υμπεριφορά: Ο τρόποσ με τον οποίο το αντικείμενο επικοινωνεί με τα υπόλοιπα αντικείμενα του ςυςτιματοσ και αντιδρά ςτισ αλλαγζσ τθσ κατάςταςισ του. Η ςυμπεριφορά υλοποιείται μζςω των πράξεων του. Επιδρά και διαμορφώνει τθν κατάςταςθ του αντικειμζνου
Βαςικέσ Έννοιεσ Αντικειμενοςτρεφούσ Προςέγγιςησ (3/7) Έχουμε ζνα γενικό αντικείμενο Έχουμε τον τραγουδιστή με το όνομα «Δημητρίου» Σαυτότθτα Δθμθτρίου Κατάςταςθ υμπεριφορά Ημερ_Γζννθςθσ = 12/04/1958 Φφλο = Άνδρασ Αρικ_τθλεφώνου = 2105555555 Κ.τ.λ. Ηλικία Σραγοφδα Χόρευε Κ.τ.λ.
Βαςικέσ Έννοιεσ Αντικειμενοςτρεφούσ Προςέγγιςησ (4/7) Ενκυλάκωςθ: Η ςυγκζντρωςθ, ομαδοποίθςθ δεδομζνων και πράξεων ςε ζνα νοθτό πακζτο «κρφβονται» οι εςωτερικζσ λεπτομζρειεσ τθσ υλοποίθςθσ Για κάκε αντικείμενο ο εξωτερικόσ κόςμοσ γνωρίηει μόνο τθν ταυτότθτα και το όνομα οριςμζνων πράξεων. Σισ πλθροφορίεσ για το ςφνολο των χαρακτθριςτικών κάκε αντικειμζνου, τθν κατάςταςι του, τθ γνωρίηει μόνο το ίδιο το αντικείμενο Κατά τθ μοντελοποίθςθ του ςυςτιματοσ μασ ενδιαφζρει μόνο ποια αντικείμενα ζχει το ςφςτθμά μασ και τι πράξεισ κζλουμε να εκτελοφν ςε αυτι τθ φάςθ δε μασ ενδιαφζρει δθλαδι πωσ υλοποιοφνται οι πράξεισ αλλά μόνο θ διεπαφι του αντικειμζνου
Βαςικέσ Έννοιεσ Αντικειμενοςτρεφούσ Προςέγγιςησ (5/7) Κλάςθ και ςτιγμιότυπο: Αντικείμενα με κοινά χαρακτθριςτικά (κατάςταςθ με τθν ίδια δομι πλθροφορίασ και κοινζσ πράξεισ) κεωροφμε ότι ανικουν ςε μια κλάςθ Κάκε αντικείμενο μιασ κλάςθσ ονομάηεται ςτιγμιότυπο Για κάκε ςτιγμιότυπο μιασ κλάςθσ, οι τιμζσ των μεταβλθτών των πλθροφοριών που αφοροφν ςτθν κατάςταςθ και οι πράξεισ είναι διαφορετικζσ και αναφζρονται ςτο ςυγκεκριμζνο αντικείμενο
Βαςικέσ Έννοιεσ Αντικειμενοςτρεφούσ Προςέγγιςησ (6/7) Κλθρονομικότθτα: Κατά τθν καταςκευι του μοντζλου, μπορεί να διαπιςτωκεί ότι οριςμζνεσ κλάςεισ ζχουν κοινά χαρακτθριςτικά και πράξεισ θ κλθρονομικότθτα παρζχει τθ δυνατότθτα εξειδίκευςθσ μιασ υπάρχουςασ κλάςθσ Μια κλάςθ Β θ οποία κλθρονομεί (ι επεκτείνει) μια κλάςθ Α, ζχει τισ ίδιεσ ιδιότθτεσ και τισ ίδιεσ ςυμπεριφορζσ με τθν κλάςθ Α, ενώ μπορεί κάλλιςτα να δθλώςει επιπλζον χαρακτθριςτικά ι πράξεισ Η κλάςθ Α ςε μια τζτοια ςχζςθ καλείται βαςικι ι γονικι κλάςθ, πρόγονοσ ι υπερκλάςθ Η κλάςθ Β καλείται παράγωγθ, κλάςθ παιδί, απόγονοσ ι υποκλάςθ
Βαςικέσ Έννοιεσ Αντικειμενοςτρεφούσ Προςέγγιςησ (7/7) Πολυμορφιςμόσ: Αποτελεί ςυμπλθρωματικό μθχανιςμό τθσ κλθρονομικότθτασ Οι υποκλάςεισ υιοκετοφν τισ πράξεισ τθσ υπερκλάςθσ και επιπλζον πράξεισ ι διαφοροποιιςεισ των ιδθ υπαρχόντων Εάν ζνα αντικείμενο ςτείλει ζνα μινυμα/ερζκιςμα ςε ζνα άλλο αντικείμενο αποδζκτθ, το αντικείμενο - αποδζκτθσ κα ανταποκρικεί ςτο ερζκιςμα βάςει τθσ περιγραφισ τθσ πράξθσ που το ικανοποιεί που διακζτει Επομζνωσ, το όνομα μιασ πράξθσ μπορεί να υλοποιθκεί με διαφορετικοφσ τρόπουσ από διαφορετικζσ κλάςεισ/υποκλάςεισ
Βιβλιογραφία Γιακουμάκθσ, Ε. & Διαμαντίδθσ, Ν. (2009). Τεχνολογία λογισμικού, Εκδόςεισ ταμοφλθ, Ακινα Sommerville, I. (2008). Βασικές Αρχές Τεχνολογίας Λογισμικού, Κλειδάρικμοσ, Ακινα Βεςκοφκθσ, Β. (2000). Τεχνολογία Λογισμικού Ι, Ελλθνικό Ανοικτό Πανεπιςτιμιο, Πάτρα