Requirement engineering is a systematic approach through which the software engineer collects requirements from different sources and implements them into the software development processes.
Requirement engineering activities cover the entire system and software development life cycle.
Requirements engineering process is an iterative process which also indicates that the requirements management is understood as an aspect of requirements engineering process [9, 10, 11].
Traditionally, requirements engineering is performed in the beginning of the system development lifecycle [13].
However, in large and complex systems development, developing an accurate set of requirements that would remain stable throughout the months or years of development has been realised to be impossible in practice
[14].
Therefore, requirements engineering is an incremental and iterative process, performed in parallel with other system development activities such as design, coding etc.