Γενικά

Η προγραμματιστική εργασία αφορά τη σχεδίαση, υλοποίηση και ρύθμιση ενός, σχετικά μεγάλου εύρους, συστήματος λογισμικού και θα διεξαχθεί σε φάσεις, οι οποίες είναι

  • Φάση 1: προδιαγραφές και ανάλυση απαιτήσεων
  • Φάση 2: σχεδίαση της βασικής αρχιτεκτονικής κλάσεων
  • Φάση 3: υλοποίηση και έλεγχος

Η προγραμματιστική άσκηση

  • είναι υποχρεωτική και πρέπει υποχρεωτικά να ολοκληρωθεί πλήρως!!
  • θα εκπονηθεί από ομάδες των 1 - 3 ατόμων

Διαβάστε, σας παρακαλώ, όλες τις παρακάτω οδηγίες, μέχρι το τέλος της σελίδας (κι ας είναι ακατανόητα κάποια από αυτά που περιέχουν)-- θα χρειαστεί στη διάρκεια του εξαμήνου να αποταθείτε ξανά σε αυτές!

Εκφώνηση

Η ανακοίνωση του project είναι εδώ!

Το φετινό υποστηρικτικό υλικό για την εκφώνηση βρίσκεται στο φάκελο supportingMaterial. Το σχετικό .zip περιέχει το κομμάτι του κώδικα που σας δίνεται έτοιμο, και στο οποίο πρέπει να κουμπώσετε τον δικό σας κώδικα, ώστε το σύστημα να τρέχει.

Δείτε τη σελίδα "Χρήσιμα" για χρήσιμα links.

Δείτε ένα υπόδειγμα αναφοράς (σε διάφορα format) για να γράφετε την αναφορά σας στα επί μέρους στάδιά της. (Για τους παλαιότερους: υπάρχει νέα έκδοση του υποδείγματος από το Σεπτέμβρη του 2020, μην χρησιμοποιήσετε το παλιό.)

Παραδοτέα (και ενδιάμεσα και τελικά)

Μερικές οδηγίες για το πώς να διαμορφώσετε τα παραδοτέα σας και να μας παραδώσετε τον κώδικά σας. Πολλές από τις απαιτήσεις σκοπό έχουν να διευκολύνουν την εξέταση και διόρθωση των projects από την πλευρά μας, οπότε παρακαλώ ακολουθήστε τις, ακόμα κι αν δε φαίνεται να έχουν προφανή λόγο για σας.

  • Οργάνωση Κώδικα σε Eclipse Project. Το project σας πρέπει να είναι υποχρεωτικά σε Eclipse. Ονομάστε το project σας με το όνομα της ομάδας σας (π.χ., AM1_AM2_AM3_project). Μέσα στον Eclipse φάκελο, βάλτε υποχρεωτικά ένα απλό αρχείο κειμένου Readme.txt (ή ένα markdown κείμενο Readme.md) που θα λέει (α) ονόματα και ΑΜ, (β) πού πρέπει να μπουν τα αρχεία εισόδου και οι σχετικές βιβλιοθήκες που χρησιμοποιείτε, και (γ) όποια άλλη πληροφορία κρίνετε σκόπιμο, ώστε να τρέξει το πρόγραμμά σας στην εξέταση χωρίς προβλήματα.
  • Ετοιμασία Κώδικα για το turnin. Όταν έρθει η ώρα να κάνετε turnin, σε ένα αρχείο συμπίεσης (zip) βάλτε το Eclipse project σας. Το zip αρχείο μπορεί να περιλαμβάνει και διαγράμματα ή άλλα αρχεία που έχετε ενσωματώσει στο Eclipse project σας. Αφού θα έχετε ετοιμάσει το zip αρχείο, αφαιρέστε (αν υπάρχουν στην εκφώνηση της παρούσας χρονιάς) (α) τις βιβλιοθήκες , και (β) τα input αρχεία, που τυχόν σας δώσαμε εμείς, καθώς είναι πολλά ΜΒ και δε θα μπορείτε να κάνετε turnin λόγω μεγέθους.
  • Αναφορές. Θα συμπληρώσετε και την τελική αναφορά, αλλά και τα ενδιάμεσα στάδιά της, ΥΠΟΧΡΕΩΤΙΚΑ στο template που έχω δώσει. Σε κάθε στάδιο του project, προοδευτικά θα προστίθεται και μία νέα ενότητα: στην αρχή θα έχετε μόνο την ανάλυση απαιτήσεων, μετά τη σχεδίαση και τους ελέγχους, και στο τέλος θα ενημερώσετε/επεκτείνετε τα προαναφερθέντα για να δώσετε την τελική αναφορά σας. Η τελική αναφορά, κατατίθεται μαζί με όλα τα επί μέρους παραδοτέα, ενημερωμένη σε σχέση με τον κώδικα που παραδίδετε (δλδ., ενημερώνετε τα use cases/UML diagrams/tests/... στην τελική τους μορφή).

Ομάδες και Πιθανά προβλήματα

Είναι πολύ προτιμότερο να οργανωθείτε ως ομάδα με συναδέλφους σας με τους οποίους υπάρχει (α) δυνατότητα συνεννόησης και (β) κοινή στόχευση σε σχέση με το μάθημα. Μη βιαστείτε να δηλώσετε ομάδα. Όσοι ξέρετε ότι δεν (θα) έχετε ομάδα, θα σας ανατεθεί ομάδα από μας. (για φέτος, μπορείτε και ομάδες με λιγότερα από 3 μέλη, ή και ατομικά)

