Software Requirements
May 11, 2020
The first step to any design process is to gather your requirements. Figure out what your application or product needs to do. What’s the problem you’re trying to solve? Why are you building the application in the first place? At the core what are the application’s functional requirements?
To write the functional requirements, I use the phrase, the system must, or the application must, to describe what it must do.
I phrased the non-functional requirements to describe how the application should be. They describe the ilities, like maintainability, reliability, usability, and availability.
That’s a common mistake. You don’t need to be exhaustive and have answers for everything up front. On the first pass, only focus on capturing the absolute minimum set of requirements. Not the things are optional, or nice to have, or your dream features. Just the bare necessities, your minimum viable product. If the first pass at requirements isn’t perfect, that’s okay, you can update the requirements later if needed. The goal at this point is to get something written down and that could be as simple as bullet point son paper.
FURPS
One commonly used model for classifying software quality attributes is the acronym FURPS which stands for functionality, usability, reliability, performance and supportability. FURPS serves as a checklist of several key qualities to consider when determining requirements.
Functionality refers to the capabilities and features of the app. This is a core of what the customer wants.
Usability affects the person who will be using the program. Is it easy on the eyes? Is it intuitive to use? Is the documentation accurate and complete?
To define reliability requirements, you’ll need to know how much system downtime is acceptable. If the failures are predictable and how the system can be recovered. Performance requirements dictate the application’s response time through put. And they put limits on the system resources it can use.
In supportability. Make sure the application can be tested, extended, serviced and installed and configured.
FURPS +
Now in addition to those five categories there is an extension to the FURPS model called FURPS plus which add four more categories.
Design addresses constraints on how the software must be built because the app requires certain things such as a relational database.
Implementation. Does it have to be written in a certain language? Are there standards or methodologies that need to be followed?
The interface typically refers not to the user interface but to an external system that needs to be interfaced with.
And finally, physical requirements. Actual physical constraints related to the hardware the application will be deployed on.