Formal methods are used in computer science mainly for improving the quality of software or hardware or for improving confidence in the correctness of critical information systems.
By contrast with other engineering disciplines in which mathematical models are used to evaluate a proposed design (by simulation or otherwise), formal methods for information systems development usually advocate the preparation of formal specification of a system prior to the design of the system. The design and implementation are then regarded as responding to the requirements as enunciated in the formal specification and their conformance may be demonstrated by formal or informal proof.
Because of the emphasis on formal specification formal methods are closely associated with the varieties of specification language.