Λογισµική Μηχανική (Software Engineering)



Σχετικά έγγραφα
Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Πληροφορική. Ενότητα 1 η : Εισαγωγή. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Διαχείριση Πληροφοριακών Συστημάτων

Περιεχόµενα. Πληροφοριακά Συστήµατα: Κατηγορίες και Κύκλος Ζωής. Π.Σ. ιαχείρισης Πράξεων. Π.Σ. ιοίκησης. Κατηγορίες Π.Σ. Ο κύκλος ζωής Π.Σ.

UML. Γενικά χαρακτηριστικά Στοιχεία µοντέλων Συσχετίσεις. Παραδείγματα

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Σχεδιασµός βασισµένος σε συνιστώσες

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Εισαγωγή στη Σχεδίαση Λογισμικού

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Τεχνολογία Λογισµικού Ι Κεφάλαια 1-21

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

ΜΕΡΟΣ Ι: ΓΕΩΓΡΑΦΙΚΑ Ε ΟΜΕΝΑ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΓΕΩΓΡΑΦΙΚΩΝ ΠΛΗΡΟΦΟΡΙΩΝ Η ΦΥΣΗ ΤΩΝ ΓΕΩΓΡΑΦΙΚΩΝ Ε ΟΜΕΝΩΝ...

Κεφάλαιο 10 ο Υποπρογράµµατα

Εισαγωγή στην Τεχνολογία Λογισµικού

Εισαγωγή στην Τεχνολογία Λογισµικού

Εισαγωγή στην Τεχνολογία Λογισµικού

Επιχειρηµατικές ιαδικασίες: Εισαγωγικές Έννοιες & Αρχικά στάδια µοντελοποίησης

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΜΑΘΗΜΑ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ Β ΛΥΚΕΙΟΥ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ. 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

Επιµέλεια Θοδωρής Πιερράτος

Μεθοδολογίες Παραγωγής Λογισµικού

ΕΙΣΑΓΩΓΗ ΣΤΙΣ Β ΣΕ Ε Σ Ι ΟΜΕΝ

Α. Ερωτήσεις Ανάπτυξης

Certified Project Manager in Information Technology (CPMIT)

ΠΛΗΡΟΦΟΡΙΚΗ ΣΤΟ ΕΝΙΑΙΟ ΛΥΚΕΙΟ

Πληροφορική 2. Τεχνολογία Λογισμικού

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

Rational Unified Process:

Κεφάλαιο 4: Λογισμικό Συστήματος

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΙΟΙΚΗΣΗΣ. Στόχοι

Περίληψη ιπλωµατικής Εργασίας

Πληροφοριακά Συστήματα Διοίκησης. Επισκόπηση μοντέλων λήψης αποφάσεων Τεχνικές Μαθηματικού Προγραμματισμού

Τεχνολογία Λογισµικού Ι Κεφάλαιο 6

Εισαγωγή, Βασικές Έννοιες, Οφέλη και Κίνδυνοι

Σκοπός του μαθήματος

Βασίλειος Κοντογιάννης ΠΕ19

Μέθοδος : έρευνα και πειραματισμός

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

ΜΕΤΑΒΑΤΙΚΕΣ ΠΡΟΫΠΟΘΕΣΕΙΣ ΑΠΟΚΤΗΣΗΣ ΠΤΥΧΙΟΥ

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΟΙΚΗΣΗΣ MANAGEMENT INFORMATION SYSTEMS (M.I.S.)

Εισαγωγή στην αντικειµενοστρεφή τεχνολογία

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Γεωγραφικά Πληροφοριακά Συστήµατα (Geographical Information Systems GIS)

Αρχιτεκτονική Λογισμικού

Τι είναι τα Συστήµατα Γεωγραφικών Πληροφοριών. (Geographical Information Systems GIS)

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΥΤΟΜΑΤΙΣΜΟΥΣ

Εργαλεία CASE. Computer Assisted Systems Engineering. Δρ Βαγγελιώ Καβακλή. Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου

Ανάλυση και Σχεδιασµός Πληροφοριακών Συστηµάτων

Σχεδιαστικά Προγράμματα Επίπλου

ÈÛ ÁˆÁ ÛÙÈ μ ÛÂÈ Â ÔÌ ÓˆÓ

Βάσεις εδοµένων. Βασίλειος Βεσκούκης, Εµµ. Στεφανάκης ΣΥΣΤΗΜΑΤΑ ΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ

Πληροφορική. Μάθημα Κατεύθυνσης

ΕΝΟΤΗΤΑ III ΒΑΣΙΚΕΣ ΜΕΘΟ ΟΙ ΑΝΑΛΥΣΗΣ

Συστήματα Πληροφοριών Διοίκησης

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

Αργύρης Δέντσορας Επίκουρος Καθηγητής ΔΟΜΙΚΕΣ ΜΗΧΑΝΕΣ. Πανεπιστημιακές Παραδόσεις

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 10

Ανάλυση Συστηµάτων και Τεχνολογία Λογισµικού

ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Ελληνικό Ανοικτό Πανεπιστήµιο. Η ιαχείριση Απαιτήσεων στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

ΥΠΟΔΟΧΗ ΠΡΩΤΟΕΤΩΝ ΦΟΙΤΗΤΩΝ Παρουσίαση του Τµήµατος

ΣΗΜΕΙΩΣΕΙΣ ΓΡΑΦΙΣΤΙΚΗ ΜΕ Η/Υ 1. Του Αποστόλου Παπαποστόλου Επίκουρου Καθηγητή του ΤΕΙ Αθήνας

Παρουσίαση: Ανθρωποκεντρικός σχεδιασμός πολυμέσων ΜΙΚΡΟΠΟΥΛΟΥ ΕΥΓΕΝΙΑ ΓΤΠ61

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Εισαγωγή. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

«Περιεχόµενα. 03 Εισαγωγή Ένα ολοκληρωµένο πληροφοριακό σύστηµα. 04 Περιγραφή Εργαλείο εφαρµογής διαδικασιών

Η Oracle ανακοίνωσε την πιο ολοκληρωμένη λύση στον τομέα της Ανάλυσης δεδομένων στο Cloud

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΑΥΤΟΜΑΤΙΣΜΟ ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΑΥΤΟΜΑΤΙΣΜΟΥ ΣΤΑ ΤΕΧΝΟΛΟΓΙΚΑ ΕΠΑΓΓΕΛΜΑΤΙΚΑ ΕΚΠΑΙΔΕΥΤΗΡΙΑ-ΤΕΕ

Επαναληπτικό ιαγώνισµα Πληροφορικής Γ Γυµνασίου Γιώργος Λιακέας Σχολικός Σύµβουλος Πληροφορικής Ερωτήσεις

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

INFO. Copyright ECDL Ελλάς, Σεπτέµβριος 2004 ΤΟ ΠΕΡΙΕΧΟΜΕΝΟ ΑΥΤΟΥ ΤΟΥ ΕΝΤΥΠΟΥ ΑΦΟΡΑ ΑΠΟΚΛΕΙΣΤΙΚΑ ΤΑ ΕΞΕΤΑΣΤΙΚΑ ΚΕΝΤΡΑ ECDL

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Η ΕΚΠΑΙΔΕΥΤΙΚΗ ΡΟΜΠΟΤΙΚΗ ΣΤΟ ΔΗΜΟΤΙΚΟ ΣΧΟΛΕΙΟ

Γεώργιος Φίλιππας 23/8/2015

Ελληνικό Ανοικτό Πανεπιστήµιο. Βασικές έννοιες αντικειµενοστρεφούς τεχνολογίας. ρ. Πάνος Φιτσιλής

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Ως ανάπτυξη προϊόντος ορίζεται όλο το σύνολο των δραστηριοτήτων από την έρευνα αγοράς, µέχρι την παράδοσή του στον πελάτη.

ΑΞΙΟΠΙΣΤΙΑ ΥΛΙΚΟΥ ΚΑΙ ΛΟΓΙΣΜΙΚΟΥ

Μάθηµα 2. Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας

Ελληνικό Ανοικτό Πανεπιστήµιο Εισαγωγή στη Ενοποιηµένη Προσέγγιση Unified Process (UP) ρ. Πάνος Φιτσιλής

Τεχνολογία και Κοινωνία

Μαλούτα Θεανώ Σελίδα 1

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Περιεχόμενα. Κεφάλαιο 2 Κοινωνικοτεχνικά συστήματα 49

ΑΕΠΠ Ερωτήσεις θεωρίας

Τεχνολογικό περιβάλλον. Ορισμοί της Τεχνολογίας. Σχέση Τεχνολογίας και Επιστήμης. Επιπτώσεις της Τεχνολογίας. ΕΙΣΑΓΩΓΗ στην ΤΕΧΝΟΛΟΓΙΑ

7

ΜΕΘΟΔΟΛΟΓΙΕΣ ΑΝΑΠΤΥΞΗΣ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

Περιεχόμενα. Ανάλυση προβλήματος. Δομή ακολουθίας. Δομή επιλογής. Δομή επανάληψης. Απαντήσεις. 1. Η έννοια πρόβλημα Επίλυση προβλημάτων...

Πληροφορική (BSc & MSc)

Κεφάλαιο 7: Τεχνολογία Λογισμικού

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Σημειώσεις στο μάθημα «Στοιχεία Προγραμματισμού σε Γραφικό Περιβάλλον»

7.9 ροµολόγηση. Ερωτήσεις

Transcript:

Εµµανουήλ Στ. Σκορδαλάκη Λογισµική Μηχανική (Software Engineering) (Draft - version 1) Αθήνα, 12/11/2003 i

ii

Πρόλογος Η Λογισµική Μηχανική (Software Engineering) είναι ένας τεχνολογικός κλάδος που στηρίζεται στην Επιστήµη των Ηλεκτρονικών Υπολογιστών και αποτελεί την εφαρµογή της στην επίλυση πρακτικών προβληµάτων. Αντικείµενο της Λογισµικής Μηχανικής είναι η κατασκευή Λογισµικών Συστηµάτων (Software Systems). Οι άνθρωποι που θεραπεύουν αυτόν τον τεχνολογικό κλάδο ονοµάζονται Λογισµικοί Μηχανικοί (Software Engineers). Λογισµικά Συστήµατα Τα Λογισµικά Συστήµατα είναι υποσυστήµατα των Τεχνητών Συστηµάτων. Τα Λογισµικά Συστήµατα αυτοµατοποιούν, µε τη βοήθεια του Ηλεκτρονικού Υπολογιστή, την εκτέλεση µιας ειδικής κατηγορίας εργασιών, των δεδοµενικών εργασιών (data processes). Ουσιαστικά, σε αυτές τις εργασίες γίνεται επεξεργασία δεδοµένων και παραγωγή νέων δεδοµένων. Οι εργασίες αυτές είναι µονότονες, ανιαρές, κουραστικές και επιρρεπείς σε λάθη. Για την εκτέλεσή τους ο άνθρωπος χρησιµοποιεί περισσότερο το µυαλό του και λιγότερο το σώµα του. Ήταν το όνειρο πολλών γενεών ανθρώπων να εφευρεθεί µια µηχανή η οποία να εκτελεί αυτόµατα αυτές τις εργασίες απαλλάσσοντάς τον από ένα βαρύ φορτίο. Η µηχανή αυτή εφευρέθηκε στα µέσα του περασµένου αιώνα και είναι ο Ηλεκτρονικός Υπολογιστής (Η-Υ). Μόνο, που ο Η-Υ από µόνος του δεν µπορεί να εκτελεί αυτές τις δεδοµενικές εργασίες. Χρειάζεται ακριβείς περιγραφές τους. Τα iii

