彭順順,周傳生
(沈陽師范大學 軟件學院,遼寧 沈陽 110034)
圖形界面是連接用戶和計算機的紐帶,用戶不僅要求圖形界面功能豐富、操作簡單,還在感官層次上要求操作的舒適感和愉快感[1],因此,在較短時間內開發出滿足用戶需求的圖形界面成為企業競爭的焦點。目前,圖形界面的開發是在集成開發環境下采用某種編程語言編寫功能代碼實現的[2]。這種開發方式存在以下問題:(1)圖形界面與功能代碼的高耦合[3],圖形界面需求的改變會導致功能代碼重復繁瑣的修改,影響了開發效率,延遲軟件發布時間;(2)圖形界面重復利用性差[4],已經發布的圖形界面不能被其他軟件使用,即使是功能相似的軟件,圖形界面的重復使用也會導致開發人員根據客戶的需求重新設定圖形界面的布局和控件的功能,增加了開發人員的勞動量[5]。
隨著數據庫的潛力被無限發掘,越來越多的軟件以數據為中心完成更多的任務,進入了數據驅動時代[6-7]。數據驅動方法借助數據交換工具(例如XML)以數據為中心,根據數據的變動推動系統的運行[8-9]。數據驅動方法已經應用到軟件測試的設計中,這種方法使測試腳本和測試數據分離,通過測試數據的變動驅使測試的運行,有效地縮短了軟件開發周期,減少了開發人員的勞動量。
為解決圖形界面開發存在的問題,把開發人員從繁瑣的編碼中解放出來,提出了基于數據驅動的圖形界面開發方案。開發方案以XML形式描述圖形界面的信息,根據XML提供的數據對界面控件進行布局和響應,組裝滿足需求的圖形界面。
基于數據驅動的圖形界面開發方案是以界面控件為對象,使用XML描述圖形界面信息,由一個可重復利用的開發平臺對圖形界面數據進行轉換、提取、分析、處理等操作,推動系統的運行,從而實現描述的功能。
根據數據驅動的原理,基于數據驅動的圖形界面開發方案有以下幾個步驟:
(1)根據圖形界面的動態需求,基于數據驅動的圖形界面開發方案利用現有的界面轉換工具把圖形界面控件信息編寫到圖形界面文件中,圖形界面文件以XML形式描述;
(2)綜合、抽象圖形界面控件信息,根據圖形界面控件信息初始化界面控件庫;
(3)讀取并分析圖形界面文件中界面控件的外觀、布局、行為等數據;
(4)根據獲得的數據,調用界面控件庫里的控件,設計圖形界面控件的功能和布局,組合圖形界面。
從基于數據驅動的圖形界面開發方案的步驟可以看出,基于數據驅動的圖形界面開發方案由界面規范、功能界面、界面轉換工具、圖形界面文件、界面控件庫、數據處理模塊、運行環境幾個模塊組成,如圖1所示。
界面規范是描述操作的規定和要求,對界面輸入、界面信息轉換、界面數據的處理和界面布局等操作具有指導作用。
功能界面是由多個簡單的界面控件組成,每個界面控件都有其基本屬性。界面控件的屬性包括大小、顏色、位置、字體類型等,這些屬性可以是靜態的,也可以是動態的,體現了界面控件的外觀、布局和行為。
界面轉換工具根據功能界面提供的信息編寫圖形界面文件。
圖形界面文件是用來描述圖形界面信息的,包括圖形界面基本信息和界面控件信息,其文件結構如圖2所示。
中醫診療在臨床實踐中積累了很多有價值的經驗,主要著眼于病因進行辨證施治。根據全國高等中醫藥院校規劃教材《中醫耳鼻咽喉科學》[2,3],將本病分為5個證型:肺經風熱,膽腑郁熱,脾胃濕熱,肺氣虛寒和脾氣虛弱型。對肺經風熱型鼻淵,主要采用疏風散邪、宣肺通竅的治法,方藥如銀翹散、辛夷清肺飲;膽腑郁熱型,以清泄膽熱、利濕通竅為主,方藥如龍膽瀉肝湯或當歸龍薈丸等加減;脾胃濕熱型,以清熱利濕、化濁通竅為主,方藥可選用連樸飲或甘露消毒丹等加減;對肺氣虛寒型,以溫補肺臟、散寒通竅為主,藥用玉屏風散或溫肺止流丹加減;脾氣虛弱型,以健脾利濕、益氣通竅為主,方藥如參苓白術散加減。

圖1 基于數據驅動的圖形界面開發方案的總體框架

