Analysis of UML to Gather Non Functional Requirements
Batool, A. Malik, Z. and Shabbir, S.
Abstract— During the process of software development, gathering requirement is the very imperative task. Both functional as well as non functional requirements play an important role in building the quality software. Little work has been done in the field of gathering the non functional requirements. To reflect the FRs and NFR’s properly, a solid architectural foundation is needed. Modeling is the best way to achieve such a goal, and Using UML tools can help to achieve the goal of eliciting functional as well as non functional requirements. We use UML models to represent FRs and NFRs of the system because UML has emerged as the industry standard for software modeling notations. This work provides the thorough and comprehensive work done in the field of eliciting non functional requirements. A new technique has been presented that helps in getting the non functional requirements right. This technique covers all the phases of requirement engineering and produces very valid results, as the goal of requirement engineering i.e.. Fulfilling the demands of stakeholder is completely satisfied.
Index Terms-- Aspect oriented approach, Goal oriented approach, Non Functional requirements, UML.
During the process of software development gathering requirement is the very important task, we can say that it is the “brain” of the system being developed. If this is done right, the whole system is going to perform efficiently or according to the needs of the stakeholder. There are two main types of requirements: Functional and Non-Functional. Functional requirements specify specific behavior or functions whereas Non-functional requirements specify all the remaining requirements not covered by the functional requirements. They specify criteria that judge the operation of a system, rather than specific behaviors.
For the past ten years, the Requirements Engineering (RE) community has being showing that requirements are an activity of great importance. Developing quality software demands attention to requirements. In the past, meeting stakeholders’ needs regarding necessary functions to be performed was considered an important accomplishment. However, as software complexity grows and clients demand higher and higher quality software, the RE community has been pushed to provide software that not only implements all the desired functionality but also some non-functional aspects such as cost, reliability, security, maintainability, portability, accuracy among others. These non-functional aspects must be treated as non-functional requirements (NFR) of the software. They, still, should be dealt with from the beginning of software development process, throughout the whole life cycle. 
Despite the fact that Non-Functional Requirements (NFRs) are very difficult to achieve and at the same time are expensive to deal with, a few research works have focused on them as first class requirements in a development process. The demand for high quality software system is increasing day by day. Now the problem is how to elicit these requirements? Little work has been done on NFR’s and more specifically in Use of UML in order to elicit non functional requirements. Techniques to elicit NFRs include process oriented approach, product oriented approach, and NFR questionnaire etc. This research work is a step to remove these shortcomings. First, we identify the non-functional requirements (NFR) of a system which needs to be engineered. Second, we specify the NFRs with the appropriate UML diagrams and our proposed notations for creating standard UML diagrams.
Importance of Non-Functional Requirements
The official definition for a non-functional requirement specifies how the system should behave. "A non-functional requirement is a statement of how a system must behave; it is a constraint upon the systems behavior." Non-functional...