国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于整體一致性的跨平臺(tái)指標(biāo)體系構(gòu)建系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

2021-11-15 15:31:50賀偉雄汪穎黃曉夏
現(xiàn)代計(jì)算機(jī) 2021年27期
關(guān)鍵詞:數(shù)據(jù)項(xiàng)跨平臺(tái)文檔

賀偉雄,汪穎,黃曉夏

(武警部隊(duì)研究院,北京 100012)

0 引言

指標(biāo)作為一種可持續(xù)的評(píng)估工具,通過將復(fù)雜數(shù)據(jù)總結(jié)和濃縮為有意義的信息,可以方便地跟蹤一個(gè)時(shí)間段的進(jìn)展情況,并能幫助用戶發(fā)現(xiàn)可能存在的問題和關(guān)聯(lián)因素[1]。指標(biāo)廣泛用于各類研究報(bào)告,以確定政策方向并回應(yīng)公眾關(guān)切[2]。由于單一指標(biāo)只能反映研究對(duì)象某方面的情況,難以捕捉多維現(xiàn)象,因此指標(biāo)體系的使用頻率越來越高[3]。一般來說,指標(biāo)體系是匯聚各維度的指標(biāo)并基于特定公式進(jìn)行構(gòu)建,因此能夠更好地總結(jié)復(fù)雜現(xiàn)象,著名的指標(biāo)體系包括聯(lián)合國可持續(xù)發(fā)展目標(biāo)[4]和千年生態(tài)系統(tǒng)評(píng)估報(bào)告[5]等。

在構(gòu)建指標(biāo)體系的過程中,指標(biāo)項(xiàng)通常分為若干個(gè)層級(jí),上層指標(biāo)項(xiàng)依賴多個(gè)下層指標(biāo)項(xiàng),而下層指標(biāo)項(xiàng)還需要通過數(shù)據(jù)項(xiàng)計(jì)算得到結(jié)果,指標(biāo)項(xiàng)和數(shù)據(jù)項(xiàng)之間復(fù)雜的依賴關(guān)系,使得每一次修改都會(huì)引起指標(biāo)聯(lián)動(dòng),使得改動(dòng)成本迅速增加。為了全面評(píng)價(jià)社會(huì)經(jīng)濟(jì)體的建設(shè)發(fā)展水平,需要構(gòu)建數(shù)以千計(jì)的指標(biāo),極大地推高了構(gòu)建與修改成本。因此,在構(gòu)建大規(guī)模指標(biāo)體系的過程中,如何使用軟件自動(dòng)化方法讓指標(biāo)自動(dòng)聯(lián)動(dòng),從而保證指標(biāo)體系的一致性,是亟待解決的難題。目前學(xué)者們對(duì)指標(biāo)體系的研究重點(diǎn)主要集中在如何構(gòu)建某一領(lǐng)域的指標(biāo)體系,例如網(wǎng)絡(luò)輿情指標(biāo)體系[6]、指揮信息系統(tǒng)指標(biāo)體系[7]、城市生態(tài)文明建設(shè)指標(biāo)體系[8]等,但很少涉及到指標(biāo)體系的一致性問題。

針對(duì)以上問題,本文在分析指標(biāo)體系通用結(jié)構(gòu)的基礎(chǔ)上,從數(shù)據(jù)關(guān)系一致性和文本語義一致性兩方面提出指標(biāo)體系整體一致性的概念。為構(gòu)建實(shí)用的指標(biāo)構(gòu)建系統(tǒng),分析系統(tǒng)功能需求,比較常用的跨平臺(tái)技術(shù),設(shè)計(jì)系統(tǒng)框架和數(shù)據(jù)庫結(jié)構(gòu),并采用Electron和React.js結(jié)合實(shí)現(xiàn)跨平臺(tái)指標(biāo)體系構(gòu)建系統(tǒng)的各個(gè)功能模塊。

1 指標(biāo)體系整體一致性定義

