Stakeholders agree to the requirement and then later on says this does not serve my purpose

Stakeholders have limited time.

Bombarding them with information in less time can make them agree to whatever being said, which is clearly bad for long term.

Instead we must follow rigorous and effective requirements engineering process.

But how can we do that, how can we collect good requirements. Requirements gathering is set of activities to identify the purpose and context. It is a bridge of coordination between real world purpose and capabilities of software technology.

Sounds something you should know, learn through udacity-