Λογισµικά Συστήµατα είναι ακριβώς αυτές οι περιγραφές και η αναγκαιότητά τους είναι ολοφάνερη. Σκοπός Ο σκοπός του βιβλίου αυτού είναι να υποστηρίξει ένα µάθηµα εισαγωγικό στον κλάδο της Λογισµικής Μηχανικής και µάλιστα εξαµηνιαίο. Περιέχει κατάλληλη ύλη που αποσκοπεί στο να βοηθήσει τους σπουδαστές στην απόκτηση γνώσεων αλλά και δεξιοτήτων απαραίτητων στην κατασκευή Λογισµικών Συστηµάτων όπως και γενική πληροφόρηση για το στίγµα αυτού του κλάδου σήµερα. Στόχοι Οι στόχοι του βιβλίου αυτού είναι: 1) Να παρουσιάσει ύλη προσεκτικά επιλεγµένη που να βοηθάει στην απόκτηση γνώσεων χρήσιµων στην κατασκευή Λογισµικών Συστηµάτων αλλά και γνώσεων πληροφοριακών της κατάστασης που βρίσκεται ο αντίστοιχος κλάδος σήµερα. 2) Να συνδράµει στην απόκτηση δεξιοτήτων στην κατασκευή Λογισµικών Συστηµάτων µέσα από την αναλυτική παρουσίαση µιας µελέτης περίπτωσης (case study) η οποία µπορεί να χρησιµοποιηθεί και ως υπόδειγµα για τη διεκπεραίωση ενός έργου στο πλαίσιο του µαθήµατος που θα στοχεύει στην κατασκευή ενός πειραµατικού λογισµικού συστήµατος. 3) Να ευαισθητοποιήσει τους σπουδαστές στο θέµα των ευθυνών τους, αν ασκήσουν το επάγγελµα του λογισµικού µηχανικού, αφού τα λογισµικά συστήµατα σήµερα επηρεάζουν αποφασιστικά τη ζωή των ανθρώπων και ενδεχόµενη σφαλλερή λειτουργία του σε ορισµένες περιπτώσεις µπορεί να προκαλέσει θανάτους ανθρώπων, σοβαρές σωµατικές βλάβες, απώλεια χρηµάτων κ.λπ. Αναγνώστες Το βιβλίο αυτό απευθύνεται σε διδάσκοντες και σε σπουδαστές Σχολών Πληροφορικής κατά κύριο λόγο. Όµως, απευθύνεται και σε επαγγελµατίες του iv

κλάδου της Λογισµικής Μηχανικής εξαιτίας του ιδιαίτερου τρόπου που αντιµετωπίζει το όλο πρόβληµα της κατασκευής των Λογισµικών Συστηµάτων. Περιεχόµενα Το βιβλίο αυτό έχει χωρίσει την ύλη που εκθέτει σε τέσσερα µέρη. Στο πρώτο µέρος γίνεται µια εισαγωγή στη Λογισµική Μηχανική. Στο δεύτερο µέρος περιγράφεται συνοπτικά η βασική Λογισµική Τεχνολογία. Στο τρίτο µέρος περιγράφεται πως εφαρµόζεται η Λογισµική Μηχανική στην πράξη µε τη βοήθεια των Μεθοδολογιών. Στο τέταρτο µέρος παρουσιάζεται µια µελέτη περίπτωσης. Τρόποι χρήσεις Ευχαριστίες Εµµ. Στ. Σκορδαλάκης v Αθήνα, Οκτώβριος 2003. v

Περιεχόµενα ΜΕΡΟΣ Α - ΤΙ ΕΙΝΑΙ Η ΛΟΓΙΣΜΙΚΗ ΜΗΧΑΝΙΚΗ 1 1. Εισαγωγή 3 1.1 Ανάγκες 3 1.2 Εργασίες 4 1.2.1 Φυσικές εργασίες 4 1.2.2 Τεχνητές εργασίες 4 1.2.3 Πνευµατικές εργασίες 9 1.3 Συστήµατα 9 1.3.1 Φυσικά Συστήµατα 9 1.3.2 Τεχνητά Συστήµατα 9 1.3.3 Συστήµατα Τεχνητής Νοηµοσύνης 12 1.4 Τεχνολογία 12 1.4.1 Λογισµική Τεχνολογία 13 1.5 Πρακτικά Προβλήµατα/Λύσεις 16 1.5.1 εδοµενικά προβλήµατα 19 1.6 Επίλυση προβληµάτων 20 1.6.1 Γνωστικό µοντέλο 20 1.6.2 Γνωστική βιβλιοθήκη 20 vi

2. Λογισµικά Συστήµατα 23 2.1 Ηλεκτρονικός Υπολογιστής 23 2.2 Λογισµικό 25 2.3 Υπολογιστικά συστήµατα 26 2.3.1 Κεντρικά 26 2.3.2 Ενσωµατωµένα 27 2.3.3 Κατανεµηµένα 28 2.4 Λογισµικά συστήµατα 32 3. Κατασκευή Λογισµικών Συστηµάτων 33 3.1 υσκολίες 34 3.2 Λογισµική εργασία 35 3.3 Λογισµική Μηχανική 46 3.4 Αντικείµενο της Λογισµικής Μηχανικής 47 ΜΕΡΟΣ Β ΒΑΣΙΚΗ ΛΟΓΙΣΜΙΚΗ ΤΕΧΝΟΛΟΓΙΑ 49 4. Γλώσσες 51 4.1 Φυσικές γλώσσες 53 4.2 Τεχνητές γλώσσες 54 4.2.1 Γλώσσες Προγραµµατισµού 54 4.2.2 Γλώσσες Μοντελοποίησης 62 4.2.3 Γλώσσες ιαπροσωπείας 62 4.2.4 Γλώσσες Σχεδίασης 67 4.3 H γλώσσα µοντελοποίησης UML 68 4.3.1 οµικά στοιχεία 73 4.3.2 Συµπεριφορικά 77 4.3.3 Οµαδοποιητικά 78 4.3.4 Επεξηγηµατικά 79 4.3.5 Συσχετίσεις 79 4.3.6 ιαγράµµατα 83 4.3.7 Μοντέλα 102 4.3.8 Μηχανισµοί επέκτασης 104 vii vii

5. Μοντέλα 107 5.1 Μοντέλα κατασκευής τεχνητών συστηµάτων 108 5.1.1 Εργατοκεντρικό µοντέλο 109 5.1.2 Ένα απλό µοντέλο κατασκευής τεχνητών συστηµάτων. 118 5.1.3 Ένα ακόµη µοντέλο κατασκευής τεχνητών συστηµάτων 119 5.2 Μοντέλα της λογισµικής εργασίας 120 5.2.1 Μοντέλο του καταρράκτη 123 5.2.2 Εξελικτικό µοντέλο 126 6. Λογισµικά συνθετήµατα/µορφήµατα 129 6.1 Λογισµική εργασία της σχεδίασης 129 6.2 Θεωρητική λύση 131 6.3 Σχεδιαστική λύση 132 6.3.1 Αρχιτεκτονική λύση 134 6.3.2 Λεπτοµερής λύση 135 6.4 Συνθετήµατα 136 6.5 Μορφήµατα 138 6.5.1 Περιγραφή µορφηµάτων 139 6.5.2 Κατάλογοι 140 6.6 Αρχιτεκτονικά µορφήµατα 140 6.6.1 Ένας κατάλογος 140 6.6.2 Ένα παράδειγµα ενός αρχιτεκτονικού µορφήµατος 143 6.6.3 Ένας άλλος κατάλογος 150 6.7 Σχεδιαστικά µορφήµατα 152 6.7.1 Ένας κατάλογος 152 6.7.2 Ένα παράδειγµα ενός σχεδιαστικού µορφήµατος 157 7. Πρότυπα 161 7.1 Κατηγορίες προτύπων 162 7.2 ηµιουργία προτύπων 162 7.3 Λογισµικά πρότυπα 163 8. Εργαλεία 164 viii

8.1 Μοναδικά εργαλεία 166 8.2 Πάγκοι 166 8.3 Περιβάλλοντα 166 8.4 Αναγκαιότητα των εργαλείων 166 9. Μέθοδοι 167 9.1 Εξασφάλιση ποιότητας 168 9.1.1 Λειτουργικός / µη-λειτουργικός έλεγχος 168 9.1.2 Επικύρωση / Επαλήθευση 168 9.1.3 Στατικός / υναµικός έλεγχος 169 9.2 Λειτουργικός δυναµικός έλεγχος 170 9.2.1 Λογική αυτού του ελέγχου 170 9.2.2 Περιπτώσεις δοκιµής 171 9.2.3 Επίπεδα δυναµικού ελέγχου 171 9.2.4 Στρατηγική µαύρου / άσπρου κουτιού 172 9.2.5 Αρχή της ισοδύναµης διαµέρισης 172 9.2.6 Αρχή των συνοριακών τιµών 173 9.2.7 Άλλες αρχές 174 9.2.8 Προβλήµατα 174 9.3 Μέθοδος της Αναθεώρησης 174 9.4 Poirotian µέθοδος 174 9.4.1 Λογική της µεθόδου 175 9.4.2 Περιγραφή της µεθόδου 178 9.4.3 Παράδειγµα 1 184 ΜΕΡΟΣ Γ ΜΙΑ ΕΚ ΟΧΗ ΤΗΣ ΛΟΓΙΣΜΙΚΗΣ ΜΗΧΑΝΙΚΗΣ 191 10. Mεθοδολογίες 193 10.1 Ένα µοντέλο ορισµού µιας µεθοδολογίας 195 10.2 Συστατικά στοιχεία µιας µεθοδολογίας 196 10.3 Βιοµηχανικές Μεθοδολογίες 198 10.4 Εκπαιδευτικές Μεθοδολογίες 198 11. Η µεθοδολογία YASM 199 ix ix

11.1 Μοντέλο της Λογισµικής Εργασίας 201 11.2 ιοικητικές Μέθοδοι 204 11.2.1 Μέθοδος Γιασµικής ιοίκησης 204 11.3 Τεχνικές Μέθοδοι 206 11.3.1 Μέθοδος Γιασµικής Ανάλυσης 206 11.3.2 Μέθοδος Γιασµικής Σχεδίασης 210 11.3.3 Μέθοδος Γιασµικής Κωδικοποίησης 223 11.3.4 Μέθοδος Γιασµικής Εξασφάλισης της Ποιότητας 226 11.4 Πρότυπα 227 11.5 Εργαλεία 227 11.6 Τεκµηρίωση/Παραδοτέα 228 11.7 Σχόλια 229 ΜΕΡΟΣ ΜΙΑ ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ 233 12. Το τεχνητό σύστηµα ΒMS και το λογισµικό σύστηµα BIS 235 12.1 Ορισµός αναγκών 238 12.2 Ορισµός του πρακτικού προβλήµατος 238 12.3 Λύση του πρακτικού προβλήµατος 239 12.4 Συστηµική Ανάλυση 243 12.4.1 Ανθρωπισµικό κοµµάτι της λύσης 247 12.4.2 Ζωισµικό κοµµάτι της λύσης 247 12.4.3 εδοµενικό κοµµάτι της λύσης 247 12.4.4 Μηχανιστικό κοµµάτι της λύσης 247 12.5 Το λογισµικό (υπο)σύστηµα ΒIS 248 13. Mπροστινό Μέρος Ανάπτυξης του λογισµικού συστήµατος BIS 253 13.1 Έγγραφο ΠΑΛΣ 253 14. Πισινό Μέρος Ανάπτυξης του BIS- Η Java έκδοσή του 263 14.1 Έγγραφο Περιγραφής της Αρχιτεκτονικής 264 14.2 Έγγραφο Περιγραφής του Λεπτοµερούς Σχεδίου 283 14.3 Εγγραφο περιγραφής υναµικού Ελέγχου 312 x

