Ακαδημαϊκό Προσωπικό
ΠΕΡΙΕΧΟΜΕΝΟ ΜΑΘΗΜΑΤΟΣ
- Εισαγωγή στο software engineering και επεξήγηση της σπουδαιότητας του. Ορισμός των βασικότερων όρων του software engineering Εισαγωγή σε θέματα δεοντολογίας και επαγγελματισμού και σε τι αφορούν το software engineers
- Systems Engineering: Πως το software engineering επηρεάζεται από θέματα του ευρύτερου τομέα του system engineering Γιατί το περιβάλλον συστήματος θα πρέπει να εμπλακεί κατά τις διαδικασίες σχεδίασης του συστήματος.
- Διαδικασίες Λογισμικού: Παρουσίαση και περιγραφή των μοντέλων διαδικασιών λογισμικού. Περιγραφή πως μπορούν να χρησιμοποιηθούν τα μοντέλα διαδικασιών στην καταγραφή απαιτήσεων, στο σχεδιασμό, στην ανάπτυξη, στο testing και στην εξέλιξη του συστήματος. Παρουσίαση της τεχνολογίας CASE και περιγραφή πως αυτή μπορεί να βοηθήσει στα διάφορα στάδια του software engineering.
- Απαιτήσεις Λογισμικού: Παρουσίαση των εννοιών «Απαιτήσεις Χρήστη» και «Απαιτήσεις Συστήματος». Περιγραφή των λειτουργικών και μη λειτουργικών απαιτήσεων. Εξήγηση του πως δομείται το έγγραφο περιγραφής των απαιτήσεων λογισμικού
- Requirements Engineering Processes: Περιγραφή των βασικών σταδίων του requirements engineering. Παρουσίαση των τεχνικών για την ανάλυση των απαιτήσεων. Περιγραφή της διαδικασίας επικύρωσης των απαιτήσεων. Περιγραφή της διαδικασίας διαχείρισης των απαιτήσεων
- Μοντέλα Συστήματος: Γιατί το περιεχόμενο του συστήματος πρέπει να σχεδιαστεί με μοντέλα κατά την διαδικασία του requirements engineering. Περιγραφή του behavioural modelling, data modelling και object modeling. Παρουσίαση κάποιων σημειογραφιών που χρησιμοποιούνται στο Unified Modelling Language (UML). Παρουσίαση των τρόπων που τα CASE workbenches υποστηρίζουν το system modelling
- Software Prototyping: Περιγραφή της χρήσης των prototypes σε διάφορους τύπους έργων. Περιγραφή των εξελικτικών prototypes και των throw-away prototyping. Περιγραφή από 3 τεχνικές γρήγορου prototyping, ανάπτυξη με την χρήση γλώσσας προγραμματισμού ανώτερου επιπέδου και επαναλαμβανόμενη χρήση υπαρχόντων κομματιών κώδικα. Εξήγηση της ανάγκης του user interface prototyping
- Formal Specification: Εξήγηση των τεχνικών του formal specification και πως αυτές βοηθούν στην ανεύρεση προβλημάτων στις απαιτήσεις συστήματος. Περιγραφή της χρήσης τεχνικών άλγεβρας στον προσδιορισμό του interface. Περιγραφή της χρήσης τεχνικής βασισμένης σε μοντέλα για τον προσδιορισμό της συμπεριφοράς του συστήματος
- Αρχιτεκτονικός Σχεδιασμός: Παρουσίαση του αρχιτεκτονικού σχεδιασμού και της σπουδαιότητας του. Εξήγηση του γιατί χρειάζονται πολλαπλά μοντέλα για να τεκμηριωθεί η αρχιτεκτονική του λογισμικού. Περιγραφή των διαφορετικών τύπών μοντέλων αρχιτεκτονικής. Σύγκριση των αρχιτεκτονικών λογισμικού
- Αρχιτεκτονική Κατανεμημένων Συστημάτων: Εξήγηση των πλεονεκτημάτων και των μειονεκτημάτων της αρχιτεκτονικής κατανεμημένων συστημάτων. Περιγραφή των διαφορετικών τρόπων ανάπτυξης συστημάτων client-server. Εξήγηση των διαφορών μεταξύ client-server αρχιτεκτονικής και αρχιτεκτονικής κατανεμημένων συστημάτων.
- Σχεδιασμός Λογισμικού Object-Oriented: Πως μπορεί το σχέδιο λογισμικού να αναπαρασταθεί σαν ανεξάρτητα αντικείμενα που αλληλεπιδρούν μεταξύ τους και διαχειρίζονται την κατάσταση που βρίσκονται και τις λειτουργίες τους. Περιγραφή των σταδίων στην διαδικασία του σχεδιασμού object-oriented. Παρουσίαση των μοντέλων τα οποία περιγράφουν τον σχεδιασμό object-oriented. Επίδειξη της δυνατότητας της UML για την παρουσίαση αυτών των μοντέλων
- Σχεδιασμός Λογισμικού Real-time: Εξήγηση της έννοιας του συστήματος real-time και τον λόγο για τον οποίο τα συστήματα αυτά αναπτύσσονται με ταυτόχρονες διαδικασίες. Περιγραφή της διαδικασίας σχεδιασμού για συστήματα real-time. Περιγραφή των αρχιτεκτονικών για συστήματα παρακολούθησης, ελέγχου και απόκτησης δεδομένων
- Σχεδιασμός Λογισμικού με Reuse: Τα οφέλη του επανάληψης χρήσης λογισμικού και κάποια προβλήματα. Περιγραφή διαφορετικών τύπων reusable μονάδων και διαδικασιών. Παρουσίαση οικογενειών εφαρμογών από τις οποίες μπορούν να χρησιμοποιηθούν κομμάτια κώδικα.
- Επικύρωση και Επαλήθευση: Οι έννοιες της επικύρωσης και επαλήθευσης λογισμικού και οι διαφορές τους. Περιγραφή της διαδικασίας ελέγχου του προγράμματος Εξήγηση της στατικής ανάλυσης σαν τεχνική επαλήθευσης
- Software Testing: Οι τεχνικές ελέγχου που χρησιμοποιούνται για να βρεθούν τα σφάλματα του προγράμματος. Παρουσίαση των οδηγιών για τον έλεγχο του interface. Προσεγγίσεις για έλεγχο object-oriented. Τα εργαλεία μπορούν να υποστηρίξουν το testing
ΣΥΝΙΣΤΩΜΕΝΗ-ΒΙΒΛΙΟΓΡΑΦΙΑ
- Ian Sommerville: Software Engineering (8th edition), Addison-Wesley, 2006
- Ivar Jacobson, Grady Booch, James Rumbaugh: The Unified Software Development Process, Addison-Wesley, 1999
- Ivar Jacobson, Magnus Christerson, Patrik Jonsson, Gunnar Oevergaard: Object-Oriented Software Engineering (A use case Driven Approach), Addison-Wesley, 1995
- Rational Rose Home Page: http://www.rational.com/products/rose/index.jtmpl
- The Carnegie Mellon Software Engineering Home: http://www.sei.cmu.edu/sei-home.html