This document discusses understanding requirements in software engineering. It outlines the key tasks in requirements engineering as inception, elicitation, elaboration, negotiation, specification, validation and management. Elicitation involves drawing requirements from stakeholders but can be difficult due to problems with scope, volatility, understanding and communication. Elaboration develops a refined technical model using information from inception and elicitation. Negotiation aims to agree on a realistic deliverable through prioritization and negotiation. Specification can take various forms depending on the system. Validation reviews the specification for errors and omissions. Requirements management handles changing requirements throughout the project.