TÂ ÓÔÏÔÁ ÔÁÈÛÌÈÎÔ I HPOºOPIKH. TÂ ÓÔÏÔÁ ÔÁÈÛÌÈÎÔ I AÚ TÂ ÓÔÏÔÁ ÔÁÈÛÌÈÎÔ, TfiÌÔ A' APXE TEXNO O IA O I MIKOY. TfiÌÔ A' B Û ÏÂÈÔ BÂÛÎÔ ÎË.

Σχετικά έγγραφα
Tεχνολογία Λογισµικού II

E π A π π ª π AÚ TÂ ÓÔÏÔÁ ÔÁÈÛÌÈÎÔ. TfiÌÔ ' MÈ Ï ÓÔ ËÌ. XÚÈÛÙÔ Ô Ï ÎË B ÛÂÈ Â ÔÌ ÓˆÓ

ÏËÚÔÊÔÚÈÎ Î È EÎapple  ÛË

TËÏÂÌ ÙÈÎ, È ÎÙ Î È KÔÈÓˆÓ

EÈ ÈÎ Ì Ù ÁÈ ÙËÓ ÔÈfiÙËÙ

E π A π π ª π TÂ ÓËÙ NÔËÌÔÛ ÓË - EÊ ÚÌÔÁ. TfiÌÔ ' ÂÓÂÙÈÎÔ AÏÁfiÚÈıÌÔÈ Î È EÊ ÚÌÔÁ. ÎÔı Ó ÛË

Θεωρία Πληροφορίας και Kωδικοποίησης

EÈÛ ÁˆÁ ÛÙËÓ ÏËÚÔÊÔÚÈÎ

EÈÛ ÁˆÁ ÛÙËÓ ÏËÚÔÊÔÚÈÎ

E π A π π ª π. Â È ÛÌfi ÔÁÈÛÌÈÎÔ. TfiÌÔ ' ÏÒÛÛÂ ÚÔÁÚ ÌÌ ÙÈÛÌÔ II. KÏÂ ÓıË Ú ÌappleÔ Ï Ë. (AÓÙÈÎÂÈÌÂÓÔÛÙÚÂÊ ÚÔÁÚ ÌÌ ÙÈÛÌfi )

E π A π π ª π AÚ TÂ ÓÔÏÔÁ ÔÁÈÛÌÈÎÔ. TfiÌÔ B' ÂÈÙÔ ÚÁÈÎ ÛÙ Ì Ù I

ÚÔÁÚ ÌÌ ÙÈÛÌfi ÁÈ ÙËÓ ÔÈfiÙËÙ

E π A π π ª π TÂ ÓËÙ NÔËÌÔÛ ÓË EÊ ÚÌÔÁ. TfiÌÔ B' NÂ ÚˆÓÈÎ ÎÙ Î È ÓÔ AÚÁ Ú ÎË EÊ ÚÌÔÁ

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. Σχολή Θετικών Επιστηµών και Τεχνολογίας. Πρόγραµµα Σπουδών ΠΛΗΡΟΦΟΡΙΚΗ. Θεµατική Eνότητα BΑΣΙΚΑ ΖΗΤΗΜΑΤΑ ΙΚΤΥΩΝ Η/Υ

Tεχνολογία Λογισµικού I

E π A π π ª π. È ÎÚÈÙ M ıëì ÙÈÎ. Î È M ıëì ÙÈÎ ÔÁÈÎ. TfiÌÔ A' È ÎÚÈÙ M ıëì ÙÈÎ ÂÒÚÁÈÔ BÔ ÚÔ

ÚÔËÁÌ Ó EÚÁ ÏÂ Î È M ıô ÔÈ ÁÈ ÙÔÓ ŒÏÂÁ Ô ÙË ÔÈfiÙËÙ

E π A π π ª π. Ú ÌÌÈÎfi ÚÔÁÚ ÌÌ ÙÈÛÌfi. MÔÓÙÂÏÔappleÔ ËÛË. TfiÌÔ A' M ÓÔ PÔ ÌÂÏÈÒÙË Î È ÚÔÛÔÌÔ ˆÛË

ÏËÚÔÊÔÚÈÎ Î È EÎapple  ÛË

ÚÔÛÙ Û Î È AÛÊ ÏÂÈ ÛÙËÌ ÙˆÓ YappleÔÏÔÁÈÛÙÒÓ

ιαχείριση και Ποιότητα Λογισµικού

ÚÔÁÚ ÌÌ ÙÈÛÌfi ÁÈ ÙËÓ ÔÈfiÙËÙ

B ÛÈÎ EÚÁ ÏÂ Î È M ıô ÔÈ ÁÈ ÙÔÓ ŒÏÂÁ Ô ÙË ÔÈfiÙËÙ

E π A π π ª π. ÚÔÁÚ ÌÌ ÙÈÛÌfi. ÁÈ ÙËÓ ÔÈfiÙËÙ. TfiÌÔ A' Â È ÛÌfi. ÁÈ ÙËÓ ÔÈfiÙËÙ. AÁÁÂÏfiappleÔ ÏÔ

Aρχές Διοίκησης Επιχειρήσεων

ÚÔÛÙ Û Î È AÛÊ ÏÂÈ ÛÙËÌ ÙˆÓ YappleÔÏÔÁÈÛÙÒÓ

Mηχανολογική Σχεδίαση

OÈÎÔÓÔÌÈÎ T ÓÈÎÒÓ ŒÚÁˆÓ

Σχεδιασμός και Eκτίμηση Έργων

Eιδικά Θέµατα υναµικής των Kατασκευών και Σεισµικής Mηχανικής

È Â ÚÈÛË YÁÚÒÓ AappleÔ Ï ÙˆÓ

E π A π π ª π º ÛÈÎÔ ËÌÂ. TfiÌÔ ' Ù ÙÈÛÙÈÎ ÂÚÌÔ Ó ÌÈÎ BÏ ÛË M Ú ÓÙ

ÚÔÛÙ Û Î È AÛÊ ÏÂÈ ÛÙËÌ ÙˆÓ YappleÔÏÔÁÈÛÙÒÓ

Aισθητήρες και Mικροαισθητήρες

Eισαγωγή στην Πυρηνική Φυσική

Ψηφιακή επεξεργασία εικόνων και σηµάτων

