ΚΕΦΑΛΑΙΟ 20 ΕΠΑΝΑΧΡΗΣΙΜΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ

Σχετικά έγγραφα
KΕΦΑΛΑΙΟ ΣΧΕ ΙΑΣΜΟΣ ΙΕΠΑΦΗΣ ΧΡΗΣΤΗ

Δομές Δεδομένων & Αλγόριθμοι

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Λογισµικό (Software SW) Γλώσσες

ΣΕΜΙΝΑΡΙΟ JAVA. 5 η ιάλεξη

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

Week. 6: Java Collections

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Δείκτες σε συναρτήσεις. Προγραμματισμός II 1

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

Δομές Δεδομένων - Εργαστήριο 2. Λίστες

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

Τεχνολογίες Υλοποίησης Αλγορίθµων

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

ηµιουργία νέου τύπου δεδοµένων από το χρήστη

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

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

Διαφορές single-processor αρχιτεκτονικών και SoCs

Διαγράμματα Κλάσεων στη Σχεδίαση

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

Δομές Δεδομένων Boost C++ Libraries. 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

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

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Αξιολόγηση των Σχεδιαστικών Προτύπων και της Ποιότητας του Λογισμικού μέσω Μετρικών, στις Περιπτώσεις Προσθήκης Λειτουργικότητας και

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

ΚΕΦΑΛΑΙΟ 19 ΠΡΟΓΡΑΜΜΑΤΙΖΟΝΤΑΣ ΓΙΑΑΞΙΟΠΙΣΤΙΑ ΑΞΙΟΠΙΣΤΙΑ

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

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

H κλάση ArrayList. Γιώργος Θάνος. Γραφείο Γ. Γκλαβάνη 37. Αντικει ενοστραφής Προγρα. ος όροφος

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

Συγγραφή Προγραμμάτων

Μοντέλα. χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες.

Σχεσιακή Άλγεβρα. Κεφάλαιο 4. Database Management Systems, R. Ramakrishnan and J. Gehrke

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

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

Ενότητα 3 (κεφάλαιο 16) Επαναχρησιμοποίηση Λογισμικού

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα μέσα σε αντικείμενα Αντικείμενα ως επιστρεφόμενες τιμές Αντικείμενα με πίνακες

Δομές Δεδομένων Ενότητα 4

Διορθώσεις σελ

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

Δομές Δεδομένων (Data Structures)

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

Λίστα. Το διάνυζμα (vector) στο Mathematica είναι μια λίστα που έχει τα στοιχεία. Ο πίνακας ( matrix ) είναι λίστα απο τις λίστες.

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στην Γλώσσα Προγραμματισμού Python. 12/10/16 1

ΣΕΜΙΝΑΡΙΟ JAVA. 2 η ιάλεξη

PERL. Δήμος Παύλου Δημήτρης Κουζαπάς

ύο βασικές ιδέες Ενότητες Απόκρυψη Πληροφορίας, Αφηρηµένοι Τύποι εδοµένων 1) ιαχώρισε το πρόβληµα σεµικρότερα καλώς καθορισµένα υπο-προβλήµατα

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

ΟΙΚΟΝΟΜΙΚΗ ΠΡΟΣΦΟΡΑ ΣΧΕ ΙΑΣΗΣ ΚΑΙ ΚΑΤΑΣΚΕΥΗΣ ΙΑ ΙΚΤΥΑΚΟΥ ΠΛΗΡΟΦΟΡΙΑΚΟΎ ΣΥΣΤΗΜΑΤΟΣ. Τρίτη, 23 Νοεµβρίου 2010

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Πακέτα και Συστατικά Στοιχεία (Υποκυκλώματα)

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

ΜΑΘΗΜΑΤΑ PYTHON. Καθηγητής Ι. Δημητρίου.

Η γλώσσα Fortress. Γιώργος Κορφιάτης. Ερευνητικά Θέματα Υλοποίησης Γλωσσών Προγραμματισμού, Εργαστήριο Λογισμικού, ΕΜΠ ...

Εισαγωγή στην επιστήμη των υπολογιστών

Δομές Δεδομένων Ενότητα 3

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

Αντικειµενοστρεφής Προγραµµατισµός

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Κεφάλαιο 7: Υπορουτίνες

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

Θέµατα εξετάσεων µε απαντήσεις

