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

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

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

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

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

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

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

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

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

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

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

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

10α Έλεγχος και επαλήθευση λογισμικού

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

UML: Unified modelling language

Δομή και Στόχοι του Μαθήματος - Εισαγωγή

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

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

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

12 Έλεχος και επαλήθευση λογισμικού

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

Αρχές Προγραμματισμού Υπολογιστών

03 Τεχνική διαχείριση έργων λογισμικού

Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές

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

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

09 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εαρινό εξάμηνο

Ελληνικό Ανοικτό Πανεπιστήµιο Εισαγωγή στη Ενοποιηµένη Προσέγγιση Unified Process (UP) ρ. Πάνος Φιτσιλής

02α Διαχείριση Έργων Λογισμικού

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

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

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

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

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

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

Τεχνολογία λογισμικού στην πράξη

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

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

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

Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής

06 Αντικειμενοστρεφής ανάλυση και σχεδιασμός

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

Εισαγωγή στην Ανάπτυξη Πληροφοριακών Συστημάτων

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

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

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

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

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

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

Rational Unified Process:

Ανάλυση Περιπτώσεων Χρήσης

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

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

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

περιεχόμενα παρουσίασης

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

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

Ανάπτυξη εφαρμογών σε κινητά και ταμπλέτες: ανάγκες και προϋποθέσεις. Κώστας Φλώκος Γενικός Διευθυντής Upcom

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

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

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

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

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

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

Μοντελοποίηση Πεδίου

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

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

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 8 ο & 9 ο Εργαστήριο -

Α.Ε.Ι. Πειραιά Τ.Τ. Τμήμα Μηχανικών Αυτοματισμού Τ.Ε. Διαχείριση Έργων Αυτοματισμού και Πληροφορικής

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

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

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

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

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

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

Εισαγωγή στην πληροφορική

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

Διαχείριση Ετερογενών Δικτύων

BPMN Abstraction Tool ΠΑΡΟΥΣΙΑΣΗ ΕΡΓΑΛΕΙΟΥ ΑΦΑΙΡΕΣΗΣ ΕΠΙΧΕΙΡΗΣΙΑΚΩΝ ΔΙΑΔΙΚΑΣΙΩΝ

Περιγραφή Μαθήματος. Περιγραφή Περιεχόμενο του Μαθήματος

Εισαγωγή στην Ανάπτυξη Πληροφοριακών Συστημάτων

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

Η στοίβα (stack) H στοίβα είναι ένας αποθηκευτικός χώρος οργανωµένος κατά τέτοιο τρόπο ώστε να υποστηρίζει δύο βασικές λειτουργίες:

Μοντέλα. χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες.

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

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

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

Δομημένος Προγραμματισμός

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

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

Αντικειμενοστρεφής Προγραμματισμός

ΑΝΑΡΤΗΤΕΑ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

Διάλεξη 17: Έλεγχος Λογισμικού

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία

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

Transcript:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τεχνολογία Λογισμικού, 7ο/9ο εξάμηνο 2018-2019 Τεχνολογία Λογισμικού Ν.Παπασπύρου, Αν.Καθ. ΣΗΜΜΥ, nickie@softlab.ntua,gr Β.Βεσκούκης, Αν.Καθ. ΣΑΤΜ, v.vescoukis@cs.ntua,gr Κ.Σαΐδης, ΠΔ 407, saiko@softlab.ntua.gr

Καλώς ήλθατε! Β.Βεσκούκης Δρ. ΗΜΜΥ (1995 ) Αν.Καθ., Σχολή ΑΤΜ "Τεχνολογία Λογισμικού στη Γεωπληροφορική" ETH Zurich (visiting professor, 2014) Groningen (NL), (visiting professor 2015) Ελληνικό Ανοικτό Πανεπιστήμιο, ΠΛΗ, ΠΛΣ Πανεπιστήμιο Πειραιά users.ntua.gr/vvesk, www.linkedin.com/in/vvescoukis/

Hello!

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

Συστατικά Λογισμικού Software {components, elements, artifacts} είναι ΌΛΑ τα παρακάτω: Πηγαίος κώδικας Προδιαγραφές, εκθέσεις, αναφορές, κείμενα γενικά Σχέδια Διαγράμματα Ο,τιδήποτε υποστηρίζει / τεκμηριώνει / συμπληρώνει τα παραπάνω

