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

Σχετικά έγγραφα
Τεχνολογία Λογισμικού

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 1 ΓΝΩΡΙΜΙΑ ΜΕ ΤΗΝ ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ. Σκοπός. Προσδοκώμενα αποτελέσματα. Έννοιες-κλειδιά

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

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

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

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

05 Ανάλυση απαιτήσεων

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός και Επιλογή Συστημάτων

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

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

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

ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ. 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

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

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

Κεφάλαιο 1. Εισαγωγή στα συστήματα σχεδιομελέτης και παραγωγής με χρήση υπολογιστή computer aided design and manufacture (cad/cam)

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

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

Εισαγωγή. Τμήμα Μηχανικών Σχεδίασης Προϊόντων και Συστημάτων, ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ. Παναγιώτης Κουτσαμπάσης

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

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

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

Σχολ.έτος Κεφάλαιο 5 ο Γνωριμία με το Λογισμικό του Υπολογιστή.

Τεχνολογία Λογισμικού & Πνευματική Ιδιοκτησία. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Rational Unified Process:

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ

Εισαγωγή, Βασικές Έννοιες, Οφέλη και Κίνδυνοι

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

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

Θεωρία του Έργου. Διαχείριση Έργου Κύκλος Ζωής. Μαρίνα Α.Τσιρώνη Πολιτικός Μηχανικός, MSc ΕΔΑ Περιφέρειας Κεντρικής Μακεδονίας.

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

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΜΑΤΟΣ. Ευέλικτες μέθοδοι στη διοίκηση έργων ΠΙΣΤΩΤΙΚΕΣ ΜΟΝΑΔΕΣ: 8 ΩΡΕΣ ΔΙΔΑΣΚΑΛΙΑΣ (ΑΝΑ ΕΒΔΟΜΑΔΑ):

Transcript:

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

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

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

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

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

Βιβλίο - Βιβλιογραφία Βασικά Συγγράμματα R. Pressman, B. Maxim «Τεχνολογία Λογισμικού», 8 η έκδοση, επιμέλεια Α. Πρέντζα, Κ. Σαΐδης, εκδόσεις Τζιόλα, 2018 S. L. Pfleeger, «Τεχνολογία Λογισμικού Θεωρία και πράξη», 2η έκδοση, εκδόσεις Κλειδάριθμος, 2011 Προτεινόμενη Βιβλιογραφία I. Sommerville, «Βασικές αρχές Τεχνολογίας Λογισμικού», 8 η αγγλική έκδοση, εκδόσεις Κλειδάριθμος Β. Βεσκούκης «Τεχνολογία Λογισμικού Ι», ΕΑΠ, ΠΑΤΡΑ, 2000 G. Hoffer, Valacich, «Ανάλυση και Σχεδίαση Πληροφοριακών Συστημάτων», 5η έκδοση, εκδόσεις Τζιόλα

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

Τεχνολογία Λογισμικού (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. Μπορεί το σύστημα να κάνει άμεσα κάτι για το συγκεκριμένο στοιχείο (ή δραστηριότητα);

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

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

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

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

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

Απάντηση Ομοιότητες 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% έργα είναι ολικές αποτυχίες H αποτυχία ανάπτυξης μεγάλων και πολύπλοκων πληροφοριακών συστημάτων είναι σε μεγάλο βαθμό αναπόφευκτη Source: DangerousEnthusiams: Gauldand Goldfinch

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

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

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

Τι είναι η Τεχνολογία Λογισμικού? 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 συστήματα Εξαρτάται από την οπτική: Ποιότητα προϊόντος Ποιότητα διαδικασίας Ποιότητα στα πλαίσια του επιχειρηματικού περιβάλλοντος

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

Ποιότητα διαδικασίας Ποιότητα της διαδικασίας ανάπτυξης και συντήρησης εξίσου σημαντική και αλληλένδετη με την τελική ποιότητα του προϊόντος Μοντελοποίηση και βελτιστοποίηση της διαδικασίας Πού/πότε συναντάται συγκεκριμένο είδος ελαττώματος; Πώς μπορούν ελαττώματα να εντοπιστούν νωρίς στη διαδικασία ανάπτυξης; Πώς μπορούμε να ενσωματώσουμε ανοχή σε σφάλματα; Εναλλακτικές για τη βελτιστοποίηση της διαδικασίας χωρίς βλάβη της ποιότητας;

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

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

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

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

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

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

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

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

Πηγές Ε. Κιουντούζης, Μεθοδολογίες Ανάλυσης και Σχεδιασμού Πληροφοριακών Συστημάτων,Εκδόσεις Α.Σταμούλη, Αθήνα 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, 8th edition, 2018 Leon S. Sterling and Kuldar Taveter, The art of agent-oriented modeling, The MIT Press, Cambridge, Massachusetts, London, England, 2009.