指標(biāo)體系通常包括指標(biāo)項(xiàng)和數(shù)據(jù)項(xiàng)兩部分[9]。指標(biāo)項(xiàng)由名稱、釋義、算法和所需數(shù)據(jù)等構(gòu)成,數(shù)據(jù)則由數(shù)據(jù)項(xiàng)名稱、來源、量綱、取值范圍等構(gòu)成。指標(biāo)根據(jù)所處層級(jí)的不同分為一級(jí)指標(biāo)、二級(jí)指標(biāo)等,上層指標(biāo)項(xiàng)依賴于下層指標(biāo)項(xiàng),所有的指標(biāo)項(xiàng)都包含若干數(shù)據(jù)項(xiàng),各組成部分的關(guān)系如圖1所示,圖中箭頭表示依賴關(guān)系。

圖1 指標(biāo)體系結(jié)構(gòu)圖

在構(gòu)建指標(biāo)體系的過程中,為保證體系的科學(xué)性、可測(cè)性、導(dǎo)向性[6],需要經(jīng)常修改指標(biāo)項(xiàng)和數(shù)據(jù)項(xiàng)。例如,數(shù)據(jù)項(xiàng)如果難以獲取,則需要?jiǎng)h除該數(shù)據(jù)項(xiàng)。如此一來,所有使用該數(shù)據(jù)項(xiàng)的指標(biāo)均不可用,并且所有依賴這些指標(biāo)項(xiàng)的上級(jí)指標(biāo)也要進(jìn)行修改,以保證依賴的正確性。為了構(gòu)建科學(xué)完備的指標(biāo)體系,將指標(biāo)體系“整體一致性”定義為:指標(biāo)體系中所有指標(biāo)項(xiàng)之間,以及指標(biāo)項(xiàng)與數(shù)據(jù)項(xiàng)之間正確的依賴關(guān)系。

定義中所指的依賴關(guān)系包含兩層意思:①數(shù)據(jù)關(guān)系一致性約束,即所有使用到的指標(biāo)和數(shù)據(jù)必須都存在,不能存在已刪除的數(shù)據(jù)項(xiàng)還被某一指標(biāo)項(xiàng)使用的情況,并且同一指標(biāo)和數(shù)據(jù)項(xiàng)在指標(biāo)體系顯示和使用時(shí),它的名稱、含義、計(jì)量單位等屬性必須一致。②文本語義一致性約束,即所有指標(biāo)和數(shù)據(jù)項(xiàng)修改前和修改后的含義要基本一致。因?yàn)槿绻x完全改變,那么所有依賴這些項(xiàng)目的指標(biāo)也會(huì)變得不可靠。

2 指標(biāo)體系構(gòu)建系統(tǒng)需求分析

2.1 功能性需求

指標(biāo)體系構(gòu)建系統(tǒng)需要完成的主要功能有兩項(xiàng),分別是數(shù)據(jù)項(xiàng)和指標(biāo)項(xiàng)功能。

(1)數(shù)據(jù)項(xiàng)功能。主要完成數(shù)據(jù)的“CRUD”(Create/Retrieve/Update/Delete,即創(chuàng)建、讀取、修改、刪除),刪除時(shí)激活數(shù)據(jù)關(guān)系一致性約束,修改時(shí)激活文本語義一致性約束。

(2)指標(biāo)項(xiàng)功能。主要進(jìn)行指標(biāo)的“CRUD”,與數(shù)據(jù)項(xiàng)類似,刪除和修改指標(biāo)時(shí)都會(huì)激活一致性檢查。由于指標(biāo)體系設(shè)計(jì)完畢后,最終還要形成文檔進(jìn)行展示,因此指標(biāo)項(xiàng)功能需要以Word的形式導(dǎo)出為指標(biāo)文檔。

2.2 非功能性需求

功能性需求只是系統(tǒng)的一部分。設(shè)計(jì)和實(shí)現(xiàn)系統(tǒng)時(shí),還需要考慮用戶體驗(yàn)、平臺(tái)兼容性等非功能性需求。

(1)良好的用戶體驗(yàn)。在設(shè)計(jì)用戶界面時(shí),需要把握最基本的“對(duì)齊”和“對(duì)比”原則。在此基礎(chǔ)上,各界面組件的距離按照“親密性”原則進(jìn)行把握,即如果信息之間關(guān)聯(lián)性越高,它們之間的距離就應(yīng)該越接近,也越像一個(gè)視覺單元。同時(shí),相似的功能盡量采用相同的元素、顏色、格式進(jìn)行實(shí)現(xiàn),以減少用戶的學(xué)習(xí)成本[10]。

