English Article · Software

Architecture System Requirements

There are 2 types of system requirements:

  1. Functional requirements (FR).
  2. Non-functional requirements (NFR).

Functional requirements:

  • “What system should do”:
    • Business flows (login, retrieve specific entities).
    • Business services (login service, data access service, etc.).
    • User interfaces.

Non-functional requirements:

  • “What the system should deal with”:
    • Performance:
      • Always talk in numbers: how much time does it take to perform a single task of an application (<100 ms or <1 sec).
      • Latency and throughput: how many tasks can be performed in a single time unit?
    • Load: quantity of work without crashing (how many concurrent requests in WebAPI without crashing).
    • Data Volume: how much data the system will accumulate over the time, this statement should bring to which type of DB should be used, which queries to utilize.
    • Concurrent users: how much users will be using the system simultaneously.
    • SLA (service level agreement): required up-time for the system.
    • and many more!

The non-functional requirements should be planned for the extreme cases as well.

The non-functional requirements should be framing boundaries.

Never begin working on a system without NFR in place.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.