This document discusses different types of software requirements. It outlines functional requirements that specify system behaviors and non-functional requirements that specify qualities like usability, reliability, and performance. Domain requirements capture characteristics specific to the application area. Inverse requirements specify what a system should not do. Design and implementation constraints provide guidelines for system development. Metrics are important for quantifying non-functional requirements so they can be objectively tested. Requirements should be explored from different perspectives and categorized to best inform system design and development.