One of the most difficult phases of software development is the definition of functional requirements -- generating a clear, concise statement of the system’s task and the constraints under which it must operate. This paper describes current research at GTE Laboratories aimed at developing a methodology and tool for expressing the functional requirements of general real-time systems. The requirements methodology is based on the so-called “constructive” specification technique. It provides facilities for describing an abstract machine that captures the behavior of the real-time system as a classic finite-state machine. The finite-state machine model is general enough to describe a broad range of systems, and is well founded both in theory and in practice. In addition, the methodology has special support for the specification of large real-time systems: large systems can be decomposed into more manageable sections called “features,” which can be developed in isolation and merged by a compiler. The research described in this paper is aimed at understanding the nature of real-time functional requirements, and providing tools to aid the requirements writer.