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