複製鏈接
請複製以下鏈接發送給好友

自動程序設計

鎖定
自動程序設計,是採用自動化手段進行程序設計的技術和過程。後引申為採用自動化手段進行軟件開發的技術和過程。在後一種意義上宜稱為軟件自動化。其目的是提高軟件生產率和軟件產品質量。按廣義的理解,自動程序設計是儘可能藉助計算機系統(特別是自動程序設計系統)進行軟件開發的過程。按狹義的理解,自動程序設計是從形式的軟件功能規格説明到可執行的程序代碼這一過程的自動化。自動程序設計在軟件工程,流水線控制等領域均有廣泛應用。
中文名
自動程序設計
外文名
automatic programming
性    質
程序設計
目    的
達到自動生產

自動程序設計定義

自動程序設計一詞具有多種涵義。
廣義含義
按廣義的理解,自動程序設計是儘可能藉助計算機系統(特別是自動程序設計系統)進行軟件開發的過程。軟件開發指的是,從問題的非形式描述,經形式的軟件功能規格説明、設計規格説明,到可執行的程序代碼、調試,及至確認、交付使用的全過程。
狹義含義
按狹義的理解,自動程序設計是從形式的軟件功能規格説明到可執行的程序代碼這一過程的自動化。
縱向理解
按縱向理解,低級自動化是從軟件設計規格説明到可執行的程序代碼這一過程的自動化,系統只起程序人員的作用;中級自動化是從形式的軟件功能規格説明、設計規格説明,直到可執行的程序代碼這一過程的自動化,系統除了起程序人員的作用外,還起設計人員、系統分析人員的作用;高級自動化是從非形式的問題描述 ,經形式的軟 件功能規 格説明 、軟件設計規格説明,直到可執行的程序代碼這一全過程的自動化,系統除了起程序人員、軟件設計人員、系統分析人員的作用外,還起領域專家的部分作用。
橫向理解
按橫向理解,在上述各種縱向理解級別上,根據人工干預的程度,又可區分各種不同的自動化級別。

自動程序設計關鍵技術

從關鍵技術來看,自動程序設計的實現途徑可歸結為演繹綜合、程序轉換、實例推廣,以及過程實現等 4種。① 演繹綜合。其理論基礎是,數學定理的構造式證明可等價於程序推導。對要生成的程序,用户給出它的輸入、輸出數據必須滿足的條件 ,條件以某種形式語言( 如謂詞演算 )陳述。對於所有這些滿足條件的輸入,要求定理證明程序證明存在一個滿足輸出條件的輸出,從該證明中析取出所欲生成的程序。這一途徑的優點是理論基礎堅實,但迄今只析取出一些較小的樣例,較難用於較大規模的程序。②程序轉換。將一規格説明或程序轉換成另一功能等價的規格説明或程序。從抽象級別的異同來看,可區分縱向轉換與橫向轉換。前者是由抽象級別較高的規格説明或程序轉換成與之功能等價的抽象級別較低的規格説明或程序;後者是在相同抽象級別上的規格説明或程序間的功能等價轉換。③實例推廣。藉助反映程序行為的實例來構作程序 。一般有兩 種 方法 。一種是輸入/輸出對法:藉助給出一組輸入/輸出對,逐步導出適用於一類問題的程序。另一種是部分程序軌跡法:通過所給實例的運行軌跡,逐步導出程序。這一途徑的思想誘人,為用户稱道 ,但欲歸納出一定規模的程序 ,難度頗大 。④ 過程實現。在對應規格説明中的各個成分,其轉換目標的相應成分明確,而且相應的轉換映射也明確的前提下,該映射可藉助過程實現。目前一般採取設計甚高級語言(如SETL),其中含有全稱量詞,存在量詞等,以便於書寫軟件設計規格説明的成分 。但是 ,SETL 本身還不能 算是功能規格説明語言,不能算是功能性語言。這一途徑的實現效率較高,困難點在於從非算法性成分到算法性成分的轉換。因此,迄今採用這一途徑的系統一般自動化程度不高,很難實現從功能規格説明到可執行的程序代碼的自動轉換。
自動程序設計的任務是設計一個程序系統,它接受關於所設計的程序要求實現某個目標非常高級描述作為其輸入,然後自動生成一個能完成這個目標的具體程序。在某種意義上説,編譯程序實際上就是去做“自動程序設計”的工作。編譯程序是接受一段有關幹某件事情的源碼説明(源程序),然後轉換成一個目標碼(目的程序)程序去完成這件事情。而這裏所説的自動程序設計相當於一種“超級編譯程序”,它要求能對高級描述進行處理,通過規劃過程,生成的到所需的程序。因而自動程序設計所涉及的基本問題與定理證明和機器人學有關,要用到人工智能的方法來實現,它也是軟件工程和人工智能相接合的課題。
自動編出的一份程序來獲得某種指定結果的任務同論證一份給定的程序將獲得某種指定結果的任務是緊密相關的,前者也稱程序綜合,後者稱為程序驗證。許多自動程序設計系統將產生一份輸出程序的驗證作為額外的收益。

自動程序設計重大貢獻

自動程序設計研究的重大貢獻之一是把程序調試的概念作為問題求解的策略來使用。實踐已發現,對程序設計或機器人控制問題,先產生一個代價不太高的有錯誤的解,然後再進行修改的作法,要比堅持要求第一次得到的解就完全沒有缺陷的作法,通常效率要高的多。