Requirements Gathering, Elicitation and Modeling Techniques