Browse Source

chore: add todos

develop
Apostolos Fanakis 3 years ago
parent
commit
cc39b96202
  1. 4
      chapters/0.preamble/0.1.summary.tex
  2. 10
      chapters/1.introduction/1.5.methodology.tex
  3. 7
      chapters/3.application-design/3.1.application-parts.tex
  4. 5
      chapters/3.application-design/3.2.user-categories.tex
  5. 39
      chapters/3.application-design/3.5.technology-stack.tex
  6. 3
      chapters/3.application-design/3.6.architecture.design.tex
  7. 2
      chapters/3.application-design/3.6.implementation-methodology-specification.tex
  8. 2
      chapters/3.application-design/3.7.architecture.design.tex
  9. 5
      chapters/4.application-implementation/4.1.implemented-parts.tex
  10. 10
      chapters/4.application-implementation/4.2.implementation-methodology.tex
  11. 4
      chapters/4.application-implementation/4.3.implementation-technology-stack.tex
  12. 7
      chapters/5.conclusions/5.3.open-areas.tex
  13. 2
      title-page.tex

4
chapters/0.preamble/0.1.summary.tex

@ -3,7 +3,7 @@
Τις τελευταίες δεκαετίες, η ραγδαία ανάπτυξη του διαδικτύου μετέβαλε ριζικά τις ανθρώπινες Τις τελευταίες δεκαετίες, η ραγδαία ανάπτυξη του διαδικτύου μετέβαλε ριζικά τις ανθρώπινες
κοινωνίες, μέσω μίας πληθώρας ψηφιακών εφαρμογών, οι οποίες, στη συντριπτική τους πλειοψηφία, προσφέρονται από παρόχους υπηρεσιών υπολογιστικού νέφους, ακολουθώντας την αρχιτεκτονική πελάτη-εξυπηρετητή. κοινωνίες, μέσω μίας πληθώρας ψηφιακών εφαρμογών, οι οποίες, στη συντριπτική τους πλειοψηφία, προσφέρονται από παρόχους υπηρεσιών υπολογιστικού νέφους, ακολουθώντας την αρχιτεκτονική πελάτη-εξυπηρετητή.
Μολονότι αυτό το μοντέλο υλοποίησης έχει αποδειχθεί ιδιαίτερα λειτουργικό και έχει βελτιωθεί αξιοσημείωτα ανά τα χρόνια, η συγκεντρωτική του λογική συνοδεύεται από μία σειρά προβλημάτων. Πρώτα απ' όλα, ο χρήστης καλείται να εμπιστευθεί τα προσωπικά του δεδομένα σε μία τρίτη οντότητα. Εκείνη, διατηρώντας τον πλήρη έλεγχο επί αυτών, διαθέτει τη δυνατότητα να τα επεξεργάζεται, να τα διαμοιράζεται και να τα λογοκρίνει, είτε για να εξυπηρετήσει τα συμφέροντά της, είτε για να συμμορφωθεί με άλλες αρχές που της ασκούν εξουσία. Επιπλέον, απουσιάζει η εγγύηση της διαθεσιμότητας των δεδομένων, καθώς, ανά πάσα στιγμή, ο εξυπηρετητής μπορεί να αποσυνδεθεί για αόριστο χρονικό διάστημα και λόγω ποικίλων αιτιών, όπως κάποιας κυβερνοεπίθεσης ή κάποιας φυσικής καταστροφής. Μολονότι αυτό το μοντέλο υλοποίησης έχει αποδειχθεί ιδιαίτερα λειτουργικό και έχει βελτιωθεί αξιοσημείωτα ανά τα χρόνια, η συγκεντρωτική του λογική συνοδεύεται από μία σειρά προβλημάτων. Πρώτα απ' όλα, ο χρήστης καλείται να εμπιστευθεί τα προσωπικά του δεδομένα σε μία εξωτερική οντότητα. Εκείνη, διατηρώντας τον πλήρη έλεγχο επί αυτών, διαθέτει τη δυνατότητα να τα επεξεργάζεται, να τα διαμοιράζεται και να τα λογοκρίνει, είτε για να εξυπηρετήσει τα συμφέροντά της, είτε για να συμμορφωθεί με άλλες αρχές που της ασκούν εξουσία. Επιπλέον, απουσιάζει η εγγύηση της διαθεσιμότητας των δεδομένων, καθώς, ανά πάσα στιγμή, ο εξυπηρετητής μπορεί να αποσυνδεθεί για αόριστο χρονικό διάστημα και λόγω ποικίλων αιτιών, όπως κάποιας κυβερνοεπίθεσης ή κάποιας φυσικής καταστροφής.
Αυτοί είναι μερικοί βασικοί λόγοι που συνετέλεσαν στην ταχεία ανάπτυξη ενός συνόλου λογισμικών ανοιχτού κώδικα, όπως του Ethereum blockchain και του IPFS, τα οποία, αν και βρίσκονται σε σχετικά πρώιμο στάδιο, αποτελούν ήδη ικανά εργαλεία δημιουργίας κατανεμημένων και αποκεντρωμένων εφαρμογών. Αυτοί είναι μερικοί βασικοί λόγοι που συνετέλεσαν στην ταχεία ανάπτυξη ενός συνόλου λογισμικών ανοιχτού κώδικα, όπως του Ethereum blockchain και του IPFS, τα οποία, αν και βρίσκονται σε σχετικά πρώιμο στάδιο, αποτελούν ήδη ικανά εργαλεία δημιουργίας κατανεμημένων και αποκεντρωμένων εφαρμογών.
@ -11,4 +11,4 @@
η οποία, αξιοποιώντας τεχνολογίες αποκέντρωσης, αφενός θα επιστρέφει την κυριότητα των προσωπικών η οποία, αξιοποιώντας τεχνολογίες αποκέντρωσης, αφενός θα επιστρέφει την κυριότητα των προσωπικών
δεδομένων στον χρήστη, αφετέρου θα παρέχει τη δυνατότητα διενέργειας διαφανών δημοκρατικών ψηφοφοριών. Αυτά μέσα σε ένα πλαίσιο ανθεκτικό, τόσο σε σφάλματα και επιθέσεις, όσο και σε απόπειρες λογοκρισίας και παραποίησης. δεδομένων στον χρήστη, αφετέρου θα παρέχει τη δυνατότητα διενέργειας διαφανών δημοκρατικών ψηφοφοριών. Αυτά μέσα σε ένα πλαίσιο ανθεκτικό, τόσο σε σφάλματα και επιθέσεις, όσο και σε απόπειρες λογοκρισίας και παραποίησης.
\\[2\baselineskip] \\[2\baselineskip]
\textbf{Λέξεις-Κλειδιά}: Αποκεντροποίηση, Ethereum, Blockchain, Έξυπνο Συμβόλαιο, Αποκεντρωμένη Εφαρμογή, IPFS, OrbitDB \textbf{Λέξεις-Κλειδιά}: Αποκεντροποίηση, Ethereum, Blockchain, Έξυπνο Συμβόλαιο, Αποκεντρωμένη Εφαρμογή, IPFS, OrbitDB, React, Redux, Jenkins

