This document discusses software engineering and requirements engineering. It defines software engineering as using techniques, methodologies and tools to produce high quality software within budget and deadline constraints. It describes requirements engineering as identifying functional, non-functional and pseudo requirements to develop software. Key activities in requirements engineering include domain analysis, defining the problem scope, and determining what constitutes a requirement.