Formal methods are tools in the same category as the structured and object-oriented methods of software engineering. They use a formally defined language of specification to define the properties of the system that solves a given engineering problem. The languages chosen are designed around the rules of discrete mathematics and formal logic to enable mathematical proofs of correctness to be applied to the proposed solution.
Formal methods generally cost more in man-hours in the early stages of development due to the depth to which a system has to be defined but that cost can be saved in testing later in the development lifecycle as less debugging is generally required.
Formal Specification Languages
- (add more)