So, let's see how this affects the concept of software
quality. Another way to express what we just said is
to say that the software runs on some hardware and
is developed for a purpose that is related to human
activities. And given this perspective, we can define what we
mean by software quality in this light. Software quality is
not just a function of the software. So, the software
itself does not define the quality of the overall system.
Rather, software quality is a function of both the
software and its purpose. Where purpose has to do with
the way in which the software will be used. So
a software system can be of low quality not only
because it does not work well. So, for example, not
only because it crashes. Of course, that's an issue. But
just as importantly, a software can also be of low
quality because it does not fulfill its purpose, and this
happens quite often. It is unfortunately not rare for
the software producers to have an inadequate understanding, or even
a complete misunderstanding of the purpose of the software,
of what the users want to do and will do
with it. Turning these around, we can therefore define
the quality of software in terms of fitness for purpose.
The more the software fulfills its purpose, the more
the software is on target, the higher is its quality.
And identifying the purpose of the software, so hitting
this target, is exactly the goal of requirements engineering.
And it is the reason why requirements engineering is
such a fundamental activity in the context of software engineering.