A Requirement that works and one that doesn’t?
Grammatically the difference between the types of requirement could be seen like that, but not so in RM (Requirements Management) parlance. Functional and Non-Functional Requirements are a what and how of engineering.
Functional Requirement
These define what the features are. “The User Interface board shall send an enable signal when the user presses the On key”
or “The finance reporting mechanism shall produce a summary report automatically at the end of each month”. These requirements tell the designer/implementer what the systems need to do. They can be read and agreed by the customer and will align with their expectations of the system.
Functional requirements are not limited to actions. They can include regulatory or safety requirements, “The system shall be protected and able to be certified to IP44”, or internal rules “The output format shall be commensurate with detail explained in the operating procedures for the production line”. They can reference other external requirements or standards. “The electrical interface shall be compatible with USB 2.0 standards using type A connectors, verified by a third party.”
Non-Functional Requirement
These define how the system will operate. They will place constraints and capacities on the system that can be measured. “The User Interface enable signal shall be a TTL level present within 0.25 seconds of the user making contact with the physical interface” or “The finance reporting mechanism shall be capable of summarising 100K entries into the 10 specified categories”.
These limits and descriptions provide bounds within which the Functional Requirements can me met. “The system shall allow users to cross the road safely” is a wide Functional Requirement. “The user shall not need to interact directly with the facility”, “The design shall comprise of a fixed physical system requiring no power”. Looks like we’re building a bridge or subway rather than a pelican crossing then!
Lines are Drawn
There is always going to be a grey line between the two areas. Some will depend where the responsibilities end and so on one project what is deemed a functional requirement. “The interface must be USB 2.0”, is a main operating characteristic that our system can not change and is needed to interface to an external system. On another project the functional requirement may be “The main system should interface with up to three external input and output devices” and the design team may decide “All inter product interfaces shall use USB 2.0 standard communications”
In the ideal world everything should operate 100% of the time without failure and should be completely intuitive. Should occur without delay and should be fixable for ever. However, the world we live in is not ideal. System designers need to recognise that. Non-Functional Requirements can define these limits and manage expectations, from both a contractual and measurable quality point of view.
- “To aid the user to perform the task consistently. The UI shall provide guidance in the form of fixed text and sequenced indicators.”,
- “The system shall have an availability no less than 99% of the time”,
- “Visual and audible feedback shall be provided within 0.2 seconds of any interaction”,
- “Design components should have an availability before EoL of two years minimum”
For every system these user experience, reliability, performance criteria, and through lifecycle considerations should be made.