10
chapters/1.introduction/1.5.methodology.tex

@ -1,9 +1,9 @@
\section{Μεθοδολογία ανάπτυξης} \section{Μεθοδολογία της διπλωματικής}
Για την επίτευξη των στόχων που ορίστηκαν και την οργάνωση της εργασίας που απαιτείται σε διαχειρίσιμα μέρη, σχεδιάστηκε η χρήση διάφορων εργαλείων και μεθόδων ανάπτυξης λογισμικού, όπως το σύστημα ελέγχου εκδόσεων (version control system) Git και η μέθοδος οργάνωσης Scrum. Τα εργαλεία αυτά είναι δοκιμασμένα και έχουν εδραιωθεί στη σύγχρονη ανάπτυξη λογισμικού. Η πάρούσα διπλωματική είχε έμπνευση τις συζητήσεις μας με τον Δημάκη.
Το Git είναι δωρεάν λογισμικό ανοιχτού κώδικα το οποίο επιτρέπει και επικουρεί την απρόσκοπτη ανάπτυξη λογισμικού από πολλαπλά μέλη μίας ομάδας, ταυτόχρονα και διανεμημένα. Αυτό επιτυγχάνεται παρέχοντας ένα πλαίσιο από εργαλεία τα οποία βοηθούν την διαχείριση και ενσωμάτωση των διαφορετικών εκδόσεων του κώδικα τις οποίες αναπτύσσει κάθε μέλος της ομάδας ξεχωριστά. Υπάρχουν διάφορα μοντέλα χρήσης του Git και πιο συγκεκριμένα της δυνατότητας που δίνει για δημιουργία, ανάπτυξη και ένωση κλαδιών (branches). Για τους σκοπούς της παρούσας διπλωματικής χρησιμοποιήθηκε το μοντέλο GitHub flow\cite{1.4-github-flow}. Το μοντέλο αυτό ορίζει ότι κάθε προγραμματιστής θα ανοίγει ένα νέο branch για τη ανάπτυξη ενός νέου χαρακτηριστικού της εφαρμογής ή τη διόρθωση ενός μέρους του κώδικα. Έπειτα, όταν η δουλειά έχει ολοκληρωθεί, το branch ενώνεται (merge) με το βασικό branch της εφαρμογής. Αρχικά, πραγματοποιήθηκε έρευνα του χώρου των αποκετρωμένων τεχνολογιών με στόχο την κατανόηση των επιπλοκών αυτών των τεχνολογίων τόσο στην ανάπτυξη του κώδικα όσο και στην χρήση....
Το Scrum είναι μία μέθοδος οργάνωσης στην οποία ο επιμελητής του Scrum (Scrum master) διαχωρίζει τα ανεξάρτητα μέρη εργασίας (tasks) που πρέπει να υλοποιηθούν για την ολοκλήρωση των στόχων ενός project. Τα μέρη αυτά περιγράφονται αναλυτικά μαζί με τις απαιτήσεις τους και κατατίθενται σε μία λίστα εργασιών (backlog). Έπειτα, μέσα από συσκέψεις (meetings), επιλέγεται ένας αριθμός από μέρη εργασίας τα οποία θα αποτελέσουν το επόμενο Sprint. Κάθε μέρος εργασίας ανατίθεται σε κάποιο μέλος για υλοποίηση και ορίζεται για το Sprint μία χρονική διάρκεια, στόχος της οποίας είναι η περάτωση όλων των μερών εργασίας πριν τη λήξη της. Στο τέλος προθεσμίας που ορίστηκε για το Sprint τα μέλη της ομάδας αποτιμούν τα αποτελέσματα και ορίζουν το επόμενο Sprint. Η διαδικασία επαναλαμβάνεται έως ότου το έργο ολοκληρωθεί. Στα πρώτα στάδια της έρευνας εξοικειωθήκαμε με τον χώρο ....
Μέσα από την χρήση των παραπάνω εργαλείων επιτυγχάνεται η ομαλή συνεργασία στην ανάπτυξη του λογισμικού. Κάθε μέλος της ομάδας δύναται να εργαστεί ανεξάρτητα και χωρίς την ανάγκη διαρκούς επικοινωνίας με τα υπόλοιπα μέλη. Οι στόχοι είναι ορισμένοι, σαφείς και χωρισμένοι σε διαχειρίσιμα μέρη τα οποία δεν καταβάλουν τα μέλη. Ταυτόχρονα, έχοντας ως έδρα καθιερωμένα πρότυπα ανάπτυξης, παρέχεται φορμαλισμός και έτοιμες μέθοδοι επίλυσης προβλημάτων, γεγονός που λειτουργεί καταλυτικά και βοηθά στην αποφυγή τελμάτων κατά τη συγγραφή του κώδικα. Έπειτα, έγιναν μερικές πρώτες προσπάθειες για τη δημιουργία ενός proof of concept application...

