彭順順,周傳生
(沈陽師范大學(xué) 軟件學(xué)院,遼寧 沈陽 110034)
圖形界面是連接用戶和計(jì)算機(jī)的紐帶,用戶不僅要求圖形界面功能豐富、操作簡單,還在感官層次上要求操作的舒適感和愉快感[1],因此,在較短時(shí)間內(nèi)開發(fā)出滿足用戶需求的圖形界面成為企業(yè)競爭的焦點(diǎn)。目前,圖形界面的開發(fā)是在集成開發(fā)環(huán)境下采用某種編程語言編寫功能代碼實(shí)現(xiàn)的[2]。這種開發(fā)方式存在以下問題:(1)圖形界面與功能代碼的高耦合[3],圖形界面需求的改變會(huì)導(dǎo)致功能代碼重復(fù)繁瑣的修改,影響了開發(fā)效率,延遲軟件發(fā)布時(shí)間;(2)圖形界面重復(fù)利用性差[4],已經(jīng)發(fā)布的圖形界面不能被其他軟件使用,即使是功能相似的軟件,圖形界面的重復(fù)使用也會(huì)導(dǎo)致開發(fā)人員根據(jù)客戶的需求重新設(shè)定圖形界面的布局和控件的功能,增加了開發(fā)人員的勞動(dòng)量[5]。
隨著數(shù)據(jù)庫的潛力被無限發(fā)掘,越來越多的軟件以數(shù)據(jù)為中心完成更多的任務(wù),進(jìn)入了數(shù)據(jù)驅(qū)動(dòng)時(shí)代[6-7]。數(shù)據(jù)驅(qū)動(dòng)方法借助數(shù)據(jù)交換工具(例如XML)以數(shù)據(jù)為中心,根據(jù)數(shù)據(jù)的變動(dòng)推動(dòng)系統(tǒng)的運(yùn)行[8-9]。數(shù)據(jù)驅(qū)動(dòng)方法已經(jīng)應(yīng)用到軟件測試的設(shè)計(jì)中,這種方法使測試腳本和測試數(shù)據(jù)分離,通過測試數(shù)據(jù)的變動(dòng)驅(qū)使測試的運(yùn)行,有效地縮短了軟件開發(fā)周期,減少了開發(fā)人員的勞動(dòng)量。
為解決圖形界面開發(fā)存在的問題,把開發(fā)人員從繁瑣的編碼中解放出來,提出了基于數(shù)據(jù)驅(qū)動(dòng)的圖形界面開發(fā)方案。開發(fā)方案以XML形式描述圖形界面的信息,根據(jù)XML提供的數(shù)據(jù)對(duì)界面控件進(jìn)行布局和響應(yīng),組裝滿足需求的圖形界面。
基于數(shù)據(jù)驅(qū)動(dòng)的圖形界面開發(fā)方案是以界面控件為對(duì)象,使用XML描述圖形界面信息,由一個(gè)可重復(fù)利用的開發(fā)平臺(tái)對(duì)圖形界面數(shù)據(jù)進(jìn)行轉(zhuǎn)換、提取、分析、處理等操作,推動(dòng)系統(tǒng)的運(yùn)行,從而實(shí)現(xiàn)描述的功能。
根據(jù)數(shù)據(jù)驅(qū)動(dòng)的原理,基于數(shù)據(jù)驅(qū)動(dòng)的圖形界面開發(fā)方案有以下幾個(gè)步驟:
(1)根據(jù)圖形界面的動(dòng)態(tài)需求,基于數(shù)據(jù)驅(qū)動(dòng)的圖形界面開發(fā)方案利用現(xiàn)有的界面轉(zhuǎn)換工具把圖形界面控件信息編寫到圖形界面文件中,圖形界面文件以XML形式描述;
(2)綜合、抽象圖形界面控件信息,根據(jù)圖形界面控件信息初始化界面控件庫;
(3)讀取并分析圖形界面文件中界面控件的外觀、布局、行為等數(shù)據(jù);
(4)根據(jù)獲得的數(shù)據(jù),調(diào)用界面控件庫里的控件,設(shè)計(jì)圖形界面控件的功能和布局,組合圖形界面。
從基于數(shù)據(jù)驅(qū)動(dòng)的圖形界面開發(fā)方案的步驟可以看出,基于數(shù)據(jù)驅(qū)動(dòng)的圖形界面開發(fā)方案由界面規(guī)范、功能界面、界面轉(zhuǎn)換工具、圖形界面文件、界面控件庫、數(shù)據(jù)處理模塊、運(yùn)行環(huán)境幾個(gè)模塊組成,如圖1所示。
界面規(guī)范是描述操作的規(guī)定和要求,對(duì)界面輸入、界面信息轉(zhuǎn)換、界面數(shù)據(jù)的處理和界面布局等操作具有指導(dǎo)作用。
功能界面是由多個(gè)簡單的界面控件組成,每個(gè)界面控件都有其基本屬性。界面控件的屬性包括大小、顏色、位置、字體類型等,這些屬性可以是靜態(tài)的,也可以是動(dòng)態(tài)的,體現(xiàn)了界面控件的外觀、布局和行為。
界面轉(zhuǎn)換工具根據(jù)功能界面提供的信息編寫圖形界面文件。
圖形界面文件是用來描述圖形界面信息的,包括圖形界面基本信息和界面控件信息,其文件結(jié)構(gòu)如圖2所示。
中醫(yī)診療在臨床實(shí)踐中積累了很多有價(jià)值的經(jīng)驗(yàn),主要著眼于病因進(jìn)行辨證施治。根據(jù)全國高等中醫(yī)藥院校規(guī)劃教材《中醫(yī)耳鼻咽喉科學(xué)》[2,3],將本病分為5個(gè)證型:肺經(jīng)風(fēng)熱,膽腑郁熱,脾胃濕熱,肺氣虛寒和脾氣虛弱型。對(duì)肺經(jīng)風(fēng)熱型鼻淵,主要采用疏風(fēng)散邪、宣肺通竅的治法,方藥如銀翹散、辛夷清肺飲;膽腑郁熱型,以清泄膽熱、利濕通竅為主,方藥如龍膽瀉肝湯或當(dāng)歸龍薈丸等加減;脾胃濕熱型,以清熱利濕、化濁通竅為主,方藥可選用連樸飲或甘露消毒丹等加減;對(duì)肺氣虛寒型,以溫補(bǔ)肺臟、散寒通竅為主,藥用玉屏風(fēng)散或溫肺止流丹加減;脾氣虛弱型,以健脾利濕、益氣通竅為主,方藥如參苓白術(shù)散加減。
圖1 基于數(shù)據(jù)驅(qū)動(dòng)的圖形界面開發(fā)方案的總體框架
圖2 圖形界面文件的結(jié)構(gòu)圖
數(shù)據(jù)處理模塊負(fù)責(zé)圖形界面信息的讀取、分析和顯示。以下是數(shù)據(jù)處理模塊完成的主要操作:
(1)采用工廠模式獲取DOM解析器,這種模式將應(yīng)用程序代碼和DOM解析器徹底分離開來,實(shí)現(xiàn)更好的解耦;
(2)DOM解析器解析描述圖形界面信息的XML文檔,獲取界面控件信息,并按照一定的機(jī)制將界面控件信息放入到迭代器中;
(3)數(shù)據(jù)處理模塊識(shí)別界面控件信息,為了更好地識(shí)別界面控件類型,定義了界面控件庫;
(4)當(dāng)系統(tǒng)運(yùn)行時(shí),數(shù)據(jù)處理模塊依次從迭代器中獲得界面控件信息,根據(jù)界面控件信息設(shè)定界面控件的顏色、大小、位置等屬性,形成圖形界面。
界面控件庫封裝了控件集和圖形庫,在構(gòu)造界面控件庫時(shí),首先分析界面控件的外觀、功能等信息,抽象分離這些信息找出類似點(diǎn),根據(jù)類似點(diǎn)將界面控件分類;其次對(duì)每類的界面控件來說,將界面控件具有的共同信息以編碼形式保存下來,初始化界面控件庫,通過編程語言的繼承方式保存界面控件的共性;最后,設(shè)定界面控件信息的接口,當(dāng)數(shù)據(jù)處理模塊識(shí)別界面控件并對(duì)界面控件設(shè)定時(shí),能保證界面控件之間的無縫連接,不需要重新設(shè)定界面控件信息。
基于數(shù)據(jù)驅(qū)動(dòng)的圖形界面開發(fā)方案將圖形界面信息封裝到XML描述文件中,把處理XML描述文件的操作以代碼形式顯示出來,這樣不僅使圖形界面與功能代碼分離,便于圖形界面的維護(hù),還提高了圖形界面的重復(fù)利用性。當(dāng)需求發(fā)生變化時(shí),圖形界面文件隨之發(fā)生改變,數(shù)據(jù)處理模塊會(huì)重新處理圖形界面數(shù)據(jù),從而實(shí)現(xiàn)圖形界面的功能,不需要手動(dòng)修改功能代碼。這種方法使開發(fā)人員的主要精力放在了數(shù)據(jù)的獲取和分析上,減少了開發(fā)人員的勞動(dòng)量,提高了開發(fā)效率。由于圖形界面信息是用XML描述的,便于圖形界面的擴(kuò)展。
(1)圖形界面文件的結(jié)構(gòu)類似一棵樹,是從根元素開始構(gòu)造的;
(2)圖形界面文件是對(duì)圖形控件的描述,如果圖形界面文件包括多個(gè)圖形控件,就要對(duì)多個(gè)圖形控件進(jìn)行描述;
(3)圖形控件的信息封裝在一個(gè)自定義的標(biāo)簽內(nèi),在這個(gè)自定義的標(biāo)簽內(nèi),可以定義圖形控件的類型、名稱、外觀、功能等子標(biāo)簽;
(4)圖形界面文件不僅顯示了界面控件的信息,還要顯示界面控件之間的關(guān)系,以及定義界面控件響應(yīng)的對(duì)象。下面的XML文檔是對(duì)按鈕和標(biāo)簽的描述:
處理圖形界面信息時(shí),數(shù)據(jù)處理模塊要解析XML圖形界面文件,DOM(文檔對(duì)象模型)定義了訪問和操作XML圖形界面文檔的方式。獲取DOM解析器并解析XML圖形界面文件的步驟如下:
(1)調(diào)用 DOM解析器工廠類的 newInstance()方法獲取解析器工廠對(duì)象;
(2)調(diào)用 DOM 解析器工廠的 newDocumentBuilder()方法獲取DOM解析器,將XML數(shù)據(jù)轉(zhuǎn)換為常駐內(nèi)存的樹狀結(jié)構(gòu);
(3)將 XML文檔解析成 Document對(duì)象,讀取 XML圖形界面文件里的數(shù)據(jù);
(4)根據(jù) getDocumentElement()方法獲得 XML 文件的根節(jié)點(diǎn);
(5)根據(jù)樹狀結(jié)構(gòu)的層次嵌套結(jié)構(gòu),結(jié)合遞歸方式依次建立節(jié)點(diǎn)對(duì)象,并將節(jié)點(diǎn)對(duì)象存放在迭代器內(nèi);
(6)通過循環(huán)方式訪問節(jié)點(diǎn)對(duì)象,獲得節(jié)點(diǎn)數(shù)據(jù),即界面控件屬性。
DOM解析XML圖形界面文件流程圖如圖3所示,得到界面控件信息后,數(shù)據(jù)處理模塊根據(jù)界面控件信息判斷界面控件類型,為界面控件創(chuàng)建界面控件對(duì)象,通過界面控件對(duì)象把界面控件信息設(shè)置到功能代碼中,運(yùn)行功能代碼,實(shí)現(xiàn)圖形界面。
圖3 DOM解析流程圖
界面控件庫是由描述界面控件外觀、類型、行為等的界面控件和管理這些界面控件的控件組成。界面控件的外觀決定了圖形界面帶給用戶的愉悅感和可操作性,界面控件的類型決定了圖形界面功能的多樣性,界面控件的行為決定了圖形界面的動(dòng)態(tài)響應(yīng),圖形界面不僅僅是靜態(tài)的,也可以是動(dòng)態(tài)的,例如:鼠標(biāo)在按鈕上時(shí),按鈕的顏色是紅色的,鼠標(biāo)離開按鈕后,按鈕的顏色就是藍(lán)色的。
圖形界面的控件無非是窗體、面板、標(biāo)簽控件與圖標(biāo)、按鈕控件、文本控件、列表控件、進(jìn)度條等類型,界面 控 件 的 屬 性 也 就 是 name、text、size、height、width 等 性質(zhì),界面控件庫可以包括這些基本信息。構(gòu)造界面控件庫的步驟如下:
(1)為圖形界面的每種類型的界面控件創(chuàng)建一個(gè)類,并且設(shè)置這些類繼承的基類,將這些類放到一個(gè)文件夾中;
(2)在類的函數(shù)中添加相應(yīng)的響應(yīng)事件,例如鍵盤,keyPressed()是鍵盤上按鍵按下時(shí)觸發(fā)的事件,keyReleased()是鍵盤上按鍵釋放時(shí)觸發(fā)的事件。
當(dāng)應(yīng)用程序運(yùn)行時(shí),數(shù)據(jù)處理模塊讀取圖形界面文件的數(shù)據(jù),通過反射機(jī)制調(diào)用界面控件庫中的組件,設(shè)置組件的屬性,完成圖形界面的開發(fā)。
圖形界面開發(fā)已經(jīng)成為軟件開發(fā)的重要組成部分,對(duì)于目前圖形界面開發(fā)存在的問題,如何提高圖形界面重用性和降低圖形界面與功能代碼的耦合度對(duì)于企業(yè)很重要。基于數(shù)據(jù)驅(qū)動(dòng)的圖形界面開發(fā)方案將界面控件信息以XML文件形式描述,圍繞對(duì)界面控件信息的解析、處理等操作驅(qū)使系統(tǒng)運(yùn)行。這種方式實(shí)現(xiàn)了以數(shù)據(jù)驅(qū)動(dòng)軟件運(yùn)行,數(shù)據(jù)與功能代碼的分離,當(dāng)需求發(fā)生變化時(shí),不需要修改源代碼,減小了開發(fā)人員的勞動(dòng)量。同時(shí),XML具有較高的擴(kuò)展性,用XML描述圖形界面信息,便于后期的擴(kuò)展。
[1]言金剛,樊東平,劉又誠.基于XML的統(tǒng)一用戶界面描述[J].計(jì)算機(jī)工程,2002,28(6):83-85.
[2]杭欣靜,蔣澤軍,王麗芳.基于XML的用戶界面動(dòng)態(tài)生成框架的設(shè)計(jì)與實(shí)現(xiàn)[J].科學(xué)技術(shù)與工程,2009,9(9):2492-2495.
[3]張敦華.一種界面自動(dòng)生成技術(shù)[J].計(jì)算機(jī)與數(shù)字工程,2004,32(5):20-24.
[4]李松.一種人機(jī)界面動(dòng)態(tài)調(diào)度技術(shù)[J].微處理機(jī),2012,33(1):63-66.
[5]靳京,桑楠,劉一.基于XML的嵌入式Linux系統(tǒng)用戶界面定制[J].電子科技大學(xué)學(xué)報(bào),2007,36(3):510-513.
[6]侯忠生,許建新.數(shù)據(jù)驅(qū)動(dòng)控制理論及方法的回顧和展望[J].自動(dòng)化學(xué)報(bào),2009,35(6):650-667.
[7]REDMOND M,BAVEJA A.A data-driven software tool for enabling cooperative information sharing among police departments[J].European Journal of Operational Research,2002,141(3):660-678.
[8]梁瑋.數(shù)據(jù)驅(qū)動(dòng)設(shè)計(jì)模式的研究及在OTA開發(fā)工具中的應(yīng)用[D].北京:北京郵電大學(xué),2009.
[9]徐陋.數(shù)據(jù)驅(qū)動(dòng)設(shè)計(jì)模式的研究及應(yīng)用[D].廣州:暨南大學(xué),2006.
網(wǎng)絡(luò)安全與數(shù)據(jù)管理2013年19期