“…A requirement attribute can be: (i) items, typically objects, explicitly specified in the requirements; (ii) user-defined attributes (e.g., data structures defined by the designer); or (iii) system attributes that relate to the operating environments or other systems. The techniques presented in [1,2] do not give this flexibility in first two steps as it is handles specific types of software components (functions or [5] packages) and specific types of the attributes for those components (features of functions or packages). For example, the refactoring approaches presented in [1,2] cannot be applied on systems written on structural programming languages while the approaches presented in [5,6] is independent from the type of programming language.…”