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

Σχετικά έγγραφα
ΚΕΦΑΛΑΙΟ 6 ΠΑΡΑΓΩΓΗ ΠΗΓΑΙΟΥ ΚΩΔΙΚΑ. Έννοιες-κλειδιά

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

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

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

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

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

Εισαγωγή στην πληροφορική

Outline. 4 Object-Oriented Programming

Κεφάλαιο 1: Εισαγωγή. Αρχές Γλωσσών και Προγραμματισμού και Μεταφραστών. Γιάννης Γαροφαλάκης ΤΜΗΥΠ - Πανεπιστήμιο Πατρών

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

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

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

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

Εισαγωγή στην πληροφορική

Πληροφορική 2. Γλώσσες Προγραμματισμού

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

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

6. Εισαγωγή στον προγραµµατισµό

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

ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΘΕΜΑ 1 Α.

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Προγραµµατισµός Η/Υ. Μέρος2

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

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

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

Κεφάλαιο 1 Προγραμματισμός Υπολογιστή. Εφαρμογές Πληροφορικής Κεφ. 7 Καραμαούνας Πολύκαρπος 1

Εισαγωγή στην πληροφορική

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

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

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

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Γλώσσες Προγραμματισμού Μεταγλωττιστές

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

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

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

Εισαγωγή στην πληροφορική

6. 1 Η έννοια του προγράμματος

Τεχνολογία Λογισµικού Ι Κεφάλαιο 3 Μια αναλυτικότερη προσέγγιση στην δραστηριότητα 3.10

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

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

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

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει τρία εξίσου σημαντικά στάδια.

Η ΑΕΠΠ IN A GLANCE! ΦΡΟΝΤΙΣΤΗΡΙΑ ΠΟΛΥΜΕΝΗ

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

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

Αρχές Προγραμματισμού Υπολογιστών

Εισαγωγή στην πληροφορική

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

Ενότητα 13. Εισαγωγή στην Πληροφορική. Κεφάλαιο 13Α. Αρχεία. Χειµερινό Εξάµηνο ρ. Παναγιώτης Χατζηδούκας (Π..407/80) προγραµµατισµός

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

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

Π ρ ο γ ρ α μ μ α τ ι σ μ ό ς Β α σ ι κ έ ς έ ν ν ο ι ε ς Ι σ τ ο ρ ι κ ή α ν α δ ρ ο μ ή Η έννοια του προγράμματος Ιστορική αναδρομή

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

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

Μέρος Α. Λογισµικό & Προγράµµατα συστήµατος και εφαρµογών ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ. Το σηµερινό µάθηµα. Λογισµικό συστηµάτων & εφαρµογών

ΚΕΦΑΛΑΙΟ VI. Εισαγωγή στον προγραμματισμό

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 3 : Γλώσσες προγραμματισμού. Δρ.

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

Κεφάλαιο 6 Εισαγωγή στον Προγραμματισμό. 26-Jun-15 ΑΕΠΠ - Καραμαούνας Π. 1

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

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού

Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού

Κεφάλαιο 2: Μεταφραστές

for for for for( . */

(Imperative Programming) Pascal, C, Ada, Pazcal. (Functional Programming) Prolog (Logic Programming) (object-oriented programming) Java, C#

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

A) Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1-10 και δίπλα τη λέξη Σωστό, αν είναι σωστή, ή τη λέξη Λάθος, αν είναι

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

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

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

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Προγραμματισμός και Εφαρμογές Υπολογιστών

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

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

Εισαγωγή στην πληροφορική

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

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

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

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

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

Επικοινωνία Ανθρώπου- Υπολογιστή Σχεδίαση Αλληλεπίδρασης

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Εισαγωγή στην πληροφορική

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

Ενότητα 2 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Συγγραφή κώδικα, δοκιμασία, επαλήθευση. Γιάννης Σμαραγδάκης

.EVAL push bx Xor bx,bh Add si,ax.loop dec cx. 1. Fortran. 2. Cobol. 3. Algol

Transcript:

ΕΛΛΗΝΙΚΟ ΑΝΟΙΧΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Πρόγραµµα σπουδών "ΠΛΗΡΟΦΟΡΙΚΗ" - Θ.Ε. ΠΛΗ11 Τεχνολογία Λογισµικού Ι Κεφάλαιο 5 Βασίλειος Βεσκούκης ιδάκτωρ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών v.vescoukis@cs.ntua.gr

Παραγωγή πηγαίου κώδικα Ηφάση της ανάπτυξης λογισµικού, όπου κατασκευάζεται ο πηγαίος κώδικας (source code) των προγραµµάτων. Η Τεχνολογία Λογισµικού δεν εστιάζει την προσοχή της µόνο στη φάση αυτή, αλλά συνολικά στον κύκλο ζωής του λογισµικού. Ο πηγαίος κώδικας πρέπει να παράγεται, αλλά και να συντηρείται, «εύκολα»: Χωρίς διφορούµενα, χωρίς σφάλµατα, να είναι αναγνώσιµος, κ.α. Το λογισµικό που προκύπτει πρέπει να είναι αυτό το οποίο ζητούσε ο πελάτης και, µέχρι το σηµείο αυτό σχεδίαζε ο κατασκευαστής.

Λογισµικό χωρίς σφάλµατα Το λογισµικό που κάνει σωστά, ακριβώς αυτό για το οποίο προορίζεται. ύο διαστάσεις: «Σωστά», δηλαδή δεν παράγει σφάλµατα κατά την εκτέλεση (runtime) «Ακριβώς», δηλαδή ικανοποιεί τις απαιτήσεις Τίποτε από τα δύο αυτά, δεν είναι αυτονόητο, όσο «καλή» και να είναι η οµάδα που κατασκευάζει το λογισµικό. η ανάπτυξη του λογισµικού οµοιάζει µε σκόπευση κινουµένου στόχου, από κινούµενο έδαφος και µε όπλο που συνεχώς αλλάζει τη συµπεριφορά του

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

