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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

UML. Γενικά χαρακτηριστικά Στοιχεία µοντέλων Συσχετίσεις. Παραδείγματα

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

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

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

Διαχείριση Πληροφοριακών Συστημάτων

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

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

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

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

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

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

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

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 4 : Τεχνολογία λογισμικού. Δρ.

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

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

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

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

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

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

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

Διαγράμματα Κλάσεων στη Σχεδίαση

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

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

6. Διαχείριση Έργου. Έκδοση των φοιτητών

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

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

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

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

Διαχείριση Έργων Πληροφορικής

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

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

Διδακτική της Πληροφορικής ΙΙ

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

Βασικά Στοιχεία Διαχείρισης Έργων

Περιεχόµενα. Πληροφοριακά Συστήµατα: Κατηγορίες και Κύκλος Ζωής. Π.Σ. ιαχείρισης Πράξεων. Π.Σ. ιοίκησης. Κατηγορίες Π.Σ. Ο κύκλος ζωής Π.Σ.

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

Αλληλεπίδραση Ανθρώπου- Υπολογιστή & Ευχρηστία

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

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

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

Υποδείγματα Ανάπτυξης

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΤΕΡΕΑΣ ΕΛΛΑΔΑΣ- ΤΜΗΜΑ ΠΕΡΙΦΕΡΕΙΑΚΗΣ ΟΙΚΟΝΟΜΙΚΗΣ ΑΝΑΠΤΥΞΗΣ, ΜΑΘΗΜΑ: ΔΙΑΧΕΙΡΙΣΗ ΑΝΘΡΩΠΙΝΩΝ ΚΑΙ ΦΥΣΙΚΩΝ ΠΟΡΩΝ- ΧΡΙΣΤΟΣ ΑΠ.

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

Ελληνικό Ανοικτό Πανεπιστήµιο. Βασικές έννοιες αντικειµενοστρεφούς τεχνολογίας. ρ. Πάνος Φιτσιλής

Ελληνική Εταιρεία Πιστοποιημένων Απεντομωτών (Ε.Ε.Π.Α.)

ΑΞΙΟΠΙΣΤΙΑ ΥΛΙΚΟΥ ΚΑΙ ΛΟΓΙΣΜΙΚΟΥ

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

Μάθημα «Υπηρεσίες Ηλεκτρονικής Υγείας»

Rational Unified Process:

Φάση 3: Λεπτομερής Σχεδιασμός

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

Διαγράμματα UML για την τεκμηρίωση της Αρχιτεκτονικής

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

Α. Ερωτήσεις Ανάπτυξης

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

ΑΝΑΛΥΣΗ ΑΠΑΙΤΗΣΕΩΝ ανάλυση απαιτήσεων Σε αυτό το μάθημα θα ασχοληθούμε με : Δημιουργία μοντέλων

ΠΛΗΡΟΦΟΡΙΚΗ Γ ΤΑΞΗΣ ΓΕΛ ΚΛΕΙΩ ΣΓΟΥΡΟΠΟΥΛΟΥ. ΣΥΓΧΡΟΝΑ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ Αντικειμενοστραφής Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

Βάσεις εδοµένων. Βασίλειος Βεσκούκης, Εµµ. Στεφανάκης ΣΥΣΤΗΜΑΤΑ ΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ

Στρατηγικό Σχεδιασµό Πληροφοριακών Συστηµάτων

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ ΘΕΩΡΙΑ ΚΑΙ ΕΦΑΡΜΟΓΗ ΤΟΥ ΓΡΑΜΜΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΣΤΗ ΛΗΨΗ ΑΠΟΦΑΣΕΩΝ (1)

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

Εισαγωγή στην ανάλυση

H Συμβολή της Υπολογιστικής Σκέψης στην Προετοιμασία του Αυριανού Πολίτη

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

ΑΕΠΠ Ερωτήσεις θεωρίας

ΒΙΟΜΗΧΑΝΙΚΕΣ ΕΦΑΡΜΟΓΕΣ. Μηχανική όραση Cognex... για μέγιστη αξιοπιστία στην παραγωγή. Τρόφιμα & Ποτά

Βασικές Αρχές της Τεχνολογία Λογισμικού. Στάδια του Κύκλου Ζωής Λογισμικού

RobotArmy Περίληψη έργου

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

Προσφερόμενα Διπλώματα (Προσφερόμενοι Τίτλοι)

Στρατηγική Αξιολόγησης κατά την Υλοποίηση Εκπαιδευτικού Λογισμικού

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

