Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Σχετικά έγγραφα
Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Τεχνολογία Λογισμικού

Τεχνολογία Λογισμικού

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 21/11/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια.

Εισαγωγή στην τεχνολογία λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 1

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Σκοπός του μαθήματος

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Τεχνολογία Λογισμικού

Θέματα ποιότητας (1/5)

Ανάλυση Συστηµάτων και Τεχνολογία Λογισµικού

Εισαγωγή στην Τεχνολογία Λογισµικού

ΣΧΕΔΙΑΣΗ & ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ

Εισαγωγή στην Τεχνολογία Λογισµικού

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

Εισαγωγή στην Τεχνολογία Λογισµικού

Μεθοδολογίες Παραγωγής Λογισµικού

Διάλεξη 1. Εισαγωγή στην Τεχνολογία Λογισμικού. Χ. Αντωνόπουλος Μ. Μπίμπη

Πληροφορική 2. Τεχνολογία Λογισμικού

Εισαγωγή στην Τεχνολογία Λογισμικού. Ματίνα Μπίμπη Τμήμα Μηχανικών Η/Υ Τηλεπικοινωνιών & Δικτύων, Πανεπιστήμιο Θεσσαλίας

Τεχνολογία Λογισμικού

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Τεχνολογία Λογισμικού

Σχεδιαστικά Προγράμματα Επίπλου

Εισαγωγή στην Τεχνολογία Λογισμικού

Εισαγωγή στη Σχεδίαση Λογισμικού

Κεφάλαιο 7: Τεχνολογία Λογισμικού

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Επιχειρηματική Μοντελοποίηση. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

Τεχνολογία Λογισµικού Ι Κεφάλαια 1-21

Ανάλυση Απαιτήσεων Απαιτήσεις Λογισµικού

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Η συμβολή στην επιτυχία ενός οργανισμού, παρουσιάζοντας σχετικά δεδομένα με τη χρήση τεχνικών 2Δ ή 3Δ τεχνολογίας. Αρμοδιότητα

. Μεθοδολογία Προγραμματισμού. Εισαγωγή. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Σημειώσεις στο μάθημα «Στοιχεία Προγραμματισμού σε Γραφικό Περιβάλλον»

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Κεφάλαιο 4: Λογισμικό Συστήματος

ΜΕΘΟΔΟΛΟΓΙΕΣ ΑΝΑΠΤΥΞΗΣ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

Περιεχόμενα. Κεφάλαιο 2 Κοινωνικοτεχνικά συστήματα 49

ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού

Agile Προσέγγιση στη Διαχείριση Έργων Λογισμικού

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Rational Unified Process. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

Αρχιτεκτονική Λογισμικού

Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές

Σχεδιαστής Ιστοσελίδων

Τεχνολογία Λογισμικού

Διαχείριση έργων. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Κεφάλαιο 2ο. Κατανοώντας την αντικειμενοστρέφεια

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Περιεχόμενο του μαθήματος

Σύστημα. Αντώνης Μαϊργιώτης

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Ενότητα 12 (κεφάλαιο 28) Αρχιτεκτονικές Εφαρμογών

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Συστήµατα Τηλεκπαίδευσης: Κύκλος ζωής εκπαιδευτικού υλικού

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ. Ενότητα 1 η : Ανάπτυξη Λογισμικού & Προγραμματισμός

Εισαγωγή στη Δασική Πληροφορική

Εργαλεία CASE. Computer Assisted Systems Engineering. Δρ Βαγγελιώ Καβακλή. Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου

8 Τεχνικός Εφαρμογών Πληροφορικής με Πολυμέσα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

ΚΥΚΛΟΣ ΖΩΗΣ ΛΟΓΙΣΜΙΚΟΥ και ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ ΔΕΔΟΜΕΝΩΝ

Τεχνολογία Λογισμικού

Ιστορικό. *Ομάδα ανάπτυξης: Γρεασίδης Θοδωρής: 265 Κουτσαυτίκης Δημήτρης: 258 Μπούρα Βάγια: 257 Πετράκη Ελένη: 266 Φουντά Σταυρούλα: 256

Έγγραφο Περιγραφής Απαιτήσεων Λογισμικού

Απαιτήσεις Λογισμικού

Συστήματα Πληροφοριών Διοίκησης

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού

Κεφάλαιο 8 Πληροφοριακά συστήματα. Εφαρμογές Πληροφορικής Κεφ. 8 Καραμαούνας Πολύκαρπος

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

ΕΙΣΑΓΩΓΗ ΣΤΗ ΔΙΑΧΕΙΡΙΣΗ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΡΓΩΝ

Έγγραφο Προδιαγραφών Απαιτήσεων Λογισμικού για το παιχνίδι: Asylum : The Escape

Managing Information. Lecturer: N. Kyritsis, MBA, Ph.D. Candidate Athens University of Economics and Business.

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΟΙΚΗΣΗΣ MANAGEMENT INFORMATION SYSTEMS (M.I.S.)

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

Λογισμικό - Προγράμματα

Σχεδιασμός Οικολογικού Διαμεσολαβητή για την εποπτεία και διαχείριση δικτύου διανομής ηλεκτρικής ενέργειας

Σχεδιασμός Κατασκευών Ενότητα 2: Βασικές Έννοιες Τεχνικών Συστημάτων & Οργάνωση Ανάπτυξης ενός Προϊόντος

Διοίκηση Παραγωγής και Συστημάτων Υπηρεσιών

Εισαγωγή στην. Γιάννης Σμαραγδάκης

Ανάλυση Απαιτήσεων Mεθοδολογίες Ανάπτυξης

ΣΥΝΘΕΣΗ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ ΟΜΑΔΩΝ ΠΑΡΑΓΩΓΗΣ ΕΦΑΡΜΟΓΩΝ ΠΟΛΥΜΕΣΩΝ

Agile Προσέγγιση στη Διαχείριση Έργων Λογισμικού

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Τεχνολογία Λογισμικού

Προδιαγραφές Απαιτήσεων Επικύρωση Απαιτήσεων

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Ηλεκτρολογική και Ηλεκτρονική Μηχανική(4 χρόνια, Πτυχίο)

Μαλούτα Θεανώ Σελίδα 1

Ελληνικό Ανοικτό Πανεπιστήµιο. Η ιαχείριση Απαιτήσεων στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

Transcript:

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 3/10/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr

Πρακτικά Θέματα Διαλέξεις Δευτέρα 11:15-14:00, αίθουσα 107 Παρουσιάσεις διαλέξεων επιπλέον χρήσιμο υλικό Στο site του μαθήματος Εργαστήρια Ώρες γραφείου: Τρίτη 15:00-16:00 κτίριο Ανδρούτσου, γραφείο 204

Αξιολόγηση / Βαθμολόγηση επίδοσης Βαθμολογία Εξετάσεις 80% Εργαστήρια Ασκήσεις Εργασία 30% Βαθμός εξετάσεων >= 5 ΥΠΟΧΡΕΩΤΙΚΑ για να μετρήσει ο βαθμός της εργασίας

Στόχοι μαθήματος Η συστηματική εισαγωγή στην ανάλυση και σχεδίαση συστημάτων και η κάλυψη θεωρητικών, τεχνικών και μεθοδολογικών ζητημάτων. Η εξοικείωση με τις πιο σημαντικές έννοιες, αρχές, και στάδια ανάλυσης, σχεδίασης, ανάπτυξης, λειτουργίας και συντήρησης συστημάτων. Η εξοικείωση με τις βασικές μεθοδολογίες, τεχνικές και εργαλεία για τη συστηματοποιημένη σχεδίαση, ανάπτυξη, λειτουργία και συντήρηση συστημάτων λογισμικού.