Τι αφορά η Τεχνολογία λογισμικού; Τι ΔΕΝ αφορά Μικρές εφαρμογές λογισμικού για χρήση σε μη-"κρίσιμες αποστολές" Εργασίες σε μαθήματα προγραμματισμού (σε γενικές γραμμές) Ο,τιδήποτε φαίνεται "βατό" (ή ενός περιορισμών) για υλοποίηση με τη λογική "Ανάλυση-> προγραμματισμός" Τι αφορά Λογισμικό μεγάλης κλίμακας Εφαρμογές για "κρίσιμες αποστολές"

Τεχνολογία λογισμικού: Τεχνολογία: «Λόγος περί Τέχνης» Περιγραφή του τρόπου (τέχνης!) υλοποίησης τεχνικών κατασκευών, εν προκειμένω του Λογισμικού. Λογισμικό και άλλες τεχνικές κατασκευές Τεχνικές κατασκευές Εχουν υλική υπόσταση Περιγράφονται και γίνονται αντιληπτές με μοναδικό τρόπο Το Λογισμικό είναι μια ιδεατή οντότητα: δεν υπάρχει με την έννοια της ύλης Γίνεται αντιληπτό από τα αποτελέσματα της χρήσης του Δεν περιγράφεται εύκολα και μοναδικά

Το λογισμικό στο περιβάλλον του ΕΥΡΥΤΕΡΟ ΠΕΡΙΒΑΛΛΟΝ ΧΡΗΣΗΣ ΛΟΓΙΣΜΙΚΟΥ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗΣ ΛΟΓΙΣΜΙΚΟΥ ΑΝΑΓΚΗ & ΣΥΛΛΗΨΗ ΛΟΓΙΣΜΙΚΟΥ ΠΕΡΙΓΡΑΦΗ ΛΟΓΙΣΜΙΚΟ ΣΧΕΔΙΑΣΗ ΘΕΜΑΤΙΚΟ ΠΕΔΙΟ ΛΟΓΙΣΜΙΚΟΥ ΥΛΟΠΟΙΗΣΗ ΕΠΗΡΡΕΑΖΕΙ ΕΞΕΛΙΞΗ

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

... Ετσι και στο λογισμικό: επιδιώκουμε τον προσδιορισμό των στοιχείων που (πρέπει να) το αποτελούν, ώστε να το κατασκευάσουμε «σωστά» Συναρτήσεις, διαδικασίες, κλάσεις, υπορουτίνες, modules, πακέτα, εντολές, δεδομένα, κλπ Χωρίς δυνατότητα αντίληψης της ίδιας της κατασκευής δια των αισθήσεων, αλλά μόνο δια του αποτελέσματος... Εντός χρόνου, κόστους και ποιότητας

"...προσδιορισμός των στοιχείων του λογισμικού"

"...προσδιορισμός των στοιχείων του λογισμικού"

"...προσδιορισμός των στοιχείων του λογισμικού"

Κρίση λογισμικού (όρος του 1968!) Εξαιρετικά δύσκολη διαδικασία κατασκευής Ανεπαρκής ή και κακή ποιότητα τελικού προϊόντος Δεν είναι πάντα σαφές ποια βήματα πρέπει να γίνουν, με ποια σειρά, με ποια ενδιάμεσα προϊόντα κλπ Λάθη στην κατασκευή, μη ικανοποίηση του σκοπού Μη τήρηση χρονοδιαγραμμάτων Υπερβολικές και "αδικαιολόγητες" καθυστερήσεις Υπερβάσεις προϋπολογισμών Κακές αρχικές εκτιμήσεις κόστους. Τελικά προϊόντα με πολλαπλάσιο κόστος από το αρχικά προϋπολογισθέν Μεγάλη δυσκολία και συνεπαγόμενο κόστος συντήρησης Παρενέργειες μεταβολών σε στοιχεία που πριν λειτουργούσαν, πρόχειρες λύσεις Δύσκολη κατανόηση εγγράφων, σχεδίων κλπ από διαφορετικούς κατασκευαστές Στην πράξη η κατανόηση ενός συστήματος λογισμικού από τρίτους πλην των κατασκευαστών του, είναι συχνά αδύνατη ή ιδιαίτερα ασύμφορη

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

