Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

This question already has an answer here:

In my breakdown of work I have to define work against 'Functional' and 'Non-Functional' design elements / work in my applications. I read the description from Wikipedia here: but as typical the description did not speak exactly to me to clear up my understanding.

Can someone please explain in terms of an example when creating an application from scratch, what would be defined as a 'Non-Functional' requirement?

share|improve this question

marked as duplicate by Robert Harvey, GlenH7, MichaelT, Frank, Bart van Ingen Schenau Jul 3 '13 at 6:41

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.

Oh goodness I apologize. When I posted, I didn't see anything related on the right-hand side, nor with a Google search picking up those forum threads. That was helpful, thanks. – atconway Jul 2 '13 at 22:03
up vote 2 down vote accepted

Requirements like performance, response times, data integrity and security are non-functional. Actually any requirement that is not related to direct user interaction.

  • You could agree with your client that all pages have to be fully loaded within 2 seconds if you are building a website.
  • You could agree with your client that the application can give only 5 security flaws when tested with vulnerability scanner x.
  • You could even agree with your client that your code must pass a code review by an independent reviewer.
share|improve this answer
So basically anything that the end user can't see is a non-functional requirement. I'm beginning to see that breaking down requirements by "functional" and "non-functional" categories could cause more harm than good; if all pages have to load in 2 seconds, that's a requirement, really. – Robert Harvey Jul 2 '13 at 23:35
@RobertHarvey: Basically, yes, non-functional == not observable to the user. And page load time is then indeed a functional requirement, because an observant user will be able to observe that. – Bart van Ingen Schenau Jul 3 '13 at 6:46
Plus: adhere to a particular set of standards, use of a particular API/protocol, conform to a set of visual guidelines, minimum hardware/software to be supported, support of minimum maximum screen size, consume less than nK memory, etc. etc. are all non-functional requirements I have seen. – James Anderson Jul 3 '13 at 9:58

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