Στόχοι - ειδικότερα Γνωριμία με την επιστημονική περιοχή της Τεχνολογίας Λογισμικού (Software Engineering) Παρουσίαση των πιο διαδεδομένων Μοντέλων Κύκλου Ζωής Λογισμικού Κατανόηση βασικών εννοιών στην ανάπτυξη συστημάτων και ειδικότερα συστημάτων λογισμικού Εξοικείωση με τις μεθοδολογίες ανάπτυξης συστημάτων λογισμικού Δομημένη ανάλυση και σχεδίαση λογισμικού Αντικειμενοστρεφής ανάλυση και σχεδίαση λογιμσικού Εξοικείωση με τεχνικές ελέγχου, εντοπισμού και διόρθωσης σφαλμάτων στο λογισμικό Εξοικίωση με τη χρήση προτύπων τεκμηρίωσης λογισμικού Γνώση και εφαρμογή διαγραμματικών τεχνικών μοντελοποίησης με ιδιαίτερη έμφαση στη Γλώσσα Ενιαίας Μοντελοποίησης (UML) Πρακτική εξάσκηση εφαρμογής μεθοδολογιών ανάλυσης και σχεδίασης στην εκπόνηση ενός έργου λογισμικού

Βιβλίο - Βιβλιογραφία Βασικά Συγγράμματα Ε. Γιακουμάκης, Ν. Διαμαντίδης «Τεχνολογία Λογισμικού», 2009, Εκδόσεις Σταμούλη S. L. Pfleeger, «Τεχνολογία Λογισμικού Θεωρία και πράξη», 2η έκδοση, 2011, Eκδόσεις Κλειδάριθμος

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Εισαγωγή

Τεχνολογία Λογισμικού (1/4) Πρώτη φορά ακούστηκε το 1968! Πολλά έχουν αλλάξει από τότε! Συνεχώς αυξανόμενη εξάρτηση από το λογισμικό! Επομένως χρειάζεται υπευθυνότητα! Πρέπει η σύνθετη, άυλη, πολύπλοκη ανθρώπινη κατασκευή, το λογισμικό, να είναι Αξιόπιστη Συντηρήσιμη Προσαρμόσιμη και Αξιοποιήσιμη από τον άνθρωπο Δυνατή η υλοποίηση εντός προκαθορισμένων ορίων χρόνου, κόστους και ποιότητας!!!

Τεχνολογία Λογισμικού (2/4) Εφαρμόζεται από ομάδες για την παραγωγή υψηλής ποιότητας, μεγάλης κλίμακας, οικονομικά αποδοτικού λογισμικού που ικανοποιεί τις ανάγκες των χρηστών και μπορεί να συντηρηθεί σε βάθος χρόνου. Χρήστες: συνεπάγεται την ανάγκη για απαιτήσεις Ομάδες: συνεπάγεται την ανάγκη για επικοινωνία και διεπαφές Σε βάθος χρόνου: υποδηλώνει ότι το σύστημα πρέπει να είναι σε θέση να αλλάξει χωρίς να γίνεται εύθραυστο Υψηλής ποιότητας: προτείνει κριτήρια απόδοσης, όχι μόνο λειτουργικές δυνατότητες Μεγάλης κλίμακας: σημαίνει διαφορετική αρχιτεκτονική θεώρηση σχετικά με την απόδοση και άλλες ιδιότητες/χαρακτηριστικά Κατανόηση των δαπανών και των συμβιβασμών (trade-offs ) στο σχεδιασμό θα είναι πολύ σημαντική Αναγνωρίζοντας τις ανάγκες των ενδιαφερόμενων μερών και όχι μόνο των χρηστών είναι επίσης πολύ σημαντικό

Τεχνολογία Λογισμικού (3/4) Διαδικασία εξειδίκευσης, σχεδιασμού, υλοποίησης, επικύρωσης, εγκατάστασης και διατήρησης κοινωνικοτεχνικών συστημάτων. Σχέδια/σκίτσα με μέγεθος θέσης, σχήμα, σκοπό, διάταξη δωματίων που προκύπτουν από τις συνομιλίες μεταξύ του πελάτη και του αρχιτέκτονα Σχέδια του αρχιτέκτονα με κατόψεις, τομές, εικόνες έτσι ώστε ο ιδιοκτήτης να σχετίζεται με αυτά και είτε συμφωνεί ή διαφωνεί μηχανική απαιτήσεων: κατανόηση και καθορισμός απαιτήσεων Σκίτσα/σχέδια του αρχιτέκτονα: το μοντέλο του τελικού προϊόντος από την πλευρά του ιδιοκτήτη Σκίτσα/σχέδια του αρχιτέκτονα που μετατρέπονται σε τελικά σχέδια του αρχιτέκτονα: το μοντέλο του τελικού προϊόντος από την πλευρά του σχεδιαστή Σχέδια του αρχιτέκτονα: καθορισμός των υλικών που θα χρησιμοποιηθούν για την κατασκευή και που θα χρησιμοποιηθούν ως βάση για τις διαπραγματεύσεις με γενικό ανάδοχο Ο ανάδοχος μετατρέπει τα σχέδια του αρχιτέκτονα στα σχέδια του εργολάβου που αντιπροσωπεύουν την πλευρά του κατασκευαστή. Τα σχέδια του αναδόχου παρέχουν την περιγραφή "πώς να το χτίσει"

Τεχνολογία Λογισμικού (4/4) Έτσι, πρώτα σχεδιάζουμε το σύστημα όπως βρίσκεται στο περιβάλλον Τα μοντέλα περιλαμβάνουν περιπτώσεις χρήσης μοντελοποιημένες από την πλευρά του ιδιοκτήτη Η προοπτική του ιδιοκτήτη μπορεί επίσης να περιλαμβάνει σενάρια τα οποία μπορούν να προσομοιωθούν Η προοπτική του σχεδιαστή αποτελείται από διάφορα μοντέλα που περιγράφουν από διάφορες πλευρές το πώς πρέπει να σχεδιαστεί το σύστημα (με τη χρήση της UML) Η προοπτική του κατασκευαστή βασίζεται στην προοπτική του σχεδιαστή, αλλά θεωρεί συγκεκριμένες γλώσσες, τεχνολογίες και εργαλεία που θα χρησιμοποιηθούν και καθορίζει τη σειρά των δραστηριοτήτων

Γιατί Τεχνολογία Λογισμικού? Γιατί η ανάπτυξη λογισμικού είναι δύσκολη?! Πολύ σημαντική η διάκριση μεταξύ εύκολων συστημάτων (ένας developer, ένας χρήστης, πειραματική χρήση μόνο) και δύσκολων συστημάτων (πολλοί developers, πολλοί χρήστες, προϊόντα) Η εμπειρία με εύκολα συστήματα εξαπατά Oι τεχνικές ενός ατόμου δεν κλιμακώνονται (do not scale up) Αναλογία με το χτίσιμο γεφυριού: Πάνω από ένα ρυάκι = εύκολο, δουλειά ενός ατόμου Στο Ρίο-Αντίρριο? (οι τεχνικές δεν κλιμακώνονται)

Γιατί Τεχνολογία Λογισμικού? Το πρόβλημα είναι η πολυπλοκότητα Το μέγεθος του λογισμικού είναι σημαντικό: Το UNIX περιέχει 4 εκατομμύρια γραμμές κώδικα Τα Windows 2000 περιέχουν 10 8 γραμμές κώδικα Η Τεχνολογία Λογισμικού είναι για να διαχειρίζεται αυτή την πολυπλοκότητα!

Υπολογιστές και Λογισμικό Η/Υ: ένα από τα σημαντικότερα γεγονότα που σηματοδότησαν τον 20 ο αιώνα Εκτέλεση εργασιών αυτοματοποίηση Τεράστια βελτίωση χαρακτηριστικών και δυνατοτήτων Κοινωνία της Πληροφορίας Πώς??? Το λογισμικό καθιστά χρήσιμο τον Η/Υ