Τις πταίει; Κάθε ένας από τους συμμετέχοντες έχει διαφορετικές εμπειρίες, βιώματα, αφετηρίες, στόχους και επιδιώξεις από την υλοποίηση του (ίδιου!) έργου. Είναι δύσκολο να επιτευχθεί ένας κοινός τόπος, σωστά ιεραρχημένος για το όφελος του έργου και, συνάμα, ικανοποιητικός για όλους τους συμμετέχοντες. Πολυπλοκότητα! Robert L. Glass, "Facts and Fallacies of Software Engineering" Most software estimates are performed at the beginning of the life cycle. This makes sense until we realize that estimates are obtained before the requirements are defined and thus before the problem is understood. Estimation, therefore, usually occurs at the wrong time.

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

Αντικείμενα ενασχόλησης της ΤΛ Να περιγράψουμε Τι πρέπει να κάνουμε, Πώς να το κάνουμε Τι θα παράξουμε, Πώς θα το περιγράψουμε Στην πορεία... Από τη σύλληψη - απαίτηση κατασκευής Έως τη χρήση του λογισμικού Μεθοδολογικά εργαλεία δουλειάς, μακρο- και μικρο- οργάνωσης: εργασίες, μοντέλα κύκλου ζωής, πρότυπα, προδιαγραφές, σχέδια, μοντέλα παράστασης λογισμικού, κλπ

Τεχνολογία λογισμικού Δι-επιστημονική περιοχή Προγραμματισμός Υλικό Δίκτυα User interfaces Βάσεις δεδομένων Τεχνολογία πληροφοριών γενικότερα ΑΛΛΑ και πεδίο επιχειρηματικής δραστηριότητας Ανταγωνισμός Κόστος παραγωγής Τεχνογνωσία

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

Αντικείμενο της τεχνολογίας λογισμικού είναι... Η επιστημονική θεμελίωση Του κύκλου ζωής Της διαδικασίας παραγωγής Του τρόπου περιγραφής Του τρόπου συντήρησης Του οργανωτικού πλαισίου χρήσης του Λογισμικού Οι εργασίες αυτές είναι ιδιαίτερα δύσκολες: Από τη φύση και την πολυπλοκότητα του Λογισμικού Από την υπόστασή του ως προϊόν

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

Αφαίρεση (abstraction): μια κεντρική έννοια

Αφαίρεση (abstraction) λογισμικό

Πλάνο μαθήματος

03.10.2018 Διεξαγωγή του μαθήματος Θεματολογία, πλάνο Κύκλος ζωής λογισμικού Διαχείριση έργων λογισμικού (Ι) 10.10.2018 Μοντέλα και μεθοδολογίες Περιβάλλοντα ανάπτυξης Διαχείριση έργων λογισμικού (ΙΙ) Φροντιστήριο: GIT 17.10.2018 Ανάλυση απαιτήσεων Ι (εισαγωγή, είδη απαιτήσεων, συνοπτικά) Δομημένη ανάλυση και σχεδιασμός (συνοπτικά) 1η συζήτηση για την εργασία Αντικειμενοστρεφής ανάλυση και σχεδιασμός Φροντιστήριο JVM technology

24.10.2018 Ανάλυση απαιτήσεων ΙΙ (πρότυπα, requirements engineering) Αρχιτεκτονικά πρότυπα λογισμικού 31.10.2018 UML - Visual Paradigm CE Αρχιτεκτονικά πρότυπα στον παγκόσμιο ιστό, Δομικά πρότυπα σχεδίασης 07.11.2018 UML, ISO/IEC/IEEE standards Κατασκευαστικά πρότυπα σχεδίασης, RESTful APIs, AJAX, MVVM, JDBC 14.11.2018 Invited lecture I 21.11.2018 Εργαστήριο για την εργασία Φροντιστήριο: Gradle, Java web app με χρήση gradle 28.11.2018 Front-end UI toolkits Google maps APIs, OpenLayers

05.12.2018 Invited lecture II 12.12.2018 Διασφάλιση ποιότητας λογισμικού, Ανίχνευσιμότητα απαιτήσεων και σχεδιαστικών αποφάσεων Πρότυπα σχεδίασης συμπεριφοράς, αναδιάρθρωση κώδικα 19.12.2018 Recap, απορίες, συζήτηση για εργασίες κλπ Ελεγχος και επαλήθευση κώδικα Spock testing framework

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

