What is the difference between a functional requirement and a non-functional requirement, and how do you document them?