34

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.

Tim Lieberman
  • 483
  • 1
  • 5
  • 7
  • We use "shall" in every requirement that is mandatory. But "shall" and "must" mean more or less the same thing. See also http://tynerblain.com/blog/2009/04/22/dont-use-shall/ – Robert Harvey Feb 04 '13 at 18:35
  • 4
    Are you perhaps thinking about the `MUST` vs `SHOULD` in RFCs?http://www.ietf.org/rfc/rfc2119.txt – user10326 Feb 04 '13 at 18:38
  • 1
    See also http://www.plainlanguage.gov/howto/wordsuggestions/shallmust.cfm – Arseni Mourzenko Feb 04 '13 at 18:42
  • 2
    Euh, not to be the party-pooper, but what are you winning when everyone uses the correct word in the correct situation? – Peter Feb 08 '13 at 09:41
  • [Requirements Documentation: Will vs Shall](http://izlooite.blogspot.ae/2011/01/requirements-documentation-will-vs.html) – KMan Sep 26 '15 at 17:59
  • The root is that it became obvious that requirements have to fulfill requirements, one of them being _unambiguity_. The first rule of best practice is to state in the requirements document which words will be used for the three cases. The second rule of best practice is to choose a common scheme with only one word per case, suich as "shall" / "should" / "may" as others have pointed out. – unified modeling sandwich Jun 08 '17 at 06:38
  • Some features in your definition make me think you are trying to distinguish between functional and non-functional requirements as described here https://en.wikipedia.org/wiki/Non-functional_requirement. But then it is not a question what term (shall or must) to use but in which place to document your requirements (e.g. system specification, design description, architecture description, …). – Hartmut Braun May 17 '22 at 07:10

3 Answers3

65

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 to REQUIRED and SHALL indicating that the definition is an absolute requirement.
  • MUST NOT is equivalent to SHALL NOT and indicates that it is an absolute prohibition of the specs.
  • SHOULD is equivalent to RECOMMENDED means that there are valid reasons to ignore a particular requirement, but the implications need to be weighed.
  • SHOULD NOT and NOT RECOMMENDED means that a particular behavior may be acceptable or useful, but again, the implications need to be weighed.
  • MAY means OPTIONAL 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.

  • 4
    solid answer; props for digging up the RFC –  Feb 04 '13 at 19:12
  • 1
    @GlenH7 I knew of it (I enjoy reading April 1 RFCs and some of the humor is in the 'should' and 'must', and 2119 its even on the [wikipedia](http://en.wikipedia.org/wiki/Request_for_Comments) page) I searched for it, found it, and then read the comment I was about to make - two above it was the RFC again. So not *entirely* huge props for digging it up. –  Feb 04 '13 at 19:18
  • My thinking was that Must requirements/ functional requirments must would require all functionality to a derived object that shall exist. But given shall and must definitions and how everyone else is using them I was just wrong – Tim Lieberman Feb 04 '13 at 19:45
6

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.

  • 4
    `Should` and `may` aren't quite equivalent. They both denote optional features, but `should`, unlike `may`, implies that you need to have a good reason for not implementing it. I agree with you on `shall` vs. `must`, though. – Keith Thompson Feb 04 '13 at 19:34
  • @KeithThompson - that's a good point, and you're right. I pulled that line from the answer. –  Feb 04 '13 at 19:39
  • 1
    My thinking became that functional requirements should use must because, If a derived object shall exist all its functionality must function. – Tim Lieberman Feb 04 '13 at 20:00
  • I guess at some point I had shall embedded as new object in my head and must as function. – Tim Lieberman Feb 04 '13 at 20:02
  • @TimLieberman - that's not a bad way of looking at things, especially since it links the two layers of specifications. Kind of useful, actually, since some folk do get confused by the semantics of the terms. Especially since I've fixed process docs where "shall" was more often than not used as a substitute for "should". However, it's not quite useful enough to require that as a particular standard. –  Feb 04 '13 at 20:07
2

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.

Schedler
  • 519
  • 3
  • 6