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 am currently a reviewer on a Best Practices document for Developers or Business Analysts in writing a Functional Requirements document. This document is not necessarily a template for functional requirements documents, but a guide to what elements are necessary, optional, and dangerous to include a Functional Requirements document.

The author of the document states that:

Functional Requirements documents should NEVER have an Assumptions secion! Do not assume anything about what people know about this application or any external issues surrounding it.

I am not sure that I agree with this sentiment but don't really have the words to refute it either. In a perfect world the analyst will have time to properly analyze every stakeholder input and every possible external issue but inevitably due to time constraints and other issues some assumptions need to be made.

Is this a bad idea because it is too easy for the intellectually lazy to declare assumptions rather than requirements? If not then why do you think Assumptions are a good idea?

EDIT: To clarify, I am not asking about the Assumptions section of technical documentation but of an Assumptions section in a requirements document written by a non-technical business analyst.

share|improve this question
1  
I think it depends on how strictly the requirements adhere to being purely 'functional', and how far they may bleed into system or service requirements. If you find that the there is requirement that has some concerns about assumptions, it may not be a functional requirement in the strictest sense. –  JustinC May 1 '13 at 13:04
    
@JustinC That is very insightful and intriguing of you to say because one of the primary types of software this organization will develop inhouse are integration packages. Of course system and service requirements will bleed into such documents. I encourage you to post this an answer. –  maple_shaft May 1 '13 at 13:19
    
Would you give an example of something that would be in the assumptions section? –  Aaron Kurtzhals May 1 '13 at 13:35
    
@AaronKurtzhals I honestly can't think of a good example. Perhaps it is a bad idea then if I can't even envision an example. –  maple_shaft May 1 '13 at 14:13
    
Does it make a lot of difference? Version A: Assumption: The users will be oxygen breathing beings. Version B: The product behavior is unspecified for non-oxygen breathing beings. –  psr May 1 '13 at 23:10

3 Answers 3

up vote 2 down vote accepted

Adhering to the recommended guidance to exclude assumptions from a functional requirement document depend on a few things.

First, how strict is the culture and the project?

Sometimes recommended practices are treated as defacto required practices. It is 'good practice' to ensure how strongly such things are merely recommended, and which are in practice, required. Endeavour to have some idea what any consequences might consist of if you do or do not adhere to the 'guidance'. That is my disclaimer.

Second, what is the rationale behind the guidance?

So what might be the rationale for steering functional requirements document preparers and contributors away from including a section devoted to assumptions?

In my experience, people and projects view functional requirements differently at times. In some cases, functional requirements (what happens and sequencing or when something happens) are clearly distinct from system or service requirements (where or how something happens). Finding the distinction when the system or environment is central to the effort (device or service interfaces or device drivers, for example) may prove to be more effort than it's worth, and so in those cases I would state that as my first assumption and then move forward.

In the case of the functional requirements document, the rationale for not including an assumptions section may be presumed that if a section for assumptions feels required, then perhaps the requirements are not functional. In other words, if you feel that there are relevant assumptions that should be documented pertaining to the included requirements; the requirement may be too specific to an implementation or a particular service, and perhaps do not belong in that particular document. On the other hand, maybe the requirements do belong but just rewritten in a different manner as to not be so specific that a particular implementation and related assumptions would then cease to apply. It is probably intended that the guidance is not a prohibition, but rather as a sanity check or an orange flag to the document preparers and contributors.

If I were to approach a functional requirements document in the strictest sense, system and service requirements would not appear there. If those types of requirements are not included within the functional spec, it is lot less likely that you would need to make or declare any sort of global assumptions (often pertaining to the environment or user). If you find that global assumptions start applying to the requirements being included, it may indicate the requirements are not written as functional requirements, or that the environment or user are central to the effort.

share|improve this answer

If you don't have an assumptions section you will just have the unknown assumptions of the programmers while they were coding.

You have to constantly make deliberate and unconcious assumptions when you are building something - you might as well have them written down.

share|improve this answer
    
Please see my edit above, I think I wasn't clear about what types of requirements I am discussing. –  maple_shaft May 1 '13 at 13:05

Assumption is a strong word. You definitely do want an assumptions section. But you also definitely do want that section to be validated for accuracy.

If, for example, you are designing an app with the assumption that all of its users will be power users, then it had better be true.

So basically, call it what you want (assumptions, prerequisites, whatever), but it needs to be there so that people are aware of what is driving your design choices.

share|improve this answer

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.