From 77764bee49c93a5d08d134cf7919b7f84a997e20 Mon Sep 17 00:00:00 2001
From: InigoGutierrez <inigogf.95@gmail.com>
Date: Sat, 25 Jun 2022 19:56:48 +0200
Subject: Back to the documentation after creating neural networks.

---
 doc/tex/systemAnalysis.tex | 99 +++++++++++++++++++++++++++++++++++++---------
 1 file changed, 81 insertions(+), 18 deletions(-)

(limited to 'doc/tex/systemAnalysis.tex')

diff --git a/doc/tex/systemAnalysis.tex b/doc/tex/systemAnalysis.tex
index 5868422..d0eb0b5 100644
--- a/doc/tex/systemAnalysis.tex
+++ b/doc/tex/systemAnalysis.tex
@@ -20,6 +20,20 @@ requisites needed for the system.
 
 \begin{enumerate}
 
+	\item The game program is interactive.
+
+	\item Movements can be introduced to be played on the board.
+		\begin{enumerate}
+			\item A move is introduced as the textual representation of the
+				coordinates of the vertex to play on or as ``pass''.
+				\begin{enumerate}
+					\item The text introduced for the move must follow the
+						regular expression \texttt{([A-Z][0-9]+|pass)}
+					\item If the move is not valid it must be notified to the
+						user and another move asked for.
+				\end{enumerate}
+		\end{enumerate}
+
 	\item The state of the board can be shown to the user.
 		\begin{enumerate}
 			\item A text representation of each cell is printed.
@@ -36,18 +50,6 @@ requisites needed for the system.
 				\end{enumerate}
 		\end{enumerate}
 
-	\item Movements can be introduced to be played on the board.
-		\begin{enumerate}
-			\item A move is introduced as the textual representation of the
-				coordinates of the vertex to play on or as ``pass''.
-				\begin{enumerate}
-					\item The text introduced for the move must follow the
-						regular expression \texttt{([A-Z][0-9]+|pass)}
-					\item If the move is not valid, it must be notified to the
-						user and another move asked for.
-				\end{enumerate}
-		\end{enumerate}
-
 	\item The board will behave according to the Japanese rules of Go.
 
 \end{enumerate}
@@ -58,6 +60,8 @@ requisites needed for the system.
 
 \begin{enumerate}
 
+	\item The engine program is interactive.
+
 	\item The engine implements the GTP (\textit{Go Text Protocol}) for its
 		interface.
 		\begin{enumerate}
@@ -102,6 +106,34 @@ requisites needed for the system.
 
 \end{enumerate}
 
+\paragraph{Trainer Requirements}
+
+\setlist[enumerate,1]{label=FRT \arabic*.}
+
+\begin{enumerate}
+
+	\item The trainer program is non-interactive.
+
+	\item The trainer can be executed from the command line.
+		\begin{enumerate}
+			\item The trainer can be executed directly from an interactive shell.
+		\end{enumerate}
+
+	\item The trainer can interact with stored neural network models.
+		\begin{enumerate}
+			\item The trainer can read stored models to continue training them.
+			\item The trainer can store model files after their training.
+		\end{enumerate}
+
+	\item The trainer can import existing games.
+		\begin{enumerate}
+			\item Records of games stored as SGF can be imported.
+			\item Files containing records of games are provided as arguments to
+				the trainer.
+		\end{enumerate}
+
+\end{enumerate}
+
 %\subsubsection{Security Requirements}
 %
 %\setlist[enumerate,1]{label=SR \arabic*.}
@@ -129,6 +161,9 @@ requisites needed for the system.
 	\item For directly using the engine the user needs to be familiar with
 		command line interfaces.
 
+	\item For directly using the trainer the user needs to know the different
+		network models available.
+
 \end{enumerate}
 
 \subsubsection{Technological Requirements}
@@ -140,12 +175,34 @@ requisites needed for the system.
 	\item The game program will be a python file able to be executed by the
 		python interpreter.
 
-	\item The program will make use of standard input and standard output for
-		communication.
+	\item The game program will make use of standard input and standard output
+		for communication.
 		\begin{enumerate}
 			\item Standard input will be used for reading moves.
-			\item Standard output will be used for showing the board and for
-				messages directed to the user.
+			\item Standard output will be used for showing the board.
+			\item Standard output will be used for messages directed to the user.
+		\end{enumerate}
+
+	\item The engine program will be a python file able to be executed by the
+		python interpreter.
+
+	\item The engine program will make use of standard input and standard output
+		for communication.
+		\begin{enumerate}
+			\item Standard input will be used for reading commands.
+			\item Standard output will be used for showing the result of
+				commands.
+		\end{enumerate}
+
+	\item The trainer program will be a python file able to be executed by the
+		python interpreter.
+
+	\item The engine program will make use of standard input and standard output
+		for communication.
+		\begin{enumerate}
+			\item Standard input will be used for reading commands.
+			\item Standard output will be used for showing the result of
+				commands.
 		\end{enumerate}
 
 \end{enumerate}
@@ -156,6 +213,7 @@ requisites needed for the system.
 
 \begin{enumerate}
 
+%TODO: Check and update this to something feasible
 	\item The maximum thinking time of the engine will be configurable.
 		\begin{enumerate}
 			\item It will be possible to pass the maximum time as a launch
@@ -166,7 +224,6 @@ requisites needed for the system.
 
 \end{enumerate}
 
-
 \setlist[enumerate,1]{label=\arabic*.}
 
 \subsection{System Actors}
@@ -206,7 +263,13 @@ GTP protocol and outputs the coordinates of the board to play.
 
 \paragraph{Use as backend for machine player}
 
-The engine is used as the backend for generating moves for a machine player.
+The engine is used as the backend for generating moves for a machine player,
+this is, for automated play, either against a human who is using the GUI or
+against another machine player.
+
+\paragraph{Train a neural network}
+
+A neural network is trained over a given list of moves.
 
 \subsection{Subsystems}
 
-- 
cgit v1.2.1