14.3.1 Περιπτώσεις δοκιµής µονάδας 312 14.3.2 Περιπτώσεις δοκιµής συστήµατος 312 15. Πισινό Μέρος Ανάπτυξης του BIS - Η Web έκδοσή του 323 15.1 Έγγραφο Περιγραφής της Αρχιτεκτονικής 324 15.2 Έγγραφο περιγραφής Λεπτοµερούς Σχεδίου 337 15.3 Έγγραφο περιγραφής υναµικού Ελέγχου 337 ΑΓΓΛΟΕΛΛΗΝΙΚΟ ΛΕΞΙΚΟ ΟΡΩΝ 339 ΕΛΛΗΝΟΑΓΓΛΙΚΟ ΛΕΞΙΚΟ ΟΡΩΝ 345 Βιβλιογραφία 349 Ευρετήριο 355 xi xi

Σχήµατα Σχήµα 1.1. Μια κατηγοριοποίηση των εργασιών... 4 Σχήµα 1.2. Μια κατηγοριοποίηση των συστηµάτων... 10 Σχήµα 1.3. Η Τεχνολογία και οι συνιστώσες της... 13 Σχήµα 1.4. Η Λογισµική Τεχνολογία και η θέση της σε µία κατηγοριοποίηση... 14 Σχήµα 1.5. Μία κατηγοριοποίηση των λογισµικών υλικών... 16 Σχήµα 1.6. Πρόβληµα / λύση / τεχνητό σύστηµα... 17 Σχήµα 1.7. Ανάπτυξη τεχνητών συστηµάτων... 18 Σχήµα 2.1. Μια ανατοµία ενός Η-Υ... 24 Σχήµα 2.2. Μια κατηγοριοποίηση των Η-Υν... 25 Σχήµα 2.3. Μια κατηγοριοποίηση του λογισµικού... 26 Σχήµα 2.4. Μια κατηγοριοποίηση των υπολογιστικών συστηµάτων... 27 Σχήµα 2.5. Κεντρικό υπολογιστικό σύστηµα... 28 Σχήµα 2.6. Υπολογιστικό σύστηµα πελάτη-εξυπηρετητή... 29 Σχήµα 3.1. ιαδροµές κατασκευής λογισµικών συστηµάτων... 35 Σχήµα 3.2. Αποσύνθεση µιας εργασίας κατά το ΙΕΕΕ... 38 Σχήµα 4.1. Μια κατηγοριοποίηση των γλωσσών γενικά... 52 Σχήµα 4.2. Μία κατηγοριοποίηση των ΓΠ... 55 Σχήµα 4.3. Σχολές προγραµµατισµού... 56 Σχήµα 4.4. Η εξέλιξη των πιο διαδεδοµένων ΓΠ υψηλού επιπέδου... 61 Σχήµα 4.5. Μία εικόνα ενός λογισµικού σ/µατος από τη σκοπιά της σύνθεσης... 64 Σχήµα 4.6. Μια κατηγοριοποίηση των στοιχείων της UML... 74 xiii

Σχήµα 4.7. Ένα διάγραµµα περιπτώσεων χρήσης για Γραµµατεία... 85 Σχήµα 4.8. Ένα διάγραµµα κλάσεων για µία τάξη... 86 Σχήµα 4.9. Ένα διάγραµµα αντικειµένων για µία συγκεκριµένη Τάξη... 87 Σχήµα 4.10. Μια γενική εικόνα ενός ακολουθιακού διαγράµµατος... 88 Σχήµα 4.11. Ακολουθιακό διάγραµµα της εργασίας «εγγραφή σε µάθηµα»... 89 Σχήµα 4.12. Μια εικόνα ενός συνεργατικού διαγράµµατος... 90 Σχήµα 4.13. Το συνεργατικό διάγραµµα της εργασίας «εγγραφή σε µάθηµα»... 91 Σχήµα 4.14. Κύκλος ζωής ενός σπουδαστή σε ίδρυµα τριετούς φοίτησης... 94 Σχήµα 4.15. ιάγραµµα καταστάσεων για ένα αντικείµενο της κλάσης stack... 95 Σχήµα 4.16. ιάγραµµα δραστηριοτήτων στην εκπόνηση εργασίας κατ οίκον... 98 Σχήµα 4.17. Ψηφιδικό διάγραµµα ενός προγράµµατος... 100 Σχήµα 4.18. Η υλισµική πλατφόρµα της γραµµατείας ενός Τµήµατος ΑΕΙ... 102 Σχήµα 4.19. Το τρίπτυχο οντότητα, µοντέλο, σκοπιά... 103 Σχήµα 4.20. Μοντέλο ενός Τµήµατος ΑΕΙ από τη σκοπιά του προσωπικού... 104 Σχήµα 5.1. Το εργατοκεντρικό µοντέλο κατασκευής τεχνητών συστηµάτων... 110 Σχήµα 5.2. Ανάλυση ενός προβλήµατος σε άλλα προβλήµατα... 112 Σχήµα 5.3. Ανάλυση της λύσης ενός προβλήµατος... 113 Σχήµα 5.4. Χαρακτηρισµός της λύσης ενός απλού υποπροβλήµατος... 115 Σχήµα 5.5. Ανάλυση ενός τεχνητού συστήµατος σε υποσυστήµατα... 117 Σχήµα 5.6. Λειτουργία ενός τεχνητού συστήµατος... 118 Σχήµα 5.7. Ένα απλό µοντέλο κατασκευής τεχνητών συστηµάτων... 119 Σχήµα 5.8. Το µοντέλο MIL κατασκευής τεχνητών συστηµάτων... 120 Σχήµα 5.9. Μια κατηγοριοποίηση των µοντέλων της λογισµικής εργασίας... 121 Σχήµα 5.10. Εξειδίκευση των παγκοσµίων µοντέλων... 122 Σχήµα 5.11. Το µοντέλο του καταρράκτη στην ιδανική του µορφή... 124 Σχήµα 5.12. Το µοντέλο του καταρράκτη στη ρεαλιστική του µορφή... 126 Σχήµα 6.1 Οι λύσεις ενός δεδοµενικού προβλήµατος... 131 Σχήµα 6.2 Θεωρητική λύση... 132 Σχήµα 6.3 Σχεδιαστική λύση... 133 Σχήµα 7.1 Μια κατηγοριοποίηση των λογισµικών προτύπων... 163 Σχήµα 8.1 Μια κατηγοριοποίηση των λογισµικών εργαλείων... 165 Σχήµα 10.1 Μία κατηγοριοποίηση των µεθοδολογιών... 195 Σχήµα 10.2. Ένα µοντέλο ορισµού µιας µεθοδολογίας.... 196 xiv

Σχήµα 11.1. Μοντέλο της Λογισµικής Εργασίας κατά τη YASM... 203 Σχήµα 11.2. Σκελετός του εγγράφου ΠΑΛΣ... 210 Σχήµα 11.3. Σκελετός του εγγράφου Περιγραφή της Αρχιτεκτονικής... 217 Σχήµα 11.4. οµική όψη (επίπεδο 0)... 218 Σχήµα 11.5. οµική όψη για τον υπολογιστή i (επίπεδο 1)... 219 Σχήµα 11.6. οµική όψη για τον υπολογιστή i (επίπεδο2)... 220 Σχήµα 11.7. Σκελετός εγγράφου Περιγραφή του Λεπτοµερούς Σχεδίου... 221 Σχήµα 11.8. Σύµβολα συνιστωσιακών διαγραµµάτων... 225 Σχήµα 12.1. Σύστηµα θέρµανσης και ζεστού νερού οικιακής χρήσης... 237 Σχήµα 12.2. Εγγραφο ορισµού αναγκών... 238 Σχήµα 12.3. Έγγραφο ορισµού του πρακτικού προβλήµατος... 238 Σχήµα 12.4. Μία λύση του πρακτικού προβλήµατος(θεωρητική λύση)... 240 xv xv

Πίνακες Πίνακας 3.1. ραστηριότητες κατά το πρότυπο ΙΕΕΕ 1074... 41 Πίνακας 6.1. Κατάλογος αρχιτεκτονικών µορφηµάτων κατά τον Buschmann.. 141 Πίνακας 6.2. Κατάλογος σχεδιαστικών µορφηµάτων κατά τον Gamma... 153 Πίνακας 10.1. Συστατικό στοιχείο και ερωτήµατα... 198 Πίνακας 11.1. Μια συγκεντρωτική εικόνα της YASM... 202 Πίνακας 11.2. Έγγραφα τεκµηρίωσης της YASM και πρότυπα ΙΕΕΕ... 227 Πίνακας 12.1 Λειτουργίες που γίνονται µόνο από µηχανές ή είναι σύνθετες... 244 Πίνακας 12.2 Προβλήµατα και εργάτες που εκτελούν τη λύση τους... 246 xvii

ΜΕΡΟΣ Α - ΤΙ ΕΙΝΑΙ Η ΛΟΓΙΣΜΙΚΗ ΜΗΧΑΝΙΚΗ Στο ΜΕΡΟΣ αυτό γίνεται µια εισαγωγή στη Λογισµική Μηχανική. Εξηγείται ότι οι άνθρωποι έχουν ανάγκες. Οι ανάγκες αυτές ικανοποιούνται µε την εκτέλεση εργασιών, που χονδρικά είναι τεσσάρων κατηγοριών: (1) οι ανθρωπισµικές, (2) οι ζωισµικές, (3) οι δεδοµενικές και (4) οι µηχανιστικές. Οι εργάτες που τις εκτελούν είναι: οι άνθρωποι, τα ζώα, οι Ηλεκτρονικοί Υπολογιστές (Η-Υς) και οι µηχανές, αντίστοιχα. Η συνύρπαξη και συνεργασία τέτοιων εργατών σε ένα όλον οδηγεί στη δηµιουργία συστηµάτων που αποσκοπούν στην ικανοποίηση συγκεκριµένων ανθρώπινων αναγκών. Τα συστήµατα αυτά ονοµάζονται τεχνητά συστήµατα. Μια κατηγορία υποσυστηµάτων των τεχνητών συστηµάτων είναι τα λογισµικά συστήµατα. Τα λογισµικά συστήµατα αυτοµατοποιούν την εκτέλεση των δεδοµενικών εργασιών µε τη βοήθεια του Η-Υ. Τα σηµερινά τεχνητά συστήµατα έχουν απαραιτήτως υποσυστήµατα που είναι λογισµικά συστήµατα. Τα λογισµικά συστήµατα είναι αυτά που δώσανε την ώθηση για την κατασκευή τελειότερων τεχνητών συστηµάτων. Είναι αυτά που µαζί µε συστήµατα επικοινωνιών έφεραν την τρίτη βιοµηχανική επανάσταση, τον προηγµένο αυτοµατισµό. Χάρη σ αυτά τα συστήµατα έχουµε σήµερα τραίνα χωρίς οδηγό, αυτόµατο πιλότο στα αεροπλάνα, µηχανές µέτρησης υψηλής ακρίβειας, συστήµατα αποθήκευσης, ενηµέρωσης, ανάκλησης και ανάλυσης πληροφοριών µεγάλου όγκου, κ.λπ. 1