Πληρουορική Γ Γσμμασίοσ

Boost - Boost Graph Library C++ library

Standard Template Library (STL) C++ library

VHDL για Σχεδιασµό Ακολουθιακών Κυκλωµάτων

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. VHDL για Ακολουθιακά Κυκλώματα 1

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Με τι ασχολείται ο αντικειμενοστραφής προγραμματισμός

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

ιαφάνειες παρουσίασης #11

Ανάλυση Πληροφοριακών Συστημάτων. «Βασικές Έννοιες Αντικειμενοστρεφούς Προγραμματισμού Διαγράμματα κλάσεων» Βασίλειος Καρακόιδας

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

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

ΕΙΣΑΓΩΓΙΚΟ ΕΓΧΕΙΡΙ ΙΟ ΓΙΑ ΣΧΕ ΙΑΣΜΟ ΜΕ ΧΡΗΣΗ ΤΗΣ ΓΛΩΣΣΑΣ VHDL

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο6

ΜΑΘΗΜΑΤΑ PYTHON. Καθηγητής Ι. Δημητρίου.

Transcript:

ΚΕΦΑΛΑΙΟ 20 ΕΠΑΝΑΧΡΗΣΙΜΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ

Στόχοι Περιγραφή πλεονεκτηµάτων-µειονεκτηµάτων µειονεκτηµάτων επαναχρησιµοποίησης λογισµικού Ανάπτυξη για-µε επαναχρησιµοποίηση Χαρακτηριστικά γενικών επαναχρησιµοποιούµενων components Μέθοδοι ανάπτυξης φορητών συστηµάτων 2

Θέµατα ου καλύ τονται Ανάπτυξη λογισµικού µε επαναχρησιµοποίηση Ανάπτυξη λογισµικού για επαναχρησιµοποίηση Επαναχρησιµοποίηση µε χρήση γεννήτριας Φορητότητα Εφαρµογών 3

Πλεονεκτήµατα επαναχρησιµοποίησης λογισµικού Λιγότερο κόστος ανά τυξης λογισµικού Λιγότερος χρόνος ανά τυξης λογισµικού Αύξηση αξιο ιστίας λογισµικού 4

Επίπεδα επαναχρησιµοποίησης λογισµικού : Ε αναχρησιµο οίηση συστήµατος εφαρµογής Ολόκληρη η εφαρµογή µ ορεί να ε αναχρησιµο οιηθεί σε διαφορετικό µηχάνηµα Ε αναχρησιµο οίηση υ οσυστηµάτων Σηµαντικά υ ό-συστήµατα ό ως pattern-matching σύστηµα µ ορεί να ε αναχρησιµο οιηθεί Ε αναχρησιµο οίηση αντικειµένων ή Modules Το ε αναχρησιµο οιήσιµο συστατικό είναι µια συλλογή α ό συναρτήσεις ή διαδικασίες Ε αναχρησιµο οίηση συναρτήσεων Το ε αναχρησιµο οιήσιµο συστατικό είναι µια συνάρτηση 5

Ανά τυξη Λογισµικού µε Ε αναχρησιµο οίηση Μεγιστοποίηση της επαναχρησιµοποίησης ήδη υπαρχόντων µονάδων λογισµικού Μείωση συνολικού κόστους ανάπτυξης λογισµικού Λιγότερα συστατικά κοµµάτια χρειάζεται να σχεδιαστούν και να προγραµµατιστούν Ενσωµάτωση συστατικών κοµµατιών στο νέο πρόγραµµα 6

Πλεονεκτήµατα αυτής της προσέγγισης : Αύξηση αξιο ιστίας συστήµατος Μείωση του ρίσκου της όλης διαδικασίας Α οτελεσµατική χρήση α ό ειδικούς Ενσωµάτωση ροτύ ων του οργανισµού Μείωση χρόνου ανά τυξης λογισµικού 7

Ε αναχρησιµο οίηση σε µια τυ ική διαδικασία ανά τυξης ΣΧΕ ΙΑΣΜΟΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΣΥΣΤΗΜΑΤΟΣ ΠΡΟΣ ΙΟΡΙΣΜΟΣ ΣΥΣΤΑΤΙΚΩΝ ΚΟΜΜΑΤΙΩΝ ΑΝΑΖΗΤΗΣΗ ΕΠΑΝΑΧΡΗΣ. ΚΩΜΜΑΤΙΩΝ ΕΝΣΩΜΑΤΩΣΗ ΣΥΣΤΑΤΙΚΩΝ ΚΟΜΜΑΤΙΩΝ 8

