Documentation helps to think and design better solutions, makes implementations simpler and reduce bugs. It allows us to think wrong and change our tack, without actually writing any code.
It should start with at high level, going deeper to more details.
The documentation process varies, here's the course roughly followed by large projects:
Copyright © 2013 Welcome to the website of Davis Fiore. All Rights Reserved.