Non Functional Requirements
Non-Functional requirements are those requirements that are not readily captured in use-cases as use-cases are typically functional (behavioural)in nature.
Also known as 'Supplementary Specifications' they are the URPS+ of the FURPS+ model (Functional, Usability, Reliability, Performance, Supportability), described by Robert Grady (Practical Software Metrics for Project Management and Process Improvement. Prentice-Hall.). The + being requirements concerning design constraints, implementation requirements, interface requirements and physical environment requirements or constraints.
Whereas 'Functional' requirements describe the actions that the system must be able to perform, 'Non-Functional' requirements describe attributes of the system or attributes of the system environment.
Many times there is confusion about some requirements whether they are Functional or Non-Functional, especially frequently we see that re-usable functionality often ends up in the supplementary specifications rather than in some kind of use case that should be 'included' in many others, as a short cut that usually leads to confusion.
We can use this Forum to discuss what constitutes a Non-Functional requirement and how and where to capture it (in formal or informal or Agile or ....... methodlogies)

'P' for Performance
When trying to understand our requirements for Performance we are looking for requirements that place conditions or restrictions on our functional requirements.
Performance requirments may be Global e.g. "The response time should be under 2 secs." Implying a general condition on the whole system, or could be specific to particular functional requirements (or use cases) "When Credit Rating the Customer the system must respond with an accurate rating in less than 4 secs".
Possibly we have some of each with a Global requirement overwridden by particular requirements.
We should be looking for parameters considering the following factors:
* UI (or other) response time
* transaction throughput
* efficiency of processing
* time to recover
* usage of resources
This can get very detailed if done thouroughly! and is often a big issue on a project.
How do you handle "Response time must be under 1 sec" and "I want to access a complete Customer list (over 100,000!) after supplying complex search criteria, sorted how I specify it" in one system? i.e. in less than 1 sec! over the Internet!