Software impacts almost every aspects of modern society. Software development process is a coherent set of activities for software modeling and associated artifacts. Requirements are basis of software systems. As the first phase of the software development process, requirements set reasonable targets to be achieved. The purpose of this report is to study the role of requirements in software development process, and to survey the methods for specifying functional and non-functional requirements (NFRs). In this report the concepts of functional and non-functional requirements are introduced. The problems of functional and non-functional requirements lay on one of the following aspects: identify, document, validate and verify , so this report presents some answers to these questions through discussion and comparison of many process and methods. We also introduced some NFR frameworks are introduced and overviewed some tools used to support requirements.