7
chapters/3.application-design/3.1.application-parts.tex

@ -1,6 +1,9 @@
\section{Λογικά μέρη} \label{section:3-1-logical-parts} \section{Λογικά μέρη} \label{section:3-1-logical-parts}
% TODO: discuss the future tense used in this chapter TODO: add software patterns and stuff...
https://en.wikipedia.org/wiki/Software_development_process#Spiral_development
TODO: remove future tense used in this chapter
Η πλατφόρμα χωρίζεται σε δύο λογικά μέρη τα οποία θα αναλυθούν σε λεπτομέρεια στα επόμενα κεφάλαια: Η πλατφόρμα χωρίζεται σε δύο λογικά μέρη τα οποία θα αναλυθούν σε λεπτομέρεια στα επόμενα κεφάλαια:
\begin{enumerate} \begin{enumerate}
@ -24,6 +27,8 @@
\caption{Ethereum logo} \caption{Ethereum logo}
\end{figure} \end{figure}
TODO: remove AUTH stuff, make it more abstract
Το πρόβλημα αυτής της προσέγγισης είναι πως, για τη λειτουργία της, απαιτείται για κάθε συναλλαγή (transaction) οι Το πρόβλημα αυτής της προσέγγισης είναι πως, για τη λειτουργία της, απαιτείται για κάθε συναλλαγή (transaction) οι
χρήστες να καταβάλουν ένα τέλος. Το τέλος αυτό αφορά τα fees που είναι αναγκαία για την περάτωση των συναλλαγών. Παρόλο χρήστες να καταβάλουν ένα τέλος. Το τέλος αυτό αφορά τα fees που είναι αναγκαία για την περάτωση των συναλλαγών. Παρόλο
που υπάρχουν σχέδια από την ομάδα ανάπτυξης του Ethereum για τη μείωσή αυτών των fees στο μέλλον, θα είναι πάντα που υπάρχουν σχέδια από την ομάδα ανάπτυξης του Ethereum για τη μείωσή αυτών των fees στο μέλλον, θα είναι πάντα

