This book is about how to write two kinds of documents needed in the early stages of many software development projects: a requirements document, which describes desired effects to be produced by the software, and a program specification, or interface design, which describes the outward behavior of the computer that produces those effects--the behavior of input/output devices.