Commit e012437b authored by Antonios Angelakis's avatar Antonios Angelakis

Almost finish chapter 4

parent f0ca7330
...@@ -622,26 +622,116 @@ tag και ο κώδικας που διαχειριζόταν το πάτημα ...@@ -622,26 +622,116 @@ tag και ο κώδικας που διαχειριζόταν το πάτημα
Στον κώδικα που τρέχει κατά την υποβολή, επιλέγονται τα αρχεία ελέγχου που θα Στον κώδικα που τρέχει κατά την υποβολή, επιλέγονται τα αρχεία ελέγχου που θα
εκτελεστούν και γράφονται σε ένα αρχείο στον εξυπηρετητή ώστε να μπουν στην εκτελεστούν και γράφονται σε ένα αρχείο στον εξυπηρετητή ώστε να μπουν στην
ουρά του Kewii. Εκεί προστέθηκε Το callback script είναι το κομμάτι του Grader που τρέχει με ουρά του Kewii. Εκεί προστέθηκε ο νέος τύπος εκτέλεσης σε αυτά που στέλνονται
πρωτοβουλία του Kewii, μόλις αυτός έχει τελειώσει την αξιολόγηση μιας υποβολής σε όλες τις υποβολές. Αντίστοιχα στο callback script, το κομμάτι του Grader που
και τρέχει με πρωτοβουλία του Kewii, μόλις αυτός έχει τελειώσει την αξιολόγηση μιας
υποβολής, υλοποιήθηκε η λογική των "μπλε" αρχείων ελέγχου, που ακόμα και να
έχουν έρθει ως λανθασμένα, δεν επηρεάζουν την έκβαση.
(TODO: εικόνα18, διαχείριση αρχείων ελέγχου σε μπραντς blue tag)
\section{Testcase Groups} \section{Testcase Groups}
Έχοντας προσθέσει το blue tag, τροποποιώντας πολλαπλά σημεία του Grader τόσο
για την υποβολή όσο και για την αξιολόγηση, μπορούσαμε να προχωρήσουμε στην
υλοποίηση της αρκετά πιο σύνθετης δυνατότητας, των testcase groups.
\subsection{Κίνητρο} \subsection{Κίνητρο}
- Δυνατότητα εύκολης δημιουργίας προβλημάτων με true/false απάντηση Πριν τις αλλαγές μας, ο διαχειριστής, κατά την δημιουργία του προβλήματος,
έπρεπε να δημιουργήσει αρχεία ελέγχου και να επιλέξει στο καθένα βαθμολογία και
τύπο εκτέλεσης. Από κείνο το σημείο και έπειτα, τα αρχεία ελέγχου δεν είχαν
κάποια κατηγοριοποίηση ή διαχωρισμό. Ο διαχειριστής, σε κάθε σημείο, όφειλε να
διατηρεί την ισορροπία όσον αφορά στις βαθμολογίες των αρχείων ελέγχου και να
θυμάται την αναλογία εύκολων και δύσκολων αρχείων ή οποιαδήποτε άλλης
κατηγορίας.
\bigskip
- Πιο δίκαιη βαθμολογία χωρίς να υπάρχει ανάγκη να δοθεί βαθμολογία σε κάθε αρχείο ελέγχου Άλλο ένα πρόβλημα που υπήρχε ήταν η δυνατότητα για δημιουργία ειδικών λύσεων σε
συγκεκριμένα προβλήματα έτσι ώστε να λαμβάνουν αξιοπρεπή βαθμολογία έχοντας
υλοποιήσει μέρος μόνο του αλγορίθμου, αρκεί να περνούσαν τα αναγκαία αρχεία της
κανονικής υποβολής. Κάθε αρχείο ελέγχου είχε δικιά του βαθμολογία οπότε θα
μπορούσε κανείς να επιτύχει στα μισά παραδείγματος χάρη σε ένα true/false
πρόβλημα.
\bigskip
- Δυνατότητα διαχωρισμού σε μικρά μεγάλα τεστς Η προσθήκη testcase groups θα επιτρέψει την ομαδοποίηση των αρχείων ελέγχου σε
ομάδες ανεξάρτητες στην αξιολόγηση με δική τους βαθμολογία με την ορθότητα τους
να κρίνεται από την ορθότητα όλων των αρχείων ελέγχουν που περιέχουν. Έτσι, θα
δοθεί μεγάλη ευελιξία στη δημιουργία διαφορετικών κατηγοριών αρχείων. Ένας
χρήσιμος διαχωρισμός θα μπορεί να είναι ανάλογα με το μέγεθος της εισόδου,
δηλαδή σε μικρά, μεσαία και μεγάλα. Με αυτό τον τρόπο ο διαχειριστής γλιτώνει
πολύ κόπο πετυχαίνοντας την επιθυμητή αναλογία βαθμολογίας στις διάφορες
υλοποιήσεις βάζοντας απλά τους βαθμούς που θέλει ανεξάρτητα με το πόσα αρχεία
ελέγχου εμπεριέχει κάθε group.
- Γκρουπάρισμα αρχείων ελέγχου για μεγαλυτέρη ευελιξία και παρουσίαση στο χρήστη \bigskip
Επιπροσθέτως, λύνεται το πρόβλημα των προσαρμοσμένων λύσεων, αφού αν τα
υπάρχοντα groups εμπεριέχουν αρχεία πολλαπλών περιπτώσεων, οι συγκεκριμένες
λύσεις δε θα καταφέρνουν να ικανοποιήσουν ταυτόχρονα τα αρχεία και δε θα
βαθμολογούνται σε αυτά τα groups.
\subsection{Προδιαγραφές}
Για την καθοδήγηση της υλοποίησης τέθηκαν συγκεκριμένες προδιαγραφές όσον
αφορά τις ομάδες αρχείων ελέγχου και τη λειτουργία τους.
\begin{itemize}
\item Οι ομάδες αρχείων ελέγχου, όπως περιγράφηκαν και παραπάνω, θα μπορούν
να περιέχουν οποιοδήποτε υποσύνολο των διαθέσιμων αρχείων. Επιθυμούμε,
για μεγαλύτερη ευελιξία, τα αρχεία ελέγχου να μπορούν να ανήκουν σε
πολλαπλές ομάδες και με διαφορετικό τύπο εκτέλεσης.
\item Η αξιολόγηση θα γίνεται με βάση μόνο τις ομάδες, ανεξάρτητα με το
πόσα αρχεία ελέγχου υπάρχουν. Μια υποβολή θα θεωρείται ορθή και θα μπορεί
να τεθεί ως ενεργή αν ικανοποιεί τουλάχιστον μια ομάδα.
\item Οι ομάδες θα μπορούν να αποκτήσουν τίτλο από το διαχειριστή και θα
διαθέτουν βαθμολογία. Τα παραπάνω καθιστούν τις βαθμολογίες και τύπους
εκτέλεσης των αρχείων ελέγχου ανούσιες.
\item Οι ομάδες που περιέχουν τουλάχιστον ένα αρχείο ελέγχο με τύπο εκτέλεσης
μη-τελικής αξιολόγησης, δηλαδή κίτρινο, πορτοκαλί ή μπλε, θα αξιολογούνται
κατά τις κανονικές υποβολές και θα είναι εμφανείς στους διαγωνιζόμενους
μαζί με τα αρχεία ελέγχου που διαθέτουν.
\end{itemize}
\subsection{Υλοποίηση} \subsection{Υλοποίηση}
Με βάση τις προδιαγραφές που περιγράφηκαν παραπάνω σχηματίζεται η εικόνα της
υλοποίησης και των κρίσιμων κομματιών της. Ως προς τη βάση δεδομένων, θα
χρειαστεί ένας νέος πίνακας για τα testcase groups και τα χαρακτηριστικά τους
(όνομα, βαθμολογία).
\bigskip
Δεδομένου ότι η σχέση αρχείων ελέγχου και ομάδων είναι N-to-N, δηλαδή τόσο οι
ομάδες περιέχουν πολλαπλά αρχεία και τα αρχεία ανήκουν σε πολλαπλές ομάδες, θα
χρειαστεί και δεύτερος πίνακας αντιστοίχισης ομάδων με τα αρχεία που περιέχουν.
Ο συγκεκριμένος πίνακας θα έχει και πεδίο για τον τύπο εκτέλεσης του αρχείου
ελέγχου στη συγκεκριμένη ομάδα, επιτρέποντας ένα αρχείο να ανήκει ως φανερό
(κίτρινο) σε μία ομάδα και ως τελικό (πράσινο) σε μία άλλη.
\bigskip
Από τη στιγμή που υπάρχει η πιθανότητα δύο ομάδες να έχουν κοινά αρχεία ελέγχου
σε πρόβλημα, δημιουργείται το θέμα της πιθανής αχρείαστης αξιολόγησης
των ίδιων αρχείων ελέγχου πολλές φορές. Στην υλοποίηση μας αυτό θα αποφευχθεί
διατηρώντας την αρχιτεκτονική της εφαρμογής όσον αφορά στις αρμοδιότητες Kewii και
Grader απαράλλαχτη. Αυτό σημαίνει ότι ο Kewii, θα συνεχίσει να παίρνει απλά μια
λίστα με τα αρχεία ελέγχου που πρέπει να εκτελέσει και θα επιστρέφει το αποτέλεσμα
τους. Πρακτικά, δε θα "αντιληφθεί" την αλλαγή, καθώς ο Grader θα είναι υπεύθυνος
κατά την υποβολή μιας λύσης να φιλτράρει τα μοναδικά αρχεία ελέγχου που του
χρειάζονται για τις ομάδες που συμμετέχουν στην αξιολόγηση, και κατά το callback
για την χρησιμοποίηση αυτών των αποτελεσμάτων για να λάβει την τελική έκβαση των
testcase groups.
- Εξήγηση σχέσεων πινάκων - Εξήγηση σχέσεων πινάκων
- json, καλύτερη σχεδίαση με κλάσεις - json, καλύτερη σχεδίαση με κλάσεις
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment