Due to the rapid increase in computer-related technologies, industry is continuing to put higher demands on software-controlled systems. These demands are sometimes placing software in total or partial control over critical system functions such as shutting down nuclear reactors, navigating planes, determining radiation dosages, and identifying military targets. Unfortunately, certain faults in such a system can result in catastrophic consequences such as death, environmental harm, or equipment damage. In order to help insure that safety-critical software systems do not cause accidents, researchers are concentrating on techniques for improving various life-cycle phases. This paper identifies strategies for conducting preliminary software hazard analysis, which includes software hazard identification, documentation, and review. The goal for such strategies is to improve a system's overall safety by increasing the hazard list's completeness, correctness, and preciseness. Along with presenting these strategies, this paper introduces a framework for applying them to safetycritical software development. This paper is part of a joint ongoing research effort by academia and industry to form a methodology for developing safetycritical software systems. Before explaining the framework and its related strategies, this paper discusses relevant background issues that relate to safety.