喬冠禹 劉冰峰 薛永奎
摘 要:在試驗鑒定與數(shù)據(jù)資源建設(shè)中,美國針對各相關(guān)領(lǐng)域完成了一系列元數(shù)據(jù)標(biāo)準(zhǔn)的制定,但這些在實際應(yīng)用中仍存在較多問題。為此,美國靶場指揮官協(xié)會基于XML標(biāo)準(zhǔn)格式語法、XML樣式指南等標(biāo)準(zhǔn),結(jié)合領(lǐng)域內(nèi)各個機構(gòu)間的約定與實際應(yīng)用需求,制定了一系列對基于XML的元數(shù)據(jù)文件進行自動化測試的方式方法,有效避免了問題的發(fā)生,對于促進各靶場間的互聯(lián)、互通、互操作具有重要意義,可以為我國試驗鑒定領(lǐng)域數(shù)據(jù)工程建設(shè)提供重要參考。
關(guān)鍵詞:試驗鑒定;元數(shù)據(jù);XML;自動化測試
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1671-2064(2019)15-0053-04
0 引言
當(dāng)前,試驗需求的不斷增長和信息技術(shù)的快速發(fā)展,指引著裝備試驗鑒定領(lǐng)域的方式方法不斷向數(shù)字化、網(wǎng)絡(luò)化、信息化邁進。[1]試驗和基于信息系統(tǒng)的體系運用能力的考核和檢驗,更加強調(diào)數(shù)據(jù)跨領(lǐng)域和跨機構(gòu)的應(yīng)用。為此試驗機構(gòu)內(nèi)部以及相互間互聯(lián)互通和互操作的試驗需求對數(shù)據(jù)工程提出了相應(yīng)要求。美國等發(fā)達國家尤其重視對于試驗鑒定方法的創(chuàng)新,并不斷在實踐中進行完善和發(fā)展。近年來,在試驗鑒定領(lǐng)域,元數(shù)據(jù)與其相關(guān)技術(shù)受到高度重視,大量的元數(shù)據(jù)標(biāo)準(zhǔn)應(yīng)運而生,其科學(xué)性與可讀性已經(jīng)開始對試驗鑒定效果產(chǎn)生重要影響。各試驗鑒定機構(gòu)制訂的元數(shù)據(jù)標(biāo)準(zhǔn)涉及范圍廣、格式雜、含義亂、冗余多等問題,直接制約了元數(shù)據(jù)技術(shù)在試驗鑒定領(lǐng)域的進一步應(yīng)用與發(fā)展。為此,美國基于XML標(biāo)準(zhǔn)格式語法、XML樣式指南等,結(jié)合領(lǐng)域內(nèi)各機構(gòu)間的相關(guān)協(xié)議與實際應(yīng)用需求,制定了一系列對基于XML的元數(shù)據(jù)實例進行自動化測試的方法,對于促進各試驗機構(gòu)間的互聯(lián)、互通、互操作起到了積極作用。本文對美國在試驗鑒定元數(shù)據(jù)自動化測試方法研究的概況進行簡要介紹,以期為我國試驗鑒定領(lǐng)域數(shù)據(jù)工程建設(shè)提供參考與借鑒。
1 基于XML實現(xiàn)的元數(shù)據(jù)標(biāo)準(zhǔn)概述
美國靶場指揮官協(xié)會(RCC)認為,今后的試驗鑒定活動將高度依賴元數(shù)據(jù),并為此制定了一系列XML格式元數(shù)據(jù)的標(biāo)準(zhǔn),來支持對元數(shù)據(jù)進行模塊化地開發(fā)運用,使得各項試驗鑒定活動能夠根據(jù)實際情況,來混合和匹配來自不同領(lǐng)域的元數(shù)據(jù),能夠按需提取所需的部分元數(shù)據(jù),保證了元數(shù)據(jù)的可重用性和互操作性。[2]
美國試驗鑒定領(lǐng)域的現(xiàn)行元數(shù)據(jù)標(biāo)準(zhǔn)包括元數(shù)據(jù)描述性語言(MDL)、遙測數(shù)據(jù)傳輸標(biāo)準(zhǔn)(TMATS)、數(shù)據(jù)展示標(biāo)注語言(DDML)、儀器硬件抽象語言(IHAL)等,它們基于相同的標(biāo)準(zhǔn)制訂,各自涵蓋了一定的試驗鑒定領(lǐng)域,并闡明了試驗鑒定領(lǐng)域內(nèi)的一些重要概念。在理想的試驗活動中,試驗鑒定系統(tǒng)和各個子系統(tǒng)將根據(jù)實際需求,從上述標(biāo)準(zhǔn)中進行抽取,并與其各自業(yè)務(wù)相結(jié)合。例如,遙測地面站可以選取并使用與數(shù)據(jù)測量(MDL)、數(shù)據(jù)打包(MDL和TMATS XML),以及數(shù)據(jù)展示(DDML)方面的標(biāo)準(zhǔn);而儀器儀表工程師的系統(tǒng)則需要用到與儀表硬件(IHAL)、數(shù)據(jù)測量(MDL)相關(guān)的標(biāo)準(zhǔn),以及定義了儀表硬件和測量活動之間關(guān)系的標(biāo)準(zhǔn)。
1.1 XML標(biāo)準(zhǔn)
隨著Web技術(shù)的飛速發(fā)展,信息交換的方式發(fā)生了深遠變化,要求信息具有可擴展的語言描述能力和基于語義的信息搜索特征。為此,XML(eXtensible Markup Language)標(biāo)準(zhǔn)應(yīng)運而生。XML標(biāo)準(zhǔn)是由萬維網(wǎng)聯(lián)盟(W3C)制定的一種規(guī)范,其初衷是提供一種機器可讀的描述性文檔。[3]XML在互聯(lián)網(wǎng)上廣泛普及,并能夠描述包含web服務(wù)和試驗鑒定元數(shù)據(jù)在內(nèi)的高度復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。圖1為TMATS XML文件的片段。
1.2 TMATS、IHAL、DDML、MDL等標(biāo)準(zhǔn)
遙測數(shù)據(jù)傳輸標(biāo)準(zhǔn)(TMATS)提供了完整描述從被測裝備傳輸或記錄的數(shù)據(jù)所需信息的通用定義。TMATS也是信息源(通常是儀器測量組)和用戶(通常是測試機構(gòu))之間的信息交互媒介。
儀器硬件抽象語言(IHAL)標(biāo)準(zhǔn)制訂了一種基于XML的格式。IHAL能根據(jù)儀器硬件的當(dāng)前配置和可能配置來描述儀器硬件的屬性。[4]
數(shù)據(jù)顯示標(biāo)記語言(DDML)標(biāo)準(zhǔn)制訂了數(shù)據(jù)顯示之間的通用的內(nèi)部通信語法。DDML標(biāo)準(zhǔn)包了含各個設(shè)備供應(yīng)商的數(shù)據(jù)顯示驅(qū)動,并提供了通用的接口。DDML標(biāo)準(zhǔn)具有可重用性和可擴展性,便于在未來按需進行擴展。[5]
元數(shù)據(jù)描述語言(MDL)標(biāo)準(zhǔn)制訂了在遙測系統(tǒng)組件之間交換配置信息的通用交互語言,提供了用于描述遙測系統(tǒng)中組件配置以及其邏輯關(guān)系、物理關(guān)系的必要手段。標(biāo)準(zhǔn)中,MDL語法定義了詞匯表和語法結(jié)構(gòu),而MDL語義定義了其內(nèi)涵。
2 XML元數(shù)據(jù)的自動化測試方法
盡管美國靶場指揮官協(xié)會已經(jīng)建立了試驗鑒定元數(shù)據(jù)的一系列標(biāo)準(zhǔn),但在實際應(yīng)用中,仍然存在著元數(shù)據(jù)不符合標(biāo)準(zhǔn),甚至因為自身語法、格式、約束性等一系列方面的錯誤導(dǎo)致元數(shù)據(jù)無法解析,甚至數(shù)據(jù)丟失的問題。對此,靶場指揮官協(xié)會依據(jù)XML標(biāo)準(zhǔn)格式語法、XML樣式指南、各項標(biāo)準(zhǔn),參照試驗鑒定領(lǐng)域各個領(lǐng)域內(nèi)各個機構(gòu)間的約定和靶場試驗中的本地實際應(yīng)用要求,制定了一系列對元數(shù)據(jù)文件進行自動化測試的方式方法,有效避免了問題的發(fā)生。
2.1 元數(shù)據(jù)文件語法測試
2.1.1 目的
該項測試用于確定元數(shù)據(jù)文件是否符合標(biāo)準(zhǔn)XML模式定義(XSD),即其是否存在語法錯誤。若未通過此項測試,元數(shù)據(jù)文件很可能無法用于后續(xù)處理。
2.1.2 測試環(huán)境
圖2為執(zhí)行語法測試的環(huán)境。
測試環(huán)境包括:(1)標(biāo)準(zhǔn)的XML模式定義(XSD);(2)元數(shù)據(jù)文件;(3)開發(fā)環(huán)境(C,C++,Java等);(4)符合XML Simple API或所選編程環(huán)境的文檔對象模型(DOM)的XML解析庫。可以使用Apache Xerces項目、XML綁定的Java體系結(jié)構(gòu)(JAXB)和xmllint工具來實現(xiàn)。
2.1.3 測試方法
測試的步驟如下:
(1)初始化開發(fā)環(huán)境;(2)根據(jù)庫的開發(fā)指南或應(yīng)用程序編程接口(API)編寫測試程序代碼,以使用XML解析庫。使用XML解析庫來驗證元數(shù)據(jù)文件是否符合XSD。該步驟輸出測試報告,來描述XML解析庫返回的錯誤或警告信息;(3)編譯并構(gòu)建測試程序;(4)運行測試程序,根據(jù)庫的指令(包括相關(guān)配置參數(shù))將元數(shù)據(jù)文件和標(biāo)準(zhǔn)的XSD編碼加載到XML解析庫中;(5)觀察測試應(yīng)用程序的輸出,記錄錯誤和警告。
2.2 樣式指南符合性測試
2.2.1 目的
該項測試用于確定XSD或元數(shù)據(jù)文件是否符合靶場指揮官協(xié)會發(fā)布的XML樣式指南。未通過此測試說明被測元數(shù)據(jù)文件可讀性、可維護性較差。此測試適用于XML格式的元數(shù)據(jù)文件以及XSD。
2.2.2 測試環(huán)境
圖3為執(zhí)行樣式指南符合性測試的環(huán)境。
該項測試的測試環(huán)境包括:(1)要測試的標(biāo)準(zhǔn)或元數(shù)據(jù)文件的XSD;(2)開發(fā)環(huán)境(C,C ++,Java等);(3)與開發(fā)環(huán)境兼容,用于執(zhí)行樣式指南規(guī)則的規(guī)則引擎??梢赃x擇開源規(guī)則引擎;(4)可由所選規(guī)則引擎讀取和執(zhí)行的樣式指南規(guī)則編碼。
2.2.3 測試方法
測試的步驟如下:
(1)初始化開發(fā)環(huán)境;(2)根據(jù)規(guī)則引擎開發(fā)指南或API編寫測試程序。此程序?qū)⒃獢?shù)據(jù)文件或XSD以及樣式指南規(guī)則編碼加載到規(guī)則引擎的內(nèi)部對象中,然后調(diào)用相應(yīng)的規(guī)則引擎API,以根據(jù)編碼的樣式指南規(guī)則對元數(shù)據(jù)文件或XSD進行驗證。該步驟輸出測試報告,來描述規(guī)則引擎驗證返回的錯誤或警告信息;(3)編譯并構(gòu)建測試應(yīng)用程序;(4)運行測試程序,根據(jù)庫的指令(包括相關(guān)配置參數(shù))將元數(shù)據(jù)文件或XSD以及樣式指南規(guī)則的編碼加載到規(guī)則引擎中;(5)運行測試程序以根據(jù)樣式指南規(guī)則的編碼評估元數(shù)據(jù)文件或XSD;(6)觀察測試程序的輸出以識別錯誤和警告。
2.3 領(lǐng)域內(nèi)各個機構(gòu)間約定測試
2.3.1 目的
該項測試用于測試元數(shù)據(jù)文件是否符合由領(lǐng)域內(nèi)各個機構(gòu)建立的約定。機構(gòu)包括標(biāo)準(zhǔn)委員會、靶場、測試項目組等。約定包括數(shù)據(jù)的命名、屬性長度(如數(shù)據(jù)源ID限制為不超過32個字符),以及標(biāo)準(zhǔn)中記錄的非語法規(guī)則(如當(dāng)存儲介質(zhì)是磁帶時,允許磁帶寬度作為屬性)等。未通過此測試表明被測元數(shù)據(jù)文件可讀性較差,可能占用過多的內(nèi)存,并因違反各個機構(gòu)間建立的一系列規(guī)則和約束,并且可能無法為所有機構(gòu)的軟件所讀取,因而不能達到預(yù)期用途。此測試適用于元數(shù)據(jù)文件。
2.3.2 測試環(huán)境
圖4為執(zhí)行領(lǐng)域內(nèi)各個機構(gòu)間約定測試的環(huán)境。
該項測試的測試環(huán)境包括:(1)元數(shù)據(jù)文件;(2)開發(fā)環(huán)境(C,C ++,Java等);(3)與開發(fā)環(huán)境兼容,用于執(zhí)行領(lǐng)域內(nèi)各個機構(gòu)間約定的規(guī)則引擎??梢赃x擇開源規(guī)則引擎;(4)可由所選規(guī)則引擎讀取和執(zhí)行的領(lǐng)域內(nèi)各個機構(gòu)間約定編碼。
2.3.3 測試方法
測試步驟如下:
(1)初始化開發(fā)環(huán)境。(2)根據(jù)規(guī)則引擎開發(fā)指南或API編寫測試應(yīng)用程序。此應(yīng)用程序?qū)⒃獢?shù)據(jù)文件和領(lǐng)域內(nèi)各個機構(gòu)間約定的規(guī)則編碼加載到規(guī)則引擎的內(nèi)部對象中,然后調(diào)用相應(yīng)的規(guī)則引擎API,以根據(jù)編碼的領(lǐng)域內(nèi)各個機構(gòu)間約定規(guī)則來對元數(shù)據(jù)文件進行測試。該步驟輸出測試報告,來描述規(guī)則引擎驗證返回的錯誤或警告信息;(3)編譯并構(gòu)建測試程序;(4)運行測試程序,根據(jù)庫的指令(包括相關(guān)配置參數(shù))將元數(shù)據(jù)文件和領(lǐng)域內(nèi)各個機構(gòu)間約定的編碼加載到規(guī)則引擎中;(5)運行測試程序以根據(jù)社區(qū)約定的編碼評估元數(shù)據(jù)文件;(6)觀察測試程序的輸出以識別錯誤和警告。
2.4 本地實際應(yīng)用測試
2.4.1 目的
該項測試用于驗證元數(shù)據(jù)文件是否滿足本地實際應(yīng)用的要求。靶場測試項目的要求包括硬件兼容性要求、物理約束、業(yè)務(wù)規(guī)則,配置規(guī)則等。未通過此測試說明該文件與靶場實際應(yīng)用的要求不相符,無法滿足靶場業(yè)務(wù)需求。此測試適用于元數(shù)據(jù)文件。
2.4.2 測試環(huán)境
圖5為執(zhí)行本地實際應(yīng)用測試的環(huán)境。
該項測試的測試環(huán)境包括:(1)元數(shù)據(jù)文件;(2)合適的開發(fā)環(huán)境(C,C++,Java等);(3)與開發(fā)環(huán)境兼容,用于執(zhí)行的規(guī)則引擎。可以選擇開源的或其他可以由政府和其他利益相關(guān)者免費獲得的規(guī)則引擎;(4)所選規(guī)則引擎可以讀取和執(zhí)行的各項實際應(yīng)用需求編碼。
2.4.3 測試方法
測試步驟如下:
(1)初始化開發(fā)環(huán)境;(2)根據(jù)規(guī)則引擎開發(fā)指南或API編寫測試程序。此程序?qū)⒃獢?shù)據(jù)文件和本地實際應(yīng)用的要求的規(guī)則編碼加載到規(guī)則引擎的內(nèi)部對象中,然后調(diào)用相應(yīng)的規(guī)則引擎API,以根據(jù)編碼的本地實際應(yīng)用的要求來對元數(shù)據(jù)文件進行測試。而后該步驟輸出描述規(guī)則引擎驗證返回的錯誤或警告的測試報告;(3)編譯并構(gòu)建測試程序;(4)運行測試程序,根據(jù)庫的指令(包括相關(guān)配置參數(shù))將元數(shù)據(jù)文件和需求的編碼加載到規(guī)則引擎中;(5)運行測試程序以根據(jù)需求的編碼評估元數(shù)據(jù)文件;(6)觀察測試程序的輸出以識別錯誤和警告。
2.5 回歸測試
2.5.1 目的
回歸測試通過對新引入的XSD、樣式指南編碼、領(lǐng)域內(nèi)各個機構(gòu)間約定編碼以及實際應(yīng)用要求的編碼等進行測試,來確定它們是否引入了新的錯誤,或?qū)е乱延写a、元數(shù)據(jù)出現(xiàn)錯誤。此外,還對XSD、樣式指南編碼、領(lǐng)域內(nèi)各個機構(gòu)間約定編碼、實際應(yīng)用要求編碼對開發(fā)環(huán)境、XML解析庫和規(guī)則引擎的兼容性進行測試。未通過此測試說明對元數(shù)據(jù)的各項更改引入了回歸錯誤,可能與先前的XSD實例、領(lǐng)域內(nèi)各機構(gòu)間約定編碼及本地實際應(yīng)用要求無法兼容。此測試適用于XSD或元數(shù)據(jù)文件。
2.5.2 測試環(huán)境
圖6為執(zhí)行回歸測試的環(huán)境。
該項測試的測試環(huán)境包括:(1)要測試的XSD或元數(shù)據(jù)文件;(2)領(lǐng)域內(nèi)各個機構(gòu)間要求支持的開發(fā)環(huán)境(C,C++,Java等);(3)領(lǐng)域內(nèi)各個機構(gòu)間要求支持的所有XML解析庫,符合XML Simple API或與編程環(huán)境兼容的文檔對象模型(DOM);(4)一套標(biāo)準(zhǔn)編碼規(guī)則(所選規(guī)則引擎可以讀取和執(zhí)行的樣式指南規(guī)則、領(lǐng)域內(nèi)各個機構(gòu)間約定、本地實際應(yīng)用要求,以及標(biāo)準(zhǔn)XML編碼規(guī)則);(5)規(guī)則引擎。
2.5.3 測試方法
該項測試方法使用標(biāo)準(zhǔn)編碼規(guī)則來驗證規(guī)則引擎和其他工具是否協(xié)同工作,并可適用于不同開發(fā)環(huán)境、XML解析庫、樣式指南規(guī)則引擎、領(lǐng)域內(nèi)各個機構(gòu)間約定的規(guī)則引擎和需求規(guī)則引擎的組合。
(1)初始化開發(fā)環(huán)境;(2)編寫測試程序代碼,以根據(jù)規(guī)則引擎開發(fā)指南或API編寫測試程序來使用規(guī)則引擎和XML解析庫。該測試程序包括3.3,3.3,5.3和6.3節(jié)中描述的測試應(yīng)用程序的功能;(3)編譯并構(gòu)建測試程序;(4)運行測試程序,根據(jù)庫的指令(包括相關(guān)配置參數(shù))將每個元數(shù)據(jù)文件和標(biāo)準(zhǔn)的XSD編碼加載到XML解析庫中;(5)觀察測試程序的輸出以識別錯誤和警告;(6)運行測試程序,根據(jù)庫的指令(包括相關(guān)配置參數(shù))將每個元數(shù)據(jù)文件和XSD以及樣式指南規(guī)則的編碼加載到規(guī)則引擎中;(7)運行測試程序以根據(jù)樣式指南規(guī)則的編碼評估元數(shù)據(jù)文件和XSD;(8)觀察測試程序的輸出以識別錯誤和警告;(9)運行測試程序,根據(jù)庫的指令(包括相關(guān)配置參數(shù))將元數(shù)據(jù)文件和領(lǐng)域內(nèi)各個機構(gòu)間約定的編碼加載到規(guī)則引擎中;(10)運行測試程序以根據(jù)領(lǐng)域內(nèi)各個機構(gòu)間約定的編碼評估元數(shù)據(jù)文件;(11)觀察測試程序的輸出以識別錯誤和警告;(12)運行測試程序,根據(jù)庫的指令(包括相關(guān)配置參數(shù))將元數(shù)據(jù)文件和本地實際應(yīng)用要求的編碼加載到規(guī)則引擎中;(13)運行測試程序以根據(jù)需求的編碼評估元數(shù)據(jù)文件;(14)觀察測試程序的輸出以識別錯誤和警告。
3 啟示與建議
美國在試驗鑒定領(lǐng)域建立了一系列元數(shù)據(jù)標(biāo)準(zhǔn)體系,并圍繞標(biāo)準(zhǔn)體系,依據(jù)試驗鑒定活動的實際情況,為實現(xiàn)元數(shù)據(jù)有效應(yīng)用,實現(xiàn)數(shù)據(jù)增值增效,開發(fā)了元數(shù)據(jù)自動化測試方法,為后續(xù)試驗鑒定工作開展提供了有力支持,有效提升了數(shù)據(jù)管理工作效率,保證了數(shù)據(jù)共享和應(yīng)用。其有益經(jīng)驗和成功做法,也對我國試驗鑒定領(lǐng)域數(shù)據(jù)工程建設(shè)具有重要的借鑒意義。
3.1 建立標(biāo)準(zhǔn)時注重調(diào)研,統(tǒng)籌各方
試驗鑒定領(lǐng)域范圍極為廣泛,覆蓋了組織指揮、環(huán)境構(gòu)設(shè)、測試測量、分析評估、仿真建模、基礎(chǔ)保障等諸多領(lǐng)域。為此,在建立標(biāo)準(zhǔn)時,應(yīng)當(dāng)廣泛調(diào)研各個領(lǐng)域的實際需求,統(tǒng)籌規(guī)劃,在統(tǒng)一的元數(shù)據(jù)描述方法基礎(chǔ)上,規(guī)劃元數(shù)據(jù)標(biāo)準(zhǔn)體系,并針對各領(lǐng)域?qū)嶋H,有針對性的制定領(lǐng)域級標(biāo)準(zhǔn),從而形成相對完善的元數(shù)據(jù)標(biāo)準(zhǔn)體系。
3.2 使用標(biāo)準(zhǔn)時結(jié)合實際,注意測試
盡管已經(jīng)制定了統(tǒng)一的元數(shù)據(jù)描述方法,但在試驗鑒定中往往需要結(jié)合來自多個領(lǐng)域的元數(shù)據(jù)據(jù)標(biāo)準(zhǔn),并且在標(biāo)準(zhǔn)使用過程中需要依據(jù)實際情況來設(shè)定元數(shù)據(jù)。因而在元數(shù)據(jù)文件生成后,應(yīng)當(dāng)根據(jù)總體和領(lǐng)域級標(biāo)準(zhǔn),以及特定使用需求進行檢驗。保證數(shù)據(jù)標(biāo)準(zhǔn)適用性和有效性,保證數(shù)據(jù)的可讀性、真實性、可用性。
3.3 注重配套設(shè)施建設(shè),發(fā)揮元數(shù)據(jù)價值
元數(shù)據(jù)建設(shè)工作中,應(yīng)當(dāng)更加注意軟硬件配套設(shè)施的建設(shè)。應(yīng)當(dāng)在梳理需求、建立標(biāo)準(zhǔn)的同時,構(gòu)建標(biāo)準(zhǔn)化、可擴展的元數(shù)據(jù)及數(shù)據(jù)測試系統(tǒng)、管理系統(tǒng)等,以支持元數(shù)據(jù)的標(biāo)準(zhǔn)化管理和有效拓展,不斷提高數(shù)據(jù)標(biāo)準(zhǔn)的可用性。
參考文獻
[1] 周杰韓,曾慶良,謝金崇,等.基于XML的互聯(lián)網(wǎng)信息資源描述及其應(yīng)用研究[J].計算機工程與應(yīng)用,2002(03):65-67.
[2] Range Commanders Council (RCC), Document 118-17 Volume 6, AUTOMATED TEST METHODS FOR XML METADATA[S],2017,12.
[3] Range Commanders Council (RCC), Document 125-15, XML STYLE GUIDE[S],2017,7.
[4] Range Commanders Council (RCC), Document 128-17, INSTRUMENTATION HARDWARE ABSTRACTION LANGUAGE (IHAL) HANDBOOK[S],2017,1.
[5] Range Commanders Council (RCC), Document 127-17, DATA DISPLAY MARKUP LANGUAGE (DDML) HANDBOOK[S],2017,1.