Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Μηχανική (Τεχνολογία) Λογισμικού

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Μηχανική (Τεχνολογία) Λογισμικού"— Μεταγράφημα παρουσίασης:

1 Μηχανική (Τεχνολογία) Λογισμικού
Software Engineering Εισαγωγή

2 Το λογισμικό 1950, πρωτοπαρουσιάστηκε η έννοια του λογισμικού
Έδωσε δυνατότητες σε υπάρχουσες τεχνολογίες Δημιούργησε νέες επιστήμες (πχ. Γενετική βιολογία) Βελτίωσε την ποιότητα ζωής (υπηρεσίες τηλεκπαίδευσης, υγείας, πολιτιμού, ενημέρωσης, ...) Που βρίσκεται; Άϋλο Δεν υπόκειται στις 5 αισθήσεις μας Δεν φθείρεται από τον χρόνο Ορισμός: ένα σύνολο προγραμμάτων και τεκμηρίωσης Μηχανική λογισμικού Ι

3 Τα προγράμμα περιλαμβάνουν δομές δεδομένων και εντολές
Η τεκμηρίωση περιγράφει τον τρόπο λειτουργίας και χρήσης Μηχανική λογισμικού Ι

4 Τι είναι η Μηχανική (Τεχνολογία) λογισμικού;
Δεν έχει ακόμα τα χαρακτηριστικά της επιστήμης Να αποδεικνύει την ύπαρξη βέλτιστης, ορθής, πλήρους και αξιόπιστης λύσης Είναι ένας σημαντικός τομέας της Επιστήμης Υπολογιστών Είναι ο κλάδος της πληροφορικής που ασχολείται με την μελέτη και την εφαρμογή συστηματικών, μεθοδικών και ποσοτικοποιημένων προσεγγίσεων για την ανάπτυξη, λειτουργία και συντήρηση του λογισμικού (ΙΕΕΕ 90) Μηχανική λογισμικού Ι

5 Ο ρόλος και η σημασία του λογισμικού
Σχεδόν σε κάθε μηχανή, όπως .... υπάρχει λογισμικό Το λογισμικό διεκπεραιώνει δύο κατηγορίες λειτουργιών, ως: μετασχηματιστής πληροφορίας Συλλέγει, επεξεργάζεται, διαχειρίζεται, μεταδίδει, παρουσιάζει μορφοποιεί και τροποποιεί την πληροφορία (επεξεργαστής κειμένου, λογισμικό ΑΤΜ) Ελεγκτής-συντονιστής Διαχειρίζεται τους πόρους της μηχανής (λειτουργικό, δικτυακό πρόγραμμα) Μηχανική λογισμικού Ι

6 Κατηγορίες λογισμικού
Συστήματος (drivers, προσφέρει υπηρεσίες σε άλλο λογισμικό αξιοποιώντας τους πόρους του υπολογιστή) Εφαρμογής (επίλυση ειδικών προβλήμάτων χρήστη) Επιστημονικό (αεροδιαστημική, αρχιτεκτόνων) Ενσωματωμένο (σε μηχανές ειδικού σκοπού, όπως: φούρνος μικροκυμάτων, φρένων αυτ/του) Γραμμής παραγωγής (ευρείας χρήσης: word, οικον. στοιχείων) Διαδικτυακών εφαρμογών (Ηλ-εμπόριο) Τεχνητής νοημοσύνης (ρομπότ, νευρωνικά δίκτυα) Ανοιχτού κώδικα Μηχανική λογισμικού Ι

7 Ολα τα παραπάνω αναδεικνύουν μια μεγάλη παγκόσμια βιομηχανία, την βιομηχανία λογισμικού
Η προσπάθεια για εξεύρεση μεθόδων και τεχνικών για την παραγωγή αξιόπιστου και ποιοτικού λογισμικού είναι διαρκής. Μηχανική λογισμικού Ι

8 Παράγοντες που ενισχύουν την σημασία του
Οι αλλαγές στον λόγο κόστους υλικού/λογισμικού Η αυξανόμενη σημασία της συντήρησης Οι εξελίξεις στις τεχνικές λογισμικού (πολυμεσικό, διαδικτυακό, πολλών χρηστών) Οι αυξανόμενες απαιτήσεις για λογισμικό (διοίκηση, εκπαίδευση, οικονομία, υγεία, ενημέρωση, πολιτισμό) Η απαίτηση για μεγαλύτερα και πολυπλοκότερα συστήματα Μηχανική λογισμικού Ι

9 Οικονομική σημασία του Λογισμικού
Ταχέως αναπτυσσόμενος τομέας, από το 1970+ Ετήσια ανάπτυξη παγκοσμίως 6%, ενώ 20% σε Ρωσία, Κίνα, Ινδία Μηχανική λογισμικού Ι

10 Μηχανική λογισμικού Ι

