Functional and Non-Functional Requirements
Before we begin a project, we are always required to document the requirements and classify them between functional requirements and non-functional requirements. This activity is beneficial whenever there is a future risk or disagreements.
What are Functional requirements?
- Wikipedia says,In software engineering, a functional requirement defines a function of a software system or its component.
- Functional requirements may be calculations, technical details, data manipulation and processing and other specific functionality that define what a system is supposed to accomplish.
- In simple terms, Functional requirements defines what a system is supposed to do.
What is a function?
- A function is described as a set of inputs, the behavior, and outputs.
- So, A function specifically involves external interaction.
- It describes the action which completes the work,that system is supposed to do.
- Behavioral requirements describing all the cases where the system uses the functional requirements are captured in use cases.
- This behavior may be expressed as services, tasks or functions the system is required to perform.
- A use case describes an interaction between an actor and the system.
For example: Interaction between customer and Bank System.
- The plan for implementing functional requirements is detailed in the system design.
- Business Rules like, A user can see only his profile information and data entered by him.
- Authentication like A user should be authenticated with the bank’s database.
- Reporting Requirements like A user can see his account details.
What are non-Functional Requirements?
- Wikipedia says, a non-functional requirement is a requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviors.
- In simple terms, It defines how a system is supposed to be.
There is no a clear distinction between functional and nonfunctional requirements. Still we can try,
- It defines the qualities or attributes of the system.
- It helps define the boundaries of the solution
- It describes the experience of the user while doing the work.
Non-functional requirements are still requirements but there is no function like system’s input/output behavior attached to them. A Non-functional requirement measures these functions on various parameters. These parameters are experimented against the user’s experience. After that, a metrics is formed to document it.
- The plan for implementing non-functional requirements is detailed in the system architecture.
- Performance: Performance is related to the speed of operation of a system. For example:
- Response: The time taken by the system to react on user’s request.
- Scalability: It defines the capability of the system to extend under load.
- Reliability: Reliability is the ability of a system to perform its required functions under stated conditions for a specific period of time.
- Usability: Usability is the ease with which a user can learn to operate the system or component.
- Maintainability: When the system is deployed and running, Maintainability defines the ease with which the changes can be introduced in the system.
Each function will lead to another non-functional requirements like,
- User requires a function of ‘site-navigation’ then by default, a non-functional requirements like usability gets attached to it.
- User requires transactions functionality then by default, Security and reliability gets attached to it.
I hope we were able to help you about differentiation between functional and non-functional requirements. Thanks.