I sent out an email earlier reminding our developers that
the use of the word “shall” in your derived requirements should not follow over to your functional requirements. When writing functional requirements the word “must” is used to describe the function a derived requirement must do.
- Derived = System Shall be requirement
- Functional = System must do requirement*
It was sent back by one of our seniors that this was wrong and that “shall” should be used in every requirement.
Am I wrong here, and should “shall” be used in every requirement? I haven’t been able to find anything to back that up.
7
RFC 2119 “Key words for use in RFCs to Indicate Requirement Levels” goes into specifics of what different words on requirements mean.
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119.
From this document:
MUST
is equivalent toREQUIRED
andSHALL
indicating that the definition is an absolute requirement.MUST NOT
is equivalent toSHALL NOT
and indicates that it is an absolute prohibition of the specs.SHOULD
is equivalent toRECOMMENDED
means that there are valid reasons to ignore a particular requirement, but the implications need to be weighed.SHOULD NOT
andNOT RECOMMENDED
means that a particular behavior may be acceptable or useful, but again, the implications need to be weighed.MAY
meansOPTIONAL
and that the requirement is truly optional. Interoperability with different systems that may or may not implement an optional requirement must be done.
Following this RFC SHOULD
be done to help ensure consistency of communication between one’s internal documents and the standards world at large.
2
Not sure where you came to the conclusion that shall
and must
belong at separate levels of documentation. That’s a pretty arbitrary distinction that isn’t backed by any source I know of.
Shall
and must
are lexically equivalent. It’s an action that is required.
Whether you use shall
or must
really depends upon the rest of the document that you are writing within and what makes grammatical sense for that particular sentence.
So yes, you’re wrong. But you’re also wrong on always using shall
instead of must
. They represent the same degree of obligation.
3
If you happen to work within the framework of DO-178 or DO-254 guidelines, these have their own definitions for requirements in general and derived requirements. These guidelines do not, however, specify which word, e.g. shall, should, must, should be used for specifying the requirements.
If your requirements management tooling does not automatically point out derived requirements for you, making these distinct from functional requirements by the use of a must instead of shall can be beneficial, for example to demonstrate that the verification objectives for derived requirements have also been met. This could be a possible reason for the seemingly arbitrary documentation requirement.
Note that in DO-178 and DO-254 derived requirement actually means a requirement which has not been derived from a higher-level requirement. A derived requirements therefore essentially initiates a new chain of traceability.
Both the DO-178 and the DO-254 are commercial guideline documents used for avionics software and electronics development, and only available for a fee from www.rtca.org.
0