Τεχνολογία λογισμικού Οι οικονομίες ΟΛΩΝ των αναπτυγμένων χωρών εξαρτώνται από το λογισμικό Ολοένα και περισσότερα συστήματα ελέγχονται από λογισμικό Η τεχνολογία λογισμικού καταπιάνεται με θεωρίες, μεθόδους και εργαλεία ανάπτυξης επαγγελματικού λογισμικού Οι δαπάνες σε λογισμικό αντιπροσωπεύουν σημαντικό μέρος του ΑΕΠ σε όλες τις αναπτυγμένες χώρες

Συστήματα λογισμικού Τα συστήματα λογισμικού (ΣΛ) αποτελούν αναντικατάστατο στυλοβάτη της σύγχρονης οικονομίας Με αυτά όμως σχετίζονται δύο δυσκολίες! (Α) Η δυσκολία της ανάλυσης και της σχεδίασής τους (Β) Η διδασκαλία της ανάλυσης και σχεδίασής τους

(Α) Η δυσκολία της ανάλυσης και σχεδίασης ΣΛ Η διαδικασία ανάλυσης και σχεδίαση ενός ΣΛ είναι πολυσύνθετη, ανοικτή και επομένως δύσκολη!

(Α) Η δυσκολία της ανάλυσης και σχεδίασης ΣΛ

(Α) Η δυσκολία της ανάλυσης και σχεδίασης ΣΛ

(Α) Η δυσκολία της ανάλυσης και σχεδίασης ΣΛ

(Α) Η δυσκολία της ανάλυσης και σχεδίασης ΣΛ

(Α) Η δυσκολία της ανάλυσης και σχεδίασης ΣΛ

(Α) Η δυσκολία της ανάλυσης και σχεδίασης ΣΛ

(Α) Η δυσκολία της ανάλυσης και σχεδίασης ΣΛ

(Α) Η δυσκολία της ανάλυσης και σχεδίασης ΣΛ

(Α) Η δυσκολία της ανάλυσης και σχεδίασης ΣΛ

(Α) Η δυσκολία της ανάλυσης και σχεδίασης ΣΛ

(Α) Η δυσκολία της ανάλυσης και σχεδίασης ΣΛ

(Α) Η δυσκολία της ανάλυσης και σχεδίασης ΣΛ

(Β) Η διδασκαλία της ανάλυσης και σχεδίασης ΣΛ Η σπουδαιότητα του θέματος, η ευρύτητά του, καθώς και η εξάρτησή του από τις διαρκώς εξελισσόμενες και μεταβαλλόμενες «βασικές» τεχνολογίες πληροφορικής (hardware, γλώσσες προγραμματισμού, βάσεις δεδομένων, τηλεπικοινωνίες) καθιστούν τη διδασκαλία του, έργο δύσκολο, αλλά απαραίτητο. Περιεχόμενο ΣΚΥΛΛΑ Λιτό Ελλειπές Μεγάλο Ασυνάρτητο ΧΑΡΥΒΔΗ

Άλλες δυσκολίες Δεν υπάρχει απολύτως δόκιμη ορολογία Πολλές φορές οι ίδιες έννοιες αναφέρονται με διαφορετικό όνομα σε διαφορετικά βιβλία Το πρόβλημα αυτό υπάρχει και την αγγλική και στην ελληνική βιβλιογραφία Ένα από τα πλεονεκτήματα της UML είναι ότι μας παρέχει μια κοινώς αποδεκτή ορολογία

Προβλήματα στην Ανάπτυξη ΣΛ Τι μπορεί να πάει στραβά; Μόνο αν κατανοήσουμε τι μπορεί να πάει στραβά κατά τη διάρκεια ανάπτυξης ενός Συστήματος Λογισμικού, μπορούμε να ελπίζουμε ότι θα καταφέρουμε να αποφύγουμε την αποτυχία!

Προβλήματα από τη Σκοπιά του Χρήστη Ποιο σύστημα; Δεν αντιλήφθηκα κανένα νέο σύστημα... Μπορεί να δουλεύει αλλά είναι απαίσιο στη χρήση... Είναι πολύ συμπαθητικό. Κάνει όμως τίποτε χρήσιμο;

Προβλήματα από τη Σκοπιά του Ιδιοκτήτη Αν ήξερα από την αρχή το συνολικό του κόστος, δεν θα είχα συμφωνήσει. Τι να το κάνουμε σήμερα; Το σύστημα έπρεπε να είχε εγκατασταθεί πριν 8 μήνες. Ok. Δουλεύει, αλλά η εγκατάστασή του και η πρώτη εβδομάδα λειτουργίας του ήταν τόσο μπερδεμένη και προβληματική, που το προσωπικό μου ποτέ δεν θα το εμπιστευθεί. Από την πρώτη στιγμή δεν το ήθελα. Όλα έχουν πλέον αλλάξει. Χρειαζόμαστε ένα εντελώς διαφορετικό σύστημα.

Προβλήματα από τη Σκοπιά του Κατασκευαστή Εμείς κατασκευάσαμε αυτό που αυτοί μας είπαν ότι ήθελαν. Δεν υπήρχε χρόνος για τίποτα καλύτερο. Μην μας κατηγορείτε αδίκως. Δεν είχαμε ποτέ κάνει Ανάλυση και Σχεδιασμό Συστημάτων. Μας πώς να το διορθώσουμε αφού δεν καταλαβαίνουμε πώς υποτίθεται ότι πρέπει να δουλεύει. Όταν εμείς λέγαμε ότι αυτό ήταν αδύνατο κανείς δεν μας άκουγε. Το σύστημα είναι μια χαρά. Το πρόβλημα είναι οι χρήστες.

Η αξία της σωστής ανάλυσης και σχεδίασης Παραδείγματα κακής σχεδίασης

Η απουσία σχεδιασμού

Γιατί να κάνουμε Ανάλυση και Σχεδίαση? Γιατί κάνουμε ένα σχεδιάγραμμα πριν γράψουμε μια έκθεση; Γιατί σχεδιάζουμε ένα σπίτι πριν το κτίσουμε; Γιατί σχεδιάζουμε έναν δρόμο πριν μπούμε στις μπουλντόζες; Γιατί σχεδιάζουμε ένα αυτοκίνητο πριν αρχίζουμε τη συναρμολόγηση; Ανάλυση και σχεδίαση ακόμα και στα έργα τέχνης: κινηματογράφος, λογοτεχνία, θέατρο, γλυπτική, φωτογραφία, κλπ

Σύστημα... Σύστημα = ένα σύνολο από αντικείμενα μαζί με τις μεταξύ τους σχέσεις και τα χαρακτηριστικά τους γνωρίσματα, έτσι ώστε να σχηματίζεται μια ενιαία ολότητα, η οποία είναι σε συνεχή επικοινωνία με το περιβάλλον. Αλληλεξάρτηση: Η συμπεριφορά του στοιχείου έχει επίδραση στη συμπεριφορά του όλου και αντίστροφα.

Σύστημα Από το ρήμα «συνίσταμαι» «σύνολο στοιχείων που αλληλοεπιδρούν και αλληλοεξαρτώνται με βάση καθορισμένους κανόνες» [Λεξικό Γ. Μπαμπινιώτη] Προβληματική η χρήση του όρου! Κάτι ολοκληρωμένο και πλήρες - στερεοφωνικό σύστημα Κάποια διαδικασία - εκπαιδευτικό σύστημα Κάποια άκαμπτη γραφειοκρατική κατάσταση - το σύστημα Σύνολο πραγμάτων του οποίου τα μέρη βρίσκονται μεταξύ τους σε στενή σχέση ενότητας και αλληλοεξάρτησης - λειτουργικό σύστημα

