The course covers requirements engineering in depth including the followings: requirements Engineering Process - Elicitation of requirements - Functional and non-functional requirements - System services and constraints – Quality of Requirements - Requirements traceability matrix - Metrics for non-functional requirements - Use case description - Use case and context diagrams - Software Requirements Specification -IEEE Standard - Requirements for agile developments - Requirements for various systems: embedded systems, web-based systems, business systems, etc. – Requirements management. Ethical behavior of software analysts with respect to stakeholders when gathering the requirements will be also discussed. This course gives also a brief introduction to formal specifications using specification languages such as Z or B. Students participate in a group project on software requirements analysis and specification and requirements management case tools.