http://www.icsd.aegean.gr/kotis/softTech06/ Διδάσκων: Κων/νος Κώτης ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Χειμερινό Εξάμηνο (Ε') - Κωδ. Μαθήματος: 321-4002 http://www.icsd.aegean.gr/kotis/softTech06/ Διδάσκων: Κων/νος Κώτης
Στοιχεία μαθήματος Διαλέξεις Εργαστήριο Σημειώσεις 4 ώρες / εβδομάδα Χ 13 περίπου Εργαστήριο 2 ώρες Σημειώσεις Στην Ιστοσελίδα Βιβλιογραφία + Διαφάνειες Διάφορες πηγές
Προαπαιτήσεις Γνώση Αρχών Προγραμματισμού Γνώση Γλώσσας Προγραμματισμού (C++, Java, Pascal) Χρήση Η/Υ (Σχεδίαση, Επεξ. Κειμένου) Κριτική και Συνθετική Ικανότητα
Σκοπός μαθήματος Γνωριμία με την Τεχνολογία Λογισμικού Παρουσίαση μοντέλων κύκλου ζωής λογισμικών Εξοικείωση με Τεχνικές δομημένης ανάλυσης και σχεδίασης λογισμικού Εξοικείωση με τα Πρότυπα Τεκμηρίωσης Λογισμικού Πρακτική εφαρμογή – Εκτέλεση έργου Λογισμικού σε ομάδες
Ανάλυση Μαθήματος Κύριες Ενότητες Ασκήσεις – Συζητήσεις – Παραδείγματα Εισαγωγή στη Τ.Λ Μοντέλα κύκλου ζωής Ανάλυση & Σχεδίαση (Δομημένη, Αντικειμενοστραφής) Παραγωγή Κώδικα Δυναμικός Έλεγχος Εργαλεία CASE – UML Διοίκηση Σχηματισμών Λογισμικού Διασφάλιση Ποιότητας Λογισμικού Ασκήσεις – Συζητήσεις – Παραδείγματα
Αξιολόγηση Μαθήματος Γραπτή Εξέταση 70% Εργασίες 30%
Ερωτήσεις ;;;;;
Τι είναι Λογισμικό (συστατικά) Εντολές (προγράµµατα Η /Υ ) οι οποίες όταν εκτελούνται επιτυγχάνουν επιθυµητά αποτελέσµατα και επιδόσεις. Δοµές δεδοµένων που επιτρέπουν σε προγράµµατα να διαχειριστούν µε επάρκεια πληροφορίες. Κείµενα, διαγράµµατα κ.τ.λ. που περιγράφουν τη λειτουργία και χρήση των προγραµµάτων
Κατηγορίες Λογισμικού Λογισµικό Συστήµατος UNIX DOS Windows Λογισµικό βιοµηχανικών Συστημάτων Λογισµικό Εφαρµογών επιχειρηµατικές εφαρµογές επιστηµονικές εφαρµογές εκπαιδευτικές εφαρµογές εφαρµογές ψυχαγωγίας
Τι είναι Τεχνολογία Λογισμικού; Κλάδος της Πληροφορικής που ασχολείται με τη μελέτη και ανάπτυξη τεχνικών για την παραγωγή λογισμικού που ικανοποιεί τις προδιαγραφές του, με την καλύτερη δυνατή ποιότητα, παραδίδεται μέσα σε προδιαγεγραμμένα χρονικά όρια και το κόστος ανάπτυξής του βρίσκεται μέσα σε προδιαγεγραμμένα όρια [IEEE]: "the application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software« Περιγραφή του τρόπου υλοποίησης Λογισμικού
Χαρακτηριστικά της ανάπτυξης λογισµικού Το αποτέλεσµα δεν είναι «ορατό» - µόνο το αποτέλεσµα της χρήσης του Η ανάπτυξη λογισµικού αλλάζει συνεχώς στόχο Μεταβάλλονται οι απαιτήσεις των χρηστών, Το περιβάλλον ανάπτυξης, καθώς και το υλικό συνεχώς εξελίσσονται Το περιβάλλον λειτουργίας του λογισµικού µεταβάλλεται ραγδαία
Λογισμικό και Περιβάλλον
Κριτήρια επιτυχούς Λογισμικού Κάνει αυτό που σχεδιάστηκε να κάνει (τίποτε παραπάνω, τίποτε παρακάτω!!!) Σε λογικό χρόνο Με λογικό κόστος Έχει ποιότητα (χρηστικότητα, δυνατότητα επέκτασης/ συντήρησης)
Κρίση Λογισμικού Κατά κανόνα, η ανάπτυξη μεγάλων έργων λογισμικού παρουσιάζει προβλήματα: υπερβάσεις στο χρονοδιάγραμμα υπερβάσεις στον προϋπολογισμό παραγόμενο προϊόν κακής ποιότητας πολυδάπανο στη συντήρησή του Από στοιχεία του 1979, από έργα 6.8 εκατομμυρίων δολαρίων: 47% πληρώθηκε αλλά δεν παραδόθηκε προς χρήση 29% παραδόθηκε αλλά δεν χρησιμοποιήθηκε 19% τροποποιήθηκε μετά την παράδοση 3% χρησιμοποιήθηκε με μικρές αλλαγές 2% χρησιμοποιήθηκε όπως παραδόθηκε
Κρίση Λογισμικού - Λόγοι ανεπαρκής προσδιορισμός απαιτήσεων -> προβληματική σχεδίαση μη ρεαλιστικοί στόχοι του project μη ακριβείς εκτιμήσεις απαιτούμενων πόρων κακή αναφορά προόδου ελλιπής χειρισμός ρίσκου κακή επικοινωνία μεταξύ πελατών, προγρ/στών, χρηστών έλλειψη εμπειρίας με τεχνολογία αδυναμία χειρισμού πολυπλοκότητας
Απάντηση στη Κρίση ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ SOFTWARE ENGINEERING Επιστημονική Θεμελίωση του Λογισμικού (κύκλου ζωής, διαδικασίας παραγωγής, τρόπου περιγραφής – τεκμηρίωσης, διαδικασίας συντήρησης)
Ιδιαιτερότητες έργων λογισμικού Διαφέρουν τα έργα λογισμικού από τα άλλα έργα ? Έστω ότι ένα έργο λογισμικού έχει καθυστερήσει σε σχέση με το χρονοδιάγραμμα του. Αν είσαστε ο project manager με τι τρόπους μπορείτε να το επιταχύνετε ? Αν απαντήσατε με αύξηση των ατόμων ή με χρήση νέων εργαλείων ….. ΚΑΝΑΤΕ ΛΑΘΟΣ ! Έστω ότι είστε ο project manager σε ένα έργο λογισμικού (μη έχοντας σχέση με προγραμματισμό). Πώς θα παρακολουθήσετε την πορεία του ? Προφανώς εξαρτάστε από τις αναφορές των υπολοίπων !! Πουλάτε ένα προϊόν λογισμικού και σας ρωτούν να προσδιορίσετε την ποιότητα του. Τι θα αναφέρατε ? Προφανώς δεν υπάρχουν σαφή χαρακτηριστικά ποιότητας !!!
Χαρακτηριστικά Προϊόντων Λογισμικού Ορθότητα (Correctness) Ένα πρόγραμμα είναι λειτουργικά ορθό όταν συμπεριφέρεται σύμφωνα με τις καταγεγραμμένες λειτουργικές απαιτήσεις. Αξιοπιστία (Reliability) Το λογισμικό θα πρέπει να μην προκαλεί φυσική ή οικονομική καταστροφή στην περίπτωση λάθους. (Η πιθανότητα το λογισμικό να συμπεριφέρεται σωστά σε ένα συγκεκριμένο χρονικό διάστημα) Αποδοτικότητα (Performance) Το πρόγραμμα δεν θα πρέπει να κάνει αλόγιστη χρήση των πόρων του συστήματος Ευχρηστία (Usability) Το πρόγραμμα θα πρέπει να έχει ένα εύχρηστο περιβάλλον επικοινωνίας με το χρήστη και κατάλληλη τεκμηρίωση
Χαρακτηριστικά Προϊόντων Λογισμικού Ευελιξία – Συντηρησιμότητα (Maintainability) Σε περίπτωση αλλαγής των απαιτήσεων ένα πρόγραμμα θα πρέπει να μπορεί να εξελίσσεται για την κάλυψη των. Ελεγξιμότητα (Verifiability) Οι ιδιότητες ενός συστήματος λογισμικού θα πρέπει να μπορούν να ελεγχθούν εύκολα. Π.χ. η λειτουργική ορθότητα, ή η απόδοση πρέπει να μπορούν να ελεγχθούν με χρήση προσομοίωσης, ή μέσω τυπικών μεθόδων Δυνατότητα Επαναχρησιμοποίησης (Reusability) Ένα πρόγραμμα είναι επαναχρησιμοποιήσιμο εάν μπορεί να χρησιμοποιηθεί (ενδεχομένως με μικρές αλλαγές) για την ανάπτυξη άλλου προϊόντος λογισμικού. Φορητότητα (Portability) Το λογισμικό είναι φορητό εάν μπορεί να εκτελεστεί σε διαφορετικά περιβάλλοντα (λειτουργικά συστήματα, εξάρτηση από βάσεις).
Σημασία Χαρακτηριστικών Η σημασία κάθε χαρακτηριστικού εξαρτάται από το λογισμικό και το περιβάλλον στο οποίο πρόκειται να χρησιμοποιηθεί Σε ορισμένες περιπτώσεις κυριαρχούν ορισμένα χαρακτηριστικά Σε συστήματα ασφαλείας για παράδειγμα κύριο χαρακτηριστικό αποτελεί η αξιοπιστία Σε real-time συστήματα απαιτείται υψηλή απόδοση Σε portable συστήματα η χαμηλή κατανάλωση ενέργειας Το κόστος αυξάνει εκθετικά αν απαιτείται κάποιο από τα χαρακτηριστικά σε υψηλά επίπεδα
Τυπική διαδικασία ανάπτυξης λογισμικού Δομημένο σύνολο δραστηριοτήτων για την ανάπτυξη ενός συστήματος λογισμικού Προδιαγραφές Απαιτήσεων - Ανάλυση Σχεδίαση Ανάπτυξη Κώδικα Επαλήθευση Συντήρηση Για τη διαχείρισή του απαιτείται ακριβής μοντελοποίηση
Απαραίτητα για την ανάπτυξη λογισµικού
ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης Το λογισμικό ως προϊόν Πακέτο Αυτόνομα συστήματα που παράγονται από ένα οίκο λογισμικού και πωλούνται στην αγορά σε κάθε ενδιαφερόμενο Customized λογισμικό Συστήματα που αφορούν συγκεκριμένο πελάτη και έχουν αναπτυχθεί στα πλαίσια συγκεκριμένων συμβολαίων για λογαριασμό του 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Τεχνολογία Λογισμικού Κλάδος της πληροφορικής που ασχολείται με τη μελέτη και την εφαρμογή συστηματικών, μεθοδικών και ποσοτικοποιημένων προσεγγίσεων για την ανάπτυξη, λειτουργία και συντήρηση του λογισμικού [IEEE Standard 610.12] Στοχεύει στην ανάπτυξη αξιόπιστου λογισμικού με μεγάλο κύκλο ζωής που ικανοποιεί τις απαιτήσεις των χρηστών και των πελατών. Εστιάζει τη προσοχή της στην ανάπτυξη και εφαρμογή συστηματικών μεθόδων, τεχνικών και εργαλείων που αφορούν ολόκληρο το κύκλο ζωής του Λογισμικού και υποστηρίζουν την επιτυχία των παραπάνω στόχων. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
«κρίση λογισμικού»- Τεχνολογία Λογισμικού -1968 Αποκλίσεις του λογισμικού από τη λειτουργικότητα που επιθυμούσαν οι πελάτες που το παρήγγειλαν, Αποκλίσεις από το χρονοδιάγραμμα ανάπτυξης, Αποκλίσεις από τον οικονομικό προγραμματισμό ανάπτυξης του λογισμικού, Αποκλίσεις από το προβλεπόμενο κόστος του περιβάλλοντος λειτουργίας του λογισμικού, Αδυναμία εξέλιξης του λογισμικού με σκοπό τα προσαρμοσθεί στις νέες ανάγκες των πελατών 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης Standish 2001 το 2000 το 23% των έργων ανάπτυξης λογισμικού απέτυχαν και ματαιώθηκε η ολοκλήρωση τους. Τον ίδιο χρόνο 28% των έργων ολοκληρώθηκε σύμφωνα με τον χρονικό και οικονομικό τους προγραμματισμό, ενώ 49% των έργων ολοκληρώθηκε με αποκλίσεις είτε στον προϋπολογισμό τους είτε στο χρονοπρογραμματισμό τους είτε στην λειτουργικότητα του προϊόντος λογισμικού 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης Standish 2001 Παράγοντες επιτυχίας: Επιχειρησιακή υποστήριξη Εμπλοκή χρηστών Ικανός διοικητής έργου Σαφείς επιχειρησιακοί στόχοι Εστιασμένο πεδίο εφαρμογής του προϊόντος Πρότυπες υποδομές ανάπτυξης 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης Μια χρήσιμη αναλογία 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης Μια χρήσιμη αναλογία Εργαλείο: όργανο ή αυτόματο σύστημα για πραγματοποίηση μιας εργασίας με «καλύτερο τρόπο» Μέθοδος – τεχνική : μια τυπική βηματική περιγραφή δραστηριοτήτων για την παραγωγή ενός αποτελέσματος Διαδικασία : μέθοδος – τεχνική σε συνδυασμό με εργαλεία που παράγει συγκεκριμένο προϊόν 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Ιδιαιτερότητα του λογισμικού Εκτός από τα εργαλεία, τις τεχνικές και την αρχιτεκτονική προσέγγιση υπάρχει και ο άνθρωπος (παραγωγικότητα 1 έως 10) Το λογισμικό είναι πολύπλοκο Το λογισμικό απαιτεί προσαρμοστικότητα Το λογισμικό είναι άϋλο Το λογισμικό αλλάζει διαρκώς 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Ποιότητες που ενδιαφέρουν Συντηρητής Καλή τεκμηρίωση Κατανοητός κώδικας Καλή σχεδίαση Επαναχρησιμοποίηση Πελάτης Χαμηλό κόστος Μεταφέρσιμο Αυξάνει την παραγωγικότητα Αξιοπιστία Ορθότητα Αποδοτικότητα Χρήστης Λειτουργικότητα Ευκολία χρήσης Ευκολία εκμάθησης 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης Ποιοτικό Λογισμικό Μεταφερσιμότητα Αξιοπιστία Επαναχρησιμότητα Ευρωστία Ελεγχξιμότητα Ευχρηστία Διαθεσιμότητα Απόδοση Ευελιξία Ακεραιότητα Διαλειτουργικότητα Συντηρησιμότητα 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης Ανάπτυξη Λογισμικού 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης Ανάλυση - Σύνθεση 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Εργασίες και Αρμοδιότητες 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Δραστηριότητες Ανάπτυξης Προσδιορισμός Απαιτήσεων Σχεδίαση Κατασκευή Έλεγχος Συντήρηση 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Μέση Κατανομή Κόστους (και χρόνου) σε ένα τυπικό έργο Object-Oriented and Classical Software Engineer 5th Edition, Schach (2002) 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης Διοίκηση έργου Ένα έργο ανάπτυξης δεν περιορίζεται σε καθαρά τεχνικά θέματα, αλλά και σε άλλα όπως ο χρονοπρογραμματισμός του έργου, η κατάρτιση του προϋπολογισμού του, η στελέχωση της ομάδας ανάπτυξης, η οργάνωση της ομάδας ανάπτυξης, η παρακολούθηση της πορείας του έργου, η διαχείριση των κινδύνων κ.α. Όλες αυτές η δραστηριότητες αφορούν τη διοίκηση του έργου που είναι εξ ίσου σημαντικές όπως και οι βασικές. Ιδιαίτερα ο ρόλος του διοικητή έργου είναι κρίσιμος για την επιτυχή ολοκλήρωση των έργων. Προσόντα που θα πρέπει να διακρίνουν τον διοικητή έργου είναι: Επιχειρηματική αντίληψη. Τεχνικές γνώσεις. Γνώση διοίκησης έργων. Ικανότητες λήψης αποφάσεων. Ικανότητες παρακολούθησης διαδικασιών. Ικανότητα ανάλυσης λεπτομερειών. Ικανότητες οργάνωσης. Ικανότητες επικοινωνίας. Ηγετικές ικανότητες. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης Διασφάλιση ποιότητας Σκοπός της διασφάλισης ποιότητας είναι να επιβεβαιώνει διαρκώς ότι κάθε παραδοτέο της ομάδας ανάπτυξης διαθέτει το επίπεδο ποιότητας που έχει ορίσει η διοίκηση του έργου και να εισηγείται στην Διοίκηση του έργου τυχόν αναγκαίες ενέργειες για την βελτίωση της ποιότητας των παραδοτέων της ομάδας ανάπτυξης. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Διασφάλιση Ποιότητας (συνέχεια) Η επίτευξη υψηλής ποιότητας στο λογισμικό συνοδεύεται από μείωση του χρόνου ανάπτυξης. Ο χρόνος ανάπτυξης αυξάνεται όταν επιτυγχάνεται εξαιρετική ποιότητα σε ειδικές κατηγορίες του λογισμικού. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Διαχείριση διάταξης (configuration management) Η διαχείριση διάταξης αφορά όλες τις δραστηριότητες που έχουν ως αποτέλεσμα, την αξιοποίηση όλων των ενδιάμεσων προϊόντων της διαδικασίας ανάπτυξης με σκοπό την παραγωγή εκδόσεων (version) του λογισμικού που ανταποκρίνονται στις απαιτήσεις κάποιας ομάδας χρηστών, τη διαχείριση διαφορετικών εκδόσεων του λογισμικού και την υποστήριξη της πολιτικής εκδόσεων. Η δραστηριότητα της διαχείρισης διάταξης αφορά τόσο την ομάδα Διοίκησης έργου όσο και την ομάδα ανάπτυξης 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Ερωτήσεις – Απορίες - Συζήτηση