Σχεδίαση Λογισµικού ΙΙ Αντώνης Καραγεώργος Τµήµα Μηχανικών Η/Υ και ικτύων Πανεπιστήµιο Θεσσαλίας karageorgos@inf.uth.gr Πρότυπα σχεδίων και επαναχρησιµοποίηση Θέλουµε ναεκµεταλλευτούµε τακοινά χαρακτηριστικά µεταξύ των συστηµάτων ώστε να µην τα αναπτύσσουµε κάθε φορά από την αρχή Η αναζήτηση κοινών χαρακτηριστικών αντιστοιχεί σε αναζήτηση προτύπων σχεδίασης Είναι σηµαντικό να κατασκευάζουµε πρότυπα σχεδίου µε τρόπους που δεν τα συνδέουν µε κάποιο συγκεκριµένο σύστηµα Από Ανάλυση στη Σχεδίαση Χαρακτηριστικά καλού σχεδίου Data Object Description Process Specification (PSPEC) Entity- Data Flow Relationship Diagram Diagram Data Dictionary State-Transition Diagram Control Specification (CSPEC) interface design architectural design data design procedural design Αναζητούµε χαρακτηριστικά που συνδέονται µε ποιότητα σχεδίασης: Ανεξαρτησία δοµικών µονάδων Αναγνώριση και χειρισµός εξαιρέσεων Παρεµπόδιση και ανοχή σφαλµάτων ΜΟΝΤΕΛΟ ΑΝΑΛΥΣΗΣ ΜΟΝΤΕΛΟ ΣΧΕ ΙΑΣΗΣ Pressman p. 331 1
Ανεξαρτησία συστατικών του σχεδίου Σύζευξη Προσπαθούµε νακάνουµε τιςδοµικές µονάδες (συστατικά) όσο το δυνατόν ανεξάρτητες µεταξύ τους Με τον τρόπο αυτό είναι πιό εύκολο να κατανοήσουµε τι κάνουν αλλά και να τις τροποποιήσουµε πιοεύκολα Οβαθµός ανεξαρτησίας των συστατικών ενός σχεδίου χαρακτηρίζεται µε βάση τη σύζευξη και τη συνεκτικότητά τους Σύζευξη (coupling) είναι ο βαθµός συσχέτισης µεταξύ των δοµικών µονάδων. Συνεκτικότητα (Cohesion): Αναφέρεται στην εσωτερική συνοχή µε βάση την οποία κατασκευάζεται ένα συστατικό Προσπαθούµε ναέχουµε χαµηλή σύζευξη και υψηλή συνεκτικότητα!!! Χαλαρή σύζευξη Κάποιες εξαρτήσεις Μή συζευγµένα (καθόλου σύζευξη) Υψηλή σύζευξη Πολλές εξαρτήσεις Τύποι σύζευξης Τύποι σύζευξης (συνέχεια) Σύζευξη περιεχοµένων : Αναφορές που γίνονται από ένα συστατικό στα υπόλοιπα (π.χ. Α καλεί Β και τροποποιεί τα περιεχόµενά του) Σύζευξη κοινών δεδοµένων: εδοµένα που είναι κοινά για κάποια συστατικά (π.χ. το Α και το Β έχουν µια κοινή µεταβλητή) Σύζευξη ελέγχου: Έλεγχος που ένα συστατικό ασκεί στα υπόλοιπα (π.χ. Α περνά µια σηµαία ελέγχου στο Β και µε τοντρόποαυτό καθορίζει τη µετέπειτα λειτουργία του) Σύζευξη αντιγράφου: Ανταλλαγή δοµών δεδοµένων µεταξύ των συστατικών (π.χ. το Α περνά ένα αντικείµενο ή µια δοµή στο Β) Σύζευξη δεδοµένων: εδοµένα που περνούν από ένα συστατικό στα υπόλοιπα (π.χ. το Α περνά µια µεταβλητή ή έναν πίνακα στο Β) Component B Go to D1 Component D B A D C E Στόχος µας η διατήρηση χαµηλού βαθµού σύζευξης στα συστατικά του σχεδίου Go to D1 D1: Παράδειγµα σύζευξης περιεχοµένου 2
Τύποι σύζευξης (συνέχεια) Αποτίµηση σύζευξης Global: A1 A2 A3 Variables: V1 V2 Common data area and variable names Component X Component Y Component Z Change V1 to zero Increment V1 V1 = V2 + A1 Σύζευξη περιεχοµένων Σύζευξη κοινών δεδοµένων Σύζευξη ελέγχου Σύζευξη αντιγράφου Σύζευξη δεδοµένων Μη σύζευξη ΥΨΗΛΗ ΣΥΖΕΥΞΗ ΧΑΛΑΡΗ ΕΛΑΧΙΣΤΗ Παράδειγµα σύζευξης κοινών δεδοµένων Μερικοί τύποι σύζευξης είναι λιγότερο επιθυµητοί από άλλους π.χ. σύζευξη περιεχοµένου Συνεκτικότητα Αναφέρεται στην εσωτερική συνοχή µε βάση την οποία κατασκευάζεται ένα συστατικό Όσο πιο συνεκτικό είναι ένα συστατικό τόσο περισσότερο τα εσωτερικά µέρη του σχετίζονται µεταξύ τους και εξυπηρετούν το συνολικό σκοπό του Ένα συστατικό είναι συνεκτικό άν όλα τα τµήµατά του χρειάζονται για την εκτέλεση της ίδιας εργασίας Κοινός στόχος της σχεδίασης είναι να γίνει κάθε συνθετικό όσο συνεκτικότερο γίνεται Τύποι συνεκτικότητας Συµπτωµατική (coincidental): τα τµήµατα του συστατικού δε σχετίζονται µεταξύ τους Λογική (logical): διάφορες λογικά συσχετιζόµενες συναρτήσεις ή δεδοµένα τοποθετούνται στο ίδιο συστατικό π.χ. συναρτήσεις ανάγνωσης δεδοµένων Χρονική (temporal): οι λειτουργίες του συστατικού σχετίζονται µόνο µε βάση τη χρονική περίοδο στην οποία εκτελούνται ιαδικασιακή (procedural): οι λειτουργίες πρέπει να εκτελούνται µε βάση µια συγκεκριµένη σειρά Επικοινωνιακή (communicational): οι λειτουργίες παράγουν ή ενεργούνστοίδιοσύνολοδεδοµένων Σειριακή (sequential): η έξοδος από το ένα τµήµα του συστατικού αποτελεί είσοδο για ένα άλλο Λειτουργική (functional): κάθε τµήµα της επεξεργασίας είναι απαραίτητο για την απόδοση µιας µόνο λειτουργίας 3
Τύποι συνεκτικότητας (συνέχεια) Παραδείγµατα συνεκτικότητας ΛΕΙΤΟΥΡΓΙΑ A ΛΕΙΤΟΥΡΓΙΑ A ΧΡΟΝΟΣ T0 ΛΕΙΤΟΥΡΓΙΑ A Λειτουργική Σειριακή Επικοινωνιακή ΥΨΗΛΗ ΣΥΝΕΚΤΙΚΟΤΗΤΑ ΛΕΙΤΟΥΡΓΙΑ Β ΛΕΙΤΟΥΡΓΙΑ ΛΕΙΤΟΥΡΓΙΑ Γ ΛΕΙΤΟΥΡΓΙΑ Ε logic ΛΕΙΤΟΥΡΓΙΑ Α ΛΕΙΤΟΥΡΓΙΑ Α ΣΥΜΠΤΩΜΑΤΙΚΗ ΛΟΓΙΚΗ Τα τµήµατα δε σχετίζονται Παρόµοιες λειτουργίες ΧΡΟΝΟΣ T0 + X ΧΡΟΝΟΣ T0 + 2X ΧΡΟΝΙΚΗ Σχετίζονται µε βάση το χρονισµό ΛΕΙΤΟΥΡΓΙΑ B ΛΕΙΤΟΥΡΓΙΑ Γ ΙΑ ΙΚΑΣΙΑΚΗ Σχετίζονται µε βάση τη σειρά των λειτουργιών ιαδικασιακή Χρονική Λογική Συµπτωµατική ΧΑΜΗΛΗ Ε ΟΜΕΝΑ ΛΕΙΤΟΥΡΓΙΑ A ΛΕΙΤΟΥΡΓΙΑ Β ΛΕΙΤΟΥΡΓΙΑ Γ ΕΠΙΚΟΙΝΩΝΙΑΚΗ Πρόσβαση στα ίδια δεδοµένα ΛΕΙΤΟΥΡΓΙΑ A ΛΕΙΤΟΥΡΓΙΑ Β ΛΕΙΤΟΥΡΓΙΑ Γ ΛΕΙΤΟΥΡΓΙΑ A µέρος 1 ΛΕΙΤΟΥΡΓΙΑ A µέρος 2 ΛΕΙΤΟΥΡΓΙΑ A µέρος 3 ΑΚΟΛΟΥΘΙΑΚΗ ΛΕΙΤΟΥΡΓΙΚΗ Η έξοδος του ενός τµήµατος Ακολουθιακή συνεκτικότητα είναι η είσοδος στο επόµενο µε επιπλέον πλήρεις σχετιζόµενες λειτουργίες Παράδειγµα ελέγχου συστατικών A B C D E F G A B C D E F G Σύστηµα 1 (προτιµητέο) Σύστηµα 2 Στόχος: ηµιουργία συστατικών µε υψηλό πλήθος εισόδων (fan-in) και χαµηλό πλήθος εξόδων (fan-out) Αναγνώριση και χειρισµός εξαιρέσεων Σχεδιάζουµε αµυντικά, προσπαθώντας να αποφύγουµε καταστάσεις που µπορούν να οδηγήσουν σε προβλήµατα για το σύστηµα Εξαιρέσεις (exceptions): καταστάσεις που είναι γνωστό ότι είναι ενάντια στη λειτουργία του συστήµατος Οι εξαιρέσεις συµπεριλαµβάνουν: Αδυναµία παροχής µιας υπηρεσίας Παροχή λανθασµένης υπηρεσίας ή δεδοµένων Αλλοίωση δεδοµένων Χειρισµός εξαιρέσεων Επανάληψη: επανεκτελούµε τηνυπηρεσίαµε διαφορετικό τρόπο ξεκινώντας από την προηγούµενη κατάσταση ιόρθωση: εκτελούµε επανάληψη αφού πρώτα διορθώσουµε κάποια χαρακτηριστικά του συστήµατος Αναφορά: αναφέρουµε την εξαίρεση σε κατάλληλο συστατικό και δεν εκτελούµε την υπηρεσία 4
Παρεµπόδιση και ανοχή σφαλµάτων Προσπάθεια για αντιµετώπιση σφαλµάτων µε τρόπο που να ελαχιστοποιεί τη δυσλειτουργία του συστήµατος και να µεγιστοποιεί την ασφάλεια Σφάλµα: Αποτέλεσµα ανθρώπινου λάθους Αστοχία: η αποµάκρυνση του συστήµατος από την προβλεπόµενη συµπεριφορά Χαρακτηριστικό καλής σχεδίασης: οτρόποςπου παρεµποδίζει ή ανέχεται τα σφάλµατα Τεχνικές για αντιµετώπιση σφαλµάτων Παθητική ανίχνευση σφαλµάτων Αντιµετωπίζουµε τα σφάλµατα µόλις εµφανιστούν οι αστοχίες στην εκτέλεση Ενεργητική ανίχνευση σφαλµάτων Έλεγχος για σφάλµαταπρινγίνουναστοχίες ιόρθωση σφαλµάτων Επανόρθωση του συστήµατος µετά τη δράση του σφάλµατος Ανοχή στα σφάλµατα Αποµόνωση της ζηµιάς που προκαλείται από ένα σφάλµα Ενεργητική ανίχνευση σφαλµάτων Περιοδικός έλεγχος συµπτωµάτων σφαλµάτων και προσπάθεια πρόβλεψης αστοχιών (συχνά σε δεύτερο υπολογιστή) Αµοιβαία υποψία (mutual redundancy): κάθε συστατικό του συστήµατος υποθέτει οτι τα άλλα περιέχουν σφάλµατα και ελέγχει την είσοδό του για ορθότητα και συνέπεια Πλεονασµός (redundancy): τα αποτελέσµατα δύο ή περισσοτέρων διεργασιών συγκρίνονται για να εξεταστεί άν είναι πανοµοιότυπα Π.χ. στο διαστηµικό λεωφορείο 7 υπολογιστές ψηφίζουν για κάθε επόµενη ενέργεια ιόρθωση και ανοχή σφαλµάτων ιόρθωση σφαλµάτων Στρατηγική για χειρισµό σφαλµάτων Επανόρθωση της δυσλειτουργίας που έγινε από κάποια αστοχία (π.χ. καταγραφή της δυσλειτουργίας και διακοπή της λειτουργίας του συστήµατος) Αλλαγή του συστήµατος για να εξαλειφθεί η δυσλειτουργία Ανοχή σφαλµάτων Αποµόνωση της ζηµιάς που προκαλείται από ένα σφάλµα Ενέργειες ώστε το σφάλµα ναµην εξελιχθεί σε αστοχία 5
Τεχνικές για βελτίωση του σχεδίου Μείωση της πολυπλοκότητας Σχεδίαση µε συµβόλαιο Πρωτοτυποποίηση της σχεδίασης Ανάλυση δέντρου σφαλµάτων Πολυπλοκότητα υσκολία στην κατανόηση και την διαχείριση Πολυπλοκότητα σχεδίασης: υσκολία στην κατανόηση και την διαχείριση προϊόντων σχεδίασης Σχετίζεται µε τοναριθµό των χαρακτηριστικών, π.χ. έννοιες, διαγράµµατα, σχέσεις µεταξύ των στοιχείων των διαγραµµάτων, που περιλαµβάνονται στο σχέδιο αλλά και στη διαδικασία σχεδίασης Σχετίζεται µε σφάλµατα στο λογισµικό και γι αυτό είναι επιθυµητό να έχουµε χαµηλή πολυπλοκότητα Μείωση της πολυπλοκότητας σχεδίασης Σχεδίαση µε συµβόλαιο Αστοχίες ανά χιλιάδες γραµµές κώδικα 10 9 8 7 6 5 4 3 2 1 20 25 30 35 Πολυπλοκότητα σχεδίασης του συστήµατος Card and Class 1990 Το σύστηµα αποτελείται από έναν αριθµό αλληλεπιδρόντων συστατικών Υπάρχουν αυστηρά καθορισµένες προδιαγραφές για το τι κάνει το κάθε συστατικό που ονοµάζονται συµβόλαια (contracts) Κάθε συµβόλαιο καλύπτει αµοιβαίες υποχρεώσεις (preconditions), µετασυνθήκες (postconditions) και διαβεβαιώσεις (invariants) π.χ. require count <= capacity not key.empty ensure has(x) item(key)=x invariant is_full =(.95*capacity<=gauge) 6
Πρωτοτυποποίηση σχεδίασης Ανάλυση δέντρου σφαλµάτων Κατασκευή πρωτοτύπου υλοποιώντας µόνο τις αναγκαίες λειτουργίες Μπορεί να είναι: µιας χρήσης (throw away prototype) Μέρος του τελικού συστήµατος (rapid prototyping) Το ίδιο αποτελεσµατική όπως οι παραδοσιακές τεχνικές ανάπτυξης συστηµάτων Either event can occur Valve stuck in open position Basic events Cooling system overflows OR Timeout control fails Failure Fill mode remains on AND Sensor fails Both events must occur G1 G2 G3 G4 G5 A1 A2 A3 A4 Fault tree A5 G2 G1 G3 {G4, G5} {A4, A5} {A1, G5} {A2, G5} {A1, A3} {A1, A4} {A2, A3} {A2, A4} Cut-set tree Τµήµα συστήµατος ελέγχου ενός πυρηνικού αντιδραστήρα έντρο σφαλµάτων και δέντρο συνόλου αποκοπής Σύνολο αποκοπής [cut-set] είναι το σύνολο των κόµβων-φύλλων του δέντρου αποκοπής όταν αφαιρεθούν τα διπλά αντίγραφα Ανάλυση δέντρου σφαλµάτων Βοηθάει στην αναζήτηση περιπτώσεων που µπορεί να οδηγήσουν σε αστοχίες είχνουν τη λογική διαδροµή από το αποτέλεσµα στην αιτία της αστοχίας Επαλήθευση και επικύρωση της σχεδίασης Επικύρωση (validation): εξασφάλιση οτι η σχεδίαση ικανοποιεί όλες τις απαιτήσεις που ορίστηκαν από τον πελάτη Επαλήθευση (verification): εξασφάλιση οτι υπάρχουν τα χαρακτηριστικά της καλής σχεδίασης 7
Τεχνικές επικύρωσης και επαλήθευσης σχεδίασης Μαθηµατική επικύρωση Μέτρηση της ποιότητας του σχεδίου Σύγκριση σχεδίων Μια προδιαγραφή, πολλά σχέδια Πίνακες σύγκρισης Ανασκοπήσεις σχεδίασης Κριτική ανασκόπηση σχεδίου Ανασκόπηση σχεδίου προγράµµατος Αξία των ανασκοπήσεων σχεδίων Μαθηµατική επικύρωση Αποδεικνύει οτι το σχέδιο είναι σωστό είχνει: Αν το σύνολο των εισόδων µετατρέπεται σωστά στο σύνολο των εξόδων Αν η διεργασία ολοκληρώνεται χωρίς αστοχίες Μέτρηση της ποιότητας του σχεδίου Μέτρηση του σχεδίου σε υψηλό επίπεδο, συµπεριλαµβανοµένων της σύζευξης και της συνεκτικότητας Μέτρηση της πολυπλοκότητας σε κάθε συστατικό και της πολυπλοκότητας των σχέσεων µεταξύ των συστατικών Περισσότερα για µετρήσεις σε επόµενο µάθηµα! Σύγκριση σχεδίων Μια προδιαγραφή πολλά σχέδια ηµιουργία πολλών σχεδίων για µια προδιαγραφή µε βάση διαφορετικά στυλ αρχιτεκτονικής Επιλογή του σχεδίου που είναι πιο κατάλληλο για το σκοπό του συστήµατος Πίνακες σύγκρισης µε διάφορα κριτήρια Ευκολία αλλαγής των αλγορίθµων Ευκολία αλλαγής της αναπαράστασης δεδοµένων Ευκολία αλλαγής λειτουργιών Easy to change function Καλή απόδοση Ευκολία επαναχρησιµοποίησης 8
Πίνακας σύγκρισης σχεδίασης Γενική µέθοδος σχεδίασης της αρχιτεκτονικής Table 5.5. Weighted comparison of Shaw and Garlan designs. Attribute Priority Shared Abstract data Implicit Pipe and filter data type invocation Easy to change 1 1 2 4 5 algorithm Easy to change 4 1 5 2 1 data representation Easy to change 3 4 1 4 5 function Good 3 5 4 2 2 performance Easy to reuse 5 1 4 2 5 Total 37 57 40 55 Από τις απαιτήσεις του χρήστη «αρ. δωµατίων, χρώµα, παράθυρα, πόρτες» architectural design Στοσχέδιοαρχιτεκτονικής Μέθοδος σχεδίασης της αρχιτεκτονικής 1. Καθορισµός προδιαγραφών απαιτήσεων (συλλογή σεναρίων, περιγραφή απαιτήσεων, περιορισµοί) 2. Περιγραφή των στυλ αρχιτεκτονικής που έχουν επιλεγεί 3. Αξιολόγηση των αντίστοιχων χαρακτηριστικών ποιότητας 5. Προσδιορισµός της ευαισθησίας των χαρακτηριστικών ποιότητας των στυλ αρχιτεκτονικής 6. Αξιολόγηση των υποψήφιων αρχιτεκτονικών µε βάση την ευαισθησία των χαρακτηριστικών ποιότητας Μοντέλο περιγραφής απαιτήσεων Μετασχηµατισµοί ηµιουργία του µοντέλου αρχιτεκτονικής Αρχιτεκτονική προγράµµατος 9
ιαχωρισµός της αρχιτεκτονικής Κάνουµε οριζόντιο και κάθετο διαχωρισµό της αρχιτεκτονικής Οριζόντιος διαχωρισµός Ορίζουµε ξεχωριστούς κλάδους της ιεραρχίας των συστατικών για κάθε κύρια λειτουργία Χρησιµοποιούµε συστατικά ελέγχου για να συντονίζουµε την επικοινωνία µεταξύ των λειτουργιών Λειτουργία 1 Λειτουργία 3 Λειτουργία 2 Κάθετος διαχωρισµός: Παραγοντοποίηση Σχεδιάζουµε έτσιώστεοιαποφάσειςκαιοι λειτουργικότητα να στρωµατοποιούνται Τα συστατικά αποφάσεων πρέπει να βρίσκονται στην κορυφή της αρχιτεκτονικής Αποφάσεις Λειτουργικότητα Γιατί θέλουµε διαχωρισµένη αρχιτεκτονική; Έχει σαν αποτέλεσµα λογισµικό που είναι πιο εύκολο να ελεγχθεί Οδηγεί σε λογισµικόπουείναιεύκολονα συντηρηθεί Είναι πιο δύσκολο να µεταφέρονται παρενέργειες (π.χ. από λάθη µεταξύ των δοµικών µονάδων) Το λογισµικόπουπαράγεταιείναιπιοεύκολονα επεκταθεί 10
οµηµένη σχεδίαση Στόχος: να κατασκευάσουµε µια διαχωρισµένη αρχιτεκτονική προγράµµατος Προσέγγιση: Τα διαγράµµατα ροής αντιστοιχίζονται σε µια αρχιτεκτονική προγράµµατος κλήσης και επιστροφής (call and return) the PSPEC and STD are used to indicate the content of each module Συµβολισµός: διαγράµµατα αρχιτεκτονικής Χαρακτηριστικά της ροής πληροφοριών στο σύστηµα Ροή Μετασχηµατισµού Ροή συναλλαγής Γενική µέθοδος αντιστοίχισης Αποµονώνουµε τα όρια της εισερχόµενης και της εξερχόµενης ροής Γιαροέςσυναλλαγήςαποµονώνουµε τοκέντροτης συναλλαγής Ξεκινώντας από τα άκρα του διαγράµµατος αντιστοιχούµε τιςµετατροπές του διαγράµµατος ροής σε συστατικά Προσθέτουµε συστατικά ελέγχου ανάλογα µε τις ανάγκες Βελτιώνουµε την αρχιτεκτονική χρήση κανόνων καλού σχεδίου χρήση στυλ αρχιτεκτονικής και αξιολόγηση των χαρακτηριστικών τους Αντιστοίχιση µετατροπών a b g h d e f c i j ιάγραµµα ροής x1 Αντιστοίχιση µετατροπής x2 x3 x4 b c d e f g i a h j 11
Παραγοντοποίηση Παράδειγµα παραγοντοποίησης πρώτου επιπέδου Αυξανόµενη λήψη αποφάσεων Συστατικά που λαµβάνουν αποφάσεις main program input processing output Συστατικά που εκτελούν λειτουργίες Αντιστοίχιση δευτέρου επιπέδου Ροή συναλλαγών incoming flow D B C A control main T ιαδροµή ενέργειας A C B Απεικόνιση από τα όρια τηςροήςκαιπροςταέξω D 12
Παράδειγµα συναλλαγής Αρχές αντιστοίχισης συναλλαγών operator commands process operator commands assembly record fixture setting report robot control fixture servos display screen robot control software in reality, other commands would also be shown Αποµονώνουµε τηδιαδροµή εισερχόµενης ροής Ορίζουµε τιςδιαδροµές ενέργειας (είναι σαν ακτίνες σε τροχό) Αξιολογούµε τηροήσεκάθεδιαδροµή ενέργειας Ορίζουµε την αρχιτεκτονική αποστολής και ελέγχου Αντιστοιχίζουµε κάθεδιαδροµή ενέργειας ξεχωριστά Αντιστοίχιση συναλλαγών a Μοντέλο ροής δεδοµένων b a x2 d e f x1 b t l t m x3 d g n g h x3.1 i k h j e i j f k x4 l m n Απεικόνιση Αντιστοίχιση του µοντέλου ροής read command command input validate command produce error message process operator commands fixture status determine type report generation send control value Κάθε µια από τις διαδροµές ενέργειας πρέπει να επεκταθεί επιπλέον 13
read command Βελτίωση του διαγράµµατος αρχιτεκτονικής command input validate command read fixture status produce error message determine setting process operator commands fixture status format setting determine type report generation read record send control value calculate output values format report Architecture Trade-off Analysis method (ΑΤΑΜ) Τεχνική για αξιολόγηση αρχιτεκτονικών λογισµικού µε βάση κάποια επιθυµητά χαρακτηριστικά ποιότητας (π.χ. ασφάλεια και ευκολία τροποποιήσεων) Χρησιµοποιεί στυλ αρχιτεκτονικής βασισµένα σε χαρακτηριστικά (attribute-based architectural styles) Χαρακτηρισµός χαρακτηριστικών ποιότητας λογισµικού Σε τι ερεθίσµατα πρέπει να αποκρίνεται η αρχιτεκτονική; Πώς µετράται η επίτευξη των χαρακτηριστικών ποιότητας; Ποιες αποφάσεις σχετικά µε την αρχιτεκτονική επηρεάζουν την επίτευξη του χαρακτηριστικού αυτού; Βήµατα της ΑΤΑΜ 1. Παρουσίαση της ΑΤΑΜ των αναγκών που θα καλύψει το λογισµικό και των αρχιτεκτονικών που προτείνονται 2. Συλλογή σεναρίων, δηµιουργία του δέντρου χρησιµότητας χαρακτηριστικών ποιότητας και ανάλυση των αρχιτεκτονικών προσεγγίσεων 3. Αξιολόγηση των διαφόρων εναλλακτικών αρχιτεκτονικών λύσεων µε βάση τα επιθυµητά χαρακτηριστικά ποιότητας 4. Παρουσίαση των αποτελεσµάτων Περισσότερες πληροφορίες για την ΑΤΑΜ στο: Kazman, R., M. Klein, and P. Clements, ATAM: Method for Architecture Evaluation. 2000, Software Engineering Institute: Pittsburgh, PA 15213-3890. p. 83. 14