In systems engineering and requirements engineering, a non-functional requirement (NFR) is a requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviors. They are contrasted with functional requirements that define specific behavior or functions. (Wikipedia)
Defining (Designing) the functional and non-functional requirements is a key step in the web development process and one that not only applied to software development, but website development as well.
Defining (Designing) the functional and non-functional requirements of a website BEFORE you begin may seem tedious and I will admit with some clients it is like pulling teeth but it is very important that you know what the website is actually “meant to do” and “how it is meant to act” before designing the way it is meant to look. And from this perspective the functional and non functional requirements can ensure that you meet the clients expectations and what I use as a handover checklist and the basis of the contract to ensure there is no spec creep.
And while the terms come from software engineering they are just as important in web development to ensure that your pages interact, perform (behavior, load time etc.) with each other and user in the manner that client expected.
Functional requirements describe what the software / website should do (the functions). Think about the core operations.
Because the “functions” are established before development, functional requirements should be written in the future tense. In developing the web application for the portfolio website, some of the functional requirements could include:
- The website shall/will show galleries of images that open to new pages
- The website shall/will allow galleries to be sorted by date and topics
- The website shall/will be responsive
- The website shall/will allow users to complete a contact form
- The website shall/will show address and directions to office
- The website shall/will have about page
- The website shall/will have homepage
- The website shall/will on the homepage have a custom instagram feed
- The website shall/will allow website owner to update all page content from a web based admin area
And the list would go on. Tedious and not to the same level as software development projects but still important so you do not miss anything important in the website development.
Unlike functional requirements the non-functional requirements are not concerned with the functions of the website but instead look at the criteria to which website is expected to conform to. Non-functional requirements can include things like response time, development time, usability and reliability. It can also be closely tied to user satisfaction.
Some non-functional requirements for a portfolio website could include:
- The website shall/will be easy to use by all external users
- The website shall/will be easy to use by all website admins
Each requirement is not related to an operation or what the application should do. Instead, the main focus in this case is the ease of use and performance. That’s the idea of non-functional requirements. Which can make non-functional requirements hard to measure and define when they have been successfully met.
Developers should always establish requirements before any coding begins so that they can effectively meet the projects requirements and to avoid project spec creep. Identifying functional and non-functional requirements is key to defining the projects over success or failure. By establishing the functional and non-functional requirements, you have a guide to follow in ensuring that a website meets it specifications.