Subscribe by Email

Wednesday, November 9, 2011

What are non-functional requirements in the field of software development ?

Non functional requirements is a concept of requirements engineering and systems engineering; it can be defined as a requirement that specifies the criteria or criterion which can be used to judge the operations of a systems and it’s behavior. There is great line of contrast between functional and non functional requirements - a functional requirements state the purpose or aim of the system or the software whereas a non functional requirement states how a system should be. Non functional requirements are none other than the qualities of a software or system. Non functional requirements are also called by other names such as given below:
1. Quality attributes
2. Quality of service requirements
3. Quality goals
4. Constraints and
5. Non behavioral requirements

Non functional requirements can be divided into 2 main types as discussed below:
1. Execution non functional requirements: this category includes non functional requirements such as usability and security i.e., it includes all those types of non functional requirements which one can observe at run time.
2. Evolution non functional requirements: this category includes non functional requirements such as maintainability, testability, scalability and extensibility etc i.e., it includes non functional requirements which are present in the static structure of the software of the system.

Numerous examples can be given for non functional requirements. Few have been listed below:
1. Sufficient network bandwidth
2. Audit
3. Accessibility
4. Control
5. Back up
6. Availability
7. Capacity
8. Forecast
9. Back up
10. Current
11. Deployment
12. Dependency on other parts
13. Compliance
14. Configuration
15. Certification
16. Disaster recovery
17. Error recovery
18. Documentation
19. Efficiency
20. Effectiveness
21. Emotional factors
22. Escrow
23. Environmental protection
24. Failure management
25. Legal issues
26. License
27. Extensibility
28. Maintainability
29. Interoperability
30. Network topology
31. Modifiability
32. Operability
33. Open source
34. Response time
35. Platform compatibility
36. Performance
37. Privacy
38. Portability
39. Price
40. Quality
41. Recoverability
42. Reporting
43. Reliability and resilience
44. Constraints from resource like memory availability, speed of the processor
45. Horizontal scalability and Vertical scalability
46. Robustness and safety
47. Standards compatibility with software and tools.
48. Stability
49. Supportability and testability

Because of the use of suffix “ility” with many non functional requirements they are also called “ilities”. Functional requirements are such requirements that they can either be met or not met. But, non functional requirements are measurable. They can be measured up to what extent they have been achieved or not achieved. This helps to measure the properties of the final software which otherwise would have been declared as a failure. This also makes it easy to know where the software is lagging in quality and can be improved upon. There is a very important thing about requirements that one has to take care of.

This is the balance between different non functional requirements. It’s very important to strike a balance between all the non functional requirements to keep the system working well. All non functional requirements are measurable in terms of quality and quantity both. There are some important and compulsory aspects of non functional requirements which have been stated below:
1. Documentation
2. User interface and human factors
3. Performance characteristics
4. Hardware considerations
5. System interfacing
6. Error handling and extreme conditions
7. Quality issues
8. Physical environment
9. System modifications
10. Security issues
11. Resources and management issues
Apart from these aspects there are several other questions that follow these like who is responsible for back up of the system and who is responsible for the maintenance of the system.

No comments:

Facebook activity