《電子技術應用》
您所在的位置:首頁 > 嵌入式技术 > 设计应用 > 基于数据驱动的图形界面开发方案
基于数据驱动的图形界面开发方案
来源:微型机与应用2013年第19期
彭顺顺,周传生
(沈阳师范大学 软件学院,辽宁 沈阳 110034)
摘要: 基于数据驱动方法的图形界面开发方案以界面控件为对象,使用图形界面配置数据描述功能逻辑,通过图形界面配置数据的变动驱使系统的运行,实现功能逻辑。实现了图形界面配置数据和功能逻辑的分离,当需求发生变动时,只需要修改图形界面配置数据,功能逻辑即可实现。这不仅提高了图形界面的复用性,还降低了后期维护成本。
Abstract:
Key words :

摘  要: 基于數據驅動方法的圖形界面開發(fā)方案以界面控件為對象,使用圖形界面配置數據描述功能邏輯,通過圖形界面配置數據的變動驅使系統的運行,實現功能邏輯。實現了圖形界面配置數據和功能邏輯的分離,當需求發(fā)生變動時,只需要修改圖形界面配置數據,功能邏輯即可實現。這不僅提高了圖形界面的復用性,還降低了后期維護成本。
關鍵詞: 圖形界面;數據驅動;配置數據;功能邏輯;重復利用性

 圖形界面是連接用戶和計算機的紐帶,用戶不僅要求圖形界面功能豐富、操作簡單,還在感官層次上要求操作的舒適感和愉快感[1],因此,在較短時間內開發(fā)出滿足用戶需求的圖形界面成為企業(yè)競爭的焦點。目前,圖形界面的開發(fā)是在集成開發(fā)環(huán)境下采用某種編程語言編寫功能代碼實現的[2]。這種開發(fā)方式存在以下問題:(1)圖形界面與功能代碼的高耦合[3],圖形界面需求的改變會導致功能代碼重復繁瑣的修改,影響了開發(fā)效率,延遲軟件發(fā)布時間;(2)圖形界面重復利用性差[4],已經發(fā)布的圖形界面不能被其他軟件使用,即使是功能相似的軟件,圖形界面的重復使用也會導致開發(fā)人員根據客戶的需求重新設定圖形界面的布局和控件的功能,增加了開發(fā)人員的勞動量[5]。
 隨著數據庫的潛力被無限發(fā)掘,越來越多的軟件以數據為中心完成更多的任務,進入了數據驅動時代[6-7]。數據驅動方法借助數據交換工具(例如XML)以數據為中心,根據數據的變動推動系統的運行[8-9]。數據驅動方法已經應用到軟件測試的設計中,這種方法使測試腳本和測試數據分離,通過測試數據的變動驅使測試的運行,有效地縮短了軟件開發(fā)周期,減少了開發(fā)人員的勞動量。
為解決圖形界面開發(fā)存在的問題,把開發(fā)人員從繁瑣的編碼中解放出來,提出了基于數據驅動的圖形界面開發(fā)方案。開發(fā)方案以XML形式描述圖形界面的信息,根據XML提供的數據對界面控件進行布局和響應,組裝滿足需求的圖形界面。
1 開發(fā)方案
1.1 開發(fā)流程

 基于數據驅動的圖形界面開發(fā)方案是以界面控件為對象,使用XML描述圖形界面信息,由一個可重復利用的開發(fā)平臺對圖形界面數據進行轉換、提取、分析、處理等操作,推動系統的運行,從而實現描述的功能。
根據數據驅動的原理,基于數據驅動的圖形界面開發(fā)方案有以下幾個步驟:
?。?)根據圖形界面的動態(tài)需求,基于數據驅動的圖形界面開發(fā)方案利用現有的界面轉換工具把圖形界面控件信息編寫到圖形界面文件中,圖形界面文件以XML形式描述;
?。?)綜合、抽象圖形界面控件信息,根據圖形界面控件信息初始化界面控件庫;
?。?)讀取并分析圖形界面文件中界面控件的外觀、布局、行為等數據;
?。?)根據獲得的數據,調用界面控件庫里的控件,設計圖形界面控件的功能和布局,組合圖形界面。
1.2 功能模塊
 從基于數據驅動的圖形界面開發(fā)方案的步驟可以看出,基于數據驅動的圖形界面開發(fā)方案由界面規(guī)范、功能界面、界面轉換工具、圖形界面文件、界面控件庫、數據處理模塊、運行環(huán)境幾個模塊組成,如圖1所示。

 界面規(guī)范是描述操作的規(guī)定和要求,對界面輸入、界面信息轉換、界面數據的處理和界面布局等操作具有指導作用。
 功能界面是由多個簡單的界面控件組成,每個界面控件都有其基本屬性。界面控件的屬性包括大小、顏色、位置、字體類型等,這些屬性可以是靜態(tài)的,也可以是動態(tài)的,體現了界面控件的外觀、布局和行為。
界面轉換工具根據功能界面提供的信息編寫圖形界面文件。
 圖形界面文件是用來描述圖形界面信息的,包括圖形界面基本信息和界面控件信息,其文件結構如圖2所示。

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

 XML是一種元標記語言,使用元標記來描述數據信息,具有良好的擴展性、自我描述性和層次嵌套性。圖形界面的控件信息是多樣的,并且控件之間具有層次嵌套性,圖形界面的控件信息可用XML來描述。XML描述圖形界面文件具有以下特點:
?。?)圖形界面文件的結構類似一棵樹,是從根元素開始構造的;
?。?)圖形界面文件是對圖形控件的描述,如果圖形界面文件包括多個圖形控件,就要對多個圖形控件進行描述;
 (3)圖形控件的信息封裝在一個自定義的標簽內,在這個自定義的標簽內,可以定義圖形控件的類型、名稱、外觀、功能等子標簽;
?。?)圖形界面文件不僅顯示了界面控件的信息,還要顯示界面控件之間的關系,以及定義界面控件響應的對象。
 下面的XML文檔是對按鈕和標簽的描述:
 <?xml version=′1.0′ encoding=′gb2312′?>
 <page>
  <window>
    <window_title>圖形界面</window_title>
    <window_visible>true</window_visible>
    <window_bounds>
      <window_height>300</window_height>
      <window_width>100</window_width>
      <window_LocationX>100</window_LocationX>
      <window_LocationY>100</window_LocationY>
      </window_bounds>
      ……
      <window_action>action.WindowAction
      </window_action>
    </window>
    <component type=”button”>
      <button_text>修改</button_text>
      <button_height>5</button_height>
      <button_width>10</button_width>
<button_background>red
      </button_background>
      …….
      <button_action>action.ButtonAction
      </button_action>
    </component>
    <component type=”label”>
      <label_text>圖標</label_text>
      <label_icon>images/1.png</lable_icon>
      <label_locationX>10</label_locationX>
      <label_locationY>10</label_locationY>
      ……
      <label_action>action.LabelAction
      </label_action>
    </component>
  </page>
2.2 數據處理模塊

 


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

2.3 界面控件類

 


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

此內容為AET網站原創(chuàng),未經授權禁止轉載。