\section{Development Plan}

We will work using spiral software development model where all works are divided into small iterations. Each of iterations will have implementation phase, testing phase, analysis phase, and design phase.
Furthermore, each of iterations will have goals and results. 
The iterations are: 

Iteration 1: Create a basic DSL for MarsRover's missions to use available sensors and actuators

Iteration 2: Test the DSL and make it works in MarsRover

Iteration 3: Create a functionality to use motors for the movement. The actions are drive forward, drive backward, stop, turn left, and turn right.

Iteration 4: Create a functionality to use right sensor, left sensor, and back ultrasone sensor

Iteration 5: Create a functionality to keep the MarsRover in the planet. This will combine the use of the motors for the movement and the most safety critical sensors

Iteration 6: Implement a protocol for the communication between two bricks

Iteration 7: Implement color sensor and create a functionality to find lakes by color

Iteration 8: Implement front ultrasone sensor and create a functionality to find rocks

Iteration 9: Implement functionality to avoid rocks

Iteration 10: Implement measurement motor and create a functionality to measure lakes and rocks

Iteration 11: Implement left and right touch sensors. Also, create a functionality to push rocks

Iteration 12: Implement a functionality to be able to perform multiple missions in sequence

Iteration 13: Implement Gyro sensor and create a functionality to park MarsRover in certain position

Iteration 14: Implement a functionality to remember where the lakes are after the MarsRover found them

Iteration 15: Implement a functionality to play a sound for the viewer's notification

Iteration 16: Implement SLAM functionality and make the MarsRover be able to navigate with the map