ABSTRACT: Software development has become recently a booming business and industrial field. Since many people, organizations and enterprises now are dependent on software recently, having reliable and effective software systems is important. Therefore, the need to manage and well supervise the development of such software projects became much important than before. Software engineering was introduced exactly for this mission. It starts with collecting requirements from Stakeholders, then it uses these requirements and produces a software design that to be handed over to developers in a way that helps them to develop better software in a shorter time within the allocated budget, and goes for testing the software product to ensure the quality of it meets stakeholders desire, and for adding the finishing touches. These requirements must be clear, unambiguous, consistent to some extent, and tell exactly what stakeholders want, in order to help developers come out with the desired software.