Σκοπός Η αλληλοσυσχέτιση και αλληλεξάρτηση των στοιχείων συνεισφέρουν στην επίτευξη κάποιου σκοπού ή κάποιας τελικής σταθερής κατάστασης ή κάποιας κατάστασης ισορροπίας. Υπάρχουν οι δηλωθέντες και οι πραγματικοί στόχοι που πρέπει να βρίσκονται σε συμφωνία, διαφορετικά έχουμε απόκλιση, δηλ. πρόβλημα.

Είσοδος-έξοδος-επεξεργασία Είσοδος: εισαγωγή ενέργειας Επεξεργασία: μετασχηματισμός εισόδου σε έξοδο Έξοδος: αποτέλεσμα επεξεργασίας προσέγγιση (ή απόκλιση) του στόχου του συστήματος Στα ζωντανά συστήματα η διαδικασία είναι επαναληπτική

Έλεγχος Εσωτερική διαδικασία του συστήματος. Έλεγχος αποτελεσμάτων εξόδου και σύγκριση με τα αναμενόμενα αποτελέσματα (αναμενόμενη συμπεριφορά η επίτευξη του σκοπού). Εντοπισμός και διόρθωση αποκλίσεων. Απαιτούμενη ποικιλία: ο μηχανισμός ελέγχου πρέπει να διαθέτει τόσους εναλλακτικούς τρόπους δράσης, όσα και τα ενδεχόμενα γεγονότα που μπορεί να συμβούν.

Έλεγχος Επανατροφοδότησης είσοδος επεξεργασία έξοδος Σύγκριση/διόρθωση ανιχνευτής πρότυπα Σύστημα Ανάδραση: Δεδομένα σχετικά με την απόκλιση της εξόδου επαναεισάγονται στο σύστημα, αναγκάζοντάς το να αλλάξει τρόπο λειτουργίας ή συμπεριφορά.

Περιβάλλον Περιβάλλον = οτιδήποτε είναι έξω από τον έλεγχο του συστήματος αλλά επηρεάζει τη συμπεριφορά του. Περιβάλλον: προσφέρει τα δεδομένα εισόδου και δέχεται τα αποτελέσματα της εξόδου. Ανοικτά συστήματα: αυτά που επικοινωνούν με το περιβάλλον.

Όρια συστήματος Η νοητή διαχωριστική γραμμή που οριοθετεί (ξεχωρίζει) το σύστημα από το περιβάλλον του. Καθορισμός ορίων: 1. Έχει το συγκεκριμένο στοιχείο (ή δραστηριότητα) κάποια άμεση σχέση με τους στόχους του συστήματος; 2. Μπορεί το σύστημα να κάνει άμεσα κάτι για το συγκεκριμένο στοιχείο (ή δραστηριότητα);

Κατασκευή λογισμικού Αντίστοιχη με την κατασκευή ενός τεχνικού έργου: Κατανόηση / Καταγραφή αναγκών & προβλημάτων Συστηματική εφαρμογή σειράς βημάτων Αξιολόγηση αποτελεσμάτων / ποιότητας

Τεχνικές κατασκευές και Λογισμικό Τεχνικές κατασκευές Έχουν υλική υπόσταση Περιγράφονται και γίνονται αντιληπτές με μοναδικό τρόπο Το λογισμικό είναι ιδεατή οντότητα - πολύπλοκο τεχνικό κατασκεύασμα Μη απτή φύση λογισμικού μόνο τα αποτελέσματα χρήσης του μπορούν να είναι αντιληπτά-ορατά Δεν περιγράφεται εύκολα και μοναδικά «Σκόπευση κινούμενου στόχου από κινούμενο έδαφος και με όπλο που συνεχώς αλλάζει τη συμπεριφορά του» Μεταβαλλόμενες απαιτήσεις χρηστών (ακόμη και μέσα στην ίδια την εφαρμόγή) Εξελισσόμενο περιβάλλον ανάπτυξης λογισμικού και υλικού Μεταβαλλόμενες μεθοδολογίες, εργαλεία, περιβάλλοντα ανάπτυξης και λειτουργίας λογισμικού

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

Απάντηση Ομοιότητες 1. Συγκεκριμένο περιοριστικό χρονοδιάγραμμα και προϋπολογισμός 2. Κατασκευή σε διακριτές φάσεις που σχετίζονται μεταξύ τους 3. Χρήση λεπτομερούς σχεδίου προκειμένου να γίνει η κατασκευή 4. Η διάταξη και αλληλοσύνδεση επιμέρους στοιχείων επηρεάζουν συνολική συμπεριφορά και εικόνα προς τους χρήστες 5. Οι απαιτήσεις τίθενται από τους χρήστες αυτών

Απάντηση Διαφορές 1. Ποιοτικά χαρακτηριστικά έργου οδοποιίας συνήθως ορατά με γυμνό μάτι 2. Η ευστάθεια και η διάρκεια στο χρόνο ενός έργου οδοποιίας απειλείται συνήθως από φυσικά φαινόμενα και όχι από φυσιολογική χρήση όπως το λογισμικό 3. Πολύ μικρή πιθανότητα αλλαγής απαιτήσεων πελάτη και εκκίνησης από μηδενική βάση σε έργο οδοποιίας 4. Σχέδια έργων οδοποιίας σαφή και ακολουθούν καθολικά αποδεκτό πρότυπο

Μύθοι σχετικά με το Λογισμικό Μύθοι του management Υπάρχουν στην εταιρεία πρότυπα και διαδικασίες για το χτίσιμο του λογισμικού. Άρα παρέχονται στους developers όλα όσα χρειάζεται να ξέρουν Η εταιρεία διαθέτει state-of-the-art συστήματα ανάπτυξης λογισμικού και το καλύτερο hardware Αν ένα έργο βγει από το χρονοπρογραμματισμό του μπορούμε να το επαναφέρουμε προσθέτοντας ανθρώπινους πόρους. «Adding people to a late software project makes it later»

Μύθοι σχετικά με το Λογισμικό Μύθοι του πελάτη Μια γενική διατύπωση των στόχων είναι επαρκής για την αρχή της συγγραφής των προγραμμάτων. Οι λεπτομέρειες μπορούν να καθοριστούν αργότερα Οι διαρκώς μεταλλασσόμενες απαιτήσεις ενός έργου μπορούν να αντιμετωπιστούν εύκολα λόγω της ευελιξίας που έχει το λογισμικό

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

Βασικά σημεία κρίσης λογισμικού Εξαιρετικά δύσκολη διαδικασία κατασκευής όχι πάντα σαφές ποια βήματα πρέπει να γίνουν, με ποια σειρά, ενδιάμεσα προϊόντα Ανεπαρκής ή και κακή ποιότητα τελικού προϊόντος λάθη στην κατασκευή, μη ικανοποίηση σκοπού, δεν συμπεριφέρεται σύμφωνα με τις προδιαγραφές Μη τήρηση χρονοδιαγραμμάτων υπερβολικές και «αδικαιολόγητες» καθυστερήσεις Υπερβάσεις προϋπολογισμών κακές εκτιμήσεις κόστους, τελικά προϊόντα με πολλαπλάσιο κόστος από το αρχικό Μεγάλη δυσκολία και συνεπαγόμενο κόστος συντήρησης παρενέργειες μεταβολών σε στοιχεία που πριν λειτουργούσαν Σπάνια η προσαρμογή σε μεταβαλλόμενες απαιτήσεις Δύσκολη κατανόηση εγγράφων, σχεδίων κτλ από διαφορετικούς κατασκευαστές Ανακάλυψη σφαλμάτων μετά την παράδοση Δυσκολίες στην επικοινωνία μεταξύ των εμπλεκομένων

