Μηχανική Λογισμικού για Εφαρμογές Μεγάλης Κλίμακας

Software Engineering for Large-Scale Applications – SE

Υπεύθυνος Μαθήματος: Γ. Κακαρόντζας,   Μονάδες ECTS: 7.5,   Εξάμηνο: Α (Α)

Περιεχόμενο

Εισαγωγή στην αντικειμενοστραφή ανάλυση και σχεδίαση. Διαδικασίες ανάπτυξης λογισμικού. Επαναληπτική και αυξητική ανάπτυξη λογισμικού με την UP. Ευέλικτες διαδικασίες ανάπτυξης λογισμικού. Ανάλυση. Απαιτήσεις και το μοντέλο FURPS+. Εννοιολογικό μοντέλο και περιπτώσεις χρήσης. Διαγράμματα ακολουθίας συστήματος. Συμβόλαια λειτουργιών. Σχεδίαση λογισμικού. UML. Διαγράμματα κλάσεων και ακολουθίας. Ανάπτυξη λογισμικού και αντιστοίχιση των αντικειμενοστραφών εννοιών στη γλώσσα προγραμματισμού Java. Πρότυπα ανάθεσης αρμοδιοτήτων σε αντικείμενα (GRASP). Σχεδίαση συστημάτων με βάση αρμοδιότητες (responsibility-driven design). Domain-driven design. Σχεδιαστικά πρότυπα (design patterns): πρότυπα δημιουργίας αντικειμένων, δομικά πρότυπα και συμπεριφορικά πρότυπα. Παραδείγματα προτύπων σε πραγματικό λογισμικό. Μετρικές πολυπλοκότητας σχεδίασης λογισμικού. Μετρικές Chidamber και Kemerer. Άλλες αντικειμενοστραφείς μετρικές. Παραδείγματα μετρικών από έργα ανοιχτού λογισμικού. Εισαγωγή στον έλεγχο λογισμικού. Ορισμοί της διαδικασίας ελέγχου λογισμικού. Έλεγχος μονάδων και λειτουργικός έλεγχος. Διασφάλιση ορθότητας με έλεγχο μονάδων και κάλυψη ελέγχων μονάδων. Πλαστά αντικείμενα (mock objects). Λειτουργικός έλεγχος. Αρχιτεκτονική λογισμικού. Ορισμοί και ρόλοι. Τεχνολογίες και αρχιτεκτονικές. Ποιοτικές ιδιότητες (Αξιοπιστία (Reliability), Διαθεσιμότητα (Availability), Φορητότητα (Portability), Δυνατότητα Κλιμάκωσης (Scalability), Απόδοση (Performance)). Ενδιάμεσο λογισμικό κατανεμημένων εφαρμογών διαδικτύου (middleware). Message Oriented Middleware. Εισαγωγή στις πολύ-στρωματικές (multi-tiered) και πολύ-επίπεδες (multi-layered) εφαρμογές με την Java Enterprise Edition. Κατανεμημένες εφαρμογές διαδικτύου με τη Java Enterprise Edition. Χειρισμός ποιοτικών ιδιοτήτων όπως η απόδοση και η δυνατότητα κλιμάκωσης. Λογισμικό ως Υπηρεσία (Software as a Service – SaaS). Προγραμματιστικές διασυνδέσεις (APIs). Service Oriented Architecture (SOA). Ανάπτυξη SaaS με την Java Enterprise Edition. Διασφάλιση ευκολίας τροποποίησης & ασφάλειας σε εφαρμογές Java Enterprise Edition. Διαδικασίες αρχιτεκτονικής λογισμικού και τεκμηρίωση αρχιτεκτονικών λογισμικού.

Προτεινόμενη Βιβλιογραφία

  • Βασίλης Γερογιάννης, Γιώργος Κακαρόντζας, Αχιλλέας Καμέας, Γιάννης Σταμέλος, Πάνος Φιτσιλής: «Αντικειμενοστρεφής ανάπτυξη λογισμικού με τη UML», Κλειδάριθμος, 2006
  • Craig Larman: «Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition)», Prentice Hall, 2004
  • Felix Bachmann, Len Bass, Paul C. Clements, David Garlan, James Ivers, Reed Little, Paulo Merson, Robert Nord, Judith A. Stafford : « Documenting Software Architectures: Views and Beyond, Second Edition», Addison-Wesley Professional, 2010
  • Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides: «Design Patterns: Elements of Reusable Object-Oriented Software», Addison-Wesley, 1995
  • Lanza, Michele, Marinescu, Radu: «Object-Oriented Metrics in Practice», Springer-Verlag Berlin Heidelberg, 2006
  • Chidamber, S.R. and Kemerer, C.F.: «A metrics suite for object oriented design», IEEE Transactions on Software Engineering, vol.20, no.6, pp.476,493, June 1994
  • Armando Fox και David Patterson: «Τεχνολογία Ανάπτυξης Λογισμικού ως Υπηρεσίας: Μια ευέλικτη προσέγγιση με χρήση υπολογιστικής νέφους», Εκδόσεις Κλειδάριθμος, 2017.
  • Ian Sommerville: «Τεχνολογία Προϊόντων Λογισμικού: Μια εισαγωγή στη σύγχρονη τεχνολογία λογισμικού», Εκδόσεις Κλειδάριθμος (για την Ελληνική γλώσσα), 2020.