K ÓÔ.ÛÂÏÈ.(168ÛÂÏ.) :13 ÂÏ 1 (M ÚÔ ÙÛ ÁÎÔ) Eπιστήµη Eπιφανειών

Θεµέλια Γραµµικού Προγραµµατισµού

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

KO MA E I O OIH H 30/5/ :32 ÂÏ 1. Eπιστήµη Πολυµερών

È Â ÚÈÛË ÙÂÚÂÒÓ AappleÔ Ï ÙˆÓ

E π A π π ª π OÚÁ ÓÈÎ XËÌÂ. TfiÌÔ ' º ÛÌ ÙÔÛÎÔapple OÚÁ ÓÈÎÒÓ EÓÒÛˆÓ. I.. ÂÚÔı Ó ÛË

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

Σύµµικτες Kατασκευές

OÈÎÔÓÔÌÈÎ T ÓÈÎÒÓ ŒÚÁˆÓ

E π A π π ª π KÏ ÛÈÎ º ÛÈÎ I. TfiÌÔ ' HÏÂÎÙÚÔÌ ÁÓËÙÈÛÌfi. NÈÎfiÏ Ô. K Ï ÊË

K Ì ÚÈÓfi (232ÛÂÏ.) 23/3/ :03 ÂÏ 1. Mικροηλεκτρονική

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. Σχολή Θετικών Επιστηµών και Τεχνολογίας. Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH. Θεµατική Ενότητα ΣYΓXPONA IKTYA KAI YΠHPEΣIEΣ

Eγκυροποίηση Λογισµικού

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

TÂ ÓËÙ NÔËÌÔÛ ÓË - EÊ ÚÌÔÁ

E π A π Δ π Δ ª π. NÔÌÔıÂÛ Î È AÛÊ ÏÂÈ T ÓÈÎÒÓ ŒÚÁˆÓ. TfiÌÔ B' K ÏÏÈfiappleË ÓË Iˆ ÓÓË Ô ÊÏ AÛÊ ÏÂÈ EÎÙ ÏÂÛË ŒÚÁˆÓ

μ ÛÈÎ Ú ÈÎ Ô Î È ÈÔ ÎËÛË

Τεχνολογία Λογισμικού

ÔÌ Î È ÂÈÙÔ ÚÁ ÙÔ K ÙÙ ÚÔ

È Â ÚÈÛË ÙÂÚÂÒÓ AappleÔ Ï ÙˆÓ

H EÍ ÏÈÍË ÙˆÓ I ÂÒÓ ÛÙÈ º ÛÈÎ EappleÈÛÙ ÌÂ

E π A π Δ π Δ ª π. NÔÌÔıÂÛ Î È AÛÊ ÏÂÈ T ÓÈÎÒÓ ŒÚÁˆÓ. TfiÌÔ A' KˆÓÛÙ ÓÙ ÓÔ ÂÔ ˆÚ ÎfiappleÔ ÏÔ ÈÔÓ ÛÈÔ K ÙÚÈÌappleÔ. NÔÌÔıÂÛ EÎÙ ÏÂÛË T ÓÈÎÒÓ ŒÚÁˆÓ

ΚΕΦΑΛΑΙΟ 2 ΜΟΝΤΕΛΑ ΚΥΚΛΟΥ ΖΩΗΣ ΛΟΓΙΣΜΙΚΟΥ. Σκοπός. Έννοιες-κλειδιά

E π A π π ª π º ÛÈÎÔ ËÌÂ. TfiÌÔ E' º ÛÌ ÙÔÛÎÔapple ºÒÙË NÙ

Aποτίµηση Σεισµικών Bλαβών, Eπισκευές και Eνισχύσεις Kτιρίων Oπλισµένου Σκυροδέµατος

NÔÌÔıÂÛ Î È AÛÊ ÏÂÈ T ÓÈÎÒÓ ŒÚÁˆÓ

E π A π π ª π OÚÁ ÓÈÎ XËÌÂ. TfiÌÔ ' BÈÔÌfiÚÈ : ÔÌ & ÂÈÙÔ ÚÁÈÎfiÙËÙ N ÎÔ K. K Ú Ì ÓÔ

Eπικοινωνία Aνθρώπου Yπολογιστή

ΚΕΦΑΛΑΙΟ 1 ΓΝΩΡΙΜΙΑ ΜΕ ΤΗΝ ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ. Σκοπός. Προσδοκώμενα αποτελέσματα. Έννοιες-κλειδιά

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

È Â ÚÈÛË YÁÚÒÓ AappleÔ Ï ÙˆÓ

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

ÈÔÈÎËÙÈÎ appleè ÂÈÚ ÛÂˆÓ Î È ÚÁ ÓÈÛÌÒÓ

μ ÛÈÎ Ú ÈÎ Ô Î È ÈÔ ÎËÛË

ΚΕΦΑΛΑΙΟ 13 ΔΙΑΣΦΑΛΙΣΗ ΠΟΙΟΤΗΤΑΣ ΛΟΓΙΣΜΙΚΟΥ. Έννοιες-κλειδιά. Σύνοψη

µ : µ µ µ. µ / µ. µ, µ µ. µ µ. µ µ,. µ µ µ, µµ.

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. Σχολή Θετικών Επιστηµών και Τεχνολογίας. Πρόγραµµα Σπουδών ΠΛΗΡΟΦΟΡΙΚΗ. Θεµατική Eνότητα

È Â ÚÈÛË ÙÂÚÂÒÓ AappleÔ Ï ÙˆÓ

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. Σχολή Θετικών Επιστηµών και Τεχνολογίας. Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH

Oικολογία Aπό τη Bιόσφαιρα στους Πληθυσµούς

Προχωρημένα Ζητήματα Σχεδιασμού Κατανεμημένων Συστημάτων Εγχειρίδιο Μελέτης

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

Σχεδιασμός και Διαχείριση Λογισμικού

1η Ηµερίδα Ενηµέρωσης για τη δράση Ελληνικά Ακαδηµαϊκά Ηλεκτρονικά Συγγράµµατα και Βοηθήµατα

ÚıÔ ÔÍ ÛÙÔÓ 20fi ÈÒÓ. È ÏÔÁÔ ÙË ÚıÔ ÔÍ ÌÂ ÛË Î È Ó ÙÔÏ Δ ª. Ú Ú Ù μ Û ÏÂÈÔ Ú μ ÏÏÈ Ó ÙÔ ÕÁÁÂÏÔ. apple Î. ıëáëù

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

