A formal method is a mathematically-based technique used to describe properties of hardware and software systems. It provides a framework within which large, complex systems may be specified, designed, analyzed, and verified in a systematic rather than ad hoc manner. A method is formal if it has a sound mathematical basis, typically given by a formal specification language
In my talk I will review the seeds and early development of formal methods. Citing notable case studies, I will survey the state of the art in the areas in which researchers and engineers most recently have made the greatest strides: software specification, model checking, and theorem proving. To close, I will suggest future research directions that should result in the most promising payoffs for practitioners