Διαδικασία ανάπτυξης Προσδιορισμός απαιτήσεων Αρχιτεκτονικός Σχεδιασμός Λεπτομερής Σχεδιασμός Κωδικοποίηση Έλεγχος Παράδοση Συστήματος Λειτουργία - Συντήρηση.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Βασικές έννοιες αλγορίθμων
Advertisements

Τι είναι ο προγραμματισμός
1. Εισαγωγή Ορισμοί:  VOD  NVOD  Live Streaming.
Επιμέλεια: Τίκβα Χριστίνα
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
Αρχιτεκτονικός Σχεδιασμός
7.5.2 Αντικειμενοστραφής προγραμματισμός
Διαχείριση Έργου Οργάνωση, σχεδιασμός και προγραμματισμός έργων ανάπτυξης λογισμικού.
ΤΡΟΠΟΣ ΑΝΑΠΤΥΞΗΣ ΤΗΣ ΙΔΕΑΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ  Εκπαιδευτικό Κεφάλαιο 2.2 Ορισμός των στόχων στην πράξη.
H διαδικασία ανάπτυξης λογισμικού. Tι θα γνωρίσουμε •Τις φάσεις ανάπτυξης του λογισμικού. •Γιατί χρειάζεται να γίνει ανάλυση του προβλήματος. •Τι θα πρέπει.
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
 Αυδίκου Χριστίνα  Γιουμούκης Παναγιώτης  Κιντσάκης Θάνος  Πάπιστας Γιάννης.
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΗ
Εισαγωγικές Έννοιες Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Η ποιότητα της πληροφορίας στο εκπαιδευτικό υλικό που χρησιμοποιείται ή διανέμεται μέσω του Internet Χρήστος Σαβρανίδης Πανεπιστήμιο Ιωαννίνων Τμήμα ΦΠΨ.
Υπηρεσίες δικτύων επικοινωνίας
Διαδικασία ανάπτυξης Προσδιορισμός απαιτήσεων
ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ Παράγραφος 1.7. ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ Είσαι εκεί; Εδώ είμαι Είσαι έτοιμος να λάβεις ένα μήνυμα; Είμαι έτοιμος Πάρε το πρώτο.
ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ
ΛΟΓΙΣΜΙΚΟ Πρόγραμμα Είναι μία ακολουθία από εντολές, σε λογική σειρά, με σκοπό να κατευθύνουν τον Η.Υ. στην εκτέλεση των επιθυμητών εργασιών. ΛΟΓΙΣΜΙΚΟ.
ΕΙΣΑΓΩΓΗ ΜΑΘΗΜΑ 1.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Σχεδίαση αλγορίθμων (2ο μέρος)
Κεφάλαιο 3 ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
Κεφ.1 Εισαγωγη στην εννοια του Αλγοριθμου και στον Προγραμματισμο
Τεχνολογία ΛογισμικούSlide 1 Σχεδιασμός Λογισμικού u Ανάπτυξη λύσης που ικανοποιεί τις απαιτήσεις λογισμικού.
Μοντέλα Συστημάτων Παρουσιάσεις των συστημάτων των οποίων οι απαιτήσεις αναλύονται.
ΕΝΟΤΗΤΑ 01 ΣΚΟΠΟΣ ΤΟΥ ΤΕΧΝΙΚΟΥ ΣΧΕΔΙΟΥ – ΟΡΓΑΝΑ ΣΧΕΔΙΑΣΗΣ
Ανάπτυξη Πρωτοτύπου Λογισμικού
HMMY Τεχνολογία Λογισμικού Διδάσκων Κώστας Κοντογιάννης Αναπλ. Καθηγητής, Ε.Μ.Π.
Κεφάλαιο 6: Εισαγωγή στον προγραμματισμό Φυσικές και τεχνητές γλώσσες.
31 Μαρτίου 2015 ΔΙΑΦΑΝΕΙΑ 1 ΤΥΠΙΚΕΣ ΜΕΘΟΔΟΙ ΑΝΑΛΥΣΗΣ ΣΥΣΤΗΜΑΤΩΝ ΤΜ. ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. – ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ ΚΑΤΗΓΟΡΗΜΑΤΙΚΟΣ ΛΟΓΙΣΜΟΣ Ι Για τον προτασιακό.
1.5 Γλώσσες Προγραμματισμού
Κατανόηση (δεδομένα – ζητούμενα) Ανάλυση σε απλούστερα προβλήματα Επίλυση με οργανωμένα, απολύτως καθορισμένα, πεπερασμένα βήματα ΑΛΓΟΡΙΘΜΟΣ.
Διδακτική της Πληροφορικής ΗΥ302 Εργασία :Παρουσίαση σχολικού βιβλίου Γ’ Λυκείου Τεχνολογικής Κατεύθυνσης «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον»
ΛΑΔΑΚΑΚΟΣ ΘΑΛΗΣ Α.Μ ΔΙΑΧΕΙΡΗΣΗ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
Διαδικασία ανάπτυξης Προσδιορισμός απαιτήσεων Αρχιτεκτονικός Σχεδιασμός Λεπτομερής Σχεδιασμός Κωδικοποίηση Έλεγχος Παράδοση Συστήματος Λειτουργία - Συντήρηση.
Computers: Information Technology in Perspective By Long and Long Copyright 2002 Prentice Hall, Inc. Προγραμματισμός Η / Υ 6 η Διάλεξη.
Ανάλυση Συστημάτων ( site) Υπευθ. Καθηγ.: Τσαλγατίδου Αφροδίτη.
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ. ΥΠΟΛΟΓΙΣΤΗΣ Μηχανή που μπορεί να φέρει σε πέρας πνευματικές εργασίες ρουτίνας με μεγάλη ταχύτητα.
Κεφάλαιο 10 – Υποπρογράμματα
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Προγραμματισμός Γιατι γραφουμε προγραμματα (προηγ. διαλεξη)
Διοίκηση Αθλητικών Εγκαταστάσεων Σχεδιασμός & Κατασκευή Αθλητικής Εγκατάστασης Διοίκηση Αθλητικών Εγκαταστάσεων.
Διαδικασία ανάπτυξης Προσδιορισμός απαιτήσεων Αρχιτεκτονικός Σχεδιασμός Λεπτομερής Σχεδιασμός Κωδικοποίηση Έλεγχος Παράδοση Συστήματος Λειτουργία - Συντήρηση.
Τεχνολογία ΛογισμικούSlide 1 Τεχνολογία Απαιτήσεων u Καθορίζει τι θέλει ο πελάτης από ένα σύστημα λογισμικού.
Κεφάλαιο 1ο Ανάλυση προβλήματος.
Εισαγωγή στην Έννοια του Αλγορίθμου και στον Προγραμματισμό
ΕΝΟΤΗΤΑ 2 – Κεφάλαιο 5: Γνωριμία με το Λογισμικό
Μέρος 1 Εισαγωγή στα Πληροφοριακά Συστήματα. 22/9/20162 Περιεχόμενα  Βασικές έννοιες Πληροφοριακών Συστημάτων  Απαιτήσεις των σύγχρονων επιχειρήσεων.
ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Site: ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ.
Επίλυση Προβλημάτων με Αναζήτηση
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Εισαγωγή στις βάσεις δεδομένων ISBN
Ανάλυση και σχεδιασμόσ πληροφοριακών συστημάτων
ΠΟΛΙΤΙΚΕΣ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ ΑΣΦΑΛΕΙΑΣ
ΣΥΣΤΗΜΑ ΠΟΙΟΤΗΤΑΣ ΛΟΓΙΣΜΙΚΟΥ (QUALITY SYSTEM)
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ
ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
ΚΕΦΑΛΑΙΟ 1 Ανάλυση προβλήματος.
ΦΑΣΕΙΣ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΟΣ – ΑΝΑΠΤΥΞΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ
Πληροφοριακό σύστημα Πληροφοριακό Σύστημα μιας επιχείρησης/οργανισμού είναι ένα σύστημα που αποτελείται από ανθρώπους, διαδικασίες και εξοπλισμό (Υλικό,
Στοιχεία Δομημένου Προγραμματισμού
Σύγχρονες μεθοδολογίες ανάπτυξης και διαχείρισης Πληροφοριακών Συστημάτων 2ο Κεφάλαιο.
ΤΕΙ Ηρακλείου Τμήμα Εφαρμοσμένης Πληροφορικής και Πολυμέσων
Κεφάλαιο 3 ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
Τεχνολογία Β’ Γυμνασίου
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
ΠΛΗΡΟΦΟΡΙΚΗ Γ΄ Γυμνασίου Α΄ Τρίμηνο
Μεταγράφημα παρουσίασης:

Διαδικασία ανάπτυξης Προσδιορισμός απαιτήσεων Αρχιτεκτονικός Σχεδιασμός Λεπτομερής Σχεδιασμός Κωδικοποίηση Έλεγχος Παράδοση Συστήματος Λειτουργία - Συντήρηση Ποιο το πρόβλημα ? Ποια η λύση ? Πώς θα υλοποιηθεί η λύση ? Κώδικας ??? Επιλύθηκε το πρόβλημα? Αξιοποιεί ο πελάτης τη λύση ? Παρουσιάζονται προβλήματα ?

ή Αρχιτεκτονική Σχεδίαση • Μέχρι τώρα είδαμε πως επικοινωνούμε με τον πελάτη • Επόμενο βήμα η μετάφραση των επιθυμιών του σε ένα σύστημα που να ικανοποιεί τις απαιτήσεις Σχεδίαση Συστήματος

• Η κατασκευή οποιουδήποτε έργου δεν γίνεται στα τυφλά • Προηγείται πάντοτε η ανάπτυξη ενός σχεδίου, διότι: • Η πρώτη ύλη είναι ακριβή • Η οπισθοδρόμηση εισάγει κόστος και είναι δύσκολη Παραδείγματα: • αρχιτεκτονικό σχέδιο • ηλεκτρολογικό σχέδιο • μηχανολογικό σχέδιο Για ποιο λόγο ;

• Οι απαιτήσεις λογισμικού ορίζουν ένα Πρόβλημα • Μία λύση στο πρόβλημα είναι αποδεκτή εάν ικανοποιεί όλες τις απαιτήσεις • Οι λύσεις είναι δυνατόν να είναι περισσότερες από μία • Η φύση της λύσης είναι δυνατόν να τροποποιείται κατά την υλοποίηση • Για τον πελάτη: Γενικό Σχέδιο Συστήματος (Εννοιολογικό Σχέδιο) • Για την ανάπτυξη: Τεχνικό Σχέδιο Αρχιτεκτονική Σχεδίαση

• Γραμμένο σε φυσική γλώσσα • Να μην περιέχει εξειδικευμένους όρους • Να περιγράφει τις λειτουργίες του συστήματος • Να είναι ανεξάρτητο από την κωδικοποίηση • Να προκύπτει από το έγγραφο απαιτήσεων λογισμ. • Να έχει αναφορές στο έγγραφο απαιτήσεων λογισμ. • Να ενσωματώνει όλες τις απαιτήσεις με κατάλληλο βαθμό λεπτομέρειας Γενικό Σχέδιο

• Απευθύνεται προς την ομάδα ανάπτυξης Περιλαμβάνει: • Αρχιτεκτονική του συστήματος: Περιγραφή των διαφόρων τμημάτων • Δομή του λογισμικού: Ιεραρχία συνθετικών τμημάτων του λογισμικού • Δεδομένα: Περιγραφή της δομής των δεδομένων και της ροής τους Τεχνικό Σχέδιο

Σχεδίαση Συστήματος De Marco (1982): Σχεδίαση Συστήματος είναι ο προσδιορισμός ενός συνόλου συστατικών και των μεταξύ τους διασυνδέσεων, ώστε να ικανοποιούν ένα συγκεκριμένο σύνολο απαιτήσεων ***: Τα διάφορα συστατικά πιθανότατα θα αναπτυχθούν από διαφορετικά μέλη της ομάδας ανάπτυξης

• Ουσιαστικά εντοπίζουμε στο σύστημα τις μονάδες ή οντότητες σχεδίου από τις οποίες αποτελείται • Κάθε μονάδα είναι μία λειτουργική οντότητα με σαφώς καθορισμένο σύνολο εισόδων και εξόδων • Σαφώς καθορισμένες είσοδοι σημαίνει ότι όλες οι είσοδοι είναι απαραίτητες για τη λειτουργία της μονάδας • Σαφώς καθορισμένες έξοδοι σημαίνει ότι όλες οι έξοδοι παράγονται από κάποιες λειτουργίες της μονάδας. • Μία μονάδα είναι το μικρότερο τμήμα κώδικα που μπορεί να μεταγλωττιστεί ανεξάρτητα Σχεδίαση Συστήματος

• Cobol – subprogram • Fortran – subroutine • Pascal – procedure or function • Modula-2 – module • C – function • Ada – procedure • C++ - class • Java –class Τι είναι μία μονάδα

• Μεταξύ μονάδων λογισμικού είναι δυνατόν να καθοριστούν διάφορες σχέσεις: π.χ. μία μονάδα πρέπει να υλοποιηθεί νωρίτερα από μία άλλη • Ενδιαφερόμαστε για σχέσεις που καθορίζουν την αρχιτεκτονική • Ζητούμενα: • Ποια η δομή ενός συστήματος με βάση τις συστατικές μονάδες ? • Πώς ορίζεται με ακρίβεια η δομή ? • Ποια τα επιθυμητά χαρακτηριστικά μιας δομής ? Σχέσεις μεταξύ μονάδων Ghezzi

• Για δύο διακεκριμένες μονάδες λογισμικού M i, M j λέμε ότι M i USES M j αν η M i απαιτεί την ύπαρξη της M j • η M i καλείται πελάτης (client) της M j • η M j καλείται εξυπηρετητής (server) της M i • Π.χ. M i USES M j αν η M i περιλαμβάνει κλήση διαδικασίας που περιλαμβάνεται στη M j, ή χρησιμοποιεί έναν τύπο που ορίζεται στην M j Σχέση USES

• Μία καλή συμβουλή για την σχέση USES είναι να είναι πάντοτε ιεραρχία. • Τα ιεραρχικά συστήματα είναι πιο εύκολα κατανοητά από τα μη ιεραρχικά. • Σύμφωνα με τον Parnas: "Αν μία δομή δεν είναι ιεραρχική μπορεί να καταλήξουμε σε ένα σύστημα όπου τίποτα δεν θα λειτουργεί μέχρις ότου λειτουργήσουν τα πάντα" • Η παρουσία κύκλου στη σχέση USES υποδηλώνει ότι οι μονάδες στον κύκλο δεν μπορούν να ελεγχθούν μεμονωμένα Σχέση USES

• Επίπεδο μιας μονάδας σε μία ιεραρχία r: 1. Το επίπεδο μιας μονάδας M i είναι 0 αν δεν υπάρχει μονάδα Μ j τέτοια ώστε Μ i r M j 2. Για κάθε μονάδα M i έστω k το μέγιστο επίπεδο όλων των μονάδων M j για τις οποίες ισχύει Μ i r M j. Τότε το επίπεδο της M i είναι k+1 • Για μία ιεραρχία, μία μονάδα στο επίπεδο i χρησιμοποιεί (USES) μόνο μονάδες σε επίπεδα j (i>j) • Οι μονάδες σε ένα συγκεκριμένο επίπεδο (έστω i) παρέχουν ένα σύνολο υπηρεσιών που αντιστοιχούν σε μία αφηρημένη μηχανή (abstract (virtual) machine) Σχέση USES

• H σχέση USES ορίζεται στατικά: Η αναγνώριση όλων των ζευγών (M i, M j ) είναι ανεξάρτητη από την εκτέλεση του προγράμματος code of M { if (cond) M1.method(); else M2.method(); } • Μ USES Μ1 και M USES M2 Σχέση USES

• Αν ο γράφος μιας σχέσης r είναι τέτοιος ώστε κάθε μονάδα να είναι συσχετισμένη με κάθε άλλη μονάδα (πληθικός αριθμός της r = n (n-1) όπου n ο πληθικός αριθμός του S), η δομή δεν επιτρέπει τη διαχείριση του συστήματος • Αν η r είναι κενή, πρόκειται για σύστημα όπου όλες οι μονάδες είναι ασυσχέτιστες • Παρόλο που η κενή σχέση r είναι πρακτικώς αδύνατη, στην πράξη θα πρέπει να επιδιώκεται card(r) << n 2 Σχέση USES

• Έστω S ένα σύνολο μονάδων. Για οποιαδήποτε M i, Μ j στο S, M i IS_COMPONENT_OF Μ j σημαίνει ότι η Μ j υλοποιείται από τη σύνθεση πολλών μονάδων μία εκ των οποίων είναι η M i • COMPISES είναι η αντίστροφη σχέση της IS_COMPONENT_OF • Έστω Μ S, i ένα υποσύνολο του S για το οποίο: Μ S, i = { M k | M k  S Λ M k IS_COMPONENT_OF Μ i } M i IS_COMPOSED_OF Μ S, i τότε M i IS_COMPOSED_OF Μ S, i ή Μ S, i IMPLEMENTS Μ i Σχέση IS_COMPONENT_OF

• Κατά τη σχεδίαση, αν μία μονάδα M i αποσυντίθεται στο σύνολο Μ S,i τότε αντικαθίσταται από τις μονάδες του συνόλου. Ο μόνος λόγος για τη διατήρηση της Μ i είναι η δυνατότητα αναφοράς σε αυτήν • Η σχέση IS_COMPONENT_OF μπορεί επίσης να περιγραφεί ως κατευθυνόμενος γράφος Σχέση IS_COMPONENT_OF

• Οι ανωτέρω δύο τύποι σχέσεων χρησιμοποιούνται συχνότερα στην πράξη: Αρχικά καθορίζονται οι σχέσεις USES και στη συνέχεια καθορίζονται συνήθως οι σχέσεις IS_COMPOSED_OF • Παρόλο που οι σχέσεις αυτές παρουσιάστηκαν στα πλαίσια της αρχιτεκτονικής σχεδίασης εφαρμόζονται και σε άλλες φάσεις • Π.χ. στην περιγραφή των απαιτήσεων: Μία μονάδα περιγραφής απαιτήσεων (π.χ. ένα κείμενο) χρησιμοποιεί μία άλλη αν αναφέρεται σε όρους που ορίζονται σε αυτήν • Μία μονάδα περιγραφής απαιτήσεων μπορεί να είναι τμήμα μιας άλλης αν περιγράφει τμήμα του συνολικού συστήματος Σχέσεις

Προσεγγίσεις Σχεδίαση Συστήματος ΙΙ ΑποσυνθετικήΣυνθετική

• Τα επιθυμητά χαρακτηριστικά ενός καλού σχεδίου συστήματος είναι: Τμηματικότητα • Ένα σύστημα είναι τμηματοποιημένο όταν κάθε δραστηριότητα του συστήματος (απλή ή σύνθετη) εκτελείται από μία μονάδα και οι είσοδοι – έξοδοι κάθε μονάδας είναι καλά ορισμένες Χαρακτηριστικά Σχεδίου

Τμηματικότητα Αριθμός Μονάδων (Μείωση μεγέθους) Κόστος Ανάπτυξης Συνολικό κόστος Κόστος επικοινωνίας μεταξύ μονάδων Κόστος ανάπτυξης μονάδων Βέλτιστος αριθμός μονάδων

Χαρακτηριστικά Σχεδίου Αφαιρετικότητα • Η κάθοδος σε ‘’χαμηλότερο’’ επίπεδο παρέχει μεγαλύτερη λεπτομέρεια •Τα υψηλότερα επίπεδα είναι περισσότερο αφαιρετικά, αποκρύπτουν πληροφορία για την ευκολότερη αντιμετώπιση του προβλήματος (αντίστοιχη information hiding τεχνική συναντάμε στον OOP) • Μπορεί να αλλάξει το σχέδιο μιας μονάδας χωρίς να επηρεαστεί ο σχεδιασμός των υπολοίπων

Αφαίρεση

Είναι προφανές ότι, για λόγους διαχείρισης της πληροφορίας, ορισμένη ποσότητα πληροφορίας αποκρύπτεται σκοπίμως. Αφαίρεση ονομάζεται η σκόπιμη σύμπτυξη ή απόκρυψη πληροφορίας που αφορά μία διαδικασία ή ένα κατασκεύασμα, με σκοπό την καλύτερη κατανόηση άλλων απόψεων, λεπτομερειών ή δομής. Η ιδέα της αφαίρεσης μπορεί να υποδιαιρεθεί σε διάφορες υποκατηγορίες: • Η πλέον συνήθης τεχνική αφαίρεσης είναι ο διαμερισμός ενός συνόλου στα τμήματα που το αποτελούν και στη συνέχεια ο διαμερισμός καθενός από τα τμήματα κ.ο.κ. "διαίρει και βασίλευε" (divide and conquer). •Εξειδίκευση του γενικού, προσέγγιση που υλοποιείται στις αντικειμενοστραφείς γλώσσες με τις αρχές της κληρονομικότητας. •Ύπαρξη πολλαπλών απόψεων ενός συστήματος, κάθε μία από τις οποίες επικεντρώνεται σε συγκεκριμένα χαρακτηριστικά.

Αφαίρεση Οι τεχνικές του διαμερισμού σε τμήματα και του διαχωρισμού σε ειδικότερες κατηγορίες αντιστοιχούν στις δύο πιο σημαντικές μορφές αφαίρεσης στον αντικειμενοστραφή προγραμματισμό όπου είναι συνήθως γνωστές ως: έχει • αφαίρεση τύπου "έχει" (has-a abstraction) και ως είναι • αφαίρεση τύπου "είναι" (is-a abstraction) αντίστοιχα. Κατά το διαμερισμό σε τμήματα για παράδειγμα, ένα αυτοκίνητο "έχει" μία μηχανή και "έχει" ένα σύστημα μετάδοσης. Στον διαχωρισμό σε ειδικότερες κατηγορίες, ένα ποδήλατο "είναι" ένα όχημα, ή "είναι" ένα δίκυκλο για παράδειγμα. Οι δύο αυτές μορφές αφαίρεσης συνδέονται στενά με συγκεκριμένες προγραμματιστικές έννοιες σε διάφορες αντικειμενοστραφείς γλώσσες προγραμματισμού.

Ενσωμάτωση Θεμελιώδης έννοια στον Αντικειμενοστραφή Προγραμματισμό: Object Ενσωμάτωση: Ενσωμάτωση: Το αντικείμενο περιλαμβάνει τόσο δεδομένα όσο και τις μεθόδους που χειρίζονται τα δεδομένα. Πρόσβαση στα δεδομένα επιτρέπεται μόνο μέσω των μεθόδων που διατίθενται για αυτό το σκοπό :Λογαριασμός • Όνομα κατόχου • Αριθμός • Υποκατάστημα Τραπέζης Δεδομένα, Ιδιότητες (Attributes) • Υπολογισμός τόκων • Εκτύπωση υπολοίπου • Μεταφορά σε άλλο λογαριασμό Συμπεριφορά, Λειτουργίες (Methods)

Χαρακτηριστικά Καλού Σχεδίου • Ο βαθμός ανεξαρτησίας μεταξύ των μονάδων είναι ένα μέτρο του πόσο καλό είναι το σχέδιο συστήματος • Η ποιότητα μετράται με: σύζευξη, συνεκτικότητα

Σύζευξη (coupling) Η σύζευξη αποτελεί ένα μέτρο του κατά πόσο οι μονάδες εξαρτώνται μεταξύ τους Η σύζευξη εξαρτάται από : • Κλήσεις από μία μονάδα σε άλλη • Ποσότητα δεδομένων που διακινείται από μία μονάδα σε άλλη • Το μέγεθος του ελέγχου που έχει μία μονάδα πάνω σε μία άλλη

Τύποι σύζευξης Υψηλή Σύζευξη Μή Σύζευξη Χαλαρή Σύζευξη Περιεχόμενη Σύζευξη Σύζευξη ελέγχου Σύζευξη Δεδομένων Σύζευξη από κοινού Σύζευξη αντιγράφου

Ελαχιστοποίηση σύζευξης Η ελαχιστοποίηση της σύζευξης είναι επιθυμητή, για τους εξής λόγους: • Ευκολότερη τροποποίηση των απαιτήσεων • Ευκολότερη σχεδίαση (δυνατότητα καταμερισμού εργασιών) • Ευκολότερος εντοπισμός σφαλμάτων συστήματος - Ευκολότερο debugging - Ευκολότερος έλεγχος - επικύρωση • Ευκολότερη συντήρηση • Σαφέστερη Τεκμηρίωση

Τύποι σύζευξης Περιεχόμενη Σύζευξη: Μία μονάδα επεμβαίνει και τροποποιεί μία άλλη Μονάδα ΗΜονάδα G GOTO G1G1 : Η μονάδα G είναι δυνατόν να τροποποιήσει τον κώδικα της μονάδας H (μόνο σε assembly, Basic, Cobol)

Τύποι σύζευξης Μπορούμε να μειώσουμε τη σύζευξη τοποθετώντας δεδομένα σε κοινή περιοχή (π.χ. καθολικές μεταβλητές) Η εξάρτηση συνεχίζει να υπάρχει (από κοινού σύζευξη), αφού αλλαγές στις καθολικές μεταβλητές επηρεάζουν όλες τις μονάδες που έχουν πρόσβαση σε αυτές Μονάδα ΗΜονάδα G global variables

Τύποι σύζευξης Σύζευξη ελέγχου έχουμε όταν μία μονάδα περνά flags για να ελέγξει τη δραστηριότητα μιας άλλης μονάδας (Π.χ. μία μονάδα ξεκινά τη λειτουργία της όταν μία άλλη ολοκληρωθεί και η τιμή ενός flag τεθεί σε κατάλληλη τιμή) Συνήθως πρόκειται για μεταβλητές που εμπλέκονται σε παραστάσεις δομών ελέγχου (conditional statements) Σύζευξη αντιγράφου: Πέρασμα δομών δεδομένων Εάν μεταξύ των μονάδων ανταλλάσσονται δεδομένα έχουμε σύζευξη δεδομένων. Στην περίπτωση αυτή, μία μονάδα μπορεί να τροποποιήσει τα ίδια τα δεδομένα μιας άλλης μονάδος (κλήση κατ’ αναφορά) ή να δράσει επάνω σε αντίγραφα των δεδομένων μιας άλλης μονάδος (κλήση κατ’ αξία)

Συνεκτικότητα (cohesion) • Αναφέρεται στην εσωτερική συνοχή της ΜΟΝΑΔΟΣ Μία μονάδα είναι συνεκτική εάν όλα τα τμήματά της προορίζονται και είναι απαραίτητα για την εκτέλεση της ίδιας λειτουργίας • Μία μονάδα είναι συνεκτική εάν όλα τα τμήματά της προορίζονται και είναι απαραίτητα για την εκτέλεση της ίδιας λειτουργίας • Στόχος είναι η μεγαλύτερη δυνατή συνεκτικότητα κάθε μονάδος • Συμπτωματική Συνεκτικότητα έχουμε όταν τα τμήματα μιας μονάδας είναι εντελώς ασυσχέτιστα • Λογική Συνεκτικότητα έχουμε όταν λογικά συσχετιζόμενες λειτουργίες συνυπάρχουν στην ίδια μονάδα

Συνεκτικότητα ΙΙ • Χρονική Συνεκτικότητα έχουμε όταν στην ίδια μονάδα υπάρχουν τμήματα που υλοποιούν λειτουργίες οι οποίες εκτελούνται γειτονικά στο χρόνο (π.χ. διαδοχικά) • Εάν η έξοδος από το ένα τμήμα μιας μονάδος αποτελεί είσοδο σε επόμενο τμήμα της μονάδος έχουμε ακολουθιακή συνεκτικότητα • Επικοινωνιακή συνεκτικότητα: τα τμήματα της μονάδας επεξεργάζονται ή παράγουν τα ίδια δεδομένα

Συνεκτικότητα ΙΙΙ • Ιδανική περίπτωση: Λειτουργική συνεκτικότητα, όταν όλα τα στοιχεία της μονάδος είναι απαραίτητα για την εκτέλεση μιας λειτουργίας. Η μονάδα εκτελεί μόνο αυτή την λειτουργία και καμία άλλη • H πρόταση που περιγράφει την μονάδα έχει ένα ρήμα και ένα αντικείμενο (π.χ. υπολόγισε τον μέσο, άνοιξε τη βαλβίδα κτλ)

Τύποι Συνεκτικότητας ΜΟΝΑΔΑ Α Λειτουργία Α Λειτουργία Β Λειτουργία C Λειτουργία D Συμπτωματική συνεκτικότητα (Μέρη ασυσχέτιστα)

Τύπο Συνεκτικότητας ΜΟΝΑΔΑ Α Λειτουργία Α’’ Λειτουργία Α’ Λειτουργία Α Λογική συνεκτικότητα (Παρόμοιες λειτουργίες)

Τύποι Συνεκτικότητας ΜΟΝΑΔΑ Α Χρόνος Τ 0 +2Δ Χρόνος Τ 0 +Δ Χρόνος Τ 0 Χρονική συνεκτικότητα (Συσχέτιση μέσω χρόνου)

Τύποι Συνεκτικότητας ΜΟΝΑΔΑ Α Λειτουργία C Λειτουργία Β Λειτουργία Α Επικοινωνιακή συνεκτικότητα (Προσπέλαση στα ίδια δεδομένα)

Τύποι Συνεκτικότητας ΜΟΝΑΔΑ Α Λειτουργία C Λειτουργία Β Λειτουργία Α Ακολουθιακή συνεκτικότητα (Έξοδος ενός είσοδος σε άλλο) OUT IN

Τύποι Συνεκτικότητας ΜΟΝΑΔΑ Α = ΛΕΙΤΟΥΡΓΙΑ Α Λειτουργία Α, τμήμα 3 Λειτουργία Α, τμήμα 2 Λειτουργία Α, τμήμα 1 Λειτουργική συνεκτικότητα (Πλήρη και συσχετισμένα τμήματα που εκτελούν τμήματα της ίδια λειτουργίας)

Fan-in, Fan-out A BCDE FGHI Fan-out: 4 Fan-in: 1 Fan-out: 3 Fan-in: 2 Fan-out: 0

Fan-in, Fan-out Στόχος 1: Ελαχιστοποίηση αριθμού μονάδων με υψηλό fan-out Μία μονάδα που ελέγχει πολλές άλλες, συνήθως εκτελεί πολλές εργασίες (κακή συνεκτικότητα). Δυσκολία στον εντοπισμό σφαλμάτων, στην τροποποίηση, στην επαναχρησιμοποίηση Στόχος 2: Μεγιστοποίηση αριθμού μονάδων με υψηλό fan-in Μία μονάδα που ελέγχεται από πολλές άλλες, είναι μονάδα γενικής χρησιμότητας και είναι σαφώς προτιμότερο μία λειτουργία που εκτελείται συχνά να βρίσκεται σε μία μονάδα, παρά κατανεμημένη ή υλοποιημένη σε πολλές μονάδες