在计算机科学和软件工程领域,形式化方法是基于数学的特种技术,适合于软件和硬件系统的描述、开发和验证。将形式化方法用于软件和硬件设计,是期望能够像其它工程学科一样,使用适当的数学分析以提高设计的可靠性和鲁棒性。但是,由于采用形式化方法的成本高意味着它们通常只用于开发注重安全性的高度整合的系统。
形式化方法包括形式化描述和基于形式化描述的形式化验证两部分内容。形式化描述就是用形式化语言进行描绘,建立软件需求和特性,即解决软件“做什么”的问题。形式化验证指的是验证已有的程序是否满足形式化描述的定义。形式化描述主要可以分为两类,一类是通过建立计算模型来描述系统的行为特性,另一类则通过定义系统必须满足的一些属性来描述系统。形式化描述又称之为形式化规约,相对于自然语言描述,形式化描述是精确的、可验证的,避免了模糊性与二义性,消除需求中相互矛盾的地方,避免需求定义人员和开发人员对需求的理解偏差。