Παράγοντες αποτυχίας Απαιτήσεις: το έργο προχωράει OK αλλά παραδίδει ένα σύστημα το οποίο είναι μόνο μερικώς ή καθόλου χρήσιμο για τους χρήστες Διαχείριση έργου: το έργο καθυστερεί και/ή over budget Ποιότητα: το σύστημα παραδίδεται με πολλά μικρά bugs, και προβλήματα υπηρεσιών και χρηστικότητας, οπότε η κοινότητα χρηστών στην πράξη δεν μπορεί να το χρησιμοποιήσει, αν και αντιμετωπίζει τα προβλήματά της Τεχνική βλάβη (σπάνια): οι μηχανικοί δεν μπορούν να προγραμματίσουν το σύστημα κατά τέτοιο τρόπο ώστε να λειτουργεί Εξωτερικές συνθήκες: υπάρχει μια αλλαγή στο περιβάλλον του έργου (όπως οικονομική κρίση, ή αλλαγή αγοράς) με άσχημες επιπτώσεις για το έργο Οποιοσδήποτε συνδυασμός των παραπάνω

Κόστος αλλαγών

Η κρίση του λογισμικού σε αριθμούς Ποσοστά επιτυχούς ανάπτυξης έργου στις ΗΠΑ: 29% όσον αφορά στον προϋπολογισμό, λειτουργικότητα, έγκαιρη υλοποίηση Σοβαρά προβλήματα: 53% Ολοκληρωτική αποτυχία: 18% Λαμβάνοντας υπόψη το κόστος (budget) <$750,000: επιτυχία = 55% >$10,000,000 : επιτυχία = 0% Αγγλία (δημόσιος τομέας): 84% μερική ή ολική αποτυχία Συνολική εκτίμηση: 20-30% έργα είναι ολικές αποτυχίες η αποτυχία ανάπτυξης μεγάλων και πολύπλοκων πληροφοριακών συστημάτων είναι σε μεγάλο βαθμό αναπόφευκτη Source: DangerousEnthusiams: Gauldand Goldfinch

Η κρίση του λογισμικού σε αριθμούς Η.Π.Α., 1979: Από έργα 6.8 Μ$ 47% πληρώθηκε αλλά δεν παραδόθηκε προς χρήση 29% παραδόθηκε αλλά δεν χρησιμοποιήθηκε 19% τροποποιήθηκε μετά την παράδοση 3% χρησιμοποιήθηκε με μικρές αλλαγές 2% χρησιμοποιήθηκε όπως παραδόθηκε

Παραδείγματα Αρχές '80: το IRS (Internal Revenue Service) ανέθεσε την ανάπτυξη συστήματος για αυτόματη επεξεργασία φορολογικών φορμών 1985 Επιπλέον 90 M$ για τον εμπλουτισμό του αρχικού έργου (αξίας 103 Μ$) - Tο σύστημα δεν βελτιώθηκε αισθητά 1997 Κογκρέσο: Ακύρωση αφού σπαταλήθηκαν συνολικά 4 Β$ Αρχές '90: Therac-25, σύστημα ελέγχου ακτινοβόλησης ασθενών: Κακή σχεδίαση του λογισμικού: Θάνατος αρκετών ασθενών από υπερβολικές δόσεις ακτινοβολίας 4/6/1996: Καταστροφή πυραύλου Arian-5 μετά από εκτροπή από την πορεία του Σφάλμα λογισμικού (προδιαγραφών) παρά τον προτυποποιημένο σχεδιασμό και ανάπτυξη Κόστος >> 500 Μ$

Παραδείγματα 1993: Το σύστημα συναλλαγών Taurus στο London Stock Exchange εγκαταλήφθηκε / 600 Μ$ 2001: Προβλήματα διαχείρισης της αλυσίδας προμηθειών στη Nike Inc / Απώλειες 100 Μ$ 2002: Ακύρωση συστήματος επεξεργασίας πληροφοριών στη MCDonald s Corp / 170 Μ$ 2004: Προβλήματα με το σύστημα ERP στην HP / Απώλειες 160 Μ$ 2004: Σφάλματα λογισμικού στην UK Revenue -> 3.45B$ υπερπληρωμές φόρων 2005: Virtual Case File στο FBI εγκαταλήφθηκε / 170 Μ$

Ορισμός μία άποψη? ΟΧΙ Τεχνολογία Λογισμικού είναι η περιοχή εκείνη της επιστήμης της μηχανικής η οποία ασχολείται με την εύρεση και θεμελίωση μεθόδων για την παραγωγή (περιγραφή, κατασκευή και συντήρηση) λογισμικού που ικανοποιεί τις προδιαγραφές του, με την καλύτερη δυνατή ποιότητα παραδίδεται μέσα σε προδιαγεγραμμένα χρονικά όρια και το κόστος ανάπτυξής του βρίσκεται μέσα σε προδιαγεγραμμένα όρια. Σε αντίθεση με το: «Προγραμματισμός είναι η επιστήμη/τέχνη/μαγεία συγγραφής προγραμμάτων που δεν είναι να δυνατό να κατανοηθούν και να συντηρηθούν από κανέναν άλλον πέρα από το συγγραφέα τους».

Τι είναι η Τεχνολογία Λογισμικού? Software engineering is an engineering discipline which is concerned with all aspects of software production Οι μηχανικοί λογισμικού πρέπει να Υιοθετούν μία συστηματική και οργανωμένη προσέγγιση στη δουλειά τους Χρησιμοποιούν κατάλληλα εργαλεία και τεχνικές που εξαρτώνται από Το πρόβλημα που πρέπει να επιλυθεί, Τους περιορισμούς ανάπτυξης, και Τους διαθέσιμους πόρους

Σημαντικά χαρακτηριστικά λογισμικού & διαδικασίας κατασκευής Ποιότητα Αυτοματοποίηση Παραγωγικότητα Κόστος παραγωγής και συντήρησης ΑΛΛΑ Αντίθετες έννοιες! ΕΠΟΜΕΝΩΣ Ισορροπία μεγεθών

Τι περιλαμβάνεται στην ΤΛ? Καθορισμός ενεργειών και αλληλουχία με την οποία αυτές γίνονται (software process) Περιγραφή με σαφή και κατανοητό τρόπο των προϊόντων που παράγονται κατά την εκτέλεση των ενεργειών

Φάσεις ανάπτυξης λογισμικού 1. Διερεύνηση 2. Ανάλυση απαιτήσεων (λειτουργικές απαιτήσεις) 3. Σχεδιασμός του συστήματος (προδιαγραφές συστήματος) 4. Υλοποίηση (κωδικοποίηση) 5. Έλεγχος 6. Εγκατάσταση 7. Λειτουργία (χρήση) Συντήρηση του συστήματος 8. Απόσυρση

Τροποποιήσεις στο λογισμικό Διόρθωση σφαλμάτων Βελτιστοποίηση απόδοσης «Το καλό μπορεί να γίνει πάντα καλύτερο» Αυτοματοποίηση εκτέλεσης νέων εργασιών Ενσωμάτωση μεταβολών που οφείλονται σε αλλαγές που συμβαίνουν στον πραγματικό κόσμο Συντήρηση Λογισμικού (software maintenance)

Ο ρόλος του Τεχνολόγου Λογισμικού Επιστήμη υπολογιστών Πελάτης Θεωρίες Λειτουργίες υπολογιστή Πρόβλημα Σχεδιασμός & Ανάπτυξη Λογισμικού Εργαλεία & τεχνικές για την επίλυση προβλημάτων

ΠΡΟΒΛΗΜΑ Επίλυση προβλημάτων Ανάλυση Υποπρόβλη μα 1 Υποπρόβλημα 2 Υποπρ όβλημα 3 Υποπρό βλημα 4 Λύση 1 Λύση 2 Λύση 3 Λύση 4 Σύνθεση ΛΥΣΗ

