Αρχιτεκτονική σχεδίαση
Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
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.
 
Ασκήσεις
-  Περιγράψτε τα πλεονεκτήματα και μειονεκτήματα των δομικών 
αρχιτεκτονικών μοντέλων
που εξετάσαμε.
Για κάθε μοντέλο δώστε ένα παράδειγμα εφαρμογής που το ακολουθεί.
 -  Δώστε το κατάλληλο δομικό μοντέλο για κάθε ένα από τα παρακάτω
συστήματα:
	
	-  Στατιστική ανάλυση δεδομένων
	
 -  Προσομοίωση της κυκλοφορίας στην πόλη
	
 -  Λειτουργικό σύστημα
	
 -  Πληροφοριακό σύστημα τράπεζας
	
 -  Πρόγραμμα που παίζει σκάκι
	
 
 -  Επιλέξτε μια εφαρμογή που γνωρίζετε και γράψτε τα κύρια στοιχεία
του εγγράφου περιγραφής σχεδίου λογισμικού.