- 相關推薦
一種系列化語言族及其軟件工程環境
一、歷史背景
多年來一直困擾程序技術研究領域的一個根本問題是計算機程序難寫、難讀、易錯、難以維護,致使軟件生產率很低。對比之下,計算機應用的發展及硬件生產率的提高卻非常快,很不匹配,針對這個問題,30多年來,程序技術的研究可分為三個階段 。
1. 高級語言時期。從60年代初起,人們認識到, 為了解決程序難寫、難讀、易錯,難以維護的困難,應將書寫程序所用的程序語言與在計算機上執行的機器語言區分開來。后者主要表示程序如何執行,即“怎么做”(how),而前者主要表示程序的涵義或功能,也就是“做什么”(what)。提高程序設計效率的途徑應該是:一方面設計更直接表示程序涵義且使用更方便的程序語言,另一方面找出有效方法能實現由這種程序語言書寫的程序到可高教執行的機器語言程序的自動轉換。60年代的巨大成就,即在于設計出了各種具有高級控制結構及數據結構能表示算法的程序語言,同時,又創造了由程序語言到機器語言的自動轉換技術,即編譯技術。然而,隨著軟件應用的飛速發展,軟件規模及其復雜度的不斷增大,高級程序語言顯得仍不夠理想, 用這類語言書寫的程序中仍包含了太多的執行細節,從而仍使用戶感到難寫、難讀、易錯與難以維護,也就是說,程序可靠性仍然是一個困難問題.因此,到了70年代,程序技術研究進入集中對程序可靠性進行討論的時期。
2.結構程序設計時期。主要進行三方面工作,(i)程序語言研究,可分二類:(a)結構他高級語言,即重新評議常見高級語言中的控制結構及數據結構,其最后結果即Ada。到此,高級語言的研究走到了極限。的確進步很大,但所希望達到的目標并未達到,Ada程序仍然有難寫、難讀、易錯等方面的問題。只得另求出路,研制另一種語言。(b)抽象描述語言(印q觸 m缸n )。這是比高級算法語言更能直接表示“做什么 的涵義,且更抽象更少表示“怎么做 細節的程序語言。它們多從某種形式語義理論轉化而來.如數理邏輯、抽象代數、形式文法或可計算理論等。它們與高級算法語言有本質的不同。對于它們,事實上不存在將其描述自動轉換成可有效執行的機器語言程序的編譯方法。(ii)程序設計方法論的研究。即找出如何設計-t確程序的好方法。這方面的探索雖然很多,最為人們接受的一種則是逐步求精方法,即先從表示程序涵義的抽象描述出發,逐步精化,晟后得到一可有救執行的正確程亭。
與程序設計方法及語言的臺理結構相對應,還有另一影響大型軟件可靠性的因素,即(iii)大型軟件開發計劃的組織與管理,包括各個環節的文檔資料等。以上三方面的的探索,構成了70年代結構程序設計研究的主要內容。到70年代末,微機終端出現,使計算機本身有可能成為支撐上述三方面工作的輔助手段。從而使程序技術研究進入一新的時期。
3.自動程序設計時期。這方面的工作是從實現程序設計的各環節中某些自動化軟件工具開始的,逐步發展到覆蓋整個軟件生命周期各部分,以一致的方法為依據,將各部分工具集成為統一的環境,以支撐軟件開發的全過程。這就是所謂計算機輔助軟件工程環境(即CASE環境)。近年來,一方面由于影響軟件生產率很大的程序可重用性研究要求程序應有精確的形式語義界面,另一方面由于CASE環境規模及復雜度大到一定程度后,如其中各種工具沒有統一的形式語義界面則既難引用亦難由不同工具組成功能更強的工具,故基于形式語義的CASE環境日益成為人們注意的新方向。
XYZ系統就是在這樣的條件下提出的。它是最先提出并是唯一完成了的基于時序邏輯的CASE環境。它由二個方面構成,一方面是作為核心的時序邏輯語言xvz/E}另一方面是由依據多種方法及軟件工具組成的CASE環境。它的另一特色是能適應多種程序設計方式
二、時序邏輯語言xvz/EXYZ/E
既是[ylaflna—Pnueli意義下的線性時間時序邏輯系統又是一程序語言。事實上,它是一系列化語言族(XiliehuaYuyanZu) 它以統一的程序框架表示串型或并發的過程性算法、抽象描述及產生式規則,還可以表示常見高級語言及多種圖形語言(如數據流圖,PAD圖,Petri網等)的操作語義。其基本結構稱為單元,具有如下的形式下面討論幾個問題(1)形式語義方法很多,為什么XYZ系統獨選時序邏輯?關于時序邏輯的優點,L.Laml~t在1983年FFLP巴黎大會上已談了很多,此處不擬一一重復.我只想指出如下的事實:不但一般程序工作者對一階邏輯都比較熟習,而且,事實上時序邏輯中新增加的算子,都與常見高級語言中某些結構有直接的對應,比如下一時刻算子。$O”對應著狀態轉換的一步,二目算子。$u”與。$W”事實上直接與循環結構相對應,而終于算子“()”則對應著過程。所以,與其它形式化理論相比,時序邏輯這一形式化理論對一般程序工作者說接受起來較為自然。(2)在時序邏輯系統中·xY'Z/E有何優點?人們對時序邏輯的批評往往集中在一點,即認為時序邏輯描述令人難懂、難以驗證 事實上,就單一的時序算子講其涵義是比較易懂的,這里所謂難懂難證,我認為主要是指用多層嵌套的時序算予表示復雜的性質而盲·而XYZ/E中引入的單元中,每一條件元只允許出現一層時序算子.不允許嵌套,故并不存在難懂的問胚 近年來.在國外頗受重視的Chandy—Misra的UNITY中“性質”也是用一層時序算子來表示的 不過.由此又產生另一問題t經過這樣的限制之后,XYZ/E中的單元是否仍能有一般時序邏輯公式同等的表示力?我們已經證明,存在一機械的方法將任給的一時序邏輯公式轉換成等值的XYZ/E中一組單元 因此,XYZ/E中單元具有足夠強的表示力。XYZ/E的另一特色,即用統一的單元框架可以表示出申型的或并發的過程性算法、抽象描述及產生式規則·此外.還可表示出常見高級語言及圖形語言的操作語義。這一功能是一般時序邏輯公式所難以做到的。(3)在前面談到XYZ/E的單元框架可以表示出多種程序結構,這一特色在程序設計方法論方面有什么重要意義?(a)逐步求精方法是一由抽象描述到可有效執行的算法程序的多層轉換過程,因此,在中間各層中必然出現抽象程度逐漸減弱而程序細節逐漸增加的程序 這不同層次的程序如用不同語言來描述,則將遇到一個問題,即如何驗證(甚至說明)其語義一致性?由于這個原因,經過多年研究,專家一致承認,還是用統一的語言表示各層的描述為好。但到現在止.除XYZ/E外,尚未見到另一邏輯語言能做到這一點。故這種表示力正是XYZ/E的長處所在。(b)近數年來,基于知識的程序設計頗受人注意。在這樣的程序中必然需要將表示算法的部分與表示知識的部分滲合運行。顯然. 如果能用統一的語盲及統一的計算模型來表示這兩類程序, 不但會增加程序的可讀性與可理解性,而且也易于討論這種程序的性質。據知,在邏輯語言中能做到這一點的尚屬少見。(c)由于XYZ/E能表示常見高級語盲及圖形語言的操作語義,故可從它們直接自動生成表示其語義的XYZ/E文本。這一特色即使得這三類語言可相互溝通,從其一可得到其它,這一點在軟件工程環境中有重要意義 比如說, 為了討論數據流圖分解前后的語義是否一致,不必從圖形上討論, 只要根據其相應的XYZ/E語義文本來討論即可。這就大大增強了圖形語言的性能。由于XYZ/E具有這種統一性.使不少專家相信,XYZ/E很適于作新型計算機的核心語言t XYZ/E是最先討論這種統一性的語言。近年來. 已有不少人開始注意到這種范型統一性的重要意義。
三、軟件工程環境
XYZ系統以上述時序邏輯語言XYZ/E為基礎,由多種軟件工具與環境組織成一協調的系統.以支撐多種程序設計方法和方式 總的講.其中子系統可分支撐逐步求精方法設計可重用軟件及支撐不同語言問的形式轉換二類逐步求精方法又可分成二種:(I)每一步對原有描述進行組合性(即結構化)分解,其每一步分解并不改變原來的總體結構,只是將其中某些部分予以精化I(Ⅱ】每一步精化都是在上一步的基礎上對解題方法作出新的決定,然后再根據此新的決定由非形式化描述逐漸過渡到形式化描述。因此,每進行這樣的一步, 必須保證由于該步新決定得到的描述與上一步描述的語義一致性。可以說. (Ⅱ)比(I)更為一般一些, (I)是(Ⅱ)的較簡情形。(I)是較常用的方法,但對于某些復雜的問題.(I)的方法難以處理,需要用方法(Ⅱ)。
由于圖形的二維直觀性,近年來圖形程序設計環境在軟件工程領域十分流行 XYZ系統中也提供一圖形環境以支撐(I)所示的逐步求精方法,其核心為下面二類圖形環境連接面成,(a)設計數據流圖的環境XYZ/DFD,(b)設計算法程序的圖形環境XYZ/CFC及XYZ/PAD,后者是前者的結構化形式,其圖形為結構化程序流圖PAD與Petrl阿的結合體。
用戶先通過XYZ/DFD進行數據流圖分析與設計,并可在每一步對圖中表示進程的節點進一步分解成子數據流圖。這環境具有如下特色.第一,其數據流圖中每一節點的輸入輸出端隱含著同步機制。所以,由此作出的數據流圖事實上是通訊進程的圖形 第二,每設計出一個層次的數據流圖后,只要給出進程節點的語義信息(事實上是前置條件與后續條件),系統即可自動生成該圖用XYZ/E表示的操作語義文本(即XYZ/E程序,并由此可進一步自動生成C語言程序)。每次對其中節點進行分解成子數據流圖后,可根據分解前后生成的XYZ/E程序,嚴格地驗證或測試分懈前后語義是否一致。第三,這里所謂驗證,即驗證分解后的描述是否可推出分解前的描述。這種驗證可以手工方式進行也可以在計算機上以交互方式進行。
為了支撐后一種驗證,XYZ系統中實現了一關于時序邏輯公式及XYZ程序的驗證系統XYZ/VERI。因程序驗證是一繁重的工作,并非每一程序都需用這種途徑來評估其正確性。為此,XYZ系統中又提供了另一測驗程序的途徑,其子系統XYZ/PROT事實上是將每一步設計出的抽象描述作為速成原型用PROLOG予以執行的系統。利用此系統執行每一步分解前后的抽象描述,即可測試其語義是否一致。
在程序設計過程中應用XYZ/DFD進行通訊進程分解到一定程序后,卵不必再作此種分解,而轉入XYZ/PAD,用PAD圖進行算法程序設計,這系統提供的圖形工具功能比單純作結構比程序流圖PAD要強一些,它也可以逐步求精將其中算法節點分解成子PAD圖,而且它還可作Petri網以表示具有共享變量的并發進程。與XYZ/DFD一樣,每一步設計出這種PAD圖后,亦可自動生成其XYZ/E程序,并驗證或測試(作速成原型執行)正確性。
與(I)那種按用戶決定逐步求精方法相應.XYZ系統還提供一設計可重用程序的環境XYZ/SPEC 其中,一個工具XYZ/SDL輔助用戶從決定的非形式描述到形式化描述的過渡{另一工具XYZ/REUSE用來存放每一步設計的描述, 以備重用或者檢索過去曾設計過的描述看是否可重用,并紀錄全設計過程的歷史}每一步描述既可作為速成原型執行亦可驗證前后步描述的一致性。由于這種描述中可能包含通訊信息,用PROLOG已不能勝任,為此,XYZ系統中提供另一功能更強的速成原型工具XYZ/RULE,它可執行通訊進程的抽象描述。xvz/SPEC系統不咀可增強程序的可重用性,而且可使抽象描述易寫、易讀、易證。因如一程序的抽象描述用一個式子一次寫出,其中必應表示所有各種決定包含的信息,這樣的描述必然非常復雜,因此寫、讀、證都將很困難 而XYZ/SPEC所依據的方法論是將整個設計過程分懈為一連串逐步求精的步驟’, 每一步只作一個決定,因此,每一步的描述比上一步只增加一個決定的信息。而且各次決定構成的歷史均有案可查,每步的設計意圖清晰, 自然就容易書寫與理解。這是此方法論的優點所在至于不同語言的形式轉換,是由兩個子系統組成的,首先,源語盲的靜態語義分析系統XYZ/GPAE,這是一屬性文法計算系統,不過它可根據-級文法對屬性進行分塊以減少內存開銷·在對源語言進行靜態檢查(如類型一致性、轄域規則等)后,系統將作一些替換以消除源程序中的與上下文相關信息(如嵌套轄域中定義的同名量等)。這部分事實上還包含一語法分析器YAYACC,其用戶界面為YACC,但所處理的文法是LR(1),且極大程度上進行狀態優化及加速。其次,源語言的動態語義轉換系統XYZ/CC~S,用源語言XYZ/ML表示將源語言的操作語義轉換成XYZ/E程序的替換規則,這系統運行的結果即將源程序轉換成XYZ/E程序.而由XYZ/E轉換成任何常見算法語言都非常簡單·這兩部分連接起來即可將一源語言程序以XYZ/E為中介轉換成另一源語言。因此,XYZ系統不但能接受XYZ/E中各子語言及相應的多種圖形語言,而且還能實現其它常見語言的轉換與溝通。
整個XYZ系統通過面向多種對象的模塊管理系統XYZ/OOMM聯系起來.可進行圖式管理與版本控制,并以統一的面向對象的模塊管理作為入12將各部分集成為一整體。
四、應用前景
XYZ系統對程序技術研究30年來所提出的各種主要問題作了一較為全面的回答 當然,這種問題的答案并不唯一,XYZ系統也并非在每一方面都找到了一最優方案。事實上.目前世界上也還沒有系統能做到這一點。但有一點不必諱言.XYZ系統中有許多思想是由這系統最先提出且有不少方面目前仍處于世界領先地位。有的同行認為它。將是一次重大突破的基礎 ,“有使軟件生產率取得重大提高的實際應用前景”。因此,對這系統的最終評價還應該看今后的應用效果 在這方面, 我們已與有關領域的專家合作進行了一些有益的嘗試。
我們認為.XYZ系統的應用應該從二方面人手。一方面將它看成是一工具集,它是UNIX及Xwindow上的一種擴充.用戶可直接從這系統中選取所需的工具予以應用{系統中工具雖已集成為一完整的系統.但均可拆開引用 當然.用戶必須對XYZ系統有了較深的了解,才能靈括運用這些工具。另一方面.為了使這系統在某些重要工業領域能更方便地應用,我們認為應找出最臺適的領域中有代表性的用戶.根據其工作的特點,在XYZ系統的基礎上.建立有針對性的專用環境。其中工具主要由XYZ系統中選取加以組合.也可根據其工作特點稍作修改或補充,集成的專用環境必須十分符合該領域專業人員的工作習慣,使之不經太多訓練即可使用。因此,這樣的專用環境最好與該領域專家合作研制。在過去一年中我們已經初步開展了一些這方面的工作,計劃今后將研制如下幾類專用環境,(1)實時過程控制.(2)通訊協議工程,(3)硬件描述.(4)軟件更新的重新程序設計,(5)實時仿真系統中并發通訊進程程序的自動生成。
中國碩士論文網提供大量免費碩士畢業論文,如有業務需求請咨詢網站客服人員!
【一種系列化語言族及其軟件工程環境】相關文章:
沙陀的族源及其早期歷史11-30
淺談古詩歌語言特點及其語言理解03-21
淺探非語言交際及其與文化的關系03-19
菟絲子及其一種人工偽造品的鑒別02-28
現代雕塑藝術的語言形式及其邊界模糊化10-17
結構主義語言學及其源流論文01-01
高中美術素描系列化教學模式探析03-28