Computer software is playing an increasingly important role in safety-critical embedded computer systems, where incorrect operation of the software could lead to loss of life, substantial material or environmental damage, or large monetary losses. Such diverse technologies as avionics, automobile drive trains, power plants, and medical equipment are relying more and more on the computer to control system parameters. Although software is a powerful and flexible tool for industry, these very advantages have contributed to a corresponding increase in system complexity. Traditional approaches to system development have not successfully handled the problems of increased system complexity. The fatal accidents caused by software in the Therac-25 radiation therapy machine, as well as other incidents, have brought public attention to these problems. Ironically, it is becoming clear that the powerful control logic that software can bring to a system can also impair the ability of the systems analyst to study and understand, and hence safely control, the system’s behavior. sion avoidance System II). Furthermore, using a formal requirements specification language, for example, RSML, enables several types of automated or semi automated analysis techniques that can be used to detect and eliminate potential safety problems from the specification. In this tutorial, we will discuss techniques for automatically detecting incomplete, inconsistent, and nondeterministic requirements, show how fault tree analysis can be used in the RSML framework, and demonstrate how a new analysis technique called deviation analysis can be used to evaluate the effects on the system if the inputs to the system deviates from expected value.