The Software Requirements Area is
concerned with the elicitation, analysis, and specification
of software requirements. It is widely
acknowledged within the software industry that software
engineering projects are critically vulnerable when these
activities are performed poorly.
Software requirements express the needs and constraints
placed on a software product that contribute to the
solution of some real-world problem.
An essential property of all software requirements is that
they be verifiable. It may be difficult or costly to verify
certain software requirements.
Functional requirements describe the functions that the
software is to execute; for example, formatting some text
or modulating a signal. They are sometimes known as
capabilities.
Nonfunctional requirements are the ones that act to
constrain the solution. Nonfunctional requirements are
sometimes known as constraints or quality requirements.
Some requirements represent emergent properties of
software that is, requirements which cannot be
addressed by a single component, but which depend for
their satisfaction on how all the software components
interoperate.
Software requirements should be stated as clearly and as
unambiguously as possible, and, where appropriate,
quantitatively. It is important to avoid vague and
unverifiable requirements.
Requirements elicitation is concerned with where
software requirements come from and how the software
engineer can collect them. It is the first stage in building
an understanding of the problem the software is required
to solve.
You should try to include in your report:
- CONOPS
- Use Cases
- Tracability Matrix
- Viewpoint charts
- Scenarios
- Sequence diagrams
- and use template linked above