为什么没人使用形式化方法?
Why Don't People Use Formal Methods?
我在 Software Engineering Stack Exchange 上看到关于形式化方法推广障碍的讨论,发现多数回答过于简化。形式化方法并非只适用于医疗或航空等高保障软件,普通软件同样需要。文章梳理了形式化规范与验证的历史,区分了代码验证与设计验证,并探讨了如何编写正确的规范。验证代码正确性只是第一步,真正的挑战在于如何将人类需求转化为数学表达。尽管存在验证成本高、规范难定义等问题,但形式化方法在防止系统崩溃和安全漏洞方面价值巨大。
验证代码正确性并不能验证代码本身是否满足用户需求。