-
程序設計方法學
(學科)
鎖定
- 中文名
- 程序設計方法學
- 外文名
- programming methodology
- 討 論
- 程序的性質
- 研 究
- 環境的模擬
- 產生背景
- 1950年代—1960年代初
- 研究的內容
- 結構化程序設計
程序設計方法學介紹
用以指導程序設計各階段工作的原理和原則,以及依此提出的設計技術。有時也指研究這些原理、原則和技術的學科。程序設計方法學的目標是能設計出可靠、易讀而且代價合理的程序。程序設計方法學包括程序理論、研製技術、支援環境、工程規範和自動程序設計等課題,使程序設計更加科學化和工程化。其基本內容是:結構程序設計;程序理論在程序設計技術中的應用,以及規格説明和變換技術。程序理論與程序設計方法學的發展密切相關,它豐富了程序人員的思維方法,促進了程序設計技術的發展。
[1]
程序設計方法學發展歷史
程序設計方法學產生背景
1960年代末—1970年代初,出現軟件危機:一方面需要大量的軟件系統,如操作系統、數據庫管理系統; 另一方面,軟件研製週期長,可靠性差,維護困難。編程的重點:希望編寫出的程序結構清晰、易閲讀、易修改、易驗證,即得到好結構的程序。
[1]
1968年,北大西洋公約組織(NATO)在西德召開了第一次軟件工程會議,分析了危機的局面,研究了問題的根源,第一次提出了用工程學的辦法解決軟件研製和生產的問題,本次會議可以算做是軟件發展史上的一個重要的里程碑。
[1]
程序設計方法學結構化研究
1969 年,Wirth 提出採用“ 自頂向下逐步求精、分而治之” 的原則進行大型程序的設計。其基本思想是:從欲求解的原問題出發,運用科學抽象的方法,把它分解成若干相對獨立的小問題,依次細化,直至各個小問題獲得解決為止。
[1]
程序設計方法學“ 程序正確性證明”
1967年,Floyd 提出用“ 斷言法” 證明框圖程序的正確性。
1969年,Hoare 在Floyd 的基礎上,定義了一個小語言和一個邏輯系統。此邏輯系統含有程序公理和推導規則,目的在於證明程序的部分正確性,這就是著名的Hoare邏輯。他的工作為公理學語義的研究奠定了基礎。
1973年,Hoare和Wirth把PASCAL語言的大部分公理化。
1975年,一個基於公理和推導規則的自動驗證系統首次出現。
1979年,出現了用公理化思想定義的程序設計語言Euclid。
1976年,Dijkstra提出了最弱前置謂詞和謂詞轉換器的概念,用於進行程序的正確性證明和程序的形式化推導。
1980年,D.Gries綜合了以謂詞演算為基礎的證明系統,稱之為“程序設計科學”。首次把程序設計從經驗、技術昇華為科學。
1974年,人們利用模態邏輯驗證並行程序的正確性。
關於程序正確性證明的爭論:
懷疑和反對派,理由:首先,形式證明太複雜,誰能夠保證證明本身沒有錯誤呢!其次,程序寫好後再證明其正確性,相當於“ 馬後炮” ,即錯誤已經鑄成,證明何能補救?
折中的方案:編寫程序,邊考慮證明。即程序設計與正確性證明同時並行考慮。
程序設計方法學構造正確的程序
利用程序變化構造正確的程序。它對程序應用一連串的保護正確性的變換規則,最終得到可執行的程序。程序變換是1970年代以來,“程序設計方法學” 研究的重要方面,是程序設計自動化很有希望的途徑之一。遞歸程序變換是這一時期的最有意義的成果。 如Burstall 和Darlington 的遞歸程序變換系統等。
程序設計方法學抽象數據類型的研究
抽象數據類型是程序設計方法學中一種極為重要的方法。人們把它譽為程序設計方法學發展史上的一個重要的里程碑。
程序設計方法學研究的內容
結構化程序設計
數據抽象與模塊化程序設計
程序正確性證明
程序變換
程序的形式説明與推導
程序綜合與分析技術
面向對象的程序設計方法
大型程序的開發
程序設計方法學與軟件工程的關係
程序設計方法學也與軟件工程關係密切。方法學對軟件的研製和維護起指導作用。軟件工程要求程序設計規範化,建立新的原則和技術。而一種新的方法的出現,又要求制訂出相應的規範。方法和工具是同一問題的兩個側面。工具的研究以方法學為基礎,而工具的研製成功又會影響程序設計。程序設計方法學還涉及程序推導、程序綜合、程序設計自動化研究、併發程序設計、分佈式程序設計、函數式程序設計、語義學、程序邏輯、形式化規格説明和公理化系統等課題。
[1]