Ποιότητα Λογισμικού και Πιστοποίηση

Περίληψη ιπλωµατικής Εργασίας

Εισαγωγή στην αντικειµενοστρεφή τεχνολογία

Μεθοδική Ανάπτυξη Δικτυακής Υποδομής. Παρουσίαση στην ημερίδα για Σύγχρονες τάσεις στις Τηλεπικοινωνίες και Τεχνολογίες Αιχμής

Transcript:

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

Προαπαιτήσεις Γνώση Αρχών Προγραμματισμού Γνώση Γλώσσας Προγραμματισμού (C++, Java, Pascal) Χρήση Η/Υ (Σχεδίαση, Επεξ. Κειμένου) Κριτική και Συνθετική Ικανότητα

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

Ανάλυση Μαθήματος Κύριες Ενότητες Εισαγωγή στη Τ.Λ Μοντέλα κύκλου ζωής Ανάλυση & Σχεδίαση (Δομημένη, Αντικειμενοστραφής) Παραγωγή Κώδικα Δυναμικός Έλεγχος Εργαλεία CASE UML Διοίκηση Σχηματισμών Λογισμικού Διασφάλιση Ποιότητας Λογισμικού Ασκήσεις Πράξης Παραδείγματα

Τι είναι Λογισμικό (συστατικά) Εντολές (προγράµµατα Η /Υ ) οι οποίες όταν εκτελούνται επιτυγχάνουν επιθυµητά αποτελέσµατα και επιδόσεις. Δοµές δεδοµένων που επιτρέπουν σε προγράµµατα να διαχειριστούν µε επάρκεια πληροφορίες. Κείµενα, διαγράµµατα κ.τ.λ. που περιγράφουν τη λειτουργία και χρήση των προγραµµάτων

Τι είναι Τεχνολογία Λογισμικού; Κλάδος της πληροφορικής που ασχολείται με τη μελέτη και την εφαρμογή συστηματικών, μεθοδικών και ποσοτικοποιημένων προσεγγίσεων για την ανάπτυξη, λειτουργία και συντήρηση του λογισμικού [IEEE Standard 610.12] Στοχεύει στην ανάπτυξη αξιόπιστου λογισμικού με μεγάλο κύκλο ζωής που ικανοποιεί τις απαιτήσεις των χρηστών και των πελατών. Εστιάζει τη προσοχή της στην ανάπτυξη και εφαρμογή συστηματικών μεθόδων, τεχνικών και εργαλείων που αφορούν ολόκληρο το κύκλο ζωής του Λογισμικού και υποστηρίζουν την επιτυχία των παραπάνω στόχων.

Κατηγορίες Λογισμικού Λογισµικό Συστήµατος UNIX DOS Windows Λογισµικό βιοµηχανικών Συστημάτων Λογισµικό Εφαρµογών επιχειρηµατικές εφαρµογές επιστηµονικές εφαρµογές εκπαιδευτικές εφαρµογές εφαρµογές ψυχαγωγίας

«κρίση λογισμικού»- Τεχνολογία Λογισμικού -1968 Αποκλίσεις του λογισμικού από τη λειτουργικότητα που επιθυμούσαν οι πελάτες που το παρήγγειλαν, Αποκλίσεις από το χρονοδιάγραμμα ανάπτυξης, Αποκλίσεις από τον οικονομικό προγραμματισμό ανάπτυξης του λογισμικού, Αποκλίσεις από το προβλεπόμενο κόστος του περιβάλλοντος λειτουργίας του λογισμικού, Αδυναμία εξέλιξης του λογισμικού με σκοπό τα προσαρμοσθεί στις νέες ανάγκες των πελατών

Κρίση Λογισμικού - Λόγοι ανεπαρκής προσδιορισμός απαιτήσεων -> προβληματική σχεδίαση μη ρεαλιστικοί στόχοι του project μη ακριβείς εκτιμήσεις απαιτούμενων πόρων κακή αναφορά προόδου ελλιπής χειρισμός ρίσκου κακή επικοινωνία μεταξύ πελατών, προγρ/στών, χρηστών έλλειψη εμπειρίας με τεχνολογία αδυναμία χειρισμού πολυπλοκότητας

Απάντηση στη Κρίση ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ SOFTWARE ENGINEERING Επιστημονική Θεμελίωση του Λογισμικού (κύκλου ζωής, διαδικασίας παραγωγής, τρόπου περιγραφής τεκμηρίωσης, διαδικασίας συντήρησης)

