?

一種樹狀效能評估指標體系建模工具設計

2024-04-06 13:05李俊君劉永亮于德安常海昕杜詩睿
電腦知識與技術 2024年3期

李俊君 劉永亮 于德安 常海昕 杜詩睿

關鍵詞:樹狀指標體系;效能評估;建模工具; 麒麟操作系統;達夢數據庫

中圖分類號:TP317.1 文獻標識碼:A

文章編號:1009-3044(2024)03-0097-03

0 引言

效能指解決方案的能力滿足問題需求的狀況,效能指標指判斷解決方案的能力是否滿足問題需求的衡量標準[1],效能評估則是基于效能指標來預計、檢驗武器裝備實現作戰任務目標的效果[2]。傳統效能評估軟件多從效能評估算法開發方面創新,較少對效能評估流程進行創新,李彬等設計的基于Web的效能評估仿真架構對此問題做了探索[3],但其架構前端采用的流程圖設計類庫Raphaeld功能簡單,且最近的版本發布日期仍停留在2019年8月①,架構后端使用的spring 雖然是輕量級框架,但相對于一些其他的框架,卻稍顯臃腫[4]。馬佳楠等[5] 將B/S(瀏覽器- 服務器,Browser-Server) 架構應用于航天測控領域的效能評估系統開發,實踐證明通過有效設計此架構可以滿足航天測控網靈活的效能評估需求。

1 架構設計

構建工具運行于銀河麒麟操作系統,使用達夢8 作為存儲數據庫,架構分為三層, 分別是數據層、服務層以及應用層, 如圖1所示。數據層主要包括效能評估指標數據, 是指標體系構建所需及產生的相關數據資源集合, 通過服務層接口向應用層提供統一數據訪問和存儲服務;服務層包括指標管理服務, 數據管理服務, 通過模塊化機制實現了系統運行共性服務;應用層主要包括指標體系可視化構建、指標管理、數據導入導出, 是面向用戶的接口, 通過用戶交互界面完成樹狀效能評估指標構建流程。

構建工具技術棧后端選用基于Go 語言開發的Zorm和Gin,Go是Google開發的一款開源編程語言,開發環境支持Windows、macOS及基于Linux內核開發的國產操作系統[6],目前國產操作系統所支持的芯片[7-12]如鯤鵬、飛騰、RSIC-V、海光,龍芯、海思麒麟、兆芯,其指令集架構大都被Go的編譯器支持(見表1) ,在中美貿易摩擦、國產芯片崛起的大背景下,更是可以作為除Java外的另一種國產CPU平臺應用開發語言[13]。Zorm 就是一款使用Go 語言開發的國產輕量ORM庫(Object Relationl Mapping,對象關系映射),支持眾多國產數據庫,包括達夢、金倉、神通、南通、TDengine,也支持市面上常見的數據庫類型如:mysql、postgresql、oracle、mssql、sqlite、db2、clickhouse等②,Gin 也是Go語言開發的Web框架。具有運行速度快,對日志、權限等中間件的良好支持的優點;其路由分組功能可以讓開發人員更好地管理路由。Gin非常靈活,開發過程中可以自行設計框架結構,基本結構是經典的MVC(Model-View-Controller)模型[14]。

構建工具技術棧前端基于GoJS與Vue.js框架開發,GoJS是Northwoods軟件公司出品的一款基于Web 的圖形組件庫[15],通過可自定義的模板和布局構建交互式圖表和復雜的可視化圖表,它可在任何能夠執行JavsScript 的環境中運行,包括主流開發框架React,Angular, Vue;跨平臺桌面應用開發工具Electron;各主流瀏覽器及非瀏覽器環境Node.js,該圖形庫已經在GitHub上發布了232個版本,最新版本更新于2023年8 月③。Vue.js 則是一款國產的MVVM(Model-View-ViewModel) 前端開發框架,通過數據與界面層進行雙向綁定,使得數據更新和界面展現能夠邏輯分離[16]。

