views:

3003

answers:

13

Why is it when I'm documenting requirements, it always has to be phrased as "It SHALL do this..." vs. "It WILL do this...".

I know this is a odd question, but one I've never been able to find an answer to. It's always just been, "that's the way you write them". I know it's a silly question, but one that's always puzzled me.

+1  A: 

Its because we are always 90% Done and that feature isn't in there yet ;)

Redacted previous comments - I was barking up the wrong tree :)

Rob Cooper
+1  A: 

I guess because the origins of software requirement and specification documents is a legal one (i.e. to explicitly detail the expectations of a development contract) and as such they have inherited some of the legal conventions such as "shall" instead of "will".

Graphain
+37  A: 

Basically, RFC 2119 says so. The real answer is just that English is imprecise unless you very specifically state what you mean in more words than people care to read, and someone took the time to state exactly what certain words should mean.

Jeff Hubbard
Perfect reference.
Allan Wind
That is an absolutely superb document.
tomfanning
Don't you mean what the SHALL mean in rfcs? :-)
Thomas
+9  A: 

"Will" just indicates intention. You might say: "I will fix this bug" (you intend to)

"Shall" indicates obligation. You boss might say "You shall fix this bug" (it's an order)

Refer to http://en.wiktionary.org/wiki/shall and http://en.wiktionary.org/wiki/will

Sten Vesterli
A: 

Shall usage is more exclusively instructive, declaring what ought to be.

Will can be used in place of shall, but is also commonly used to describe what actually occurs/is observed under certain conditions (and the expected behaviour may or may not be what ought to happen relative to a given specification or ideal).

+54  A: 

English grammar. For the second and third persons, will is declarative while shall is imperative, while the first person is the reverse.

The classic example:

Struggling in the water: "No-one will save me! I shall drown!"

Suicide: "No-one shall save me! I will drown!"

Brent.Longborough
I really like this explanation.
Matthew Schinckel
I'm going to need to submit a so question to figure out this answer :)
Dan Williams
Great example... Thanks!
Mark Harrison
A: 

In the National Electrical Code </nonprogramming></formerlife>, they use "Shall" to indicate a kind of importance, a lack of an option or alternative. You Shall do it this and such way, there is no other way to do it, if you don't do it the way we said here then you got it wrong. Shall suprecedes everything else (usually even the "exceptions"). Like someone else said, it comes from a legal background.

"can", "may" are used to indicate you have a choice in the matter, "shall" means you don't get any say; that's just they way IT SHALL BE DONE. ;)

Jeremy
A: 

Additional help for us non-native English speakers:

"will" and "shall", at first glance, bear not much difference to us, because they are not used daily in the English we listen or read. On the other hand, "would" and "should" are more common, and their differentiation is more familiar, so you could link "will" and "would", "shall" and "should" (and then "can" and "could", if not already) somehow in your mind.

@Brent Longborough: thanks for the example you gave and its explanation. There should be a way to transplant such basic knowledge.

ΤΖΩΤΖΙΟΥ
A: 
  • "Will" anounces the future, or at least how you intend it to be
  • "Shall" dictates what must be done

This is why specifications use "shall", while new year good resolutions and horoscopes use "will".

Florian
A: 

a. The word ‘shall’ in the text is used to indicate a mandatory item of the specification.

b. The word ‘should’ in the text is used to indicate a desirable but not mandatory item of the specification.

c. The word ‘will’ in the text is used to indicate an expression of future intent but not a mandatory item of the specification.

d. The word ‘must’ in the text express an assumption, the fulfilment of which is outside the scope of this document.

e. The word ‘may’ in the text express a permissible practice or action. It does not express a requirement of the specification.

f. The use of the present tense (e.g. is, are) indicates that the associated statement is explanatory material provided in support of the specification.

+1  A: 

I had been using "shall" instead of "will" for requirements but was asked to changed "should" to "will".

Maybe I was thinking of the things that could go wrong when I stated in a requirements document that "the next screen should appear". My boss thought that it sound weak and asked me to change it to "the next screen will appear".

Leah
+2  A: 

This may be an odd answer, but... I believe that, there are no any good practical reasons to use "shall", "should", "may" and other modal verbs in requirements documents at all. All those verbs only make the documents harder to write and - most importantly - much harder to read. (And I'm convinced that poor readability is one of the top few reasons why requirements documents so often fail to clearly define what the software system is supposed to do for its stakeholders.)

Why use of "shall" is so common?

Well, as it was mentioned in other answers here, one possible reason is that this practice is simply borrowed from legal documents. Obviously, requirements do represent a contract with a customer, so it may feel natural to word them like other contractual documents - that is, in legalese. Well, we all know how people love to read legalese. :-)

Also some people find it useful to apply "must/should/may conventions" defined in RFC 2119 to software requirements. Why? Frankly, it beats me. In my humble opinion, it is a classic example of misusing a good idea. Those conventions might be useful when defining very technical protocols, interfaces, or other standards that allow different levels of compliance. But even in those cases I think it is not the most efficient way to achieve the goal. I'm sure it would be much easier for everybody if, instead of sprinkling the prose with all those capitalized SHALLs, SHOULDs, and MAYs, the authors would clearly demarkate each requirement and supply it with a MANDATORY|RECOMMENDED|OPTIONAL attribute.

I believe that software requirements shall not be written in legalese (unless you have some weird customer that requires that). I believe that any requirement statement is easier to write and read (and maintain) in present tense and active voice. Also I believe that "optionality level" is not a good intrinsic attribute for a software requirement. Each requirement must have a priority as its intrinsic attribute (which, for example, would help to decide whether implementation of a given requirement is mandatory, recommended, or optional for a given release).

Yarik
A: 

You have the canonical answer, but the "how to write requirements" document at work offers one more take:

"shall" describes a requirement, i.e. something your software needs to make happen

"will" describes a fact, i.e. something that will happen whether your software does its thing or not

James