A Functional Requirement is a requirement that, when satisfied, will allow the user to perform some kind of function. For example:
“The customer must place an order within two minutes of registering”
For the most part, when people are talking about Business Requirements, they are referring to Functional Requirements which are generally referred to as “requirements”. Functional Requirements have the following characteristics: • uses simple language • not ambiguous • contains only one point • specific to one type of user • is qualified • describes what and not how
Non-Functional Requirement
A Non-Functional Requirement is usually some form of constraint or restriction that must be considered when designing the solution. For example:
“The customer must be able to access their account 24 hours a day, seven days a week.”
For the most part when people are talking about Constraints, they are referring to Non-Functional Requirements. Non-Functional Requirements have the same following characteristics: • uses simple language • not ambiguous • contains only one point • specific to one type of user • is qualified • describes what and not how
Non-Functional requirements tend to identify “user” constraints and “system” constraints. Business requirements should be kept pure and not reflect any solution thinking.
A system constraint is a constraint imposed by the system and not dictated by a Business Need. Since system constraints are part of a “solution”, they should be documented in the System Specifications document. For example:
“The system must be unavailable from midnight until 1:00am for backups.”
This is a restriction imposed by the system and not a user request.
Some people like to further classify the Non-Functional Requirments into such categories as “Performance Constraints, Design Constraints, Quality Constraints, etc.. This classification can be used if there is