Για ανάπτυξη λογισµικού µε επαναχρησιµοποίηση πρέπει να πληρούνται 3 συνθήκες : 1. Ύπαρξη επαναχρησιµοποιούµενων συστατικών κοµµατιών 2. Σιγουριά ότι τα επαναχρησιµοποιούµενα κοµµάτια θα λειτουργήσουν σωστά και αξιόπιστα 3. Ύπαρξη τεκµηρίωσης για κάθε επαναχρησιµοποιούµενο κοµµάτι 9

ιαδικασία Ανά τυξης Καθοδηγούµενη Α ό Ε αναχρησιµο οίηση ΑΝΑΓΝΩΡΙΣΗ ΠΡΟ ΙΑΓΡΑΦΩΝ ΣΥΣΤΗΜΑΤΟΣ ΑΝΑΖΗΤΗΣΗ ΕΠΑΝΑΧΡΗΣ. ΚΩΜΜΑΤΙΩΝ ΤΡΟΠΟΠΟΙΗΣΗ ΠΡΟ ΙΑΓΡΑΦΩΝ ΑΝΑΛΟΓΑ ΜΕ ΤΑ ΚΟΜΜΑΤΙΑ ΠΟΥ ΒΡΕΘΗΚΑΝ ΣΧΕ ΙΑΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΑΝΑΖΗΤΗΣΗ ΕΠΑΝΑΧΡΗΣ. ΚΩΜΜΑΤΙΩΝ ΠΡΟΣ ΙΟΡΙΣΜΟΣ ΣΥΣΤΑΤΙΚΩΝ ΣΥΣΤΗΜΑΤΟΣ ΜΕ ΒΑΣΗ ΤΑ ΕΠΑΝΑΧΡ. ΚΟΜΜΑΤΙΑ 10

υσκολίες που παρουσιάζονται µε την επαναχρησιµοποίηση : Υ ολογισµός µείωσης του κόστους εν υ οστηρίζετε η χρησιµο οίηση εργαλειοθηκών CASE Οι ερισσότεροι ρογραµµατιστές ροτιµούν να Ξαναγράφουν τα κοµµάτια κώδικα εν είναι σίγουρο αν θα βρεθούν τα κοµµάτια κώδικα Για ε αναχρησιµο οίηση 11

Ανά τυξη Λογισµικού Για Ε αναχρησιµο οίηση Είναι µια διαδικασία ανάπτυξης που επιλέγει ήδη υπάρχοντα συστατικά κοµµάτια λογισµικού και έχει σαν στόχο την γενίκευση τους και τεκµηρίωση τους για χρήση σε διάφορες εφαρµογές Το λογισµικό δεν µπορεί να χρησιµοποιηθεί άµεσα για επαναχρησιµοποίηση αλλά πρέπει να τροποποιηθεί για να χρησιµοποιηθεί σε διάφορες εφαρµογές 12

Αλλαγές που χρειάζονται για να γίνει ένα κοµµάτι του συστήµατος επαναχρησιµοποιήσιµο : Γενίκευση ονοµάτων Τα ονόµατα σε ένα component τρο ο οιούνται έτσι ώστε να µην αναφέρονται σε συγκεκριµένη εφαρµογή Γενίκευση λειτουργιών Προσθήκη λειτουργιών για ε ι λέον λειτουργικότητα και αφαίρεση λειτουργιών ου είναι συγκεκριµένες για µια εφαρµογή Γενίκευση εξαιρέσεων Χειρισµός εξαιρέσεων ου είναι συγκεκριµένος για µια εφαρµογή αφαιρείται και ροστίθεται διαχείριση εξαιρέσεων για αύξηση της ασφάλειας του component Πιστο οίηση Component 13

Ε αναχρησιµο οίηση για συγκεκριµένα Domain Τα components µπορούν να επαναχρησιµοποιηθούν σε εφαρµογές µε κοινά χαρακτηριστικά µε αυτή που αναπτύχθηκαν έτσι ώστε να υπάρχει αντιστοιχία µε τα στοιχεία της εφαρµογής 14

