瀏覽代碼

Merge branch 'iss13/05_feature_selection' into 'master'

Iss13/05 feature selection

Closes #14

See merge request horlingsw/mahd!5
master
Wouter Horlings 5 年之前
父節點
當前提交
e99f7109c8
共有 3 個文件被更改,包括 80 次插入0 次删除
  1. +16
    -0
      .gitlab-ci.yml
  2. +18
    -0
      feature_selection/01-iteration.md
  3. +46
    -0
      feature_selection/selection.md

+ 16
- 0
.gitlab-ci.yml 查看文件

@@ -64,3 +64,19 @@ feature_definition:
- tags
changes:
- features/*

feature_selection:
stage: typeset
image: pandoc/latex:latest
script:
- pandoc feature_selection/selection.md $(ls feature_selection/*-iteration.md) -o feature_selection.pdf
artifacts:
paths:
- feature_selection.pdf
only:
refs:
- web
- branches
- tags
changes:
- feature_selection/*

+ 18
- 0
feature_selection/01-iteration.md 查看文件

@@ -0,0 +1,18 @@
## First iteration

### Features
We have three features, the Scara which is the hardware arm that move the marker locally.
The end-effector is connected to the end of the Scara and has the task to lift the marker from the board and to release it.
And the last feature is the carriage which has the task to move the Scara with the end-effector.
Sub feature of the carriage will be some kind of base structure where the Scara will be mounted on.
In this base we will also store the different tools.

### Selection table
We constructed the following table to select a feature.
From this we can derive that the end-effector is prefered over the carriage.

| Feature | Dependency | Test Coverage | Risk | Time | Risk/Time factor |
|--------------|--------------|---------------|--------|--------|------------------|
| Scara | End-effector | 3 | medium | medium | 1 |
| End-effector | - | 2 | high | medium | 2 |
| Carriage | - | 2 | low | medium | 0.5 |

+ 46
- 0
feature_selection/selection.md 查看文件

@@ -0,0 +1,46 @@
# Feature selection procedure

## Introduction
The goal of this document is to record the decisions during the feature development.
To make this document more readable the following section will explain the selection procedure.

## Selection procedure
There are three criteria that are applied in the selection procedure.
These are: dependency, test coverage and risk/time analysis.
Each criterion is a hard selection. We will only select on dependencies first.
If any of the features have an equal amount of dependencies then we will look which one completes more tests.
And the last is a risk/time analysis.

### Dependency
With the dependency criteria we count the number of other features each feature depends on.
The feature with the highest number of dependencies will be implemented first.

This is often a design dependency. For example, the engine in a car must be able to pull the weight of the car.
Therefore, we need to know the weight of the car before we can design the engine.
This can be a dependency, however we rather solve this by setting the specifications correctly.
That the car itself has a maximum mass of something. Therefore, the engine has to be able to pull that maximum mass.
Now we solved the dependency.

However, at some point, we might have to test something before we can specify the mass of the complete car.
In that case, a feature that can help us define the mass of the car better should get priority as other features depend on it.

### Test coverage
To see how the different systems work together we have designed multiple tests.
Each test that can be resolved by implementing the feature gives us more information about the system.
And if tests fail early, we can change the design earlier in the design.

### Risk/Time procedure
If we still have multiple features that have a draw in dependency and in test coverage we can assess the risk/time factor.
We want to clear the most amount of risk per time period.
In practice we will clear all the high risk features which have a short implementation time.
And eventually we end up with low risk long implementation time.
By moving al this risk forward we can clear more risk in an early stage of the development.

The time and risk factor will be given _high_, _medium_, or _low_ as factor.
Where _high_ = 3, _medium_ = 2, and _low_ = 1 point.
We divide the risk points by the time points and note down the factor.
The feature with the highest score will be implemented first.





Loading…
取消
儲存