ΕΛΛΗΝΙΚΟ ΑΝΟΙΧΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Πρόγραµµα σπουδών "ΠΛΗΡΟΦΟΡΙΚΗ" - Θ.Ε. ΠΛΗ11 Τεχνολογία Λογισµικού Ι Κεφάλαιο 4 Βασίλειος Βεσκούκης ιδάκτωρ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών v.vescoukis@cs.ntua.gr
Σχεδίαση λογισµικού Κατά την ανάλυση ασχολούµαστε µε το τι θα κάνει το λογισµικό Στη σχεδίαση, η προσοχή µεταφέρεται στο πώς θα επιτύχουµε την επιθυµητή συµπεριφορά Θα πρέπει να εντοπίσουµε Ποια συστατικά αποτελούν την εφαρµογή µας Πώς αυτά συσχετίζονται µεταξύ τους Πώς διατάσσονται Ποια είναι η εσωτερική τους δοµή Οι απαντήσεις στα ερωτήµατα αυτά, αποτελούν το σχέδιο του λογισµικού
Σχεδίαση λογισµικού Ένα σύνθετο πρόβληµα: Ποιος είναι ο καλύτερος τρόπος µετάβασης από τις προδιαγραφές στο σχέδιο του λογισµικού; Με πόσα σχέδια µπορεί να υλοποιηθεί κάθε προδιαγραφή και ποιο είναι το «καλύτερο»; Η σχεδίαση περιορίζεται ή υποστηρίζεται από το εκάστοτε περιβάλλον ανάπτυξης στο οποίο θα γίνει η υλοποίηση; Πόσο λεπτοµερής είναι µια «καλή» αποτύπωση του σχεδίου και τι περιλαµβάνει αυτή; Πώς διασφαλίζεται η ποιότητα του λογισµικού;
Προσεγγίσεις σχεδίασης Ανάλογα µε τη φιλοσοφία ανάπτυξης, διακρίνουµε διαφορετικές προτεραιότητες στο πρόβληµα της σχεδίασης λογισµικού ΤΕΧΝΟΤΡΟΠΙΕΣ ΣΧΕ ΙΑΣΗΣ ΛΟΓΙΣΜΙΚΟΥ ΠΡΟΣΑΝΑΤΟΛΙΣΜΕΝΕΣ ΣΤΙΣ ΙΑ ΙΚΑΣΙΕΣ (function-oriented) ΠΡΟΣΑΝΑΤΟΛΙΣΜΕΝΕΣ ΣΤΑ ΑΝΤΙΚΕΙΜΕΝΑ (object-oriented) Βασισµένες στις διαδικασίες (διαδικασίες -> δεδοµένα) Βασισµένες στα δεδοµένα (δεδοµένα -> διαδικασίες)
οµηµένη σχεδίαση Αρχιτεκτονική σχεδίαση Σχεδίαση διαπροσωπειών Λεπτοµερής σχεδίαση µονάδων Σχεδίαση δεδοµένων Προδιαγραφές των απαιτήσεων από το λογισµικό Σύλληψη περιγράµµατος Ατυπη σχεδίαση Λεπτοµερής σχεδίαση Σχέδιο λογισµικού Συµβολισµοί: Προϊόν Εργασία
οµηµένη σχεδίαση ιάγραµµα ροής δεδοµένων Αρχιτεκτονικό σχέδιο ΜΟΝΑ ΕΣ ΛΟΓΙΣΜΙΚΟΥ Εγγραφο προδιαγραφών ιάγραµµα µετάβασης καταστάσεων ΣΧΕ ΙΑΣΗ Σχέδιο διαπροσωπειών Σχέδιο µονάδων ιάγραµµα οντοτήτωνσυσχετίσεων Λεξικό δεδοµένων Σχέδιο δεδοµένων Ε ΟΜΕΝΑ
Αρχιτεκτονική σχεδίαση Ορισµός υποσυστηµάτων ιαδοχικά επίπεδα λεπτοµέρειας Γενικό περίγραµµα της εφαρµογής Σύστηµα Υπο-σύστηµα 1ου επιπέδου Υπο-σύστηµα 2ου επιπέδου......... Υπο-σύστηµα 3ου επιπέδου.........
Σχεδίαση διαπροσωπειών Οι µονάδες λογισµικού επικοινωνούν µεταξύ τους Επικοινωνία σηµαίνει: Μεταφορά του ελέγχου ροής του προγράµµατος Μεταφορά δεδοµένων µε παραµέτρους Στην εργασία αυτή καθορίζεται: Ο τύπος των παραµέτρων κάθε µονάδας λογισµικού Η φύση της επικοινωνίας µεταξύ των υποσυστηµάτων Οι λεπτοµέρειες της επικοινωνίας µε εξωτερικές συσκευές κλπ Η επικοινωνία µε τον χρήστη
Λεπτοµερής σχεδίαση µονάδων Εστίαση στο εσωτερικό κάθε µονάδας λογισµικού Περιγραφή µε τρόπο ώστε ο προγραµµατιστής να µπορεί να κατασκευάσει «κατευθείαν» κάθε µονάδα Λαµβάνονται υπόψη: Όλα τα µέχρι το σηµείο αυτό προϊόντα της σχεδίασης Όλα τα σηµεία των προδιαγραφών, τα οποία περιγράφουν τη συµπεριφορά του λογισµικού
Σχεδίαση δεδοµένων Επαλήθευση του µοντέλου οντοτήτων συσχετίσεων Βελτιστοποιήσεις και κανονικοποίηση του σχήµατος δεδοµένων Καθορισµός των τύπων των πεδίων κάθε πίνακα (φυσικό επίπεδο) Καθορισµός δεικτών, και όψεων (views) (λογικό επίπεδο) Αντικείµενο της γνωστικής περιοχής «Βάσεις εδοµένων» Η σχεδίαση δεδοµένων στην πράξη δεν είναι ανεξάρτητη από το περιβάλλον υλοποίησης, δηλαδή το DBMS που θα χρησιµοποιηθεί
ιατάξεις λογισµικού Το σύγχρονο λογισµικό είναι κατανεµηµένο. ιάταξη λογισµικού (deployment) είναι η κατάτµηση µιας εφαρµογής σε ανεξάρτητα λειτουργικά τµήµατα και η ανάθεση αυτών σε διατιθέµενους υπολογιστικούς πόρους. Για να µπορεί να καθοριστεί µια διάταξη, θα πρέπει να διακρίνουµε ένα κριτήριο διάκρισης των εργασιών που επιτελεί το λογισµικό. ΠΑΡΟΥΣΙΑΣΗ ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΛΟΓΙΚΗ ΙΑΧΕΙΡΙΣΗ Ε ΟΜΕΝΩΝ
ιατάξεις λογισµικού Η µονολιθική διάταξη Stand alone system DATA MANAGEMENT BUSINESS LOGIC PRESENTATION Main Computer DATA MANAGEMENT BUSINESS LOGIC PRESENTATION... Dump terminal File server Workstation... Workstation DATA MANAGEMENT BUSINESS LOGIC PRESENTATION
ιατάξεις λογισµικού Ηδιάταξη πελάτη εξυπηρετητή (client server) ιµερής διάταξη µε FAT clients Server DATA MANAGEMENT Fat client BUSINESS LOGIC PRESENTATION
ιατάξεις λογισµικού ιάταξη πελάτη εξυπηρετητή (2) Πολυµερής διάταξη µε THIN clients DATA MANAGEMENT Thin Client Data Server PRESENTATION Application Server BUSINESS LOGIC Thin Client PRESENTATION
ιατάξεις λογισµικού Πολυµερής κατανεµηµένη διάταξη µε web clients DATA MANAGEMENT Web Server Data Server Internet, Intranet, VPN,... PRESENTATION Web Client Application Server BUSINESS LOGIC Internet, Intranet, VPN,... Web Client Web Client
ιατάξεις λογισµικού Data service provider Data Server Application Server Application service provider... Internet Data service provider Data Server Application Integrator Web Server End User Web Client Service offering
Αρχιτεκτονική σχεδίαση Από το ιάγραµµα Ροής εδοµένων, στο ιάγραµµα οµής Προγράµµατος Συµβολισµοί Proc1 P Q R Z Proc2 Proc3 Proc4
Αρχιτεκτονική σχεδίαση Ηέννοια του κεντρικού µετασχηµατισµού ΛΗΨΗ ΚΑΙ ΠΡΟΕΤΟΙΜΑΣΙΑ Ε ΟΜΕΝΩΝ ΕΙΣΟ ΟΥ ΚΕΝΤΡΙΚΟΣ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΣ ΠΡΟΕΤΟΙΜΑΣΙΑ ΚΑΙ ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ ΕΞΟ ΟΥ
Αρχιτεκτονική σχεδίαση Παραδείγµατα κεντρικού µετασχηµατισµού 1 2 4 5 7 3 6 8 1 2 4 5 7 3 6 8
Αρχιτεκτονική σχεδίαση Απεικόνιση κεντρικού µετασχηµατισµού σε διάγραµµα δοµής προγράµµατος Μονάδα ελέγχου Λήψη δεδοµένων Υλοποίηση Υπολογισµών Κ.Μ. Εξοδος αποτελεσµάτων
Αρχιτεκτονική σχεδίαση Ηέννοια του κέντρου δοσοληψιών... ΛΗΨΗ ΚΑΙ ΠΡΟΕΤΟΙΜΑΣΙΑ Ε ΟΜΕΝΩΝ ΕΙΣΟ ΟΥ ΚΕΝΤΡΟ ΟΣΟΛΗΨΙΩΝ... ΚΕΝΤΡΑ ΕΠΕΞΕΡΓΑΣΙΑΣ Ε ΟΜΕΝΩΝ ΕΞΟ ΟΥ
Αρχιτεκτονική σχεδίαση Απεικόνιση κέντρου δοσοληψιών σε διάγραµµα δοµής προγράµµατος...... ΜΟΝΑ Α ΕΛΕΓΧΟΥ ΛΗΨΗ Ε ΟΜΕΝΩΝ ΕΠΕΞΕΡΓΑΣΙΑ Ε ΟΜΕΝΩΝ ΜΟΝΑ Α ΕΛΕΓΧΟΥ ΠΕΡΙΠΤΩΣΗΣ 1 ΜΟΝΑ Α ΕΛΕΓΧΟΥ ΠΕΡΙΠΤΩΣΗΣ 2... ΜΟΝΑ Α ΕΛΕΓΧΟΥ ΠΕΡΙΠΤΩΣΗΣ N
Αρχιτεκτονική σχεδίαση Βήµατα κατασκευής διαγραµµάτων δοµής Εντοπισµός ενός κεντρικού µετασχηµατισµού ή κέντρου δοσοληψιών Απεικόνιση σε διάγραµµα δοµής προγράµµατος Παραγοντοποίηση: επανάληψη για το δεξί και το αριστερό τµήµα του ΚΜ / Κ Συνένωση τµηµάτων διαγραµµάτων δοµής που προκύπτουν Αποτέλεσµα: Ένα διάγραµµα δοµής του λογισµικού µε λεπτοµέρεια ανάλογη της λεπτοµέρειας του διαγράµµατος ροής δεδοµένων από το οποίο κατασκευάστηκε
Παράδειγµα αρχιτεκτονικής σχεδίασης Π 1 Α Ι 1.1.1 Λ Κ 1.1.2 Μ 1.1.3 Α 1 Η Π 2 Β Θ 1.2.1 1.3 Ε Α 2 Π 3 Γ 1.2.2 Ν F Ο Κ.Μ. EXEC113 Λ Μ Λ,Μ Η, Η ΑΝΑΓΝΩΣΗ ΤΟΥ Λ ΑΝΑΓΝΩΣΗ ΤΟΥ Μ ΥΠΟ- ΛΟΓΙΣΜΟΣ, Η ΕΞΟ ΟΣ ΤΟΥ ΕΞΟ ΟΣ ΤΟΥ Η
Παράδειγµα αρχιτεκτονικής σχεδίασης Π 1 Α Ι 1.1.1 Λ Κ 1.1.2 Μ 1.1.3 Α 1 Η Π 2 Β Θ 1.2.1 1.3 Ε Α 2 Π 3 Γ 1.2.2 Ν F Ο Κ.Μ. EXEC121 Β Ν Ο Β,Ν,Ο Θ Θ ΑΝΑΓΝΩΣΗ ΤΟΥ Β ΑΝΑΓΝΩΣΗ ΤΟΥΝ ΑΝΑΓΝΩΣΗ ΤΟΥΟ ΥΠΟ- ΛΟΓΙΣΜΟΣ ΤΟΥΘ ΕΞΟ ΟΣ ΤΟΥΘ
Παράδειγµα αρχιτεκτονικής σχεδίασης Π 1 Α Ι 1.1.1 Λ Κ 1.1.2 Μ 1.1.3 Η Α 1 EXEC13 Π 2 Β Θ 1.2.1 1.3 Ε Α 2 Θ Η Η,Θ Ε Ε Π 3 Γ 1.2.2 Ν F Ο Κ.Μ. ΑΝΑΓΝΩΣΗ ΤΟΥΘ ΑΝΑΓΝΩΣΗ ΤΟΥΗ ΥΠΟ- ΛΟΓΙΣΜΟΣ ΤΟΥΕ ΕΞΟ ΟΣ ΤΟΥΕ EXEC122 Γ Γ Ν Ν ΑΝΑΓΝΩΣΗ ΤΟΥ Γ ΥΠΟ- ΛΟΓΙΣΜΟΣ ΤΟΥΝ ΕΞΟ ΟΣ ΤΟΥ Ν
Παράδειγµα αρχιτεκτονικής σχεδίασης EXEC113 Λ Λ,Μ Η, Η Μ Α Ι 1.1.1 Λ ΑΝΑΓΝΩΣΗ ΤΟΥΛ ΑΝΑΓΝΩΣΗ ΤΟΥΜ ΥΠΟ- ΛΟΓΙΣΜΟΣ, Η ΕΞΟ ΟΣ ΤΟΥ EXEC13 Κ 1.1.2 Μ 1.1.3 Θ Η,Θ Ε Ε Β Θ 1.2.1 1.3 Η Ε EXEC121 ΥΠΟ- ΛΟΓΙΣΜΟΣ ΤΟΥΕ ΕΞΟ ΟΣ ΤΟΥΕ Γ 1.2.2 Ν F Ο Κ.Μ. ΑΝΑΓΝΩΣΗ ΤΟΥΒ Β EXEC122 Ν Ο ΑΝΑΓΝΩΣΗ ΤΟΥΟ Β,Ν,Ο Θ ΥΠΟ- ΛΟΓΙΣΜΟΣ ΤΟΥΘ Γ Γ Ν ΑΝΑΓΝΩΣΗ ΤΟΥΓ ΥΠΟ- ΛΟΓΙΣΜΟΣ ΤΟΥΝ
Μελέτη περίπτωσης Exec 111 Στοιχεία µαθητή 1.1.1. ιαχείριση αρχείου µαθητών Εγγραφή Ενηµερωµένο µαθητή αρχείο Get (Στοιχεία Μαθητή) ΣΜ ΣΜ ΕΜ Prepare (Εγγραφή Μαθητή) ΕΜ ΕΜ Get/Put (Εγγραφή Μαθητή) ΧΡΗΣΤΗΣ Στοιχεία καθηγητή Στοιχεία µαθήµατος 1.1.2. ιαχείριση αρχείου καθηγητών 1.1.3. ιαχείριση αρχείου µαθηµάτων Εγγραφή καθηγητή Αρχείο καθηγητών Εγγραφή µαθήµατος Αρχείο µαθητών Ενηµερωµένο αρχείο Ενηµερωµένο αρχείο ΧΡΗΣΤΗΣ Get (Στοιχεία Καθηγητή) ΣΚ Exec 112 ΣΚ ΕΚ Prepare (Εγγραφή Καθηγητή) ΕΚ ΕΚ Get/Put (Εγγραφή Καθηγητή) Αρχείο µαθηµάτων ΣΜ Exec 113 ΣΜ ΕΜ ΕΜ ΕΜ Get (Στοιχεία Μαθήµατος) Prepare (Εγγραφή Μαθήµατος) Get/Put (Εγγραφή Μαθήµατος)
Μελέτη περίπτωσης Αποτέλεσµα εργασίας ΧΡΗΣΤΗΣ ΧΡΗΣΤΗΣ Αρ.µητρώου µαθητή 1.2.1. Ελεγχος δεδοµένων Στοιχεία εγγραφής 1.2.2. ιαχείριση εγγραφών Εγγραφή Κωδικός µαθήµατος Α.µ.µαθητή Κωδ.Μαθ/τος Αρχείο εγγραφών Αρχείο µαθηµάτων Αρχείο µαθητών Κ.Μ. Exec 122 ΣΕ ΣΕ RE RE ΑΕ ΑΕ Exec 121 Prepare (Record Εγγραφής) Put (Record Εγγραφής) Put (Αποτέλεσµα Εργασίας) AMM, KM AMM, KM FLAG FLAG ΣΕ Get (ΑΜ Μαθητή, Κωδ Μαθήµατος) Verify (ΑΜ Μαθητή, Κωδ Μαθήµατος) Prepare (Στοιχεία Εγγραφής)
Λεπτοµερής σχεδίαση µονάδων Ψευδοκώδικας Απλές εκφράσεις Επαναληπτική εκτέλεση /*σχόλιο */ µεταβλητή := τιµή /* ανάθεση */ φραστική περιγραφή ενέργειας + - * / ^ /* µαθηµατικές εκφράσεις */ FOR µτβλ FROM τιµή1 TO τιµή2 STEP τιµή3 DO (ενέργειες) END_FOR Εκτέλεση µε επιλογή περίπτωσης Εκτέλεση υπό συνθήκη CASE έκφραση OF (τιµή 1) : (ενέργειες) (τιµή 2) : (ενέργειες)... (τιµή Ν) : (ενέργειες) OTHERWISE (εντολές αν η έκφραση έχει άλλη τιµή) END_CASE IF συνθήκη THEN (ενέργειες αν η συνθήκη είναι αληθής) ELSE (εντολές αν η συνθήκη είναι ψευδής) END_IF
Λεπτοµερής σχεδίαση µονάδων Ψευδοκώδικας Επαναληπτική εκτέλεση µε συνθήκη (1) Επαναληπτική εκτέλεση µε συνθήκη (2) REPEAT (ενέργειες) UNTIL συνθήκη WHILE συνθήκη DO (ενέργειες) END_WHILE Ορισµός διαδικασιών Ορισµός συναρτήσεων PROCEDURE όνοµα (παράµετρος :IN/OUT,...) GLOBAL VAR όνοµα1, όνοµα2,... LOCAL VAR όνοµα1, όνοµα2,...... (ενέργειες)... CALL όνοµα_διαδικασίας (παράµ1, παράµ2,...)... (ενέργειες)... END_PROCEDURE FUNCTION όνοµα_συνάρτησης (παράµετρος,...) GLOBAL VAR όνοµα1, όνοµα2,... LOCAL VAR όνοµα1, όνοµα2,...... (ενέργειες)... όνοµα_συνάρτησης := τιµή... (ενέργειες)... END_FUNCTION
Λεπτοµερής σχεδίαση µονάδων Παράδειγµα ψευδοκώδικα /*--------------------------------------------------------------*/ PROCEDURE Exec111 /*--------------------------------------------------------------*/ LOCAL VAR στοιχεία_µαθητή, εγγραφή_µαθητή Αρχικοποίησε στοιχεία_µαθητή, εγγραφή_µαθητή WHILE στοιχεία_µαθητή <> κενό DO CALL Get_ΣΜ(στοιχεία_µαθητή) IF στοιχεία_µαθητή <> κενό THEN CALL Prepare_ΣΜ(στοιχεία_µαθητή, εγγραφή_µαθητή) CALL Put_ΕΜ(εγγραφή_µαθητή) END_IF END_WHILE END_PROCEDURE Exec 111 ΣΜ ΣΜ ΕΜ ΕΜ ΕΜ Get (Στοιχεία Μαθητή) Prepare (Εγγραφή Μαθητή) Get/Put (Εγγραφή Μαθητή)
Παράδειγµα αρχιτεκτονικής σχεδίασης Αρχικοποίηση ελέγχου πρόσβασης Αδειες πρόσβασης Run1 Εργασία 1 Res1 Εµφάνιση αποτελεσµάτων 1 Αρχικές τιµές Μενού επιλογής εργασίας Επιλογή Ελεγχος εκτέλεσης Run2 Αρχικοποίηση τιµών Εργασία 2 Res2 Εµφάνιση αποτελεσµάτων 2 Run3 Εργασία 3 Res3 Εµφάνιση αποτελεσµάτων 3
Παράδειγµα αρχιτεκτονικής σχεδίασης Clr Run1 Proc1 Res1 Choice Dispatch Run2 Proc2 Res2 Run3 Κ.. Proc3 Res3 MAIN Clr Choice Choice Flag Run1 Run2 Run3 Get_Clr Get_Ch Process_Ch Exec_Proc1 Exec_Proc2 Exec_Proc3
Συζήτηση - προβληµατισµός Καταγράψτε όλες τις περιπτώσεις όπου κατά την εκπόνηση της πρώτης εργασίας βρεθήκατε σε σύγχυση σχετικά µε τη µετάβαση από Ρ σε Π και βάλτε τες στο forum για συζήτηση