What are Formal Methods?
Formal methods are techniques used to model complex systems as mathematical entities. By building a mathematically rigorous model of a complex system, designers can not only verify the system’s properties in a more thorough fashion (than they could via empirical testing) but also use mathematical proof as a complement to system testing so as to ensure correct behavior.
Formal methods adopt a three-step approach to modeling and evaluating systems. During formal specification, an engineer or designer rigorously defines a system using a modeling language—typically by using a formal, mathematical syntax and semantics that eliminate imprecision and ambiguity. This is similar to writing down system specifications, though not in plain English. From there, based on the specification, the engineers develop a set of theorems about the behavior of a system. These theorems are verified through mathematical proofs—to ensure that the system behavior is logically consistent and is, indeed, the desirable one. As this allows designers and engineers to discover flaws in usability even before the design gets implemented into code, it prevents costly errors from emerging in the later stages of development. Finally, once the model is specified and verified, implementation can begin via converting the specification into code.
Formal methods have many advantages: they help disambiguate system specifications and articulate implicit assumptions. They also expose flaws in system requirements, and their rigor enables a better understanding of the problem. Because they use a formal language, many colleagues can verify the specifications independently—thereby solving errors early on in the development process. However, formal methods cannot fully replace standard quality assurance methods. This is why they are just a complementary technique in system design.
Literature on Formal Methods
Here’s the entire UX literature on Formal Methods by the Interaction Design Foundation, collated in one place:
Learn more about Formal Methods
Take a deep dive into Formal Methods with our course Formal Design Methods: Formalism and Design .
You've just fixed a usability problem and are about to release the updated app or website... but have you really got it right this time? Is there an unusual use case you haven't thought of? Can you ever be sure? Thankfully, applying formal methods to your design can help you.
Formal methods are usually employed in mathematical and scientific fields, as the preferred way of presenting information. Many mathematical and scientific theories we know today are in fact written in a formal manner. The scientific theory of gravity, for instance, is presented with all variables, parameters, and factors clearly named and defined, and all assumptions explicitly stated. The power of formalism is that it allows a concept, theory, or model to be completely and clearly defined, so anyone who reads it can easily spot any gaps in logic or exceptions to the rule.
When applied to design, formal methods allow designers to flesh out the entire product (e.g., all the states of an app) explicitly and completely. This allows designers to spot potential flaws in the design (e.g., incomplete user flows, links, or buttons that are not defined in the design, etc.) in less time.
In this course, you will learn how various forms of formal notation and methods can help you catch potentially disastrous problems early in a design process. Formal design methods will also give you confidence that the delivered systems are both what you intended and as free from major usability flaws as possible. You will also learn how to use formal methods to increase the probability that the developers will deliver precisely the design you intended.