(2)跨平臺(tái)兼容性。就目前桌面系統(tǒng)情況來看,微軟的Windows受眾最廣,而國產(chǎn)操作系統(tǒng)都是基于Linux系統(tǒng)進(jìn)行開發(fā)??紤]到很多指標(biāo)體系的構(gòu)建事關(guān)國民經(jīng)濟(jì)情況,在國產(chǎn)操作系統(tǒng)中使用的可能性很大,因此軟件需要具備跨平臺(tái)功能。

3 指標(biāo)體系構(gòu)建系統(tǒng)設(shè)計(jì)

3.1 技術(shù)選型

從需求分析可知,客戶端軟件需要跨平臺(tái)運(yùn)行。目前常用的跨平臺(tái)軟件方案主要有Qt框架(C++語言),Swing(Java語言)和Electron框架(Ja?vaScript語言)。比較而言,Qt框架生成的界面和業(yè)務(wù)邏輯耦合度太強(qiáng),維護(hù)成本高;Swing原生的用戶界面(user interface,UI)控件十分有限,難以開發(fā)用戶友好的軟件,而Electron采用HTML和CSS構(gòu)建用戶界面,可以與React.js等前端框架結(jié)合,實(shí)現(xiàn)用戶界面和業(yè)務(wù)邏輯的分離,方便后期維護(hù)??紤]到指標(biāo)體系構(gòu)建系統(tǒng)的業(yè)務(wù)邏輯并不復(fù)雜,但其交互界面繁復(fù)、各類圖表需動(dòng)態(tài)生成,對(duì)前端展現(xiàn)要求很高?;谝陨峡紤],選用Electron和React.js技術(shù)相結(jié)合進(jìn)行開發(fā)。

3.2 系統(tǒng)框架設(shè)計(jì)

系統(tǒng)的整體結(jié)構(gòu)如圖2所示,共分為視圖UI層,業(yè)務(wù)邏輯層和數(shù)據(jù)持久化層。其中視圖UI層使用前端框架React.js,該層運(yùn)行在Electron內(nèi)置的Chrome瀏覽器中;業(yè)務(wù)邏輯層則使用Node.js編寫,負(fù)責(zé)轉(zhuǎn)發(fā)頁面請(qǐng)求,視圖層和業(yè)務(wù)層封裝成React.js組件(Component)進(jìn)行通信;數(shù)據(jù)持久化層采用JavaScript實(shí)現(xiàn)的NeDB數(shù)據(jù)庫,該數(shù)據(jù)庫利用異步功能實(shí)現(xiàn)非阻塞式數(shù)據(jù)訪問。在此基礎(chǔ)上,系統(tǒng)還有三項(xiàng)通用模塊,分別是一致性檢查模塊、文本相似度計(jì)算模塊和指標(biāo)文檔導(dǎo)出模塊,為所有業(yè)務(wù)提供支持。

圖2 指標(biāo)體系構(gòu)建系統(tǒng)整體框架

3.3 數(shù)據(jù)庫設(shè)計(jì)

由需求分析可知,系統(tǒng)核心功能主要是指標(biāo)項(xiàng)和數(shù)據(jù)項(xiàng),因此各需要一張數(shù)據(jù)表存儲(chǔ)相關(guān)數(shù)據(jù)。由于指標(biāo)項(xiàng)與數(shù)據(jù)項(xiàng)是多對(duì)多的關(guān)系,為了進(jìn)行關(guān)聯(lián),還需要單獨(dú)設(shè)計(jì)一張關(guān)聯(lián)表。因此,核心數(shù)據(jù)表主要包括指標(biāo)項(xiàng)表、數(shù)據(jù)項(xiàng)表和指標(biāo)數(shù)據(jù)關(guān)系表。核心數(shù)據(jù)表之間的關(guān)聯(lián)關(guān)系如圖3所示。

圖3 數(shù)據(jù)庫實(shí)體聯(lián)系圖

