發(fā)布時(shí)間:2022-04-09所屬分類:計(jì)算機(jī)職稱論文瀏覽:1次
摘 要: 摘要:針對(duì)煤質(zhì)管理系統(tǒng)不斷變化的業(yè)務(wù)邏輯、軟件開發(fā)成本過高并難以維護(hù)的問題,提出了一種基于模型驅(qū)動(dòng)架構(gòu)的模型測試方法。通過建立測試模型,在加入動(dòng)作規(guī)約語言的基礎(chǔ)上執(zhí)行測試用例和反饋測試結(jié)果,發(fā)現(xiàn)模型缺陷并及時(shí)重構(gòu),從而提高系統(tǒng)質(zhì)量。結(jié)合煤質(zhì)管理系統(tǒng)
摘要:針對(duì)煤質(zhì)管理系統(tǒng)不斷變化的業(yè)務(wù)邏輯、軟件開發(fā)成本過高并難以維護(hù)的問題,提出了一種基于模型驅(qū)動(dòng)架構(gòu)的模型測試方法。通過建立測試模型,在加入動(dòng)作規(guī)約語言的基礎(chǔ)上執(zhí)行測試用例和反饋測試結(jié)果,發(fā)現(xiàn)模型缺陷并及時(shí)重構(gòu),從而提高系統(tǒng)質(zhì)量。結(jié)合煤質(zhì)管理系統(tǒng)回采和掘進(jìn)工作面繪制進(jìn)行建模和測試,驗(yàn)證了該方法的可行性。
關(guān)鍵詞:煤質(zhì)管理系統(tǒng);模型測試;模型驅(qū)動(dòng)架構(gòu);動(dòng)作規(guī)約語言
0 引言
在煤炭行業(yè)中,煤炭品質(zhì)(簡稱煤質(zhì))是影響企業(yè)效益的關(guān)鍵因素之一,煤質(zhì)管理貫穿于煤炭的生產(chǎn)、運(yùn)輸、銷售等各個(gè)環(huán)節(jié)。目前,煤質(zhì)管理系統(tǒng)的建設(shè)取得了很 大 進(jìn) 展,但 仍 存 在 一 些 不 足:① 煤 質(zhì)管理系統(tǒng)在規(guī)模和復(fù)雜度上不斷增加,不能很好地與業(yè)務(wù)關(guān)聯(lián);② 煤質(zhì)模型中潛藏的業(yè)務(wù)邏輯錯(cuò)誤不能及早被煤質(zhì)領(lǐng)域?qū)<野l(fā)現(xiàn);③ 不斷變化的業(yè)務(wù)邏輯導(dǎo)致了系統(tǒng)低層次的重復(fù)編碼;④ 錯(cuò)誤的業(yè)務(wù)邏輯決策下進(jìn)行煤質(zhì)軟件項(xiàng)目,成本過高難于修復(fù)。
針對(duì)上 述 問 題,本文提出基于模型驅(qū)動(dòng)架構(gòu)(ModelDrivenArchitecture,MDA)[1]的 模型 測 試方法,為煤質(zhì)管理系統(tǒng)的開發(fā)和測試提供了一個(gè)新方向。在 MDA 中,模型是所構(gòu)建系統(tǒng)在功能、行為和結(jié)構(gòu)的形式化表示[2]。基于 MDA 的模型測試在產(chǎn)生任何代碼之前,對(duì)需求規(guī)約進(jìn)行充分的演練,即在開 發(fā) 早 期 用 UML(Unified ModelLanguage,統(tǒng)一建模語言)圖結(jié)合業(yè)務(wù)邏輯的形式建立測試模型、執(zhí)行測試用例并且反饋測試結(jié)果[3]。將煤質(zhì)管理系統(tǒng)開發(fā)過程中基于模型的測試集成到總體的測試進(jìn)程中,提供跨越整個(gè)開發(fā)生命周期的動(dòng)態(tài)測試,在測試的保護(hù)下,不斷重構(gòu)模型,以消除重復(fù)設(shè)計(jì),優(yōu)化設(shè)計(jì)結(jié)構(gòu),提高模型的重用性,更好地指明設(shè)計(jì)模型上的缺陷以及需求實(shí)施失誤,從而提高煤質(zhì)管理系統(tǒng)質(zhì)量。
1 大型煤炭企業(yè)煤質(zhì)管理系統(tǒng)建模
無論煤質(zhì)管理系統(tǒng)是采用 WebService,EJB或其他構(gòu)件技術(shù) 和 平 臺(tái),基 于 MDA 的 軟件 開 發(fā) 首 先要 建 立 平 臺(tái) 無 關(guān) 模 型 (Platform IndependentModel,PIM)用 于 描 述 軟 件 系 統(tǒng) 的 業(yè) 務(wù) 功 能 和 邏輯,并用 UML等建模語言來表示 PIM。建立 PIM的目的是為了理解問題域,詳述能夠滿足一組需求的系統(tǒng)行為。它獲取和表達(dá)了正在建立的所有煤質(zhì)管理系統(tǒng)的業(yè)務(wù)需求,并且包含了對(duì)系統(tǒng)的所有規(guī)約,但中立于任何實(shí)現(xiàn)(平臺(tái))。作為測試對(duì)象,煤質(zhì)管理系統(tǒng) PIM 主要包含域模型圖、用例圖、順序圖、類圖、協(xié)作圖、狀態(tài)圖等,建立步驟如下:
(1)域模 型 圖 的 建 立。在 域 模 型 圖 中,將 系 統(tǒng)按主題劃分為不同的域,每一個(gè)域表示系統(tǒng)中一個(gè)獨(dú)立的主題事務(wù)。煤質(zhì)管理系統(tǒng)層次架構(gòu)如圖1所示,在服務(wù)層將煤質(zhì)管理系統(tǒng)劃分為煤質(zhì)數(shù)據(jù)管理、煤質(zhì)計(jì)劃下達(dá)、煤層信息展示、煤質(zhì)系統(tǒng)后臺(tái)管理等域。以上域?qū)儆跇I(yè)務(wù)邏輯部分的內(nèi)容,無需依賴具體的平臺(tái)或者實(shí)現(xiàn)。對(duì)域的劃分將測試控制到具體的模型空間,增加了業(yè)務(wù)之間的內(nèi)聚性。域之間存在依賴關(guān)系,對(duì) 域 間 的 交 互 分 析 可 以 借 助 UML 順序圖來完成。
(2)類圖及協(xié)作圖的建立。類圖組成了域的靜態(tài)視圖,是用來顯示煤質(zhì)管理系統(tǒng)中的類、接口及它們之間的靜態(tài)結(jié)構(gòu)和關(guān)系的一種靜態(tài)模型。協(xié)作圖描述了特定行為的參與對(duì)象的靜態(tài)結(jié)構(gòu),以及參與對(duì)象之間的動(dòng)態(tài)交互。以煤質(zhì)預(yù)測功能為例,煤質(zhì)預(yù)測基礎(chǔ)數(shù)據(jù)包括:① 采制樣員對(duì)工作面煤質(zhì)煤樣進(jìn)行采取、制備,通過化驗(yàn)分析生成的煤樣檢測基礎(chǔ)數(shù)據(jù);② 煤質(zhì)科根據(jù)生產(chǎn)計(jì)劃制定年度、月 度 以 及月度分解的計(jì)劃數(shù)據(jù);③ 運(yùn)銷中心根據(jù)各質(zhì)檢站對(duì)商品煤銷售數(shù)據(jù)進(jìn)行統(tǒng)計(jì),形成各月商品煤煤質(zhì)數(shù)據(jù)等。
(3)狀態(tài)圖的建立。狀態(tài)圖是描述一個(gè)實(shí)體基于事件反應(yīng)的動(dòng)態(tài)行為,顯示了該實(shí)體如何根據(jù)當(dāng)前所處狀態(tài)對(duì)不同的時(shí)間做出反應(yīng)。狀態(tài)圖由狀態(tài)組成,各狀態(tài)由轉(zhuǎn)移鏈接在一起。狀態(tài)是對(duì)象執(zhí)行某項(xiàng)活動(dòng)或等待某個(gè)事件時(shí)的條件,轉(zhuǎn)移是2個(gè)狀態(tài)之間的關(guān)系,它由某個(gè)事件觸發(fā),然后執(zhí)行特定的操作或評(píng)估并導(dǎo)致特定的結(jié)束狀態(tài)。工作面(回采工作面和掘進(jìn)工作面)繪制狀態(tài)圖如圖2所示。首先根據(jù)工作面要素,按畫圖比例來繪制工作面示意圖。根據(jù)毛煤月度分解計(jì)劃數(shù)據(jù)和工作面要素,計(jì)算出每月的開采位置,并按顏色來區(qū)分已采和未采部分。當(dāng)用戶點(diǎn)擊某個(gè)采樣點(diǎn)位置時(shí),以資料卡的形式彈出該采樣點(diǎn)的煤質(zhì)柱狀和相關(guān)信息。然后根據(jù)煤層煤樣采樣點(diǎn)信息,計(jì)算出每個(gè)采樣點(diǎn)在該工作面上的對(duì)應(yīng)位置,繪制出采樣點(diǎn)。根據(jù)煤層采樣點(diǎn)的煤質(zhì)數(shù)據(jù)繪制出沿通風(fēng)巷和運(yùn)輸巷煤質(zhì)折線趨勢(shì)圖。最后根據(jù)煤質(zhì)預(yù)測的開采計(jì)劃和煤層采樣點(diǎn)的各分層數(shù)據(jù),繪制出工作面,若數(shù)據(jù)獲取錯(cuò)誤則繪制失敗。
2 模型測試基本框架
盡管 UML規(guī) 范在 MDA 過 程中 是 必 要 的,但卻沒有包含可執(zhí)行語義,不足以進(jìn)行可執(zhí)行建模,因此需要擴(kuò)展更多的機(jī)制來支持精確建模和分析模型。動(dòng)作規(guī)約語言(ActionSpecificationLanguage,ASL)的出現(xiàn)彌補(bǔ)了這一缺陷,它是一種符合 UML動(dòng)作語義標(biāo)準(zhǔn)的語言,提供了操縱模型元素的能力,為部分 UML模型增 加 了 可 執(zhí) 行 行 為 的 定 義,并 且又不 偏 向 于 任 何 實(shí) 現(xiàn) 技 術(shù)。ASL 語 句在 MDA 過程中總是與常 規(guī) UML 模 型元 素 關(guān) 聯(lián),例 如 與 類 的方法或狀態(tài)圖中信號(hào)發(fā)送關(guān)聯(lián)。各抽象層之間的行為是相互映射的,每一句 PIM 中的 ASL 語句都 可以在平臺(tái)相關(guān)模型(PlatformSpecificModel,PSM)和代碼層中找到相應(yīng)的實(shí)現(xiàn)[4]。
基于 MDA 的模型測試框架通過對(duì)測試過程的抽象化,分離測試模型和測試執(zhí)行,模型測試流程如圖3所示。測試設(shè)計(jì)人員側(cè)重于對(duì)被測試系統(tǒng)需求和業(yè)務(wù)層面的理解,從而通過正向或逆向手段建立針對(duì)某方面特征的測試模型,并重用有針對(duì)性的測試執(zhí)行手段。測試模型是基于 MDA 的模型測試的核心概念,它在測試的不同階段表現(xiàn)為不同視圖。
(1)需求模型:需求的形式化就是對(duì)需求的表述從自然語言轉(zhuǎn)換成為 UML的形式。在進(jìn)行功能測試時(shí),輸入需求,對(duì)需求進(jìn)行約束和形式化,以便將需求模型轉(zhuǎn) 換 為 測 試 模 型,主 要 采 用 UML 的 用例圖和活動(dòng)圖來表述。
(2)測試模型:被測系統(tǒng)需求模型中加入 ASL,完成對(duì)模型中動(dòng)態(tài)屬性(包括動(dòng)作以及方法的行為)的描述。描述后的模型具有了可執(zhí)行語義,形成測試模型。
(3)測試用例集:ASL提供了操縱模型的能力,可以根據(jù)業(yè)務(wù)邏輯和功能點(diǎn)建立測試用例集。
(4)測試場景:在測試執(zhí)行之前,通過相應(yīng) ASL語句描述測試的執(zhí)行環(huán)境以及執(zhí)行流程,將測試用例按次序組合成互為因果的測試流程。在測試場景中更多的是體現(xiàn)需求對(duì)流程的描述,對(duì)需求中各個(gè)業(yè)務(wù)流程、業(yè)務(wù)功能的測試[5]。通過該方法,能夠覆蓋到應(yīng)用系統(tǒng)的各個(gè)流程和不同的測試數(shù)據(jù)分支。
3 建模過程中的測試
加入 ASL,煤質(zhì)模型具有可執(zhí)行能力。完成對(duì)測試環(huán)境和測試用例構(gòu)建,MDA 開 發(fā)過 程 利 用 模型的可執(zhí)行能力來測試煤質(zhì)管理系統(tǒng)的業(yè)務(wù)需求是否準(zhǔn)確,模型中是否存在潛在問題。在煤質(zhì)業(yè)務(wù)邏輯中,根據(jù)煤質(zhì)基礎(chǔ)信息以及采樣員提供的煤層中煤、矸主要元素的位置、高度數(shù)值,繪制工作面煤質(zhì)信息 圖 件,其中繪制工作面展開圖包括 3 部 分: ① 沿通風(fēng)巷和運(yùn)輸巷煤質(zhì)變化折線趨勢(shì)圖,主要反映灰 分、硫 分、發(fā)熱量等煤質(zhì)指標(biāo)的變化情況。 ② 通風(fēng)巷和運(yùn)輸巷煤層展開圖,主要反映煤層夾矸的分布情況。③ 開采進(jìn)度示意圖和煤層煤質(zhì)柱狀圖。工作面展開圖繪制所涉及的類圖如圖4所示。
3.1 測試初始化環(huán)境的構(gòu)建
MDA 不涉及 具 體 技 術(shù),也 不 依 賴 于 特 定 平 臺(tái)信息,因此不能將數(shù)據(jù)庫引入作為測試一部分,轉(zhuǎn)而由測試初始化塊負(fù)責(zé)對(duì)各類測試數(shù)據(jù)和對(duì)象賦值。測試初始化環(huán)境控制著測試初始狀態(tài)以及所有測試預(yù)期,它是否模擬了真實(shí)環(huán)境將決定測試結(jié)果的真實(shí)性和正確性。完整的工作面展開圖包含以下幾種類型的對(duì)象:掘進(jìn)工作面要素、回采工作面要素、毛煤月度分解 計(jì) 劃、煤 層 煤 樣、回 采 煤 樣 以 及 煤 質(zhì) 預(yù)測。其中2種要素是必須的,而煤質(zhì)預(yù)測數(shù)據(jù)由系統(tǒng)自動(dòng)生成。上述對(duì)象生成順序沒有嚴(yán)格要求,對(duì)象生成后可自動(dòng)繪制工作面展開圖。
想了解更多煤質(zhì)方向的文獻(xiàn)還可以查看:煤質(zhì)管理論文文獻(xiàn)3篇
對(duì)象和數(shù)據(jù)的創(chuàng)建方式有2種:① 在類的靜態(tài)方法中初始化,將對(duì)象的初始化放入方法體內(nèi)進(jìn)行,數(shù)據(jù)初值以方法參數(shù)的方式傳入。② 直 接 給 對(duì) 象屬性賦值,過程更加直觀,但是缺少初始化過程細(xì)粒度的控制。
上述測試用例中涉及到的公式為公式1:煤層凈 煤 量=分 煤 層 厚 度×單 循 環(huán) 進(jìn)尺×工作面傾斜長度×比重;公式2:分煤層矸量=(各架對(duì)應(yīng)分煤層厚度總和×分煤層長度)×單循環(huán)進(jìn)尺比重。在測試 用 例 中,通 過find-only操 作,確保 模 型中只 提 供 了 唯 一 的 有 效 句 柄,判 斷 actual不 為UNDEFINED則 向 類 對(duì) 應(yīng) 狀 態(tài) 圖 發(fā) 送 信 號(hào) PT1:Request_Data(),激 發(fā)狀 態(tài) 跳 轉(zhuǎn) 并 執(zhí) 行 入 口 動(dòng) 作。入口動(dòng)作中通過關(guān)聯(lián)漫游導(dǎo)航對(duì)象關(guān)系,驗(yàn)證對(duì)象屬性值并進(jìn)行業(yè)務(wù)的處理。若測試用例執(zhí)行過程中報(bào)錯(cuò)或者被測系統(tǒng)的行為與模型期望不一致,針對(duì)錯(cuò)誤類型修改模型或者調(diào)整測試用例,直到模型反映出系統(tǒng)的預(yù)期行為。
4 結(jié)語
模型作為 MDA軟件開發(fā)過程中的核心部分,包含了所有系統(tǒng)需求規(guī)約,對(duì)模型的測試研究,可以從早期針對(duì)業(yè)務(wù)需求進(jìn)行驗(yàn)證,避免將重大缺陷遺留在系統(tǒng)中,對(duì)后期的系統(tǒng)造成重大隱患。ASL語言對(duì)模型動(dòng)作語義部分進(jìn)行了完善的補(bǔ)充,它操縱模型元素的能力,可以有助于完成對(duì)基于模型測試中初始化環(huán)境的創(chuàng)建,并且調(diào)用各個(gè)模型元素,組織測試用例,模擬出真實(shí)場景來精確地完成對(duì)模型的測試。——論文作者:張小艷, 楊陽, 文輝
參考文獻(xiàn):
[1] RAISTRICKC,F(xiàn)RANCISP,WRIGHTJ,etal.MDA與可執(zhí)行 UML[M].趙建華,張?zhí)欤g.北京:機(jī)械工業(yè)出版社,2006.
[2] 劉靜,何積豐,繆 淮 扣.模型驅(qū)動(dòng)架構(gòu)中模型構(gòu)造與集成策略[J].軟件學(xué)報(bào),2006,17(6):1411-1422.
[3] 劉揚(yáng),李亞芬,王 普.模型驅(qū)動(dòng)的測試用例自動(dòng)生成框架[J].計(jì)算機(jī)工程,2011,37(1):39-40.
[4] 張浩華,趙海,趙 明.大型水電仿真系統(tǒng)的模型驅(qū)動(dòng)架構(gòu)設(shè)計(jì)[J].計(jì)算機(jī)工程與應(yīng)用,2009,45(4):72-75.
[5] 王瑞雪,張濤.UML模型驅(qū)動(dòng)的劃分測試用例生成方法研究[J].計(jì)算機(jī)應(yīng)用研究,2012,29(9):3334-3337.