Unfortunately, extracting requirements from these sources is not
a straightforward task, as there are many issues involved
with the requirements elicitation. One first problem is the
thin spread of domain knowledge. Knowledge is rarely available
in an explicit form, that is, it is
almost never written down. Moreover, knowledge is often distributed
across many sources. For example, in the graphical depiction
here, to find out that this is the purpose
of the project. The developer, the analyist, needs to talk
to a lot of different people. And, to make things even
worse. There are often conflicts between the knowledge gathered from
different sources. A second issue is the fact that the knowledge
is often tacit. What is also called the say, do
problem. In the example shown here. For instance. We have a
customer that is describing to the analyst. The way in which
he accomplishes a task. So it performs these three steps and
reaches the goal. Whereas in practice, the actual way in
which this task accomplished is by going through a larger number
of steps to get to the same goal. So the point
here is that, even if the knowledge were more concentrated, so
not as spread as in this example. People simply find
it hard to describe knowledge that they regularly use. So it
is hard to make this knowledge explicit, to pass this knowledge
to someone else. Yet another
problem is limited observability. Identifying requirements
through observation is often difficult as the problem owners might be
too busy to perform the task that we need to observe.
Or they might be doing a lot of other things together
with the task that we need to observe, so that becomes
confusing. That introduces noise. Moreover, even when this is not the
case, the presence of an observer might change their problem. It
is very typical for human subjects to improve or modify an
aspect of their behavior, which is being experimentally measured in response
to the fact that they know that they're being studied. You know
that somebody's studying you and you change the way in which you behave.
A typical issue. Finally, the information that we collect might be biased.
For several reasons. People might not feel free to tell you what you
need to know. Or, people might not want to tell you what
you need to know. For example, in all the common cases in which
the outcome might effect them, people might provide you a different picture
from the real one. In order to influence you. So, they might have
a hidden agenda, and mislead you, either
consciously or unconsciously. So, all these issues
add to the complexity of collecting requirements,
of identifying the purpose of a system.