Another important distinction, when talking about requirements, is that
between user and system requirements. So, let's start with defining
user requirements. Those are requirements that are written for the
customers and they're often in natural language and they don't
contain technical details. And the reason for that is
that their purpose is to allow customers, stakeholders, to check
that the system will do what they intended. So it's
a way for the analyst, the developers, to communicate with
the customers, with the stakeholders. System requirements, on the
other hand, are written for developers. Contain detailed functional and
non functional requirements. Which we just discussed, and which
are clearly and more rigourously specified than the user requirements.
And the reason for this difference is that the
purpose of the system requirements is to tell developers what
to build. They must contain enough details so the
developers can take them and use them to design and
then develop a system. Just to give you a concrete
example, here I'm showing you a user requirement that just says
that the software must provide a means of representing and accessing
external files created by other tools, and the corresponding system requirement.
And as you can see, even if we don't read the
whole requirements. The former is an informal and high level description
of a piece of functionality, whereas the latter describes the same
functionality but in a much more extensive and rigorous way. As
I said, this is something that the developers can use to
design and then build a system whereas this is something that
can be used to communicate. With the stakeholders, with a non-technical
audience. And we need to define both because they serve different purposes.