11 Μηχανική λογισμικού Ι

12 Μηχανική λογισμικού Ι

13 Το λογισμικό ως βιομηχανικό προϊόν
Όπως κάθε βιομηχανικός κλάδος η βιομηχανία λογισμικού θα πρέπει να υιοθετήσει τις διαδικασίες και τεχνικές παραγωγής που θα εξασφαλίζουν μεγαλύτερη απόδοση και καλύτερα προϊόντα (Σκοπός της Τεχν. Λογ.) Ο σκοπός αυτός θέτει τους εξής στόχους: Μακρόβια προϊόντα (απόσβεση επένδυσης) Αξιόπιστα προϊόντα ( σε όλες τις συνθήκες) Προϊόντα με αποδοτικότητα (οικονομία πόρων) Προϊόντα με λειτουργικότητα (εξυπηρέτηση χρηστών) Προϊόντα με ποιότητα (???) Μηχανική λογισμικού Ι

14 Η τεχνολογία λογισμικού
Στα τέλη της 10ετίας 1960 εισήχθη ο όρος αυτός ως απάντηση στην «κρίση λογισμικού» Προέκυψε από διαπιστώσεις, όπως Αποκλίσεις από την επιθυμητή λειτουργικότητα Αποκλίσεις από το χρονοδιάγραμμα ανάπτυξης Αποκλίσεις από τον οικονομικό προγραμματισμό ανάπτυξης Αποκλίσεις από το προβλεπόμενο κόστος του περιβάλλοντος λειτουργίας Αδυναμία εξέλιξης του λογισμικού ώστε να προσαρμοστεί στις νέες ανάγκες των πελατών Μηχανική λογισμικού Ι

15 Επιχειρήθηκε η εφαρμογή αρχών υπαρχόντων κλάδων μηχανικής στην διαδικασία ανάπτυξης λογισμικού Η ανάπτυξη τεχνικών διαχείρισης της πολυπλοκότητας Η διαχείριση της συνεργασίας ομάδων προγραμ/των Μέτρηση της ποιότητας του λογισμικού Μηχανική λογισμικού Ι

16 Αληθινές ιστορίες Υψηλός στόχος: λογισμικό απαλλαγμενο από σφάλματα
Τα σφάλματα μπορεί να είναι: Απλά ενοχλητικά Κόστους σε χρήμα και χρόνου Ζωτικής σημασίας Ιστορίες 1992, υπηρεσία ασθενοφόρων Λονδίνου 1993, σύστημα διαχείρισης αποσκευών αερο/μίου Ντένβερ Αρχικό κόστος 175,6 εκατ. Δολαρίων Ρήτρες καθυστέρησης 1 εκατ. Δολάρια ημερησίως Αντικαταστάθηκε από εφεδρικό σύστημα Μηχανική λογισμικού Ι

17 Ερευνητική εργασία 1993-2000 έδειξε
1996, πύραυλος Ariane-5, εξερράγη, από απλή μετατροπή ενός δεκαδικού αριθμού 64 bits σε ακέραιο 16 bits Απώλεια 350 εκατ. Δολάρια 2004, FBI, σύστημα διαχείρισης υποθέσεων Περιείχε 700 χιλ. γραμμές άχρηστου κώδικα 2004, κατάρρευση συστήματος επικοινωνίας αεροδ/μίου Λος Αντζελες Ερευνητική εργασία έδειξε 23% των έργων απέτυχαν και ματαιώθηκαν 28% των έργων ολοκληρώθηκαν κανονικά 49% των έργων ολοκληρώθηκαν με αποκλίσεις Μηχανική λογισμικού Ι

18 Παράγοντες επιτυχίας Επιχειρησιακή στήριξη Εμπλοκή χρηστών
Ικανός διοικητής έργου Σαφείς υπηρεσιακοί στόχοι Εστιασμένο πεδίο εφαρμογής του προϊόντος (να στοχεύει στην υποστήριξη των λειτουργιών που αφορούν τους επιχ. Στόχους) Πρότυπες υποδομές ανάπτυξης Σημαντική προσπάθεια αναλώνεται στον «κώδικα υποδομής» Χρήση έτοιμων, διαδεδομένων, ώριμων και δοκιμασμένων υποδομών, τεχνολογιών και εργαλείων Μηχανική λογισμικού Ι

19 Ποιοτικό λογισμικό Τι διακρίνει το «καλό» λογισμικό από το «κακό»;
Το υψηλής ποιότητας λογισμικό έχει χαρακτηριστικά που ανταποκρίνονται στις ανάγκες των χρηστών, των ανθρώπων ανάπτυξης και των συντηρητών Ορισμένα από τα σημαντικότερα χαρακτηριστικά: Διαθεσιμότητα (αντανακλά την ταχύτητα διαχείρισης κάποιας αστοχίας του συστήματος) Απόδοση (ταχύτητα απόκρισης) Ευελιξία, επεκτασιμότητα (ευκολία προσαύξησης της λειτουργικότητας) Ακεραιότητα (ασφάλεια, αντίσταση σε πιθανές απειλές) Διαλειτουργικότητα (ευκολία ανταλλαγής δεδομένων, υπηρεσιών με άλλα συστήματα) Μηχανική λογισμικού Ι

