Extracting requirements of a desired software product is
the first task in creating it. Sometimes the goal of a project
may be only partially clear due to a poor requirement
gathering in the definition stage of a project. Many projects
have high level, vague and generally unhelpful requirements.
This leads the developers having no input
from the user and build what they believe is required,
without having any real knowledge of the business for
which the project is being developed. Inevitably when the
system is delivered, user declares, it does not do what
they needed it to. Defining clear requirements for a project
can take time and lots of communication, but sometimes
goals and objectives might be unclear because project
sponsors lack the experience to describe what they
really require. User should know what they require from
the project and be able to specify it clearly. However as
user is non-IT specialist, developer must extracting rerequirements
from the user through his/her skills and experience
in software engineering.