In a broad sense, formal methods (formal method) are used to solve the problems in the field of software engineering, including the establishment of accurate mathematical models and the analysis activities of models. In the narrow sense, the formal method is to use formal language, formal specification description, model inference and verification method. The main purpose of applying formal method in software engineering practice is to ensure the correctness of software.
Software development is actually the mapping of real-world needs into software modeling processes. There are three system models involved in the modeling process: The real world, the model representation and the computer system. The process of software formalization is described and transformed even among the three types of systems. The tasks in the development process include: Model acquisition, model validation, model transformation.
Software specifications are descriptions of software system objects, how objects are manipulated, and the behavior of objects. Non-formalized specifications can be described in natural languages, graphs, tables, and other forms. Formal proof and verification techniques mainly include model detection and theorem proving. The program refinement is the combination of automatic inference and formal method, and the whole process of the concrete computer-oriented program code is pushed from the abstract formal specification.
Modal (Modal) logic is an extended form of classical propositional logic and first order predicate logic. First order linear temporal logic (FOLTL) is an extension of the first order predicate logic. Similar to PLTL,FOLTL is the addition of modal words to the first-order predicate logic: Inevitable, probable, next-time, until.
Computer logic (CTL) is a discrete, branch time, propositional temporal logic. In the CTL, in addition to having the temporal operator, it is possible that the next moment, until outside, also adds a path quantifier: all future paths (a), at least one path (E). The Computer tree logic specification of the software can be verified by model verification. The model test is to verify the correctness of the software properties given by the ctl* formula under the Kripke structure model of the software system.
Formal methods in software engineering