摘 要:在對構件元數據的基本思想進行概述的基礎上,提出了一種分層元數據的概念,并從構件使用方和構件開發方兩個角度分析了對構件的需求。設計了分層元數據對象的模型以及分層元數據的層次結構,并進一步給出了元數據的具體內容及其XML表示的實現思想。最后結合一個描述構件硬件運行環境的元數據實例,給出了相關的XML代碼。
關鍵詞:構件;構件軟件測試;構件元數據;UML
中圖法分類號:TP311文獻標識碼:A
文章編號:1001—3695(2007)02—0272—03
隨著軟件系統復雜性的增加,軟件工程將外部開發的軟件構件與特定應用程序集成在一起來構筑軟件系統,成為了目前軟件開發的趨勢[1]。在目前應用構件技術開發的大量實際應用中,雖然構件的使用提供了許多優點,但同時也帶來一些嚴重的問題。這些問題主要表現在構件的可靠性、安全性無法保證和可維護性難以實現[2,3]。因此提出一種使用描述構件信息的元數據[4]來解決這個問題,元數據作為連接開發人員和使用方之間的橋梁,構件開發方提供有關構件的細節信息而無須公開源代碼。但是由于相同的構件可能會應用于不同的應用環境,構件使用方對信息的需求并不相同,因此構件開發方所提供的元數據并不能滿足所有構件使用方的要求,特別是有些信息,諸如數據相依性或復雜性度量計算起來代價昂貴,還有一些信息,如文檔或與新版本對以前版本所作的修改就必須在代碼外提供。現有的構件標準和環境,包括DCOM,企業JavaBeans以及.NET,已經將元數據應用于構件,提供一些附加信息,但是目前可用的元數據還局限在編譯、運行、類型檢查(如構件類的名稱,其函數名以及函數參數的類型)以及設計用戶化(如圖形用戶界面構件的形狀和顏色,以及數據存儲構件內部緩沖區的大?。┑男畔ⅰ?蓪⑦@些信息進行擴展應用于特定任務中,但是不同的元數據目前僅僅解決有限范圍內的軟件工程問題[5,6]。
本文針對這些問題提出了對一種分層元數據結構,可針對不同的應用環境以及構件集成到應用程序中的集成測試,滿足構件使用方對第三方構件信息各個層次上的需求。構件使用方在實施集成測試時,可根據構件開發方提供的元數據進行集成測試,從而保證構件的可靠性和可測試性。
1 分層元數據
1.1 概念
基于構件系統由三部分組成:用戶應用程序、構件以及在用戶應用程序和構件之間提供通信通道的體系結構。用戶應用程序通過其接口與構件交互,通信體系結構將用戶應用程序使用的接口轉換至構件接口。構件提供了多個功能集合,每個功能集合可由一個配置項訪問。
元數據(Metadata)指的是描述數據的數據;用于描述構件信息的元數據指的是需要創建、構造和運行一個構件所需的任何信息,這些信息不在源代碼中或是二進制代碼中。
對一般的應用程序來說,構件開發方所提供的元數據包括簡單的數據(如構件中程序參數)及描述構件層次結構和大型應用程序中構件之間交互的復雜數據(可用圖的形式給出)。本文所構造的元數據的含義是:根據不同的應用環境對構件信息詳細程度的需求將所構造的元數據分成不同層次,進而構造成分層元數據系統,其中的元數據是動態的,可根據具體應用程序獲取運行時的配置信息、修改運行時的元數據,并訪問實時狀態變量。構件開發方在生成元數據時應根據構件使用方的具體要求來定,將這樣的元數據稱為分層元數據。
1.2 構件元數據的需求
存儲在每個構件中的元數據根據構件使用方所要求的分析和測試粒度進行區分。
從構件提供方的角度來看,元數據系統必須滿足如下基本需求:①構件在編譯和連接時、在構件導入時、構件執行期間以及在構件開發期間的任何時候可創建、訪問或修改與該構件相關的元數據;
②系統必須能進行擴展,使其能增加新的元數據;③系統必須與程序語言、硬件結構和中間具體實現無關;④當構件版本發生變化,從而修改元數據值時,必須通知相關的應用程序,這就需要建立合適的通知機制;⑤應用程序必須能通過適當的方式訪問當前的元數據值;⑥必須建立有適當的查詢機制滿足不同構件使用方對構件信息的需求;⑦必須提供標準的方法記錄和存儲不同的元數據。根據不同的構件類型可能還有其他的具體需求。從構件使用方的角度來看,元數據必須具有如下功能:
(1)方便的元數據訪問機制。由于源代碼對于構件使用方來說是未知的,因此在集成應用程序時所需的一些分析和測試數據必須能從元數據中獲取,如構件提供方提供的數據流分析結果以及代碼依賴和控制關系計算等。
(2)給出構件提供方對構件的測試結果。由于構件和用戶應用程序是以不同的語言實現的,因此基于用戶應用程序的實現語言的分析工具不能對所集成的構件進行測試和分析。
(3)元數據系統應提供特定的配置項,使得不同的應用程序可以根據元數據的信息來選擇構件的功能項。
2 分層元數據系統的設計
2.1 分層元數據對象
傳統的元數據模式強調標準格式和建立,并采用關系數據庫概念。每個元數據項表示為單個記錄或XML文檔但是在其實現中發現元數據格式的標準化是很困難的,因為單個標準對于應用范圍非常廣泛的構件可能不合適,如單個元數據標準無法同時描述可用于地理信息系統和通用信息系統的構件。
元數據應用在數據庫中,通常其數據庫模式是元數據與相關的數據分開,這樣當數據的應用環境發生變化時,說明該數據的元數據就無法應用,在分布式環境中這種情況表現得更為明顯。在地理信息系統中,由于數據對象經常變換位置,因此常常需要將元數據從一個位置復制到另一個位置。
考慮到上述原因,本文根據元數據的一般功能將其分為描述性元數據和操作性元數據,并封裝在一起構成一個元數據對象,如圖1所示。
圖1說明了元數據對象的框架, 描述性元數據包括對構件屬性的一般性描述,包含構件使用方在集成到應用環境中所需的靜態信息,描述或標志構件內容和外觀特征,由核心元素以及集成到本應用的核心元素組成。具體有構件使用方解釋說明的元數據信息,如數據描述、分布式信息和元數據引用等;操作性元數據包括構件集成到應用環境中可以直接運行的元數據,可方便地實現構件與應用環境的動態交互和集成,而且可以實現跨平臺交互。
2.2 分層元數據的層次結構
根據構件使用方和構件開發方的需求,本文設計的分層元數據有三個層次,分別是數據層、應用模型層和元模型層,如圖2所示。
圖2中的最高層元模型層為概念模式語言,用來描述元數據模式以及應用模型層上的應用模式。元數據模式在元數據集合中定義了元數據元素,元數據集合描述了數據層上數據集合的管理、組織和具體內容。該結構為元數據結構和編碼提供了語言級的實現框架。
2.3 元數據內容描述
分層元數據內容都可描述為對象及其這些對象的參數,參數為不同標量類型,還有一些對象引用其他對象及其參數的列表,這些元數據對象構成對象圖,其中包含具有任意復雜度的元數據。例如,可用對象Reference來描述元數據對象之間父子關系結構,另外一個對象可包含在另一個對象中,進行結構設計時要反映在元數據內容中。
對于每個元數據,使用圖、表和文本的混合方式描述適用于該構件中的具體數據內容,對于特定領域的構件,其框架不盡相同。
本文以一個描述某構件硬件應用環境的元數據為例,以UML的形式給出了元數據的具體內容,如圖3所示。圖3中,元數據對象以僅帶有屬性的類給出,使用類的屬性給出對象參數,引用其他對象的參數以類之間的關聯表示。對象引用的參數名用關聯的UML任務名表示,當關聯到多個引用時,就使用對象引用列表,且所有列表要進行排序,包含在另一個對象中的對象用組合關系的形式給出。
圖3所給出的元數據由四種類型的對象組成。Processor對象有三個參數,即字符串名字name,clock以及busref(對Bus對象的引用)。Memory對象有三個參數,即name,size和busref(對Bus對象的引用);Bus對象有四個參數,即name,process(對Processor對象的一個或多個引用列表),mems(對Memory對象的一個或多個引用列表)以及cfg,其類型為BusConfig,這里BusConfig為帶有兩個參數的對象,即bw和width;BusConfig對象唯一地使用一個或多個對象來包含描述全局元數據值的參數。
2.4 分層元數據的XML表示
由于構件所集成的應用程序環境不同,需要將元數據從一個應用程序到另一個應用程序進行轉換。要實現該轉換,縮小開發時間和程序資源的使用就必須將轉換格式標準化,即使用標準的文本操作工具創建和修改元數據,目前廣泛應用的是標準的文本格式XML。
本文所構造的元數據用XML格式來表示,使得構件使用方能方便地從XML中導出元數據,同時可用許多工具來操作與構件配套的元數據。
本文有一個高層元素,定義為
在對象元素中,可使用帶有啟動標簽(與參數名一樣)的元素來描述每個對象參數。標量參數值作為元素內容中的文本給出,可以是字符串、整型和浮點數字型。對象引用為空,擁有一個帶有字符串值的屬性Objref,與被引用對象的Ident屬性一樣。另一個對象的參數(不是對象引用)用來表示嵌入在所包含的對象元素中的一個元素。參數可在對象中出現多次以指明值的可變列表,當讀寫元數據時對列表中的元素順序進行維護。圖4給出了元數據信息與XML文檔中的元素的對應關系。
3 一個元數據實例的XML表示
本文按圖3給出的元數據實例構造了該實例的XML表示,如下所示:
4 結論
隨著構件技術在應用上的深入和快速發展,如何在構件集成到應用環境時保證構件的實施有效地集成測試,進而保證整個軟件系統的質量和可靠性,是將構件開發技術進一步擴充應用范圍的前提。
目前使用元數據提供構件信息從而實施有效的集成測試是解決問題的方法之一。本文在以前研究工作的基礎上,提出了一種分層元數據的概念,并設計實現了其模型和層次結構,根據構件使用方的需求以及提供的元數據信息實施有效的集成測試,在此基礎上給出了一個說明構件運行環境的元數據實例及其XML表示。這項研究今后主要的研究方向包括元數據的接口、變化通知機制等相關方面的研究工作。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。