Προηγμένη Τεχνολογία Λογισμικού
Στόχοι:
Στόχος του μαθήματος είναι η μελέτη αρχών, τεχνικών και εργαλείων που χρησιμοποιούνται για την ανάπτυξη λογισμικού μεγάλης κλίμακας με έμφαση σε θέματα σχεδίασης αντικειμενοστρεφών συστήματων.
Αξιοποιώντας γλώσσες προγραμματισμού όπως η C++ και η Java, καθώς και την Ενοποιημένη Γλώσσα Μοντελοποίησης (UML) οι φοιτητές θα έχουν τη δυνατότητα να μελετήσουν την εφαρμογή των πλέον καθιερωμένων Αρχών Σχεδίασης (Design Principles), Προτύπων Σχεδίασης (Design Patterns) και Αναδομήσεων (Refactorings) για την αξιολόγηση της ποιότητας σχεδίασης και την επίλυση σχεδιαστικών/προγραμματιστικών προβλημάτων που συναντώνται στη βιομηχανία λογισμικού. Οι φοιτητές συμμετέχουν σε ομάδες ανάπτυξης λογισμικού αναπτύσσοντας λογισμικό συνεργατικά, προσομοιώνοντας πραγματικές βιομηχανικές διεργασίες και αξιοποιώντας σύγχρονα εργαλεία υποβοήθησης της διαδικασίας ανάπτυξης (Computer-Aided Software Engineering tools). Στα πλαίσια του μαθήματος πραγματοποιείται αναφορά στα ανοιχτά ερευνητικά προβλήματα της Τεχνολογίας Λογισμικού μέσω της ανάλυσης επιλεγμένων ερευνητικών εργασιών.
Δεξιότητες:
Με την επιτυχή περάτωση του μαθήματος ο φοιτητής θα είναι σε θέση:
να εφαρμόζει τεχνικές και εργαλεία για την ανάλυση, σχεδίαση και υλοποίηση κατανοητών, συντηρήσιμων και επαναχρησιμοποιήσιμων συστημάτων λογισμικού
να πραγματοποιεί συντήρηση έργων λογισμικού
να αξιολογεί την ποιότητα σχεδίασης συστημάτων λογισμικού
να αναπτύσσει λογισμικό συνεργατικά
Προαπαιτήσεις:
-εξοικείωση με τον αλγοριθμικό τρόπο επίλυσης προβλημάτων
-γνώση μιας αντικειμενοστρεφούς γλώσσας προγραμματισμού
-γνώση βασικών δομών δεδομένων
Περιεχόμενο μαθήματος:
Εισαγωγή στην Τεχνολογία Λογισμικού. Προκλήσεις στην ανάπτυξη λογισμικού μεγάλης κλίμακας
Ταχεία Επισκόπηση εννοιών αντικειμενοστρεφούς προγραμματισμού: Java
Ευέλικτες Μεθοδολογίες Ανάπτυξης Λογισμικού (Agile Methods)
Επισκόπηση της Ενοποιημένης Γλώσσας Μοντελοποίησης (UML)
Αντικειμενοστρεφής Ανάλυση και Σχεδίαση (Μεθοδολογία ICONIX)
Συνεργατική Ανάπτυξη Λογισμικού. Συστήματα Ελέγχου Εκδόσεων
Αρχές Αντικειμενοστρεφούς Σχεδίασης (Design Principles)
Πρότυπα Σχεδίασης (Design Patterns)
Ευρετικοί Κανόνες Σχεδίασης (Design Heuristics)
Αναδόμηση Λογισμικού (Software Refactoring)
Ποιότητα Λογισμικού. Μετρικές Λογισμικού.
Εμπειρικές Μελέτες στην Τεχνολογία Λογισμικού
Εργαλεία Computer-Aided Software Engineering (CASE tools)
Μελέτη Περιπτώσεων (Case Studies): Αξιολόγηση ποιότητας σχεδίασης συστημάτων λογισμικού. Εφαρμογή αρχών σχεδίασης στην ανάπτυξη λογισμικού για φορητές υπολογιστικές συσκευές (Android)
Προτεινόμενη βιβλιογραφία:
Gamma, E., Helm R., Johnson, R., Vlissides, J. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.
Fowler, M., Beck, K., Brant, J., Opdyke, W., Roberts, D., Refactoring: Improving the Design of Existing Code. Addison Wesley, 1999.
Martin, R.C., Agile Software Development: Principles, Patterns and Practices. Prentice Hall, 2003.
Rosenberg, D., Stephens, M., Use Case Driven Object Modeling with UML: Theory and Practice, Apress, 2007.
Μέθοδοι αξιολόγησης:
50% τελική γραπτή εξέταση
50% 2 ατομικές και 2 ομαδικές εργασίες