20 Συντηρησιμότητα (ευκολία τροποποίησης και διόρθωσης σφαλμάτων)
Μεταφερσιμότητα (δυνατότητα λειτουργίας λογισμικού σε διαφορετικά υπολογιστικά περιβάλλοντα, όπως διαφορετικές διατάξεις υλικού, λειτουργικών συστημάτων, διεθνοποίησης) Αξιοπιστία (λειτουργία χωρίς αποτυχία και να εκτελεί τις λειτουργίες με την απαιτούμενη ακρίβεια) Επαναχρησιμότητα (ευκολία χρησιμοποίησης μονάδων λογισμικού σε άλλα προϊόντα) Ευρωστία (ανοχή του λογισμικού σε σφάλματα υπό ιδιάζουσες συνθήκες) Ελεγξιμότητα (βαθμός ευκολίας ελέγχου και εντοπισμού πηγής σφάλματος ) Ευχρηστία (ευκολία χρήσης, εκμάθησης λειτουργιών, προσαρμοστικότητα στις ανάγκες συγκεκριμένων χρηστών) Μηχανική λογισμικού Ι

21 Εν κατακλείδι, για να θεωρήσουμε ένα λογισμικό υψηλής ποιότητας, εάν:
Κάνει ότι θέλουν οι χρήστες να κάνει Χρησιμοποιεί τους πόρους του υπολογιστή σωστά και αποδοτικά Είναι εύκολο για τον χρήστη να το μάθει και να το χρησιμοποιήσει Οι ειδικοί μπορούν να σχεδιάζουν, να κωδικοποιήσουν, να ελέγξουν και να συντηρήσουν το σύστημα σχετικά εύκολα Μηχανική λογισμικού Ι

22 Εργασίες και αρμοδιότητες
Μια συνιστώσα κλειδί στην ανάπτυξη λογισμικού είναι η επικοινωνία μεταξύ πελάτη και ομάδας ανάπτυξης Συμμετέχοντες σε έργο ανήκουν στις κατηγορίες: Πελάτης Χρήστης Οι επωφελούμενοι από την λειτουργία του λογισμικού (πχ. Εθνικό σύστημα υγείας) Ομάδα ανάπτυξης Ομάδα διοίκησης έργου Ομάδα διασφάλισης ποιότητας Μηχανική λογισμικού Ι

23 Μηχανική λογισμικού Ι

24 Δραστηριότητες ανάπτυξης
Το τελικό προϊόν δεν προκύπτει γράφοντας κώδικα, αλλά μέσω της εκτέλεσης διαφορετικών δραστηριοτήτων, οι οποίες παράγουν κάποιου είδους ενδιάμεσα προϊόντα (artifacts), τα οποία παρέχουν την τεκμηρίωση κάθε δραστηριότητας Προσδιορισμός των απαιτήσεων (έγγραφο) Σχεδίαση (2 επίπεδα) Αρχιτεκτονική σχεδίαση (σκελετός λογισμικού) Λεπτομερής σχεδίαση (χαμηλότερου επιπέδου δομικών μονάδων) Κατασκευή λογισμικού (προγραμματισμός) Ελεγχος (ορθότητα, αποδοτικότητα, κά. Χαρακτηριστικά) Συντήρηση (55%-80% του συνολικού κόστους, βλ. πίνακα) Διοίκηση έργου (Χρονοπρογραμ/μός, προϋπολογισμός, στελέχωση ομάδας ανάπτυξης, οργάνωση ομάδας ανάπτυξης, παρακολούθηση πορείας, διαχείριση κινδύνων) Μηχανική λογισμικού Ι

25 Μηχανική λογισμικού Ι

26 Σημαντικός παράγοντας για την επιτυχημένη διοίκηση του έργου είναι ο διοικητής (προσόντα):
Επιχειρηματική αντίληψη Τεχνικές γνώσεις Γνώση διοίκηση έργων Ικανότητες λήψης αποφάσεων Ικανότητες παρακολούθησης διαδικασιών Ικανότητα ανάλυσης λεπτομερειών Ικανότητες οργάνωσης Ικανότητες επικοινωνίας Ηγετικές ικανότητες Διασφάλιση ποιότητας Μηχανική λογισμικού Ι

