Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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 requirment

It was sent back by one of our Seniors that, that was wrong and that shall should be used in every requirement.

Am I wrong here and Shall should be used in every requirement. I haven't been able to find anything to back that up.

share|improve this question

migrated from stackoverflow.com Feb 4 '13 at 18:38

This question came from our site for professional and enthusiast programmers.

    
We use "shall" in every requirement that is mandatory. But "shall" and "must" mean more or less the same thing. See also tynerblain.com/blog/2009/04/22/dont-use-shall –  Robert Harvey Feb 4 '13 at 18:35
3  
Are you perhaps thinking about the MUST vs SHOULD in RFCs?ietf.org/rfc/rfc2119.txt –  user10326 Feb 4 '13 at 18:38
    
    
Euh, not to be the party-pooper, but what are you winning when everyone uses the correct word in the correct situation? –  Peter Feb 8 '13 at 9:41

2 Answers 2

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.

share|improve this answer
    
solid answer; props for digging up the RFC –  GlenH7 Feb 4 '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 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. –  MichaelT Feb 4 '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 4 '13 at 19:45

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.

share|improve this answer
2  
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 4 '13 at 19:34
    
@KeithThompson - that's a good point, and you're right. I pulled that line from the answer. –  GlenH7 Feb 4 '13 at 19:39
    
My thinking became that functional requirements should use must because, If a derived object shall exist all its functionality must function. –  Tim Lieberman Feb 4 '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 4 '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. –  GlenH7 Feb 4 '13 at 20:07

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.