Formal methods are crucial in good software engineering practice, especially for large-scale, distributed, or critical systems, contrary to common belief. While formal methods may seem costly and challenging, they actually save time and money by reducing rework and minimizing the cost of change. Different software types require different engineering approaches, with formal design being more valuable for systems with well-understood, static requirements. Tools like TLA+, P, and deterministic simulation tools are beneficial for faster system development and optimization. Ultimately, using formal methods in the design stage can enhance software development speed, lower risk, and lead to more optimal systems from the start.
https://brooker.co.za/blog/2024/04/17/formal.html