Functional and non functional requirements - alexanderteplov/computer-science GitHub Wiki
Functional Requirements
| Functional Requirements | Non-Functional Requirements |
|---|---|
| They define a system or its component. | They define the quality attribute of a system |
| It specifies, “What the system should do?” | It specifies, “How should the system fulfill the functional requirements?” |
| User specifies functional requirement. | Non-functional requirement is specified by technical peoples e.g. Architect, Technical leaders and software developers. |
| It is mandatory to meet these requirements. | It is not mandatory to meet these requirements. |
| It is captured in use case. | It is captured as a quality attribute. |
| Defined at a component level. | Applied to a whole system. |
| Helps you to verify the functionality of the software. | Helps you to verify the performance of the software. |
| Functional Testing like System, Integration, End to End, API testing, etc are done. | Non-Functional Testing like Performance, Stress, Usability, Security testing, etc are done. |
| Usually easy to define. | Usually more difficult to define. |
- Business Rules
- Transaction corrections, adjustments and cancellations
- Administrative functions
- Authentication
- Authorization levels
- Audit Tracking
- External Interfaces
- Certification Requirements
- Reporting Requirements
- Historical Data
- Legal or Regulatory Requirements
- Performance – for example Response Time, Throughput, Utilization, Static Volumetric
- Scalability
- Capacity
- Availability
- Reliability
- Recoverability
- Maintainability
- Serviceability
- Security
- Regulatory
- Manageability
- Environmental
- Data Integrity
- Usability
- Interoperability