The seventies witnessed the structured programming revolution. After much debate, software engineers became convinced that better programs result from following certain precepts in program design. However, a period of continuous change led to a situation where views on the best methods of software development frequently mutated. Nonetheless, formal methods have provided a unifying philosophy and central foundation upon which these methodologies have been built. Those who understand this underlying philosophy can more easily adopt different programming techniques. This report provides the needed understanding of formal methods to guide a software manager in evaluating claims related to new methodologies. It also provides an overview for the software engineer and a guide to the literature.