Αρχιτέκτονας Λογισμικού



Εισαγωγή

Η αρχιτεκτονική λογισμικού (software architecture) ασχολείται με (Shan and Garlan, 1996):
Την οργάνωση του συστήματος ως σύνθεση εξαρτημάτων.
Καθολικές δομές ελέγχου.
Πρωτόκολλα επικοινωνίας, συγχρονισμού και πρόσβασης σε αποθηκευμένα δεδομένα.
Την ευθυγράμμιση των λειτουργιών με τα στοιχεία του σχεδίου.
Τη σύνθεση των στοιχείων του σχεδίου.
Τη φυσική υλοποίηση του συστήματος.
Την απόδοση και την ανταπόκριση σε αυξανόμενες απαιτήσεις (scaling).
Τις δυνατότητες εξέλιξης.
Την επιλογή μεταξύ εναλλακτικών σχεδίων.
Η αρχιτεκτονική ενός συστήματος λογισμικού περιγράφει το σύστημα ως σύνολο υπολογιστικών εξαρτημάτων και συνδέσεων μεταξύ αυτών των εξαρτημάτων.




Στόχοι της Αρχιτεκτονικής Λογισμικού

  • Η αρχιτεκτονική λογισμικού στοχεύει στον εντοπισμό και την καταγραφή, μέσα από την συσσωρευμένη πείρα των μηχανικών λογισμικού, συγκεκριμένων αρχιτεκτονικών μοτίβων και προτύπων (architectural styles, architectural patterns) που περιγράφουν συστήματα λογισμικού σε υψηλό επίπεδο αφαίρεσης. 
  • Στην αρχή του σχεδιασμού ενός συστήματος λογισμικού εντοπίζουμε το αρχιτεκτονικό πρότυπο που ταιριάζει καλύτερα στο σύστημα. 
  • Προσπαθούμε να μην επανεφευρίσκουμε τον τροχό αλλά να καθοδηγούμαστε από δοκιμασμένες από τον χρόνο και από την πράξη λύσεις. 
  • Καθοδηγούμαστε έτσι ώστε να αποφύγουμε τον καταποντισμό μέσα σε μία θάλασσα αντικειμένων (Brushmann et al., 1996). 
  • Τα αρχιτεκτονικά μοτίβα και πρότυπα χρησιμεύουν επίσης και ως μέσο επικοινωνίας μεταξύ των μηχανικών λογισμικού, αφού αποτελούν ένα κοινό λεξιλόγιο. 
Η Αρχιτεκτονική ως Βάση της Διεργασίας Ανάπτυξης Λογισμικού

Η αρχιτεκτονική λογισμικού καθοδηγεί τη διεργασία ανάπτυξης λογισμικού:

Μετά την ανάλυση των απαιτήσεων επιλέγεται η κατάλληλη για το σύστημα αρχιτεκτονική.
Η αρχιτεκτονική αναλύεται και παρουσιάζεται στους εταίρους.
Το σύστημα σχεδιάζεται και υλοποιείται σύμφωνα με την αρχιτεκτονική.
Επιβεβαιώνεται ότι η υλοποίηση είναι σύμφωνη με την επιλεχθείσα αρχιτεκτονική.

Είναι πιθανό το σύστημα να μπορεί να αναλυθεί σε υποσυστήματα που το καθένα υλοποιείται με διαφορετική αρχιτεκτονική, ή να χρησιμοποιηθούν διάφορες αρχιτεκτονικές σε διαφορετικά επίπεδα αφαίρεσης.

Φακής Γεώργιος