Formal methods find increasing usage for system and software specifications . In this paper, we discuss some benefits resulting from the use of such methods, together with some properties shared by most of them. Some possible criteria for classification are also presented, and a tabular overview is given of some of the most well-known methods. A number of known formal methods are reviewed, and their similarities and differences discussed.