在计算机科学和软件工程领域,形式化方法是基于数学的特种技术,适合于软件和硬件系统的描述、开发和验证。将形式化方法用于软件和硬件设计,是期望能够像其它工程学科一样,使用适当的数学分析以提高设计的可靠性和鲁棒性。这种方法特别在数学、计算机科学、人工智能等领域得到广泛运用。它能精确地揭示各种逻辑规律,制定相应的逻辑规则,使各种理论体系更加严密。同时也能正确地训练思维、提高思维的抽象能力。发展过程软件形式化方法最早可追溯到20世纪50年代后期对于程序设计语言编译技术的研究,即J.Backus提出BNF描述Algol60语言的语法,出现了各 种语法分析程序自动生成器以及语法制导的编译方法,使得编译系统的开发从“手工艺制作方式”发展成具有牢固理论基础的系统方法。形式化方法的研究高潮始于 20世纪60年代后期,针对当时所谓“软件危机”,人们提出种种解决方法,归纳起来有两类:一是采用工程方法来组织、管理软件的开发过程;二是深入探讨程 序和程序开发过程的规律,建立严密的理论,以其用来指导软件开发实践。
形式化方法的优点:
1、能够简洁准确地描述物理现象,对象或动作的结果,因此是理想的建模工具。
2、可以在不同的软件工程活动期间平滑的过渡。
3、提供了高层确认的手段。可以使用数学方法证明,设计符合规格说明,程序代码正确地实现了设计结果。
形式化方法的准则:
1、应当选择合适的表示方法。
2、应当形式化,但不能过分的形式化。
3、应当估算成本。
4、应该有形式化方法顾问随时提供咨询。
5、不应该放弃传统的开发方法。
6、应该建立详尽的文档。
7、不应该放弃质量标准。
8、不应该盲目以来形式化方法。
9、应该测试、测试再测试。\n10、应该重用。