Τα λογισµικά συστήµατα είναι γλωσσολογικά προϊόντα που κατασκευάζονται από ανθρώπους οι οποίοι χρειάζονται προς τούτο µια Μεθοδολογία. Η Μεθοδολογία τους καθοδηγεί στο πώς να χρησιµοποιούν την υπάρχουσα Λογισµική Τεχνολογία για να κατασκευάζουν λογισµικά συστήµατα υψηλής ποιότητας εντός προβλέψιµης χρονικής περιόδου κατασκευής και προβλέψιµου κόστους. Αυτές οι µεθοδολογίες ανάπτυξης λογισµικών συστηµάτων είναι το αντικείµενο της Λογισµικής Μηχανικής ενός νέου σχετικά τεχνολογικού κλάδου που δηµιουργήθηκε γι αυτό το σκοπό. 2

1. Εισαγωγή 1.1 Ανάγκες Οι άνθρωποι έχουν ανάγκες π.χ. διατροφής, στέγασης, ένδυσης, διασκέδασης, εκπαίδευσης κ.λπ. Οι ανάγκες αυτές ικανοποιούνται µε την εκτέλεση εργασιών(processes) εκ µέρους του ανθρώπου. Βέβαια, τότε που ο άνθρωπος ήταν στον Παράδεισο δεν χρειαζόταν να εργάζεται. Όµως, από τότε που ο Θεός τον εξεδίωξε από τον Παράδεισο, ο άνθρωπος είναι αναγκασµένος να κερδίζει τα προς το ζήν µε την εργασία του. Πράγµατι, η ικανοποίηση πολλών αναγκών του ανθρώπου γίνεται µε την εκτέλεση εργασιών στις οποίες συµµετέχει ο ίδιος ως εργάτης. Ο άνθρωπος λοιπόν από ανάγκη είναι εργατικό ον. Μάλιστα, ο σηµερινός άνθρωπος είναι αναγκασµένος να εργάζεται περισσότερο από όσο εργαζόταν σε κάθε άλλη εποχή έως τώρα, εξαιτίας των σηµερινών συνθηκών διαβίωσης, που απαιτούν την ικανοποίηση αναγκών που παλαιότερα δεν υπήρχαν και µάλιστα πολλές από αυτές µπορεί να θεωρηθούν και περιττές. Αυτό είναι αποτέλεσµα της εξελικτικής πορείας του ανθρώπου που δυστυχώς είναι µη-αναστρέψιµη. 3

1.2 Εργασίες Οι εργασίες εν γένει διακρίνονται σε φυσικές, τεχνητές και πνευµατικές (Σχήµα 1.1). 1.2.1 Φυσικές εργασίες Πολλές εργασίες είναι φυσικές (natural) και σ αυτές ο άνθρωπος δεν έχει ανάµειξη αλλά γίνονται αυτόµατα από τη φύση, βάσει φυσικών νόµων, όπως π.χ. η σύντηξη υδρογόνου στον Ήλιο, που µας προσφέρει φως και θερµότητα. Τα αποτελέσµατα των φυσικών εργασιών έχουν έµµεσα ή άµεσα επιπτώσεις στη ζωή των ανθρώπων. Σχήµα 1.1. Μια κατηγοριοποίηση των εργασιών 1.2.2 Τεχνητές εργασίες Εκτός από τις φυσικές εργασίες έχουµε και τις τεχνητές (artificial) εργασίες. Αυτές τις εκτελεί ο άνθρωπος βοηθούµενος από εργαλεία και µηχανές που αυτός κατασκευάζει γι αυτό το σκοπό. Με τις µηχανές ο άνθρωπος επεµβαίνει στις φυσικές εργασίες ρυθµίζοντας ή/και ελέγχοντας την πορεία εκτέλεσής τους µε 4

σκοπό να εκµεταλλευτεί προς όφελός του τα αποτελέσµατά τους, όπως π.χ. η καύση της βενζίνης για την παραγωγή ενέργειας και τελικά κίνησης στα αυτοκίνητα. Παράδειγµα τεχνητής εργασίας είναι η εργασία που απαιτείται για τη κατασκευή ενός σπιτιού, ενός αυτοκινήτου ή για την καλλιέργεια ενός αγρού. 5 1.2.2.1 οµή τεχνητών εργασιών Οι τεχνητές εργασίες είναι σύνθετες και αποτελούνται από άλλες εργασίες, τις υποεργασίες (subprocesses) στο πρώτο επίπεδο. Οι υποεργασίες πάλι µπορεί να αποτελούνται από άλλες υποεργασίες σε δεύτερο επίπεδο, κ.ο.κ. Έτσι, κάθε τεχνητή εργασία µπορεί να θεωρηθεί ότι αναλύεται σε υποεργασίες που δοµούνται σε διάφορα επίπεδα. Στη συνέχεια οι όροι εργασία και υποεργασία θα χρησιµοποιούνται ισοδύναµα. 1.2.2.2 Κατηγορίες τεχνητών εργασιών 1.2.2.2.1 εδοµενικές εργασίες Μια κατηγορία τεχνητών υποεργασιών είναι οι δεδοµενικές εργασίες (data processes). Στις δεδοµενικές εργασίες χρησιµοποιούνται δεδοµένα (data) ως πρώτη ύλη και λαµβάνονται ως αποτελέσµατα πάλι δεδοµένα, κατόπιν ειδικής επεξεργασίας. εδοµένα δε, είναι αφηρηµένα στοιχεία που χαρακτηρίζουν τις οντότητες καθώς και τις σχέσεις µεταξύ τους. Έτσι, στις δεδοµενικές εργασίες, δεν χρησιµοποιούµε πραγµατικές οντότητες αλλά αφηρηµένα στοιχεία που χαρακτηρίζουν αυτές τις οντότητες, τα δεδοµένα. 1.2.2.2.2 Μη-δεδοµενικές εργασίες Όλες οι άλλες εργασίες εκτός από τις δεδοµενικές θα αναφέρονται στη συνέχεια µε τον όρο µη-δεδοµενικές εργασίες (non-data processes). Σ αυτές τις εργασίες χειριζόµαστε τις ίδιες τις οντότητες. Παράδειγµα : Στον εργασιακό χώρο ενός Eστιατορίου µπορούµε να αναγνωρίσουµε ως µηδεδοµενικές εργασίες: την αγορά και µεταφορά των υλικών για την παρασκευή 5

των φαγητών, το σκούπισµα, το µαγείρεµα, το πλύσιµο των πιάτων, το σερβίρισµα των φαγητών, κ.λπ. και ως δεδοµενικές εργασίες: την τιµολόγηση των µερίδων φαγητού, την έκδοση λογαριασµού των πελατών που αντιστοιχεί σε ένα γεύµα, την τήρηση στοιχείων εσόδων-εξόδων, κ.λπ. 1.2.2.3 Περιγραφή τεχνητών εργασιών Οι τεχνητές εργασίες εκτελούνται συνήθως ξανά και ξανά γιατί αυτό απαιτείται στην πράξη. Χρειάζεται µια περιγραφή τους, για να µπορούν οι αντίστοιχοι εργάτες να τις εκτελούν. Είναι λοιπόν επιτακτική ανάγκη για κάθε τεχνητή εργασία να υπάρχει µια περιγραφή της. 1.2.2.4 Εκτέλεση τεχνητών εργασιών Αρχικά ο άνθρωπος εκτελούσε τις τεχνητές εργασίες χειρωνακτικά. Μετά εξηµέρωσε και χρησιµοποίησε ως βοηθό του διάφορα ζώα. Παράλληλα εφεύρε εργαλεία και αργότερα µηχανές που χρησιµοποιούσε µαζί µε τα ζώα και έτσι εκτελούσε ευκολότερα τις τεχνητές εργασίες. Με την εξέλιξη των µηχανών η ανάγκη χρησιµοποίησης ζώων σε τεχνητές εργασίες ελαχιστοποιήθηκε και σήµερα οι τεχνητές εργασίες εκτελούνται κυρίως από τον άνθρωπο µε τη χρήση ειδικών εργαλείων και σε συνεργασία µε κατάλληλες µηχανές. Η τάση ήταν, και ακόµα είναι, να ελαχιστοποιηθεί η συµµετοχή του ανθρώπου στην εκτέλεση τεχνητών εργασιών και να µεγιστοποιηθεί η συµµετοχή µηχανών. Αυτό ονοµάζεται αυτοµατισµός και είναι ένα από χαρακτηριστικά της σηµερινής εποχής. Όλες οι τεχνητές εργασίες είναι κουραστικές. Ο άνθρωπος πάντα φρόντιζε να εφευρίσκει µηχανές που να τις εκτελούν. Βέβαια πάντα µένει ένα µικρό κοµµάτι εκτέλεσης για τον ίδιο. Από αυτό ένα µέρος αφορά τον χειρισµό των µηχανών. Αυτός ο αγώνας για όλο και περισσότερο αυτοµατισµό συνεχίζεται µέχρι σήµερα µε εξαιρετικά αποτελέσµατα, ειδικά για τις µη-δεδοµενικές εργασίες για τις οποίες εφευρέθηκαν αποτελεσµατικές µηχανές και συνεχώς εφευρίσκονται νέες. Για τις δεδοµενικές εργασίες η πρόοδος ήταν πολύ αργή, γιατί αποδείχθηκε εξαιρετικά δύσκολη η κατασκευή µηχανών κατάλληλων γι αυτές τις εργασίες. Με 6

την εφεύρεση του Ηλεκτρονικού Υπολογιστή (Η-Υ) στη δεκαετία του 1950, άνοιξε επιτέλους ο δρόµος για την τόσο επιθυµητή αυτοµατοποίηση της εκτέλεσης των δεδοµενικών εργασιών, που ήταν όνειρο πολλών γενεών ανθρώπων, αφού οι εργασίες αυτές είναι ανιαρές, µονότονες, κουραστικές και επιρρεπείς σε λάθη. Αυτή η εφεύρεση ήταν πραγµατικά επαναστατική και άλλαξε τον τρόπο που οι άνθρωποι εργάζονται σήµερα, αφού η εισαγωγή των Η-Υ στα εργασιακά περιβάλλοντα επηρέασε την εκτέλεση όχι µόνο των δεδοµενικών εργασιών που σε µεγάλο βαθµό αυτοµατοποιήθηκε αλλά και την εκτέλεση των µη-δεδοµενικών εργασιών αφού σε µεγάλο βαθµό ο Η-Υ αντικατέστησε τον άνθρωπο στο ρόλο του να εργάζεται χειριζόµενος µηχανές. Ο Η-Υ είναι ο κυριότερος παράγοντας του αυτοµατισµού σήµερα. Είναι η µηχανή που έφερε την τρίτη βιοµηχανική επανάσταση, την επανάσταση του προηγµένου αυτοµατισµού. Η ατµοµηχανή έφερε την πρώτη βιοµηχανική επανάσταση και η µηχανή εσωτερικής καύσης τη δεύτερη. 7 1.2.2.5 Στοιχεία µιας δεδοµενικής εργασίας Τα στοιχεία κάθε δεδοµενικής εργασίας είναι δύο: λειτουργίες(operations) και δεδοµένα(data). Οι λειτουργίες επενεργούν στα δεδοµένα και δίνουν ως αποτέλεσµα πάλι δεδοµένα. 1.2.2.5.1 Λειτουργίες Οι λειτουργίες διακρίνονται σε απλές και σύνθετες. Οι απλές λειτουργίες θεωρούνται αδιαίρετες. Οι σύνθετες λειτουργίες αποτελούνται από άλλες λειτουργίες που είναι απλές ή σύνθετες. Οι σύνθετες λειτουργίες προκύπτουν από οµαδοποίηση απλών µόνο λειτουργιών σε πρώτο επίπεδο, µετά απλών και σύνθετων στο δεύτερο επίπεδο κ.ο.κ. Ανάµεσα στις απλές λειτουργίες διακρίνονται εκείνες που χρειάζονται για επεξεργασία (processing), διαχείριση των δεδοµένων (data management), διάδραση (interaction) και καθορισµό της σειράς εκτέλεσης / συγχρονισµού των λειτουργιών (sequencing / synchronization). Ανάλογη διάκριση µπορεί να γίνει και στις σύνθετες λειτουργίες, αν και είναι αυτό δύσκολο αφού σ αυτές συνυπάρχουν συνήθως όλα τα είδη των εργασιών. Όµως αν γίνει τέτοια διάκριση 7

