"Requirements gathering and analysis is the most important phase of software development."
Software is often defective and defects cost; some cost more than others and resulting loss of life, dollars, or the
integrity of critical infra structures. The approaches software engineering has
developed to date in response to this problem have not been good enough, as
evidenced by the continuing occurrence of disasters and other undesirable
events resulting from defective software.
A particular stage of the development process, Requirement , is implicated as the locus of
introduction of most such defects. The majority of all defects are derived
from poor requirements. It can be stated that the hardest single part of building a software system is deciding precisely
what to build.
This makes the issue of costly defects an issue of requirements validity more than
anything else. The field has advanced techniques for verification; under
appropriate circumstances, we are quite facile at proving that a program meets
its specification. However, the real problem appears to remain in producing a
valid specification to begin with.
Once the requirements are elicited and
determined, they are refined and extended. This process is termed as Requirement Analysis. At the initial meeting between the client
and developer, the client outlines the product as she or he conceptualizes
it. The task of the developer is to determine at this stage, to find out what
exactly the client needs and to find out from the client what constraints
exists.
A variety of constraints may be deadline, reliability, size of the object
code and most importantly the cost.
This preliminary investigation of the clients needs sometimes is called
concept exploration.