ΘεωρIα και ΠρAξη


Είναι ευρέως αποδεκτό ότι, για τη σε βάθος κατανόηση βασικών αρχών και εννοιών που έχουν σχέση με την ανάπτυξη λογισμικού, πρωταρχικό ρόλο διαδραματίζει η ενασχόληση με τη διαδικασία ανάπτυξης μέσα από μελέτες περίπτωσης (case studies). Η εικόνα στο Σχήμα 1.2 --από τοίχο της Βιβλιοθήκης της Βέροιας-- αποδίδει πλήρως τη σημασία της ενασχόλησης με την εφαρμογή των θεωρητικών εννοιών στην πράξη. Είναι ο πλέον αποδοτικός τρόπος για τη σε βάθος κατανόηση των εννοιών. Αυτός είναι ο λόγος που έχουμε υιοθετήσει ένα σύνολο από μελέτες περίπτωσης τις οποίες δουλεύουμε βήμα προς βήμα, για να δούμε μέσα από αυτές τις βασικές έννοιες και αρχές της ανάπτυξης λογισμικού, σε συνδυασμό με τις αρχές του αντικειμενοστρεφούς παραδείγματος προγραμματισμού και τις έννοιες του Αντικειμένου και της Υπηρεσίας. Κάνουμε πρώτα μια αναφορά στις έννοιες και τα προβλήματα που αυτές έρχονται να αντιμετωπίσουν και στη συνέχεια περνάμε στην εκτέλεση ενός συνόλου δραστηριοτήτων για την κατανόηση των εννοιών μέσα από την εφαρμογή τους στην πράξη.

Κάθε Δραστηριότητα, που εμφανίζεται στη συνέχεια του βιβλίου, είναι ένα καλώς ορισμένο έργο που καλείται να εκτελέσει ο αναγνώστης, αξιοποιώντας την ήδη αποκτηθείσα γνώση και τα κατάλληλα εργαλεία. Δίνουμε τη βοήθεια που χρειάζεται για να φέρει σε πέρας το έργο και στο τέλος του κεφαλαίου παρουσιάζουμε βήμα προς βήμα ενδεικτική λύση, καθώς και εναλλακτικές επιλογές τις οποίες και σχολιάζουμε. Σε πολλές περιπτώσεις ωστόσο είναι απαραίτητο να παραθέσουμε και θεωρητικές έννοιες. Αυτός δε είναι ο λόγος που ο αναγνώστης καλείται να μελετά την πρόταση που παραθέτουμε, ακόμη και αν έχει εκτελέσει επιτυχώς μόνος του το έργο που περιγράφει η Δραστηριότητα.

Είναι γνωστό ότι τα κατάλληλα εργαλεία και η αξιοποίηση αποδεδειγμένα καλών πρακτικών είναι απαραίτητη προϋπόθεση για τη βελτίωση της αποτελεσματικότητας της διαδικασίας ανάπτυξης συστημάτων. Η περιγραφή καλών πρακτικών στη διαδικασία ανάπτυξης λογισμικού αποτελεί βασικό στόχο αυτού του βιβλίου. Πολλές από τις καλές πρακτικές έχουν τυποποιηθεί με τη μορφή μοτίβων σχεδιασμού (design patterns). Αν και το θέμα αυτό θεωρείται προχωρημένο για εισαγωγικά βιβλία στο αντικείμενο του προγραμματισμού, εμείς επιλέξαμε να παρουσιάσουμε ορισμένα μοτίβα σχεδιασμού και να δούμε τη χρησιμότητα τους στη διαδικασία ανάπτυξης συστήματος, ελπίζοντας αυτό να αποτελέσει κίνητρο για τον αναγνώστη προς την κατεύθυνση αυτή.

Παράλληλα επιλέξαμε να εισαγάγουμε τον αναγνώστη σε επαγγελματικά εργαλεία ανάπτυξης λογισμικού. Ξεκινάμε λοιπόν στα πρώτα στάδια με απλά εργαλεία, για να αποφύγουμε την εισαγωγή της πολυπλοκότητας του εργαλείου στη διαδικασία ανάπτυξης. Στη συνέχεια προχωράμε στην παρουσίαση και χρήση επαγγελματικών εργαλείων, τα οποία βέβαια είναι στην επιλογή του χρήστη αν και πότε θα τα χρησιμοποιήσει.

Στις επόμενες ενότητες κάνουμε μια αναφορά στις δραστηριότητες (1.3), στις μελέτες περίπτωσης (1.4), στις ασκήσεις που χρησιμοποιούνται σε ορισμένες δραστηριότητες (1.5), στα εργαλεία ανάπτυξης (1.6), στα μοτίβα σχεδιασμού (1.7) και στα εργαλεία αφαιρετικής περιγραφής δομής και συμπεριφοράς του λογισμικού (1.8), τα οποία εισάγονται και χρησιμοποιούνται στο βιβλίο. Όλα αυτά έχουν στόχο να βοηθήσουν τον κατασκευαστή του λογισμικού στη φάση κατανόησης του προβλήματος και του σχεδιασμού της λύσης. Οι ενέργειες αυτές είναι απαραίτητες πριν τη συγγραφή του κώδικα. Τέλος, η ενότητα 1.9 δίνει την οργάνωση του βιβλίου σε κεφάλαια, περιγράφοντας συνοπτικά το βασικό αντικείμενο με το οποίο ασχολείται το κάθε κεφάλαιο.

Πρόσθετο υλικό που συνοδεύει το βιβλίο καθώς και διορθώσεις λαθών που θα εντοπιστούν μετά την έκδοσή του μπορείτε να βρείτε στον Διαδικτυακό τόπο του εκδότη: https://www.tziola.gr/

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