στις σύνθετες λειτουργίες, αυτό θα σηµαίνει ότι η διάκριση αφορά στο είδος που είναι προεξάρχον. 1.2.2.5.2 εδοµένα Τα δεδοµένα διακρίνονται και αυτά σε απλά και σύνθετα. Τα απλά δεδοµένα θεωρούνται αδιαίρετα και ανήκουν σε βασικές κατηγορίες όπως ακέραιοι αριθµοί, δεκαδικοί αριθµοί κ.λπ. Τα σύνθετα δεδοµένα αποτελούνται από άλλα δεδοµένα που είναι απλά ή σύνθετα, όπως διανύσµατα, πίνακες κ.λπ. Τα σύνθετα δεδοµένα προκύπτουν από οµαδοποίηση απλών µόνο δεδοµένων σε πρώτο επίπεδο, µετά απλών και σύνθετων στο δεύτερο επίπεδο κ.ο.κ. 1.2.2.6 Κατηγορίες δεδοµενικών εργασιών 1.2.2.6.1 Ακολουθιακές Σε ορισµένες δεδοµενικές εργασίες η εκτέλεση των λειτουργιών γίνεται ακολουθιακά, µια κάθε φορά, και λέγονται ακολουθιακές δεδοµενικές εργασίες (sequential information processes). Στην περίπτωση των ακολουθιακών δεδοµενικών εργασιών η εκτέλεσή τους γίνεται µε την επιλογή µιας λειτουργίας που εκτελείται έως το τέλος της και αυτό επαναλαµβάνεται µε την επιλογή ξανά µιας επόµενης λειτουργίας σύµφωνα µε τις υπάρχουσες ανάγκες. Βέβαια, η αλληλουχία εκτέλεσης των λειτουργιών υπόκειται σε περιορισµούς που υπαγορεύονται από την ίδια την δεδοµενική εργασία. εν είναι έγκυρες όλες οι δυνατές αλληλουχίες. 1.2.2.6.2 Ταυτόχρονες 8

9 1.2.3 Πνευµατικές εργασίες 1.3 Συστήµατα Τις φυσικές εργασίες τις εκτελεί η φύση. Τις τεχνητές εργασίες τις εκτελεί ο άνθρωπος, βοηθούµενος από εργαλεία και µηχανές. Οι εργασίες (φυσικές ή τεχνητές) δεν γίνονται (εκτελούνται) εκεί και ως έτυχεν αλλά µε κανόνες. Με τρόπο, όπως λέµε, συστηµατικό. Οι εργασίες λοιπόν εκτελούνται από οντότητες (εργάτες), που ξέρουν πώς να τις εκτελούν, κατάλληλα συνεργαζόµενες µεταξύ τους. Σύστηµα (system) είναι ένα σύνολο συνεργαζοµένων οντοτήτων που µπορούν να εκτελούν µια ορισµένη εργασία µε ορισµένους κανόνες. Μια κατηγοριοποίηση των συστηµάτων δίνεται στο Σχήµα 1.2. 1.3.1 Φυσικά Συστήµατα Φυσικά συστήµατα (natural systems) είναι αυτά που εκτελούν φυσικές εργασίες. Στα φυσικά συστήµατα οι συνεργαζόµενες οντότητες είναι φυσικές οντότητες. Τα φυσικά συστήµατα είναι εξαιρετικά πολύπλοκα και αποτελούν το αντικείµενο µελέτης ειδικών επιστηµονικών κλάδων που τα αποτελέσµατά τους είναι η βάση αντίστοιχων τεχνολογικών κλάδων. 1.3.2 Τεχνητά Συστήµατα Τεχνητά συστήµατα (artificial systems) είναι αυτά που εκτελούν τεχνητές εργασίες και κατασκευάζονται από τον άνθρωπο γι αυτό το σκοπό. Στα τεχνητά συστήµατα οι συνεργαζόµενες οντότητες είναι οι άνθρωποι, τα ζώα, οι Η-Υς, τα εργαλεία, οι µηχανές και άλλα τεχνητά συστήµατα. Τα τεχνητά λοιπόν συστήµατα εκτελούν τις τεχνητές εργασίες και µέσα από αυτή την εκτέλεση ικανοποιούνται ανθρώπινες ανάγκες. 9

Σχήµα 1.2. Μια κατηγοριοποίηση των συστηµάτων Όπως οι τεχνητές εργασίες αποτελούνται από υποεργασίες έτσι και τα τεχνητά συστήµατα αποτελούνται από υποσυστήµατα (subsystems). Κάθε υποσύστηµα είναι επιφορτισµένο µε την εκτέλεση ενός συνόλου τεχνητών υποεργασιών. 1.3.2.1 Ανθρωπισµικά 1.3.2.2 Ζωισµικά 1.3.2.3 Υπολογιστικά 1.3.2.3.1 Υλισµικά 1.3.2.3.2 Λογισµικά Τα υποσυστήµατα που εκτελούν τις δεδοµενικές εργασίες µε τη βοήθεια του Η-Υ ονοµάζονται λογισµικά υποσυστήµατα (software subsystems). Σε αυτά τα υποσυστήµατα το κυριότερο στοιχείο είναι ο κώδικας. Ο κώδικας περιγράφει στον 10

Η-Υ, που παίζει το ρόλο ενός εργάτη, πως να εκτελεί τις δεδοµενικές εργασίες. Ο κώδικας αυτός ετοιµάζεται χωριστά για κάθε δεδοµενική εργασία που την εκτέλεσή της επιθυµούµε να αυτοµατοποιήσουµε. υστυχώς, ο Η-Υ από µόνος του, χωρίς κώδικα, δεν παράγει έργο. Για να το κάνει αυτό πρέπει να εφοδιαστεί µε τον κατάλληλο κώδικα. Ο κώδικας χονδρικά µπορεί να θεωρηθεί το καύσιµο του Η-Υ αν και είναι µη-αναλώσιµος. Στην ατµοµηχανή καύσιµο είναι ο άνθρακας και στη µηχανή εσωτερικής καύσης καύσιµο είναι το υγρό καύσιµο (πετρέλαιο, βενζίνη, κ.λπ.) 11 1.3.2.4 Μηχανιστικά 1.3.2.5 Ένα παράδειγµα ενός τεχνητού συστήµατος Στην εποχή µας χρειαζόµαστε υγρά καύσιµα (βενζίνη, πετρέλαιο) για τα οχήµατα, τη βιοµηχανία και για οικιακή χρήση. Για την ικανοποίηση αυτής της ανάγκης πρέπει να γίνονται οι τεχνητές εργασίες της άντλησης των καυσίµων µέσα από τη Γη, της µεταφοράς, της διύλισης και της διάθεσής τους. Για κάθε µία από αυτές τις τεχνητές εργασίες έχουν αναπτυχθεί ειδικά τεχνητά συστήµατα που τις υποστηρίζουν και τις αυτοµατοποιούν σε µεγάλο βαθµό. Τα αντίστοιχα σ αυτές τις τεχνητές εργασίες τεχνητά συστήµατα είναι : οι σταθµοί άντλησης πετρελαίου, οι αγωγοί πετρελαίου, τα πετρελαιοφόρα σκάφη και τα βυτιοφόρα οχήµατα, τα διυλιστήρια και τα πρατήρια υγρών καυσίµων. Κάθε ένα από αυτά τα τεχνητά συστήµατα έχει υποσυστήµατα που ενδεχόµενα αποτελούνται από άλλα υποσυστήµατα κ.ο.κ αλλά τα τελικά υποσυστήµατα ανήκουν σε µια από τις τέσσερις κατηγορίες που περιγράφηκαν παραπάνω. Τα τελικά υποσυστήµατα σ αυτό το επίπεδο θεώρησης θεωρούνται ατοµικά, δηλαδή αδιαίρετα. 11

1.3.2.6 Ανοικτά και κλειστά τεχνητά συστήµατα 1.3.2.7 Άνθρωποι και τεχνητά συστήµατα Όσο υπάρχουν άνθρωποι θα υπάρχουν ανάγκες. Τα τεχνητά συστήµατα είναι αυτά που µπορούν να ικανοποιούν τις περισσότερες από αυτές τις ανάγκες αρκεί οι άνθρωποι να µπορούν να τα κατασκευάζουν, να τα συντηρούν και να τα λειτουργούν. Η αναγκαιότητα λοιπόν των τεχνητών συστηµάτων είναι δεδοµένη. Η επιβίωση του ανθρώπου εξαρτάται σε µεγάλο βαθµό από αυτά. Στη διαδροµή του ο άνθρωπος επινόησε και κατασκεύασε πάµπολλα τεχνητά συστήµατα τα οποία εξελίσσονταν σύµφωνα µε την υπάρχουσα επιστήµη και τεχνολογία µε τρόπο ανατροφοδοτικό. Τα σηµερινά τεχνητά συστήµατα είναι αναµφίβολα τα τελειότερα που είχαµε έως τώρα µε άριστες προοπτικές για παραπέρα βελτίωσή τους και κατασκευή νέων ακόµη περισσότερο προηγµένων. 1.3.3 Συστήµατα Τεχνητής Νοηµοσύνης 1.4 Τεχνολογία Η Τεχνολογία (Technology) µπορεί να οριστεί (Σχήµα 1.3)ως η πεντάδα (γνώση, ύλη, εργαλεία, υλικά, προϊόντα). Η γνώση είναι εξειδικευµένη. Βασίζεται µεν στην Επιστήµη αλλά είναι προσαρµοσµένη στην επίλυση πρακτικών προβληµάτων που προκύπτουν κατά την ικανοποίηση ανθρωπίνων αναγκών. Από αυτές τις πέντε συνιστώσες της Τεχνολογίας, ορατές είναι κυρίως οι δύο και µάλιστα τα υλικά και τα προϊόντα. Σε αναφορά µε τη Στρατιωτική Τεχνολογία, παραδείγµατα αυτών των δύο συνιστωσών είναι: εκρηκτικά υλικά και άρµατα µάχης. Συχνά ταυτίζουµε την Τεχνολογία µε µία από αυτές τις δύο συνιστώσες της, π.χ. ταυτίζουµε τη Φαρµακευτική Τεχνολογία µε τα φάρµακα (προϊόντα). Πίσω από κάθε Τεχνολογία κρύβεται και µία ανάγκη. Επειδή υπάρχουν πολλές ανάγκες έχουν αναπτυχθεί και πολλές τεχνολογίες που µεταξύ τους µπορεί και να σχετίζονται π.χ. το προϊόν µιας να είναι το εργαλείο µιας άλλης. Η Τεχνολογία είναι από τους κυριότερους πόρους των λειτουργικών µονάδων των σηµερινών κοινωνιών που είναι οι διάφοροι οργανισµοί δηµόσιοι ή ιδιωτικοί. 12

