Table of contents
- Determine the development stage of the product.
- Make a list of the main functional requirements.
- Determine how many users per unit of time the system serves currently.
- Determine the geographical location of the users.
- Determine how the system load fluctuates in the next six to twelve months.
- Determine if the product has specific usage patterns.
- Determine the input data type sent to the system.
- Determine the input data format sent to the system.
- Determine the output data type sent back to the clients.
- Determine the output data format sent back to the clients.
- Determine the data update frequency handled by the system.
- Determine the types of clients supported.
- Determine if the system offers multi-platform consistent user experience.
- Determine if the system works offline.
- Determine if the system supports real-time collaboration.
Functional requirements
Map directly to the main user journey in the product.
Determine the development stage of the product.
This clarifies the desired speed of iteration, performance, resilience and maintainability.
- Proof of Concept (PoC): a small exercise to test an incomplete idea
- Prototype: an idea in early stages of development
- Minimum Viable Product (MVP): a functional core solution that can be iterated on
- Production-ready: a fully-fledged product, with a large user base
- Mission-critical: a product that must function continuously to ensure business continuity
Make a list of the main functional requirements.
These map to a typical user journey in the application. For example, for an e-commerce website, these are the steps from registration to checkout.
Determine how many users per unit of time the system serves currently.
The unit of time can be month, day, second.
- Hundreds
- Thousands
- Hundred of thousands
- In the millions
- In the billions
Determine the geographical location of the users.
This influences the choice of network topology and Content Distribution Network (CDN).
- Users are co-located in a small geography, like a country
- Users are distributed across the world
Determine how the system load fluctuates in the next six to twelve months.
This informs a choice of architecture that scales relatively easy without major refactoring.
- The system load will increase slowly
- The system load will increase by at least an order of magnitude
Determine if the product has specific usage patterns.
This gives an idea about potential cost optimisations.
- The product has constant use throughout the year
- The product has bursts of activity, for example at certain times during the day
- The product has seasonal peaks, for example summer/winter
Determine the input data type sent to the system.
This clarifies if the system processes and aggregates homogenous or heterogenous data.
Determine the input data format sent to the system.
- Text/JSON/XML
- Binary
Determine the output data type sent back to the clients.
- Text
- Images
- Audio/Video
Determine the output data format sent back to the clients.
- Text/JSON/XML
- Binary
Determine the data update frequency handled by the system.
- Data changes infrequently and can be processed in batches
- Data changes in real-time and is streamed continuously
Determine the types of clients supported.
- Web browsers
- Smartphones and tablets
- Desktop applications
- Wearables
- IoT devices
Determine if the system offers multi-platform consistent user experience.
For example, a notification system will have different requirements than a financial app.
If users clear a notification on one device then switch to another, it’s expected they won’t see the same notification as new, even though it might take a few seconds to update.
On the other hand, it’s common for banking apps to allow usage of one device at the time. If the user switches devices, they will be expected to go through authentication and device authorisation before using the app on the new device.
- The user switches seamlessly between devices in the middle of a task
- The user uses the product on one device at a time
Determine if the system works offline.
For example, like Google Calendar.
- The user uses the product offline
- The product is operational with an Internet connection
Determine if the system supports real-time collaboration.
For example, like Google Docs.
- The user uses the product individually
- Multiple users are collaborating seamlessly in real time