5
chapters/3.application-design/3.2.user-categories.tex

@ -1,5 +1,10 @@
\section{Κατηγορίες χρηστών} \label{section:3-2-user-categories} \section{Κατηγορίες χρηστών} \label{section:3-2-user-categories}
Κατηγορίες:
1. Επισκέπτες
2. Εγγεγραμμένοι χρήστες
3. Δημιουργοί κοινοτήτων ?
\subsection{Πρώτο μέρος} \label{subsection:4-4-first-part} \subsection{Πρώτο μέρος} \label{subsection:4-4-first-part}
Όπως προειπώθηκε, το πρώτο μέρος της πλατφόρμας θα είναι ανοιχτό σε όλους. Ωστόσο, οι χρήστες του μπορούν να διακριθούν Όπως προειπώθηκε, το πρώτο μέρος της πλατφόρμας θα είναι ανοιχτό σε όλους. Ωστόσο, οι χρήστες του μπορούν να διακριθούν

39
chapters/3.application-design/3.5.technology-stack.tex

@ -1,22 +1,13 @@
\section{Τεχνολογίες} \label{section:3-5-technologies} \section{Τεχνολογίες} \label{section:3-5-technologies}
TODO: add react
\subsection{Ethereum} \subsection{Ethereum}
Ξεκινώντας την σχεδίαση της πλατφόρμας πραγματοποιήσαμε έρευνα ώστε να ανακαλύψουμε τις πιθανές επιλογές για το κομμάτι της διανεμημένης επεξεργασίας (\textenglish{distributed computing}). Αναλογιστήκαμε τα προτερήματα και μειονεκτήματα διάφορων επιλογών, συμπεριλαμβανομένων των ... Ξεκινώντας την σχεδίαση της πλατφόρμας πραγματοποιήσαμε έρευνα ώστε να ανακαλύψουμε τις πιθανές επιλογές για το κομμάτι της διανεμημένης επεξεργασίας (\textenglish{distributed computing}). Αναλογιστήκαμε τα προτερήματα και μειονεκτήματα διάφορων επιλογών, συμπεριλαμβανομένων των ...
Επιλέξαμε να προχωρήσουμε με το Ethereum και όχι κάποια άλλη πλατφόρμα επειδή ... Επιλέξαμε να προχωρήσουμε με το Ethereum και όχι κάποια άλλη πλατφόρμα επειδή ...
Το Ethereum είναι ...
Παρέχει Smart Contracts ακολουθώντας το μοντέλο ...
Proof of work είναι ...
Ο τρόπος που υπολογίζεται και πληρώνεται η καταναλώμενη επεξεργαστική ισχύς είναι ...
Αυτά εισάγουν τους εξής περιορισμούς που πρέπει να ληφθούν υπόψιν κατά την υλοποίηση ...
% Παλιό από Drive
Προχωρώντας την τεχνολογία του blockchain ένα βήμα παραπέρα, ξεκίνησαν να δημιουργούνται προγραμματιστικές πλατφόρμες για την ανάπτυξη αποκεντρωτικών εφαρμογών (\textenglish{Decentralized Applications} ή DApps). Η πρώτη και, μέχρι τώρα, πιο δημοφιλής, ισχυρή και λειτουργική πλατφόρμα είναι το Ethereum.
Στο Ethereum υπάρχουν δύο είδη λογαριασμών: οι Externally Owned Accounts και οι \textenglish{Contracts Accounts}. Η διαφορά τους είναι ότι ενώ οι πρώτοι ελέγχονται από τους χρήστες, οι δεύτεροι διαθέτουν ένα αμετάβλητο (immutable) κομμάτι κώδικα το οποίο αποτελεί ένα \textenglish{Smart Contract}. Όταν μια συναλλαγή σταλεί σε ένα Smart Contract, ο συσχετιζόμενος κώδικας εκτελείται από την “Ethereum Virtual Machine (EVM)” σε κάθε κόμβο (και εν τέλει όλοι έρχονται σε consensus). Φυσικά, για την εκτέλεση των operations στην EVM (όπως και για τα απλά \textenglish{transactions}) χρειάζεται να δοθούν κάποια fees στους miners ως ανταμοιβή για την εργασία τους.
\subsection{IPFS, OrbitDB} \subsection{IPFS, OrbitDB}
@ -24,31 +15,5 @@ Proof of work είναι ...
Επιλέξαμε να προχωρήσουμε με το IPFS και την OrbitDB έναντι άλλων λύσεων επειδή ... Επιλέξαμε να προχωρήσουμε με το IPFS και την OrbitDB έναντι άλλων λύσεων επειδή ...
Το IPFS είναι ...
Παρέχει ... με τον εξής τρόπο ...
Δωρεάν ...
Αυτά τα χαρακτηριστικά εισάγουν τους εξής περιορισμούς που πρέπει να ληφθούν υπόψιν κατά την υλοποίηση ...
Η OrbitDB είναι ... και χρησιμοποιεί το IPFS για να καταφέρει τα εξής χαρακτηριστικά ... Η OrbitDB είναι ... και χρησιμοποιεί το IPFS για να καταφέρει τα εξής χαρακτηριστικά ...
Περιορισμοί πάλι κλπ ... Περιορισμοί πάλι κλπ ...
% Παλιό από Drive
Ένα από τα προβλήματα που προκύπτουν με την αποκέντρωση εφαρμογών είναι αυτό της εύρεσης των resources που χρειαζόμαστε. Το πρόβλημα έγκειται στο γεγονός ότι δεν υπάρχει ένας server και άρα μία μοναδική διεύθυνση IP από την οποία μπορούμε να πάρουμε το αντικείμενο που ψάχνουμε, διότι όλα είναι διανεμημένα στο δίκτυο. Επιπλέον η αποθήκευση μεγάλου όγκου πληροφοριών στο Ethereum on-chain έχει απαγορευτικά μεγάλο κόστος οπότε απορρίπτεται.
Το πρόβλημα ανάγεται σε αυτό της επικοινωνίας μεταξύ των κόμβων. Αν καθοριστεί ένα πρότυπο επικοινωνίας μεταξύ των κόμβων τότε τα αντικείμενα μπορούν να βρεθούν ζητώντας τα από τους γειτονικούς κόμβους, οι οποίοι με τη σειρά τους θα τα ζητήσουν από τους δικούς τους γείτονες και ου το κάθε εξής, μέχρι το αντικείμενο να βρεθεί και να σταλεί στον κόμβο που αρχικά το ζήτησε.
Το IPFS είναι ένα νέο πρωτόκολλο μεταφοράς υπερκειμένου που βρίσκεται ακόμα υπό ανάπτυξη. Όπως το γνωστό πρωτόκολλο HTTP, για συγκεντρωτικά συστήματα, έτσι και το IPFS, για αποκεντρωτικά συστήματα, καθορίζει το πρότυπο το οποίο θα χρησιμοποιούν τα τερματικά του δικτύου για να επικοινωνούν μεταξύ τους. Χρησιμοποιεί κρυπτογραφικές τεχνικές, όπως αυτές που είδαμε παραπάνω, καθώς και διάφορες άλλες τεχνολογίες για να:
\begin{itemize}
\item συντονίσει τη παράδοση περιεχομένου
\item υλοποιήσει στρώμα σύνδεσης μέσω οποιουδήποτε πρωτοκόλλου δικτύου
\item ορίσει ένα σύστημα ονομάτων τομέων (DNS)
\item υλοποιήσει στρώμα δρομολόγησης
\item διαμοιράσει αρχεία με peer-to-peer (P2P) τεχνικές
\end{itemize}
Έτσι το IPFS ορίζει ένα νέο δίκτυο υπολογιστών που συμπληρώνει τα ήδη υπάρχοντα (www, Tor, .bit) διατηρώντας πλήρως αποκεντρωμένη αρχιτεκτονική και κανένα κεντρικό σημείο αποτυχίας.
Συνοπτικά, δηλαδή, στο IPFS αποθηκεύονται διευθυνσιοδοτημένα βάσει περιεχομένου (\textenglish{content addressable}) αρχεία, τα οποία ανακτώνται βάσει του hash των περιεχομένων τους (αντί για την τοποθεσία τους), ενώ ανακαλύπτονται και διαμοιράζονται μέσω του παρεχόμενου P2P network layer. Αξίζει, ωστόσο, να σημειωθεί πως το layer αυτό δεν εγγυάται από μόνο του το hosting των αρχείων και το διαθέσιμο bandwidth για την ανάκτηση τους, πράγμα που σημαίνει ότι θα πρέπει να γίνει παροχή υποδομής από τους χρήστες ικανής να υποστηρίξει έναν ελάχιστο αριθμό κόμβων αποθήκευσης.
Πρόκειται για συμπληρωματικές τεχνολογίες στις παραπάνω που στόχο έχουν την οργάνωση των αποθηκευμένων πληροφοριών σε μορφή βάσεων δεδομένων.

