Κεφάλαιο 6 ο Διαχείριση στοιχείων λογισμικού
Διδακτικοί στόχοι Να περιγραφούν οι κύριοι τύποι λογισμικού Να εξεταστεί το λογισμικό συστήματος και τα λειτουργικά συστήματα Να αναλυθούν οι πιο σημαντικές γλώσσες προγραμματισμού εφαρμογών και τα εργαλεία λογισμικού Να περιγραφούν οι νέες αντιλήψεις στην ανάπτυξη του λογισμικού Να εντοπιστούν τα σημαντικά ζητήματα στη διαχείριση των στοιχείων λογισμικού του οργανισμού
Επιχειρηματικές προκλήσεις Τι είναι λογισμικό; Λογισμικό συστήματος Λογισμικό εφαρμογών Σύγχρονα εργαλεία για ανάπτυξη λογισμικού Διαχείριση στοιχείων λογισμικού
Επιχειρηματικές προκλήσεις 1. Αύξηση πολυπλοκότητας και σφάλματα λογισμικού 2. Η υστέρηση των εφαρμογών
Λογισμικό Οι λεπτομερείς εντολές που ελέγχουν τη λειτουργία ενός συστήματος υπολογιστή Πρόγραμμα (program): Μια σειρά προτάσεων ή εντολών προς τον υπολογιστή Έννοια αποθηκευμένου προγράμματος (stored program concept): Σημαίνει ότι ένα πρόγραμμα δεν μπορεί να εκτελεστεί εκτός αν είναι αποθηκευμένο στην πρωτεύουσα μνήμη του υπολογιστή μαζί με τα απαιτούμενα δεδομένα Λογισμικό συστήματος (system software): Προγράμματα που διαχειρίζονται τους πόρους του υπολογιστή Λογισμικό εφαρμογών (application software): Προγράμματα που γράφονται για μια συγκεκριμένη εφαρμογή
Λογισμικό Λογισμικό εφαρμογών Λογισμικό συστήματος Υλικό Λειτουργικό σύστημα: Προγραμματίζει γεγονότα στον υπολογιστή Κατανέμει τους πόρους του υπολογιστή Παρακολουθεί τις δραστηριότητες Μεταφραστές γλωσσών Ερμηνευτές Μεταγλωττιστές Βοηθητικά προγράμματα Λειτουργίες ρουτίνας Διαχείριση δεδομένων Γλώσσες προγραμματισμού Γλώσσα assembly, Fortran, Cobol,, Basic, Pascal, C, C++, Γλώσσες τέταρτης γενιάς και εργαλεία λογισμικού PC
Πολλαπλός προγραμματισμός (multiprogramming) Παραδοσιακό σύστημα χωρίς πολλαπλό προγραμματισμό Περιβάλλον πολλαπλού προγραμματισμού Πρόγραμμα 1 Λειτουργικό Πρόγραμμα 1 Λειτουργικό Πρόγραμμα 2 σύστημα σύστημα Πρόγραμμα 3 Αχρησιμοποίητη μνήμη Αχρησιμοποίητη μνήμη
Πολυδιεργασία (multitasking) Η δυνατότητα πολλαπλού προγραμματισμού σε λειτουργικά συστήματα κυρίως ενός χρήστη, όπως αυτά των πιο παλιών PC
Πολυνημάτωση (Multithreading) Δυνατότητα διαχείρισης πολλών ανεξάρτητων εργασιών ταυτόχρονα
Εικονική μνήμη Μέθοδος πιο αποδοτικού χειρισμού διαφόρων προγραμμάτων στη πρωτεύουσα μνήμη: Ένα πρόγραμμα χωρίζεται σε: Μέρη σταθερού μήκους που ονομάζονται σελίδες (pages) Μέρη μεταβλητού μήκους τα λεγόμενα τμήματα (segments) Αποθήκευση κάθε φορά στην πρωτεύουσα μνήμη μόνον ενός μικρού τμήματος κάθε προγράμματος
Μερισμός χρόνου (time sharing) Δυνατότητα ενός λειτουργικού συστήματος που επιτρέπει σε πολλούς χρήστες να χρησιμοποιούν από κοινού τους πόρους επεξεργασίας ενός υπολογιστή Η CPU αφιερώνει μια συγκεκριμένη χρονική διάρκεια στο πρόγραμμα κάθε χρήστη πριν προχωρήσει στον επόμενο
Πολυεπεξεργασία (multiprocessing) Δύο ή περισσότερες κεντρικές μονάδες επεξεργασίας (CPU) ώστε να δουλεύουν παράλληλα Δυνατότητα ενός λειτουργικού συστήματος για την ταυτόχρονη εκτέλεση δύο ή περισσότερων εντολών στο ίδιο σύστημα υπολογιστή με τη χρήση πολλών κεντρικών μονάδων επεξεργασίας Το πρόγραμμα μπορεί να διαιρεθεί για να επεξεργαστεί από πολλαπλούς CPU s Μπορεί να επεξεργαστεί πιο απαιτητικά προγράμματα ταχύτερα
Λογισμικό μετάφρασης γλωσσών και βοηθητικά προγράμματα Πηγαίος κώδικας (source code): Εντολές προγράμματος γραμμένες σε γλώσσα υψηλού επιπέδου Μεταγλωττιστής (compiler): Ειδικό λογισμικό συστήματος που μεταφράζει μια γλώσσα υψηλού επιπέδου σε γλώσσα μηχανής Αντικειμενικός κώδικας (object code): Εντολές προγράμματος που έχουν μεταφραστεί σε γλώσσα μηχανής ώστε να μπορούν να εκτελεστούν από τον υπολογιστή
Διαδικασία μετάφρασης γλώσσας Πηγαίος κώδικας προγράμματος Μεταγλωττιστής Άλλες λειτουργικές μονάδες αντικειμενικού κώδικα Αντικειμενικός κώδικας Συνδετικός διαρθρωτής Μονάδα φόρτωσης
Διασύνδεση χρήστη με γραφικά Το μέρος ενός λειτουργικού συστήματος με το οποίο αλληλεπιδρούν οι χρήστες Χρησιμοποιεί εικονίδια γραφικών και ποντίκι για την εισαγωγή διαταγών και διενέργεια επιλογών
Κυριότερα λειτουργικά συστήματα PC Λειτουργικό σύστημα Δυνατότητες Windows 95 & 98 Windows NT Me 2000 & XP Windows CE OS/2 Λειτουργικό σύστημα 32-bit με εκσυγχρονισμένη διασύνδεση χρήστη με γραφικά. Έχει δυνατότητες πολυδιεργασίας και δικτύωσης και μπορεί να ολοκληρωθεί με τους πόρους πληροφοριών του Ιστού Λειτουργικό σύστημα 32-bit για PC, σταθμούς εργασίας, και διακομιστές δικτύου. Υποστηρίζει πολυδιεργασία, πολυεπεξεργασία, εντατική δικτύωση και υπηρεσίες Internet Απλοποιημένη έκδοση του λειτουργικού συστήματος Windows για υπολογιστές χεριού και ασύρματες συσκευές επικοινωνίας Λειτουργικό σύστημα για IBM PC. Μπορεί να αξιοποιήσει τον μικροεπεξεργαστή 32-bit. Υποστηρίζει πολυδιεργασία και δίκτυα
Κυριότερα λειτουργικά συστήματα PC Λειτουργικό σύστημα Δυνατότητες Unix Linux Mac OS DOS Χρησιμοποιείται σε ισχυρά PC, σταθμούς εργασίας και μεσαίους υπολογιστές. Υποστηρίζει πολυδιεργασία, επεξεργασία με πολλούς χρήστες, και δικτύωση. Μπορεί να μεταφέρεται σε διαφορετικά μοντέλα υλικού υπολογιστών Δωρεάν αξιόπιστο σύστημα, εναλλακτικό των Unix και Windows 2000, το οποίο λειτουργεί σε πολλούς διαφορετικούς τύπους υπολογιστών και περιέχει πηγαίο κώδικα που μπορεί να τροποποιηθεί από προγραμματιστές Λειτουργικό σύστημα για υπολογιστές Macintosh. Υποστηρίζει δίκτυα και πολυδιεργασία και έχει σοβαρές δυνατότητες πολυμέσων. Υποστηρίζει σύνδεση και δημοσίευση στο Internet Λειτουργικό σύστημα για παλαιότερα PC της IBM (PC-DOS) και PC συμβατά με IBM (MS-DOS). Περιορίζει τη χρήση της μνήμης από προγράμματα στα 640 kilobytes
Γενιές γλωσσών προγραμματισμού Πρώτη γενιά: Δεκαετία 1940. Γλώσσα μηχανής: Δυαδικός κώδικας Δεύτερη γενιά: Αρχές δεκαετίας 1950. Γλώσσα assembly: Οι αριθμητικοί κωδικοί έχουν αντικατασταθεί με μνημονικούς όρους Τρίτη γενιά: Μέσα δεκαετίας 1950. Γλώσσες υψηλού επιπέδου Τέταρτη γενιά: Τέλη δεκαετίας 1970. Σύγχρονα πακέτα εφαρμογών
Γλώσσες υψηλού επιπέδου FORTRAN (FORmula TRANslator): Επιστημονικές και μαθηματικές εφαρμογές COBOL (COmmon Business Oriented Language): Δεσπόζει στις επιχειρηματικές εφαρμογές BASIC (Beginners All-purpose Symbolic Instruction Code): Γλώσσα προγραμματισμού γενικής χρήσης για PC και διδασκαλία προγραμματισμού
Γλώσσες υψηλού επιπέδου PASCAL: Χρήση σε PC και διδασκαλία καλών πρακτικών προγραμματισμού. Αδυναμία στο χειρισμό αρχείων και εισόδου/εξόδου C: Ισχυρή γλώσσα προγραμματισμού με αυστηρό έλεγχο και αποδοτική εκτέλεση. Μεταφέρεται εύκολα σε διαφορετικούς μικροεπεξεργαστές και χρησιμοποιείται κυρίως σε PC C++: Αντικειμενοστραφής έκδοση της γλώσσας προγραμματισμού C
Γλώσσες τέταρτης γενιάς Μπορεί να υιοθετηθούν άμεσα από τελικούς χρήστες ή λιγότερο έμπειρους προγραμματιστές Μη διαδικασιακές ή λιγότερο διαδικασιακές Μπορούν να αναπτύξουν εφαρμογές γρήγορα Φυσικές γλώσσες Έξι κατηγορίες
Γλώσσες τέταρτης γενιάς 1. Γλώσσες ερωτημάτων Γρήγορη ανάκτηση δεδομένων Αλληλεπιδραστικές, με μεγάλη απόκριση Συνήθως έχουν σχέση με συστήματα διαχείρισης βάσεων δεδομένων Μοιάζουν περισσότερο από άλλες με τη φυσική γλώσσα
Γλώσσες τέταρτης γενιάς 2. Γεννήτρια αναφορών Δημιουργεί προσαρμοσμένες αναφορές Μεγάλη ποικιλία μορφών 3. Γλώσσα γραφικών Παρουσιάζει δεδομένα από αρχεία ή βάσεις δεδομένων σε διαγραμματική μορφή
Γλώσσες τέταρτης γενιάς 4. Γεννήτρια εφαρμογών Ο χρήστης ορίζει αυτό που χρειάζεται να γίνει Η γεννήτρια εφαρμογών δημιουργεί τον κατάλληλο κώδικα για την είσοδο, την επικύρωση, την ενημέρωση, την επεξεργασία και τη δημιουργία αναφορών Μειώνει αισθητά το χρόνο ανάπτυξης εφαρμογών
Γλώσσες τέταρτης γενιάς 5. Γλώσσα προγραμματισμού πολύ υψηλού επιπέδου Εργαλείο αύξησης παραγωγικότητας από επαγγελματίες προγραμματιστές Λιγότερες εντολές από συμβατικές γλώσσες Μειωμένος χρόνος ανάπτυξης προγραμμάτων και εφαρμογών
Γλώσσες τέταρτης γενιάς 6. Πακέτο λογισμικού Διαθέσιμο στο εμπόριο σύνολο προγραμμάτων Απαλλάσσει άτομα και οργανισμούς από την ανάγκη να γράφουν δικά τους προγράμματα λογισμικού για ορισμένες λειτουργίες
Εργαλεία λογισμικού για PC Επεξεργασία κειμένου Λογιστικά φύλλα Διαχείριση δεδομένων Παρουσιάσεις με γραφικά Ολοκληρωμένα πακέτα λογισμικού Ηλεκτρονικό ταχυδρομείο Φυλλομετρητές Ιστού Λογισμικό συλλογικής χρήσης
Λειτουργίες λογισμικού συλλογικής χρήσης Συλλογική συγγραφή και σχολιασμός Ηλεκτρονική διανομή αλληλογραφίας Προγραμματισμός συσκέψεων και συναντήσεων Αρχεία και βάσεις δεδομένων κοινής χρήσης Συντονισμός χρόνου και προγραμματισμός Ηλεκτρονικές συναντήσεις και συσκέψεις
Ενδιάμεσο λογισμικό (middleware) Λογισμικό που επιτρέπει διαφορετικές εφαρμογές να ανταλλάξουν δεδομένα Εφαρμογή Α Εφαρμογή Β Δεδομένα Ενδιάμεσο λογισμικό
Αντικειμενοστρεφής προγραμματισμός Συνδυάζει δεδομένα και διαδικασίες σε ένα αντικείμενο Τα προγράμματα στέλνουν ένα μήνυμα σε ένα αντικείμενο για να εκτελέσει μια διαδικασία που είναι ήδη ενσωματωμένη σε αυτό Τα δεδομένα ενός αντικειμένου είναι κρυμμένα από τα άλλα μέρη του προγράμματος Μειώνει το κόστος και το χρόνο για ανάπτυξη λογισμικού
Αντικειμενοστρεφής προγραμματισμός Οπτικός προγραμματισμός: Επιλογή και διάταξη αντικειμένων προγραμματισμού και όχι γράψιμο κώδικα προγράμματος Κλάση: Όλα τα αντικείμενα που ανήκουν σε μιαορισμένηκλάσηέχουνταγνωρίσματα αυτής της κλάσης Κληρονομικότητα: Μια ορισμένη κλάση αντικειμένων αποκτά τα γνωρίσματα μιας ανώτερης κλάσης
Αντικειμενοστρεφής προγραμματισμός JAVA: Γλώσσα προγραμματισμού της Sun Microsystems Μπορεί να μεταφέρει μόνο την λειτουργικότητα του λογισμικού που χρειάζεται για μια συγκεκριμένη εργασία ως μικροεφαρμογή που κατεβαίνει απότοδίκτυο Λειτουργεί σε οποιαδήποτε υπολογιστή και λειτουργικό σύστημα Τα δεδομένα μπορούν να αποθηκεύονται πίσω στο δίκτυο
Αντικειμενοστρεφής προγραμματισμός HTML: Γλώσσα σημείωσης υπερκειμένου, χρησιμοποιείται για δημιουργία ιστοσελίδων και άλλων εγγράφων υπερμέσων XML: Επεκτάσιμη γλώσσα σήμανσης, βελτίωση της HTML, περιγράφει τα δεδομένα πιο ολοκληρωμένα XHTML: Υβρίδιο που μπορεί να αντικαταστήσει την HTML σαν πρότυπο για τον Παγκόσμιο Ιστό
Αντικειμενοστρεφής προγραμματισμός ActiveX: Σύνολο χειριστηρίων που δίνουν τη δυνατότητα σε προγράμματα ή άλλα αντικείμενα όπως γραφήματα, πίνακες ή κινούμενες εικόνες, να ενσωματώνονται σε μια ιστοσελίδα
Διαχείριση στοιχείων λογισμικού Επιλογή, αγορά και χρήση λογισμικού Φορείς παροχής υπηρεσιών εφαρμογών Συντήρηση λογισμικού
Επιλογή λογισμικού για τον οργανισμό Καταλληλότητα Αποτελεσματικότητα Συμβατότητα Υποστήριξη