採用自動化手段進行程式設計的技術和過程。
後引申為採用自動化手段進行軟體開發的技術和過程。
基本介紹
- 中文名:自動程式
- 外文名:Automatic program
- 特點:自動化程式設計的技術和過程
- 另稱:軟體自動化
自動程式設計一詞具有多種涵義。按廣義的理解,自動程式設計是儘可能藉助計算機系統(特別是自動程式設計系統)進行軟體開發的過程。軟體開發指的是,從問題的非形式描述,經形式的軟體功能規格說明、設計規格說明,到可執行的程式代碼、調試,及至確認、交付使用的全過程。按狹義的理解,自動程式設計是從形式的軟體功能規格說明到可執行的程式代碼這一過程的自動化。按縱向理解,低級自動化是從軟體設計規格說明到可執行的程式代碼這一過程的自動化,系統只起程式人員的作用;中級自動化是從形式的軟體功能規格說明、設計規格說明,直到可執行的程式代碼這一過程的自動化,系統除了起程式人員的作用外,還起設計人員、系統分析人員的作用;高級自動化是從非形式的問題描述,經形式的軟體功能規格說明、軟體設計規格說明,直到可執行的程式代碼這一全過程的自動化,系統除了起程式人員、軟體設計人員、系統分析人員的作用外,還起領域專家的部分作用。按橫向理解,在上述各種縱向理解級別上,根據人工干預的程度,又可區分各種不同的自動化級別。
從關鍵技術來看,自動程式設計的實現途徑可歸結為演繹綜合、程式轉換、實例推廣,以及過程實現等4種。①演繹綜合。其理論基礎是,數學定理的構造式證明可等價於程式推導。對要生成的程式,用戶給出它的輸入、輸出數據必須滿足的條件,條件以某種形式語言(如謂詞演算)陳述。對於所有這些滿足條件的輸入,要求定理證明程式證明存在一個滿足輸出條件的輸出,從該證明中析取出所欲生成的程式。這一途徑的優點是理論基礎堅實,但迄今只析取出一些較小的樣例,較難用於較大規模的程式。②程式轉換。將一規格說明或程式轉換成另一功能等價的規格說明或程式。從抽象級別的異同來看,可區分縱向轉換與橫向轉換。前者是由抽象級別較高的規格說明或程式轉換成與之功能等價的抽象級別較低的規格說明或程式;後者是在相同抽象級別上的規格說明或程式間的功能等價轉換。③實例推廣。藉助反映程式行為的實例來構作程式。一般有兩種方法。一種是輸入/輸出對法:藉助給出一組輸入/輸出對,逐步導出適用於一類問題的程式。另一種是部分程式軌跡法:通過所給實例的運行軌跡,逐步導出程式。這一途徑的思想誘人,為用戶稱道,但欲歸納出一定規模的程式,難度頗大。④過程實現。在對應規格說明中的各個成分,其轉換目標的相應成分明確,而且相應的轉換映射也明確的前提下,該映射可藉助過程實現。目前一般採取設計甚高級語言(如SETL),其中含有全稱量詞,存在量詞等,以便於書寫軟體設計規格說明的成分。但是,SETL本身還不能算是功能規格說明語言,不能算是功能性語言。這一途徑的實現效率較高,困難點在於從非算法性成分到算法性成分的轉換。因此,迄今採用這一途徑的系統一般自動化程度不高,很難實現從功能規格說明到可執行的程式代碼的自動轉換。