In a nutshell it is just the following:
- got a task/requirements/problem which can be solved with a computer
- implement a solution
- see that solution actually works (most of the time)
- see that solution fails in some cases
- iterate from 2) to 5) until the original task/requirement/problem is resolved to its full extend