This course focuses on using a systematic approach to eliciting, analyzing, validating, documenting and managing requirements. It investigates the requirements engineering approach and the adoption of relevant techniques at each stage. The course starts with an overview of software requirements basics including definitions of terminology, describing software requirements, standards and an introduction to the requirements engineering process. UML tools and techniques are also covered. Theoretical concepts are introduced and are then reinforced through practical exercises and a running case study where students can apply techniques of analysis in a realistic project.  The course aims to develop the necessary skills needed to work with requirements stakeholders and actors to make sure that requirements are complete, unambiguous, realistic and testable