The objective of this research is to develop an integrated set of techniques to enhance software safety in process control systems. Examples of relevant types of software include that which monitors and controls aircraft and other means of transportation, nuclear power plants, medical devices, manufacturing processes, and aerospace and defense systems. Although system-safety engineers have developed procedures to deal with hazards in physical systems, the introduction of computer control has created new and unsolved problems both for system engineers and software engineers. The basic approach in this research involves applying software hazard analysis and hazard control techniques throughout software development, linking them to the system hazard analysis and control procedures that are being performed in parallel by the system engineers at the system level. Confidence is achieved through the use of layers of protection: The software safety verification and analysis is backed up by using software safety design procedures that protect against hazardous states resulting from undetected software faults, including flaws in the software requirements specification. Both of these are backed up by external hardware protection.