ΓΕΝΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ:Διδάσκοντες: Δροσάτος Γεώργιος
Εξάμηνο: 6ο Εξάμηνο
ΔΙΔΑΚΤΙΚΕΣ ΜΟΝΑΔΕΣ:

Μονάδες ECTS: 3
Διδακτικές Μονάδες: 4
Ώρες Θεωρίας: 2
Ώρες Ασκήσεων: 1
Ώρες Εργαστηρίου: 2

ΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ:https://eclass.duth.gr/courses/TMA567/

Περιγραφή Μαθήματος

• Εισαγωγή στη μηχανική λογισμικού: Ορισμός της έννοιας του Λογισμικού. Τι είναι η τεχνολογία λογισμικού; Πως γίνεται η ανάπτυξη λογισμικού; Ιδιαιτερότητες του λογισμικού. Εντοπισμός των κυριοτέρων κατηγοριών προβλημάτων στην ανάπτυξη και συντήρησή του.
• Κοινωνικοτεχνικά και κρίσιμα συστήματα: Διαφοροποίηση τους από ένα απλό τεχνικό σύστημα βασισμένο σε υπολογιστές. Έννοια των ανακυπτουσών ιδιοτήτων ενός συστήματος, όπως είναι η αξιοπιστία και η ασφάλεια. Λόγοι για τους οποίους το εταιρικό περιβάλλον ενός συστήματος επηρεάζει το σχεδιασμό και τη χρήση του. Θέματα προστασίας προσωπικών δεδομένων (εφαρμογή του κανονισμού GDPR).
• Διαδικασίες παραγωγής λογισμικού: Μοντέλα διαδικασιών παραγωγής λογισμικού. Επαναληπτικές διαδικασίες. Δραστηριότητες διαδικασιών. Ορθολογική Ενοποιημένη Διαδικασία (Rational Unified Process – RUP). Τεχνολογία λογισμικού με τη βοήθεια υπολογιστή (Computer Aided Software Engineering – CASE). Διαχείριση έργων: ανθρώπινο δυναμικό, χρονοπρογραμματισμός, εκτίμηση κόστους και διαχείριση κινδύνων.
• Απαιτήσεις και προδιαγραφές λογισμικού: Λειτουργικές και μη λειτουργικές απαιτήσεις. Απαιτήσεις χρήστη. Απαιτήσεις συστήματος. Προδιαγραφές διασύνδεσης. Γραφικός προσδιορισμός απαιτήσεων με διαγράμματα ακολουθίας. Το έγγραφο των απαιτήσεων λογισμικού.
• Τεχνικές συλλογής απαιτήσεων: Συνεντεύξεις (Interviews). Συνεργατική ανάπτυξη εφαρμογής (Joint application development). Ερωτηματολόγια (Questionnaires). Ανάλυση κειμένων (Document analysis). Προσωπική παρατήρηση (Observation).
• Μοντέλα ανάπτυξης συστημάτων λογισμικού: Μοντέλο καταρράκτη. Ελικοειδές μοντέλο. Αστεροειδές μοντέλο. Μοντέλο ανθρωποκεντρικού σχεδιασμού. Μεθοδολογία LUCID (Logical User Centred Interactive Design). Μηχανική ευχρηστίας (Usability engineering). Μοντέλα ανάπτυξης δικτυακών τόπων.
• Αρχιτεκτονικές συστημάτων: Αποφάσεις αρχιτεκτονικού σχεδιασμού και οργάνωσης συστήματος. Αρχιτεκτονικές κατανεμημένων συστημάτων. Αρχιτεκτονικές πολυεπεξεργασίας, πελάτη-διακομιστή και κατανεμημένων αντικειμένων. Αρχιτεκτονικές εφαρμογών. Συστήματα επεξεργασίας δεδομένων, συναλλαγών, συμβάντων και γλώσσας.
• Σχεδιασμός λογισμικού: Αντικειμενοστρεφής σχεδιασμός. Σχεδιαστικές αρχές λογισμικού: αφαίρεση (abstraction), βελτίωση (refinement), τμηματοποίηση (modularity), ενθυλάκωση (encapsulation) και επαναχρησιμοποίηση (reuse). Σύνολο αρχών S.O.L.I.D. Η έννοια του τεχνικού χρέους (technical/design/code debt).
• Ειδικά θέματα σχεδιασμού συστημάτων: Σχεδιασμός λογισμικού πραγματικού χρόνου. Συστήματα παρακολούθησης, ελέγχου και απόκτησης δεδομένων. Σχεδιασμός διασύνδεσης χρήστη. Κατασκευή πρωτοτύπων διασύνδεσης χρήστη και αξιολόγηση διασύνδεσης.
• Ανάπτυξη λογισμικού (components και επανάχρηση): Γρήγορη ανάπτυξη λογισμικού. Επαναχρησιμοποίηση λογισμικού. Πλαίσια εργασίας εφαρμογών. Τεχνολογία λογισμικού βάσει συστατικών στοιχείων (Component-Based Software Engineering – CBSE).
• Επαλήθευση και επικύρωση λογισμικού: Τεκμηρίωση κώδικα. Σχεδιασμός επαλήθευσης και επικύρωσης. Επιθεωρήσεις λογισμικού και αυτοματοποιημένη ανάλυση. Δοκιμές λογισμικού και σχεδιασμός τους. Επικύρωση κρίσιμων συστημάτων και αξιοπιστίας. Αξιολόγηση προστασίας από εξωτερικούς κινδύνους.
• Συντήρηση και εξέλιξη λογισμικού: Δυναμική της εξέλιξης των προγραμμάτων. Συντήρηση λογισμικού. Διαδικασίες εξέλιξης. Εξέλιξη κληρονομημένων συστημάτων. Διαχείριση αλλαγών. Διαχείριση πρώιμων και τελικών εκδόσεων.

 

ΕΠΙΣΤΡΟΦΗ ΣΤΗ ΛΙΣΤΑ ΤΩΝ ΜΑΘΗΜΑΤΩΝ