From e64fdb5e535282de2e636cc553ad09c930a5adef Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Fri, 28 Nov 2014 15:16:59 +0100 Subject: [PATCH] jow --- thesis2/2.requirementsanddesign.tex | 39 +++++++++++++++--- thesis2/4.conclusion.tex | 0 thesis2/4.discussion.tex | 9 ++++ .../{6.appendices.tex => 5.appendices.tex} | 0 thesis2/5.discussion.tex | 1 - thesis2/frontendfront.png | Bin 0 -> 12562 bytes thesis2/thesis.tex | 7 +--- 7 files changed, 44 insertions(+), 12 deletions(-) delete mode 100644 thesis2/4.conclusion.tex create mode 100644 thesis2/4.discussion.tex rename thesis2/{6.appendices.tex => 5.appendices.tex} (100%) delete mode 100644 thesis2/5.discussion.tex create mode 100644 thesis2/frontendfront.png diff --git a/thesis2/2.requirementsanddesign.tex b/thesis2/2.requirementsanddesign.tex index bb2aa1f..c3ab987 100644 --- a/thesis2/2.requirementsanddesign.tex +++ b/thesis2/2.requirementsanddesign.tex @@ -36,9 +36,12 @@ the reason for the choice. \end{itemize} \subsubsection{Definitive functional requirements} -Requirements F2 is the sole requirement that is dropped completely. All other -definitive requirements are formed out of the original functional requirements. -Together they make the following definitive requirements: +Requirement F2 is the sole requirement that is dropped completely, this is +because this seemed to lie out of the scope of the project. This is mainly +because we chose to build an interactive intuitive user interface around the +core of the pattern extraction program. All other requirements changed or kept +the same. Below, all definitive requirements with on the first line the title +and with a description underneath. \begin{itemize} \item[F6:] Be able to crawl RSS feeds only. @@ -103,9 +106,33 @@ Together they make the following definitive requirements: \section{Design} \subsection{Frontend} -We explain the design of the frontend application through examples and use -cases. In this way we can explain certain design choices visually and more -specific. +\subsubsection{General description} +The frontend is a web interface to the backend applications that allow the user +to interact with the backend by for example adding crawlers. The frontend +consists of a basic graphical user interface that is shown in +Figure~\ref{frontendfront}. As the interface shows, there are three main +components that the user can use. There is also an button for downloading the +XML. The XML output is a quick shortcut to make the backend to generate XML. +However the XML button is only for diagnostic purposes located there. In the +standard workflow the XML button is not used. In the standard workflow the +server periodically calls the XML output from the backend to process it. + +\begin{figure}[H] + \caption{The landing page of the frontend} + \label{frontendfront} + \includegraphics[scale=0.75,natheight=160,natwidth=657]{frontendfront.png} +\end{figure} + +\subsubsection{Edit/Remove crawler} +This component lets the user view the crawlers and remove the crawlers from the +database. Removing the crawler is as simple as selecting it from the dropdown +list and pressing the remove button. Editing the crawler is done in the same +fashion but then pressing the edit button. The editing of the crawlers is +basically the same as adding a new crawler other then that the previous pattern +is already visible and can be adapted if for example the structure has changed. + +\subsubsection{Add new crawler} +\subsubsection{Test crawler} \subsection{Backend} \subsubsection{Program description} diff --git a/thesis2/4.conclusion.tex b/thesis2/4.conclusion.tex deleted file mode 100644 index e69de29..0000000 diff --git a/thesis2/4.discussion.tex b/thesis2/4.discussion.tex new file mode 100644 index 0000000..7ee3af3 --- /dev/null +++ b/thesis2/4.discussion.tex @@ -0,0 +1,9 @@ +\section{Conclusion \& Discussion} +\label{sec:discuss} +\begin{itemize} + \item No low level stuff, future research + \item RSS not that great of a source, + \item Expand technique to HTML, reuse interface, defining patterns + \item Combine RSS and HTML + \item +\end{itemize} diff --git a/thesis2/6.appendices.tex b/thesis2/5.appendices.tex similarity index 100% rename from thesis2/6.appendices.tex rename to thesis2/5.appendices.tex diff --git a/thesis2/5.discussion.tex b/thesis2/5.discussion.tex deleted file mode 100644 index aa03e7c..0000000 --- a/thesis2/5.discussion.tex +++ /dev/null @@ -1 +0,0 @@ -\label{sec:discuss} diff --git a/thesis2/frontendfront.png b/thesis2/frontendfront.png new file mode 100644 index 0000000000000000000000000000000000000000..4f5365aeeb68e02667add413428c191cb7e48ab5 GIT binary patch literal 12562 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