软件形式化方法(Formal Method)
在软件开发中一直都受到多方面的争议。持肯定态度的拥护者认为形式化方法会引起软件开发的革命,另一些持否定态度者则怀疑甚至反对将数学引入软件开发过程中。
形式化开发方法的一些争议或缺陷主要体现在:
(1) 形式化方法中所包含的数学理论,限制了大多数程序设计人员的学习和使用;
(2) 认为采用形式化方法会延误项目开发周期、增加开发费用;
(3) 许多流行的形式化方法对于较小规模的项目是有效的,但却很难应用于一些大型系统;
(4) 形式化方法不能确保开发出完全正确的软件;
(5) 缺乏对软件生命周期内各个阶段提供全面支持的形式化方法;
等。
从广义上讲,形式化方法是借助数学的方法来解决软件工程领域的问题,主要包括建立精确的数学模型以及对模型的分析活动。狭义的讲,形式化方法是运用形式化语言,进行形式化的规格描述、模型推理和验证的方法。就形式化建模而言,形式化表示必须包含一组定义其语法语义的形式化规则。这些规则可用于分析给定的表达式是否符合语法规定,或证明该表达式具有某种性质。