5. Τεχνολογία Λογισμικού Πληροφορική και Θεολογία, Παναγιώτης Κατσαρός - Αν. Καθηγητής (katsaros@csd.auth.gr) 12 Α"ριλίου 2019
Κύκλος ζωής εφαρμογών Ο υ:ολογιστής ;:ορεί να βοηθήσει στην ε:ίλυση :ολλών :ροβλη;άτων. εδο;ένα και :ρογρά;;ατα εισάγονται σε έναν υ:ολογιστή, :ου αναλα;βάνει την ε:εξεργασία των δεδο;ένων ;ε βάση τις εντολές :ου :εριέχονται στα :ρογρά;;ατα, και στο τέλος εξάγονται τα α:οτελέσ;ατα της ε:εξεργασίας αυτής. Τα :ρογρά;;ατα :ου χρησι;ο:οιούν οι χρήστες των υ:ολογιστών για να εκτελούν συγκεκρι;ένες εργασίες ονο;άζονται εφαρ;ογές. Η ανά:τυξη των σύγχρονων εφαρ;ογών είναι ;ια α:αιτητική εργασία, γι αυτό και :ραγ;ατο:οιείται ακολουθώντας ;ια συστη;ατική σειρά φάσεων :ου ονο;άζεται κύκλος ζωής εφαρ;ογών.
Προβλήματα Hς :ρόβλη;α θεωρού;ε κάθε ζήτη;α :ου τίθεται :ρος ε:ίλυση, κάθε κατάσταση :ου ;ας α:ασχολεί και :ρέ:ει να αντι;ετω:ιστεί. Πολλά :ροβλή;ατα είναι υ:ολογιστικά και α:αιτούν για την ε:ίλυσή τους λογικές σκέψεις και ;αθη;ατικές :ράξεις, :.χ. ο υ:ολογισ;ός της ;ισθοδοσίας ενός υ:αλλήλου, ο υ:ολογισ;ός του ;έσου όρου της βαθ;ολογίας ενός ;αθητή, η ε:ίλυση ;ιας δευτεροβάθ;ιας εξίσωσης η :ρόγνωση του καιρού ;ε βάση ;ετεωρολογικά στοιχεία. Υ:άρχουν :ροβλή;ατα :ου δεν ;:ορού;ε να ε:ιλύσου;ε ;ε τις υ:άρχουσες γνώσεις ;ας, ό:ως για :αράδειγ;α η ακριβής :ρόβλεψη των σεισ;ών. Κά:οια :ροβλή;ατα δεν ε:ιλύονται, ό:ως ο τετραγωνισ;ός του κύκλου ;ε κανόνα και διαβήτη. Για την αντι;ετώ:ιση των :ροβλη;άτων α:αιτείται :ρώτα η κατανόησή τους ;ε σαφή και :λήρη καταγραφή και α:οσαφήνιση των δεδο;ένων και των ζητου;ένων, έ:ειτα η ανάλυσή τους σε ε:ι;έρους α:λούστερα :ροβλή;ατα, και τέλος η εκτέλεση οργανω;ένων βη;άτων ε:ίλυσης.
Προγράμματα για την επίλυση προβλημάτων Ένα :ρόγρα;;α :εριέχει εντολές (οδηγίες) :ου κατευθύνουν ;ε κάθε λε:το;έρεια τον υ:ολογιστή, για να εκτελέσει ;ία συγκεκρι;ένη εργασία και να ε:ιλύσει ένα :ρόβλη;α. ίνου;ε στον υ:ολογιστή δεδο;ένα για το :ρόβλη;α :ου θέλου;ε να αντι;ετω:ίσου;ε, αυτός τα ε:εξεργάζεται σύ;φωνα ;ε τις εντολές των :ρογρα;;άτων :ου εκτελεί, και στο τέλος ;άς δίνει την α:άντηση στο :ρόβλη;ά ;ας.
Ανάπτυξη εφαρμογών Τα :ρογρά;;ατα σε έναν υ:ολογιστή χωρίζονται σε δύο ;εγάλες κατηγορίες, στο Λογισ;ικό Εφαρ;ογών και στο Λογισ;ικό Συστή;ατος. Τα :ρογρά;;ατα :ου ανήκουν στο Λογισ;ικό Εφαρ;ογών ονο;άζονται α:λά και εφαρ;ογές (applications - apps). Η ανά:τυξη εφαρ;ογών :ρέ:ει να ακολουθεί ;ια συστη;ατική διαδικασία ;ε βή;αταφάσεις, ώστε να α:οφεύγονται τα σφάλ;ατα, οι δυσλειτουργίες και οι ελλείψεις. Μια εφαρ;ογή ξεκινάει τον κύκλο ζωής της α:ό τη στιγ;ή :ου θα καθοριστούν οι α:αιτήσεις και οι :ροδιαγραφές της, και τελειώνει, όταν εξαντληθούν τα :εριθώρια συντήρησής της (:ροσθήκες, αλλαγές και βελτιώσεις). Οι ε;:λεκό;ενοι στη διαδικασία αυτή είναι ο :ελάτης :ου ε:ενδύει στην ανά:τυξη της εφαρ;ογής, ο κατασκευαστής :ου ανα:τύσσει την εφαρ;ογή και οι χρήστες :ου θα χρησι;ο:οιήσουν την εφαρ;ογή.
Κύκλος ζωής εφαρμογών Ο κύκλος ζωής δείχνει τη σειρά των φάσεων ;ιας εφαρ;ογής και το :ώς ;ία φάση οδηγεί στην ε:ό;ενη ή την :ροηγού;ενη. Στην Ανάλυση καταγράφονται τα δεδο;ένα και τα ζητού;ενα του :ροβλή;ατος της υ:ό ανά:τυξης εφαρ;ογής. Περιγράφονται οι :ροδιαγραφές και οι α:αιτήσεις των ;ελλοντικών χρηστών της. Στη Σχεδίαση καθορίζονται οι ενότητες (;έρη) της εφαρ;ογής καθώς και οι σχέσεις ;εταξύ τους. Σχεδιάζονται οι αλγόριθ;οι και ε:ιλέγονται οι δο;ές δεδο;ένων :ου θα χρησι;ο:οιηθούν. Στη φάση της Υλο0οίησης ε:ιλέγεται η γλώσσα :ρογρα;;ατισ;ού της εφαρ;ογής οι :ρογρα;;ατιστές ;ε βάση τους αλγόριθ;ους και τις δο;ές δεδο;ένων της Σχεδίασης γράφουν το :ρόγρα;;α στην ε:ιλεγ;ένη γλώσσα :ρογρα;;ατισ;ού το :ρόγρα;;α εισάγεται σε ειδικό :ρόγρα;;α-;εταφραστή για να ;ετατρα:εί σε «γλώσσα» κατανοητή α:ό τον υ:ολογιστή, και, αν δεν υ:άρχουν συντακτικά λάθη είναι έτοι;ο για εκτέλεση και χρήση. Στη φάση της Λειτουργίας η εφαρ;ογή δίνεται στους χρήστες για δοκι;ές, ώστε να βρεθούν και διορθωθούν :ιθανά λάθη και α:οκλίσεις α:ό τις :ροδιαγραφές, και ;ετά ξεκινάει η κανονική χρήση της. Στη φάση της Συντήρησης γίνονται όλες οι α:αραίτητες :ροσαρ;ογές, αναβαθ;ίσεις και διορθώσεις της εφαρ;ογής, :ροκει;ένου αυτή να συνεχίσει να χρησι;ο:οιείται α:ρόσκο:τα και α:οδοτικά.
Περιβάλλοντα ανάπτυξης εφαρμογών Τα :εριβάλλοντα ανά:τυξης εφαρ;ογών ;άς :αρέχουν τη δυνατότητα να σχεδιάζου;ε και να υλο:οιού;ε εφαρ;ογές. Κάθε :εριβάλλον υ:οστηρίζει συγκεκρι;ένες γλώσσες :ρογρα;;ατισ;ού και έχει ιδιαίτερα χαρακτηριστικά. Στα ολοκληρω;ένα :εριβάλλοντα ανά:τυξης συνυ:άρχουν διάφορα εργαλεία και έτσι διευκολύνεται και ε:ιταχύνεται η ανά:τυξη ;ιας εφαρ;ογής είτε α:ό έναν είτε α:ό ο;άδα :ρογρα;;ατιστών. Κά:οια α:ό αυτά διαθέτουν και γραφικά εργαλεία σχεδίασης των εφαρ;ογών. Ε:ίσης, αρκετά εγκαθίστανται σε διάφορα Λειτουργικά Συστή;ατα (Windows, Linux, Mac OS X), υ:οστηρίζουν σχεδόν όλες τις δη;οφιλείς γλώσσες :ρογρα;;ατισ;ού (Java, C/C++, Python, PHP, JavaScript) και χρησι;ο:οιούνται για την ανά:τυξη αυτόνο;ων εφαρ;ογών για υ:ολογιστή, εφαρ;ογών για το ιαδίκτυο και εφαρ;ογών για φορητές συσκευές (έξυ:να κινητά, tablets). ιαλογική ;εταγλώττιση Α:οσφαλ;άτωση
Εργαλεία προγραμματισμού Η εργασία σύνταξης ενός :ρογρά;;ατος ονο;άζεται :ρογρα;;ατισ;ός ή κωδικο:οίηση, και είναι ;ια εξαιρετικά δη;ιουργική δραστηριότητα. Τα κύρια εργαλεία :ου χρησι;ο:οιεί ένας :ρογρα;;ατιστής για να ανα:τύξει ;ία εφαρ;ογή σε ;ία συγκεκρι;ένη γλώσσα :ρογρα;;ατισ;ού υψηλού ε:ι:έδου είναι: ένας συντάκτης κει9ένων (editor) ;ε τον ο:οίο και γράφει το αρχικό :ρόγρα;;α, :ου ονο;άζεται :ηγαίο :ρόγρα;;α ή κώδικας (source code) ένα 9εταφραστικό 0ρόγρα99α (;εταγλωττιστή ή διερ;ηνευτή), :ου ;εταφράζει το :ηγαίο :ρόγρα;;α σε αντικεί;ενο :ρόγρα;;α ή κώδικα (object code). Το ;εταφραστικό :ρόγρα;;α ελέγχει το :ηγαίο :ρόγρα;;α για συντακτικά λάθη, ε;φανίζει κατάλληλα διαγνωστικά ;ηνύ;ατα, εάν βρεθούν λάθη, και ;όνο αν δεν υ:άρχουν λάθη :αράγεται το αντικεί;ενο :ρόγρα;;α. Το αντικεί;ενο :ρόγρα;;α είναι σε γλώσσα ;ηχανής, αλλά δεν είναι ακό;η εκτελέσι;ο α:ό τον υ:ολογιστή. ένα :ρόγρα;;α :ου ονο;άζεται συνδέτης (linker), :ου συνδέει το αντικεί;ενο :ρόγρα;;α ;ε έτοι;α υ:ο:ρογρά;;ατα της βιβλιοθήκης της γλώσσας :ρογρα;;ατισ;ού. Το τελικό :ρόγρα;;α :ου :αράγεται είναι το εκτελέσι;ο :ρόγρα;;α ή κώδικας (executable code), είναι διατυ:ω;ένο σε γλώσσα ;ηχανής και ;:ορεί να εκτελεστεί ά;εσα α:ό τον ε:εξεργαστή του υ:ολογιστή. εργαλεία εντο0ισ9ού λαθών (debuggers) ;ε τα ο:οία ο :ρογρα;;ατιστής :αρακολουθεί τι ακριβώς συ;βαίνει στο :αρασκήνιο κατά την εκτέλεση ενός :ρογρά;;ατος.
Γλώσσες προγραμματισμού Οι εντολές των :ρογρα;;άτων γράφονται α:ό τους :ρογρα;;ατιστές σε τεχνητές γλώσσες :ου ονο;άζονται γλώσσες :ρογρα;;ατισ;ού. Κάθε υ:ολογιστής ;:ορεί να κατανοήσει και να εκτελέσει εντολές :ου είναι διατυ:ω;ένες ;ε έναν καθορισ;ένο τρό:ο, ο ο:οίος έχει σχέση ;ε τον ε:εξεργαστή του. Οι γλώσσες :ρογρα;;ατισ;ού, στις ο:οίες γράφονται οι εντολές αυτές, ονο;άζονται γλώσσες ;ηχανής, και α:οτελούνται α:ό ;ια ακολουθία δυαδικών ψηφίων (0 και 1). Α:όσ:ασ;α :ρογρά;;ατος σε γλώσσα ;ηχανής Τα :ρογρά;;ατα :ου είναι γρα;;ένα σε γλώσσα ;ηχανής :ροορίζονται ;όνο για τον υ:ολογιστή για τον ο:οίο δη;ιουργήθηκαν, ;ιας και κάθε τύ:ος υ:ολογιστή (;ε διαφορετικό ε:εξεργαστή) έχει τη δική του γλώσσα ;ηχανής.
Γλώσσες προγραμματισμού Για τη διευκόλυνση της εργασίας του :ρογρα;;ατισ;ού δη;ιουργήθηκαν οι συ;βολικές γλώσσες ή γλώσσες χα;ηλού ε:ι:έδου, ό:ου οι εντολές είναι συντο;ογραφίες λέξεων της Αγγλικής γλώσσας. Α:όσ:ασ;α :ρογρά;;ατος σε συ;βολική γλώσσα Οι συ;βολικές γλώσσες είναι και αυτές στενά συνδεδε;ένες ;ε την αρχιτεκτονική των υ:ολογιστών, και έτσι ένα :ρόγρα;;α γρα;;ένο για έναν τύ:ο υ:ολογιστή δεν ;:ορεί να ;εταφερθεί και να εκτελεστεί σε άλλο τύ:ο υ:ολογιστή. Ένα :ρόγρα;;α γρα;;ένο σε συ;βολική γλώσσα, για να εκτελεστεί α:ό έναν υ:ολογιστή, :ρέ:ει να ;εταφραστεί στη γλώσσα ;ηχανής του ;ε ένα ειδικό :ρόγρα;;α :ου ονο;άζεται συ;βολο;εταφραστής.
Γλώσσες προγραμματισμού Η ανάγκη για ακό;α ευκολότερη συγγραφή, διόρθωση και συντήρηση :ρογρα;;άτων, ανεξάρτητων α:ό τον τύ:ο του υ:ολογιστή στον ο:οίο θα εκτελεστούν, οδήγησε στη δη;ιουργία των γλωσσών υψηλού ε:ι:έδου. Το :ρόγρα;;α :ου ε;φανίζει το ;ήνυ;α «Hello World!» σε διάφορες γλώσσες :ρογρα;;ατισ;ού. Οι γλώσσες υψηλού ε:ι:έδου ;οιάζουν ;ε τη φυσική ;ας γλώσσα και έχουν το δικό τους αλφάβητο, λεξιλόγιο και συντακτικό. Μερικές α:ό τις :ιο δη;οφιλείς γλώσσες για ανά:τυξη γενικών ή εξειδικευ;ένων εφαρ;ογών είναι η C, η C++, η Java, η PHP, η C#, η Python, η JavaScript, η Perl, η Visual Basic, η Ruby, η Lisp, η Pascal, η Prolog και η MATLAB. Ανάλογα ;ε το είδος της εφαρ;ογής :ου θέλου;ε να ανα:τύξου;ε (γενικής χρήσης, ε;:ορική, ε:ιστη;ονική, τεχνητής νοη;οσύνης, :αιχνίδι κ.λ:.) ε:ιλέγου;ε την κατάλληλη γλώσσα :ρογρα;;ατισ;ού.