<p><b>Abstract</b>—This paper examines and proposes an approach to writing software specifications, based on research in systems theory, cognitive psychology, and human-machine interaction. The goal is to provide specifications that support human problem solving and the tasks that humans must perform in software development and evolution. A type of specification, called <it>intent specifications</it>, is constructed upon this underlying foundation.</p>