H EÍ ÏÈÍË ÙˆÓ I ÂÒÓ ÛÙÈ º ÛÈÎ EappleÈÛÙ ÌÂ

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

Τεχνολογία Λογισμικού

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ

Στοχαστική υναµική των Kατασκευών

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας. Πρόγραµµα Σπουδών ΠΡΟΧΩΡΗΜΕΝΕΣ ΣΠΟΥ ΕΣ ΣΤΗ ΦΥΣΙΚΗ.

Παραδοτέο Π.1 (Π.1.1) Εκθέσεις για προµήθεια εκπαιδευτικού υλικού

ΠΑΝΕΠΙΣΤΉΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ: ΣΥΣΤΗΜΑ ONLINE ΑΞΙΟΛΟΓΗΣΗΣ ΚΑΘΗΓΗΤΩΝ/ Ι ΑΣΚΟΝΤΩΝ

E π A π π ª π ÂÓÂÙÈÎ. TfiÌÔ ' EÍ ÏÈÍË ÂÒÚÁÈÔ PÔ ÎË

Ανάλυση Απαιτήσεων Απαιτήσεις Λογισµικού

Αρχιτεκτονικές Συστημάτων Διάχυτου και Σφαιρικού Υπολογισμού

Ζητήματα Σχεδιασμού και Προγραμματισμού Συστημάτων ΔιάχυτουΥπολογισμού

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

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

Ποιότητα Λογισμικού και Πιστοποίηση

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

Σχεδίαση Middleware Εγχειρίδιο Μελέτης

Transcript:

E π A π π ªπ TÂ ÓÔÏÔÁ ÔÁÈÛÌÈÎÔ I AÚ TÂ ÓÔÏÔÁ ÔÁÈÛÌÈÎÔ, TfiÌÔ A' B Û ÏÂÈÔ BÂÛÎÔ ÎË HPOºOPIKH TÂ ÓÔÏÔÁ ÔÁÈÛÌÈÎÔ I APXE TEXNO O IA O I MIKOY TfiÌÔ A' Á ÚËÌ ÙÔ fiùëûë: E Úˆapple Î EappleÈÙÚÔapple, E Úˆapple Îfi KÔÈÓˆÓÈÎfi T ÌÂ Ô, /ÓÛË V. H 20/1

Tεχνολογία Λογισµικού I

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας ΠΛΗΡΟΦΟΡΙΚΗ Aρχές Tεχνολογίας Λογισµικού I Tεχνολογία Λογισµικού I BAΣIΛEIOΣ BEΣKOYKHΣ ιδάκτωρ Hλεκτρολόγος Mηχανικός και Mηχανικός Yπολογιστών ΠATPA 2000

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH Θεµατική Ενότητα APXEΣ TEXNOΛOΓIAΣ ΛOΓIΣMIKOY Τόµος A' Tεχνολογία Λογισµικού I Συγγραφή BAΣIΛEIOΣ BEΣKOYKHΣ ιδάκτωρ Hλεκτρολόγος Mηχανικός και Mηχανικός Yπολογιστών Κριτική Ανάγνωση AXIΛΛEAΣ KAMEAΣ ρ Mηχανικός H/Y και Πληροφορικής Ακαδηµαϊκός Υπεύθυνος για την επιστηµονική επιµέλεια του τόµου ΠANAΓIΩTHΣ ΠINTEΛAΣ Καθηγητής Tµήµατος Mαθηµατικών Πανεπιστηµίου Πατρών Επιµέλεια στη µέθοδο της εκπαίδευσης από απόσταση HΛIAΣ ΣTAYPOΠOYΛOΣ Γλωσσική Επιµέλεια IΩANNHΣ ΓAΛANOΠOYΛOΣ Τεχνική Επιµέλεια ΕΣΠΙ ΕΚ ΟΤΙΚΗ Ε.Π.Ε. Καλλιτεχνική Επιµέλεια Σελιδοποίηση TYPORAMA Συντονισµός ανάπτυξης εκπαιδευτικού υλικού και γενική επιµέλεια των εκδόσεων ΟΜΑ Α ΕΚΤΕΛΕΣΗΣ ΕΡΓΟΥ ΕΑΠ / 1997 2000 ISBN: 960 538 097 8 Kωδικός Έκδοσης: ΠΛH 20/1 Copyright 2000 για την Ελλάδα και όλο τον κόσµο ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Οδός Παπαφλέσσα & Υψηλάντη, 26222 Πάτρα Τηλ: (061) 314094, 314206 Φαξ: (061) 317244 Σύµφωνα µε το Ν. 2121/1993, απαγορεύεται η συνολική ή αποσπασµατική αναδηµοσίευση του βιβλίου αυτού ή η αναπαραγωγή του µε οποιοδήποτε µέσο χωρίς την άδεια του εκδότη.

ÂÚÈÂ fiìâó Πρόλογος... 9 K º π 1 ÓˆÚÈÌ ÌÂ ÙËÓ TÂ ÓÔÏÔÁ ÔÁÈÛÌÈÎÔ Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις... 13 1.1 Yπολογιστές και Λογισµικό... 15 1.2 Tεχνικές Kατασκευές και Λογισµικό... 16 1.3 Kρίση Λογισµικού... 18 1.4 Tεχνολογία Λογισµικού... 19 1.5 Tο Λογισµικό ως µέρος συστηµάτων... 21 1.6 Tο Λογισµικό ως προϊόν... 23 1.7 Συστατικά στοιχεία Λογισµικού... 25 Σύνοψη κεφαλαίου... 27 K º π 2 MÔÓÙ Ï K ÎÏÔ Zˆ ÔÁÈÛÌÈÎÔ Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις... 29 2.1 H έννοια του µοντέλου κύκλου ζωής... 31 2.2 Το µοντέλο του καταρράκτη... 35 2.3 Το µοντέλο πρωτοτυποποίησης... 38 2.4 Tο µοντέλο λειτουργικής επαύξησης... 39 2.5 Tο σπειροειδές µοντέλο... 41 2.6 Tο µοντέλο του πίδακα... 43 2.7 Σύγχρονα µοντέλα κύκλου ζωής λογισµικού... 44 2.8 Περιγραφή διαδικασιών ανάπτυξης και προϊόντων λογισµικού... 46 Σύνοψη κεφαλαίου... 48

