|
- %&tex
- \chapter{Analysis}
- \label{chap:analysis}
- \begin{marginfigure}
- \centering
- \includegraphics[width=6cm]{graphics/design_flow.pdf}
- \caption{Overview of the design flow, split in two phases: Preliminary Design and the \ac{ridm}.}
- \label{fig:design_flow_analysis}
- \end{marginfigure}
- The previous chapter introduced how two design methods are combined to form the bases for one complete design method.
- In this chapter, a design plan is created from this combined design method.
- The goal is to have a concrete design plan that can be used in the case study.
- All of the steps in the design plan must be specific such that each of these steps can be evaluated after the case study is finished.
- The first three steps of the design phase are based on the \ac{se} approach and are already described with great extend by \textcite{blanchard_systems_2014}.
- As the evaluation of \ac{se} is not in the scope of this thesis, this chapter only covers the minimal description of the design steps in \ac{se}.
- The steps that are introduced by \ridm are covered in more detail.
-
- \section{Systems Engineering}
- The goal of the preliminary design is to setup system requirements and an initial design according to the problem definition.
- Although these design steps in \ac{se} play a crucial roll in the success of the development, they are, however, very exhaustive.
- A major part of this complete design process is the required documentation to ensure agreement about the design between the different stakeholders.
- Resulting in a process that can take months or even years, which is not feasible for this thesis.
- In this thesis, this design plan is only used for evaluation and will have only one stakeholder, the author.
- This allows for a simple implementation of the \ac{se} approach, as it not possible to create a false start due to misunderstanding, saving valuable time.
- For each of these \ac{se} steps is explained what is involved with a full implementation, and what part of the step is used in the design plan.
-
- \subsection{Problem Definition}
- Before any design process can start, the "problem" has to be defined.
- In other words, why is the function of the system needed?
- This is described in a \emph{statement of the problem}.
- In this statement of the problem it is important to describe "what" has to be solved, not directly "how".
- \textcite{blanchard_systems_2014} also note that "defining the problem is often the most difficult part of the process".
- It is important to ensure good communication and understanding between the different stakeholders.
- Otherwise, it is possible that the designed product is not up to the customers expectations.
- It furthermore involves defining the subjects like what are the primary and secondary functions? When must this be accomplished? What is not a function?
- For this thesis, however, the problem definition is limited to a short statement of the problem, covering some required functions with corresponding requirements.
-
- \subsection{System Requirements}
- The system requirements are derived from the problem definition, and describe the characteristics of the system.
- As these characteristics form the foundation of the system, the requirements must be defined without any ambiguity, vagueness or complexity.
- The requirements will be written according to the \ac{ears} \autocite{mavin_easy_2009}.
- \ac{ears} was chosen for this design method due to its simplicity, which fits the scope of this thesis.
- Later in the design, these requirements are divided over the subsystems.
- Any issues, like ambiguity, in the requirements, propagate through these subsystems.
- This might lead to a redesign of multiple sub-systems when these requirements have to be updated.
-
- \subsection{Initial Design}
- In the initial design step, the "what has to be solved", is expanded with a solution on "how it is solved".
- To find the best solution it is important to explore the different solutions and design space.
- Often, there are many possible alternatives but they must be narrowed down to the solutions that fit within the schedule and available resources.
- This step results in one initial design that can be used in the next phase of the design.
-
- \section{Rapid Iterative Design Method}
- From this point, the design plan is based on the \ridm and not anymore on the waterfall model.
- The first step is the feature definition, which prepares the required features based on the initial design.
- The features are defined by splitting the system in such a way that the results of each implemented feature are testable.
- The definition of the feature contains a description and a set of sub-requirements which is used to implement and test the feature.
- During the feature definition, the dependencies, risks and time resources are determined as well, this establishes the order of implementation in the feature selection step.
-
- The second step is the feature selection, where one of the features is selected.
- This selection is based on the dependencies, risk, and time requirements in the feature definitions.
- The third step is the rapid development cycle, which uses the sub-requirements and description of the selected feature to create an initial design, a minimal implementation and tests.
- In the last step, the variable detail approach is used to add detail to the minimal implementation over multiple iterations.
- The tests are used to determine if the added detail does not introduce any unexpected behavior.
- This cycle of adding detail and testing is repeated till the feature is fully implemented.
- From this point, the \ridm is repeated from the second step until all features are implemented.
-
- \subsection{Feature Definition}
- \label{sec:featuredefinition}
- During the feature definition, the system will be split into features as preparation for the rapid development cycle and the variable-detail approach.
- The aim of the \ridm is to have short implementation cycles to have early testing feedback.
- To achieve this, the features are as small as possible, but can still be implemented and tested individually.
- Together with the definition of the features, the requirements are divided along the features as well.
- The optimal strategy on splitting features and specifications is strongly dependent on the type of system.
- Therefore, the best engineering judgement of the developer the best tool available.
-
- Sometimes features are dependent on each other, the implementation of one feature influences another.
- This dependency can occur in specifications, where strength of one feature dictates the maximum mass of another feature.
- Such a dependency can work both ways and can be resolved by strengthening the one feature, or reduce the weight of the other feature.
- Another type of dependency is when the implementation influences other features.
- In this case, if the implementation of one feature changes, it requires a change in the other features.
- An example of this is a robot arm, where the type of actuation strongly influences the end-effector.
- When the robot arm approaches an item horizontally, the end-effector will be different than approaching the item vertically.
-
- Due to these dependencies it is possible that the division of requirements changes, because the result of the implemented feature was not as expected.
- This is not directly a problem, but a good administration of the requirements makes an update of the requirements easier.
-
- \subsection{Feature Selection}
- \label{sec:feature_selection}
- The rapid development cycle does not specify which feature should be implemented first, even though the order of implementation does change the feasibility of the complete development.
- An example that shows the importance of the order of features is the development of a car.
- To have a critical damped suspension in a car, the weight distribution of the car must be known.
- If the suspension of the car is designed before all the features that determine the weight distribution, it is likely that the suspension design is not up to specifications.
- Resulting in a redesign of the suspension feature and thus increasing the overall development cost.
- This example is caused by the dependency between different features.
-
- For the design plan, the order of implementation of features will be determined by the following rules:
- \begin{enumerate}
- \item Features that are dependencies of others must be implemented first.
- \item Features that complete more system test than other features when implemented have priority.
- \item Features with the higher \emph{risk per time} score than other features have priority.
- \end{enumerate}
- The risk per time score for third rule is calculated by dividing the risk score with the time score.
- The goal of this score is to eliminate as much risk as possible in the least amount of time.
- It seems logic to always implement the highest risk feature first, but it is possible that within that feature multiple lower risk features can be finished.
- This is visible in \autoref{tab:feature_selection}: In a time span of 6 days it is possible to implement feature E or features A, C, and D.
- The risk that is cleared by E is 45 \% which is significantly less than the combined 65 \% of A, C and D.
- Due to the limited scope of this thesis, it is not possible to give a good metric for determining risk and time.
- Nevertheless, it is strongly advised that the developer defines some metric that fits his project best.
-
- \begin{marginfigure}
- \centering
- \includegraphics[width=2.9cm]{graphics/feature_dependency.pdf}
- \caption{Dependency graph for features.}
- \label{fig:feature_dependency}
- \end{marginfigure}
- \begin{table}[]
- \caption{Comparison of features with their corresponding risk and time.
- The last column is the risk value divided by the number of days.}
- \label{tab:feature_selection}
- \begin{tabular}{l|r|r|r|r|r|}
- \cline{2-6}
- & \multicolumn{1}{l|}{Dependees} & \multicolumn{1}{l|}{Tests} & \multicolumn{1}{l|}{Risk} & \multicolumn{1}{l|}{Time} & \multicolumn{1}{l|}{Risk per time} \\ \hline
- \multicolumn{1}{|l|}{Feat. A} & 2 (2, 3) & 2 & 15 \% & 3 days & 5 \\ \hline
- \multicolumn{1}{|l|}{Feat. B} & 0 & 3 & 40 \% & 5 days & 8 \\ \hline
- \multicolumn{1}{|l|}{Feat. C} & 1 (5) & 5 & 25 \% & 2 days & 12.5 \\ \hline
- \multicolumn{1}{|l|}{Feat. D} & 0 & 4 & 15 \% & 1 day & 15 \\ \hline
- \multicolumn{1}{|l|}{Feat. E} & 0 & 4 & 45 \% & 6 days & 7.5 \\ \hline
- \end{tabular}
- \end{table}
- Looking at an example of 5 features:
- As seen in \autoref{fig:feature_dependency}, Features B and C are dependent on feature A.
- Feature D does not have any dependency connections, and feature E is dependent on C.
- Together with the information in \autoref{tab:feature_selection}, the order of implementation is:
- \begin{description}
- \item[Feature A:] has two features that are dependent on this feature, more than any other.
- \item[Feature C:] has one feature that is dependent on this feature, most dependencies after A is implemented.
- \item[Feature D:] has the same number of tests as E, but D has a significant higher risk per time score than E
- \item[Feature E:] has the most number of tests.
- \item[Feature B:] only one left to be implemented.
- \end{description}
-
- \subsection{Rapid Development Cycle}
-
- \subsection{Variable Approach}
-
|