4 指標(biāo)體系構(gòu)建系統(tǒng)實(shí)現(xiàn)

4.1 指標(biāo)項(xiàng)功能實(shí)現(xiàn)

指標(biāo)項(xiàng)和數(shù)據(jù)項(xiàng)實(shí)現(xiàn)的功能類似,都以CRUD為主。由于指標(biāo)項(xiàng)屬性較多,這里主要以指標(biāo)項(xiàng)功能為例進(jìn)行探討。在設(shè)計(jì)UI時(shí),首先實(shí)現(xiàn)下層組件,包括指標(biāo)控制欄組件IndicatorCon?trol,數(shù)據(jù)表格組件IndicatorTable和指標(biāo)表單組件IndicatorForm,每個(gè)組件都繼承React.Component類,以支持JSX語法。JSX是一種JavaScript的語法擴(kuò)展,與傳統(tǒng)的JavaScript相比,它的語法簡單,與HTML類似,更適合編寫UI界面。下層組件完成后利用頂層的Indicator組件將所有組件進(jìn)行組合,形成整個(gè)指標(biāo)項(xiàng)頁面,指標(biāo)頁面的JSX結(jié)構(gòu)如代碼段1所示。

代碼段1指標(biāo)頁面的JSX結(jié)構(gòu)

從代碼段1中可以看出,通過JSX,可以把回調(diào)函數(shù)利用組件屬性進(jìn)行傳遞,例如re?freshTable就是一個(gè)刷新頁面的回調(diào)函數(shù)。通過綁定回調(diào)函數(shù),有利于反轉(zhuǎn)控制邏輯,將所有的信息流匯集到Indicator組件統(tǒng)一進(jìn)行控制,方便維護(hù)與擴(kuò)展。

保存數(shù)據(jù)時(shí),由于NeDB采用的是回調(diào)函數(shù)進(jìn)行非阻塞式調(diào)用,為了避免進(jìn)入“回調(diào)地獄”[11],將其包裝為Promise實(shí)現(xiàn),即返回值為Promise對(duì)象,該對(duì)象由resolve和reject兩個(gè)回調(diào)函數(shù)構(gòu)成,如果數(shù)據(jù)庫查找操作時(shí)出現(xiàn)錯(cuò)誤,則調(diào)用reject,反之則調(diào)用resolve。利用Async/Await關(guān)鍵字可以近似于同步方式使用數(shù)據(jù)庫功能,提高代碼質(zhì)量。最終實(shí)現(xiàn)的頁面樣式如圖4所示。

圖4 指標(biāo)項(xiàng)頁面樣式

4.2 文本相似度模塊實(shí)現(xiàn)

文本相似度主要依據(jù)“詞袋模型”[12]進(jìn)行計(jì)算,主要依據(jù)不同文本中出現(xiàn)相同詞的數(shù)量來計(jì)算相似度,相似度定義為:

其中,A和B分別代表需要計(jì)算相似度的文本分詞以后的詞語集合,size(?)運(yùn)算符代表計(jì)算集合大小,simA,B代表A和B的相似度。例如,考慮下面兩個(gè)文本:

指標(biāo)1:公眾號(hào)是否開通支付功能

指標(biāo)2:移動(dòng)支付總筆數(shù)

分詞之后,指標(biāo)1的詞語集合為{公眾,號(hào),是否,開通,支付,功能},size為6;指標(biāo)2的詞語集合為{移動(dòng),支付,總,筆,數(shù)},size為5。兩者的交集為{支付},size為1,根據(jù)公式1可以計(jì)算相似度為0.19。

從文本相似度的定義可以看出,相似度計(jì)算核心功能在于文本分詞。目前,Node.js提供了開源的中文分詞模塊node-segment,經(jīng)過分詞之后的文本可利用公式1計(jì)算相似度。系統(tǒng)在實(shí)現(xiàn)時(shí),將其包裝為TextUtil工具類以方便使用,并且采用單例設(shè)計(jì)模式以提高多次調(diào)用的性能。

4.3 一致性檢查模塊實(shí)現(xiàn)