13 Σχήµα 1.3. Η Τεχνολογία και οι συνιστώσες της Η Τεχνολογία είναι συνάρτηση της χρονικής στιγµής στην οποία αναφερόµαστε και βέβαια αλλάζει όσο ο χρόνος περνάει. Συγκεκριµένα, για ένα χρονικό διάστηµα και οι πέντε συνιστώσες της Τεχνολογίας παραµένουν σταθερές και έτσι η αντίστοιχη Τεχνολογία παραµένει σταθερή. Μετά µία ή και περισσότερες συνιστώσες αλλάζουν µε αποτέλεσµα να αλλάζει και η αντίστοιχη Τεχνολογία. Η Τεχνολογία δηλαδή γεννάει νέα Τεχνολογία και είναι αυτή που δρά ως ο κύριος µοχλός για τη βελτίωση των συνθηκών διαβίωσης του ανθρώπου. Aναµφίβολα, η Τεχνολογία είναι το κυριότερο από τα ιδιώµατα που χαρακτηρίζουν την κάθε εποχή και είναι αυτή που επηρεάζει την οικονοµική, κοινωνική, πολιτιστική και πνευµατική ζωή του ανθρώπου. Για πολύ µεγάλα διαστήµατα στην πορεία του ανθρώπου η Τεχνολογία ήταν σταθερή. Σήµερα η Τεχνολογία αλλάζει από στιγµή σε στιγµή, και µαζί της αλλάζει και ο κόσµος. Η Τεχνολογία είναι δύναµη. Σε όλες τις εποχές οι ισχυροί της Γης κατείχαν την πλέον προηγµένη Τεχνολογία που ήταν διαθέσιµη και δεν φείδονταν χρηµάτων για να την αποκτήσουν αφού από αυτήν κυρίως αντλούσαν δύναµη. 1.4.1 Λογισµική Τεχνολογία Μία από τις πολλές Τεχνολογίες σήµερα είναι η Λογισµική Τεχνολογία (Software Technology) που η θέση της σε µια κατηγοριοποίηση των τεχνολογιών δίνεται στο Σχήµα 1.4. Η Λογισµική Τεχνολογία και η θέση της σε µία κατηγοριοποίηση Η Λογισµική Τεχνολογία είναι αλληλένδετη µε την Υλισµική Τεχνολογία (Ηardware 13

Technology) και δυο µαζί συνιστούν την Πληροφορική Τεχνολογία (Information Technology) που είναι εκείνη που χαρακτηρίζει τη σηµερινή εποχή. Tεχνολογία Πληροφορική Υλισµική Λογισµική Σχήµα 1.4. Η Λογισµική Τεχνολογία και η θέση της σε µία κατηγοριοποίηση 1.4.1.1 Γνώση Η γνώση που χρησιµοποιείται στη Λογισµική Τεχνολογία µπορεί να διακριθεί σε βασική, σε ειδική και σε εξειδικευµένη. Η βασική γνώση προέρχεται από την Επιστήµη των Υπολογιστών. Η ειδική γνώση προέρχεται από άλλους Επιστηµονικούς κλάδους οι οποίοι σχετίζονται µε τα πρακτικά προβλήµατα που η εκτέλεση του δεδοµενικού κοµµατιού της λύσης τους αυτοµατοποιείται µε λογισµικά συστήµατα. Τέτοιοι κλάδοι είναι τα Μαθηµατικά, η Φυσική, κ.λπ. Η εξειδικευµένη γνώση έχει αναπτυχθεί αποκλειστικά για τη Λογισµική Τεχνολογία και αφορά στο συστηµατικό τρόπο χρησιµοποίησης της βασικής γνώσης, της ειδικής γνώσης αλλά και καινούργιας γνώσης για τις ανάγκες αυτής της Τεχνολογίας. Η γνώση χρησιµοποιείται για την κατασκευή υλικών και µετά προϊόντων µε βάση την απαραίτητη ύλη και τη βοήθεια των απαραίτητων εργαλείων. Στην εξειδικευµένη γνώση συµπεριλαµβάνονται και τα πρότυπα (standards) τα οποία προσφέρουν λύσεις που έχουν γίνει αποδεκτές και αφορούν ζητήµατα που 14

ανακύπτουν ξανά και ξανά. Η υιοθέτηση τους προσφέρει πολλά πλεονεκτήµατα και µάλλον πρέπει να θεωρείται αναχρονισµός η αγνόησή τους. 1.4.1.2 Ύλη Η πρώτη ύλη στη Λογισµική Τεχνολογία είναι οι λέξεις κατάλληλων γλωσσών. Οι γλώσσες αυτές έχουν αναπτυχθεί ακριβώς γι αυτή την ανάγκη και ανήκουν σε διάφορες κατηγορίες που κάθε µία έχει υποκατηγορίες. Προεξάρχουσα αλλά και πρωταρχική κατηγορία είναι η κατηγορία των Γλωσσών Προγραµµατισµού. Με τις λέξεις αυτών των γλωσσών κατασκευάζονται τα διάφορα υλικά από τα οποία στη συνέχεια κατασκευάζονται λογισµικά προϊόντα, δηλαδή τα διάφορα λογισµικά συστήµατα που ουσιαστικά είναι γλωσσολογικά προϊόντα. 15 1.4.1.3 Εργαλεία Τα εργαλεία είναι απαραίτητα σε κάθε Τεχνολογία. Έτσι και για τη Λογισµική Τεχνολογία έχει αναπτυχθεί και χρησιµοποιείται µία µεγάλη ποικιλία εργαλείων που το καθένα από αυτά συνδράµει στην κατασκευή των υλικών και των προϊόντων. 1.4.1.4 Υλικά Στη Λογισµική Τεχνολογία υπάρχει µία µεγάλη ποικιλία υλικών τα οποία χρησιµοποιούνται για την κατασκευή προϊόντων που είναι τα λογισµικά συστήµατα. Μία κατηγοριοποίηση αυτών των υλικών δίνεται στο Σχήµα 1.5. 15

Σχήµα 1.5. Μία κατηγοριοποίηση των λογισµικών υλικών 1.4.1.5 Προϊόντα Tα προϊόντα της Λογισµικής Τεχνολογίας είναι το λογισµικό όπως αυτό ορίζεται στο επόµενο κεφάλαιο. 1.5 Πρακτικά Προβλήµατα/Λύσεις Οι άνθρωποι έχουν ανάγκες. Η ύπαρξη πολλών εκ των αναγκών οδηγεί σε προβλήµατα που πρέπει να λυθούν και από την εκτέλεση της λύσης τους να ικανοποιούνται αυτές οι ανάγκες. Τα προβλήµατα αυτά θα αναφέρονται στη 16

συνέχεια µε τον όρο πρακτικά προβλήµατα σε αντιδιαστολή µε όλα τα υπόλοιπα που θα αναφέρονται ως µη-πρακτικά προβλήµατα. Μη πρακτικά προβλήµατα είναι τα συναισθηµατικά, τα ψυχολογικά, τα προσωπικά, τα φιλοσοφικά, τα πολιτικά, κ.λ.π. 17 Σχήµα 1.6. Πρόβληµα / λύση / τεχνητό σύστηµα Οι τεχνητές εργασίες προκύπτουν από την εκτέλεση της λύσης πρακτικών προβληµάτων. Η περιγραφή των τεχνητών εργασιών είναι ισοδύναµη µε την περιγραφή της λύσης πρακτικών προβληµάτων. Στην πράξη, η περιγραφή των τεχνητών εργασιών είναι απαραίτητη για να µπορούν οι αντίστοιχοι εργάτες να τις εκτελούν. Oι τεχνητές εργασίες είναι απαραίτητες γιατί µέσα από αυτές ικανοποιούνται ανθρώπινες ανάγκες. 17

Τα τεχνητά συστήµατα εκτελούν τεχνητές εργασίες, δηλαδή εκτελούν λύσεις πρακτικών προβληµάτων. Η ύπαρξη των τεχνητών συστηµάτων είναι αναγκαία. Η κατασκευή τους προϋποθέτει: ανάγκες, πρακτικά προβλήµατα, λύσεις (Σχήµα 1.6). Με βάση τις λύσεις κατασκευάζονται τα αντίστοιχα τεχνητά συστήµατα. Χωρίς λύσεις δεν µπορούν να κατασκευαστούν τα τεχνητά συστήµατα. Οι λύσεις διακρίνονται σε θεωρητικές και τεχνολογικές. Οι θεωρητικές βασίζονται στην Επιστήµη. Οι τεχνολογικές λύσεις βασίζονται στην Τεχνολογία. Η κατασκευή των τεχνητών συστηµάτων είναι και αυτό ένα πρόβληµα, µάλιστα είναι ένα τεχνολογικό πρόβληµα. Σ αυτό το τεχνολογικό πρόβληµα µετασχηµατίζεται µια θεωρητική λύση σε µια τεχνολογική λύση (το τεχνητό σύστηµα) µε κατάλληλη χρησιµοποίηση της Τεχνολογίας. Η πορεία που ακολουθείται στην ανάπτυξη των τεχνητών συστηµάτων φαίνεται στο Σχήµα 1.7. επιστήµων ανάγκες/ πρόβληµα εύρεση θεωρητικής λύσης θεωρητική λύση εύρεση τεχνολογικής λύσης µηχανικός τεχνολογική λύση Σχήµα 1.7. Ανάπτυξη τεχνητών συστηµάτων 18

Η τριάδα (πρακτικό πρόβληµα, θεωρητική λύση, τεχνολογική λύση) βρίσκεται στο επίκεντρο της τεχνολογικής προόδου. Χωρίς τέτοιες τριάδες δεν είναι δυνατή η διαθεσιµότητα τεχνητών συστηµάτων που η εξάρτηση του ανθρώπου από αυτά σήµερα είναι δεδοµένη και απαραίτητη, δυστυχώς. Η ανάπτυξη των τεχνητών συστηµάτων είναι µια δύσκολη υπόθεση. Σε ορισµένες περιπτώσεις δεν είναι εφικτή η ανάπτυξη τεχνητών συστηµάτων που χρειαζόµαστε γιατί είτε δεν έχουµε σωστή θεωρητική λύση είτε δεν έχουµε την απαιτούµενη τεχνολογία. Ένα παράδειγµα που φαίνεται ότι έχουµε θεωρητική λύση αλλά δεν έχουµε τεχνολογική λύση, αφορά στην κατασκευή Αντιδραστήρων για την παραγωγή ενέργειας µε βάση τη σύντηξη του υδρογόνου. Τώρα και πολλά χρόνια πειραµατίζονται µε την κατασκευή τέτοιων Αντιδραστήρων αλλά ακόµη δεν φτάσαµε στην επιθυµητή τεχνολογική λύση. Ένα παράδειγµα που δεν έχουµε θεωρητική λύση και εποµένως δεν έχει νόηµα να προχωρήσουµε στην τεχνολογική λύση φαίνεται να είναι ο Πόλεµος των Άστρων. Αυτό το πρόβληµα σχετίζεται µε τις ΗΠΑ και αφορά στην κατασκευή ενός τεχνητού συστήµατος το οποίο θα προστατεύει αυτή τη χώρα από επίθεση µε πυραύλους που θα µεταφέρουν πυρηνικά όπλα. Η επιθυµητή λύση είναι η έγκαιρη αναγνώριση αυτών των αντικειµένων και η καταστροφή τους στον αέρα χωρίς επιπτώσεις για τις ίδιες τις ΗΠΑ, δηλαδή χωρίς υλικές καταστροφές, απώλειες ανθρώπων, ραδιενέργεια και γενικότερα µόλυνση του περιβάλλοντος. 19 1.5.1 εδοµενικά προβλήµατα Τα πρακτικά προβλήµατα αναλύονται σε υποπροβλήµατα που ορισµένα είναι ατοµικά και ορισµένα σύνθετα. Τα σύνθετα υποπροβλήµατα πάλι αναλύονται σε ατοµικά και σύνθετα κ.ο.κ. Μια κατηγορία από αυτά τα υποπροβλήµατα έχει λύσεις που στην εκτέλεσή τους απαιτούνται δεδοµένα και προκύπτουν ως αποτελέσµατα πάλι δεδοµένα. Τα υποπροβλήµατα αυτής της κατηγορίας ονοµάζονται δεδοµενικά προβλήµατα, οι λύσεις και οι εργασίες, που 19

