亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種支持構(gòu)件關(guān)系描述的構(gòu)件庫信息模型

        2011-04-12 00:00:00張經(jīng)國,郭民
        現(xiàn)代電子技術(shù) 2011年19期

        摘 要:隨著軟件復用技術(shù)研究的深入和軟件構(gòu)件庫應(yīng)用規(guī)模的擴大,構(gòu)件庫中構(gòu)件的種類日益增多,構(gòu)件間關(guān)系日漸復雜。這就需要對傳統(tǒng)的構(gòu)件庫信息模型進行擴展,在完整描述構(gòu)件自身信息的基礎(chǔ)上,增加對構(gòu)件間關(guān)系信息描述的支持。為了有效地發(fā)揮構(gòu)件庫的作用,提出的軟件構(gòu)件庫信息模型在已有模型的基礎(chǔ)上采用刻面描述機制并增加了對構(gòu)件間關(guān)系的描述,利用該模型不僅可以有效地描述構(gòu)件的各種信息,還使得用戶可以根據(jù)構(gòu)件之間的關(guān)系檢索構(gòu)件。

        關(guān)鍵詞:構(gòu)件庫; 構(gòu)件庫數(shù)據(jù)模型; 構(gòu)件關(guān)系; 刻面分類

        中圖分類號:

        TN911-34; TP311

        文獻標識碼:A

        文章編號:1004-373X(2011)19

        -0140

        -04

        Design of Component Library Information Model Supporting

        Component Relationship Description

        ZHANG Jing-guo, GUO Min

        (College of Electronic and Control Engineering, Beijing University of Technology, Beijing 100124, China)

        Abstract: With the deepening of the research on software reuse technique and the development of component library scale, the categories of components stored in the library are growing rapidly, and the relations among components become more and more complex. Thus, the traditional component library information model needs to be expanded. Based on a complete component information description, the description of relations among components is added. In order to effectively play the role of library, a component library information model is presented. On the basis of the existing model, it adopts facet classification mechanism and adds relations among components. This model can be used to describe all kinds of component information effectively, and allow users to retrieve components according to the relations among the components.

        Keywords: component library; component library information model; component relation; facet classification

        收稿日期:2011-05-21

        0 引 言

        軟件復用對于提高開發(fā)效率和軟件質(zhì)量有著巨大的潛力。從某種意義上講,軟件復用可以通過恰當?shù)厥褂脴?gòu)件庫得以實現(xiàn)。在構(gòu)件庫支持下,軟件工程師可以“取眾家之長”,避免重復開發(fā)已有的軟件。軟件構(gòu)件庫是軟件復用中管理可復用構(gòu)件的基礎(chǔ)設(shè)施,它為基于構(gòu)件的軟件開發(fā)(CBSD)中的構(gòu)件生產(chǎn)和構(gòu)件復用兩方面工作之間建立了橋梁。要減小復用成本,使用者能夠正確理解構(gòu)件,更好地復用軟件構(gòu)件,就需要對構(gòu)件進行描述和分類[1]。此外,構(gòu)件之間的關(guān)系對于構(gòu)件庫而言是非常重要的資源[2],因此,構(gòu)件庫的信息模型不僅能夠描述構(gòu)件的基本信息,還應(yīng)該能夠明確地表示構(gòu)件之間的關(guān)系。然而現(xiàn)有的模型缺乏對分類、關(guān)系信息相應(yīng)的描述機制[3]。例如:作為Web Services注冊和發(fā)現(xiàn)機制的UDDI,定義了其核心數(shù)據(jù)結(jié)構(gòu)以及所有的應(yīng)用程序接口,使用同步復制技術(shù)在各個節(jié)點之間復制信息。但是,UDDI面向電子商務(wù)應(yīng)用的性質(zhì)使其不能很好地對其他類型的構(gòu)件進行描述和管理,也不能描述構(gòu)件間關(guān)系,很難滿足作為構(gòu)件庫數(shù)據(jù)模型的需要[4]。目前,構(gòu)件的刻面分類描述是一種正逐步得到重視與應(yīng)用的描述方法。例如,REBOOT,NATO提出的構(gòu)件分類方法是采用了基于刻面的描述機制;而青鳥構(gòu)件庫中的構(gòu)件則是采用刻面分類為主、多種分類模式結(jié)合的方法對構(gòu)件進行分類描述[5]。

        1 軟件構(gòu)件庫信息模型

        軟件構(gòu)件庫系統(tǒng)是一類數(shù)據(jù)庫管理系統(tǒng),它不僅具備數(shù)據(jù)庫的基本特征和功能,還具備存儲構(gòu)件和構(gòu)件相關(guān)信息的能力[6]。因此,構(gòu)件庫中的數(shù)據(jù)主要包括構(gòu)件實體本身、描述性信息和構(gòu)件庫的使用信息。描述性信息包括以下幾方面[7]:

        (1) 構(gòu)件的語義描述。描述構(gòu)件功能和用途,精確定義構(gòu)件語義。

        (2) 構(gòu)件分類。對構(gòu)件相同特征的聚類。

        (3) 構(gòu)件技術(shù)環(huán)境。包括開發(fā)工具、配置方法和部署環(huán)境等。

        (4) 構(gòu)件的狀態(tài)。包括版本、歷史等時間相關(guān)構(gòu)件的屬性。

        模型總體由3部分組成,即基本描述部分、分類描述部分和關(guān)系描述部分,如圖1所示。

        圖1 模型總體結(jié)構(gòu)圖

        本文設(shè)計的軟件構(gòu)件庫信息模型在以上信息的基礎(chǔ)上,還包括了構(gòu)件間關(guān)系的描述,從而豐富了以往的信息模型,也為構(gòu)件庫的使用增添了一種基于構(gòu)件關(guān)系導航的查詢方式。

        1.1 基本描述部分

        基本描述包括構(gòu)件的語義描述、技術(shù)環(huán)境、構(gòu)件的狀態(tài)以及構(gòu)件庫的使用信息。其中構(gòu)件庫的使用信息包括用戶對構(gòu)件庫的使用情況,主要記錄用戶上傳和下載構(gòu)件的相關(guān)信息。

        (1) 用戶。構(gòu)件庫的用戶使用提供者和使用者來進行描述,其中提供者包括構(gòu)件提供商的信息或制作者的信息。它記錄了提供者的聯(lián)系方式(如Emails,Phonenum等)和登錄相關(guān)信息(UserID、Password等)。使用者實體與構(gòu)件實體之間是多對多的關(guān)系,即一個使用者可以使用多個構(gòu)件,而一個構(gòu)件也可以被多個使用者進行使用。因此,抽象出另外一個實體下載信息來將其關(guān)聯(lián),如圖2所示。然而下載信息實體與構(gòu)件之間也是多對多的關(guān)系,即一個構(gòu)件可以出現(xiàn)在多個下載信息實體中,一個下載信息實體可以包含多個構(gòu)件實體。因此,再抽象出了另一個實體構(gòu)件下載,解決它們之間的多對多的關(guān)系。

        (2) 構(gòu)件。表示的是構(gòu)件庫中的構(gòu)件的基本信息(名稱、尺寸、版本號等)和其他擴展信息(構(gòu)件地址、內(nèi)容摘要、價格等)。其中,考慮到構(gòu)件運行效果是以圖片的方式展現(xiàn)給用戶,而圖片的大小和展現(xiàn)圖片數(shù)量的不同,因此,圖片單獨存儲于文件系統(tǒng)中,使用PictureUrl來與圖片實體進行關(guān)聯(lián)。

        1.2 分類描述部分

        構(gòu)件的有效分類對于構(gòu)件的檢索和獲取起著非常重要的作用,是軟件復用成功的關(guān)鍵[8]。刻面的分類策略與一般的層次分類策略相比,刻面分類策略更易于修改,因為對一個刻面的修改不會影響到其他的刻面。同時,每個刻面對應(yīng)一個結(jié)構(gòu)化的術(shù)語空間,避免了一般的關(guān)鍵詞分類策略的雜亂無章。在查詢時使用者通過選擇刻面術(shù)語,可以明確地限定構(gòu)件的范疇,不會有遺漏的構(gòu)件。隨著構(gòu)件庫中構(gòu)件種類的不斷增多,描述構(gòu)件的術(shù)語會不斷的豐富。當刻面的術(shù)語空間變得很大時,使用平鋪式的結(jié)構(gòu)組織術(shù)語將會使用戶不能迅速找到所需的術(shù)語。因此,通過定義術(shù)語之間的關(guān)系,以層次結(jié)構(gòu)的方式組織刻面與術(shù)語可以有效的解決該問題,即通過將每個刻面所對應(yīng)的術(shù)語空間中的術(shù)語進行歸類形成術(shù)語、子術(shù)語的關(guān)系。這樣用戶可以沿著刻面、術(shù)語與子術(shù)語之間的關(guān)系迅速對術(shù)語進行定位。 如圖3所示,在刻面術(shù)語空間中,TermPath用來描述術(shù)語在刻面術(shù)語樹中的位置,TermLevel標識術(shù)語屬于哪個層次,例如“1”代表的是刻面,“2”為術(shù)語。構(gòu)件描述實體用來記錄對構(gòu)件的詳細描述信息,描述串中的術(shù)語來自刻面術(shù)語空間。

        圖2 基本描述模型

        圖3 分類描述模型

        1.3 關(guān)系描述部分

        為了給使用者在查詢構(gòu)件時提供方便,同時也為了更好地復用構(gòu)件,構(gòu)件庫為構(gòu)件實體間預定義了以下幾種關(guān)系:

        (1) 被實現(xiàn)關(guān)系。主要是指處于軟件生命周期相鄰階段(相鄰的抽象層次)的構(gòu)件間對應(yīng)關(guān)系。

        (2) 版本關(guān)系。主要是指處于同一個構(gòu)件演化系列中的構(gòu)件間關(guān)系。

        (3) 包含關(guān)系。主要是指不同形態(tài)的構(gòu)件間的包含關(guān)系。

        (4) 協(xié)作關(guān)系。與一個構(gòu)件具有協(xié)作關(guān)系的構(gòu)件主要是指與該構(gòu)件相互合作、共同完成一個特定任務(wù)的構(gòu)件。

        構(gòu)件間的關(guān)系是復雜的,在關(guān)系模型設(shè)計時必須考慮以下幾方面:

        (1) 關(guān)系的復雜性。以上4種關(guān)系都是一對多的關(guān)系,如被實現(xiàn)關(guān)系:軟件生命周期中的需求分析構(gòu)件可以采用多種軟件設(shè)計方式來實現(xiàn),而每個軟件設(shè)計可以由多種編碼方式來實現(xiàn)。

        (2) 構(gòu)件關(guān)系存在的復雜性。一個構(gòu)件在庫中可以與其他構(gòu)件沒有任何關(guān)系,即不存在以上4種關(guān)系;也可以與其他構(gòu)件存在一個或多個關(guān)系。

        (3) 關(guān)系的維護。由于以上2個因素的存在使得構(gòu)件間關(guān)系的維護變得復雜,然而,關(guān)系描述模型的設(shè)計必須使得當發(fā)生添加、修改或刪除構(gòu)件間關(guān)系時不影響其他已有的關(guān)系。

        根據(jù)以上因素,設(shè)計的關(guān)系描述模型如圖4所示。ComRelType實體包含4個屬性來描述構(gòu)件間關(guān)系類型,RelTypeID用來標識不同的關(guān)系,取值分別為:1,2,4,8?!?”代表被實現(xiàn)關(guān)系,“2”版本關(guān)系,“4”代表包含關(guān)系,“8”代表協(xié)作關(guān)系。Components實體中Status用來表示該構(gòu)件存在哪幾種關(guān)系。比如,Status值為“0”時,表明該構(gòu)件與庫中其他構(gòu)件不存在以上4種關(guān)系;值為“1”時,表明構(gòu)件在該構(gòu)件庫中存在被實現(xiàn)關(guān)系;當Status值為“3”時表明該構(gòu)件與其他構(gòu)件存在被實現(xiàn)關(guān)系和版本關(guān)系。由CompRelation實體來描述構(gòu)件間的關(guān)系,CompID與CompID1,CompID2之間的數(shù)據(jù)完整性和一致性是通過主外鍵關(guān)系來設(shè)定的。將關(guān)系的維護限定在對一個實體的處理上,使得關(guān)系維護變得方便。

        圖4 關(guān)系描述模型

        2 構(gòu)件描述樹字符串生成算法

        基于刻面描述的構(gòu)件檢索問題最終可以歸結(jié)為樹匹配的問題[9],即將對構(gòu)件刻面描述的樹型結(jié)構(gòu)與查詢刻面樹進行匹配。把基于刻面描述的構(gòu)件樹和查詢樹用組成構(gòu)件的路徑字符串連接表示,就可以實現(xiàn)樹的匹配到相應(yīng)結(jié)點路徑匹配的轉(zhuǎn)化問題。用子字符串代表某刻面屬性路徑,即將路徑匹配轉(zhuǎn)換為字符串的匹配,應(yīng)用相應(yīng)的高效字符串查詢方法來實現(xiàn)構(gòu)件查詢的目的。

        在匹配之前首先要解決的問題是如何生成構(gòu)件描述樹以及查詢樹的路徑字符串[10]。根據(jù)基本描述模型和分類描述模型的介紹可知,構(gòu)件描述樹和查詢樹的信息均來自于刻面術(shù)語空間,分別由提供者和使用者這兩個角色提供,因此,它們的樹型結(jié)構(gòu)可以采用相同的算法生成,在這里以構(gòu)件描述樹字符串的生成來說明該算法。

        2.1 構(gòu)件描述樹的表示

        定義(樹) 對于一棵樹TIT=(V,E,root(T))。其中,V表示一個有限的節(jié)點集;root(T)∈V表示樹的根節(jié)點;E表示邊集,它是V上的一個二元關(guān)系,它滿足反自反、反對稱、可傳遞性。

        在程序設(shè)計中以類的方式來設(shè)計樹的數(shù)據(jù)結(jié)構(gòu)如圖5所示。樹中節(jié)點使用Node類實現(xiàn),構(gòu)件描述樹使用CompTree類實現(xiàn);label字段為構(gòu)件描述樹中刻面術(shù)語的ID值(如分類模型中TermID),wasVisited屬性表示該節(jié)點是否被訪問過。在CompTree類中,構(gòu)件樹節(jié)點集使用類數(shù)組Nodes來表示,節(jié)點間的關(guān)系使用adjMatrix二維數(shù)組來表示。

        圖5 構(gòu)件描述樹類圖

        2.2 構(gòu)件描述樹字符串生成算法描述與分析

        2.2.1 算法描述

        輸入:構(gòu)件的刻面術(shù)語描述信息。

        輸出:構(gòu)件描述樹字符串CompDesString。

        (1) 獲取構(gòu)件描述樹中各節(jié)點的值和節(jié)點間的關(guān)系并將所有Node.isVisted初始化為1和adjMatrix初始化為0;

        (2) 分別將各節(jié)點值和邊賦予類數(shù)組Nodes[NUM_VERTICES]和鄰接矩陣adjMatrix[NUM_VERTICES][NUM_VERTICES];

        (3) 將根節(jié)點標記為訪問過Nodes[0].wasVisited=true,并壓入棧gStack中;

        (4) while(gStack.Count>0)

        (5) for(int j=0;j<= NUM_VERTICES-1;j++);

        (6) if(當前節(jié)點v與另一節(jié)點j存在邊關(guān)系節(jié)點j未被訪問過)

        (7) Return 節(jié)點v=j

        (8) else v=-1;

        (9) endfor

        (10) if(v==-1)

        (11) if(gStack.Count>3)

        (12) {

        (13) 調(diào)用方法CreatPathString()將堆棧gStack的數(shù)據(jù)連接形成一條路徑字符串并在末端添加后綴“#”;

        (14) 調(diào)用方法JoinPathString()將各條路徑字符串連接成構(gòu)件描述字符串CompDesString;

        (15) }

        (16) endif

        (17) gStack.Pop();

        (18) else

        (19) {

        (20) Nodes[v].wasVisted=true;

        (21) gStack.Push(v);

        (22) }

        (23) endwhile

        (24) return CompDesString

        2.2.2 算法分析

        本文提出的構(gòu)件描述樹字符串生成算法是在圖的表示和圖的深度優(yōu)先遍歷思想的基礎(chǔ)上提出的,樹中各節(jié)點使用類Node來表示,各節(jié)點邊的關(guān)系存儲于鄰接矩陣adjMatrix中。在構(gòu)件描述樹中,每條從根節(jié)點到葉子節(jié)點的路徑表示了該構(gòu)件在刻面下的語義以及分類情況,而圖的深度優(yōu)先遍歷是遍歷完整棵樹,因此結(jié)合實際情況,將圖的深度優(yōu)先遍歷算法修改為遍歷每條路徑將形成的所有路徑字符串加上分隔符“#”連接成整棵樹的長字符串,在后續(xù)的工作中使用查詢字符串與庫中所有構(gòu)件描述樹字符串進行匹配。

        雖然該算法的時間復雜度是O(n2),但是它具有很強的適應(yīng)性,即當刻面術(shù)語空間中刻面以及術(shù)語不斷擴充時,構(gòu)件描述樹中各節(jié)點的邊關(guān)系也會變得很多,它可以很好地適應(yīng)該變化。

        3 結(jié) 語

        構(gòu)件庫是支持基于構(gòu)件軟件開發(fā)(CBSD)的重要基礎(chǔ)設(shè)施。隨著軟件復用和構(gòu)件技術(shù)的發(fā)展,構(gòu)件的種類日益增多,構(gòu)件關(guān)系也越來越復雜。構(gòu)件庫信息模型應(yīng)該能夠適應(yīng)隨著這些變化而產(chǎn)生的需求。本文對傳統(tǒng)的構(gòu)件庫信息模型進行了擴展,在完整描述構(gòu)件自身信息的基礎(chǔ)上,增加了對構(gòu)件間關(guān)系信息描述的支持。利用本模型不僅可以有效地描述構(gòu)件的各種信息,還使得用戶可以根據(jù)構(gòu)件之間的關(guān)系來檢索構(gòu)件。最后給出了構(gòu)件描述樹字符串生成算法,雖然該算法的時間復雜度是O(n2),但是可以很好地適應(yīng)樹中邊關(guān)系很多的情況。

        參 考 文 獻

        [1]MILI H, MILI F, MILI A. Reusing software: issues and research directions \\. IEEE Transaction on Software Engineering, 1995, 21(6): 528-562.

        [2]薛大宇,潘穎,謝冰,等.一種支持構(gòu)件關(guān)系管理的關(guān)系描述模型[C]//2004全國軟件和應(yīng)用學術(shù)會議論文集.北京:機械工業(yè)出版社,2004:50-55.

        [3]李琰,鄒艷珍,潘穎,等.一種可擴展的構(gòu)件庫數(shù)據(jù)模型[J].計算機科學,2006,33(5):282-286.

        [4]鄒艷珍,謝冰,李琰,等.軟件構(gòu)件管理規(guī)范信息模型標準介紹[J].信息技術(shù)與標準化,2006(6):14-18.

        [5]CHANG Ji-chuan, LI Ke-qin, GUO Li-feng, et al. Representing and retrieving reusable software components in JB system \\. Electronics Journal, 2000, 28(8): 20-24.

        [6]王淵峰,朱沅.刻面分類構(gòu)件的匹配模型[J].軟件學報,2003,14(3):401-408.

        [7]王志堅, 費玉奎,婁源清.軟件構(gòu)件技術(shù)及其應(yīng)用[M].北京:科學出版社,2005.

        [8]DANIEL Lucredio, ANTONIO Francisco do Prado. A survey on software components search and retrieval \\. \\: St. Louis,MO,USA: IEEE Computer Society, 2005.

        [9]WANG Shun-yan, ZHONG Luo,JIANG De-sheng,et al. Facet description and searching of component resource \\// IEEE International Conference on Computer Science and Software Engineering. \\: IEEE, 2008: 24-31.

        [10]張韜.基于刻面描述的構(gòu)件檢索方法及實現(xiàn)[D].武漢:華中科技大學,2008.

        北岛玲亚洲一区二区三区| 香蕉国产人午夜视频在线观看| 日韩精品中文字幕 一区| 大陆少妇一区二区三区| www夜片内射视频在观看视频| 最近中文字幕视频完整版在线看| 日韩高清无码中文字幕综合一二三区 | 无码任你躁久久久久久久| 日韩一级特黄毛片在线看| 日韩精品一区二区亚洲av性色| 亚洲第一女人的天堂av| 亚洲av无码专区在线观看成人| 无码夜色一区二区三区| 午夜国产精品视频免费看电影| 男女视频网站在线观看| 五月天中文字幕mv在线| 欧美老妇与禽交| 亚洲国产高清在线视频| 户外精品一区二区三区 | 久久99精品这里精品动漫6| 色婷婷av一区二区三区丝袜美腿 | 成人激情视频在线手机观看| 伊人精品久久久久中文字幕| 国产精品-区区久久久狼| 日本岛国大片不卡人妻| 蜜桃传媒网站在线观看| 凹凸在线无码免费视频| 二区在线视频| 日韩av一区二区无卡| 曰韩无码av一区二区免费| 亚洲一区精品无码色成人| 亚洲中字幕永久在线观看| 亚洲精品一区二区在线免费观看 | 国产高潮流白浆免费观看不卡 | 亚洲av高清一区二区三| 99精品一区二区三区无码吞精| 免费国产一级特黄aa大片在线| 亚洲综合一区二区三区久久| 少妇爆乳无码专区| 精品久久久久久国产| 性感人妻中文字幕在线|