6 TEXNO O IA O I MIKOY I K º π 3 ÚÔ È ÁÚ Ê Aapple ÈÙ ÛÂˆÓ Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις... 51 3.1 H έννοια της απαίτησης από το λογισµικό... 53 3.2 Mηχανική απαιτήσεων... 62 3.3 Aνάλυση και προδιαγραφή απαιτήσεων... 66 3.4 Kαταγραφή των απαιτήσεων από το λογισµικό... 74 3.5 Προβλήµατα στον προσδιορισµό απαιτήσεων... 97 Σύνοψη κεφαλαίου... 102 K º π 4  ÛË Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις... 103 4.1 Σκοπός της σχεδίασης... 105 4.2 Tεχνοτροπίες σχεδίασης... 107 4.3 Aντικείµενο και αποτελέσµατα της σχεδίασης... 109 4.4 ιατάξεις λογισµικού... 118 4.5 Aρχιτεκτονική σχεδίαση... 123 4.6 Λεπτοµερής σχεδίαση µονάδων... 136 4.7 Σχεδίαση δεδοµένων... 141 Σύνοψη κεφαλαίου... 143 K º π 5 Ú ÁˆÁ ËÁ Ô KÒ ÈÎ Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις... 145 5.1 Από τη σχεδίαση στην κωδικοποίηση... 147 5.2 Eπιθυµητά χαρακτηριστικά του πηγαίου κώδικα... 151 5.3 Γλώσσες προγραµµατισµού... 155 5.4 Τεχνικές συγγραφής πηγαίου κώδικα... 162 5.5 Επαναχρησιµοποίηση µονάδων προγράµµατος... 166 Σύνοψη κεφαλαίου... 168

EPIEXOMENA 7 K º π 6 KÂÊ Ï ÈÔ 6: ŒÏÂÁ Ô Î È ÈfiÚıˆÛË ÛÊ ÏÌ ÙˆÓ Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις... 169 6.1 Γενικό πλαίσιο ελέγχου... 171 6.2 Προγραµµατισµός του ελέγχου... 172 6.3 Tεχνικές ελέγχου... 173 6.4 Eκτέλεση ελέγχου... 185 6.5 Aναφορές ελέγχου... 193 6.6 ιόρθωση σφαλµάτων... 195 6.7 Σύγχρονα εργαλεία ελέγχου... 196 Σύνοψη κεφαλαίου... 197 Γλωσσάρι όρων... 199 Γλωσσάρι όρων... 212 Γλωσσάρι όρων... 235 Προτεινόµενη βιβλιογραφία... 241 Βιβλιογραφία για περαιτέρω ανάγνωση... 242 Eπίλογος... 245

ÚfiÏÔÁÔ Φίλε αναγνώστη Το βιβλίο που κρατάς είναι το πρώτο από τα εκπαιδευτικά εγχειρίδια που θα χρησιµοποιήσεις στο πρόγραµµα σπουδών Πληροφορικής του Ελληνικού Ανοικτού Πανεπιστηµίου και ειδικότερα στη Θεµατική Ενότητα «Αρχές Τεχνολογίας Λογισµικού». Σκοπός του βιβλίου είναι να σε συνοδέψει στην αποκάλυψη µιας νέας, πολυσυζητηµένης και συνάµα συναρπαστικής περιοχής της επιστήµης της Μηχανικής (Engineering), η οποία στα ελληνικά επικράτησε να αποκαλείται «Τεχνολογία Λογισµικού» (Software Engineering). Στις µέρες µας όλοι µιλούν για την επανάσταση της πληροφορικής και των τηλεπικοινωνιών, για τις σύγχρονες εφαρµογές των υπολογιστών, που θα αλλάξουν τη ζωή µας, για το Internet και τις τεχνικές αλλά και κοινωνικές πλευρές της διάδοσής του. Η επιστήµη των υπολογιστών έχει, αναµφίβολα, προοδεύσει δραµατικά. Τίποτα όµως δε θα µπορούσε να είναι ορατό και εφαρ- µόσιµο σε ευρεία κλίµακα, αν δεν υπήρχε το κατάλληλο λογισµικό. Το λογισµικό είναι εκείνο το συστατικό που, αν και το ίδιο δεν έχει χειροπιαστή υπόσταση, µπορεί να καταστήσει µια υπολογιστική µηχανή χρήσιµη στον άνθρωπο. Όσο περισσότερο αναπτύσσονται οι ηλεκτρονικοί υπολογιστές, όσο περισσότερες δυνατότητες αποκτούν, τόσο περισσότερες γίνονται οι απαιτήσεις του ανθρώπου από αυτούς, τόσο περισσότερο σύνθετες εργασίες τους αναθέτουµε. Η ικανοποίηση των απαιτήσεων αυτών γίνεται µε τη βοήθεια του λογισµικού, η πολυπλοκότητα του οποίου αναπόφευκτα συνεχώς και αυξάνεται. Αν συνδυάσει κανείς το γεγονός ότι το λογισµικό λειτουργεί σε υπολογιστικές µηχανές, οι οποίες συνεχώς εξελίσσονται και ότι ικανοποιεί απαιτήσεις οι οποίες γίνονται ολοένα περισσότερες, πιο πολύπλοκες και µεταβάλλονται ταχύτατα µε το χρόνο, µε τη µη χειροπιαστή φύση του λογισµικού, τότε µπορεί εύκολα να υποψιαστεί ότι η κατασκευή του είναι από µόνη της µια ιδιαίτερα δύσκολη υπόθεση. Πράγµατι, από τα πρώτα χρόνια της διάδοσης των υπολογιστών, όχι ακόµα σε ευρεία κλίµακα, εκδηλώθηκαν σηµαντικά προβλήµατα στην κατασκευή λογισµικού. Είναι χαρακτηριστικό ότι ο όρος «Τεχνολογία Λογισµικού» (Software Engineering) εισήχθη για πρώτη φορά µαζί µε τον όρο «Κρίση Λογισµικού» (Software Crisis), το 1968. Έκτοτε, οι κατασκευαστές λογισµικού και οι ακαδηµαϊκοί ερευνητές προσπαθούν να προτείνουν τρόπους ώστε να γίνεται σωστά και αποτελεσµατικά