Το οπλοστάσιο της Τεχνολογίας Λογισμικού Ανάλυση και Σύνθεση του προβλήματος Σπάσιμο του προβλήματος σε επιμέρους μικρότερα προβλήματα Λύση των μικρότερων επιμέρους προβλημάτων «Συναρμολόγηση» λύσης με χρήση των επιμέρους λύσεων Μέθοδοι ή Τεχνικές: Τυπικές ακολουθίες βημάτων (σωστός χρονισμός και σωστά συστατικά...) Εργαλεία: Βοηθήματα ή αυτοματοποιημένα συστήματα για την αυτόματη εφαρμογή μεθόδων/τεχνικών Διαδικασίες: Συνδυασμός μεθόδων και εργαλείων (συνταγή...) Υποδείγματα: Γενικές περιγραφές, προσέγγιση, φιλοσοφία (γαλλική, κινέζικη κουζίνα...)

Κύκλος ζωής λογισμικού Όλες οι φάσεις από τις οποίες διέρχεται το λογισμικό (software life cycle) Η Τεχνολογία Λογισμικού δεν ασχολείται μόνο με την κατασκευή, ΑΛΛΑ με ολόκληρο τον κύκλο ζωής λογισμικού Δηλ. από τη σύλληψη της ιδέας κατασκευής μιας εφαρμογής λογισμικού μέχρι την απόσυρση αυτής από τη χρήση

Λογισμικό ως μέρος συστημάτων Το λογισμικό αποτελεί εσωτερικό συστατικό ενός τεχνητού μη υπολογιστικού συστήματος Το λογισμικό λειτουργεί αυτοτελώς σε ένα υπολογιστικό σύστημα

Λογισμικό μέρος του συστήματος ΣΥΣΤΗΜΑ ΛΟΓΙΣΜΙΚΟ ΧΡΗΣΤΗΣ Υ/Σ 1 Υ/Σ 2 Υ/Σ Ν Ο χρήστης αλληλεπιδρώντας με τα συστήματα, χρησιμοποιεί λογισμικό χωρίς να έχει άμεση αντίληψη του γεγονότος αυτού

Παραδείγματα Μηχανές αυτόματης πώλησης Αυτόματο ανταλλακτήριο συναλλάγματος Αυτόματος κλιματισμός χώρου Σύστημα ελέγχου ανελκυστήρα Συσκευή video, audio CD και λοιπά ψηφιακά ηχητικά μηχανήματα Κινητό τηλέφωνο Ηλεκτρικό κάθισμα αυτοκινήτου με μνήμες Συστήματα χρονομέτρησης αγώνων Ιατρικά μηχανήματα ανάλυσης και απεικόνισης Συστήματα ελέγχου εναέριας κυκλοφορίας Σύνθετα συστήματα

Λογισμικό λειτουργεί αυτοτελώς στο υπολογιστικό σύστημα Αποτελεί με τη ΛΕΙΤΟΥΡΓΙΚΗ και όχι με τη δομική έννοια μέρος ενός ευρύτερου συστήματος/περιβάλλοντος από το οποίο προσδιορίζεται και το οποίο με τη σειρά του επηρεάζει

Το λογισμικό στο περιβάλλον του

Λογισμικό ως προϊόν Λογισμικό συστήματος Λογισμικό εφαρμογών

Λογισμικό συστήματος Το λογισμικό χωρίς το οποίο δεν είναι δυνατή η λειτουργία ενός Η/Υ Λειτουργικά συστήματα γενικής χρήσης MS Windows Linux OS 32 DOS Λογισμικό προγραμματισμού αυτόματων ελεγκτών

Λογισμικό εφαρμογών Όλες οι υπόλοιπες περιπτώσεις! Επιχειρηματικές εφαρμογές Εφαρμογές πραγματικού χρόνου Επιστημονικές εφαρμογές Εκπαιδευτικές εφαρμογές Εφαρμογές προσωπικής χρήσης Εφαρμογές τεχνητής νοημοσύνης

Τρίγωνο επιτυχίας/αποτυχίας Εμπλεκόμενοι Μεθοδολογία Γλώσσα Μοντελοποίησης και Εργαλεία

Εμπλεκόμενοι (δικαιούχοι) Οι άνθρωποι που έχουν ένα ρόλο στο έργο: Πελάτες (χρήστες και ιδιοκτήτες συστήματος) Κατασκευαστές (αναλυτές, σχεδιαστές, προγραμματιστές) Τα Πληροφοριακά Συστήματα είναι κοινωνικά συστήματα (social systems): Αναπτύσσονται από ανθρώπους (κατασκευαστές) για ανθρώπους (πελάτες) Οι αιτίες αποτυχίας λογισμικού οφείλονται κυρίως στον ανθρώπινο παράγοντα Είτε του πελάτη, ή του κατασκευαστή

Μεθοδολογία Ορίζει και οργανώνει τις δραστηριότητες παραγωγής και συντήρησης λογισμικού Μια μεθοδολογία (ή αλλιώς μοντέλο διαδικασίας (process model)): Ορίζει τη σειρά των εργασιών και δραστηριοτήτων Καθορίζει ποια τεχνουργήματα (artifacts) πρέπει να παραδοθούν και πότε Αναθέτει εργασίες και τεχνουργήματα στους κατασκευαστές Προσφέρει κριτήρια για την παρακολούθηση και μέτρηση της προόδου του έργου Δεν επιδέχεται αυστηρής τυποποίησης / αυτοματοποίησης

Γλώσσα μοντελοποίησης και Εργαλεία Τα τεχνουργήματα πρέπει να συνοδεύονται από τεκμηρίωση (documentation) και να είναι επικοινωνιακά (εύκολα κατανοήσιμα) UML (Unified Modeling Language) Γενικού σκοπού οπτική (γραφική) γλώσσα μοντελοποίησης που χρησιμοποιείται για την προδιαγραφή, οπτικοποίηση, κατασκευή και τεκμηρίωση των τεχνουργημάτων ενός συστήματος λογισμικού CASE (Computer-Assisted Software Engineering) tools Επιτρέπουν την κατασκευή, αποθήκευση και ανάκτηση μοντέλων σε ένα κεντρικό αποθηκευτικό χώρο και τη γραφική και κειμενική επεξεργασία τους στην οθόνη του επεξεργαστή

Λογισμικό ως προϊόν... Επιβάλλει τη διατύπωση ενός συνόλου κανόνων και διαδικασιών ανάπτυξης που να ισορροπούν μεταξύ: Τεχνικής ορθότητας Οικονομικής εφικτότητας Η ανάπτυξη λογισμικού πρέπει να γίνεται σε «λογικό» χρόνο έτσι ώστε είσοδος στην αγορά όταν έχουμε υψηλή ζήτηση, ΑΡΑ κέρδη στον κατασκευαστή

Ανάγκη για «καλό λογισμικό» Αυτονόητη και επιτακτική διότι... Ο ρόλος των υπολογιστών... Στην οικονομία και την παραγωγή Στην ενημέρωση και την ψυχαγωγία Στην εκπαίδευση και αλλού... εκπληρώνεται μόνο με Λογισμικό το οποίο: Κάνει σωστά τη δουλειά του... παράγεται με λογικό κόστος,... σε λογικό χρόνο,... και είναι καλής ποιότητας

Ανάγκη για «καλό λογισμικό» Εξαρτάται από την εφαρμογή Παιχνίδια vs. mission-critical συστήματα Εξαρτάται από την οπτική: Ποιότητα προϊόντος Ποιότητα διεργασίας Ποιότητα στα πλαίσια του επιχειρηματικού περιβάλλοντος

Ποιότητα προϊόντος Άποψη χρηστών με βάση τη λειτουργικότητα, τις αστοχίες, την ευκολία χρήσης Άποψη δημιουργών με βάση τα εσωτερικά χαρακτηριστικά Μοντέλα συσχέτισης της άποψης των χρηστών με αυτή των δημιουργών