Περί πηγαίου κώδικα Ποιος είναι ο «καλύτερος» πηγαίος κώδικας: Ο πιο «γρήγορος»; Ο πιο «έξυπνος»; Ο πιο «µικρός»; Μερικά επιθυµητά χαρακτηριστικά: Επάρκεια (efficiency) Επιδόσεις σε συγκεκριµένες συνθήκες υνατότητα κατανόησης από τρίτους υνατότητα µεταφοράς υνατότητα επαναχρησιµοποίησης

Συνήθη χαρακτηριστικά πηγαίου κώδικα Κάνει «περίπου» αυτό που θέλουµε. εν διαβάζεται από άλλους προγραµµατιστές, ούτε καν από τον συγγραφέα του µετά από λίγο καιρό. εν «τρέχει» στην επόµενη έκδοση της υλοποίησης της γλώσσας προγραµµατισµού στην οποία γράφηκε. εν µπορούµε να τεκµηριώσουµε την δυνατότητα επαναχρησιµοποίησής του. if (x > 50000) const double NOT_TAXABLE = 50000; y = (x - 50000)* 0.2; const double TAX_RATE = 0.2; Else y = 0; if (income > NOT_TAXABLE) tax = (income - NOT_TAXABLE) * TAX_RATE; else tax = 0;

Εξέλιξη γλωσσών προγραµµατισµού COBOL Fortran BASIC Algol 60 Lisp PL/1 Algol 68 BCPL Standard ML Scheme Prolog Pascal C Simula 67 Haskell Ada C++ Smalltalk 80 Modula 2 Modula 3 Java Eiffel

οµηµένος προγραµµατισµός Οτρόπος συγγραφής πηγαίου κώδικα, σύµφωνα µε τον οποίο η συντακτική δοµή του προγράµµατος βοηθάει στην κατανόηση της ροής ελέγχου αυτού. Σε αντιπαραβολή µε το φαινόµενο spaghetti programming που εκδηλώθηκε ευρέως µε χρήση της εντολής GOTO, σε γλώσσες όπως η Assembly και η BASIC. Τρεις δοµές: Ακολουθία (s 1 ; s 2 ) Επιλογή (if c then s 1 else s 2 ) Επανάληψη (while c do s)

οµηµένος προγραµµατισµός S 1 ; S 2 if C then S 1 else S 2 while C do S S 1 true C false C false S 2 S 1 S 2 true S

Προβλήµατα Εντολή GOTO, exceptions, interrupts Τρόπος υποστήριξης κινητής υποδιαστολής Μετατροπές τύπων υναµική διαχείριση µνήµης Αναδροµή Παράλληλη εκτέλεση Προστασία χώρου εκτέλεσης Χαρακτηριστικά του λειτουργικού συστήµατος

Σύγχρονες γλώσσες προγραµµατισµού Ισχυρό σύστηµα τύπων Μοναδική αποτίµηση εκφράσεων χωρίς σφάλµατα κατά την εκτέλεση Κελυφοποίηση, απόκρυψη πληροφοριών Υποστηριζόµενες τεχνοτροπίες προγραµµατισµού Προστακτικός Αντικειµενοστρεφής Συναρτησιακός Λογικός

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

Πρόβλεψη και αντιµετώπιση σφαλµάτων Ανοχή σε σφάλµατα (fault tolerance) Η µεγιστοποίηση της πιθανότητας έλέγχου ροής του λογισµικού, µετά την παρουσίαση κάποιου σφάλµατος κατά την εκτέλεση Επιτακτική απαίτηση σε συστήµατα κρίσιµης αποστολής (mission critical systems) Κριτήριο επιλογής περιβάλλοντος προγραµµατισµού Τεχνικές υναµικός εντοπισµός σφαλµάτων και περιορισµός επιπτώσεων Ανάνηψη από σφάλµατα ( on error, transactions, architecture) Παρακολούθηση (logging) και πρόληψη σφαλµάτων µε τροποποιήσεις στον κώδικα που προκαλεί συχνά σφάλµατα

Πρόβλεψη και αντιµετώπιση σφαλµάτων Προγραµµατισµός πολλών εκδόσεων σύστηµα λογισµικού Έκδοση 1 Έκδοση 2 Σύγκριση αποτελεσµάτων Έκδοση 3 Αµυντικός προγραµµατισµός Ελεγχος όλων των δεδοµένων εισόδου για εγκυρότητα Συντηρητική αντιµετώπιση συχνών πηγών σφαλµάτων (π.χ. µετατροπές τύπων, διαχείριση µνήµης)

Επαναχρησιµοποίηση λογισµικού Επί µακρόν ευχή στην κοινότητα κατασκευαστών Επαναχρησιµοποίηση πηγαίου κώδικα: προϋπόθεση η «παραµετρικοποίηση» του κώδικα Μονάδες υπολογισµών (business logic) Μονάδες διαχείρισης µνήµης ύσκολη η επαναχρησιµοποίηση µονάδων διαχείρισης αρχείων ή επικοινωνίας µε το χρήστη, παρά µόνο σε «πακέτα» Η επαναχρησιµοποίηση µαθηµατικών συναρτήσεων επιστηµονικών υπολογισµών σε FORTRAN παραµένει το καλύτερο παράδειγµα επαναχρησιµοποίησης κώδικα. Η επαναχρησιµοποίηση πρέπει να αποτελεί απαίτηση από τις φάσεις της ανάλυσης και της σχεδίασης.