Αντικείμενα (Objects) και Υπηρεσίες (Services)

Η προσέγγιση ανάπτυξης λογισμικού με βάση το αντικείμενο (object oriented) και η προσέγγιση με βάση την υπηρεσία (service oriented) έχουν δραστικά διαφοροποιήσει τη διαδικασία ανάπτυξης λογισμικού αλλά και γενικότερα τη διαδικασία ανάπτυξης των συστημάτων. Η αντικειμενοστρεφής[1] προσέγγιση αντικατέστησε τη διαδικαστική προσέγγιση (procedural approach), διαμορφώνοντας αρχές και προσφέροντας τεχνικές για την αντιμετώπιση της πολυπλοκότητας των σημερινών συστημάτων. Οι βασικές αυτές αρχές καλύπτουν όχι μόνο τις απαιτήσεις ανάπτυξης απλών υπολογιστικών εφαρμογών, αλλά και του λογισμικού των Κυβερνοφυσικών Συστημάτων (Cyber-Physical System) και των συστημάτων του Διαδικτύου των Αντικειμένων (Internet of Things - IoT). Αναφέρονται δε σε μονολιθικές εφαρμογές αλλά και σε κατανεμημένες εφαρμογές, οι οποίες αξιοποιούν ως πλατφόρμα εκτέλεσης (execution environment) το Διαδίκτυο (Internet) και τον Παγκόσμιο Ιστό (World Wide Web).

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

Με τη μετεξέλιξη του Διαδικτύου σε Διαδίκτυο των Αντικειμένων, η μετατροπή φυσικών αντικειμένων σε “έξυπνα” (smart objects) αποτελεί μια μεγάλη πρόκληση για τον κατασκευαστή λογισμικού. Τα “έξυπνα” αντικείμενα παρέχουν υπηρεσίες που μπορούν να αξιοποιηθούν αποτελεσματικά για τη δημιουργία καινοτόμων προϊόντων και υπηρεσιών αλλά και για τη βελτίωση της ανταγωνιστικότητας των σημερινών προϊόντων. H παρουσίαση βασικών εννοιών και αρχών προς την κατεύθυνση αυτή είναι μέσα στους βασικούς στόχους του παρόντος βιβλίου.


[1] Το “object oriented programming” αποδίδεται ως “αντικειμενοστρεφής προγραμματισμός” με βάση το ΕΛΟΤ/ΤΕ48/ΟΕ1 «Ορολογία Πληροφορικής» http://www.eleto.gr/inforterm/greek/TE48-OE1.htm

[2] A constructivism based approach to Teach Object-Oriented programming https://sites.google.com/site/thramboulidiskleanthis/teaching/teaching-oop