Τι θα πει ομάδα:

  • Ως μέλος μιας ομάδας θα πρέπει (α) να μπορείτε να συνεργαστείτε αρμονικά με τους συνεργάτες σας για να παράξετε ένα συνολικό αποτέλεσμα στη βάση του οποίου θα κριθείτε ως ομάδα και (β) ο καθένας μόνος του, αυτοδύναμα, να έχει τις ικανότητες να συνεισφέρει το δικό του κομμάτι, σωστά. Όπως κάθε σύστημα λογισμικού, έτσι και οι ομάδες, είναι σαν puzzle: (α) όλα τα κομμάτια πρέπει να συναρμολογηθούν σωστά και (β) κάθε κομμάτι μόνο του οφείλει να είναι σωστό.
  • Μεθοδολογικά: για κάθε task, (1) δουλεύουμε από πριν, όλοι μαζί, στη σχεδίαση των επί μέρους παραδοτέων, (2) αναθέτουμε τις επί μέρους δουλειές στα άτομα της ομάδας προς υλοποίηση, (3) εξετάζουμε, συνθέτουμε και εναρμονίζουμε τα επί μέρους αποτελέσματα, κι αν έχουν προβλήματα τα διορθώνουμε πριν την παράδοση.
  • ΔΕΝ ΕΙΝΑΙ ΟΜΑΔΑ: "τα κάνει όλα ένας" ή "τα κάνουν οι δύο φίλοι, κι ο τρίτος δε μαθαίνει τίποτα" ή "πάρε ο καθένας ένα κομμάτι, κι ό,τι βγει το κολλάμε κι ο Θεός βοηθός".
  • Θα κριθείτε από το αποτέλεσμα KAI (α) ως ομάδα KAI (β) ατομικά. Όποιος free rider δεν συμμετέχει στη δουλειά, δεν θα εμφανίζεται στα παραδοτέα και κόβεται στο μάθημα!
  • Ελάτε σε επικοινωνία με τους συνεργάτες άμεσα και εναρμονίστε τις στοχεύσεις σας και τον τρόπο δουλειάς για το μάθημα! Διαφορετικοί άνθρωποι έχουν διαφορετική στόχευση για το μάθημα: άλλος θέλει απλώς να δει πώς είναι (chances are he will withdraw before the class diagrams), άλλος θέλει να πάρει 10. Ξεκαθαρίστε μεταξύ σας, από πριν, τι θέλετε να κάνετε και κοιτάξτε να είστε τίμιοι με τους συνεργάτες σας, ώστε να μην έχετε καυγάδες στην πορεία.

Frequently Encountered Problems

  • "Δεν έχω άλλους 2 συνεργάτες / Είμαστε δύο μόνο": προφανώς, θα αναθέσουμε εμείς ομάδες.
  • "Ένας συνεργάτης μου δε βοήθησε καθόλου": δεν μπαίνει το όνομά του στο παραδοτέο!
  • "Ένας συνεργάτης μου συστηματικά δε βοηθά αρκετά/καθόλου": θα υπάρξει ημερομηνία και διαδικασία αναμόρφωσης των ομάδων με προβλήματα. Όσοι παθητικά συμμετέχουν σε ομάδα, απλώς θα διαγραφούν. Όσες ομάδες είναι δυσλειτουργικές, θα διαλυθούν.

Είναι κατανοητό ότι οι ομάδες μπορούν να δημιουργήσουν προβλήματα. Working in teams, however, is part of your training, and the gained skills are fundamental for your career.

Παράδοση μέσω turnin

Η παράδοση των παραδοτέων μιας φάσης γίνεται ΑΠΟΚΛΕΙΣΤΙΚΑ ΚΑΙ ΜΟΝΟ μέσω turnin, ως εξής:

turnin phaseX@myy301 AM1_AM2_AM3_report.pdf AM1_AM2_AM3_code.zip κλπ,

όπου Χ είναι ο αύξων αριθμός φάσης
(άρα, ενδιάμεσο παραδοτέο: phase2 και τελικό: phase3 -- η φάση 1 δεν έχει παραδοτέα).

Προσοχή: το turnin αντέχει αρχεία μέχρι 10MB (οπότε, αν το αρχείο σας ξεπερνά το όριο, σπάστε το σε πολλά)

Εργασίες που υποβάλλονται μέσω email απλώς θα αγνοούνται.

Είστε συνήθως παραπάνω από 100 ομάδες. Είναι απολύτως αδύνατον, διαχειριστικά, να υποστηριχθεί η παράδοση μέσω email, είτε στον διδάσκοντα, είτε στους βοηθούς. Αν υπάρχουν προβλήματα, συνεννοηθείτε με τους βοηθούς πριν την προθεσμία, ή στη χειρότερη περίπτωση, με το διδάσκοντα, στο μάθημα αμέσως μετά τη λήξη της προθεσμίας. Σας ενημερώνω από την αρχή, ότι εργασίες υποβληθείσες μέσω email, επ' ουδενί λόγω δεν θα γίνουν δεκτές.

Απορίες

Οι βοηθοί θα έχουν ώρες γραφείου για να απαντούν απορίες σχετικά με τις ασκήσεις. Αξιοποιήστε τις ώρες αυτές και σεβαστείτε το χρόνο των βοηθών τις υπόλοιπες ώρες.