程序設(shè)計(jì)方法學(xué)
程序設(shè)計(jì)方法學(xué)發(fā)展歷史
產(chǎn)生背景
1950年代—1960年代初,手工藝式的程序設(shè)計(jì)方法,高德納把程序稱為藝術(shù)品。
1960年代末—1970年代初,出現(xiàn)軟件危機(jī):一方面需要大量的軟件系統(tǒng),如操作系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng);另一方面,軟件研制周期長(zhǎng),可靠性差,維護(hù)困難。編程的重點(diǎn):希望編寫出的程序結(jié)構(gòu)清晰、易閱讀、易修改、易驗(yàn)證,即得到好結(jié)構(gòu)的程序。
1968年,北大西洋公約組織(NATO)在西德召開(kāi)了第一次軟件工程會(huì)議,分析了危機(jī)的局面,研究了問(wèn)題的根源,第一次提出了用工程學(xué)的辦法解決軟件研制和生產(chǎn)的問(wèn)題,本次會(huì)議可以算做是軟件發(fā)展史上的一個(gè)重要的里程碑。
1969年,國(guó)際信息處理協(xié)會(huì)(IFIP)成立了“程序設(shè)計(jì)方法學(xué)工作組”,專門研究程序設(shè)計(jì)方法學(xué),程序設(shè)計(jì)從手工藝式向工程化的方法邁進(jìn)。
結(jié)構(gòu)化程序設(shè)計(jì)的研究
1968年,結(jié)構(gòu)化程序設(shè)計(jì)方法的研究。Dijkstra提出了“GOTO是有害的”,希望通過(guò)程序的靜態(tài)結(jié)構(gòu)的良好性保證程序的動(dòng)態(tài)運(yùn)行的正確性。
1969年,Wirth提出采用“自頂向下逐步求精、分而治之”的原則進(jìn)行大型程序的設(shè)計(jì)。其基本思想是:從欲求解的原問(wèn)題出發(fā),運(yùn)用科學(xué)抽象的方法,把它分解成若干相對(duì)獨(dú)立的小問(wèn)題,依次細(xì)化,直至各個(gè)小問(wèn)題獲得解決為止。
“程序正確性證明”的研究
1967年,F(xiàn)loyd提出用“ 斷言法”證明框圖程序的正確性。
1969年,Hoare在Floyd的基礎(chǔ)上,定義了一個(gè)小語(yǔ)言和一個(gè)邏輯系統(tǒng)。此邏輯系統(tǒng)含有程序公理和推導(dǎo)規(guī)則,目的在于證明程序的部分正確性,這就是著名的Hoare邏輯。他的工作為公理學(xué)語(yǔ)義的研究奠定了基礎(chǔ)。
1973年,Hoare和Wirth把PASCAL語(yǔ)言的大部分公理化。
1975年,一個(gè)基于公理和推導(dǎo)規(guī)則的自動(dòng)驗(yàn)證系統(tǒng)首次出現(xiàn)。
1979年,出現(xiàn)了用公理化思想定義的程序設(shè)計(jì)語(yǔ)言Euclid。
1976年,Dijkstra提出了最弱前置謂詞和謂詞轉(zhuǎn)換器的概念,用于進(jìn)行程序的正確性證明和程序的形式化推導(dǎo)。
1980年,D.Gries綜合了以謂詞演算為基礎(chǔ)的證明系統(tǒng),稱之為“程序設(shè)計(jì)科學(xué)”。首次把程序設(shè)計(jì)從經(jīng)驗(yàn)、技術(shù)升華為科學(xué)。
1974年,人們利用模態(tài)邏輯驗(yàn)證并行程序的正確性。
關(guān)于程序正確性證明的爭(zhēng)論:
構(gòu)造正確的程序
利用Dijkstra的謂詞轉(zhuǎn)換器及其演算規(guī)則集合,可以推導(dǎo)出正確的程序。
利用程序變化構(gòu)造正確的程序。它對(duì)程序應(yīng)用一連串的保護(hù)正確性的變換規(guī)則,最終得到可執(zhí)行的程序。程序變換是1970年代以來(lái),“程序設(shè)計(jì)方法學(xué)”研究的重要方面,是程序設(shè)計(jì)自動(dòng)化很有希望的途徑之一。遞歸程序變換是這一時(shí)期的最有意義的成果。如Burstall和Darlington的遞歸程序變換系統(tǒng)等。
邏輯程序設(shè)計(jì)和函數(shù)程序設(shè)計(jì)代表一種新的研究方向。Prolog是以謂詞邏輯的子集(Hoare子句)為基礎(chǔ)的一種形式系統(tǒng)。Prolog的執(zhí)行過(guò)程就是執(zhí)行邏輯上消解算法的過(guò)程。
抽象數(shù)據(jù)類型的研究
抽象數(shù)據(jù)類型是程序設(shè)計(jì)方法學(xué)中一種極為重要的方法。人們把它譽(yù)為程序設(shè)計(jì)方法學(xué)發(fā)展史上的一個(gè)重要的里程碑。
研究的內(nèi)容
結(jié)構(gòu)化程序設(shè)計(jì)
數(shù)據(jù)抽象與模塊化程序設(shè)計(jì)
程序正確性證明
程序變換
程序的形式說(shuō)明與推導(dǎo)
程序綜合與分析技術(shù)
面向?qū)ο蟮某绦蛟O(shè)計(jì)方法
大型程序的開(kāi)發(fā)
與軟件工程的關(guān)系
研究方法的不同
軟件工程主要應(yīng)用工程的方法和技術(shù)研究軟件開(kāi)發(fā)與維護(hù)的方法、工具和管理的一門計(jì)算機(jī)科學(xué)與工程學(xué)交叉的學(xué)科 程序設(shè)計(jì)方法學(xué)主要運(yùn)用數(shù)學(xué)方法研究程序的性質(zhì)以及程序設(shè)計(jì)的理論和方法的學(xué)科;
研究的對(duì)象不同
軟件工程的研究對(duì)象是軟件系統(tǒng)。目標(biāo)是降低軟件的開(kāi)發(fā)成本,提高軟件的質(zhì)量,提高軟件的可維護(hù)性,提高軟件開(kāi)發(fā)的效率。著重于軟件的宏觀可用性。程序設(shè)計(jì)方法學(xué)研究對(duì)象是程序。目標(biāo)是保證程序的正確性。著重于程序的微觀正確性。軟件工程與程序設(shè)計(jì)方法學(xué)的界限變得越來(lái)越模糊 程序設(shè)計(jì)方法學(xué)是軟件工程的基礎(chǔ)。
免責(zé)聲明:以上內(nèi)容版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請(qǐng)告知,我們將盡快刪除相關(guān)內(nèi)容。感謝每一位辛勤著寫的作者,感謝每一位的分享。
相關(guān)資料
- 有價(jià)值
- 一般般
- 沒(méi)價(jià)值
{{item.userName}} 舉報(bào)
{{item.time}} {{item.replyListShow ? '收起' : '展開(kāi)'}}評(píng)論 {{curReplyId == item.id ? '取消回復(fù)' : '回復(fù)'}}
{{_reply.userName}} 舉報(bào)
{{_reply.time}}