Obstacle Driven Development (ODD) is a combination of various engineering and software development processes.
The largest difference between ODD and the traditional is the creation of tests first and for everything practical.
ODD has adapted other processes to provide unit testing for each element of each stage through appropriate verification and validation tests.