\chapter{Introduction}
This document will describe the feature and test specification step.
The original plan was to specify features and give these features there own specifications.
Together these feature specifications have to ensure that the system specifications are met.
And eventually for each feature a set of tests is designed so that the feature specifications can be monitored.

However, during this step it became clear that this method was not feasible in the limited amount of time.
Spending more time on this step would not result in a better test of the method.
It might even have a negative effect as other steps would be overshadowed by this step.
Eventhough the step has not been finished we still managed to learn some valuable lessons.

One of the lessons was to use RobMoSys for the feature specifications.
This will be explained in \autoref{chap:robmosys}.
The feature specifications were very difficult as it turned out that a lot of this depended on the level of detail in the system specifications.
We will explain this part in \autoref{chap:specifications}.

\chapter{RobMoSys}
\label{chap:robmosys}
The original method was to just look at the features of the system and describe them.
This turned out to be impossible as there are a lot of features at different levels with different dependencies.
For example \textcite{broenink_variable_2018} defines three features on his segway.
However, the hardware already exist.
Therefore, features like wheels, motors, sensors, powerpack, etc. do not have to be considered.
We underestimated the amount of features if you do not have pre-existing hardware.
A problem was that, for example, a motor did not fit in our original idea of feature.
However, taking a high-level feature defeated the purpose of this method with multiple steps of implementation.
As this high-level feature would then include motors, control, sensors etc.

Eventually we used RobMoSys to separate the features in a way that made sense.
We started with a mission, which is in this case the 'tweet on a whiteboard' and broke it up in to tasks.
So what tasks are required to fulfill the mission.
These tasks required certain skills, which required then functions.
\autoref{fig:robmosys} shows the resulting graph of the separation into different levels.
The figure also shows our fifth layer as subsystem.
A full Robmosys would even separate this in to 4 additional layers but we decided on keeping it simpler.
The simplification was done as this was mainly in middle- and software which was not the focus of this thesis.
Furthermore, because we did not see any additional value but it would cost a lot of extra time.

\begin{figure*}
    \centering
    \includegraphics[width=0.8\paperwidth]{graphics/robmosys.pdf}
    \caption{Separation of the mission into tasks, skills, functions and subsystems based on a simplification of RobMoSys.}
    \label{fig:robmosys}
\end{figure*}

In the end the graph gives us a lot of sub-features.
We will not implement every single node as a feature because 15 small features would only create loads of overhead.
But what we can do is group sub-features.
This also brings another advantage because we include a higher-level feature that can be used as test.
For example, the SCARA can be tested by successfully moving the marker on the board.

In the later step where we will select one of the features we will use this graph as a basis.
We can group features from this graph such that they can be implemented in about a week.
This way we reduce the overhead of implementation and keep an eye on the progress.

\chapter{Specifications}
\label{chap:specifications}
The following step was to distribute the system specifications between the features.
The problem we ran in to is that neither the system specification nor the RobMoSys was implemented with enough detail that they could work together.
Parts of the specifications lacked in detail, even with the use the EARS-method \autocite{mavin_easy_2009}.
This resulted that some specification where valid for all sub-features as the specifications where to broad.
However, improving the specifications would sometimes result in that it did not fit on one of the sub-features.
This is because the RobMoSys misses sub-features which would specifically implement the control system.

While we were working on this step we updated the system specifications.
This was done because we found that some of the specification did not make any sense in for this research.
While others were really easy to expand.
Therefore, these following list represents the updated specifications:
\begin{itemize}
\item The Writer shall be able to write at least 50 characters per line.
\item The Writer shall be able to write at least 5 lines of text.
\item The Writer shall plot characters with a size that is readable from 4 meters for a person with good eyesight.
\item The Writer shall plot in a regular used font with corresponding character spacing.
\item When a new tweet is send to the Writer, the Writer, shall wipe the existing tweet and write down a new tweet.
\item If the Writer is not wiping or writing then the Writer shall not obstruct the view of the whiteboard.
\item While writing, the Writer shall have a writing speed of at least 1 character per second.
\item If the Writer is tasked to wipe the tweet, the Writer shall wipe the tweet within 60 seconds
\item When a reset-signal is send to the Writer, the Writer shall re-calibrate its position on the board.
\item When a wipe-signal is send to the Writer, the Writer shall wipe the board clean.
\item The Writer shall not damage itself.
\item While writing, the SCARA shall have a writing speed of at least 1.5 characters per second.
\item When the Carriage/base of the SCARA is at a static position, the SCARA shall be able to write at least 3 characters at that position.
\item When the SCARA finished writing at their current position, the Carriage shall move the SCARA to it's next position where it can write the subsequent characters.
\item When the SCARA has to be moved to a new position, the Carriage shall perform this movement within 1 second.
\end{itemize}

\chapter{Decision}
In the end we decided that a it was better to stop the current step.
We have some specific points that require improvement in a follow up.
The steps system specifications, initial design, feature separation and feature specifications have to be merged in to a kind of spiral model.
Where the process would start with a global description of the system and some initial designs.
This initial design can then be expanded with some course system specifications.
This would be followed by a RobMoSys-type of analysis.
The RobMoSys gives a brief interpretation of the different subsystems required.
For each subsystems we have to assign specifications, if it seems that this is difficult we can choose to review the specifications.
We can add more detail to the specifications for example, or split them in to multiple separate specifications.

For now, we have enough information to test the next steps.
At the beginning of each feature-implementation we will write the test specifications.
And during the selection we have to keep the list of specifications in mind.
We think that this is possible as the list of specifications and the set of systems is manageable.







