Αρχιτεκτονική σχεδίαση
Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr
Στοιχεία του σχεδίου
Βασικές έννοιες
Η αφαίρεση επιτυγχάνεται στα παρακάτω επίπεδα:
Η βηματική εκλέπτυνση (stepwise refinement)
είναι ένας τρόπος για να δαμάσει κανείς το πλήθος των λεπτομερειών
του τελικού σχεδίου.
Η τμηματικότητα ενός σχεδίου μειώνει τη συνολική πολυπλοκότητα του
συστήματος και κατά συνέπεια το κόστος υλοποίησης και το ενδεχόμενο
λαθών.
Μια καλή μέθοδος σχεδιασμού πρέπει να επιτρέπει:
Ο καλός σχεδιασμός πρέπει να φέρνει κοντά τμήματα που εμφανίζουν
υψηλή συνεκτικότητα.
Διακρίνουμε τα παρακάτω αυξανόμενα επίπεδα συνεκτικότητας:
- συμπτωματική συνεκτικότητα (coincidental cohesion)
- λογική συνεκτικότητα (logical cohesion)
- χρονική συνεκτικότητα (temporal cohesion)
- διαδικαστική συνεκτικότητα (procedural cohesion)
- επικοινωνιακή συνεκτικότητα (communicational cohesion)
- ακολουθιακή συνεκτικότητα (sequential cohesion)
- λειτουργική συνεκτικότητα (functional cohesion)
Ο καλός σχεδιασμός πρέπει κατά το δυνατόν να αποφεύγει τη σύζευξη μεταξύ
τμημάτων.
Διακρίνουμε τα παρακάτω αυξανόμενα επίπεδα σύζευξης:
- σύζευξη δεδομένων (data coupling)
- σύζευξη δομής δεδομένων (stamp coupling) (ή αντιγράφου)
- σύζευξη ελέγχου (control coupling)
- σύζευξη κοινών δεδομένων (common coupling) (ή από κοινού σύνδεση)
- σύζευξη εξωτερικών δεδομένων (external coupling)
- σύζευξη περιεχομένων (content coupling)
Αρχές σχεδιασμού
- Το σχέδιο να ανταποκρίνεται στις προδιαγραφές
- Πρέπει να εξετάζονται διαφορετικά εναλλακτικά σχέδια
- Το σχέδιο πρέπει να είναι τεκμηριωμένο
- Χρήση αφαίρεσης για απόκρυψη λεπτομερειών
- Χρήση παρομοίων σχεδίων
- Απλότητα
- Αποφυγή ειδικών περιπτώσεων
- Ελαχιστοποίηση της διανοητικής απόστασης ανάμεσα στο πρόβλημα και τη λύση
- Εννοιολογική ακεραιότητα: χρήση ίδιων μορφών για παρόμοιες λειτουργίες
- Τμηματικότητα
- Πρόβλεψη μελλοντικών αλλαγών
- Γενικότητα και ευελιξία: επαναχρησιμοποίηση, μείωση κώδικα, συντήρησης
- Χρήση αποδοτικών αλγορίθμων
- Οι διεπαφές των αρθρωμάτων πρέπει να προσδιορίζονται με πληρότητα αλλά και
με οικονομία (αποφυγή προσδιορισμού μη απαραίτητων στοιχείων)
- Οι διεπαφές πρέπει να περιλαμβάνουν έλεγχο των δεδομένων τους
Δομή του συστήματος
Μοντέλα ελέγχου
Αποσύνθεση σε τμήματα
Η αποσύνθεση σε τμήματα μπορεί να γίνει με βάση:
- τα αντικείμενα που απαρτίζουν το σύστημα, ή
- τη ροή των δεδομένων στο σύστημα
Εξειδικευμένες αρχιτεκτονικές
Ορισμένες εφαρμογές αναπτύσσονται με βάση τυποποιημένες αρχιτεκτονικές
για το συγκεκριμένο πεδίο.
Παραδείγματα:
- Πληροφοριακά συστήματα: αρχιτεκτονική τριών επιπέδων:
- Δεδομένα
- Επιχειρηματική λογική
- Διεπαφή χρήστη
- Μεταγλωττιστές:
- Λεκτική ανάλυση
- Συντακτική ανάλυση
- Σημασιολογική ανάλυση, έλεγχος τύπων
- Βελτιστοποίηση
- Δημιουργία κώδικα
- Λειτουργικά συστήματα:
Το έγγραφο περιγραφής σχεδίου λογισμικού
Το έγγραφο περιγραφής σχεδίου λογισμικού (software design description) περιέχει τα παρακάτω στοιχεία (Γιακουμάκης 1994, σ. 250):
- Εισαγωγή
- Σκοπός
- Γενική άποψη
- Ορισμοί και ακρονυμίες
- Αναφορές
- Περιγραφή αποσύνθεσης
- Αποσύνθεση σε μονάδες
- Περιγραφή μονάδας 1
- Περιγραφή μονάδας 2
- Αποσύνθεση σε ταυτόχρονες διεργασίες
- Περιγραφή διεργασίας 1
- Περιγραφή διεργασίας 2
- Αποσύνθεση δεδομένων
- Περιγραφή οντότητας δεδομένων 1
- Περιγραφή οντότητας δεδομένων 2
- Περιγραφή εξαρτήσεων
- Διεπαφές μονάδων
- Περιγραφή μονάδας 1
- Περιγραφή μονάδας 2
- Διεπαφές διεργασιών
- Περιγραφή διεργασίας 1
- Περιγραφή διεργασίας 2
- Λεπτομερές σχέδιο
- Λεπτομερές σχέδιο μονάδων
- Λεπτομερές σχέδιο μονάδας 1
- Λεπτομερές σχέδιο μονάδας 2
- Λεπτομερές σχέδιο διεργασιών
- Λεπτομερές σχέδιο διεργασίας 1
- Λεπτομερές σχέδιο διεργασίας 2
Βιβλιογραφία
- Εμμ. Α. Γιακουμάκης
Τεχνολογία Λογισμικού: Απαιτήσεις Λογισμικού, σχεδίαση λογισμικού,
σελίδες 99-156, 235-250.
Εκδόσεις Α. Σταμούλης, Αθήνα, Πειραιάς, 1994.
- Εμμανουήλ Σκορδαλάκης.
Εισαγωγή στην Τεχνολογία Λογισμικού, σελίδες 79-118.
Εκδόσεις Συμμετρία, 1991.
- L. Barroca, J. Hall, and
P. Hall, editors.
Software Architectures: Advances and Applications.
Springer Verlag, 1999.
- L. L.
Constantine and E. Yourdon.
Structured Design.
Prentice Hall, 1979.
- Microsoft Corporation.
The component object model specification.
Technical report, Microsoft Corporation, Redmond, WA, USA, October 1995.
- Alan M. Davis.
201
Principles of Software Development, pages 73–99.
McGraw-Hill, 1995.
- Peter
Duchessi and InduShobha Chengalur-Smith.
Client/server benefits, problems, best practices.
Communications of the ACM, 41(5):87–94, May 1998.
- Institute of Electrical and
Electronics Engineers, Inc., New York, NY, USA.
IEEE Recommended Practice for Software Design Descriptions, 1998.
IEEE Standard 1016-1998.
- Institute of Electrical and
Electronics Engineers, Inc., New York, NY, USA.
IEEE Recommended Practice for Architectural Description of Software
Incentive Systems, 2000.
IEEE Standard 1471-2000.
- Scott M. Lewandowski.
Frameworks for component-based client/server computing.
ACM Computing Surveys, 30(1):3–27, March 1998.
- Bertrand Meyer.
Object-oriented Software Construction.
Prentice Hall, 1988.
- Object
Management Group, Inc.
The common object request broker: Architecture and specification, July 1996.
Revision 2.0 (Updated).
- Roger S. Pressman.
Software Engineering: A Practitioner's Approach, pages 330–393.
McGraw-Hill, fifth edition, 2000.
European Adaptation. Adapted by Darrel Ince.
- Konstantinos Raptis,
Diomidis Spinellis, and Sokratis Katsikas.
Multi-technology distributed objects and their integration (http://www.dmst.aueb.gr/dds/pubs/jrnl/2001-CSI-Components/html/imtd.html).
Computer Standards & Interfaces, 23:157–168, July 2001.
- Mary Shaw and David
Garlan.
Formulations and Formalisms in Software Architecture.
Springer Verlag, 1995.
Lecture Notes in Computer Science 1000.
- J. Siegel.
A preview of CORBA 3.
Computer, 32(5):114–116, May 1999.
- Ian Sommerville.
Software Engineering, pages 215–259.
Addison-Wesley, sixth edition, 2001.
- Diomidis Spinellis.
The computer's new clothes (http://www.dmst.aueb.gr/dds/pubs/jrnl/1998-IEEESoft-CliServ/html/CliServ.html).
IEEE Software, 15(6):14–17, November/December 1998.
- Sun
Microsystems Inc.
Java remote
method invocation specification.
Available online http://java.sun.com/docs/guide/rmi/spec/rmiTOC.html/ (February
2002), December 1999.
Revision 1.7, Java 2 SDK, Standard Edition, v1.3.0.
Ασκήσεις
- Περιγράψτε τα πλεονεκτήματα και μειονεκτήματα των δομικών
αρχιτεκτονικών μοντέλων
που εξετάσαμε.
Για κάθε μοντέλο δώστε ένα παράδειγμα εφαρμογής που το ακολουθεί.
- Δώστε το κατάλληλο δομικό μοντέλο για κάθε ένα από τα παρακάτω
συστήματα:
- Στατιστική ανάλυση δεδομένων
- Προσομοίωση της κυκλοφορίας στην πόλη
- Λειτουργικό σύστημα
- Πληροφοριακό σύστημα τράπεζας
- Πρόγραμμα που παίζει σκάκι
- Επιλέξτε μια εφαρμογή που γνωρίζετε και γράψτε τα κύρια στοιχεία
του εγγράφου περιγραφής σχεδίου λογισμικού.