• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      使用元數(shù)據(jù)和反射的Web服務(wù)系統(tǒng)重配置設(shè)計與實現(xiàn)

      2017-03-31 20:32:46孫承愛杜巧林于璇璇
      軟件導(dǎo)刊 2016年8期
      關(guān)鍵詞:元數(shù)據(jù)

      孫承愛+杜巧林+于璇璇

      摘 要:軟件系統(tǒng)需要不斷演化以適應(yīng)外界需求或環(huán)境的變化,如何實現(xiàn)軟件演化是軟件工程研究領(lǐng)域的一個熱點問題。提出一種基于元數(shù)據(jù)和反射的軟件動態(tài)重配置方法,利用存儲在關(guān)系數(shù)據(jù)庫中的元數(shù)據(jù)描述系統(tǒng)的結(jié)構(gòu)特征,采用存儲過程表示系統(tǒng)的行為,并建立存儲過程和功能的對應(yīng)關(guān)系。使用元對象操作類實現(xiàn)元層和基層對象的反射關(guān)系,當(dāng)軟件的功能或顯示界面發(fā)生變化時,通過配置元數(shù)據(jù)和存儲過程,在運行時動態(tài)改變基層程序結(jié)構(gòu)或功能,實現(xiàn)了軟件的演化,并通過實例證明了該方法的可行性。

      關(guān)鍵詞關(guān)鍵詞:需求變化;元數(shù)據(jù);反射;重配置

      DOIDOI:10.11907/rjdk.161650

      中圖分類號:TP319

      文獻(xiàn)標(biāo)識碼:A 文章編號:1672-7800(2016)008-0049-04

      0 引言

      隨著用戶需求的改變和軟件運行環(huán)境的變化,軟件系統(tǒng)需要不斷演化以適應(yīng)這種新的變化,如何實現(xiàn)軟件演化是軟件工程研究領(lǐng)域的一個熱點問題[1,2]。軟件工程從許多方面,例如OOP、OOA/OOD、各種軟件過程(RUP、XP)和方法等對此進(jìn)行了研究。這些技術(shù)運用得當(dāng)可以構(gòu)建出可用、可靠、穩(wěn)定的系統(tǒng)。但是,當(dāng)需求發(fā)生變化時,現(xiàn)代軟件存在著如下不足:傳統(tǒng)軟件主要采取了“黑箱”的實現(xiàn)機(jī)制,即對外部應(yīng)用屏蔽了內(nèi)部具體實現(xiàn)細(xì)節(jié),這種機(jī)制使得外部應(yīng)用無法獲取系統(tǒng)的內(nèi)部結(jié)構(gòu)和狀態(tài)行為,從而無法根據(jù)相關(guān)需求來動態(tài)調(diào)整系統(tǒng)應(yīng)用級的結(jié)構(gòu)行為,這樣使得相關(guān)應(yīng)用缺乏對變化環(huán)境的適應(yīng)性[3-5]。

      要解決上述問題,軟件系統(tǒng)應(yīng)具有如下特點:系統(tǒng)應(yīng)具有較為開放的結(jié)構(gòu),使得外界能獲悉系統(tǒng)內(nèi)部相關(guān)成分,從而能根據(jù)外部環(huán)境變化對系統(tǒng)相應(yīng)部分的結(jié)構(gòu)行為作一定調(diào)整與改變;系統(tǒng)應(yīng)具有動態(tài)重配置的能力,即能在運行過程中進(jìn)行動態(tài)調(diào)整、定制和改變自身相關(guān)的結(jié)構(gòu)行為,且不影響系統(tǒng)整體的運行[4]。

      本文將元數(shù)據(jù)和反射引入基于關(guān)系數(shù)據(jù)庫的Web系統(tǒng)設(shè)計中,通過對系統(tǒng)業(yè)務(wù)信息的具體化(reification),使得外部能獲取系統(tǒng)自身結(jié)構(gòu)、行為的自描述(self-representation)元數(shù)據(jù),從而實現(xiàn)系統(tǒng)內(nèi)部的開放;系統(tǒng)的自描述與系統(tǒng)結(jié)構(gòu)行為是因果相連(causally connected)的,通過對元數(shù)據(jù)的調(diào)整與改變,可實現(xiàn)對系統(tǒng)特定部分和功能的反射,使得系統(tǒng)具有動態(tài)重配置的能力[6]。

      1 相關(guān)研究

      20世紀(jì)80年代后期,隨著對反射式程序設(shè)計語言、反射式操作系統(tǒng)研究的深入,對反射系統(tǒng)也形成了一個較為一致的認(rèn)識:反射系統(tǒng)可被認(rèn)為是一種可通過因果相連的方式來反演自身的計算系統(tǒng),反射則是反射系統(tǒng)的行為表示[7,8]。反射系統(tǒng)可以形式化地表示成二元組S=〈PL,TL〉,其中S為計算系統(tǒng),L為系統(tǒng)S用以表示問題域所用的語言,PL為語言L的處理器,TL為PL的狀態(tài),RS為S在TL中基于L語言的表示,S與RS的關(guān)系為:S包含RS,且S和RS之間是因果相連的[9]。

      在反射系統(tǒng)實現(xiàn)中,一般采用“關(guān)注分離”的原則,即系統(tǒng)分為基層(Base Level)和元層(Meta Level)?;鶎佑糜趯唧w問題域的抽象,元層則是對基層及系統(tǒng)內(nèi)部的表示。元對象封裝基層對象的元數(shù)據(jù),描述基層對象的結(jié)構(gòu)和行為,并動態(tài)地管理基層對象。反射是指通過獲取元數(shù)據(jù)來觀察和調(diào)整系統(tǒng)內(nèi)部及基層相關(guān)部分結(jié)構(gòu)行為的過程。

      在利用元數(shù)據(jù)和反射技術(shù)實現(xiàn)軟件系統(tǒng)的研究中,文獻(xiàn)[10]介紹了在面向?qū)ο缶幊陶Z言中使用反射和元編程需要遵循的3個重要原則。給出了使用元數(shù)據(jù)和反射的基本原理和設(shè)計規(guī)則,文獻(xiàn)[11]通過使用基于XML描述的元數(shù)據(jù)和某些語言的自省機(jī)制來連接構(gòu)件和基本框架,目的是構(gòu)建可擴(kuò)展的系統(tǒng),其元數(shù)據(jù)描述重點在系統(tǒng)功能,實現(xiàn)功能的靈活擴(kuò)展。文獻(xiàn)[12]提出了一種基于構(gòu)件的系統(tǒng)運行時變化和恢復(fù)的軟件架構(gòu)。通過完整描述系統(tǒng)運行時的狀態(tài)和行為,使用構(gòu)件框架的反射能力實現(xiàn)系統(tǒng)的運行時恢復(fù)。本文使用元數(shù)據(jù)描述系統(tǒng)的結(jié)構(gòu)信息,利用存儲過程來表達(dá)系統(tǒng)行為。元數(shù)據(jù)存儲在關(guān)系數(shù)據(jù)庫中,存儲過程作為一個命名的獨立模塊可以被動態(tài)配置和調(diào)用。元數(shù)據(jù)和存儲過程可以通過一個單獨的配置系統(tǒng)動態(tài)管理,通過運行時反射機(jī)制實現(xiàn)系統(tǒng)的動態(tài)重配置。與文獻(xiàn)[10]相比,本文方法不僅能實現(xiàn)功能擴(kuò)展,還能管理系統(tǒng)的結(jié)構(gòu);與文獻(xiàn)[11]相比,本文側(cè)重點在于系統(tǒng)的動態(tài)重配置。

      2 基于元數(shù)據(jù)和反射的動態(tài)重配置

      基于關(guān)系數(shù)據(jù)庫的Web系統(tǒng)是本文動態(tài)重配置方法研究的對象。很多關(guān)系數(shù)據(jù)庫中都提供命名的批處理代碼段,例如SQL Server數(shù)據(jù)庫中的存儲過程(Stored Procedure)、Oracle中的過程(Procedure)。這種命名的批處理代碼段編寫完成以后注冊到服務(wù)器,通過名字可以反復(fù)調(diào)用多次,而且每個代碼段可以有上百條SQL代碼,這上百條代碼在調(diào)用時只需要一條執(zhí)行語句即可,不需要向網(wǎng)絡(luò)發(fā)送上百條代碼,能有效降低系統(tǒng)網(wǎng)絡(luò)開銷。批處理代碼段可以包含若干代碼,因此可以把系統(tǒng)的業(yè)務(wù)邏輯封裝其中,使用時按名稱調(diào)用即可。本文設(shè)計方法基于SQL Server數(shù)據(jù)庫,把系統(tǒng)的業(yè)務(wù)邏輯封裝到存儲過程中。

      當(dāng)需求變化時,用戶可以通過配置元數(shù)據(jù)和存儲過程,動態(tài)修改基層對象,實現(xiàn)軟件運行時動態(tài)重配置。

      本文方法使用關(guān)系數(shù)據(jù)庫存放元數(shù)據(jù),所以要考慮元數(shù)據(jù)的完整性約束處理。

      2.1 元層設(shè)計

      2.1.1 元對象

      元對象主要包括:數(shù)據(jù)表對象、視圖對象、數(shù)據(jù)集對象、字段對象。具體如下:

      (1)數(shù)據(jù)表對象描述關(guān)系數(shù)據(jù)庫表,其定義包含名稱、類別(所屬的業(yè)務(wù)領(lǐng)域)。

      (2)字段對象描述字段的詳細(xì)信息和該字段基層的結(jié)構(gòu)信息,例如基層程序的顯示名稱、顯示長度、使用控件類型等。其定義主要包括字段名稱、所屬表、字段中文名稱、約束類型、字段長度、顯示次序、顯示控件、計算方式、最小值、最大值。字段屬于基本表,所以在圖1中,表與字段關(guān)系為組合關(guān)系,并且每個數(shù)據(jù)表至少有1個字段。

      (3)視圖對象描述關(guān)系數(shù)據(jù)庫中的視圖。在關(guān)系數(shù)據(jù)庫中,視圖的字段分成兩類:一類是構(gòu)成視圖的基表字段,另一類是由基表字段推導(dǎo)出的附加字段。因此視圖對象在圖1的設(shè)計中涉及到3個類:視圖類、視圖父表字段類、視圖附加字段類。每個視圖至少包括1個父表字段,有0到多個附加字段,其關(guān)系如圖1所示。視圖對象定義主要包括視圖名稱、視圖中文名稱、視圖所屬業(yè)務(wù)領(lǐng)域;視圖附加字段定義包括字段名稱,顯示順序、中文標(biāo)題、類型;父表視圖字段定義包括父表名稱、字段名稱、顯示順序。

      (4)數(shù)據(jù)集對象是一種特殊的元對象。它和數(shù)據(jù)庫中的存儲過程一一對應(yīng),系統(tǒng)通過存儲過程封裝業(yè)務(wù)邏輯。例如在界面中顯示個人所得稅頁面時,個人所得稅的計算方法就可以通過存儲過程存放到數(shù)據(jù)庫中,當(dāng)計算方法改變時,只需要修改存儲過程即可實現(xiàn)業(yè)務(wù)規(guī)則修改。每個返回結(jié)果集存儲過程包含的字段分為兩類:一類是來自于基本表的字段,另一類為由基本表推導(dǎo)得到的字段。這兩類字段分別用數(shù)據(jù)集附加字段和父表數(shù)據(jù)集字段表示。其中父表數(shù)據(jù)集字段的字段定義來自于父表定義。數(shù)據(jù)集對象在圖1中主要包括3個類:數(shù)據(jù)集、數(shù)據(jù)集附加字段、父表數(shù)據(jù)集字段。數(shù)據(jù)集定義包括:數(shù)據(jù)集名稱、數(shù)據(jù)集中文名稱、數(shù)據(jù)集分類(所屬業(yè)務(wù)領(lǐng)域);數(shù)據(jù)集附加字段定義包括:字段名稱、中文名稱、顯示順序、類型;數(shù)據(jù)集父表字段定義包括:字段名稱和顯示順序。

      2.1.2 三種元對象操作類和數(shù)據(jù)獲取方法

      對基層對象和元對象的操縱控制,主要是由反射模式的內(nèi)省和調(diào)節(jié)功能來保證[6]。本文對表和視圖的管理通過類TableDescription完成;字段管理通過類FieldDescription和類FieldDescriptionList來處理;數(shù)據(jù)集的管理通過類DatasetDescription來處理。其主要屬性和方法如圖2~圖5所示。

      為了更簡明清楚定義操作過程,作如下規(guī)定:①對象T屬于TableDescription;②對象F屬于FieldDescription;③對象V屬于TableDescription;④對象D屬于DatasetDescription;⑤對象FL屬于FieldDescriptionList。

      (1) 過程1:根據(jù)表名或視圖名取得數(shù)據(jù)。

      ①將表名或視圖名傳遞給T.TableName,取得表描述信息;

      ②使用FL.GetFieldList(表名稱),取得字段列表;

      ③foreach(F in FL.GetFieldList(表名稱))

      組合F成物理字段列表;

      轉(zhuǎn)到字段處理子程序;

      ④檢索出業(yè)務(wù)數(shù)據(jù),并綁定到頁面對象。

      (2)過程2:字段處理子程序。

      ①if 字段為自增(F.IsIdentity) then

      字段設(shè)置為只讀;

      ②if 字段有外鍵引用(F.FkField != null)then

      將本字段呈現(xiàn)為外鍵關(guān)聯(lián)出的值(例如主表中性別編碼,在基層將呈現(xiàn)為外鍵表中數(shù)據(jù)男或者女);

      ③if 字段允許為空(F.IsNull==true)then

      對字段不作非空驗證;

      ④if 字段有最大或最小值(F.Min != null or F.Max != null) then 對字段作范圍驗證;

      ⑤轉(zhuǎn)數(shù)據(jù)完整性處理。

      (3)過程3:根據(jù)存儲過程名稱和參數(shù)取得數(shù)據(jù)的過程。

      ①將存儲過程名和存儲過程參數(shù)傳遞給D.ProName和D.ProParams,取得數(shù)據(jù)集描述信息;

      ②使用FL.GetFieldList(存儲過程名稱),取得字段列表;

      ③foreach(F in FL.GetFieldList(存儲過程名稱))

      組合F成物理字段列表;

      轉(zhuǎn)到字段處理子程序;

      ④檢索出業(yè)務(wù)數(shù)據(jù),并綁定到頁面對象。

      字段元數(shù)據(jù)存放在關(guān)系數(shù)據(jù)庫當(dāng)中,須考慮數(shù)據(jù)實體完整性和參照完整性。對于實體完整性,主要考慮主鍵約束;參照完整性在本文中分成3類:標(biāo)識關(guān)系、非標(biāo)識強(qiáng)制關(guān)系、非標(biāo)識非強(qiáng)制關(guān)系。

      (4) 過程4:完整性控制。

      ①if F.ConstraintsType ==主鍵 then

      加入基層類主鍵列表 (加入主鍵列表后,基層類在數(shù)據(jù)更新、刪除等操作的過程中,會按照主鍵列表構(gòu)造where字句進(jìn)行更新、刪除操作) ;

      ② if F.ConstraintsType ==標(biāo)識約束 then

      Case 增加 then 基層對象檢測字段非空和外鍵約束;

      Case 修改 then 基層對象檢測字段非空和外鍵約束;

      Case 刪除 then 基層對象直接刪除記錄。

      ③if F.ConstraintsType ==非標(biāo)識強(qiáng)制約束 then

      Case 增加 then 基層對象檢測字段非空和外鍵約束;

      Case 修改 then 基層對象檢測字段非空和外鍵約束;

      Case 刪除 then 基層對象直接刪除記錄。

      ④if F.ConstraintsType ==非標(biāo)識非強(qiáng)制約束 then

      Case 增加 then 基層對象檢測外鍵約束;

      Case 修改 then 基層對象檢測外鍵約束;

      Case 刪除 then 基層對象直接刪除記錄。

      2.2 軟件運行和重配置過程

      軟件運行和軟件動態(tài)配置過程如圖6所示。配置好元數(shù)據(jù)后,軟件會按照用戶需求顯示和按業(yè)務(wù)規(guī)則運行(圖中步驟1)?;鶎涌丶邮苡脩舨僮饕蟛研枨缶唧w化為對應(yīng)的元數(shù)據(jù)提交給元對象(圖中步驟2、3),元對象操作元數(shù)據(jù)并接收操作返回的信息(圖中步驟4、5)。元對象會將數(shù)據(jù)庫中的數(shù)據(jù)按照規(guī)則組織業(yè)務(wù)數(shù)據(jù)反饋給基層對象(圖中步驟6),基層對象把信息反饋給用戶(圖中步驟7、8),這是一次完整的交互。當(dāng)需求發(fā)生變化時,如果用戶期望軟件適應(yīng)新需求,則可以打開元數(shù)據(jù)配置頁面(圖中步驟9),執(zhí)行元數(shù)據(jù)配置操作,通過該操作修改元數(shù)據(jù)信息(圖中步驟10、11、12)。當(dāng)用戶修改元數(shù)據(jù)后,重新進(jìn)入功能界面就可以使用演化后符合新需求的系統(tǒng)(圖中步驟13)。

      3 運行時反射過程與實例

      圖7為一個運行時反射實例,其開發(fā)環(huán)境為VS2005和Sqlserver2005。兩條虛線之間為元數(shù)據(jù)操作,虛線之外為基層界面。

      在軟件的基層界面中第一列名稱顯示為“教師名稱”,根據(jù)前文過程1,顯示其過程為:

      ①將表名“ Teacher”傳遞給T.TableName,取得表描述信息;

      ②使用FL.GetFieldList(“ Teacher”),取得字段列表;

      ③foreach(F in FL.GetFieldList(“ Teacher”))

      組合F成物理字段列表;此時F中教師名稱的物理字段為“tchrName”,即F.FieldName=“tchrName”),F(xiàn).FieldCTitle為“教師名稱”。

      轉(zhuǎn)過程2:對于F.FieldName=“tchrName”,為普通字段,因此自增、外鍵、非空、范圍、數(shù)據(jù)完整性約束等驗證都為false。

      ④檢索出業(yè)務(wù)數(shù)據(jù),并綁定到頁面對象。

      在運行過程中用戶可以在3.2節(jié)第2步的元數(shù)據(jù)配置頁面修改該列的元數(shù)據(jù),例如修改成圖中的“教師姓名”,按照上文所述的反射流程,修改元數(shù)據(jù)后,對應(yīng)的基層對象的軟件界面也會隨之變化,如圖3中第3步所示結(jié)果。

      4 結(jié)語

      本文提出了基于元數(shù)據(jù)和反射的Web系統(tǒng)重配置設(shè)計方法,詳細(xì)描述了元對象的結(jié)構(gòu)和操作元對象的方法,介紹了應(yīng)對需求變化的動態(tài)重配置過程,并給出了一個簡單示例。本文使用的方法能夠部分解決需求變化的問題,但是本方法只適用于基于關(guān)系數(shù)據(jù)庫的Web程序,其適用范圍的局限性限制了應(yīng)用價值,下一步應(yīng)將其擴(kuò)展到互聯(lián)網(wǎng)軟件上。例如,當(dāng)利用Web服務(wù)作為構(gòu)成系統(tǒng)的功能單元時,如何描述系統(tǒng)的結(jié)構(gòu),采用什么方式描述系統(tǒng)行為,從而使系統(tǒng)具有動態(tài)演化的能力。

      參考文獻(xiàn):

      [1]TOM MENS,JEFF MAGEE,BERNHARD RUMPE.Evolving software architecture descriptions of critical systems[J]. IEEE Computer, 2010,43(5):42-48.

      [2]WANG YING,WANG LIFU.Research about model and ripple effect analysis of software architecture evolution[J].Acta Electronica Sinica,2005,33(8):1381-1386.

      [3]HU HAI-YANG,MA XIAO-XING,TAO XIAN-PING,et al.Research and advance of reflective middleware[J].Chinese Journal of Computers, 2005,28(9):91-96.

      [4]COULSON G,BLAIR G S,CLARKE M,et al.The design of a highly configurable and reconfigurable middleware platform[J].Journal of ACM Distributed Computing, 2002, 1(2): 109-126.

      [5]SCHMIDT DC,CLEELAND C.Applying a pattern language develop extensible ORB middleware[M]. New York: Cambridge University Press,2001:393-438.

      [6]National Information Standards Organization.Understanding metadata[EB/OL]. http://www. niso. org/publications/press/ Underst -andingMetadata.pdf.

      [7]YASUHIKO Y.The apertos reflective operating system:the concept and its implementation[C]. Proceedings of the ACMOOPSLA'92,1992:414-434.

      [8]PATTIE M.Concepts and experiments in computational reflection[J].ACM SIGPLAN Notices, 1987, 22(12): 147-155.

      [9]HIDEAKI O.A study on multi-model reflection framework in distributed environments[D]. Department of Computer Science, Keio University, 1995.

      [10]GILAD BRACHA, DAVID UNGAR.Mirrors:design principles for meta-level facilities of object-oriented programming languages[C]. In: Proceedings of the OOPSLA'04, Vancouver, British Columbia, Canada, 2004,331-344.

      [11]OU JIN-LIANG,JIN MAO-ZHONG.A method of metadata modeling to construct extensible and flexible system[J]. Journal of Computer Science,2005,32(7:)214-217.

      [12]GANG HUANG,HONG MEI,F(xiàn)U-QINGYANG.Runtime recovery and manipulation of software architecture of component-based systems[J].Automatic Software Engineering,2006(13): 257-281.

      (責(zé)任編輯:陳福時)

      猜你喜歡
      元數(shù)據(jù)
      元數(shù)據(jù)國際交換共享的客家古民居數(shù)字記憶工程建設(shè)
      基于來源的組織機(jī)構(gòu)元數(shù)據(jù)構(gòu)建研究
      檔案管理(2017年1期)2017-01-17 19:09:04
      元數(shù)據(jù)與社會化標(biāo)簽在微視頻搜索中的應(yīng)用
      高等院校智慧校園建設(shè)規(guī)劃與實現(xiàn)
      歸檔網(wǎng)絡(luò)信息價值判斷的元數(shù)據(jù)描述研究綜述
      利用VB讀取中國知網(wǎng)過刊數(shù)據(jù)提取元數(shù)據(jù)的研究
      財會信息資源元數(shù)據(jù)標(biāo)準(zhǔn)的研究
      基于隱語義模型和用戶信任的個性化推薦模型
      職業(yè)教育專業(yè)教學(xué)資源庫資源建設(shè)研究
      軟件(2015年11期)2016-01-12 07:52:36
      基于關(guān)聯(lián)數(shù)據(jù)的語義數(shù)字檔案館框架設(shè)計研究
      檔案管理(2015年4期)2015-06-25 20:53:51
      驻马店市| 长子县| 和硕县| 开化县| 永吉县| 刚察县| 前郭尔| 伊吾县| 凤山市| 桃源县| 三台县| 九江市| 清河县| 芮城县| 化德县| 重庆市| 罗江县| 依安县| 五峰| 肥乡县| 高清| 松溪县| 阿荣旗| 尚义县| 松潘县| 陈巴尔虎旗| 类乌齐县| 澎湖县| 罗山县| 平泉县| 南投县| 平湖市| 炉霍县| 三原县| 武川县| 忻城县| 林周县| 松阳县| 太原市| 上饶县| 鄂温|