Κεφάλαιο 7: Τεχνολογία Λογισμικού Η Επιστήμη των Υπολογιστών: Μια Ολοκληρωμένη Παρουσίαση (δέκατη αμερικανική έκδοση) J. Glenn Brookshear Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Εισαγωγή Τεχνολογία Λογισμικού (Τ.Λ.) = Software Engineering = Mηχανική Λογισμικού Αντιμετωπίζει προβλήματα που εμφανίζονται στην ανάπτυξη μεγάλων και σύνθετων πληροφοριακών συστημάτων Απαιτείται η συμμετοχή πολλών ανθρώπων για μεγάλο χρονικό διάστημα, κατά το οποίο μπορεί να αλλάξουν οι απαιτήσεις αλλά και το προσωπικό Στόχος Τ.Λ. Να ορίσει αρχές που κατευθύνουν τη διαδικασία ανάπτυξης λογισμικού και οδηγούν σε αποδοτικά και αξιόπιστα προϊόντα λογισμικού Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-2
Κεφάλαιο 7: Τεχνολογία Λογισμικού Ο τομέας της τεχνολογίας λογισμικού Ο κύκλος ζωής λογισμικού Μεθοδολογίες τεχνολογίας λογισμικού Τμηματικότητα Εργαλεία της δουλειάς Διασφάλιση ποιότητας Τεκμηρίωση Η διασύνδεση ανθρώπου-μηχανής Ιδιοκτησία και ευθύνη λογισμικού Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-3
Σχεδιάστε και επιβλέψτε την κατασκευή ενός κτιριακού συγκροτήματος Απαιτήσεις εμφάνισης Απαιτήσεις κατασκευής Χρονοπρογραμματισμός Υπολογισμός Κόστους (χρήμα, χρόνος, άλλοι πόροι) Χωρισμός σε τμήματα για ευκολότερη διαχείριση Συμβατότητα τμημάτων Τρόποι επικοινωνίας ατόμων ομάδας Διαχείριση λεπτομερειών (π.χ. επιλογή των πομόλων, σχεδιασμός σωληνώσεων για το σύστημα κεντρικής θέρμανσης) Έλεγχος προόδου του έργου Έλεγχος τελικού προϊόντος Συντήρηση Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-4
Διαφορές λογισμικού από άλλα πεδία μηχανικής (1/2) Δυνατότητα κατασκευής από προκατασκευασμένα συστατικά στοιχεία Περιορισμένη διαθεσιμότητα γενικών συστατικών Παραδοσιακά, τα πολύπλοκα συστήματα λογισμικού κατασκευάζονται από το μηδέν Υπάρχει πρόοδος σε αυτόν το τομέα, π.χ. Component-based development, service engineering, και η έρευνα συνεχίζεται Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-5
Διαφορές λογισμικού από άλλα πεδία μηχανικής (2/2) Έλλειψη μετρικών μεθόδων για ποσοτική μέτρηση των ιδιοτήτων λογισμικού, π.χ. Υπολογισμός κόστους -> προϋποθέτει υπολογισμό της πολυπλοκότητας Αξιολόγηση ποιότητας και Αξιοπιστίας π.χ. στις μηχανικές συσκευές ένα μέτρο ποιότητας μπορει να είναι η μέση διάρκεια ζωής, ή ο μέσος όρος μεταξύ των φθορών, το λογισμικό όμως δεν φθείρεται Οι δυσκολίες στη μέτρηση των ιδιοτήτων του λογισμικού με ποσοτικό τρόπο είναι ένας από τους βασικούς λόγους που υπάρχει έλλειψη θεωρητικής βάσης στο πεδίο της Τεχνολογίας Λογισμικού Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-6
Πρόοδος στην Τεχνολογία Λογισμικού (1/2) Πρακτικοί και θεωρητικοί ερευνητές Πρακτικοί -> ανάπτυξη τεχνικών για άμεση εφαρμογή Πολλές μεθοδολογίες αντικαθίστανται γιατί αναπτύχθηκαν σε υποκειμενική βάση Θεωρητικοί -> ψάχνουν για υποκείμενες βάσεις και θεωρίες για να αναπτυχθούν στο μέλλον πιο σταθερές τεχνικές Αργή πρόοδος Ανάγκη για πρόοδο Οικονομία, Υγεία κλπ βασίζονται σε μεγάλα συστήματα λογισμικού Σφάλματα λογισμικού υπεύθυνα για πολλές καταστροφές ή παρολίγον καταστροφές Απώλεια διαστημικών οχημάτων, έκλυση ραδιενέργειας κλπ Η πρόοδος των θεωρητικών είναι αργή Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-7
Πρόοδος στην Τεχνολογία Λογισμικού (2/2) Σημαντική πρόοδος σε Προκατασκευασμένα συστατικά στοιχεία Μετρικές IDE (Integrated development environments)-> συνδυάζουν εργαλεία για ανάπτυξη λογισμικού σ ένα ενοποιημένο πακέτο που μπορεί να υποστηρίζει και οπτικό προγραμματισμό CASE (Computer Aided Software Engineering) tools Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-8
Eργαλεία CASE Computer Aided Software Engineering (CASE) Υποστηρίζουν Σχεδιασμό έργου Διαχείριση έργου Τεκμηρίωση Δημιουργία πρωτοτύπων και προσομοίωση Σχεδιασμό διασύνδεσης Προγραμματισμό Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-9
Integrated development environment (IDE) Ενοποιημένο πακέτο λογισμικού που βοηθά τους προγραμματιστές να αναπτύξουν λογισμικό. Συνήθως περιλαμβάνει: source code editor and/or visual editor, διορθωτές κειμένου, εργαλεία αποσφαλμάτωσης. Μπορεί να περιλαμβάνει interpreters ή compiles ή και όχι Παραδείγματα IDEs: Microsoft Visual Studio, Eclipse, Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-10
Τυποποίηση στην Τεχνολογίας Λογισμικού Μεγάλη ανάγκη για περαιτέρω πρόοδο στην Τ.Λ. όχι μονο από ερευνητές Επαγγελματικοί οργανισμοί και οργανισμοί τυποποίησης, π.χ.: ISO (Διεθνής οργανισμός Τυποποίησης) ACM (Association for Computing Machinery) IEEE (Ινστιτούτο Ηλεκτρολόγων και Ηλεκτρονικών Μηχανικών), κ.λ.π. Οι παραπάνω οργανισμοί ορίζουν: Κώδικες επαγγελματικής ηθικής -> ενισχύουν τον επαγγελματισμό και καταπολεμούν την αδιαφορία για τις ευθύνες Πρότυπα -> για μέτρηση ποιότητας των οργανισμών ανάπτυξης λογισμικού και κατευθυντήριες γραμμές για βελτίωση Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-11
Association of Computing Machinery (A.C.M.) Ιδρύθηκε το 1947 ως διεθνής επιστημονικός εκπαιδευτικός οργανισμός Σκοπός: προώθηση τεχνών, επιστημών και εφαρμογών της τεχνολογίας πληροφοριών Έδρα: Νέα Υόρκη Πολλές ομάδες ειδικού ενδιαφέροντος σε θέματα όπως: Αρχιτεκτονική Η/Υ, Τεχνητή νοημοσύνη, Τεχνολογία Λογισμικού, Γραφικά, Βιο Ιατρική Πληροφορική κλπ. Κώδικας Δεοντολογίας και Επαγγελματικής Συπεριφοράς http://www.acm.org/about/code-of-ethics Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-12
Ινστιτούτο Ηλεκτρολόγων και Ηλεκτρονικών Μηχανικών Institute of Electrical and Electronics Engineers IEEE Ιδρύθηκε το 1963 ως συγχώνευση του ΙΕΕ (1884) και ΙRE (1912), εδρεύει στο New Jersey Περιλαμβάνει πολλές τεχνικές ενώσεις: Ένωση Αεροδιαστημικής και Ηλ. Συστημ, Ένωση Λεϊζερ και Ηλεκτροοπτικών, Ένωση Ρομποτικής και Αυτοματισμού κλπ Δραστηριότητες: δημιουργία προτύπων κλπ http://www.ieee.org/about/whatis/code.html Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-13
Στη συνέχεια Θα εξετάσουμε μερικές από τις θεμελιώδεις αρχές της Τ.Λ., όπως: Ο κύκλος ζωής λογισμικού Η τμηματικότητα Κλπ. Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-14
Ο κύκλος ζωής λογισμικού Ένα πρόγραμμα, αφού δημιουργηθεί, εισέρχεται σ ένα κύκλο χρήσης και συντήρησης για το υπόλοιπο της ζωής του Διαφορά από τη συντήρηση άλλων προϊόντων Λογισμικό -> διορθώνεται, βελτιώνεται, επεκτείνεται Άλλα προϊόντα -> επιδιορθώνονται Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-15
Ο κύκλος ζωής λογισμικού Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-16
Ο κύκλος ζωής λογισμικού Φάση Συντήρησης Μια δύσκολη διαδικασία Πολλές φορές είναι προτιμότερο να αποσύρεται το πρόγραμμα και να κατασκευάζεται ένα νέο πρόγραμμα από την αρχή Λίγη επιπλέον προσπάθεια στην ανάπτυξη του λογισμικού μπορεί να έχει τεράστια διαφορά στη συντήρηση Το μεγαλύτερο μέρος της έρευνας στην Τ.Λ. εστιάζεται στην ανάπτυξη λογισμικού Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-17
Η παραδοσιακή φάση ανάπτυξης του κύκλου ζωής λογισμικού Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-18
Φάση καθορισμού απαιτήσεων (1/3) ΤΙ πρέπει να κάνει το σύστημα Απαιτήσεις προσανατολισμένες στις ανάγκες της εφαρμογής Καθορίζουν: Απαιτούμενη λειτουργικότητα, Προσφερόμενες υπηρεσίες, χρονικοί περιορισμοί, απαιτήσεις ασφάλειας, διασύνδεση με το εξωτερικό περιβάλλον, κλπ Εμπλεκόμενοι (stakeholders): μελλοντικοί χρηστες και ενδιαφερόμενοι, παρέχουν τις απαιτήσεις Μελέτη σκοπιμότητας, έρευνα αγοράς κλπ οδηγούν στο λεπτομερή καθορισμό απαιτήσεων Χρησιμοποιούνται μεθοδολογίες και εργαλεία Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-19
Φάση καθορισμού απαιτήσεων (2/3) ΤΙ πρέπει να κάνει το σύστημα Συγκέντρωση και ανάλυση αναγκών του χρήστη Διαπραγμάτευση με τους εμπλεκόμενους του έργου σχετικά με συμβιβασμούς που αφορούν ανάγκες, επιθυμίες, επιτευξιμότητα Ολοκλήρωση απαιτήσεων Χρησιμοποιούνται μεθοδολογίες και εργαλεία Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-20
Φάση καθορισμού απαιτήσεων (3/3) Έγγραφο καθορισμού απαιτήσεων λογισμικού Περιλαμβάνει όλες τις απαιτήσεις Συνιστά γραπτή συμφωνία μεταξύ των ενδιαφερόμενων μερών Καθοδηγεί την ανάπτυξη λογισμικού Είναι μέσο επίλυσης διαφορών Αποτελεί τη βάση για το σχεδιασμό του συστήματος Μπορεί να χρειαστεί αλλαγές λόγω της έλλειψης καλής επικοινωνίας και των συνεχώς μεταβαλλομένων απαιτήσεων Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-21
Προβλήματα στην ανάπτυξη λογισμικού λόγω έλλειψης καλής επικοινωνίας Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-22
Η παραδοσιακή φάση ανάπτυξης του κύκλου ζωής λογισμικού Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-23
Καθορισμός απαιτήσεων vs. Σχεδιασμός Καθορισμός απαιτήσεων -> προσδιορίζει το πρόβλημα προς επίλυση ΤΙ θα κάνει το σύστημα Εμπλέκει τους χρήστες: δίνουν τις απαιτήσεις και επιβεβαιώνουν την ορθή τους καταγραφή Σχεδιασμός -> αναπτύσσει τη λύση για το πρόβλημα ΠΩΣ θα το κάνει Χρησιμοποιεί σαν βάση τις καταγραμμένες απαιτήσεις Στην πράξη, πολλές φορές το ΤΙ και το ΠΩΣ εμπλέκονται και στις δύο φάσεις Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-24
Φάση σχεδιασμού (1/2) ΠΩΣ το σύστημα ικανοποιεί τις απαιτήσεις του Δημιουργία σχεδίου (design) συστήματος που είναι ο οδηγός της κατασκευής τους. Περιλαμβάνει Την Εσωτερική Δομή του συστήματος Τα Δεδομένα Την Ανθρώπινη Διασύνδεση Χρειάζονται μεθοδολογίες και εργαλεία μοντελοποίησης Εξελίσσονται διαρκώς Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-25
Φάση σχεδιασμού (2/2) ΠΩΣ το σύστημα ικανοποιεί τις απαιτήσεις του Αποτέλεσμα: λεπτομερής περιγραφή της δομής του συστήματος που μπορεί να μετατραπεί σε πρόγραμμα Αν το design έχει γίνει με CASE tool μπορεί να παραχθεί αυτόματα κώδικας Η ανθρώπινη διασύνδεση απαιτεί γνώσεις ψυχολογίας και εργονομίας Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-26
Η παραδοσιακή φάση ανάπτυξης του κύκλου ζωής λογισμικού Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-27
Φάση Υλοποίησης Δημιουργία συστήματος από το σχεδιασμό Συγγραφή προγραμμάτων Δημιουργία αρχείων δεδομένων Ανάπτυξη βάσεων δεδομένων Ρόλος του «αναλυτή λογισμικού» (ή «αναλυτή συστημάτων») έναντι του «προγραμματιστή» ασαφής διάκριση της ορολογίας Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-28
Η παραδοσιακή φάση ανάπτυξης του κύκλου ζωής λογισμικού Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-29
Φάση Ελέγχου (1/2) Στην παραδοσιακή φάση ανάπτυξης περιλαμβάνει Έλεγχο εγκυρότητας Επιβεβαίωση ότι το σύστημα ικανοποιεί τις προδιαγραφές Έλεγχο ατελειών Εύρεση σφαλμάτων Σήμερα ο έλεγχος δεν αφορά μόνο στα προγράμματα αλλά σε όλα τα αποτελέσματα των ενδιάμεσων βημάτων ανάπτυξης λογισμικού αποτελεί ένα μέρος της διαδικασίας Διασφάλισης Ποιότητας και διαπερνά όλο τον κύκλο ζωής λογισμικού Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-30
Φάση Ελέγχου (2/2) Στην πράξη (και το υποστηρίζουν πολλοί) ο έλεγχος δεν αποτελεί ξεχωριστό στάδιο αλλά ενσωματώνεται βασικά στάδια ανάπτυξης λογισμικού Καθορισμός Απαιτήσεων και Επιβεβαίωση Σχεδιασμός και Επαλήθευση Υλοποίηση και Έλεγχος Παρ όλες τις σύγχρονες τεχνικές διασφάλισης ποιότητας εξακολουθούν να υπάρχουν σφάλματα Η έρευνα σ αυτό τον τομέα συνεχίζεται Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-31
Συνεχίζεται Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-32