Παράγοντες επιτυχίας: Επιχειρησιακή υποστήριξη Εμπλοκή χρηστών Ικανός διοικητής έργου Σαφείς επιχειρησιακοί στόχοι Εστιασμένο πεδίο εφαρμογής του προϊόντος Πρότυπες υποδομές ανάπτυξης

Μια χρήσιμη αναλογία

Μια χρήσιμη αναλογία Εργαλείο: όργανο ή αυτόματο σύστημα για πραγματοποίηση μιας εργασίας με «καλύτερο τρόπο» Μέθοδος τεχνική : μια τυπική βηματική περιγραφή δραστηριοτήτων για την παραγωγή ενός αποτελέσματος Διαδικασία : μέθοδος τεχνική σε συνδυασμό με εργαλεία που παράγει συγκεκριμένο προϊόν

Ιδιαιτερότητα του λογισμικού Εκτός από τα εργαλεία, τις τεχνικές και την αρχιτεκτονική προσέγγιση υπάρχει και ο άνθρωπος (παραγωγικότητα 1 έως 10) Το λογισμικό είναι πολύπλοκο Το λογισμικό απαιτεί προσαρμοστικότητα Το λογισμικό είναι άϋλο Το λογισμικό αλλάζει διαρκώς

ΠΟΛΥΠΛΟΚΟΤΗΤΑ

ΠΡΟΣΑΡΜΟΣΤΙΚΟΤΗΤΑ

ΤΟ ΛΟΓΙΣΜΙΚΟ ΕΊΝΑΙ ΑΫΛΟ

Κριτήρια επιτυχούς Λογισμικού Κάνει αυτό που σχεδιάστηκε να κάνει (τίποτε παραπάνω, τίποτε παρακάτω!!!) Σε λογικό χρόνο Με λογικό κόστος Έχει ποιότητα (χρηστικότητα, δυνατότητα επέκτασης/ συντήρησης)

Ποιοτικά Χαρακτηριστικά Προϊόντων Λογισμικού Ορθότητα (Correctness) Ένα πρόγραμμα είναι λειτουργικά ορθό όταν συμπεριφέρεται σύμφωνα με τις καταγεγραμμένες λειτουργικές απαιτήσεις. Αξιοπιστία (Reliability) Το λογισμικό θα πρέπει να μην προκαλεί φυσική ή οικονομική καταστροφή στην περίπτωση λάθους. (Η πιθανότητα το λογισμικό να συμπεριφέρεται σωστά σε ένα συγκεκριμένο χρονικό διάστημα) Αποδοτικότητα (Performance) Το πρόγραμμα δεν θα πρέπει να κάνει αλόγιστη χρήση των πόρων του συστήματος Ευχρηστία (Usability) Το πρόγραμμα θα πρέπει να έχει ένα εύχρηστο περιβάλλον επικοινωνίας με το χρήστη και κατάλληλη τεκμηρίωση

Ποιοτικά Χαρακτηριστικά Προϊόντων Λογισμικού Ευελιξία Συντηρησιμότητα (Maintainability) Σε περίπτωση αλλαγής των απαιτήσεων ένα πρόγραμμα θα πρέπει να μπορεί να εξελίσσεται για την κάλυψη των. Ελεγξιμότητα (Verifiability) Οι ιδιότητες ενός συστήματος λογισμικού θα πρέπει να μπορούν να ελεγχθούν εύκολα. Π.χ. η λειτουργική ορθότητα, ή η απόδοση πρέπει να μπορούν να ελεγχθούν με χρήση προσομοίωσης, ή μέσω τυπικών μεθόδων Δυνατότητα Επαναχρησιμοποίησης (Reusability) Ένα πρόγραμμα είναι επαναχρησιμοποιήσιμο εάν μπορεί να χρησιμοποιηθεί (ενδεχομένως με μικρές αλλαγές) για την ανάπτυξη άλλου προϊόντος λογισμικού. Φορητότητα (Portability) Το λογισμικό είναι φορητό εάν μπορεί να εκτελεστεί σε διαφορετικά περιβάλλοντα (λειτουργικά συστήματα, εξάρτηση από βάσεις).