3
chapters/3.application-design/3.6.architecture.design.tex

@ -1,3 +0,0 @@
\section{Αρχιτεκτονική} \label{section:3-6-design-architecture}
Στο κεφάλαιο αυτό θα περιγραφεί η αρχιτεκτονική του συστήματος, όπως αυτό σχεδιάστηκε αρχικά. Η αρχιτεκτονική αυτή είναι πρώιμη και δεν αποτελεί την τελική υλοποίηση της πλατφόρμας στο σύνολό της. Μέρη της πρώιμης αρχιτεκτονικής είναι διαφορετικά από αυτά της τελικής η οποία περιγράφεται σε επόμενο κεφάλαιο.

2
chapters/3.application-design/3.6.implementation-methodology-specification.tex

@ -1,5 +1,7 @@
\section{Προδιαγραφή μεθόδου υλοποίησης και χρονοπρογραμματισμός} \label{section:3-6-implementation-methodology-specification} \section{Προδιαγραφή μεθόδου υλοποίησης και χρονοπρογραμματισμός} \label{section:3-6-implementation-methodology-specification}
TODO: remove feeless and reputation from cycles, add communities
\subsection{Προδιαγραφή κύκλων} \subsection{Προδιαγραφή κύκλων}
Εποπτικά, η διαδικασία της υλοποίησης περιγράφεται ως εξής: Εποπτικά, η διαδικασία της υλοποίησης περιγράφεται ως εξής:

2
chapters/3.application-design/3.7.architecture.design.tex

@ -1 +1,3 @@
\section{Αρχιτεκτονική} \label{section:3-7-architecture-design} \section{Αρχιτεκτονική} \label{section:3-7-architecture-design}
Στο κεφάλαιο αυτό θα περιγραφεί η αρχιτεκτονική του συστήματος, όπως αυτό σχεδιάστηκε αρχικά. Η αρχιτεκτονική αυτή είναι πρώιμη και δεν αποτελεί την τελική υλοποίηση της πλατφόρμας στο σύνολό της. Μέρη της πρώιμης αρχιτεκτονικής είναι διαφορετικά από αυτά της τελικής η οποία περιγράφεται σε επόμενο κεφάλαιο.

5
chapters/4.application-implementation/4.1.implemented-parts.tex

@ -1 +1,6 @@
\section{Χαρακτηριστικά που υλοποιήθηκαν} \section{Χαρακτηριστικά που υλοποιήθηκαν}
TODO: move to last, add diagram with colors
TODO: add references to use cases implemented with screenshots of application
TODO: add unimplemented parts like serve (front and contracts) thru IPFS, upgradability
TODO: add differences in architecture

10
chapters/4.application-implementation/4.2.implementation-methodology.tex

@ -1 +1,11 @@
\section{Μεθοδολογία υλοποίησης} \section{Μεθοδολογία υλοποίησης}
Για την επίτευξη των στόχων που ορίστηκαν και την οργάνωση της εργασίας που απαιτείται σε διαχειρίσιμα μέρη, σχεδιάστηκε η χρήση διάφορων εργαλείων και μεθόδων ανάπτυξης λογισμικού, όπως το σύστημα ελέγχου εκδόσεων (version control system) Git και η μέθοδος οργάνωσης Scrum. Τα εργαλεία αυτά είναι δοκιμασμένα και έχουν εδραιωθεί στη σύγχρονη ανάπτυξη λογισμικού.
Το Git είναι δωρεάν λογισμικό ανοιχτού κώδικα το οποίο επιτρέπει και επικουρεί την απρόσκοπτη ανάπτυξη λογισμικού από πολλαπλά μέλη μίας ομάδας, ταυτόχρονα και διανεμημένα. Αυτό επιτυγχάνεται παρέχοντας ένα πλαίσιο από εργαλεία τα οποία βοηθούν την διαχείριση και ενσωμάτωση των διαφορετικών εκδόσεων του κώδικα τις οποίες αναπτύσσει κάθε μέλος της ομάδας ξεχωριστά. Υπάρχουν διάφορα μοντέλα χρήσης του Git και πιο συγκεκριμένα της δυνατότητας που δίνει για δημιουργία, ανάπτυξη και ένωση κλαδιών (branches). Για τους σκοπούς της παρούσας διπλωματικής χρησιμοποιήθηκε το μοντέλο GitHub flow\cite{1.4-github-flow}. Το μοντέλο αυτό ορίζει ότι κάθε προγραμματιστής θα ανοίγει ένα νέο branch για τη ανάπτυξη ενός νέου χαρακτηριστικού της εφαρμογής ή τη διόρθωση ενός μέρους του κώδικα. Έπειτα, όταν η δουλειά έχει ολοκληρωθεί, το branch ενώνεται (merge) με το βασικό branch της εφαρμογής.
Το Scrum είναι μία μέθοδος οργάνωσης στην οποία ο επιμελητής του Scrum (Scrum master) διαχωρίζει τα ανεξάρτητα μέρη εργασίας (tasks) που πρέπει να υλοποιηθούν για την ολοκλήρωση των στόχων ενός project. Τα μέρη αυτά περιγράφονται αναλυτικά μαζί με τις απαιτήσεις τους και κατατίθενται σε μία λίστα εργασιών (backlog). Έπειτα, μέσα από συσκέψεις (meetings), επιλέγεται ένας αριθμός από μέρη εργασίας τα οποία θα αποτελέσουν το επόμενο Sprint. Κάθε μέρος εργασίας ανατίθεται σε κάποιο μέλος για υλοποίηση και ορίζεται για το Sprint μία χρονική διάρκεια, στόχος της οποίας είναι η περάτωση όλων των μερών εργασίας πριν τη λήξη της. Στο τέλος προθεσμίας που ορίστηκε για το Sprint τα μέλη της ομάδας αποτιμούν τα αποτελέσματα και ορίζουν το επόμενο Sprint. Η διαδικασία επαναλαμβάνεται έως ότου το έργο ολοκληρωθεί.
Μέσα από την χρήση των παραπάνω εργαλείων επιτυγχάνεται η ομαλή συνεργασία στην ανάπτυξη του λογισμικού. Κάθε μέλος της ομάδας δύναται να εργαστεί ανεξάρτητα και χωρίς την ανάγκη διαρκούς επικοινωνίας με τα υπόλοιπα μέλη. Οι στόχοι είναι ορισμένοι, σαφείς και χωρισμένοι σε διαχειρίσιμα μέρη τα οποία δεν καταβάλουν τα μέλη. Ταυτόχρονα, έχοντας ως έδρα καθιερωμένα πρότυπα ανάπτυξης, παρέχεται φορμαλισμός και έτοιμες μέθοδοι επίλυσης προβλημάτων, γεγονός που λειτουργεί καταλυτικά και βοηθά στην αποφυγή τελμάτων κατά τη συγγραφή του κώδικα.
TODO: add continuous integration