系統(tǒng)采用“事件”驅(qū)動(dòng)模式,用戶在修改或刪除指標(biāo)數(shù)據(jù)項(xiàng)時(shí)會(huì)觸發(fā)“一致性”檢查。刪除時(shí),會(huì)查找所有依賴項(xiàng),因?yàn)閿?shù)據(jù)庫中所有的依賴關(guān)系均存儲(chǔ)在IndicatorRelation表中,因此只需要在該表中搜索相應(yīng)所需數(shù)據(jù)Id,如果存在搜索結(jié)果,證明還有依賴,則不允許刪除。修改時(shí),需要調(diào)用文本相似度檢查模塊,如果相似度小于某個(gè)閾值,則提示與原有項(xiàng)目不一致,建議進(jìn)行新增。

4.4 文檔導(dǎo)出模塊實(shí)現(xiàn)

指標(biāo)體系構(gòu)建完成后,需要將設(shè)計(jì)好的指標(biāo)體系形成文檔以方便說明和展示。系統(tǒng)主要實(shí)現(xiàn)了根據(jù)已有Word模板生成對(duì)應(yīng)的指標(biāo)文檔,生成原理是高版本W(wǎng)ord軟件使用的.docx文件,其本質(zhì)是一個(gè)zip格式的壓縮包,文檔內(nèi)容和格式在壓縮包中使用xml文件進(jìn)行存儲(chǔ)。因此,在已有.docx文件模板的基礎(chǔ)上,只需要解析其中的XML文件并替換內(nèi)部的文字即可形成所需要的文檔。

5 結(jié)語

本文重點(diǎn)探討了基于整體一致性的跨平臺(tái)指標(biāo)體系構(gòu)建系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。根據(jù)對(duì)指標(biāo)體系通用結(jié)構(gòu)的分析,從數(shù)據(jù)關(guān)系和文本語義兩方面定義了指標(biāo)體系整體一致性概念。在此基礎(chǔ)上,分析了指標(biāo)體系構(gòu)建系統(tǒng)需求,從技術(shù)選型、框架設(shè)計(jì)和數(shù)據(jù)庫設(shè)計(jì)三個(gè)方面進(jìn)行了詳細(xì)設(shè)計(jì),最后實(shí)現(xiàn)了系統(tǒng)功能,主要包括指標(biāo)項(xiàng)功能和文本相似度、一致性檢查和文檔導(dǎo)出模塊。從最終效果來看,無論是新增、修改還是刪除,均能有效地保證體系的整體一致性,并通過可視化方法幫助研究人員更好地開發(fā)大規(guī)模指標(biāo)體系。

猜你喜歡
數(shù)據(jù)項(xiàng)跨平臺(tái)文檔
有人一聲不吭向你扔了個(gè)文檔
一種多功能抽簽選擇器軟件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
甘肅科技(2020年19期)2020-03-11 09:42:42
非完整數(shù)據(jù)庫Skyline-join查詢*
基于Python的Asterix Cat 021數(shù)據(jù)格式解析分析與實(shí)現(xiàn)
跨平臺(tái)APEX接口組件的設(shè)計(jì)與實(shí)現(xiàn)
基于RI碼計(jì)算的Word復(fù)制文檔鑒別
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
基于QT的跨平臺(tái)輸電鐵塔監(jiān)控終端軟件設(shè)計(jì)與實(shí)現(xiàn)
基于OPC跨平臺(tái)通信的電機(jī)監(jiān)測(cè)與診斷系統(tǒng)
基于B/S的跨平臺(tái)用戶界面可配置算法研究
临清市| 阿克陶县| 垦利县| 墨玉县| 迭部县| 民丰县| 赤城县| 六盘水市| 大渡口区| 济源市| 翁牛特旗| 庆阳市| 金乡县| 大宁县| 西青区| 社旗县| 囊谦县| 阳信县| 南投县| 柳河县| 通山县| 金昌市| 东乌珠穆沁旗| 揭东县| 武汉市| 嵊泗县| 安义县| 虹口区| 武川县| 灵寿县| 玉树县| 芒康县| 长武县| 比如县| 阿拉善右旗| 伊宁市| 德安县| 连山| 家居| 来凤县| 广东省|