αντιστοιχούν στην εκτέλεσή αυτών των λύσεων, ονοµάζονται δεδοµενικές λύσεις και δεδοµενικές εργασίες. Έτσι, τα δεδοµενικά προβλήµατα είναι µια ειδική κατηγορία των πρακτικών προβληµάτων. Είναι αυτά που η εκτέλεση της λύσης τους απαιτεί δεδοµένα αλλά παράγει και δεδοµένα. 1.6 Επίλυση προβληµάτων Ο άνθρωπος είναι το µοναδικό πλάσµα που ο Θεός το έχει προικίσει µε την ικανότητα να λύνει προβλήµατα. Κατά την επίλυση προβληµάτων (problem solving) ο άνθρωπος κάνει µια εργασία που είναι πνευµατική (mental process). 1.6.1 Γνωστικό µοντέλο Ένα µοντέλο που φαίνεται να ακολουθεί ο άνθρωπος όταν επιτελεί την εργασία της επίλυσης προβληµάτων, δίνεται στο Σχήµα 1.8 και ονοµάζεται γνωστικό µοντέλο (cognitive model). Το γνωστικό αυτό µοντέλο αν και προφανές πολλές φορές δεν ακολουθείται µε αποτέλεσµα να παίρνουµε λάθος λύσεις. Ιδιαίτερης αξίας είναι η ανατροφοδότηση που είναι εκείνος ο µηχανισµός ο οποίος διευκολύνει την εξεύρεση λύσης αλλά και εξασφαλίζει την ορθότητά της. 1.6.2 Γνωστική βιβλιοθήκη Έχει γίνει αποδεκτή σήµερα η θεώρηση ότι ο άνθρωπος αποθηκεύει στο κεφάλι του σε µια ειδική βιβλιοθήκη, που αποκαλείται γνωστική βιβλιοθήκη (cognitive library), γνώσεις τις οποίες ανακτά και τις επεξεργάζεται κατά βούληση. Οι γνώσεις που αποθηκεύονται σε µια τέτοια βιβλιοθήκη είναι διαφόρων κατηγοριών. Οι πιο σηµαντικές κατηγορίες είναι: 20

21 Σχήµα 1.8. Γνωστικό µοντέλο επίλυσης προβλήµατος α) Πραγµατισµικές (Factual) Oι γνώσεις αυτές αφορούν οντότητες φυσικές ή νοηµατικές και εµπεριέχουν πληροφορίες που χαρακτηρίζουν αυτές τις οντότητες π.χ. η Αθήνα είναι πρωτεύουσα της Ελλάδας. β) Συντακτικές (Syntactic) / Σηµασιολογικές (Semantic) Οι γνώσεις αυτές αφορούν γλώσσες φυσικές ή τεχνητές και επικεντρώνονται στη σύνταξη και τη σηµασιολογία αυτών των γλωσσών π.χ. η Ελληνική γλώσσα, η γλώσσα προγραµµατισµού C. γ) Κανόνες (Rules) / Αρχές (Principles) / Νόµοι (Laws) 21

Οι γνώσεις αυτές αφορούν συµπεράσµατα που είναι καταστάλαγµα πειραµάτων και παρατηρήσεων και θεωρούνται ως καθολικής αποδοχής και αξίας. δ) Λύσεις (Solutions) Οι γνώσεις αυτές αφορούν λύσεις προβληµάτων και χωρίζονται σε δύο υποκατηγορίες. Η πρώτη υποκατηγορία εµπεριέχει λύσεις καθολικά αποδεκτές σε κοινά προβλήµατα οι οποίες έχουν βρεθεί συνήθως από άλλους ανθρώπους και µπορούν να χρησιµοποιηθούν ως έχουν όπως π.χ. οι διάφοροι αλγόριθµοι. Η δεύτερη υποκατηγορία εµπεριέχει λύσεις ιδιωτικές, λύσεις που αφορούν το ίδιο το άτοµο όπως π.χ. η λύση στο πρόβληµα πως πηγαίνει αυτό το άτοµο από το σπίτι του στο γραφείο του. Αν µια λύση αυτής της κατηγορίας αξιολογηθεί ότι µπορεί να είναι χρήσιµη και σε άλλα άτοµα για το ίδιο ή παρόµοιο πρόβληµα, δηλαδή αξίζει να κοινολογηθεί, τότε ονοµάζεται µόρφηµα (pattern) [ ]. Αυτή η θεώρηση για τη γνωστική βιβλιοθήκη, ακόµη και αν δεν ανταποκρίνεται στην πραγµατικότητα, είναι χρήσιµη γιατί µας επιτρέπει εύκολα να εξηγήσουµε ορισµένα πράγµατα, όπως π.χ. σε τί διαφέρουν οι έµπειροι άνθρωποι σε ένα πεδίο από τους άπειρους; µα στο ότι οι πρώτοι έχουν στη γνωστική τους βιβλιοθήκη περισσότερη γνώση σχετική µε αυτό τα συγκεκριµένο πεδίο από τους δεύτερους. Μετά, τί σηµαίνει ξεχνώ; µα ότι στη γνωστική µου βιβλιοθήκη οι σύνδεσµοι σε συγκεκριµένες γνώσεις χαθήκανε. Ακόµη, τί σηµαίνει µαθαίνω; µα ότι επαυξάνω τη γνωστική µου βιβλιοθήκη µε νέα γνώση. Όµως, το σπουδαιότερο είναι ότι µας επιτρέπει να εξηγήσουµε πως βρίσκουµε λύσεις σε προβλήµατα. Η εξήγηση αυτή χονδρικά έχει ως ακολούθως. Για ένα συγκεκριµένο πρόβληµα, ο άνθρωπος ενεργώντας ως λύτης, χρησιµοποιεί το µυαλό του ως επεξεργαστή, το γνωστικό µοντέλο του Σχήµατος 1.8 ως µοντέλο επίλυσης και συµβουλεύεται τη γνωστική του βιβλιοθήκη. Αν σ αυτή υπάρχει λύση γι αυτό το συγκεκριµένο πρόβληµα τότε γίνεται αµέσως αποδεκτή. ιαφορετικά, αν υπάρχει παραπλήσια λύση τότε αυτή κόβεται και ράβεται ώστε να λύνει το συγκεκριµένο πρόβληµα. ιαφορετικά, που είναι και το δυσκολότερο, αναζητείται µια νέα λύση εξ αρχής. 22

2. Λογισµικά Συστήµατα 2.1 Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής (Η-Υ) όπως βγαίνει από το εργοστάσιο είναι γυµνός. Μπορεί και εκτελεί προγράµµατα γραµµένα σε γλώσσα µηχανής που είναι εξαιρετικά δύσχρηστη. Αυτό καθιστά και τον ίδιο δύσχρηστο και εποµένως ελάχιστα χρήσιµο. Ο άνθρωπος βρήκε τρόπο και τον έντυσε φορώντας του τρεις φορεσιές τη µια µέσα στην άλλη που τον καθιστούν εύχρηστο και προπαντός χρήσιµο. Η εσωτερική φορεσιά, Σχήµα 2.1, ονοµάζεται βασισµικό (baseware) και εµπλουτίζει τη γλώσσα µηχανής µε εντολές υψηλότερου επιπέδου χρήσιµες σε καθολικό επίπεδο. Αυτή η φορεσιά υλοποιείται από το Λειτουργικό Σύστηµα (Operating System), το Σύστηµα ιαχείρισης Βάσεων εδοµένων (Data Base Management System) και µερικά άλλα συστήµατα. Η µεσαία φορεσιά ονοµάζεται µεσισµικό (middleware) και εµπλουτίζει περαιτέρω τον Η-Υ, σε δυνατότητες κυρίως επικοινωνίας προγραµµάτων που τρέχουν σε διασυνδεδεµένους υπολογιστές και είναι χρήσιµες σε καθολικό επίπεδο. Η εξωτερική φορεσιά ονοµάζεται πανωϊσµικό (topware). Αυτή η φορεσιά αυτοµατοποιεί δεδοµενικές εργασίες και βέβαια για κάθε µια τέτοια εργασία έχουµε και µια διαφορετική 23

φορεσιά. Κάθε τέτοια φορεσιά υλοποιείται από ένα πρόγραµµα ειδικό για την αντίστοιχη δεδοµενική εργασία που αυτοµατοποιεί. Τα προγράµµατα αυτά Σχήµα 2.1. Μια ανατοµία ενός Η-Υ ονοµάζονται προγράµµατα εφαρµογής(application programs). Το βασισµικό, το µεσισµικό και το πανωισµικό αναφέρονται συλλήβδην µε τον όρο λογισµικό (software). Το λογισµικό εποµένως είναι εκείνο που ντύνει τον Η- Υ και τον µεταµορφώνει από νάνο σε γίγαντα. Αν και κατασκευάζονται Η-Υς διαφόρων κατηγοριών, όπως φαίνεται στο Σχήµα 2.2, το ίδιο ισχύει σε κάθε µια κατηγορία χωριστά όσον αφορά το λογισµικό που απαιτείται για το ντύσιµο τους µόνο που είναι διαφορετικό εν γένει στις διαφορετικές κατηγορίες. 24

25 Σχήµα 2.2. Μια κατηγοριοποίηση των Η-Υν 2.2 Λογισµικό Στο λογισµικό(software), όπως ορίστηκε στην προηγούµενη παράγραφο, συγκαταλέγονται ακόµη και τα λογισµικά εργαλεία (software tools). Έτσι, η πλήρης εικόνα του λογισµικού ενός Η-Υ δίνεται στο Σχήµα 2.3, όπου το πανωισµικό ταυτίζεται µε το λογισµικό εφαρµογής. Τα λογισµικά εργαλεία είναι λογισµικά συστήµατα απαραίτητα για την κατασκευή λογισµικού και σε ένα από τα επόµενα κεφάλαια γίνεται εκτενέστερος λόγος γι αυτά. 25

Σχήµα 2.3. Μια κατηγοριοποίηση του λογισµικού 2.3 Υπολογιστικά συστήµατα Ένας Η-Υ, ντυµένος µε την έννοια που αναφέρθηκε παραπάνω, µπορεί να θεωρηθεί ως όλον. Όµως και πολλοί ντυµένοι Η-Υ συνδεδεµένοι µεταξύ τους µέσω ενός δικτύου µπορούν να θεωρηθούν ως όλον. Και στις δύο περιπτώσεις το όλον αναφέρεται µε τον όρο υπολογιστικό σύστηµα (computer system). Tα υπολογιστικά συστήµατα είναι αυτά που µπορούν και παράγουν έργο. Όλες οι συνιστώσες καθενός από τους υπολογιστές ενός υπολογιστικού συστήµατος συνεισφέρουν σ αυτό, δηλαδή η υλισµική και η λογισµική πλατφόρµα του καθώς και τα προγράµµατά του. Μια κατηγοριοποίηση των υπολογιστικών συστηµάτων παρουσιάζεται στο Σχήµα 2.4. 2.3.1 Κεντρικά Τα κεντρικά(centric) συστήµατα αποτελούνται από ένα µόνο υπολογιστή. Αρχικά όλα τα υπολογιστικά συστήµατα ήταν αυτής της κατηγορίας. 26