2 關鍵技術實現

構建工具采用B/S架構, 用戶通過瀏覽器訪問指標構建系統,前端提供面向用戶的人機交互界面,實現指標管理、指標體系可視化編輯,數據通過http協議與后端Gin框架開發的API(Application Program In?terface,應用程序接口)通信實現對達夢數據庫中指標體系數據的寫入與讀取。

2.1 指標設計

指標設計是整套系統的核心,對指標的屬性進行描述如表2所示,指標在指標表中存儲,用戶對應不同評估需求從指標表中選擇指標構建對應結構的指標體系,指標體系屬性描述如表3所示,指標體系中各節點關系描述模型如表4所示,此處將指標編號與節點編號分字段記錄,是希望同一個指標可以在同一指標體系中復用,延續復制-分配的方式在模型圖轉化過程中的應用思路[17],綁定計算模型,最終構成一套可用的指標體系,系統可用于構建樹狀效能指標評估體系。

2.2 指標可視化編輯

系統中的指標體系可視化編輯,選用了GoJS提供的TreeModel模型,它通過服務層提供的指標服務獲得數據庫中的指標數據與指標關系數據,轉化成TreeModel模型使用的節點與連線數據生成可與用戶交互的指標體系圖,可用于對效能評估各類指標進行建模, 對指標構建提升的可視化和便捷性,滿足對指標體系進行動態建模, 例如對某仿真系統中火力毀傷效能的指標體系構建結果如圖2所示。該模塊主要功能包括以下幾點:

1) 體系分類, 實現對指標體系的分類建模功能。

2) 動態建模, 實現對指標體系的動態可視化分解與圖元化建模功能。

3) 關系建模, 實現對指標間的關聯關系進行建模。

4) 模型保存, 實現對指標體系的保存及數據導出。

2.3 指標體系數據導出

樹狀指標體系構建完成后,可以通過服務層的數據導出服務將數據庫中存儲的指標體系數據輸出各類格式的數據,這個功能的設計依賴于Go提供的結構體標簽功能,它可以在服務層通過Go定義的結構體數據添加元數據信息來生成多種格式的數據,包括json、xml、yaml,圖2中火力毀傷效能指標體系節點數據信息如表5所示,而圖3是將節點數據以json格式導出的效果。

2.4 指標體系數據導入合法性檢測

對于已有的指標體系結構,也可以通過構造符合指標關系描述模型的數據通過服務層的導入服務將數據導入到指標體系中,對于導入數據的檢測算法包括根節點唯一性檢測、父節點唯一性檢測、環狀結構檢測,所用偽算法如下所示:

輸入:數組,指標體系節點關系數據 nodeArr。

輸出:布爾值, 指標體系數據是否能夠合法導入。

rootArr = nodeArr. filter(node => node. parent == 空)// 篩選根節點

if (rootArr.length != 1) return false // 根節點唯一性檢測

foreach (item in nodeArr)

parentArr = nodeArr. filter(node => node. key ==item.parent) // 取得父節點

if (parentArr.length != 1) return false // 只能有一個父節點

linkArr = getChildrenRecursive(item) // 遞歸取得路徑上子孫節點

linkUniArr = unique(linkArr) // 路徑數組去重

if linkUniArr.length != linkArr.length return false // 路徑有環

endforeach

3 結束語

針對樹狀效能評估指標體系建模問題, 設計了一種可在銀河麒麟操作系統下運行的效能評估指標體系建模工具,選用的架構方案和技術選型理論上可在多種國產CPU平臺上遷移實現,但限于現有軟硬件使用場景這一點有待后續驗證, 目前已經完成了原型系統開發并應用于某仿真系統的效能評估模塊。通過實際使用表明,基于此工具構建的樹狀效能評估體系, 可滿足不同應用效能評估需求的快速響應,提高了效能評估指標體系構建的通用性、擴展性,為后續在效能評估模塊中集成評估算法模型提供了數據支撐。

【通聯編輯:梁書】

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合