Ποιότητα διεργασίας Ποιότητα της διεργασίας ανάπτυξης και συντήρησης εξίσου σημαντική και αλληλένδετη με την τελική ποιότητα του προϊόντος Μοντελοποίηση και βελτιστοποίηση της διεργασίας Πού / πότε συναντάται συγκεκριμένο είδος ελαττώματος; Πώς μπορούν ελαττώματα να εντοπιστούν νωρίς στη διαδικασία ανάπτυξης; Πώς μπορούμε να ενσωματώσουμε ανοχή σε σφάλματα; Εναλλακτικές για τη βελτιστοποίηση της διεργασίας χωρίς βλάβη της ποιότητας; Πρότυπα διεργασιών: Capability Maturity Model (CMM) μοντέλο ωρίμανσης δυνατοτήτων ISO 9000 Software Process Improvement and Capability determination (SPICE) προσδιορισμός δυνατοτήτων και βελτίωσης διεργασιών

Ποιότητα ως προς το επιχειρηματικό περιβάλλον Απόδοση επένδυσης με βάση: Το χρηματικό κόστος (κυβερνήσεις) μείωση λειτουργικών δαπανών εξοικονόμηση ποσών Την απαιτούμενη προσπάθεια (εταιρείες) Εκπαίδευση Χρονοδιάγραμμα Κίνδυνος Παραγωγικότητα Ποιότητα

Ανάγκη για «καλό λογισμικό» Επιπλέον... Το Λογισμικό θα πρέπει να έχει τα εξής χαρακτηριστικά: Συντηρησιμότητα (maintainability): ακολουθεί-εξελίσσεται για να ανταποκρίνεται στις μεταβαλλόμενες απαιτήσεις των πελατών Φερεγγυότητα (dependability): περιλαμβάνει σύνολο χαρακτηριστικών: αξιοπιστία, προστασία από εξωτερικούς κινδύνους και ασφάλεια δεν προκαλεί υλικές ή οικονομικές ζημιές σε περίπτωση αστοχίας συστήματος Αποδοτικότητα (efficiency): χρησιμοποιεί αποδοτικά τους πόρους του συστήματος μνήμη, CPU κτλ Χρησιμοποιησιμότητα (usability): μπορεί να χρησιμοποιείται άνετα από τους χρήστες για τους οποίους σχεδιάστηκε κατάλληλο user interface και documentation Αποδοχή: Το λογισμικό πρέπει να είναι αποδεκτό από τους χρήστες για τους οποίους σχεδιάστηκε. Δηλαδή πρέπει να είναι κατανοητό, εύχρηστο και συμβατό με άλλα συστήματα.

Συστατικά στοιχεία Λογισμικού ΟΧΙ μόνο ο εκτελέσιμος κώδικας Πηγαίος κώδικας, βιβλιοθήκες Προδιαγραφές, εκθέσεις, αναφορές, κείμενα γενικά Σχέδια Διαγράμματα Επομένως ΟΛΑ τα προϊόντα που παράγονται κατά την ανάπτυξη του λογισμικού, τα οποία αποτελούν αναπόσπαστο μέρος αυτού

Συστατικά στοιχεία Λογισμικού Προγράμματα ηλεκτρονικού υπολογιστή / εντολές - όταν εκτελούνται επιτυγχάνουν επιθυμητά αποτελέσματα λειτουργίες και επιδόσεις Δομές δεδομένων επιτρέπουν στα προγράμματα να διαχειριστούν με επάρκεια πληροφορίες Κείμενα, διαγράμματα κτλ. περιγράφουν τη λειτουργία και χρήση των προγραμμάτων τεκμηρίωση των παραπάνω

Συστατικά στοιχεία Λογισμικού Προγράμματα υπολογιστών και αντίστοιχη τεκμηρίωση Τα προϊόντα λογισμικού μπορεί να αναπτυχθούν για ένα συγκεκριμένο πελάτη ή μπορεί να αναπτυχθούν γενικά για την αγορά Τα προϊόντα λογισμικού μπορεί να είναι Generic έχουν αναπτυχθεί για να πωληθούν σε ένα εύρος διαφορετικών πελατών Bespoke (custom) έχουν αναπτυχθεί για ένα συγκεκριμένο πελάτη σύμφωνα με τις προδιαγραφές του

Τεκμηρίωση λογισμικού Περιγραφή δομής και συμπεριφοράς λογισμικού ΟΧΙ γιατί το λογισμικό εκτελεί κάποιες εργασίες ή γιατί τις εκτελεί έτσι ΑΛΛΑ Ποιες εργασίες εκτελεί Πώς εκτελεί τις εργασίες Ποιες δομές δεδομένων χρησιμοποιούνται

Ταξινόμηση συστατικών λογισμικού Ως προς τη φύση ηλεκτρονική μορφή έντυπη μορφή Ως προς τον τρόπο παραγωγής παράγονται αυτόματα (εκτελέσιμος κώδικας) παράγονται με το χέρι Ως προς τη φάση κύκλου ζωής στην οποία παράγονται Ως προς την εσωτερική δομή ποικίλει ανάλογα με τεχνική φύση περιβάλλοντος Ως προς τα πρότυπα στα οποία συμμορφώνονται

Πρότυπα??? Πλήθος συμβόλων, τίτλων, ορισμών... Πολλές μεθοδολογίες, γλώσσες, εργαλεία Χρήση από κατασκευαστές δικών τους άτυπων συμβολισμών και δομών ΓΙΑΤΙ? Αρχική ανωριμότητα σε κάθε νέο ερευνητικό πεδίο Ανταγωνισμός για εμπορική επικράτηση ΙΕΕΕ Institute of Electrical and Electronics Engineers

Συστατικά λογισμικού ή όχι? 1. Έκθεση αναγκών πελάτη 2. Ενημερωτικό έντυπο για κάποια εφαρμογή 3. Σχέδιο δομής λογισμικού 4. Γλώσσα προγραμματισμού 5. Μηνύματα σφαλμάτων μεταγλώττισης 6. Περιγραφή λειτουργιών λογισμικού 7. Περιγραφή ενεργειών ελέγχου λογισμικού 8. Εκτύπωση αποτελεσμάτων μιας εφαρμογής λογισμικού

Συστατικά λογισμικού ή όχι? 1. Έκθεση αναγκών πελάτη 2. Ενημερωτικό έντυπο για κάποια εφαρμογή 3. Σχέδιο δομής λογισμικού 4. Γλώσσα προγραμματισμού εργαλείο ανάπτυξης 5. Μηνύματα σφαλμάτων μεταγλώττισης παράγωγο εργαλείου 6. Περιγραφή λειτουργιών λογισμικού 7. Περιγραφή ενεργειών ελέγχου λογισμικού 8. Εκτύπωση αποτελεσμάτων μιας εφαρμογής λογισμικού

Ομάδα ανάπτυξης

Πώς μετεξελίχθηκε η ΤΛ? Γιατί στα σπίτια τα οποία κατασκευάζονται μετακομίζουν ικανοποιημένοι πελάτες ενώ σπάνια μένουν ικανοποιημένοι από προϊόντα λογισμικού? Αναθεώρηση σχεδίων και αλλαγές κατά τη διάρκεια οικοδόμησης! Συνταρακτικές αλλαγές από τη δεκαετία του 70! Συστήματα υπολογιστών Εισαγωγή δεδομένων Διασύνδεση συστημάτων

Βασικές προκλήσεις για την ΤΛ Ετερογένεια πρόκληση για την ανάπτυξη τεχνικών για κατασκευή φερέγγυου λογισμικού αρκετά ευέλικτο έτσι ώστε να αντιμετωπίζει την ετερογένεια Χρόνος παράδοσης πρόκληση για τη μείωση χρόνων παράδοσης για μεγάλα και πολύπλοκα έργα χωρίς συμβιβασμό στην ποιότητα Εμπιστοσύνη πρόκληση για την ανάπτυξη τεχνικών οι οποίες επιδεικνύουν ότι μπορούν να εμπιστευτούν το συγκεκριμένο λογισμικό οι χρήστες του Υπάρχοντα συστήματα παλαιά, σημαντικά συστήματα πρέπει να συντηρηθούν και να ενημερωθούν

