Requirements capture user needs about a system [KG99]. They stand for those functional and nonfunctional attributes the system must posses to be considered correct. Requirements also dictate how the system should respond to user interaction. Therefore, they play a very important role in software development. They state what the system should do for the user to be satisfied, and therefore they lead all development stages in the lifecycle. They are used to communicate user needs to all people involved in the development process, the system architecture is built upon them and the testing stage uses them as satisfaction criteria.