10 TEXNO O IA O I MIKOY I η κατασκευή λογισµικού καλής ποιότητας. Σε κάθε εποχή, ο ενθουσιασµός και οι τυµπανοκρουσίες της έλευσης µιας νέας προσέγγισης έδιναν τη θέση τους στην προσγειωµένη πραγµατικότητα. Τα προβλήµατα στην ανάπτυξη του λογισµικού συµπεριφέρονταν λίγο ως πολύ σαν λερναία ύδρα, όπου στη θέση κάθε κεφαλιού που κοβόταν φύτρωναν περισσότερα. Σήµερα, η αναζήτηση του «καλύτερου» τρόπου κατασκευής λογισµικού θεωρείται ιδεατή επιδίωξη. Έχει καταστεί σαφές ότι δεν υπάρχει καµία «χρυσή συνταγή» και ότι η ανάπτυξη του λογισµικού οφείλει να είναι µια ιδιαίτερα ευέλικτη διαδικασία, εύκολα προσαρµόσιµη στις εκάστοτε συνθήκες, αλλά και στη φύση τού εκάστοτε προβλήµατος στην επίλυση του οποίου χρησιµοποιείται λογισµικό. Αυτή είναι και η φιλοδοξία και συνάµα η πρόκληση που έχει να αντιµετωπίσει η Τεχνολογία Λογισµικού: να περιγράψει διαδικασίες που να είναι τεκµηριωµένες, σαφείς, προσαρµόσιµες στις εκάστοτε συνθήκες, εύκολα εφαρµόσιµες και οι οποίες οδηγούν στην κατασκευή καλής ποιότητας λογισµικού, µέσα στο προκαθορισµένο χρονοδιάγραµµα και προϋπολογισµό. Όπως και σε άλλα τεχνικά έργα, η ικανοποίηση όλων αυτών των απαιτήσεων δεν είναι εύκολη. Η επιδίωξη καλύτερης ποιότητας και πληρότητας σε ένα τεχνικό έργο (όπως, για παράδειγµα, ένας αυτοκινητόδροµος ή µια γέφυρα) είναι αναµενόµενο ότι και θα το καθυστερήσει και θα καταναλώσει µεγαλύτερο προϋπολογισµό. Σκεφτείτε πόσο µεγαλύτερο µπορεί να γίνει το πρόβληµα αυτό όταν το τεχνικό έργο είναι µη χειροπιαστό και κατασκευάζεται µε απαιτήσεις που µπορεί να µεταβάλλονται κατά τη διάρκεια της κατασκευής του, όπως ισχύει µε το λογισµικό. Μια ουσιώδης διαφορά του τεχνικού έργου ανάπτυξης λογισµικού, από την κατασκευή ενός οποιουδήποτε κλασικού τεχνικού έργου, είναι ότι για την πρώτη το µόνο απαιτούµενο κεφάλαιο είναι το µυαλό. Για να γίνει, δηλαδή, κανείς κατασκευαστής λογισµικού, δεν απαιτούνται τα κεφάλαια που απαιτούνται για να γίνει κατασκευαστής δηµόσιων τεχνικών έργων. Αυτό ισχύει και σε µακρο οικονοµικό επίπεδο: Για να γίνει µια χώρα ισχυρή στη βιοµηχανία λογισµικού, δεν είναι απαραίτητο να κάνει άλλες επενδύσεις παρά µόνο εκείνες που σχετίζονται µε την ανάπτυξη του ανθρώπινου δυναµικού. Για χώρες µικρές, όπως η δική µας, αυτό δίνει στην Τεχνολογία Λογισµικού µια άλλη διάσταση πρόκλησης: αν αναπτύξουµε µια ισχυρή βιοµηχανία λογισµικού, µπορούµε να διεκδικήσουµε µια καλύτερη θέση στην πολυφηµούµενη παγκοσµιοποιηµένη οικονοµία του αύριο. Ένα µικρό λιθαράκι στην ανάπτυξη του ανθρώπινου παράγοντα που θα µπο-

TEXNO O IA O I MIKOY I 11 ρέσει να µας οδηγήσει σε µια τέτοια πορεία, φιλοδοξεί να βάλει η γνώση που είναι αποτυπωµένη στο βιβλίο που κρατάς, φίλε αναγνώστη. Είναι προϊόν ακαδηµαϊκής και επαγγελµατικής εµπειρίας στο χώρο της ανάπτυξης λογισµικού και επιχειρείται να σου δοθεί µε τρόπο σαφή και κατανοητό. Σε ορισµένες περιπτώσεις στη βιβλιογραφία ίσως να συναντήσεις ελαφρώς διαφοροποιη- µένες προσεγγίσεις ή ακόµη και ορισµούς του ίδιου όρου. Αυτό είναι ενδεικτικό της κατάστασης σύγχυσης που επικράτησε για πολλά χρόνια στην κοινότητα των κατασκευαστών λογισµικού. Σύντοµα θα µπορείς να διακρίνεις το ουσιώδες από το δευτερεύον, σύντοµα θα αντιλαµβάνεσαι την ουσία και όχι τον τύπο των ορισµών. Το ζητούµενο, ούτως ή άλλως, δεν είναι να αποµνηµονεύσεις ούτε να αποδεχτείς γνώση «άνευ όρων». Είναι να µάθεις πώς να µαθαίνεις, να κρίνεις και να αξιολογείς. Οι γνώσεις που περιέχουν τα βιβλία πληροφορικής σύντοµα καθίστανται ανεπίκαιρες. Αυτό που ίσως µένει είναι η συµβολή τους στη δια- µόρφωση ενός τρόπου σκέψης. Αυτή είναι και η δική µας επιδίωξη, µέσα από αρκετά προβλήµατα και κυρίως µαχόµενοι µε την ανάγκη διατήρησης ενός (σχετικά µε το αντικείµενο) µικρού µεγέθους του βιβλίου αυτού. Τα παραδείγµατα και η µελέτη περίπτωσης στα Κεφάλαια 3 και 4 αξίζουν την προσοχή σου και θέλουµε να πιστεύουµε ότι συµβάλλουν στην επιδίωξη αυτή. Κατά τα άλλα, στο Κεφάλαιο 1 θα βρεις µια εισαγωγή στην Τεχνολογία Λογισµικού και µια απόπειρα να προσδιοριστεί το λογισµικό ως τεχνικό κατασκεύασµα, ως µέρος συστηµάτων, αλλά και ως προϊόν. Το κεφάλαιο στοχεύει στην οριοθέτηση του χώρου µέσα στον οποίο θα κινηθεί η ύλη που θα ακολουθήσει, καθώς και στην παράθεση χρήσιµων ορισµών, οι οποίοι θα χρησι- µοποιηθούν σε όλα τα κεφάλαια που θα ακολουθήσουν. Στο Κεφάλαιο 2 παρουσιάζεται η έννοια του «µοντέλου κύκλου ζωής λογισµικού» και τα βασικότερα από τα µοντέλα που χρησιµοποιούνται σήµερα. Εισάγονται σηµαντικές έννοιες, όπως «µοντέλο κύκλου ζωής», «διαδικασία ανάπτυξης», «φάση», «εργασία», «δραστηριότητα» και «εργαλείο» και δηµιουργείται το περίγραµ- µα πάνω στο οποίο θα γίνει η περιγραφή του τρόπου ανάπτυξης λογισµικού, η οποία θα ακολουθήσει. Τα επόµενα δύο κεφάλαια (3 και 4) είναι ουσιαστικά η «ψυχή» του βιβλίου και απαιτούν τη µεγαλύτερη προσοχή και ενασχόληση. Στο Κεφάλαιο 3 περιγράφεται η διαδικασία προσδιορισµού και καταγραφής των απαιτήσεων από το λογισµικό µε τεχνικές δοµηµένης ανάλυσης. Πιστεύω ότι και ως αναγνώστης θα συµφωνήσεις ότι αυτή είναι η πιο κρίσιµη και δηµιουργική εργασία

