diff --git a/chapters/3.application-design/3.6.use-cases.tex b/chapters/3.application-design/3.6.use-cases.tex index b135a04..facf84c 100644 --- a/chapters/3.application-design/3.6.use-cases.tex +++ b/chapters/3.application-design/3.6.use-cases.tex @@ -13,5 +13,4 @@ \input{chapters/3.application-design/3.6.use-cases/3.6.7.use-case-vote-in-poll} \input{chapters/3.application-design/3.6.use-cases/3.6.8.use-case-vote-post} \input{chapters/3.application-design/3.6.use-cases/3.6.9.delete-local-data} - -%TODO: Add missing use cases \ No newline at end of file +\input{chapters/3.application-design/3.6.use-cases/3.6.10.use-case-create-community} diff --git a/chapters/3.application-design/3.6.use-cases/3.6.10.use-case-create-community.tex b/chapters/3.application-design/3.6.use-cases/3.6.10.use-case-create-community.tex new file mode 100644 index 0000000..6e9923f --- /dev/null +++ b/chapters/3.application-design/3.6.use-cases/3.6.10.use-case-create-community.tex @@ -0,0 +1,70 @@ +% ===== ===== +% Use case 10 +% ===== ===== +\subsection{Σενάριο χρήσης 10: Δημιουργία κοινότητας} \label{subsection:3-10-use-case-create-community} + +Το σενάριο χρήσης 10, <ΣΧ-10>, περιγράφει τις διαδοχικές ενέργειες που εκτελούνται για την δημιουργία μίας κοινότητας. Στους πίνακες \ref{table:3-6-use-case-create-community} και \ref{table:3-6-use-case-create-community-base-flow} παρατίθενται οι βασικές πληροφορίες του <ΣΧ-10> και οι ενέργειες της βασικής ροής αντίστοιχα, ενώ στο σχήμα \ref{figure:3-6-use-case-create-community-base-flow-sequence-diagram} φαίνεται το διάγραμμα της βασικής ροής. + +\useCaseTable +{Δημιουργώ νέα κοινότητα} +{Στόχος του σεναρίου χρήσης είναι ο χρήστης να μπορεί να δημιουργήσει νέα κοινότητα.} +{\ref{srs:functional-srs-create-communities}, \ref{srs:functional-srs-assign-community-contract}} +{\ref{srs:non-functional-srs-minimize-fees}} +{Ο χρήστης πατάει το κουμπί δημιουργίας νέας κοινότητας.} +{Ο χρήστης να έχει συνδεθεί στην εφαρμογή και να βρίσκεται στην αρχική σελίδα.} +{Σενάριο χρήσης 10, δημιουργία νέας κοινότητας.} +{\label{table:3-6-use-case-create-community}} + +% ===== Base flow ===== + +\useCaseBaseFlowTable +{ + 1 & Ο χρήστης πατάει το κουμπί δημιουργίας νέας κοινότητας. & Το σύστημα εμφανίζει την φόρμα ``Δημιουργία Κοινότητας''. \\ [0.5ex] + \midrule + 2 & Ο χρήστης συμπληρώνει τα πεδία και πατάει το κουμπί ``Υποβολή''. & Το σύστημα δημιουργεί νέα κοινότητα στο blockchain. \\ [0.5ex] +} +{Το σύστημα μεταβαίνει στην σελίδα της νέας κοινότητας.} +{Σενάριο χρήσης 10 - Βασική ροή} +{\label{table:3-6-use-case-create-community-base-flow}} + +\begin{figure}[H] + \centering + \input{tikz/chapter-3/3-6-use-case-create-community-sequence-diagram} + \caption{Σενάριο χρήσης 10 - Διάγραμμα βασικής ροής} + \label{figure:3-6-use-case-create-community-base-flow-sequence-diagram} +\end{figure} + +% ===== Alternate flow ===== + +Το <ΣΧ-10> περιέχει επίσης δύο εναλλακτικές ροές που μπορεί να προκύψουν βάσει των επιλογών του χρήστη και οι οποίες περιγράφονται στους πίνακες \ref{table:3-6-use-case-create-community-alternate-flow-1} και \ref{table:3-6-use-case-create-community-alternate-flow-2}. Η εναλλακτική ροή 1 φαίνεται επίσης στο σχήμα \ref{figure:3-6-use-case-create-community-alternate-flow-1-sequence-diagram} όπου παρουσιάζεται το διάγραμμα ροής της. + +\useCaseAlternateFlowTable +{1} +{Ο χρήστης ορίζει εξωτερικό contract για την κοινότητα.} +{Εφόσον ο χρήστης στη γραμμή 2 της Βασικής Ροής επιλέξει ``Προσθήκη Συμβολαίου'' το σύστημα ανανεώνει την σελίδα προσθέτοντας τα επιπλέον πεδία της φόρμας ``Σύνδεση Συμβολαίου''.} +{ + 1 & Ο χρήστης, αφού συμπληρώσει τη φόρμα ``Δημιουργία Κοινότητας'', πατάει το κουμπί ``Προσθήκη ψηφοφορίας'' & Το σύστημα ανανεώνει τη σελίδα με τα πεδία της φόρμας ``Σύνδεση Συμβολαίου''. \\ [0.5ex] + \midrule + 2 & Ο χρήστης συμπληρώνει τα πεδία και πατάει το κουμπί ``Υποβολή''. & Το σύστημα δημιουργεί την νέα κοινότητα στο blockchain και την συνδέει με το εξωτερικό contract. \\ [0.5ex] +} +{Το σύστημα μεταβαίνει στην σελίδα της νέας κοινότητας.} +{Σενάριο χρήσης 10 - Εναλλακτική ροή 1} +{\label{table:3-6-use-case-create-community-alternate-flow-1}} + +\begin{figure}[H] + \centering + \input{tikz/chapter-3/3-6-use-case-create-community-alternate-flow-1-sequence-diagram} + \caption{Σενάριο χρήσης 3 - Διάγραμμα εναλλακτικής ροής 1} + \label{figure:3-6-use-case-create-community-alternate-flow-1-sequence-diagram} +\end{figure} + +\useCaseAlternateFlowTable +{2} +{Ο χρήστης πατάει το κουμπί ``Άκυρο''.} +{Εφόσον ο χρήστης στη γραμμή 2 της Βασικής Ροής ή στη γραμμή 2 της Εναλλακτικής Ροής 1 επιλέξει ``Άκυρο'' το σύστημα επιστρέφει στην αρχική σελίδα της εφαρμογής.} +{ + 1 & Ο χρήστης πατάει το κουμπί ``Άκυρο'' & Το σύστημα επιστρέφει στην αρχική σελίδα της εφαρμογής. +} +{Το σενάριο χρήσης τερματίζεται.} +{Σενάριο χρήσης 10 - Εναλλακτική ροή 2} +{\label{table:3-6-use-case-create-community-alternate-flow-2}} diff --git a/chapters/4.application-implementation/4.5.implemented-parts.tex b/chapters/4.application-implementation/4.5.implemented-parts.tex index 18c2cd1..0e9cfb5 100644 --- a/chapters/4.application-implementation/4.5.implemented-parts.tex +++ b/chapters/4.application-implementation/4.5.implemented-parts.tex @@ -19,8 +19,7 @@ Τα χαρακτηριστικά τα οποία παραλήφθηκαν είναι τα παρακάτω: \begin{itemize} - \item η δημιουργία κοινοτήτων όπως περιγράφεται στην \ref{srs:functional-srs-create-communities} και στο σενάριο χρήσης todo - \item ο ορισμός εξωτερικών contracts για τα tokens των κοινοτήτων όπως περιγράφεται στην \ref{srs:functional-srs-assign-community-contract} και στο σενάριο χρήσης todo + \item η δημιουργία κοινοτήτων και ο ορισμός εξωτερικών contracts για τα tokens τους όπως περιγράφεται στις \ref{srs:functional-srs-create-communities} \& \ref{srs:functional-srs-assign-community-contract} και στο σενάριο χρήσης \ref{subsection:3-10-use-case-create-community} \end{itemize} Τέλος, η ΜΛΑ που αφορά την ελαχιστοποίηση των fees (\ref{srs:non-functional-srs-minimize-fees}) ακολουθήθηκε κατά το δυνατόν σε όλη τη διαδικασία σχεδιασμού και υλοποίησης. Η ΜΛΑ σχετικά με την αναβαθμισιμότητα των contracts (\ref{srs:non-functional-srs-upgrade-contracts}) καταστρατηγήθηκε λόγω του χρόνου που θα απαιτούσε μία τέτοια υλοποίηση. diff --git a/thesis.pdf b/thesis.pdf index 5484f6f..a7a1002 100644 Binary files a/thesis.pdf and b/thesis.pdf differ diff --git a/tikz/chapter-3/3-6-use-case-create-community-alternate-flow-1-sequence-diagram.tex b/tikz/chapter-3/3-6-use-case-create-community-alternate-flow-1-sequence-diagram.tex new file mode 100644 index 0000000..2f04687 --- /dev/null +++ b/tikz/chapter-3/3-6-use-case-create-community-alternate-flow-1-sequence-diagram.tex @@ -0,0 +1,21 @@ +\begin{sequencediagram} + \newthread{actor}{Actor}{} + \newinst[4]{concordia}{:Concordia}{} + \newinst[4]{eth}{:Ethereum}{} + \newinst{orbit}{:OrbitDb}{} + + \begin{call}{actor}{Create community}{concordia}{Community creation form} + \end{call} + + \begin{call}{actor}{Add external contract}{concordia}{External contract form} + \end{call} + + \begin{call}{actor}{Submit}{concordia}{Created community page} + + \begin{call}{concordia}{Create community}{eth}{New community ID} + \end{call} + + \begin{call}{concordia}{Connect external contract}{eth}{} + \end{call} + \end{call} +\end{sequencediagram} diff --git a/tikz/chapter-3/3-6-use-case-create-community-sequence-diagram.tex b/tikz/chapter-3/3-6-use-case-create-community-sequence-diagram.tex new file mode 100644 index 0000000..144033b --- /dev/null +++ b/tikz/chapter-3/3-6-use-case-create-community-sequence-diagram.tex @@ -0,0 +1,16 @@ +\begin{sequencediagram} + \newthread{actor}{Actor}{} + \newinst[3]{concordia}{:Concordia}{} + \newinst[2]{eth}{:Ethereum}{} + \newinst[1]{orbit}{:OrbitDb}{} + + \begin{call}{actor}{Create community}{concordia}{Community creation form} + \end{call} + + \begin{call}{actor}{Submit}{concordia}{Created community page} + + \begin{call}{concordia}{Create community}{eth}{New community ID} + \end{call} + + \end{call} +\end{sequencediagram}