Requirements engineering is the process of establishing customer requirements and constraints for a system. It involves tasks such as inception, elicitation, elaboration, negotiation, specification, validation, and requirements management. The goal is to define what the customer wants in a structured, organized manner through techniques like collaborative gathering, use case development, and quality function deployment. This establishes a solid foundation for design and construction of the software system.