12 TEXNO O IA O I MIKOY I κατά την ανάπτυξη του λογισµικού. Η επιτυχία της θέτει τα θεµέλια για ένα επιτυχηµένο έργο λογισµικού, ενώ η αστοχία της µεταφέρεται πολλαπλασιαστικά σε όλες τις φάσεις που θα ακολουθήσουν, µε οδυνηρά συνήθως αποτελέσµατα. Στο Κεφάλαιο 4 περιγράφεται η φάση της δοµηµένης σχεδίασης λογισµικού, δηλαδή η διαδικασία µετάβασης από προδιαγραφές, οι οποίες καθορίζουν το «τι θα κάνει το λογισµικό», σε σχέδιο, το οποίο καθορίζει το «πώς». Η αφοµοίωση των αναφεροµένων στα δύο αυτά κεφάλαια απαιτεί σηµαντική ενασχόληση µε πολλά παραδείγµατα, αλλά και µελέτη της βιβλιογραφίας, ιδιαίτερα των δύο πρώτων προτεινόµενων αναφορών συµπληρωµατικής βιβλιογραφίας. Είναι χρήσιµο η αναδροµή στη βιβλιογραφία να γίνει, αφού έχει ολοκληρωθεί µία τουλάχιστον ανάγνωση των κεφαλαίων αυτών και αφού ο αναγνώστης έχει ασχοληθεί µε τις προτεινόµενες δραστηριότητες, καθώς και µε άλλα παραδείγµατα. Στο Κεφάλαιο 5 γίνεται µια περιήγηση στην παραγωγή πηγαίου κώδικα. Το θέµα πραγµατεύεται µε όση γενικότητα απαιτεί η αναφορά του σε ένα βιβλίο Τεχνολογίας Λογισµικού. Σε άλλες θεµατικές ενότητες, όπως, για παράδειγ- µα, οι «Τεχνικές προγραµµατισµού» και «Γλώσσες προγραµµατισµού», γίνεται µια δεόντως εκτενής αναφορά σε θέµατα προγραµµατισµού. Τέλος, το Κεφάλαιο 6 αναφέρεται σε τεχνικές ελέγχου, εντοπισµού και διόρθωσης σφαλ- µάτων. Η διαδικασία αυτή είναι συχνά υποτιµηµένη, τόσο λόγω εσφαλµένης αντίληψης, όσο και εξαιτίας χρονικών πιέσεων. Είναι όµως ο µόνος τρόπος που µπορεί να τεκµηριώσει το βαθµό εµπιστοσύνης απέναντι στην ορθότητα µιας εφαρµογής λογισµικού, ο οποίος ποτέ (ούτε και στις περιπτώσεις που το λογισµικό χρησιµοποιείται για διασκέδαση) δεν µπορεί να χαρακτηριστεί ως «αδιάφορος». Κλείνοντας, επιθυµώ να ευχαριστήσω όλους εκείνους που συνέβαλαν µε τη συνεργασία τους στη συγγραφή του βιβλίου αυτού. Ιδιαίτερα ευχαριστώ τον καθηγητή κ. Πιντέλα για την εµπιστοσύνη και τη συνεργασία του, το φίλο και συνεργάτη Ν. Παπασπύρου, καθώς και τον κ. Ν. Λεβογιάννη, για την πολύτιµη βοήθειά τους. Τέλος, όλους εκείνους που µε υπέφεραν το διάστηµα που πέρασε, αλλά και τους συνεργάτες του ΕΑΠ, χωρίς τη µεθοδική συµβολή των οποίων δε θα µπορούσε να έχει ολοκληρωθεί το συγγραφικό έργο. Επιθυµώ να αφιερώσω το βιβλίο στους µαχόµενους πληροφορικάριους, σε όλους εκείνους που παράγουν και δε «διαχειρίζονται». Βασίλειος Χ. Βεσκούκης Αθήνα, εκέµβριος 1999

