In a real-time system, the computer periodically gets information from the environment through sensors, updates its internal system states based on the inputs and the current internal states, and generates control commands to change the environment through actuators. A hard real-time system must make correct responses to environmental changes within specified time intervals, or deadlines. Hard deadlines are deadlines that a hard real-time system must meet or a catastrophe may result. In some hard real-time systems, such as those that control nuclear power plants and missiles, all deadlines are hard. <p> A major problem with hard real-time systems is how to be assured that the systems really work. At the University of Oregon, work is being done on theorems that will provide this guarantee for a uniprocessor system. The work involves combining the use of graphical design languages and deadline-scheduling algorithms. Doing so lets developers combine dataflow and control-flow into one diagram, which easily reveals the whole picture of the hard real-time application. This is much more difficult to grasp when viewing the dataflow and control-flow diagrams separately. </p> <p>In this article we describe the application of a graphical design diagram that combines control-flow and dataflow descriptions of a hard real-time application to capture requirements in a form that can be analyzed for schedulability. The design is transformed into a set of precedence-constrained periodic tasks, which are then scheduled onto a single processor in a way that meets all deadlines. To determine if a task can be scheduled, our approach provides two optimal scheduling algorithms, one preemptive and one nonpreemptive. Although there has been much work on graphical design languages and deadline-scheduling algorithms, little has been done to combine the two. </p> <p>We present optimal algorithms for our scheduling problem, although we do not know optimal methods for decomposing a design into a task set, which includes deriving optimal task-release times and deadlines, imposing extra precedence constraints to keep data consistency when preemption is allowed, eliminating redundant computations, and so forth. In general, developing a hard real-time application with deterministic behavior is a very complex engineering process. We believe that for any such attempts to be practical, heuristic methods and rules of thumb must be employed.</p>