Functional and Non-Functional Requirements
Functional and Non-Functional Requirements
1. Functional Requirements:
Functional requirements define the specific actions a system must perform. They
describe the "what" of the system, what a system should do, such as specific
features, functions, and capabilities it must have to meet user needs. The
functional requirements describe the behavior of the system as it correlates to the
system's functionality. These are the requirements that the end user specifically
demands as basic facilities that the system should offer.
Key Points:
• Focus on functionality: They detail the system's core functionalities and
how it accomplishes specific tasks.
• User-centric: Typically specified by users or stakeholders who outline
what the system needs to do to meet their needs.
• Mandatory: Essential for the system to function as intended. Missing a
functional requirement means the system is incomplete.
• Testing: Verified through functional testing methods like system,
integration, and API testing.
2. Non-Functional Requirements:
Non-functional requirements define the qualities or characteristics of a system.
They describe the "how" of the system, how a system should perform, including
criteria like performance, security, usability, and reliability. These requirements
focus on the quality attributes of the system rather than specific behaviors.
Non-functional requirements are not related to the software's functional aspect.
They can be the necessities that specify the criteria that can be used to decide
the operation instead of specific behaviors of the system.
They deal with issues like:
● Portability
● Security
● Maintainability
● Reliability
● Scalability
● Performance
● Usability
● Flexibility
● Availability
● Compatibility
Key Points:
• Quality Attributes: Focus on the overall quality of the system,
such as performance, security, usability, and reliability.
• Technical Considerations: Often specified by developers and
architects based on technical constraints and best practices.
• Desirable but not Mandatory: While important, they may not be
absolute dealbreakers. The level of fulfillment can vary depending
on project priorities.
• Testing: Validated through non-functional testing methods like
performance, security, and usability testing.
Examples:
• Social Media Application: A non-functional requirement for a social
media app could be that it must load within 3 seconds to provide a
good user experience.
• Mobile Application: A non-functional requirement for a mobile app
might be, the app should load within 3 seconds on a stable internet
connection.
• Banking System: For a banking system a non-functional requirement
could be, the system must have robust security measures to protect
user data.