基本信息:形式化方法英文的名稱是formal methods。
在邏輯科學中是指分析、研究思維形式結構的方法。它把各種具有不同內容的思維形式(主要是命題和推理)加以比較,找出其中各個部分相互聯結的方式,如命題中包含概念彼此間的聯結,推理中則是各個命題之間的聯結,抽取出它們共同的形式結構;再引入表達形式結構的符號語言,用符號與符號之間的聯繫表達命題或推理的形式結構。
形式化方法在古代就運用了,而在現代邏輯中又有了進一步的發展和完善。這種方法特別在數學、計算機科學、人工智能等領域得到廣泛運用。它能精確地揭示各種邏輯規律,制定相應的邏輯規則,使各種理論體系更加嚴密。同時也能正確地訓練思維、提高思維的抽像能力。
發展過程:軟件形式化方法最早可追溯到20世紀50年代後期對於程序設計語言編譯技術的研究,即J.Backus提出BNF描述Algol60語言的語法,出現了各種語法分析程序自動生成器以及語法制導的編譯方法,使得編譯系統的開發從「手工藝製作方式」發展成具有牢固理論基礎的系統方法。形式化方法的研究高潮始於
20世紀60年代後期,針對當時所謂「軟件危機」,人們提出種種解決方法,歸納起來有兩類:一是採用工程方法來組織、管理軟件的開發過程;二是深入探討程
序和程序開發過程的規律,建立嚴密的理論,以其用來指導軟件開發實踐。
研究內容:形式化方法的一個重要研究內容是形式規約(Formal
Specification,也稱形式規範或形式化描述),它是對程序「做什麼」(what to
do)的數學描述,是用具有精確語義的形式語言書寫的程序功能描述,它是設計和編製程序的出發點,也是驗證程序是否正確的依據。對形式規約通常要討論其一
致性(自身無矛盾)和完備性(是否完全、無遺漏地刻畫所要描述的對象)等性質。形式規約的方法主要可分為兩類:一類是面向模型的方法也稱為系統建模,該方法通過構造系統的計算模型來刻畫系統的不同行為特徵;另一類是面向性質的方法也稱為性質描述,該方法通過定義系統必須滿足的一些性質來描述一個系統。
分類:根據說明目標軟件系統的方式,形式化方法可以分為兩類:
(1)面向模型的形式化方法。通過構造一個數學模型來說明系統的行為。
(2)面向屬性的形式化方法。通過描述目標軟件系統的各種屬性來間接定義系統行為。
根據表達能力,形式化方法可以分為五類:
(1)基於模型的方法:通過明確定義狀態和操作來建立一個系統模型(使系統從一個狀態轉換到另一個狀態)。
(2)基於邏輯的方法:用邏輯描述系統預期的性能,包括底層規約、時序和可能性行為。
(3)代數方法:通過將未定義狀態下不同的操作行為相聯繫,給出操作的顯式定義。
(4)過程代數方法:通過限制所有容許的可觀察的過程間通信來表示系統行為。
(5)基於網絡的方法:由於圖形化表示法易於理解,而且非專業人員能夠使用,因此是一種通用的系統確定表示法。