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.

This question already has an answer here:

A lot of sources (e.g. Wikipedia) mentiones System requirement specification and Functional specification as two separate entities. However, Wiegers in his book writes:

The software requirements specification is sometimes called a functional specification, a product specification...

This is very confusing for me as I thought FS describes just functions while SRS whole system. From this point of view, FS would contain both non functional and functional requirements and everything else.

share|improve this question

marked as duplicate by gnat, Kilian Foth, Dan Pichelman, MichaelT, GlenH7 Nov 5 at 22:08

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

2 Answers 2

There are many different ways that things can be structured, but this is one take on it:

  • System Requirements Specification (SyRS) : This is the high-level engineering document that enumerates the requirements on how the system is to function. It is not a software-only document; if the system involves hardware, or multiple software components, then it describes them as well.

  • Software Requirements Specification (SwRS) : This is a complete description of the requirements of a single software component.

Either of these two documents could be called a "functional specification". It depends on the scope of what you are talking about.


UPDATE: Generally, the SyRS should only contain those requirements / functional specifications that apply to the system as a whole. A greenfield SyRS does not decide what the system architecture is; that is for the design document.

The design document (call it System Architecture Document, SyAD) decides what software components are required and how they interface to each other.

The SwRS for each defined component is then a much more detailed functional specification of how each individual component works.

Sometimes, to ensure consistency of UI for example, it makes sense to bundle common requirements into the SyRS.

This can get confusing, but the test plan and test cases for each software component should pull the appropriate specifications from the appropriate place(s).

Requirements management tools like DOORS allow cross-linking between requirements docs (and traceability from product concept to final delivery).

Does Functional Requirement Specification talk about system design?

No, that should be handled by a design document.

should there be a single system requirements document and individual SRS for all the applications?

Yes, that sounds like a good way to proceed.

I also assume that functional requirements strictly deals only with requirements and not the design

Yes, the two are distinct, but people often confuse them.

Could each line of a pseudo code be defined as functional requirement eg: System B must pass emp id , name to System C on receipt of request from System A.

The example you quote certainly sounds like a system-level functional requirement. Just be careful not to include in the SyRS something like "and emp id must be in the form of a GUID". The only reason to include technical detail like that in an SyRS is if there is some constraint on the system (like all incoming or pre-existing emp ids are GUIDs).


Where I am getting this from is from the approach to Systems Engineering called the "design V" (sometimes the design W). See Wikipedia for more, though in an "Agile" world some of this gets forgotten.

enter image description here

share|improve this answer
    
Does Functional Requirement Specification talk about system design? –  Punter Vicky Feb 11 '13 at 4:09
    
Thanks Peter. I have a system that consists of multiple applications. For instance if there is a change that impacts a number of these applications , should there be a single system requirements document and individual SRS for all the applications? I assume the functional requirements would be part of System Requirements. I also assume that functional requirements strictly deals only with requirements and not the design. Could each line of a pseudo code be defined as functional requirement : eg: System B must pass emp id , name to System C on receipt of request from System A. –  Punter Vicky Feb 11 '13 at 4:17
    
@Downvoter: Feedback to improve appreciated! –  Peter K. Mar 13 '13 at 21:44

SRS and FS are indeed two separate entities. Software requirement specification document is the primary document that contains detailed requirement specification, which describes the expected behaviour of the system and gives an overview of various functional units of the system. Functional specification, on the other hand, is more detailed understanding of the behaviour of the system and may take inputs from software requirements specification document. Functional specification is more about basic building blocks, how these should be built, what should be their behaviour and how will it meet the required expectation from the system.

share|improve this answer
    
I would add, that FS does contain non-functional requirement, in most cases. –  user970696 Dec 14 '12 at 17:48
    
@user970696: I always found the name "non-functional specification" strange: is a "non-functional specification" a broken specification? That's why I tend to avoid the term "functional spec" and go for "requirements" (if it's WHAT the system has to do) or "design" (if it's HOW the system has to do it). –  Peter K. Feb 11 '13 at 21:15

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