ÚÔÙÂÈÓfiÌÂÓË BÈ ÏÈÔÁÚ Ê BÈ ÏÈÔÁÚ Ê Τα δύο πρώτα από τα προτεινόµενα βιβλία αποτελούν κλασικά συγγράµµατα που χρησιµοποιούνται στη διδασκαλία της Τεχνολογίας Λογισµικού σε πολλά πανεπιστήµια του κόσµου, είτε αυτούσια ως εκπαιδευτικά εγχειρίδια είτε ως συνοδευτικό υλικό. Καλύπτουν αρκετά µεγαλύτερο εύρος ύλης από αυτό του βιβλίου που κρατάτε και περιέχουν πλήθος χρήσιµων ασκήσεων. Ιδιαίτερα συνιστάται να προσέξετε τα κεφάλαια 1, 2, 11 14 του Pressman, και τα κεφάλαια 4 7, 12 13, 22 23 του Sommerville. Σε κάθε περίπτωση, η παραποµπή στο αντίστοιχο τµήµα της βιβλιογραφίας είναι περισσότερο αποδοτική, όταν γίνεται µετά την ανάγνωση του σχετικού κεφαλαίου στο βιβλίο αυτό. Pressman, R. S., Software Engineering A Practitioners Approach, McGraw Hill 4th edition. Sommerville, I., Software Engineering, London: Addison Wesley. Ακολούθως προτείνονται δύο από τα βιβλία που αποτέλεσαν το θεµέλιο της δοµηµένης ανάλυσης και σχεδίασης. Αν και ήδη έχουν κάποια ηλικία, ο αναγνώστης µπορεί εκεί να βρει τη θεωρητική θεµελίωση και πλήθος παραδειγµάτων δοµηµένης ανάλυσης και σχεδίασης. Yourdon, E. and Constantine, L. L. (1979), Structured Design, Englewood Cliffs, New Jersey: Prentice Hall, ISBN 0 13 354471 9. Yourdon, E. (1989), Modern Structured Analysis, Yourdon Press, Prentice Hall Building, Englewood Cliffs, New Jersey 07632. Τέλος, το βιβλίο του κ. Σκορδαλάκη αποτελεί το εγχειρίδιο του αντίστοιχου µαθήµατος στο ΕΜΠ και περιέχει µια µεγάλη κάλυψη µε κατανοητού βάθους αναφορές σε πολλά θέµατα της Τεχνολογίας Λογισµικού. Σκορδαλάκης, Μ. (1991), Εισαγωγή στην Τεχνολογία Λογισµικού, Αθήνα, εκδόσεις ΣΥΜΜΕΤΡΙΑ.

242 TEXNO O IA O I MIKOY I BÈ ÏÈÔÁÚ Ê µè ÏÈÔÁÚ Ê ÁÈ appleâú ÈÙ Úˆ Ó ÁÓˆÛË Στη βιβλιογραφία που ακολουθεί καλύπτονται σε αρκετά µεγαλύτερο βάθος ορισµένα σηµαντικά κεφάλαια της Τεχνολογίας Λογισµικού. Οι δύο πρώτες αναφορές ασχολούνται µε την εξέλιξη της πρακτικής πλευράς της ανάπτυξης λογισµικού µέσα σε µία δεκαετία, ενώ η τρίτη είναι η πρώτη παρουσίαση του σπειροειδούς µοντέλου κύκλου ζωής. Agresti, W. W. (1986), New Paradigms for Software Development, IEEE Computer Society Order Number 707, IEEE Computer Society Press. Boehm, B. W. (1975) In Horowitz, E. et al., Practical Strategies for Developing Large Software Systems, Reading, Massachusetts: Addison Wesley. Boehm, B. W., A Spiral Model of Software Development and Enhancement, IEEE Computer, May 1988, pp. 61 72. Έπεται ένα σύνολο αναφορών σε ζητήµατα όπως ο κύκλος ζωής, η επαλήθευση λογισµικού, το κόστος ανάπτυξης, η σύγκριση εναλλακτικών µοντέλων κύκλου ζωής, γενικές αρχές της Τεχνολογίας Λογισµικού, αλλά και δοµηµένη ανάλυση / σχεδίαση και έλεγχος και εργαλεία CASE. Ο αναγνώστης παραπέµπεται στη βιβλιογραφία αυτή µόνο όταν έχει ήδη εξαντλήσει τη µελέτη της συµπληρωµατικής βιβλιογραφίας και θέλει να εµβαθύνει ακόµη περισσότερο. Boehm, B. W., Software life cycle factors, Handbook of Software Engineering, edited by C. Vick and C. V. Ramamoorthy, Van Nostrand Reinhold, New York, 1984, pp. 494 518. Boehm, B. W., Verifying and Validating Software Requirements and Design Specifications, IEEE Software, January 1984, pp.75 88. Brooks, F. P. (1982), The Mythical Man Month, Reading, Massachusetts: Addison Wesley. Budgen, D. (1989), Introduction to Software Engineering, SEI Curriculum Module SEI CM 2 2.1, Software Engineering Institute, Carnegie Mellon University. Davis, A. M., E. H. Bersoff and E. R. Comer, A Strategy for Comparing Aternative Software Development Life Cycle Models,

TEXNO O IA O I MIKOY I 243 IEEE Trans. on Soft. Eng., Vol. 14, No. 10, 1988, pp. 1453 1461. BÈ ÏÈÔÁÚ Ê De Macro, T. (1978), Structured Analysis and System Specification, New York, Yourdon Press. Fairley, R. E. (1985), Software Engineering Concepts, McGraw Hill. Gane, C. and T. Sarson (1979), Structured Systems Analysis: Tools and Techniques, N. J., Prentice Hall, Englewood Cliffs. Gane, Chris (1990), Computer Aided Software Engineering, Englewood Cliffs, New Jersey: Prentice Hall, ISBN 0 13 172776 1. Hall, A., Seven Myths of Formal Methods, IEEE Software, September 1990, pp. 11 19. Howden, W. E. (1987), Functional Program Testing and Analysis, McGraw Hill International Editions. Οι τέσσερις αναφορές που ακολουθούν είναι τα πρότυπα του IEEE που αποτέλεσαν τη βάση για την περιγραφή των εγγράφων προδιαγραφών των απαιτήσεων από το λογισµικό, σχεδίασης κ.ά. Πρόκειται για ιδιαίτερα χρήσιµες αναφορές, οι οποίες, αν και δεν περιέχουν γνώση, είναι ένα καλό σηµείο αναφοράς για τη δόµηση τέτοιων εγγράφων. Αξίζει να αναφερθεί ότι η πιστοποίηση εταιρειών ανάπτυξης λογισµικού κατά τα πρότυπα της σειράς 9000 ISO απαιτεί τη συµµόρφωση µε τέτοια έγγραφα, όπως συµβαίνει και µε πολλά έργα ανάπτυξης λογισµικού το τελευταίο διάστηµα. IEEE Guide To Software Requirements Specification, ANSI/IEEE, Std 830 1993, 1984. IEEE Recommended Practice for Software Design Descriptions, ANSI/IEEE, Std 1016 1987. IEEE Standard for Software Test Documentation, ANSI/IEEE, Std 829 1991. IEEE Standard Glossary of Software Engineering Terminology, ANSI/IEEE, Std 610.12 1990. Οι τελευταίες από τις αναφορές προαιρετικής ανάγνωσης κινούνται στο ίδιο πλαίσιο της µεγαλύτερης εµβάθυνσης σε ύλη, η

