Τεχνολογία Λογισμικού 2018-20 (TMA567)
Γεώργιος Δροσάτος
Το μάθημα της «Τεχνολογίας Λογισμικού» έχει ως σκοπό να εξοικειώσει τους φοιτητές με την μηχανική λογισμικού (Software Engineering) και να εισάγει τη μεθοδολογία και τις απαραίτητες τεχνικές σχεδίασης, ανάπτυξης, υλοποίησης, δοκιμής και εγκατάστασης μεγάλων έργων λογισμικού. Στα πλαίσια του μαθήματος θα παρουσιαστούν οι μεθοδολογίες και οι τεχνικές που σχετίζονται με τον κύκλο ζωής του λογισμικού και αφορούν την διαχείριση έργων λογισμικού, την ανάλυση απαιτήσεων και την μοντελοποίηση λογισμικού, τον έλεγχο αξιοπιστίας και την εγκατάσταση προϊόντων λογισμικού. Απώτερος στόχος του μαθήματος είναι να παρέχει στους συμμετέχοντες την πρώτη εμπειρία τους στην ανάπτυξη λογισμικού σε ομάδες μέσα από μια σειρά μεθοδευμένων εργαστηριακών ασκήσεων.
ΛιγότεραΤο μάθημα της «Τεχνολογίας Λογισμικού» έχει ως σκοπό να εξοικειώσει τους φοιτητές με την μηχανική λογισμικού (Software Engineering) και να εισάγει τη μεθοδολογία και τις απαραίτητες τεχνικές σχεδίασης, ανάπτυξης, υλοποίησης, δοκιμής και εγκατάστασης μεγάλων έργων λογισμικού. Στα πλαίσια του μαθήματος θα παρουσιαστούν οι μεθοδολογίες και οι τεχνικές που σχετίζονται με τον κύκλο ζωής του λογισμικού και αφορούν την διαχείριση έργων λογισμικού, την ανάλυση απαιτήσεων και την μοντελοποίηση λογισμικού, τον έλεγχο αξιοπιστίας και την εγκατάσταση προϊόντων λογισμικού. Απώτερος στόχος του μαθήματος είναι να παρέχει στους συμμετέχοντες την πρώτη εμπειρία τους στην ανάπτυξη λογισμικού σε ομάδες μέσα από μια σειρά μεθοδευμένων εργαστηριακών ασκήσεων.
Το μάθημα της «Τεχνολογίας Λογισμικού» έχει ως σκοπό να εξοικειώσει τους φοιτητές με την μηχανική λογισμικού (Software Engineering) και να εισάγει τη μεθοδολογία και τις απαραίτητες τεχνικές σχεδίασης, ανάπτυξης, υλοποίησης, δοκιμής και εγκατάστασης μεγάλων έργων λογισμικού. Στα πλαίσια του μαθήματος θα παρουσιαστούν οι μεθοδολογίες και οι τεχνικές που σχετίζονται με τον κύκλο ζωής του λογισμικού και αφορούν την διαχείριση έργων λογισμικού, την ανάλυση απαιτήσεων και την μοντελοποίηση λογισμικού, τον έλεγχο αξιοπιστίας και την εγκατάσταση προϊόντων λογισμικού. Απώτερος στόχος του μαθήματος είναι να παρέχει στους συμμετέχοντες την πρώτη εμπειρία τους στην ανάπτυξη λογισμικού σε ομάδες μέσα από μια σειρά μεθοδευμένων εργαστηριακών ασκήσεων.
Αντικείμενα ενασχόλησης:
- Εισαγωγή
- Ορισμός της έννοιας του Λογισμικού
- Τι είναι η τεχνολογία λογισμικού;
- Ιδιαιτερότητες του λογισμικού
- Ποιοτικό λογισμικό
- Ανάπτυξη λογισμικού με μια ματιά
- Πως γίνεται η ανάπτυξη λογισμικού;
- Δραστηριότητες ανάπτυξης
- Κόστος ανάπτυξης και διόρθωσης σφαλμάτων
Αντικείμενα ενασχόλησης:
- Διαχείριση έργων λογισμικού
- Ορισμοί
- Βασικές έννοιες
- Βασικά εργαλεία
- Μοντέλα και μεθοδολογίες ανάπτυξης λογισμικού
- Μοντέλο καταρράκτη
- Αυξητικό μοντέλο
- Επαναληπτικό μοντέλο
- Πρωτοτυποποίηση
- Σπειροειδές μοντέλο
- Rational Unified Process
- Ευέλικτη διαδικασία (agile)
- Scrum
- DevOps
Αντικείμενα ενασχόλησης:
- Οι απαιτήσεις λογισμικού και τα είδη τους
- Ανάλυση απαιτήσεων και σύνταξη προδιαγραφών
- Ο ρόλος του επικεφαλής μηχανικού (Software Architect)
- Μοντελοποίηση απαιτήσεων/προδιαγραφών & σχεδιασμού
- Σχεδιαστικές αρχές λογισμικού
Αντικείμενα ενασχόλησης:
- Αντικειμενοστράφεια (με παραδείγματα σε Java, Javascript)
- Ενθυλακώνουν (encapsulate)
- Kατάσταση (state): δεδομένα που τηρούνται σε πεδία
- Συμπεριφορά (behavior): λειτουργίες που τηρούνται σε μεθόδους (behavior)
- Στιγμιοτύπιση (instantiation)
- Μέσω κατασκευαστών (constructors)
- Αυτο‐αναφορά (this, self)
- Ανταλλαγή μηνυμάτων (message passing)
- Ενθυλακώνουν (encapsulate)
- Εισαγωγή στη UML
Αντικείμενα ενασχόλησης:
- Αρχιτεκτονική λογισμικού
- Ποιοτικά χαρακτηριστικά κατανεμημένων συστημάτων
- Αρχιτεκτονικά στυλ και πρότυπα (architectural styles & patterns)
Αντικείμενα ενασχόλησης:
- Ο Παγκόσμιος Ιστός
- Διεπαφές χρήστη στον Παγκόσμιο Ιστό
- Η τεχνική AJAX
- Ο μορφότυπος JSON
- Υπηρεσιοστραφής αρχιτεκτονική (Service‐oriented architecture)
- Το αρχιτεκτονικό στυλ REST
Αντικείμενα ενασχόλησης:
- Διαχείριση εκδόσεων κώδικα (version control)
- Αυτόματο "χτίσιμο" λογισμικού (build automation)
- Στατική ανάλυση κώδικα και αυτόματος εντοπισμός σφαλμάτων (bug detection)
- Eκτέλεση σεναρίων ελέγχου (tests)
- Συνεχής ολοκλήρωση (continuous integration)
- Διαχείριση συστατικών λογισμικού και των εκδόσεών τους
Αντικείμενα ενασχόλησης:
- Εισαγωγή στον πολυνηματικό προγραμματισμό
- Διεργασίες (processes)
- Νήματα (threads)
- Εισαγωγή στο Java Virtual Machine (JVM)
- Προγραμματιστική διαχείριση των νημάτων
- Κατάσταση ενός νήματος
- Deamon threads
- Νήματα και γραφικές διεπαφές χρήστη
- Συγχρονισμός (synchronization)
- Χειρισμός αδιεξόδων (deadlocks)
Αντικείμενα ενασχόλησης:
- Στοιχεία και χαρακτηριστικά της γλώσσας UML
- Μοντελοποίηση συμπεριφοράς
- Διαγράμματα περιπτώσεων χρήσης (Use‐case diagrams)
- Διαγράμματα δραστηριότητας (Activity diagrams)
- Διαγράμματα μηχανών κατάστασης (State machine diagrams)
- Διαγράμματα ακολουθίας (Sequence diagrams)
- Διαγράμματα επικοινωνίας (Communication diagrams)
- Διαγράμματα χρονισμού (Timing diagrams)
- Μοντελοποίηση δομής
- Διαγράμματα κλάσεων (Class diagrams)
- Διαγράμματα συστατικών (Component diagrams)
- Διαγράμματα πακέτων (Package diagrams)
- Διαγράμματα "παράταξης / εγκατάστασης" (Deployment diagrams)
- Διαγράμματα σύνθετης δομής (Composite structure diagrams)
Αντικείμενα ενασχόλησης:
- Ελαττώματα (defects, bugs)
- Κύκλος ζωής δοκιμασιών (test life‐cycle)
- Πλάνο δοκιμασιών (test plan)
- Σενάριο δοκιμής
- Test scripts
- Επίπεδα δοκιμασιών
- Μοναδιαία δοκιμασία (unit test)
- Δοκιμασία ολοκλήρωσης (integration test)
- Δοκιμασία συστήματος (system test)
- Δοκιμασία αποδοχής (acceptance test)
- Μέθοδοι εκτέλεσης δοκιμασιών
- Άλλοι τύποι δοκιμασιών
- Smoke testing
- Functional testing
- Usability testing
- Security testing
- ...
Αντικείμενα ενασχόλησης:
- Βελτίωση των μη λειτουργικών χαρακτηριστικών
- Ωρίμανση του λογισμικού
- Οσμές (code smells)
- Τεχνικό χρέος (technical debt)
- Τεχνικές refactoring
Αντικείμενα ενασχόλησης:
- Θέματα ασφάλειας στο διαδίκτυο:
- Έννοιες
- Υπηρεσίες ασφάλειας
- Επιθέσεις
- Κρυπτογραφικές τεχνικές
- Θέματα ιδιωτικότητα (privacy)
Ημερολόγιο
Ανακοινώσεις
- Πέμπτη, 03 Σεπτεμβρίου 2020
- Τετάρτη, 20 Μαρτίου 2019