In this chapter, we've started the move from the abstract world of features to the more specific world of software requirements. Accordingly, we've provided some more specific definitions and classification guidance for the work that lies ahead. We've described the three different types of requirements we'll be looking for: functional requirements, nonfunctional requirements, and design constraints. We've described the " what versus how " distinction and yet also noted that this must all be considered within the scope of an iterative requirements-influence-design-influences-requirements framework. These are not trivial concepts. Maybe that's why we love technology the way we do.