244 TEXNO O IA O I MIKOY I BÈ ÏÈÔÁÚ Ê οποία έχει νόηµα όταν ή ύλη έχει καλυφθεί πλήρως, τόσο από αυτό το βιβλίο όσο και από τη συµπληρωµατική βιβλιογραφία. Ιδιαίτερη αναφορά αξίζει στην τελευταία των αναφορών, όπου το θέµα της σχεδίασης Βάσεων εδοµένων αντιµετωπίζεται σε πληρότητα και βάθος. Jackson, M. A. (1983), System Development, Englewood Cliffs, N. J.: Prentice Hall. Macro, A. and J. Buxton (1987), The Craft of Software Engineering, Addison Wesley. Peters, L. J. (1981), Software Design, New York: Yourdon Press, ISBN 0 91 707219 7. Scacchi, W. (1987), Models of Software Evolution: Life Cycle and Process, SEI Curriculum Module SEI CM 10 1.0, Carnegie Mellon University, Software Engineering Institute. Williams, R. D., Management of Software Development, Handbook of Software Engineering, Edited by C. R. Vick and C. V. Ramamoorthy, Van Nostrand Reinhold, 1984, pp. 456 468. Κόλλιας, Γ. (1986), Βάσεις εδοµένων, τόµος ΙΙ, Αθήνα, εκδόσεις ΣΥΜΜΕΤΡΙΑ.

Eapple ÏÔÁÔ Φίλε αναγνώστη, Στο σηµείο αυτό ολοκληρώνεται η πρώτη σου περιήγηση στη γνωστική περιοχή της Τεχνολογίας Λογισµικού µε οδηγό το βιβλίο που κρατάς. Ως συγγραφέας, θέλω να ελπίζω ότι το βιβλίο σε βοήθησε στην πορεία σου και σου έδωσε τη θεµελιώδη γνώση και την αρχική καθοδήγηση σχετικά µε τα θέµατα που πραγµατεύεται. Εξίσου, αν όχι περισσότερο, θέλω να ελπίζω ότι µε την περιήγηση αυτή σού κινήθηκε το ενδιαφέρον και ο προβληµατισµός σχετικά µε την Τεχνολογία Λογισµικού. Ένα βιβλίο δεν είναι «καλό», όταν περιέχει τις απαντήσεις. Σε αρκετές περιπτώσεις, είναι καλύτερο όταν θέτει τα ερωτήµατα και προσπαθεί να παρωθήσει τον αναγνώστη να βρει µόνος του τις απαντήσεις. Η λεγόµενη «βιοµηχανική πρακτική», η οποία ακολουθείται σήµερα στην κατασκευή του λογισµικού, έχει εξελίξει πολλά από τα αναφερό- µενα στο βιβλίο αυτό. Αυτό δεν τα καθιστά «άχρηστα», όπως άχρηστες δεν είναι οι βασικές γνώσεις των µαθηµατικών, παρά το ότι κάπου µπορεί να είναι τετριµµένη η εφαρµογή τους. Η εφαρµογή και η εξέλιξη µιας επιστήµης προϋποθέτουν την ύπαρξη καλών θεµελίων, ακόµα και αν αυτά δεν είναι ορατά «πάνω από το έδαφος». Η ωφελιµιστική αντι- µετώπιση των πάντων στις µέρες µας συχνά µας κάνει να αντιµετωπίζουµε την επιστήµη ως ένα «εφόδιο για δουλειά», ως µια «επιταγή προς εξαργύρωση» έναντι υλικής ευηµερίας. Η επιστήµη, ωστόσο, είναι κάτι περισσότερο από αυτό. Είναι ο δρόµος για την αποκάλυψη της αξίας του γίγνεσθαι και δεν εξαργυρώνεται πάντα, ούτε και µπορεί να κατηγοριοποιείται απροβληµάτιστα σε «χρήσιµη» και «άχρηστη», σε «εφαρµόσιµη» και «παρωχηµένη» και να προσπερνάται. Από την αρχή, εξάλλου, σου δηλώσαµε ότι το ζητούµενο δεν είναι η αποµνηµόνευση και η αποδοχή της «αλήθειας», αλλά η κριτική τοποθέτησή σου σε όλα όσα αναφέρονται τόσο σε αυτό το βιβλίο όσο και στη βιβλιογραφία, στην οποία συχνά θα ανατρέξεις. Εκεί, όπου θα βρεις παρουσιάσεις που δεν είχαν το δικό µας περιορισµό χώρου, τις οποίες πρέπει να αξιολογήσεις και να κρίνεις. Σε κάθε περίπτωση, µην περιµένεις µόνο από τα βιβλία να καταλάβεις την Τεχνολογία Λογισµικού. Αν δε «σηκώσεις τα µανίκια», αν δεν καταπιαστείς µε πραγ- µατικά προβλήµατα, αν δεν εξαντλήσεις τις ασκήσεις που θα λάβεις

246 TEXNO O IA O I MIKOY I για εκπόνηση στο πλαίσιο των σπουδών σου στο ΕΑΠ, τότε το πιθανότερο είναι ότι η επαφή σου µε το θέµα είναι µάλλον επιφανειακή. Στο δεύτερο µέρος του βιβλίου αυτού (Θεµατική Ενότητα «Τεχνολογία Λογισµικού ΙΙ») θα ασχοληθούµε µε περισσότερο σύγχρονες προσεγγίσεις στην ανάπτυξη του λογισµικού, οι οποίες κερδίζουν συνεχώς έδαφος σήµερα και πιστεύω πως θα τις δούµε να επικρατούν στο µέλλον. Μέχρι τότε, «καλό δρόµο και καλή αντάµωση!». Βασίλειος Χ. Βεσκούκης Αθήνα, εκέµβριος 1999