4
chapters/4.application-implementation/4.3.implementation-technology-stack.tex

@ -1 +1,5 @@
\section{Τεχνολογίες υλοποίησης} \section{Τεχνολογίες υλοποίησης}
TODO: add ganache, truffle
TODO: add additional technologies like redux, sagas, express, nodejs, docker
TODO: add jenkins, janus and build steps diagram

7
chapters/5.conclusions/5.3.open-areas.tex

@ -1 +1,8 @@
\section{Ανοιχτά θέματα} \section{Ανοιχτά θέματα}
TODO: add
1. feeless
2. reputation system
3. voting types
4. token distribution
5. ethereum, ipfs, move to proof of stake, remove of rendezvous server

2
title-page.tex

@ -1,6 +1,6 @@
\universityLogo{assets/figures/auth-logo.png} \universityLogo{assets/figures/auth-logo.png}
\title{Αυτόνομο αμεσοδημοκρατικό κοινωνικό δίκτυο βασισμένο σε τεχνολογίες αποκέντρωσης} \title{Αυτόνομο κοινωνικό δίκτυο βασισμένο σε τεχνολογίες αποκέντρωσης}
\author[1]{Νικολαΐδης Παναγιώτης} \author[1]{Νικολαΐδης Παναγιώτης}
\author[2]{Φανάκης Απόστολος} \author[2]{Φανάκης Απόστολος}

Loading…
Cancel
Save