IST Clock

Friday, June 4, 2010

Functional & non functional requirements

Functional & non functional requirements

Today’s post is about ‘Functional & non functional requirements‘. I found lot of articles on the internet explaining what are functional and non functional requirements in reference to a software system. Also this is a common question asked in software testing interviews :)

In all software systems there are basically two types of requirements namely functional requirements and non functional requirements.

Functional requirements of a software refers to the stated features of the software which it should have OR it should do in order to achieve satisfy the business needs. Functional requirements are business requirements which a software should have in order to satisfy the user needs of the business. These requirements describe what a software should do and how the user should use it in order to achieve a particular business flow / functionality. Technically functional requirements divides the software system into different modules with respect to the various operations OR logical group of operations and defines the attributes/features of these modules. As stated above, functional requirements satisfies business rules and changing the functional requirements will definitely change the functionality of the software systems.

IEEE defines functional requirements as -A system/software requirement that specifies a function that a system/software system or system/software component must be capable of performing. These are software requirements that define behavior of the system, that is, the fundamental process or transformation that software and hardware components of the system perform on inputs to produce outputs.

Typical functional requirements of a software system can be –
- Business Rules
- Transaction corrections, adjustments, cancellations
- User authentication and authorization
- Certification Requirement subject to certification compliance.
- Legal or Regulatory Requirements

Non functional requirements are other set of requirement that a software system should have so that the system should be more usable and reliable specifically. Non-functional requirements specify all the remaining requirements not covered by the functional requirements. These requirements are more related to / cater to user rather than to business rules. These are not the tasks that will be performed by the system instead these are the quality standards which are good to have by the system and thus does not effects systems functionality. These are not the mandatory requirements of the systems but in order to be a good software from users perspective it’s good to have these. Often these requirements are used to compare the products of similar functionality for example there are lots of total banking automation (TBA) solutions available in the market but decision of choosing a software depends on how reliable and secure a system is. Typical non-functional requirements are:

- Performance - Response Time, Throughput, Utilization,
- Scalability
- Reliability
- Recoverability
- Maintainability
- Security
- Usability
- Interoperability
- Compatibility

No comments:

Post a Comment