This paper discusses the significance of nonmonotonic reasoning, a method from the knowledge representation area, to mainstream software engineering. In particular, we discuss why the use of defaults in specifications is an adequate way of addressing some of the most important problems in requirements engineering, such as: The problem of identifying and dealing with inconsistencies; evolving system requirements; requirements prioritization; and the quality of specifications with respect to naturalness and compactness. We argue that these problems need to be addressed in a principled, formal way, and that default reasoning provides adequate mechanisms to deal with them.