BSSC (2002)3 Issue 1.0 41
7 SOFTWARE REQUIREMENTS SPECIFICATION
software requirement. Any other sources should be stated. Each software requirement must
be verifiable. If no requirements are identified for a section, then this section shall explicitly
report the “None” keyword.
The functional requirements should be structured top-down in this chapter. Non-functional
requirements can appear at all levels of the hierarchy of functions, and, by the inheritance
principle, apply to all the functional requirements below them. Non-functional requirements
may be attached to functional requirements by cross-references or by physically grouping
them together in the document.
If a non-functional requirement appears at a lower level, it supersedes any requirement of that
type that appears at a higher level. Critical functions, for example, may have more stringent
reliability and safety requirements than those of non-critical functions.
Specific requirements may be written in natural language. This makes them understandable
to non-specialists, but permits inconsistencies, ambiguity and imprecision to arise. These
undesirable properties can be avoided by using requirements specification languages (e.g., Z,
VDM, and LOTOS), according to established policies in the SW development plan.
Each software requirement must have a unique identifier. Forward traceability to subsequent
activities in the life cycle depends upon each requirement having a unique identifier.
Essential software requirements have to be met for the software to be acceptable. If a
software requirement is essential, it must be clearly flagged. Non-essential software
requirements should be marked with a measure of desirability (e.g. scale of 1, 2, and 3).
The priority of a requirement measures the order, or the timing, of the related functionality
becoming available. If the transfer is to be phased, so that some parts come into operation
before others, each requirement must be marked with a measure of priority.
Unstable requirements should be flagged. The usual method for flagging unstable
requirements is to attach the marker ‘TBC'.
The source of each software requirement must be stated using the identifier of requirements
of the higher level specification.
Each software requirement must be verifiable. Clarity increases verifiability. Ensuring that
each software requirement is well separated from the others enhances clarity. A software
requirement is verifiable if some method can be devised in order to demonstrate objectively
that the requirement is correctly implemented.
The chapter shall be structured as follows:
3.1 Functional Requirements
(ECSS-E-40; 5.4.2.1 (a) and ECSS-Q-80; 6.3.1.3)
This section specifies the functionality to be provided by the software product under definition.
Each functional requirement shall be uniquely identified and grouped by subject. It is
recommend that each requirement definition is organised in accordance with the following:
- General description
- Inputs
- Outputs
- Processing.
3.2 Performance Requirements
(ECSS-E-40; 5.4.2.1 (a) and ECSS-Q-80; 6.3.1.3)
This section specifies any specific requirement relevant to the desired performance of the
software product under definition.
3.3 Interface Requirements
(ECSS-E-40; 5.4.2.1(b) , 5.4.2.1 (f) and 6.5.4)