Μοντέλα ανάπτυξης λογισμικού Ακολουθιακή διαδικασία sequential Μοντέλο Καταρράκτη waterfall Επαναληπτική διαδικασία iterative Αυξητική διαδικασία incremental Ευέλικτη διαδικασία agile 32

Μεθοδολογίες ανάπτυξης λογισμικού Ταχεία Πρωτοτυποίηση Rapid prototyping. «Ακραίος Προγραμματισμός» Extreme Programming. Ανάπτυξη βασισμένη σε ελέγχους Test driven Development. Συνεχής παράδοση Continuous Delivery Ανάπτυξη / Λειτουργία «DevOps». 33

Ανάλυση απαιτήσεων Ανάλυση και μοντελοποίηση απαιτήσεων Σύνταξη προδιαγραφών και παραδοτέων 34

Σχεδιασμός Λογισμικού Βασικές αρχές Αντικειμονοστρεφής σχεδιασμός συστημάτων Συστατικά λογισμικού 35

Γλώσσα μοντελοποίησης UML Διαγράμματα κλάσεων Class diagrams Διαγράμματα ακολουθιών Sequence diagrams Διαγράμματα δραστηριοτήτων Activity diagrams Διαγράμματα σεναρίων χρήσης Use case diagrams κτλ. 36

Εργαλείο: Visual Paradigm (CE) Πρότυπο: ISO/IEC/IEEE 29148/2011 37

Πρότυπα Σχεδίασης Design Patterns Κατασκευαστικά πρότυπα Creational patterns Δομικά πρότυπα Structural patterns Πρότυπα συμπεριφοράς Behavioral patterns 38

Αρχιτεκτονική Λογισμικού Αρχιτεκτονικός σχεδιασμός σύνθετων κατανεμημένων συστημάτων Βασικές έννοιες Έμφαση σε εφαρμογές διαδικτύου Αρχιτεκτονική REST Representation State Transfer Ανάπτυξη RESTful Application Programming Interfaces APIs Θέματα ασφάλειας Θέματα απόδοσης 39

Σχεδιασμός διεπαφής χρήστη Ευχρηστία, διαδραστικότητα και αποκρισιμότητα Σύγχρονες μεθοδολογίες ανάπτυξης διεπαφής χρήστη Πρότυπα σχεδίασης Model View Controller και Observable Έμφαση σε τεχνολογίες εφαρμογών διαδικτύου HTML5, CSS3, Javascript Εφαρμογές μιας σελίδας Single page applications Ασύγχρονες τεχνικές AJAX, Promises, Reactive frameworks 40

Διοίκηση και Διαχείριση Έργου Λογισμικού Διοίκηση έργου γενικά Εισαγωγή και βασικές έννοιες Εκτίμηση κόστους έργου Διοίκηση ομάδας ανάπτυξης λογισμικού Συνήθεις ρόλοι σε μια ομάδα ανάπτυξης λογισμικού Αλληλεπιδράσεις μεταξύ ρόλων Καλές διεθνείς πρακτικές 41

Τεχνικές και Εργαλεία Διοίκησης, Παρακολούθησης και Ελέγχου της Ανάπτυξης Λογισμικού Έλεγχος εκδόσεων Version Control Έμφαση στο σύστημα Git το πλέον διαδεδομένο Version Control System Αυτοματισμός διαδικασίας «χτισίματος» λογισμικού Build automation Έμφαση στο σύστημα Gradle χρησιμοποιείται στην ανάπτυξη Android εφαρμογών Ανάλυση προγράμματος program analysis και αυτόματος εντοπισμός σφαλμάτων bug detection 42

Σενάρια ελέγχου Unit testing, Regression testing, Functional testing, Integration testing, test coverage Συνεχής ολοκλήρωση Continuous integration Αξιοπιστία λογισμικού Η έννοια του «τεχνικού/σχεδιαστικού χρέους» technical debt. 43

Διαχείριση συστατικών του λογισμικού Συστατικά λογισμικού και αλληλεξαρτήσεις τους software components and dependencies Αποθήκες συστατικών λογισμικού Software artifact repositories Διαχείριση εκδόσεων λογισμικού software releases Μέθοδοι αρίθμησης εκδόσεων versioning schemes 44