NFRs: Non Functional Requirements in Data Systems

Fakher HANNAFI
5 min readJan 2, 2023

--

Data systems are essential to the success of any business, providing the essential foundation of storage, retrieval and analysis of data. While functional requirements are the specific tasks that a data system must be able to perform, non-functional requirements, aka NFRs are the overarching qualities that must be present in order for the system to be successful. Scaled Agile Framework emphasized this concept in their practises.

What are Non Functional Requirements for IT systems?

It’s important for a product to work properly and have distinguishable features. With nonfunctional requirements, you can build a product with unique properties. Knowing examples of nonfunctional requirements and how they work in an application can help you design a system that meets the needs of your end users. In this article, we define nonfunctional requirements and explore the best practices for designing product properties.

Throughout my professional experience I worked in some projects that take seriously these NFRs listed below.

  1. Performance requirements: requirements that specify the system behavior under certain conditions, including response time, throughput, availability, scalability, etc.
  2. Security requirements: The requirements that define the system safety and protect it from malicious attacks or unauthorized access.
  3. Usability requirements: The requirements that define the user-friendliness of the system, including the interface and user experience.
  4. Reliability requirements: The requirements that define the system’s ability to meet its performance goals over a given period of time.
  5. Maintainability requirements: The requirements that define how easy it is to maintain the system and make changes to it.
  6. Portability requirements: The requirements that define how easily the system can be transferred to a different environment.
  7. Interoperability requirements: The requirements that define how easily the system can integrate with other systems.
  8. Compliance requirements: The requirements that define how the system meets legal requirements, such as privacy and data protection regulations.
  9. Sustainability Requirements: The discipline of sustainability addresses the long-term environmental, economic, and societal impact of your business activities that outcomes from your IT system

What are Non Functional Requirements for Data systems?

Non-Functional Requirements (NFRs) are an important aspect of any data platform. These requirements describe the properties of a system that are not directly related to the functionality it provides, but are still necessary for the system to be successful.

NFRs are necessary to ensure that the system is reliable, secure, cost-efficient and usable.

A data platform’s NFRs can include requirements such as scalability, performance, reliability, availability, maintainability, security, and usability. Scalability refers to the ability of the system to accommodate increased traffic, data volume, and user load without any additional effort. Performance defines how quickly the system responds to user requests. Reliability specifies the system’s ability to maintain a consistent level of performance over time. Availability describes how often the system is available to users. Maintainability is the degree to which the system can be modified and maintained without risk of disruption. Security defines the measures taken to ensure the confidentiality and integrity of data stored in the platform. Finally, usability describes the ease of use of the platform for its users like making well documented Data API (swagger, ReadTheDocs…) for developers, or providing Graphical User Interface for Business Analysts…

What are Business Value behind NFRs?

Non-functional requirements are important for specifying the behavior of a system. They provide the necessary information to ensure that the system meets the desired expectations of the customer. Non-functional requirements also help to ensure that the system is reliable, robust, secure, maintainable and scalable. They provide a basis for making decisions about the design and implementation of the system and can have a significant impact on the success of the system. By specifying the non-functional requirements that are important for the system, companies are able to maximize the value of their investments in the system.

Failure to take NFRs into consideration can lead to user, client, and developer dissatisfaction, an inconsistent software product, and an increase in time and cost to fix the software due to its lack of preparation.

What are their PROS ?

  1. Improved Quality: Non-functional requirements allow for better quality control, as it outlines the specific features that must be included in order to meet the requirements. This means that developers are able to focus on developing the features that are necessary, rather than wasting time on features that are not relevant.
  2. Improved Performance: Non-functional requirements can help to ensure that the software or system meets expected performance criteria. This could include speed, scalability, availability, or other factors. This can help to prevent problems in the future.
  3. Lower Development Costs: By setting out the non-functional requirements in advance, developers can avoid costly re-work or changes later in the development process. This can save time and money, as well as improve overall quality.
  4. Increased Usability: Non-functional requirements often include usability criteria. This means that the software or system is designed to be as user-friendly as possible. This can help to make the product more appealing to potential customers.

What are Challenges behind these requirements?

  1. They often require extra effort and resources to implement.
  2. They can be difficult to define in a way that is measurable, testable, and achievable.
  3. They can be difficult to design and manage in a way that meets the needs of all stakeholders.
  4. They can be difficult to prioritize and balance against other competing requirements.
  5. They can be more difficult to test and verify than functional requirements.
  6. They can be more difficult to measure and track against performance goals.

How to deal with NFRs ?

  1. Document the Non-Functional Requirements: Make sure that the non-functional requirements are clearly documented and understood by all stakeholders.
  2. Analyze the Impact of Non-Functional Requirements: Analyze the impact of the non-functional requirements on the overall system.
  3. Identify Non-Functional Requirements Constraints: Identify any constraints on the non-functional requirements and plan for their implementation.
  4. Develop a Test Plan: Develop a test plan to ensure that the non-functional requirements are met.
  5. Monitor the Implementation: Monitor the implementation of the non-functional requirements to ensure that they are met.
  6. Review the Non-Functional Requirements: Review the non-functional requirements periodically to ensure that they are still valid and relevant.

Conclusion

It is essential to take into consideration all of the Non-Functional Requirements (NFRs) when constructing a data platform or an IT system. Not doing so can lead to unfortunate outcomes. However, it is best to think about these requirements before trouble arises. As with any investment, the sooner you address them, the more beneficial the system will be.

References

--

--

Fakher HANNAFI

AWS Data Architect, MLOPS Passionate, Speaker, blogger, Investor, Music Professor and Ping pong dabbler