These issues and difficulties can result in requirements
that show various problems. Two particularly relevant and
common problems are completeness and pertinence. Or better,
the lack of completeness and pertinence. Completeness refers to
the fact that it is often extremely difficult
to identify all of the requirements. That is it
is very difficult to have a complete picture
of the purpose of the software. So what happens
is that incomplete requirements are collected and the software
is missing functionality that is important for the user. Pertinence
conversely has to do with the relevance of the
requirements. To avoid completeness problems developers often end up collecting
a lot of irrelevant when not conflicting requirements. In
these cases what can happen is that the software could
either end up being bloated that is it might
contain a needed functionality. The functionality represented by these extra
requirements or it might even be impossible to build the
software due to the conflicting additional requirements. And to make
things even worse collecting all of these requirements sometimes doesn't
even solve the completeness issue. So you might end up
with a set of requirements that is not only incomplete
but it also contains extra information that can be harmful
to the system. So again the bottom line is that
gathering an adequate, accurate, complete,
and pertinent set of requirements that
identify the purpose of a software system is an arduous task.