Поделиться через


Importance of non-functional requirements

I learnt by hard way that performance is a core attribute in any architecture - either be it a product or an application.

It was time while I was working in designing and developing an application for a bank based out in middle-east. The application is complete and ready for user acceptance testing. Since it was a banking related application, all security related features are taken care of. The user interface was great and business functionalities are well implemented and a thorough round of testing done from our testing team. It was our big surprise to hear a UAT failure with severity 0 bug posted by the UAT team. The bug was on response time being not meeting their required standard. I then understood how essential it is to take care of ‘non-functional’ features apart from the functional features.

Non functional features like

security,

performance,

auditing requirements,

maintainability features like logging & reporting,

Stand by system upon fail-over of main system,

recovery time to bring up the stand by system upon failure,

Database backup & restore strategies (DB maintenance plan), etc.

are part of requirement specification which might not be explicit. Usually, a statement of work (SOW) or a rough business requirement document (BRD) will be the available input for a technical lead / business analyst to start with the assignment. He jump starts understanding the base requirements of the customer and may mostly involve travel to client-site to deal deeper on the functionalities. At the end of this exercise, he / she creates functional specification document (FS). This document should include the non functional specifications as well.

Many clients don’t explicitly provide these non functional requirements because of several reasons. May be customer do not understand these features and he is good at his business related functional features. Don’t expect a customer to voluntarily provide them all during requirement gathering phase. It is the core responsibility of the technical guy who gathers it and prepares the FS. Don’t assume or avoid these!