Σημασία Χαρακτηριστικών Η σημασία κάθε χαρακτηριστικού εξαρτάται από το λογισμικό και το περιβάλλον στο οποίο πρόκειται να χρησιμοποιηθεί Σε ορισμένες περιπτώσεις κυριαρχούν ορισμένα χαρακτηριστικά Σε συστήματα ασφαλείας για παράδειγμα κύριο χαρακτηριστικό αποτελεί η αξιοπιστία Σε real-time συστήματα απαιτείται υψηλή απόδοση Σε portable συστήματα η χαμηλή κατανάλωση ενέργειας Το κόστος αυξάνει εκθετικά αν απαιτείται κάποιο από τα χαρακτηριστικά σε υψηλά επίπεδα

Ανάπτυξη Λογισμικού Ανάλυση: Συμφωνία με τους χρήστες για τις λειτουργίες που θα επιτελεί. Κατασκευή: Ανάπτυξη του προϊόντος σύμφωνα με τις απαιτήσεις της ανάλυσης. Έλεγχος: Επιβεβαίωση ότι το προϊόν ικανοποιεί τις ανάγκες των χρηστών.

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

Χαρακτηριστικά της ανάπτυξης λογισµικού Το αποτέλεσµα δεν είναι «ορατό» - µόνο το αποτέλεσµα της χρήσης του Η ανάπτυξη λογισµικού αλλάζει συνεχώς στόχο Μεταβάλλονται οι απαιτήσεις των χρηστών, Το περιβάλλον ανάπτυξης, καθώς και το υλικό συνεχώς εξελίσσονται Το περιβάλλον λειτουργίας του λογισµικού μεταβάλλεται ραγδαία

Λογισμικό και Περιβάλλον Σχέση μεταξύ του Λογισμικού και του χώρου στον οποίο αυτό αναπτύσσεται και χρησιμοποιείται

Μηχανικός Λογισμικού

Εργασίες και Αρμοδιότητες

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

Διοίκηση έργου Ένα έργο ανάπτυξης δεν περιορίζεται σε καθαρά τεχνικά θέματα, αλλά και σε άλλα όπως ο χρονοπρογραμματισμός του έργου, η κατάρτιση του προϋπολογισμού του, η στελέχωση της ομάδας ανάπτυξης, η οργάνωση της ομάδας ανάπτυξης, η παρακολούθηση της πορείας του έργου, η διαχείριση των κινδύνων κ.α. Όλες αυτές η δραστηριότητες αφορούν τη διοίκηση του έργου που είναι εξ ίσου σημαντικές όπως και οι βασικές. Ιδιαίτερα ο ρόλος του διοικητή έργου είναι κρίσιμος για την επιτυχή ολοκλήρωση των έργων. Προσόντα που θα πρέπει να διακρίνουν τον διοικητή έργου είναι: Επιχειρηματική αντίληψη. Τεχνικές γνώσεις. Γνώση διοίκησης έργων. Ικανότητες λήψης αποφάσεων. Ικανότητες παρακολούθησης διαδικασιών. Ικανότητα ανάλυσης λεπτομερειών. Ικανότητες οργάνωσης. Ικανότητες επικοινωνίας. Ηγετικές ικανότητες.

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

Διασφάλιση Ποιότητας Η επίτευξη υψηλής ποιότητας στο λογισμικό συνοδεύεται από μείωση του χρόνου ανάπτυξης. Ο χρόνος ανάπτυξης αυξάνεται όταν επιτυγχάνεται εξαιρετική ποιότητα σε ειδικές κατηγορίες του λογισμικού.

Μοντέλο Κύκλου Ζωής Λογισμικού Φάσεις σε σειρά (ΓΕΝΙΚΑ) Εργασίες ανά φάση Επίτευξη επιθυμητού αποτελέσματος (στόχος) ΣΥΛΛΗΨΗ ΚΑΤΑΣΚΕΥΗ ΧΡΗΣΗ - ΣΥΝΤΗΡΗΣΗ ΑΠΟΣΥΡΣΗ

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

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

Εργαλεία CASE CASE (Computer-Aided Software Engineering) Ένα Εργαλείο Λογισμικού CASE είναι ένα σύστημα (και το ίδιο εφαρμογή λογισμικού), το οποίο Υποστηρίζει την αυτοματοποίηση της ανάπτυξης λογισμικού Από την ανάλυση και σχεδιασμό μέχρι την τεκμηρίωση και τον έλεγχο σφαλμάτων (πλήρες σύστημα) Μέχρι τον σχεδιασμό (σύνηθες)

Ορισμός Μοντέλο Κύκλου Ζωής Λογισμικού είναι: Μια περιγραφή των διαδικασιών και των επιμέρους φάσεων και των εργασιών της κάθε φάσης από τις οποίες διέρχεται μια εφαρμογή, από τη [ Σύλληψη μέχρι την Απόσυρση ]

