The development of software for use in high-consequence systems mandates rigorous (formal) processes, methods, and techniques to improve the safety characteristics of those systems. This paper provides a brief overview of current research and practices in highconsequence software, including applied design methods. Some of the practices that are discussed include: fault tree analysis, failure mode effects analysis, petri nets, both hardware and software interlocks, n-version programming, Independent Vulnerability Analyses, and watchdogs. Techniques that offer improvement in the dependability of software in high-consequence systems applications are identified and discussed. Limitations of these techniques are also explored. Research in formal methods, the cleanroom process, and reliability models are reviewed. In addition, current work by several leading researchers as well as approaches being used by leading practitioners are examined.