27 2.3.2 Ενσωµατωµένα Σχήµα 2.4. Μια κατηγοριοποίηση των υπολογιστικών συστηµάτων 27

Σχήµα 2.5. Κεντρικό υπολογιστικό σύστηµα 2.3.3 Κατανεµηµένα 2.3.3.1 Πελάτη - εξυπηρετητή 28

29 πελάτες Computer πελάτης 1 Computer πελάτης n LAN εξυπηρετητής Σχήµα 2.6. Υπολογιστικό σύστηµα πελάτη-εξυπηρετητή 29

πελάτες πελάτης 1 πελάτης n INTERNET Web Server LAΝ Server Σχήµα 2.7. Κατανεµηµένο Σύστηµα βασισµένο στο Internet 30

31 πελάτες πελάτης 1 πελάτης n INTERNET εξωτερικές υπηρεσίες Web server LAN επαναχρησιµοποιούµενες ψηφίδες server Σχήµα 2.8. Αναδυόµενο κατανεµηµένο σύστηµα 31

2.4 Λογισµικά συστήµατα Τα λογισµικά συστήµατα είναι γλωσσολογικά προϊόντα. Ως τέτοια είναι περιγραφές, ενδιάµεσες και τελικές. Οι τελικές περιγραφές περιγράφουν πλήρως τις δεδοµενικές εργασίες που θέλουµε ένας Η-Υ να εκτελεί αυτόµατα για µας. Η τελική περιγραφή γίνεται σε µια γλώσσα, την τελική γλώσσα. Η γλώσσα αυτή είναι µια γλώσσα προγραµµατισµού. Η τελική περιγραφή ονοµάζεται πρόγραµµα. Οι ενδιάµεσες περιγραφές είναι πρώιµες προσεγγίσεις της τελικής περιγραφής και γίνονται πριν από αυτή αλλά γι αυτήν. Οι περιγραφές αυτές γίνονται σε διάφορες γλώσσες που ονοµάζονται ενδιάµεσες γλώσσες και οι ίδιες οι περιγραφές ονοµάζονται τεχνήµατα (artifacts). Τα λογισµικά συστήµατα είναι απαραίτητα υποσυστήµατα των τεχνητών συστηµάτων που χρειάζεται ο άνθρωπος σήµερα. Η κατασκευή αλλά και η ποιότητα των τεχνητών συστηµάτων επηρεάζεται αποφασιστικά από εκείνη των λογισµικών συστηµάτων. Μπορεί σε πολλά τεχνητά συστήµατα να µην φαίνονται τα λογισµικά συστήµατα, που εµπεριέχονται σ αυτά, όµως είναι εκεί και µάλιστα είναι απαραίτητα. Ως παράδειγµα, µπορεί να αναφερθεί το αεροπλάνο, αλλά και γενικότερα δεν υπάρχει σήµερα τεχνητό σύστηµα κάποιου µεγέθους και πολυπλοκότητας χωρίς να εµπεριέχει λογισµικά υποσυστήµατα. Μπορεί στις περισσότερες περιπτώσεις, τα λογισµικά συστήµατα να είναι αόρατα, όµως είναι παρόντα και µάλιστα αναντικατάστατα. Σε µερικές περιπτώσεις, τα λογισµικά συστήµατα είναι αυτοτελή και ορατά και υποστηρίζουν τον άνθρωπο στην εκτέλεση ορισµένων εργασιών, όπως π.χ. στην επεξεργασία κειµένου ή στην εκτέλεση αριθµητικών υπολογισµών. Στις περιπτώσεις αυτές, αν και υπάρχουν αντίστοιχα τεχνητά συστήµατα στα οποία τα λογισµικά συστήµατα εντάσσονται ως υποσυστήµατα, αυτά τα τεχνητά συστήµατα δεν είναι ευδιάκριτα. Όµως, στις περισσότερες περιπτώσεις τα λογισµικά συστήµατα εντάσσονται ως υποσυστήµατα σε τεχνητά συστήµατα τα οποία είναι ευδιάκριτα. 32

3. Κατασκευή Λογισµικών Συστηµάτων Η κατασκευή των λογισµικών συστηµάτων γίνεται σε διάφορα στάδια και η εργασία που απαιτείται γι αυτό ονοµάζεται Λογισµική Εργασία (Software Process) οι δε άνθρωποι που την κάνουν ονοµάζονται Λογισµικοί Μηχανικοί (Software Engineers). Ο αντίστοιχος τεχνολογικός κλάδος είναι η Λογισµική Μηχανική (Software Engineering), που είναι ένας κατασκευαστικός κλάδος. Ως τέτοιος διαφέρει από τους άλλους κλάδους αυτής της κατηγορίας στο ότι σ αυτόν το προϊόν της κατασκευής είναι γλωσσολογικό, δηλαδή αποτελείται από γλωσσoλογικά στοιχεία συγκεκριµένων γλωσσών σε γραπτή µορφή (γλωσσολογικό υλικό) ενώ στους άλλους κλάδους το προϊόν αποτελείται από φυσικά υλικά (µέταλλο, ξύλο, µαλλί, βαµβάκι, κ.λπ.). Σε όλες τις περιπτώσεις, πρέπει να γίνεται η κατασκευή των λογισµικών συστηµάτων, που χρειαζόµαστε, εκτός και επαναχρησιµοποιούµε έτοιµα που βέβαια κάποια φορά κατασκευαστήκανε και αυτά. Αυτό είναι το αντικείµενο της Λογισµικής Μηχανής. 33

3.1 υσκολίες Η κατασκευή των λογισµικών συστηµάτων αποδείχθηκε στην πράξη µία εξαιρετικά δύσκολη υπόθεση. Ορισµένοι λόγοι που συµβάλλουν σ αυτό είναι: (1) Η πολυπλοκότητα των λογισµικών συστηµάτων. (2) Η ταύτιση των λογισµικών συστηµάτων µε τα τεχνητά συστήµατα και το φόρτωµα της αποτυχίας της κατασκευής ενός τεχνητού συστήµατος στα λογισµικά συστήµατα ενώ αυτά πιθανόν φέρουν µόνο µέρος της ευθύνης και ίσως και καθόλου. (3) Ακολουθείται όχι η ενδεδειγµένη διαδροµή στην κατασκευή λογισµικών συστηµάτων. Όπως φαίνεται στο Σχήµα 3.1, η ενδεδειγµένη διαδροµή είναι αυτή που σηµατοδοτούν οι κάθετες πλευρές του σχηµατικού τριγώνου και όχι αυτή που υποδηλεί η υποτείνουσα αυτού του τριγώνου. (4) ίνεται λάθος θεωρητική λύση. (5) Η µετατροπή της θεωρητικής λύσης σε τεχνολογική λύση είναι αδύνατη εξαιτίας άλυτων ακόµη τεχνολογικών προβληµάτων. 34

επιστήµων ανάγκες/ πρόβληµα εύρεση θεωρητικής λύσης δεδοµενικό κοµµάτι θεωρητικής λύσης εύρεση υβριδικής λύσης εύρεση τεχνολογικής λύσης λογισµικός µηχανικός λογισµικός µηχανικός λογισµικό σύστηµα Σχήµα 3.1. ιαδροµές κατασκευής λογισµικών συστηµάτων 3.2 Λογισµική εργασία Η εργασία που γίνεται κατά την κατασκευή των λογισµικών συστηµάτων ονοµάζεται, όπως αναφέρθηκε παραπάνω, λογισµική εργασία(software process). Η λογισµική εργασία είναι µια σύνθετη εργασία που µπορεί να χωρισθεί σε άλλες απλούστερες, κάθε µία από αυτές σε άλλες απλούστερες, κ.ο.κ. Αυτή η κατάτµηση είναι φανερό πως µπορεί να γίνει µε πολλούς τρόπους. Ακόµη, κάθε µία από αυτές 35

τις εργασίες µπορεί να εκτελείται µε διάφορους τρόπους. Αυτό οδηγεί σε µια µεγάλη ποικιλία λογισµικών εργασιών. Ουσιαστικά, το αντικείµενο της Λογισµικής Μηχανικής είναι η λογισµική εργασία, αφού τα λογισµικά συστήµατα κατασκευάζονται µέσω αυτής. Ο όρος µεθοδολογία(methodology) χρησιµοποιείται συχνά αντί του όρου λογισµική εργασία, όπως εξηγείται σε επόµενη παράγραφο. Ακόµη, οι εργασίες στις οποίες χωρίζεται η λογισµική εργασία στο πρώτο επίπεδο, επικράτησε να ονοµάζονται και αυτές λογισµικές εργασίες. Όµως στη συνέχεια θα ονοµάζονται και ως δευτερεύουσες λογισµικές εργασίες προς αποφυγή σύγχυσης. Το ζητούµενο είναι, αφού υπάρχουν πολλές διαφορετικές λογισµικές εργασίες, ποια είναι η καταλληλότερη; Αυτό είναι δύσκολο να απαντηθεί. Έως τώρα έχουν προταθεί πολλές δεκάδες λογισµικών εργασιών (µεθοδολογιών). Μάλιστα έχει γίνει προσπάθεια ενοποίησης αυτών σε µία. Αποτέλεσµα αυτής της προσπάθειας είναι «Η Ενοποιηµένη Λογισµική Εργασία Ανάπτυξης Λογισµικών Συστηµάτων» (The Unified Software Development Process). Παρά ταύτα, το θέµα δεν έκλεισε και έτσι νέες λογισµικές εργασίες εξακολουθούν να κάνουν την εµφάνισή τους, όπως η CATALYSIS [ ], OPEN [ ]. Παρά τα θετικά βήµατα που έχουν γίνει έως τώρα µένει ακόµη πολύς δρόµος να γίνει για να φτάσουµε στην ιδανική λογισµική εργασία. Τα λογισµικά συστήµατα κατασκευάζονται, συντηρούνται, λειτουργούνται και αποσύρονται, όπως γίνεται µε όλα τα ανθρώπινα κατασκευάσµατα, δηλαδή έχουν ένα κύκλο ζωής. Αυτό επιτυγχάνεται µε την εκτέλεση ορισµένων λογισµικών εργασιών. Ο κύκλος ζωής των λογισµικών συστηµάτων εµπεριέχει επιµέρους κύκλους που είναι: ένας για την αρχική κατασκευή µε ένα στιγµιότυπο, ένας για τη συντήρηση (κατασκευή επόµενων εκδόσεων) µε πολλά στιγµιότυπα, ένας για τη λειτουργία µε πολλά στιγµιότυπα και ένας για την απόσυρση µε ένα στιγµιότυπο. Για τη διεκπεραίωση καθενός από αυτούς τους τέσσερις επιµέρους κύκλους ζωής στήνεται και ένα ξεχωριστό έργο (software project). Έτσι, έχουµε τέσσερις τύπους έργων που σχετίζονται µε τον κύκλο ζωής των λογισµικών συστηµάτων. Οι τύποι αυτοί είναι: έργα κατασκευής, έργα συντήρησης, έργα λειτουργίας και έργα απόσυρσης. 36