Στόχος μοντέλων Κύκλου Ζωής Λογισμικού Η καθοδήγηση του κατασκευαστή λογισμικού για την καλύτερη εκτέλεση των διαδικασιών ανάπτυξης Δηλαδή: Περισσότερο παραγωγική Λιγότερα σφάλματα Μικρότερο ρίσκο

Διαδικασία Επίλυσης Προβλημάτων είναι κάθε μία από τις ενέργειες που περιγράφεται σε ένα μοντέλο κύκλου ζωής. Τα βήματα κάθε τέτοιας διαδικασίας είναι: Αποτίμηση τρέχουσας κατάστασης (1) Ορισμός του προβλήματος (2) Επιλογή μιας λύσης (3) Υλοποίηση της λύσης (4) Ενσωμάτωση της λύσης στο Σύστημα (5)

Διάφορα Μοντέλα Κύκλου Ζωής Λογισμικού

Το μοντέλο του Καταρράκτη Το παλιότερο μοντέλο Διακριτές φάσεις Ακολουθιακή (σειριακή) εκτέλεση Παραγωγή συστατικών λογισμικού σε κάθε φάση που περατώνεται

Το μοντέλο του Καταρράκτη Κάθε φάση ολοκληρώνεται με μια εργασία επαλήθευσης των προϊόντων που παρήγαγε Στη συνέχεια αποφασίζεται η μετάβαση στην επόμενη φάση ή όχι. Για να ξεκινήσει μια φάση πρέπει να έχει ολοκληρωθεί πλήρως η προηγούμενη. Το λογισμικό είναι πλήρες από τη φάση της «Συνένωσης» και πέρα

Το μοντέλο του Καταρράκτη

Το μοντέλο Πρωτοτυποποίησης Ανάπτυξη λογισμικού σε στάδια Σε κάθε στάδιο φτιάχνεται ένα πρωτότυπο (Prototype) Οι διαδικασίες ανάπτυξης επαναλαμβάνονται για κάθε πρωτότυπο (επαναληπτικό μοντέλο) Το πρωτότυπο περιλαμβάνει τις βασικές μόνο λειτουργίες που προορίζεται να εκτελεί το λογισμικό. Κάθε πρωτότυπο δοκιμάζεται από τον πελάτη-χρήστη και βελτιώνεται με νέα έκδοση πρωτοτύπου (νέο πρωτότυπο)

Το μοντέλο Πρωτοτυποποίησης

Το μοντέλο Πρωτοτυποποίησης Πλεονέκτημα είναι η γρήγορη ανίχνευση αναγκών προβλημάτων πριν την ανάπτυξη μεγάλου μέρους του Λογισμικού Κατάλληλο για την ανάπτυξη εφαρμογών με αβεβαιότητα στις απαιτήσεις Εφαρμογές εξαρτημένες από το πελάτη-χρήστη, που αναπτύσσονται για πρώτη φορά, χωρίς προηγούμενη εμπειρία.

Το μοντέλο Λειτουργικής Επαύξησης 1. Κατάτμηση Λογισμικού σε ανεξάρτητα τμήματα 2. Ανάπτυξη κάθε τμήματος με βάση το μοντέλο Καταρράκτη (ακολουθιακή ανάπτυξη) Στην αρχική φάση Ανάλυσης η απόφαση για τα τμήματα που μοιραστεί το Λογισμικό. Με το πέρα της ανάπτυξης ενός τμήματος αυτό ενσωματώνεται στο συνολικό Λογισμικό.

Το μοντέλο Λειτουργικής Επαύξησης

Συζήτηση Τα παραπάνω μοντέλα έχουν ίδιες διαδικασίες ανάπτυξης λογισμικού Ακολουθιακή (σειριακή) εκτέλεση σε όλο ή σε μέρος του λογισμικού Προκαθορισμένες φάσεις και διαδικασίες από το μοντέλο Ένα κύκλο ζωής

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

Το Σπειροειδές μοντέλο 4 κατηγορίες εργασιών Προσδιορισμός στόχων Εντοπισμός επίλυση κινδύνων Εκτέλεση διαδικασιών ανάπτυξης Επαλήθευση Προγραμματισμός επόμενης φάσης

Το Σπειροειδές μοντέλο

