A Classification and Quantification of Non-Funcational Requirments
A non-functional requirements are those which are not related to functionality of the system and often ignored to quantify for software projects. In this article I will discuss the importance of non-functional requirements quantification for service oriented architecture. Some of services i.e. weather forecast services, Money Transfer APIs, Amazon Web Services and Google web services require many non-functional requirements for example response time, load time, HIPA compliance rules, Legislative requirements, Security, Integrity and accessibility.
There was an age of static web where we had only static web pages then world moved towards the web application i.e. online HRIS, Online Banking, Online gaming applications. Now is the age of web application+ Web services. Web application interacting with each other through web services
Quantifying non-functional requirements are very important for clients as well as for successful running of any business. For example security aspect in online money transfer system (MTS) transaction API is a non-functional requirement but we may
include that to functional requirement if client has ask for, if not we may cover in non-functional requirements
Much work is done on non-functional requirements in literature, as requirements are written in natural languages and natural languages are ambiguous, one requirement can be interpreted in different ways. For example.
“Stop not run”
“Stop, not run”
“Stop not, run”
I have quantified some of non-functional requirements
|#||ID||Non-Quantified Requirements||Quantified Requirements|
|1||Req001||System should be available to user all the time||Our system should have 99.9% up time|
|2||Req002||System should response in minimum time||System response time or page load time should be 1second/page on average|
|3||Req003||User should not be able to try different password many times for security reasons||User with 3 unsuccessful password attempt should be shown captcha|
|4||Req004||User should be able to see his information in secure way||Social Security Number (SSN) and Password should be encrypted and information should be integrated.|
|5||Req005||System should ask to user for login again after some time inactivity||After 10 minutes of inactivity system should prompt to user for login again|
I have identified and classified non-functional requirements which are shown in given below picture
Our web applications or business should compliant to government rules or regulations, for example for healthcare system HIPA compliance rules should be followed, as protecting the patient information and information visibility to concern parties only is the mandatory requirement.
Apparently it seems that government is putting restriction on our business but government is the mother of all security concerns. Government is responsible for well-being of every citizen of the country. Government rules and regulations are at the top then we have company regulations, development constraints, QOS, Software interoperability etc.
Quality of Service
Services should be secure from external attacks. Security should be built in the code which developers write. Hackers on internet are trying and launching different types of attacks and financial applications are at their hit list.
Safety is important in mission critical systems. Human mission to mars and beyond is one example where we many not only care about the many million dollar shuttle and we may do extra care about our expensive human resources
If we put load on services and they become un-available it will be major loss to business with growing clients. Software applications are used in stock market, data should be available to user all the times as un-availability of only 1 minute can create million dollar finical loss to business.
Every software have development constrains which are related to cost, deadline, maintainability etc., as these are non-functional requirements and have greater impact on software product or services. For example if we fix and quantify the cost then requirement becomes variable and if we fix and quantify the requirement then cost becomes variable.
Software architecture whether it is service based or web base or desktop base have some constraints which are interoperability, installation and distribution etc. , these constraints should be discuss with client before the development of services.
Analysis and Conclusion
Quantifying non-functional requirement for services is important as it is said that if we cannot measure, we cannot control it. So quantifiable measuring is important for controlling and monitoring the non-functional requirements. Sometimes client do not speak for write the quantified requirements, in this case we should interpret in quantifiable way and should discuss with client for agreement.
As in future each project should have documented quantified non-functional requirements, similar as we have functional requirements. Sometimes non-functional requirements have more importance than its counterpart functional requirement, so ignorance can lead to dissatisfied customer and legal penalty. As an IT expert we should develop quality software on which customer can trust and have faith on it.