圖2 圖形界面文件的結構圖
數據處理模塊負責圖形界面信息的讀取、分析和顯示。以下是數據處理模塊完成的主要操作:
(1)采用工廠模式獲取DOM解析器,這種模式將應用程序代碼和DOM解析器徹底分離開來,實現更好的解耦;
(2)DOM解析器解析描述圖形界面信息的XML文檔,獲取界面控件信息,并按照一定的機制將界面控件信息放入到迭代器中;
(3)數據處理模塊識別界面控件信息,為了更好地識別界面控件類型,定義了界面控件庫;
(4)當系統運行時,數據處理模塊依次從迭代器中獲得界面控件信息,根據界面控件信息設定界面控件的顏色、大小、位置等屬性,形成圖形界面。
界面控件庫封裝了控件集和圖形庫,在構造界面控件庫時,首先分析界面控件的外觀、功能等信息,抽象分離這些信息找出類似點,根據類似點將界面控件分類;其次對每類的界面控件來說,將界面控件具有的共同信息以編碼形式保存下來,初始化界面控件庫,通過編程語言的繼承方式保存界面控件的共性;最后,設定界面控件信息的接口,當數據處理模塊識別界面控件并對界面控件設定時,能保證界面控件之間的無縫連接,不需要重新設定界面控件信息。
基于數據驅動的圖形界面開發方案將圖形界面信息封裝到XML描述文件中,把處理XML描述文件的操作以代碼形式顯示出來,這樣不僅使圖形界面與功能代碼分離,便于圖形界面的維護,還提高了圖形界面的重復利用性。當需求發生變化時,圖形界面文件隨之發生改變,數據處理模塊會重新處理圖形界面數據,從而實現圖形界面的功能,不需要手動修改功能代碼。這種方法使開發人員的主要精力放在了數據的獲取和分析上,減少了開發人員的勞動量,提高了開發效率。由于圖形界面信息是用XML描述的,便于圖形界面的擴展。
(1)圖形界面文件的結構類似一棵樹,是從根元素開始構造的;
(2)圖形界面文件是對圖形控件的描述,如果圖形界面文件包括多個圖形控件,就要對多個圖形控件進行描述;
(3)圖形控件的信息封裝在一個自定義的標簽內,在這個自定義的標簽內,可以定義圖形控件的類型、名稱、外觀、功能等子標簽;
(4)圖形界面文件不僅顯示了界面控件的信息,還要顯示界面控件之間的關系,以及定義界面控件響應的對象。下面的XML文檔是對按鈕和標簽的描述:


處理圖形界面信息時,數據處理模塊要解析XML圖形界面文件,DOM(文檔對象模型)定義了訪問和操作XML圖形界面文檔的方式。獲取DOM解析器并解析XML圖形界面文件的步驟如下:
(1)調用 DOM解析器工廠類的 newInstance()方法獲取解析器工廠對象;
(2)調用 DOM 解析器工廠的 newDocumentBuilder()方法獲取DOM解析器,將XML數據轉換為常駐內存的樹狀結構;
(3)將 XML文檔解析成 Document對象,讀取 XML圖形界面文件里的數據;
(4)根據 getDocumentElement()方法獲得 XML 文件的根節點;
(5)根據樹狀結構的層次嵌套結構,結合遞歸方式依次建立節點對象,并將節點對象存放在迭代器內;
(6)通過循環方式訪問節點對象,獲得節點數據,即界面控件屬性。
DOM解析XML圖形界面文件流程圖如圖3所示,得到界面控件信息后,數據處理模塊根據界面控件信息判斷界面控件類型,為界面控件創建界面控件對象,通過界面控件對象把界面控件信息設置到功能代碼中,運行功能代碼,實現圖形界面。

圖3 DOM解析流程圖
界面控件庫是由描述界面控件外觀、類型、行為等的界面控件和管理這些界面控件的控件組成。界面控件的外觀決定了圖形界面帶給用戶的愉悅感和可操作性,界面控件的類型決定了圖形界面功能的多樣性,界面控件的行為決定了圖形界面的動態響應,圖形界面不僅僅是靜態的,也可以是動態的,例如:鼠標在按鈕上時,按鈕的顏色是紅色的,鼠標離開按鈕后,按鈕的顏色就是藍色的。
圖形界面的控件無非是窗體、面板、標簽控件與圖標、按鈕控件、文本控件、列表控件、進度條等類型,界面 控 件 的 屬 性 也 就 是 name、text、size、height、width 等 性質,界面控件庫可以包括這些基本信息。構造界面控件庫的步驟如下:
(1)為圖形界面的每種類型的界面控件創建一個類,并且設置這些類繼承的基類,將這些類放到一個文件夾中;
(2)在類的函數中添加相應的響應事件,例如鍵盤,keyPressed()是鍵盤上按鍵按下時觸發的事件,keyReleased()是鍵盤上按鍵釋放時觸發的事件。
當應用程序運行時,數據處理模塊讀取圖形界面文件的數據,通過反射機制調用界面控件庫中的組件,設置組件的屬性,完成圖形界面的開發。
圖形界面開發已經成為軟件開發的重要組成部分,對于目前圖形界面開發存在的問題,如何提高圖形界面重用性和降低圖形界面與功能代碼的耦合度對于企業很重要。基于數據驅動的圖形界面開發方案將界面控件信息以XML文件形式描述,圍繞對界面控件信息的解析、處理等操作驅使系統運行。這種方式實現了以數據驅動軟件運行,數據與功能代碼的分離,當需求發生變化時,不需要修改源代碼,減小了開發人員的勞動量。同時,XML具有較高的擴展性,用XML描述圖形界面信息,便于后期的擴展。
[1]言金剛,樊東平,劉又誠.基于XML的統一用戶界面描述[J].計算機工程,2002,28(6):83-85.
[2]杭欣靜,蔣澤軍,王麗芳.基于XML的用戶界面動態生成框架的設計與實現[J].科學技術與工程,2009,9(9):2492-2495.
[3]張敦華.一種界面自動生成技術[J].計算機與數字工程,2004,32(5):20-24.
[4]李松.一種人機界面動態調度技術[J].微處理機,2012,33(1):63-66.
[5]靳京,桑楠,劉一.基于XML的嵌入式Linux系統用戶界面定制[J].電子科技大學學報,2007,36(3):510-513.
[6]侯忠生,許建新.數據驅動控制理論及方法的回顧和展望[J].自動化學報,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]梁瑋.數據驅動設計模式的研究及在OTA開發工具中的應用[D].北京:北京郵電大學,2009.
[9]徐陋.數據驅動設計模式的研究及應用[D].廣州:暨南大學,2006.