Don't Listen to the Customer
There are so many ways of gathering requirements; the process of discovering what the customer wants. Some approaches, such as use cases, seem to work quite well. We have tools that support UML techniques and that also integrate with development tools. The issue I have with any methodology or framework is that it can deflect from the crucial development skill: listening.
Have you noticed that the more experienced developers become, the worse their listening skills are? Maybe the problem is that we have so many ideas in our heads and so many ways of solving problems, we can't help applying them to situations. We're forgetting that customers are, well, people. Their problems don't seem that unique; what harm can there be in jumping to conclusions? After all, we're just filing in the blanks.
What would happen if we stop, listen, and put an end to the developing based on assumptions? One thing is for sure: We'd have less rework and so-called feature creep. The argument about what is in and out of scope often comes down to the interpretation of words. Who means what? You can have all of the diagrams, use cases, documents, and slides you want; these won't work in the end if you don't listen.
Bottom line: If you're not listening to the customer, what are you building? It's probably not what they want.