|
@@ -32,6 +32,48 @@ Figure~\ref{fig:components} contains a component diagram that illustrates these
|
|
|
\end{figure}
|
|
|
|
|
|
|
|
|
+\section{System Requirements}\label{sec:systemRequirements}
|
|
|
+\begin{table}[ht]
|
|
|
+ \centering
|
|
|
+ \small
|
|
|
+ \begin{longtable}{l l p{6cm}}
|
|
|
+ \rowcolor{gray!50}
|
|
|
+ \textbf{Requirement} & \textbf{Minimum} & \textbf{Recommended} \\
|
|
|
+ Free disk space & 150MB & 150MB \\
|
|
|
+ \rowcolor{gray!25}
|
|
|
+ Free RAM & 300MB (single window) & More for multiple windows/graphs \\
|
|
|
+ \rowcolor{gray!25}
|
|
|
+ & & At least 2 GB for running the automatic tests. \\
|
|
|
+ Display & 1024 × 768 resolution & 1920 x 1080 resolution \\
|
|
|
+ \rowcolor{gray!25}
|
|
|
+ CPU & capable of running java applications & faster is better \\
|
|
|
+ GPU & not any & not any\\
|
|
|
+ \rowcolor{gray!25}
|
|
|
+ Internet connection & not any & not any\\
|
|
|
+ \\
|
|
|
+ \end{longtable}
|
|
|
+ \caption{System Requirements}
|
|
|
+ \label{table:systemRequirements}
|
|
|
+\end{table}
|
|
|
+
|
|
|
+
|
|
|
+\section{Software Dependencies}\label{sec:softwareDependencies}
|
|
|
+\begin{table}[ht]
|
|
|
+ \centering
|
|
|
+ \small
|
|
|
+ \begin{longtable}{l l p{6cm}}
|
|
|
+ \rowcolor{gray!50}
|
|
|
+ \textbf{Dependency} & \textbf{Version} \\
|
|
|
+ Java & $\geq8$ \\
|
|
|
+ \rowcolor{gray!25}
|
|
|
+ JSON-java~\ref{leary_json-java:_2018} & \\
|
|
|
+ Eclipse Layout Kernel~\ref{noauthor_elk:_2018} & \\
|
|
|
+ \end{longtable}
|
|
|
+ \caption[Software Dependencies]{Software Dependencies. If no version is given, all should work and the latest is recommended.}
|
|
|
+ \label{table:softwareDependencies}
|
|
|
+\end{table}
|
|
|
+
|
|
|
+
|
|
|
\section{Input File Format}\label{sec:inputFileFormat}
|
|
|
The input to \appname\ is a JSON file.
|
|
|
An example is displayed in figure~\ref{fig:json-example}.
|
|
@@ -170,22 +212,23 @@ By these means our implementation is oriented more towards the original paper by
|
|
|
|
|
|
The \enquote{stages} of the algorithm, located in the package \code{bk}, represent intervals during which each step of the algorithm is performed in a similar way.
|
|
|
These stages, however, do not run the algorithm, but instead create lines of pseudocode, class \code{PseudoCodeNode}, that can be executed (don't be mislead by the term pseudocode!).
|
|
|
-More precisely each \code{PseudoCodeNode} is a line of code that can be displayed and contains a \code{CodeLine} that can be executed.
|
|
|
-All the stages are displayed in class diagram~\ref{fig:bk}.
|
|
|
+More precisely, each \code{PseudoCodeNode} is a line of code that can be displayed and contains a \code{CodeLine} that can be executed.
|
|
|
+The \code{PseudoCodeNode}s are arranged hierarchically to form a whole pseudocode tree.
|
|
|
+All the stages are displayed in class diagram~\ref{fig:bk} while the different kinds of \code{CodeLine}s are listed in class diagram~\ref{fig:codeline}.
|
|
|
|
|
|
-\TODO{write about processor}
|
|
|
-
|
|
|
-Note that the \code{AnimationController} is not a controller in the MVC sense that it processes user input, but in the sense that it \emph{controls} the execution of steps/stages.
|
|
|
+For the execution of the \code{CodeLine}s a \code{PseudoCodeProcessor} interacts with its own \code{ProcessController} and \code{Memory}.
|
|
|
+Note that the \code{ProcessController} is not a controller in the MVC sense that it processes user input, but in the sense that it \emph{controls} the execution of steps/stages.
|
|
|
This works the following:
|
|
|
\begin{enumerate}
|
|
|
- \item The \code{MainView} creates a node placement algorithm (only \code{BKNodePlacement} available).
|
|
|
- It sends an \code{AnimationController} as a parameter for the constructor.
|
|
|
- \item The algorithm concurrently asks the \code{AnimationController} if it should do a forward or backward step and if that is a \enquote{step into}, \enquote{step over} or \enquote{step out}.
|
|
|
- \item The \code{AnimationController} waits until it knows which action to take (for example if the user pressed Alt + Right arrow key).
|
|
|
+ \item The \code{MainView} creates a node placement algorithm (only \code{BKNodePlacement} available) and a \code{PseudoCodeProcessor} to run it.
|
|
|
+ \item The processor concurrently asks its associated \code{ProcessController} if it should do a forward or backward step and if that is a \enquote{step into}, \enquote{step over} or \enquote{step out}.
|
|
|
+ \item The \code{ProcessController} waits until it knows which action to take (for example if the user pressed Alt + Right arrow key, see chapter~\ref{ch:ui}).
|
|
|
Alternatively, if the animation is not paused, it waits until a specific delay has passed.
|
|
|
- Then it returns to the algorithm which step to take next.
|
|
|
- \item The algorithm potentially calls one the step methods of other stages while executing one step.
|
|
|
+ Then it returns to the processor which step to take next.
|
|
|
+ \item Depending on the return value, the processor executes one or multiple lines of code in forwards or backwards direction.
|
|
|
\end{enumerate}
|
|
|
+A class diagrams for the \code{processor} package is displayed in figure~\ref{fig:processor}.
|
|
|
+
|
|
|
|
|
|
\begin{figure}[htp]
|
|
|
\centering
|