-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtechnical_section.tex
executable file
·49 lines (33 loc) · 4.42 KB
/
technical_section.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
\drop{Η} τρέχων ενότητα αφορά την ανάλυση και τον σχεδιασμό του συστήματος που υλοποιήθηκε. Θα γίνει περιγραφή τον εργαλείων που χρησιμοποιήθηκαν και για ποιο λόγο όπως επιπλέον την αρχιτεκτονική της εφαρμογής για την ικανοποίηση των απαιτήσεων και των χαρακτηριστικών αυτής.
\section{Σχεδιασμός}
\subsection{Απαιτήσεις συστήματος}
Για τον σωστό σχεδιασμό και την ομαλότερη διαδικασία ανάπτυξης του συστήματος τέθηκαν κάποιοι στόχοι οι οποίοι αναφέρονται ως απαιτήσεις αυτού και αντιπροσωπεύουν όλες τις λειτουργίες και τα χαρακτηριστικά που διαθέτει. Οι απαιτήσεις ορίστηκαν ως εξής:
\begin{itemize}
\item Χρησιμοποιώντας τη διεπαφή που μας παρέχει το \tl{Twitter (Search API)} να ζητήσουμε να εξορύσσουμε δεδομένα χρησιμοποιώντας ορισμένα κριτήρια (λέξεις κλειδιά, γεωγραφική τοποθεσία κ.ο.κ.).
\item Η οπτικοποίηση στον εικονικό κόσμο του \tl{Minecraft} να είναι ευχάριστη προς το παίκτη ώστε να μην του δημιουργείται η αντίληψη ότι δε συμβαδίζει με το παιχνίδι και τους μηχανισμούς του.
\item Ο συγχρονισμός των νέων \tl{tweet} να γίνεται αυτόματα μέσα στο παιχνίδι.
\item Αντίστοιχα οι αιτήσεις στο \tl{Twitter (Search API)} θα πρέπει να γίνονται αυτοματοποιημένα, χωρίς να χρειάζεται ανθρώπινη παρέμβαση.
\item Ο χρήστης να μπορεί να δει τις λεπτομέρειες του \tl{tweet} (όνομα συγγραφέα, κείμενο, ημερομηνία κ.α.) χωρίς να χρειαστεί να αφήσει το παράθυρο του παιχνιδιού.
\end{itemize}
\subsection{Αρχιτεκτονική του παιχνιδιού}
Για να μπορέσουμε να κατανοήσουμε καλύτερα τη δομή του συστήματος που αναπτύχθηκε θα χρειαστεί να μελετήσουμε επιφανειακά την αρχιτεκτονική δομή του παιχνιδιού.
Το \tl{Minecraft} είναι βασισμένο πάνω στο μοντέλο \tl{client-server}. \tl{Client} στο \tl{minecraft} είναι η εφαρμογή που τρέχει στους υπολογιστές των χρηστών και ο ρόλος του είναι πολύ περιορισμένος, όπως εμφανίζει τα γραφικά του παιχνιδιού, να κρατάει ένα αντίγραφο του κόσμου, να δέχεται τα πλήκτρα που πατάει ο χρήστης κ.ο.κ.
Αντίστοιχα, ο \tl{server} έχει την ευθύνη για να εκτελεί τη λογική όλη την παιχνιδιού και να επικυρώνει την είσοδο από τον \tl{client}.
Η αρχιτεκτονική που περιγράφεται παραπάνω, υπάρχει ακόμα και όταν ο χρήστης παίζει σε \tl{singleplayer mode}, όπου σε αυτή την περίπτωση ο \tl{server} τρέχει τοπικά μαζί με τον \tl{client}.
\formattedpicture{singleplayer-client-server}
{\tl{Singleplayer mode - }Σχέση \tl{Client - Server}}
\formattedpicture{multiplayer-client-server}
{\tl{Multiplayer mode - }Σχέση \tl{Client - Server}}
\subsection{Αρχιτεκτονική συστήματος}
\formattedpicture{system-architecture}
{\tl{Twitter city system architecture}}
Το σύστημα αποτελείτε κατά κύριο λόγο από δύο επιμέρους συστήματα και μία βάση δεδομένων το οποία είναι υπεύθυνα για την καλή λειτουργία της όλης εφαρμογής και κάθε ένα έχει τη δική του ευθύνη.
Έχουν υλοποιηθεί δύο εφαρμογές οι οποίες είναι ανεξάρτητες μεταξύ τους και με διαφορετικούς ρόλους. Η πρώτη εφαρμογή, διαβάζει δεδομένα από το \tl{Twitter} χρησιμοποιώντας το \tl{API} που παρέχει δημόσια η ίδια εταιρία, τα φιλτράρει και τα αποθηκεύει στη βάση δεδομένων. Η δεύτερη εφαρμογή διαβάζει αυτά τα δεδομένα και αναλαμβάνει την οικοδόμηση διαφόρων κατασκευών στο \tl{Minecraft}.
\subsubsection{Βάση δεδομένων}
Η βάση δεδομένων που υποστηρίζει τη λειτουργία της εφαρμογής είναι μια σχεσιακή βάση δεδομένων εν ονόματι η
\tl{MySQL}\footnote{\href{https://www.mysql.com/}{\tl{https://www.mysql.com/}}}
Μία σχεσιακή βάση δεδομένων οργανώνει τα συλλεγμένα δεδομένα σε συσχετισμένους πίνακες και παρέχει ταυτόχρονα ένα μηχανισμό για ανάγνωση, εγγραφή, τροποποίηση ή και πιο πολύπλοκες διαδικασίες πάνω στα δεδομένα.
Τα δεδομένα μπορούν να αναδιοργανώνονται με πολλούς διαφορετικούς τρόπους, σε νοητούς πίνακες, χωρίς να είναι απαραίτητη η επέμβαση στους πραγματικούς πίνακες που είναι αποθηκευμένα. Για αυτό τον σκοπό, χρησιμοποιείται η διαλογική γλώσσα \tl{SQL (Structured Query Language)}.
Η \tl{MySQL} είναι ένα σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων (\tl{RDBMS}) το οποίο μετρά περισσότερες από 11 εκατομμύρια εγκαταστάσεις. Έλαβε το όνομά του από την κόρη του Μόντυ Βιντένιους, τη Μάι. Το πρόγραμμα τρέχει έναν εξυπηρετητή (\tl{server}) παρέχοντας πρόσβαση πολλών χρηστών σε ένα σύνολο βάσεων δεδομένων.
Ο κώδικας του εγχειρήματος είναι διαθέσιμος μέσω της \tl{GNU General Public License}, καθώς και μέσω ορισμένων ιδιόκτητων συμφωνιών. Ανήκει και χρηματοδοτείται από μία και μοναδική κερδοσκοπική εταιρία, τη σουηδική \tl{MySQL AB}, η οποία σήμερα ανήκει στην \tl{Oracle}.
\subsection{Μοντέλο προγραμματισμού}