Το Σπειροειδές μοντέλο Διαφορετικές διαδικασίες ανάπτυξης μπορούν να επιλεγούν για διαφορετικά τμήματα του λογισμικού Ουσιαστικά είναι μια γενίκευση των μοντέλων Λειτουργικής Επαύξησης + Πρωτοτυποποίησης Συνεχής καθορισμός λεπτομερειών υλοποίησης (σε αντίθεση με τα προηγούμενα μοντέλα) Δύσκολη η εφαρμογή του μοντέλου

Το μοντέλο του Πίδακα Προσέγγιση βασισμένη στην «Αντικειμενοστραφή» τεχνολογία. Οι έννοιες «Ανάλυση, Σχεδίαση, Κωδικοποίηση» επικαλύπτονται Παραγωγή επαναχρησιμοποιήσιμων μονάδων Χρήση μονάδων από μελλοντικά συστήματα

Το μοντέλο του Πίδακα Επικαλύψεις φάσεων Τονίζει τα επιθυμητά χαρακτηριστικά της μεθοδολογίας κατασκευής λογισμικού σύμφωνα με την Αντικειμενοστραφή λογική Δεξαμενή Συστατικών

Σύγχρονα μοντέλα ΠΡΟΣΠΑΘΟΥΝ ΝΑ ΔΩΣΟΥΝ Γενική κατεύθυνση εφαρμογής των ιδεών που ενσωματώνουν τα προηγούμενα μοντέλα Ελευθερία στο κατασκευαστή λογισμικού Εξάλειψη ογκωδέστατων παραδοτέων με σχέδια και προδιαγραφές που ήταν άχρηστα (αφού ήταν λευκά χαρτιά) Εξειδίκευση κατευθύνσεων στο εκάστοτε περιβάλλον ανάπτυξης, για το συγκεκριμένο πρόβλημα, για τον συγκεκριμένο κατασκευαστή, για τον συγκεκριμένο πελάτη, κτλ. Δεν είναι συνδεδεμένα με συγκεκριμένη μεθοδολογία ανάπτυξης λογισμικού

Σύγχρονα μοντέλα

Σύγκριση μοντέλων

Μοντέλα Ανάπτυξης Λογισμικού

Δομημένη προσέγγιση Ανάπτυξης

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

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

Αδυναμίες της Δομημένης προσέγγισης Παρόλα αυτά, δεν είναι μια άχρηστη ή εσφαλμένη προσέγγιση Η αντικειμενοστραφής προσέγγιση δεν έχει τη λύση σε όλα τα προβλήματα Πολλά από τα προβλήματα θα συνεχίζουν να υπάρχουν, ίσως σε μικρότερο βαθμό Η αντικειμενοστραφής Τεχνολογία είναι ένα καλύτερο εργαλείο για τους Κατασκευαστές

Αντικειμενοστραφής Τεχνολογία Ιστορική αναδρομή Πρώτη ιδέα στην δεκαετία του 60 Πρώτη γλώσσα Simula-67 ADA, Smalltalk, κ.α. Πολλές θεωρητικές αναλύσεις με παρεμφερή ορολογία Αναφορές στις πρακτικές πλευρές της προσέγγισης, στον προγραμματισμό Πρόσφατο μεγάλο ενδιαφέρον

Αντικειμενοστραφής Τεχνολογία Ορισμοί Object-oriented = Αντικειμενοστραφής «προσανατολισμένος σε αντικείμενα» Ανάπτυξη λογισμικού κατά την οποία τα «αντικείμενα» είναι οι βασικές δομικές μονάδες Αντικείμενο (object) Δομικό συστατικό ενός λογισμικού. Έχει Κατάσταση (περιγραφή στατικών ιδιοτήτων του αντικειμένου), Συμπεριφορά (τρόπος απόκρισης σε κλήσεις από το περιβάλλον), Ταυτότητα (μοναδική διάκριση του αντικειμένου από τα ομοειδή αντικείμενα).

Αντικειμενοστραφής Τεχνολογία Ορισμοί Αντικείμενο (object) από τεχνική άποψη είναι η συγχώνευση των εννοιών «εγγραφή» και της «διαδικασίας ή συνάρτησης» Άρα, Δεδομένα + Λειτουργικές μονάδες Το σύνολο των τιμών των μεταβλητών μιας Εγγραφής αποτελεί την Κατάσταση αυτής. Θυμίζουμε: Εγγραφή είναι συλλογή μεταβλητών μνήμης, που αποτελούν τη δομή της, και παίρνουν συγκεκριμένη τιμή κάθε χρονική στιγμή.

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

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

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

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