ADS Προσθήκη λειτουργιών σε ένα component για να καλύπτει όλο το Domain Απαιτούµενες λειτουργίες 1. Λειτουργίες Πρόσβασης 2. Λειτουργίες Κατασκευής 3. Ι/Ο λειτουργίες 4. Λειτουργίες σύγκρισης 5. Λειτουργίες Επανάληψης 15

Μοντέλο ε αναχρησιµο οιούµενου ADS ΕΞΑΓΩΜΕΝΑ ΟΝΟΜΑΤΑ ΤΥΠΩΝ ΛΕΙΤΟΥΡΓΙΕΣ Ι/Ο ΛΕΙΤΟΥΡΓΙΕΣ ΠΡΟΣΒΑΣΗΣ ADS ΛΕΙΤΟΥΡΓΙΕΣ ΕΠΑΝΑΛΗΨΗΣ ΛΕΙΤΟΥΡΓΙΕΣ ΚΑΤΑΣΚΕΥΑΣΤΗ ΛΕΙΤΟΥΡΓΙΕΣ ΣΥΓΚΡΙΣΗΣ 16

Πακέτο στην ADA για συνδεδεµένες Λίστες generic type ELEMENT is private ; package Linked is -- Exported type declarations type LIST is limited private ; type STATUS is range 1..10 ; type ITERATOR is private ; -- Comparison operations function Equals (L1, L2: LIST) return BOOLEAN ; function Equivalent (L1, L2: LIST) return BOOLEAN ; -- Access operations (Fig 20.6) -- Constructor operations (Fig. 20.7) -- I/O operations (Fig. 20.8) -- Iterator operations (Fig. 20.9) private type LIST_ELEM; type LIST is access LIST_ELEM ; type ITERATOR is access LIST_ELEM ; end Linked ; 17

Λειτουργίες Πρόσβασης -- true if the list has no elements function Is_empty (L: LIST) return BOOLEAN ; -- returns the number of elements in the list function Size_of (L: LIST ) return NATURAL ; -- true if a list element is the same as E function Contains (E: ELEMENT; L: LIST ) return BOOLEAN ; -- returns the first list element procedure Head (L: LIST; E: in out ELEMENT ; Error_level: out STATUS ) ; -- removes the first list element and returns the remaining list procedure Tail (L: LIST; Outlist: in out LIST ; Error_level: out STATUS ) ; 18

Λειτουργίες Κατασκευαστή -- Prune_to deletes the list up to and including -- the element matching E procedure Prune_to ( E: ELEMENT; Outlist: in out LIST ; Error_level: out STATUS ) ; -- Prune_from deletes list after element matching E procedure Prune_from( E: ELEMENT; Outlist: in out LIST ; Error_level: out STATUS ) ; -- Remove deletes the element which matches E procedure Remove ( E: ELEMENT; Outlist: in out LIST ; Error_level: out STATUS ) ; -- Remove_before and Remove_after delete the element before -- and after E respectively procedure Remove_before ( E: ELEMENT; Outlist: in out LIST; Error_level: out STATUS ) ; procedure Remove_after ( E: ELEMENT; Outlist: in out LIST ; Error_level: out STATUS ) ; 19

Λειτουργίες Ι/Ο -- print onto standard output procedure Print_list (L: LIST; Error_level: out STATUS ) ; procedure Write_list (F: TEXT_IO.FILE_TYPE ; L: LIST; Error_level: out STATUS ) ; procedure Read_list (F: TEXT_IO.FILE_TYPE ; Outlist: out LIST ; Error_level: out STATUS ) ; 20

Λειτουργίες Ε ανάληψης procedure Iterator_initialise (L: LIST; Iter: in out ITERATOR; Error_status: in out STATUS) ; procedure Go_next (L: LIST; Iter: in out ITERATOR; Error_status: in out STATUS) ; procedure Eval (L: List; Iter: in out ITERATOR; Val: out ELEMENT; Error_status: in out STATUS) ; function At_end (L: LIST; Iter: ITERATOR) return BOOLEAN ; 21

Ε αναχρησιµο οίηση και Κληρονοµικότητα Κληρονοµικότητα είναι η διαδικασία όπου µια κλάση κληρονοµεί γνωρίσµατα και λειτουργίες από µια άλλη κλάση Αντικειµενοστραφής γλώσσες Προγραµµατισµού Συνδυασµός κλάσεων για δηµιουργία νέων 22