27 Μοντέλα διαδικασίας Λογισμικού
Όπως κάθε βιομηχανικό προϊόν και το λογισμικό έχει τον κύκλο ζωής του (χρόνος σύλληψης της ιδέας – απόσυρση). Για να μπορέσουμε να επέμβουμε με σωστό τρόπο στις διαδικασίες και τεχνικές ανάπτυξης, θα πρέπει να έχουμε γνώση του τρόπου ανάπτυξης, λειτουργίας και απόσυρσης, καθώς και των χρονικών φάσεων της ζωής του Μοντέλο διεργασίας λογισμικού Μια απλουστευμένη περιγραφή της διαδικασίας ανάπτυξης Περιγράφει τον τρόπο οργάνωσης των δραστηριοτήτων Είναι απλοποίηση, άρα αφηρημένη αναπαράσταση μιας προσέγγισης ανάπτυξης Μηχανική λογισμικού Ι

28 Μια διεργασία λογισμικού υιοθετεί ένα μοντέλο διεργασίας και το εξειδικεύει παρέχοντας οδηγίες σε:
βήματα, πρακτικές, τεκμηρίωση και εργαλεία Το κάθε μοντέλο θεωρεί μια διαφορετική ροή εργασιών και εφαρμόζει τις δραστηριότητες με διαφορετικό τρόπο Μηχανική λογισμικού Ι

29 Κριτήρια αξιολόγησης μοντέλων
Τα μοντέλα περιγράφουν, υιοθετούν έναν τρόπο σκέψης κάνοντας κάποιες παραδοχές. Δεν υπάρχει βέλτιστο μοντέλο που να εξασφαλίζει την επιτυχία του έργου. Κάθε μοντέλο έχει την αξία του Η επιλογή μοντέλου αποτελεί τμήμα της αρχιτ/κής προσέγγισης Τα μοντέλα αξιολογούνται και υπόκεινται σε κριτική Κριτήρια αξιολόγησης Η απλότητα και η σταθερότητα των απαιτήσεων Η διαχείριση των κινδύνων του έργου (χαμηλή ποιότητα, υπερβάσεις χρονοπρ/μού και κόστους, μεταβαλλόμενες απαιτήσεις, χρήση πρόσφατης μη δοκιμασμένης τεχνολογίας, ικανότητα, εμπειρία) επηρεάζει την επιλογή μοντέλου Η συμμετοχή των χρηστών Η κατανόηση της αρχιτεκτονικής Η αξιολόγηση της πορείας του έργου Μηχανική λογισμικού Ι

30 Το Επαναληπτικό μοντέλο
Το σπυροειδές μοντέλο Μηχανική λογισμικού Ι

31 Απορρίπτει την ακολουθιακή οργάνωση των δραστηριοτήτων
Αντί σειριακών φάσεων – επαναλήψεις (εκτελούνται όλες οι δραστηριότητες) Μηχανική λογισμικού Ι

32 Κάθε επανάληψη είναι μία μικρογραφία ενός έργου που οδηγεί στην παραγωγή ημιτελών ηλεγμένων προγραμ/των Είναι εξ’ ορισμού επαυξητικό Στις πρώτες επαναλήψεις δίνεται βαρύτητα στις απαιτήσεις – αρχιτεκτονική, στις επόμενες στην σχεδίαση - κωδικοποίηση – έλεγχο Μηχανική λογισμικού Ι

33 Εξελικτική πρωτοτυποποίηση Εξελικτική παράδοση
Χρονική πλαισίωση (timeboxing) σταθερή καταληκτική ημερομηνία Οι βασικοί λόγοι είναι: να παραμείνουμε εστιασμένοι σε σταθερά και ελεγμένα προγράμματα Θέτονται βραχυχρόνιοι στόχοι (διάρκεια εβδ.) Στο τέλος επανάληψης γίνεται ανασκόπηση (διαπιστώνονται προβλήματα, καθυστερήσεις, λαμβάνονται διορθωτικά μέτρα) Μηχανική λογισμικού Ι

34 Συμπεράσματα από την αξιολόγηση του Επαν. Μοντέλου με τα κριτήρια:
Κατάλληλο για προβλήματα όπου δεν είναι γνωστές οι απαιτήσεις και ενδέχεται να αλλάξουν Βασικό πλεονέκτημα: παρέχει καλή αντιμετώπιση των κινδύνων Ενθαρρύνει την ενεργή συμμετοχή των χρηστών (εντάσσονται στις ομάδες ανάπτυξης) Αξιολογούν τις ενδιάμεσες εκδόσεις Διατυπώνουν παρατηρήσεις, αντιρρήσεις και επιφυλάξεις σε ενδιάμεσες εκδόσεις Παρέχει καλή πληροφορία για την πρόοδο του έργου Στην διοίκηση Στον τελικό πελάτη Μηχανική λογισμικού Ι


Κατέβασμα ppt "Μηχανική (Τεχνολογία) Λογισμικού"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google