一種系列化語言族及其軟體工程環境

才智咖 人氣:3.17W
一種系列化語言族及其軟體工程環境

一、歷史背景
  
  多年來一直困擾程式技術研究領域的一個根本問題是計算機程式難寫、難讀、易錯、難以維護,致使軟體生產率很低。對比之下,計算機應用的發展及硬體生產率的提高卻非常快,很不匹配,針對這個問題,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