ικτυωτή κλάση Peripheral Attributes and operations reused by inheritance down the hierarchy Storage Output Input Tape Disk Printer Screen Text input Position sensor Dot-matrix Laser Film Ink-jet 23

Μειονεκτήµατα της επαναχρησιµοποίησης µε κληρονοµικότητα ιασκορ ισµένος κώδικας σε ολλά σηµεία Περιττές λειτουργίες ύσκολη διαχείριση 24

Ε αναχρησιµο οίηση βασισµένη σε Γεννήτρια Πρόγραµµα υψηλού επιπέδου που συγκεντρώνει όλα τα κοµµάτια επαναχρησιµοποιούµενου κώδικα, τον τρόπο που συνδυάζονται και την παραµετροποίηση τους Γεννήτριες εφαρµογών για ε εξεργασία δεδοµένων ε ιχειρήσεων Γεννήτριες αναλυτών για ε εξεργασία γλωσσών Γεννήτριες κώδικα για εργαλειοθήκες CASE 25

Application description Program generator Generated program Application domain knowledge Database 26

Φορητότητα Εφαρµογής Ανάπτυξη λογισµικού που µπορεί να µεταφερθεί σε διάφορες πλατφόρµες Τεχνικές για επίτευξη : Εξοµοίωση µιας µηχανής σε άλλη Μετάφραση του ρογράµµατος σε µια γενική Γλώσσα µηχανής Χρησιµο οίηση ρο-ε εξεργαστή για µετάφραση Α ό µια γλώσσα ρογραµµατισµού σε άλλη 27

Η φορητότητα µιας εφαρµογής είναι ανάλογη µε την δουλεία που χρειάζεται για να λειτουργήσει σε άλλο περιβάλλον Μεταφερσιµότητα Η φυσική µετακίνηση του κώδικα ενός ρογράµµατος και των δεδοµένων του σε άλλο εριβάλλον Προσαρµοστικότητα Οι αλλαγές ου χρειάζονται για να λειτουργήσει ένα ρόγραµµα σε διαφορετικό εριβάλλον 28

ιεπαφές εφαρµογής ΒΙΒΛΙΟΘΗΚΕΣ ΣΥΣΤΗΜΑ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ ΕΦΑΡΜΟΓΗ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ ΜΝΗΜΗ & ΕΠΕΞΕΡΓΑΣΤΗΣ 29

Προβλήµατα Φορητότητας Αρχιτεκτονική Μηχανής Α εικόνιση ληροφοριών και οργάνωση τους Λειτουργικό σύστηµα Χαρακτηριστικά λειτουργικού συστήµατος Σύστηµα Πραγµατικού χρόνου Βιβλιοθήκες συστήµατος 30

ιε αφή φορητότητας Όλες οι διαδικασίες περνάνε µέσα από την διεπαφή φορητότητας και µετά παίρνουν πρόσβαση στο Λειτουργικό σύστηµα Αύξηση χρόνου α όκρισης 31

ΕΦΑΡΜΟΓΗ ΙΕΠΑΦΗ ΦΟΡΗΤΟΤΗΤΑΣ ΙΕΠΑΦΗ ΦΟΡΗΤΟΤΗΤΑΣ ΑΝΑΦΟΡΕΣ Ε ΟΜΕΝΩΝ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ & ΚΛΗΣΕΙΣ Ι/Ο Ι/Ο 32

Προβλήµατα φορητότητας εµφανίζονται όταν : Η εφαρµογή στηρίζετε σε συγκεκριµένες α εικονίσεις δεδοµένων Η εφαρµογή χρησιµο οιεί κλήσεις στο Λειτουργικό σύστηµα ου δεν υ άρχουν σε άλλα συστήµατα Η εφαρµογή εξαρτάτε α ό συγκεκριµένο σύστηµα Αρχειοθέτησης (FAT,NTFS,EXT, ) 33

Πρότυ α Υιοθέτηση προτύπων από τους κατασκευαστές λογισµικού για ανάπτυξη φορητών εφαρµογών Πρότυ α γλωσσών ρογραµµατισµού Πρότυ α Λειτουργικών συστηµάτων Πρότυ α δικτύων Πρότυ α συστηµάτων «αραθύρων» 34