Commit 5d96d96a authored by Antonios Angelakis's avatar Antonios Angelakis

Write chapter 7

parent 40534f86
...@@ -759,13 +759,13 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -759,13 +759,13 @@ callback για την χρησιμοποίηση αυτών των αποτελ
(TODO: eikones 41 42) (TODO: eikones 41 42)
\bigskip \bigskip
Η εισαγωγή των testcase groups στο Grader επηρέασε, ακόμα, μεγάλο πλήθος οθονών Η εισαγωγή των testcase groups στο Grader επηρέασε, ακόμα, μεγάλο πλήθος οθονών
και λειτουργιών συμπεριλαμβανομένων των παρακάτω: και λειτουργιών συμπεριλαμβανομένων των παρακάτω:
\begin{itemize} \begin{itemize}
\item Αλλαγές στην οθόνη των λεπτομερειών υποβολής. Στη συγκεκριμένη \item Αλλαγές στην οθόνη των λεπτομερειών υποβολής. Στη συγκεκριμένη
οθόνη πλέον εμφανίζονται ομάδες αντί για αρχεία, οι οποίες περιέχουν οθόνη πλέον εμφανίζονται ομάδες αντί για αρχεία, οι οποίες περιέχουν
τα αρχεία που αντιστοιχούν σε αυτές μέσα σε πλαίσια. Οι χρωματικές ενδείξεις τα αρχεία που αντιστοιχούν σε αυτές μέσα σε πλαίσια. Οι χρωματικές ενδείξεις
επιτυχίας (πράσινο φόντο) και αποτυχίας (κόκκινο) έχουν παραμείνει, με την επιτυχίας (πράσινο φόντο) και αποτυχίας (κόκκινο) έχουν παραμείνει, με την
...@@ -792,7 +792,7 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -792,7 +792,7 @@ callback για την χρησιμοποίηση αυτών των αποτελ
Άλλη μια σημαντική πτυχή της υλοποίησης αποτελεί ο τρόπος που θα γίνει η Άλλη μια σημαντική πτυχή της υλοποίησης αποτελεί ο τρόπος που θα γίνει η
μετάβαση από τον προηγούμενο τρόπο αξιολόγησης στο νέο. Εκτός από τις πολλαπλές μετάβαση από τον προηγούμενο τρόπο αξιολόγησης στο νέο. Εκτός από τις πολλαπλές
τροποποιήσεις στον κώδικα και στη βάση, επιβάλλεται να τροποποιηθούν όλα τα τροποποιήσεις στον κώδικα και στη βάση, επιβάλλεται να τροποποιηθούν όλα τα
προβλήματα, παλιά και τρέχοντα. Ο λόγος είναι ότι στο νέο σύστημα η αξιολόγηση όλων προβλήματα, παλιά και τρέχοντα. Ο λόγος είναι ότι στο νέο σύστημα η αξιολόγηση όλων
των υποβολών βασίζεται στα testcase groups αντί για τα μεμονωμένα αρχεία ελέγχου. των υποβολών βασίζεται στα testcase groups αντί για τα μεμονωμένα αρχεία ελέγχου.
Ως αποτέλεσμα, κάθε υπάρχων πρόβλημα θα πρέπει να αποκτήσει groups τα οποία, Ως αποτέλεσμα, κάθε υπάρχων πρόβλημα θα πρέπει να αποκτήσει groups τα οποία,
...@@ -814,7 +814,7 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -814,7 +814,7 @@ callback για την χρησιμοποίηση αυτών των αποτελ
όλες αυτές οι ομάδες δε θα ελέγχονται στην κανονική υποβολή αφού περιέχουν μόνο όλες αυτές οι ομάδες δε θα ελέγχονται στην κανονική υποβολή αφού περιέχουν μόνο
πράσινα αρχεία ελέγχου (και συγκεκριμένα ένα η κάθε μία). Για τη διαδικασία πράσινα αρχεία ελέγχου (και συγκεκριμένα ένα η κάθε μία). Για τη διαδικασία
αυτή, υλοποιήθηκε script, το οποίο εισάχθηκε στην οθόνη διαχείρισης αρχείων αυτή, υλοποιήθηκε script, το οποίο εισάχθηκε στην οθόνη διαχείρισης αρχείων
ελέγχου του προβλήματος. ελέγχου του προβλήματος.
\bigskip \bigskip
...@@ -823,9 +823,9 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -823,9 +823,9 @@ callback για την χρησιμοποίηση αυτών των αποτελ
από τις αρχές που περιγράφονται στο (TODO: να το βγαλω τελειως ή να βάλω πηγή) από τις αρχές που περιγράφονται στο (TODO: να το βγαλω τελειως ή να βάλω πηγή)
clean code του Robert Martin. Μέρος των αλλαγών ήταν και η προσθήκη ενός πεδίου clean code του Robert Martin. Μέρος των αλλαγών ήταν και η προσθήκη ενός πεδίου
στον πίνακα των υποβολών, με τίτλο resultsjson, το οποίο περιέχει τα αναλυτικά στον πίνακα των υποβολών, με τίτλο resultsjson, το οποίο περιέχει τα αναλυτικά
αποτελέσματα μιας υποβολής, κωδικοποιημένα σε μορφή JSON, έτσι ώστε να μην αποτελέσματα μιας υποβολής, κωδικοποιημένα σε μορφή JSON, έτσι ώστε να μην
υπολογίζονται κάθε φορά που απαιτούνται. Επιπλέον, αλλαγές έγιναν ώστε να υπολογίζονται κάθε φορά που απαιτούνται. Επιπλέον, αλλαγές έγιναν ώστε να
αφαιρεθούν κομμάτια επαναλαμβανόμενου κώδικα με την αντίστοιχη δημιουργία αφαιρεθούν κομμάτια επαναλαμβανόμενου κώδικα με την αντίστοιχη δημιουργία
νέων δομών και κλάσεων, αποσύνδεση της λογικής διαφορετικών αντικειμένων και νέων δομών και κλάσεων, αποσύνδεση της λογικής διαφορετικών αντικειμένων και
μείωση της πολυπλοκότητας μεγάλων κομματιών κώδικα με δημιουργία μικρότερων μείωση της πολυπλοκότητας μεγάλων κομματιών κώδικα με δημιουργία μικρότερων
συναρτήσεων με περιγραφικά ονόματα. συναρτήσεων με περιγραφικά ονόματα.
...@@ -838,7 +838,7 @@ clean code του Robert Martin. Μέρος των αλλαγών ήταν κα ...@@ -838,7 +838,7 @@ clean code του Robert Martin. Μέρος των αλλαγών ήταν κα
- Φωτογραφίες από ανέβασμα ομάδων αρχείων ελέγχου - Φωτογραφίες από ανέβασμα ομάδων αρχείων ελέγχου
\bigskip \bigskip
(TODO: εικόνες βάσης 38,39) (TODO: εικόνες βάσης 38,39)
...@@ -994,7 +994,7 @@ clean code του Robert Martin. Μέρος των αλλαγών ήταν κα ...@@ -994,7 +994,7 @@ clean code του Robert Martin. Μέρος των αλλαγών ήταν κα
\chapter{Λοιπές Προσθήκες} \chapter{Λοιπές Προσθήκες}
Εκτός από τις νέες δυνατότητες που αναλύθηκαν στα προηγούμενα κεφάλαια, Εκτός από τις νέες δυνατότητες που αναλύθηκαν στα προηγούμενα κεφάλαια,
υλοποιήθηκαν και αλλαγές μικρότερης πολυπλοκότητας, που δε χρειάζονται υλοποιήθηκαν και αλλαγές μικρότερης πολυπλοκότητας, που δε χρειάζονται
ολόκληρο κεφάλαιο για να περιγραφούν. Οι σημαντικότερες από αυτές ολόκληρο κεφάλαιο για να περιγραφούν. Οι σημαντικότερες από αυτές
θα αναφερθούν σε αυτό το κεφάλαιο. θα αναφερθούν σε αυτό το κεφάλαιο.
...@@ -1003,14 +1003,14 @@ clean code του Robert Martin. Μέρος των αλλαγών ήταν κα ...@@ -1003,14 +1003,14 @@ clean code του Robert Martin. Μέρος των αλλαγών ήταν κα
\subsection{Προσθήκη γλωσσών στο Grader/Kewii} \subsection{Προσθήκη γλωσσών στο Grader/Kewii}
% TODO: ερωτηση παπασπυρου για chroot jail % TODO: ερωτηση παπασπυρου για chroot jail
Ο Grader, όπως έχει αναφερθεί και σε προηγούμενα κεφάλαια, επιτρέπει Ο Grader, όπως έχει αναφερθεί και σε προηγούμενα κεφάλαια, επιτρέπει
στους διαγωνιζόμενους την υποβολή λύσεων σε οποιαδήποτε γλώσσα στους διαγωνιζόμενους την υποβολή λύσεων σε οποιαδήποτε γλώσσα
προγραμματισμού από τις υποστηριζόμενες. Οι υποστηριζόμενες γλώσσες προγραμματισμού από τις υποστηριζόμενες. Οι υποστηριζόμενες γλώσσες
προγραμματισμού είναι οι παρακάτω: προγραμματισμού είναι οι παρακάτω:
\begin{itemize} \begin{itemize}
\setlength\itemsep{0em} \setlength\itemsep{0em}
\item C \item C
\item C++ \item C++
...@@ -1028,7 +1028,7 @@ clean code του Robert Martin. Μέρος των αλλαγών ήταν κα ...@@ -1028,7 +1028,7 @@ clean code του Robert Martin. Μέρος των αλλαγών ήταν κα
Η προσθήκη μιας νέας γλώσσας στο Grader δεν είναι δύσκολη διαδικασία. Η προσθήκη μιας νέας γλώσσας στο Grader δεν είναι δύσκολη διαδικασία.
Όσον αφορά στο frontend, αρκεί απλά η προσθήκη στο μενού επιλογής γλώσσας Όσον αφορά στο frontend, αρκεί απλά η προσθήκη στο μενού επιλογής γλώσσας
στην υποβολή και η αντίστοιχη κωδικοποίηση (που γίνεται συνήθως με την επέκταση στην υποβολή και η αντίστοιχη κωδικοποίηση (που γίνεται συνήθως με την επέκταση
των πηγαίων αρχείων της γλώσσας) που θα χρησιμοποιηθεί για την καταχώρηση της των πηγαίων αρχείων της γλώσσας) που θα χρησιμοποιηθεί για την καταχώρηση της
υποβολής σε βάση και Kewii. Όπως ο Kewii δεν εμπλέκεται στη διαδικασία της υποβολής σε βάση και Kewii. Όπως ο Kewii δεν εμπλέκεται στη διαδικασία της
αξιολόγησης, ο Grader, αντίστοιχα, έχει καθήκον απλά να περάσει την επιλογή αξιολόγησης, ο Grader, αντίστοιχα, έχει καθήκον απλά να περάσει την επιλογή
της γλώσσας και τον πηγαίο κώδικα ώστε να αναλάβει ο Kewii τον έλεγχο. της γλώσσας και τον πηγαίο κώδικα ώστε να αναλάβει ο Kewii τον έλεγχο.
...@@ -1093,7 +1093,7 @@ Stack Overflow (https://stackoverflow.blog/2017/09/06/incredible-growth-python/) ...@@ -1093,7 +1093,7 @@ Stack Overflow (https://stackoverflow.blog/2017/09/06/incredible-growth-python/)
ένας συχνά μεγάλος αριθμός αρχείων ελέγχου. Ο μόνος τρόπος να γίνει αυτό είναι ένας συχνά μεγάλος αριθμός αρχείων ελέγχου. Ο μόνος τρόπος να γίνει αυτό είναι
μέσω της οθόνης διαχείρισης των αρχείων ελέγχου, όπως φαίνεται στη μέσω της οθόνης διαχείρισης των αρχείων ελέγχου, όπως φαίνεται στη
φωτογραφία18, και κάθε νέο αρχείο ανεβαίνει ξεχωριστά, δηλαδή δεν υπάρχει φωτογραφία18, και κάθε νέο αρχείο ανεβαίνει ξεχωριστά, δηλαδή δεν υπάρχει
κάποια μαζική διαδικασία. κάποια μαζική διαδικασία.
\bigskip \bigskip
...@@ -1136,7 +1136,7 @@ Stack Overflow (https://stackoverflow.blog/2017/09/06/incredible-growth-python/) ...@@ -1136,7 +1136,7 @@ Stack Overflow (https://stackoverflow.blog/2017/09/06/incredible-growth-python/)
\item Για κάθε ομάδα αρχείων ελέγχου το όνομα της, οι πόντοι \item Για κάθε ομάδα αρχείων ελέγχου το όνομα της, οι πόντοι
και τα αρχεία ελέγχου που περιέχει και τα αρχεία ελέγχου που περιέχει
\item Για κάθε αρχείο ελέγχου μέσα σε ομάδα ο τύπος εκτέλεσης του (tag) \item Για κάθε αρχείο ελέγχου μέσα σε ομάδα ο τύπος εκτέλεσης του (tag)
\end{itemize} \end{itemize}
...@@ -1200,22 +1200,96 @@ interactive script σε Python για την αυτόματη παραγωγή ...@@ -1200,22 +1200,96 @@ interactive script σε Python για την αυτόματη παραγωγή
\section{Καταληκτικές Παρατηρήσεις} \section{Καταληκτικές Παρατηρήσεις}
- συνοψη αναφεροντας ξανα λιγα πραγματα για καθε κεφαάλαιο Στη συγκεκριμένη εργασία έγινε μια προσπάθεια βελτίωσης του συστήματος
- παρουσιαση οπενσορς, παρουσα κατασταση που μπορει να ναι και ντοκιουμεντεησιον αυτόματος αξιολόγησης Grader και προσθήκης δυνατοτήτων που θα το καταστήσουν
για οποιον ασχοληθει, φιτσουρς πιο ευέλικτο και εύκολο στη χρήση του. Για να επιτευχθεί αυτό, διερευνήθηκε ο
τρόπος λειτουργίας του όπως και ο τρόπος λειτουργίας άλλων παρόμοιων
συστημάτων. Για τις τροποποιήσεις και τις προσθήκες που υλοποιήθηκαν, έγινε
προσπάθεια να χρησιμοποιηθούν σωστές σχεδιαστικές επιλογές με έμφαση στη
βελτίωση της ποιότητας του κώδικα, στην μετέπειτα ευκολία συντήρησης και
επέκτασης του.
- αλλαγες, βελτιωση ευκολιας χρησης και προσθετες δυνατοτητες \bigskip
\section{Μελλοντική Έρευνα} Στο Κεφάλαιο 2, παρουσιάστηκαν συστήματα αυτόματης αξιολόγησης ανοιχτού λογισμικού
που προσφέρονται για τη διενέργεια διαγωνισμών και λειτουργούν με παρόμοιο τρόπο
με το Grader. Αναλύθηκε η σχεδίαση τους, τα σενάρια χρήσης τους και οι διαφορές
τους με το δικό μας σύστημα.
- μεταφορα σε framework \bigskip
- security enchancements Στο κεφάλαιο 3, είδαμε τον τρόπο λειτουργίας του Grader και του Kewii, της
εφαρμογής που τρέχει στον εξυπηρετητή και αναλαμβάνει την εκτέλεση των
υποβληθέντων προγραμμάτων. Αναλύθηκε η αρχιτεκτονική και ο τρόπος επικοινωνίας
μεταξύ τους. Αναφέρθηκαν, ακόμα, όλα τα συστατικά στοιχεία του συστήματος, οι
σχέσεις τους και κατά πόσο εμπλέκονται με Kewii και Grader. Το συγκεκριμένο
κεφάλαιο έχει σκοπό να λειτουργήσει στο μέλλον σαν έγγραφο αναφοράς για όποιον
επιθυμεί να επεκτείνει το σύστημα, βοηθώντας τον να αντιληφθεί γρηγορότερα τον
σχεδιασμό του.
- προσθηκη code reviews \bigskip
Στα κεφάλαια 4,5 και 6, αναλύθηκαν οι σημαντικότερες αλλαγές που έγιναν κατά τη
διάρκεια της παρούσας εργασίας. Αυτές συμπεριλάμβαναν τη δημιουργία μιας νέας
έννοιας για το σύστημα, αυτής των ομάδων αρχείων ελέγχου, και ως αποτέλεσμα την
επέκταση ολόκληρου του συστήματος για την υποστήριξη του, την αλλαγή της
αρχιτεκτονικής προβλημάτων, διαγωνισμών και υποβολών προς διευκόλυνση της
λειτουργίας του Grader και ένα σύνολο άλλων, μικρότερης σημασίας, προσθηκών.
Κατά τη διαδικασία υλοποίησης κάθε τροποποίησης έγινε προσπάθεια βελτίωσης της
εκάστοτε διαμόρφωσης με αναδιαμόρφωση κλάσεων μεθόδων και δομών δεδομένων ώστε
ο κώδικας να είναι περισσότερο κατανοητός και διαχειρίσιμος από τους μελλοντικούς
συντηρητές του. Επίσης, καταγράφηκε η διαδικασία εγκατάστασης της συνολικής
εφαρμογής του σε ένα καινούριο σύστημα ώστε να είναι εύκολο να μετεγκατασταθεί
στο μέλλον ή να δημιουργηθεί περιβάλλον δοκιμών. (TODO: πρώτη φορά τα αναφέρω αυτά!)
\section{Μελλοντική Εργασία}
Υπάρχουν πολλές προσθήκες που θα μπορούσαν να γίνουν σε Grader και Kewii για τη
βελτιστοποίηση τους. Όσον αφορά στον πρώτο, θα μπορούσε να προστεθεί η δυνατότητα
επισκόπησης και σχολιασμού υποβληθέντων λύσεων (code reviews) όπου οι διαχειριστές
ή υπεύθυνοι για τους διαγωνισμούς θα μπορούσαν να σχολιάζουν τις λύσεις των
διαγωνιζόμενων και εκεί να γίνεται συζήτηση μεταξύ τους για τυχόν βελτιστοποιήσεις
ή σφάλματα.
\bigskip
- pylint PEP-8 Επιπροσθέτως, θα ήταν αρκετά θετικό αν μπορούσε να διενεργηθεί ένας επανασχεδιασμός
της διαδικτυακής εφαρμογής σύμφωνα με μια αρχιτεκτονική MVC ή παρόμοια με χρήση
κάποιου σύγχρονου πλαισίου (framework) ώστε να γίνει άμεσα πιο κατανοητός ο
διαχωρισμός παρουσίασης και υλοποίησης της λογικής της αξιολόγησης και των
υπόλοιπων λειτουργιών. Κάτι τέτοιο θα είχε ως προϋπόθεση πλήρη κατανόηση του Grader
και του συνόλου των μερών του, αλλά θα επιβράβευε άμεσα όσους θα ήταν υπεύθυνοι για
την περαιτέρω ανάπτυξη του.
\bigskip
Μελλοντικά, θα μπορούσε να υπάρξει βελτίωση και του Kewii σε αρκετά θέματα.
Αρχικά, όπως έχει αναφερθεί και στο κεφάλαιο 6.1.2 για την Python, οι
διαγωνιζόμενοι θα επωφελούνταν στην περίπτωση προσθήκης ενός μηχανισμού για
ανάλυση του πηγαίου κώδικα των υποβολών τους, καθώς δεν εκτελείται μεταγλώττιση
και όλα τα σφάλματα είναι κατά την εκτέλεση. Ένα εργαλείο που θα μπορούσε να
χρησιμοποιηθεί για το συγκεκριμένο σκοπό είναι το pylint (TODO:
https://www.pylint.org/). Το συγκεκριμένο πρόγραμμα, έχει τη δυνατότητα τόσο να
εντοπίζει σφάλματα πριν την εκτέλεση, όσο και να ελέγχει την ποιότητα του
κώδικα σύμφωνα με συγκεκριμένα στάνταρ όπως είναι π.χ. το PEP-8 (TODO: link).
\bigskip
Άλλο ένα θέμα που επιδέχεται βελτίωση είναι η ασφάλεια εκτέλεσης του Kewii.
Προφανώς, είναι αρκετά δύσκολο να επιτυγχάνεται η απόλυτη ασφάλεια όταν εξ ορισμού
εκτελείται άγνωστος κώδικας σε έναν εξυπηρετητή. Παρόλα αυτά, μπορεί να υλοποιηθεί
ένα πιο αποκλεισμένο (sandboxed) περιβάλλον, πιθανόν με τη χρήση ενός εικονικού
μηχανήματος που να έχει ως στόχο τον αποκλεισμό των εκτελούμενων προγραμμάτων ή
με χρήση ειδικευμένου λογισμικού ως container, π.χ. Docker (TODO: link).
\bigskip
Τέλος, θα ήταν ωφέλιμο για την απόδοση του Kewii να υλοποιηθεί μια παραλληλοποίηση
των εκτελέσεων πολλαπλών υποβολών ταυτόχρονα, που θα μείωνε σε μεγάλο βαθμό το
χρόνο εκτέλεσης, εάν χρησιμοποιούνταν με χρήση συστάδας εικονικών ή φυσικών
μηχανημάτων. Η συγκεκριμένη υλοποίηση έχει ήδη γίνει στο (TODO: τσιαμητρος) και
είναι συμβατή με το σύστημα μας. Μένει να διερευνηθούν οι λεπτομέρειες της
προσθήκης και να διεξαχθεί αξιολόγηση της λειτουργίας.
%%% Bibliography %%% Bibliography
\bibliographystyle{softlab-thesis} \bibliographystyle{softlab-thesis}
......
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