Βασικοί παράγοντες εξέλιξης στην ανάπτυξη λογισμικού

Βασικοί παράγοντες εξέλιξης στην ανάπτυξη λογισμικού Χρόνος κυκλοφορίας στην αγορά - Κρισιμότητα χρόνου κυκλοφορίας στην αγορά για τα εμπορικά προϊόντα Αυξομειώσεις του κόστους - Μετατοπίσεις στο οικονομικό σκέλος της βιομηχανίας των υπολογιστών: Μείωση κόστους υλικού και αύξηση κόστους ανάπτυξης και συντήρησης λογισμικού Επιτραπέζιοι υπολογιστές - Ύπαρξη ισχυρών προσωπικών υπολογιστών Δικτύωση - Εκτεταμένη χρήση LAN και WAN Τεχνολογία αντικειμένων - Ανάπτυξη και υιοθέτηση αντικειμενοστρεφούς τεχνολογίας Διασυνδέσεις χρήστη - Χρήση γραφικών διασυνδέσεων χρήστη με παράθυρα, εικονίδια, μενού Προβλήματα μοντέλου καταρράκτη νέα μοντέλα - Μειωμένος βαθμός πρόβλεψης γραμμικού μοντέλου για ανάπτυξη λογισμικού

Βασικές έννοιες Τεχνολογίας Λογισμικού κατά Wasserman 1. Αφαίρεση 2. Μέθοδοι και σημειολογίες ανάλυσης και σχεδίασης 3. Δημιουργία πρωτοτύπων της διασύνδεσης χρήστη 4. Αρχιτεκτονική λογισμικού 5. Διεργασία λογισμικού 6. Επαναχρησιμοποίηση 7. Μέτρηση 8. Εργαλεία και ολοκληρωμένα περιβάλλοντα

1. Αφαίρεση Περιγραφή προβλήματος σε κάποιο επίπεδο γενίκευσης Μας επιτρέπει να επικεντρωθούμε στα κύρια χαρακτηριστικά του προβλήματος Δημιουργούνται κλάσεις ομοειδών αντικειμένων Δημιουργούνται ιεραρχίες αντικειμένων

2. Μέθοδοι και σημειολογίες ανάλυσης και σχεδίασης Δημιουργία μοντέλων Έλεγχός τους για πληρότητα και συνέπεια Επαναχρησιμοποίηση προδιαγραφών και στοιχείων προηγούμενων projects Χρήση τυποποιημένου συμβολισμού για την επικοινωνία και την τεκμηρίωση αποφάσεων Περιορισμοί: Εργαλεία που απευθύνονται σε συγκεκριμένες μόνο πτυχές του προβλήματος Έλλειψη καθολικά αποδεκτής σημειολογίας UML?

3. Δημιουργία πρωτοτύπων της διασύνδεσης χρήστη Δόμηση μικρότερης έκδοσης με περιορισμένη λειτουργικότητα Πελάτης: Υποβοηθείται ώστε να προσδιορίσει τις βασικές απαιτήσεις από το σύστημα Επιδεικνύεται η σκοπιμότητα μιας συγκεκριμένης σχεδίασης / προσέγγισης Επαναλαμβανόμενη διαδικασία

4. Αρχιτεκτονική λογισμικού Σύστημα ως σύνολο αρχιτεκτονικών μονάδων και χάρτη σχέσεων μεταξύ των μονάδων Ανεξάρτητες μονάδες => αρθρωτή αρχιτεκτονική, διευκόλυνση ανεξάρτητης σχεδίασης/ανάπτυξης υποσυστημάτων Σημαντική για: Υλοποίηση Δοκιμή Συντήρηση Τροποποίηση

5. Διεργασία Λογισμικού Οργάνωση & πειθαρχία κατά την ανάπτυξη => ποιότητα & ταχύτητα ανάπτυξης λογισμικού Διαφορετικές διεργασίες ανάλογα με το βαθμό χρήσης και την κρισιμότητα της εφαρμογής

6. Επαναχρησιμοποίηση Αξιοποίηση ομοιοτήτων μεταξύ εφαρμογών Αφορά τμήματα λογισμικού, τμήματα σχεδίασης, ομάδες προδιαγραφών, ομάδες σεναρίων δοκιμών Προβλήματα: Χρονοβόρα αναζήτηση σε βιβλιοθήκες αντικειμένων Προσπάθεια για γενίκευση αντικειμένων ώστε να επαναχρησιμοποιηθούν Τεκμηρίωση του βαθμού εξασφάλισης της ποιότητας Ευθύνη Κατανόηση Γενίκευση vs. εξειδίκευση

7. Μέτρηση Ποσοτικοποίηση στόχων / αποτελεσμάτων

8. Εργαλεία και ολοκληρωμένα περιβάλλοντα Εργαλεία για: Υποβοηθούμενη ανάπτυξη λογισμικού Αυτόματη ανάπτυξη λογισμικού Παρακολούθηση προόδου ανάπτυξης λογισμικού Εκσφαλμάτωση Δοκιμή

Συνοψίζοντας... Τεχνολογία Λογισμικού είναι η περιοχή εκείνη της επιστήμης της μηχανικής που ασχολείται με την εύρεση και θεμελίωση μεθόδων για την περιγραφή, κατασκευή και συντήρηση λογισμικού καλής ποιότητας με τη μεγαλύτερη δυνατή αυτοματοποίηση και παραγωγικότητα και το ελάχιστο δυνατό κόστος Το Λογισμικό δεν περιγράφεται εύκολα...

Πηγές Ε. Κιουντούζης, Μεθοδολογίες Ανάλυσης και Σχεδιασμού Πληροφοριακών Συστημάτων,Εκδόσεις Α.Σταμούλη, Αθήνα 2002 Γιάννης Τζίτζικας. Ανάλυση και Σχεδίαση Πληροφοριακών Συστημάτων, Πανεπιστήμιο Κρήτης Shari Lawrence Pfleeger. Τεχνολογία Λογισμικού: Θεωρία και Πράξη, Κλειδάριθμος, Αθήνα Leszek A. Maciaszek, Requirements Analysis and System Design (2nd edition), Addison Wesley, 2005 A.Dennis, B. Haley Wixom, D. Tegarden, Systems Analysis and Design with UML Version 2.0 (2nd edition) Wiley, 2005 Αφροδίτη Τσαλγατίδου. Εισαγωγή στη UML, Καποδιστριακό Πανεπιστήμιο Αθηνών Ιωάννης Γαβιώτης. Πληροφοριακά Συστήματα Μοντελοποίηση με UML, Πανεπιστήμιο Αιγαίου Αντικειμενοστρεφής Ανάπτυξη Λογισμικού με τη UML, επιμέλεια Π. Φιτσιλής, Κλειδάριθμος 2006 Martin Fowler, Εισαγωγή στη UML, Κλειδάριθμος, Αθήνα, 2004 Β. Βεσκούκης «Τεχνολογία Λογισμικού Ι», ΕΑΠ, ΠΑΤΡΑ, 2000 Χ. Αντωνόπουλος «Ανάπτυξη και Σχεδίαση Λογισμικού», Τμήμα Μηχ. Η/Υ, Τηλεπικοινωνιών και Δικτύων, Παν. Θεσσαλίας, 2007 I. Sommerville, «Βασικές αρχές Τεχνολογίας Λογισμικού», 8η αγγλική έκδοση (μετάφραση, εκδ. Κλειδάριθμος) Roger S. Pressman. Software Engineering - A Practitioner's Approach. McGraw-Hill, 6th edition, 2005