Requirements engineering (RE) is the primary task (process) that is done when agreed upon to develop a software product. The success of the software product is gauged on its ability to meet the intended needs of the stakeholders. There is abundant literature emphasizing the significance of RE and its influence on the entire software project, apart from its importance as the first step for a successful development endeavor. There are several established methodologies that are acknowledged to support the RE process and assist in creating a reliable structure of creating software. Despite the availability of such techniques and solutions, it was observed that umpteen number of software product failures are attributed to unsatisfactory RE practices. In this thesis, we have conducted a study with six organizations to emphasize the gap between the state of the art and the state of the practice, and consequently identify the factors that hinder the industrial community to implement state of the art RE. As a result of this empirical research we have found that to a great extent, state of the art practices are unpopular, more specifically in small organizations. Interestingly the majority of the problems associated with RE are associated to non technical issues.