《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于刻面分類和本體的類庫檢索
基于刻面分類和本體的類庫檢索
來源:微型機與應(yīng)用2010年第23期
余金山,劉云城
(華僑大學(xué) 計算機學(xué)院,福建 泉州 362011)
摘要: 介紹一種結(jié)合刻面分類描述和本體語義的類庫管理和檢索方法,通過刻面分類描述機制和本體的語義擴展與推理能力,有效地對類進行存儲和管理,方便用戶快捷準確地從類庫中尋找適合自己需要的類,從而更好地達到軟件復(fù)用的目的。
Abstract:
Key words :

摘  要: 介紹一種結(jié)合刻面分類描述和本體語義的類庫管理和檢索方法,通過刻面分類描述機制和本體的語義擴展與推理能力,有效地對類進行存儲和管理,方便用戶快捷準確地從類庫中尋找適合自己需要的類,從而更好地達到軟件復(fù)用的目的。
關(guān)鍵詞: 類庫;軟件復(fù)用;刻面分類;本體

    軟件復(fù)用是提高軟件生產(chǎn)力和質(zhì)量的一種重要技術(shù),已被視為是解決軟件危機、提高軟件生產(chǎn)率和質(zhì)量的現(xiàn)實可行途徑。目前研究最多的是基于軟構(gòu)件的復(fù)用,或稱之為基于構(gòu)件的軟件工程(CBSE)。而要實現(xiàn)CBSE,其最根本的問題是要有可用的軟構(gòu)件。完整的構(gòu)件庫是實現(xiàn)CBSE的關(guān)鍵,但各個開發(fā)者或開發(fā)機構(gòu)要創(chuàng)建各自的、絕對完整的構(gòu)件庫是不可能的,或在經(jīng)濟上與時間上是不可行的。
面向?qū)ο蠓椒ú粌H為軟件復(fù)用的實現(xiàn)提供了內(nèi)在的結(jié)構(gòu)性支持,也通過類庫的類而直接支持代碼復(fù)用。當(dāng)前,許多面向?qū)ο箝_發(fā)工具都建立了自己的類庫,類庫所起的作用越來越重要。類庫已成為一種現(xiàn)成的、寶貴的可復(fù)用的軟件資產(chǎn)。
    但是,類和軟構(gòu)件是有區(qū)別的,類庫也不是一般的軟構(gòu)件庫。目前大部分的類庫管理系統(tǒng)都存在一些問題,如只能通過瀏覽導(dǎo)航的方式查找類,這限制了程序開發(fā)員快速、準確、高效地檢索出所需的類。
    本文介紹一個結(jié)合刻面分類描述和本體語義的類庫管理和檢索方法,通過刻面分類描述機制和本體的語義擴展及推理能力,有效地對類進行存儲和管理,方便用戶快捷準確地從類庫中尋找適合自己需要的類,從而更好地達到軟件復(fù)用的目的。主要內(nèi)容有:給出一個合適的刻面模型對類進行不同維度的描述;XML在刻面分類描述中的應(yīng)用;在刻面分類的基礎(chǔ)上建立本體庫,用來表示類的整個分類體系,以及基于刻面分類和本體的檢索方法。
    目前國內(nèi)外對類庫的改進研究有:呂楓華等人提出的基于類相似性比較的類庫檢索方法,著重討論了比較類相似程度的近似度量方法,及其在類庫檢索中的應(yīng)用,并且給出了一個行之有效的基于規(guī)則的類庫檢索工具[1]。葉青青等人提出的基于語義與句法的Java類庫檢索方法,使得開發(fā)者可以使用自然語言描述待開發(fā)軟件的功能語義,提高可復(fù)用類庫查詢的精度[2]。徐正權(quán)等人提出的新的Softstore軟件庫系統(tǒng)模型[3],其主要思想是利用相對比較成熟的Internet以及數(shù)據(jù)庫管理技術(shù),對軟件資源進行有效管理。
1 類庫的刻面分類與描述
    類的整體說明信息包括類的語義信息和類的關(guān)系信息。類的語義信息包括類名、屬性、服務(wù)、所屬類型、所屬開發(fā)階段等信息。類的關(guān)系信息包括類與其他類的關(guān)系信息。
    在類庫中,每個元素都是一個類,這些類由屬性和作用于屬性之上的操作構(gòu)成。屬性可以分為靜態(tài)屬性和動態(tài)屬性。靜態(tài)屬性屬于所有對象的全體,意味著不存在該類的對象,靜態(tài)屬性也是存在的;動態(tài)屬性隨著對象的存在而存在,隨對象的改變而改變。操作也可以分為靜態(tài)操作和動態(tài)操作。兩者不同之處在于靜態(tài)操作可以不存在操作的主體,而動態(tài)操作必須要有操作的主體,即發(fā)起者。
    類與其他類之間具有幾種不同的關(guān)系[4]。
    (1)繼承關(guān)系。在繼承關(guān)系中子類自動繼承父類的屬性和方法,子類依賴父類而存在,如果單獨復(fù)用子類,而忽略了其父類,必然會導(dǎo)致信息的不完整,而出現(xiàn)復(fù)用錯誤。所以,作為依賴方的子類入庫時,需要同時保存父類的信息以及它們之間的繼承關(guān)系。
    (2)聚合關(guān)系。當(dāng)整體和部分的關(guān)系緊密時,整體不能缺少部分,所以作為依賴方的整體入庫時,需要同時保存部分類的信息和它們之間的聚合關(guān)系。
    (3)實例連接關(guān)系。一般通過對象的屬性來表示一個對象與另一個對象之間的依賴關(guān)系。一般來說,該關(guān)系并不影響對象作為獨立存在的類入庫。
    (4)消息連接。即所謂的類與類之間的合作關(guān)系。消息連接具有很強的依賴性。一方要通過調(diào)用另一方的服務(wù)來實現(xiàn)本身所提供的服務(wù),如果缺少對方的支持,則本身無法完成相應(yīng)的服務(wù)。因此作為依賴方的調(diào)用類入庫時,需要同時保存被調(diào)用類的復(fù)用信息以及它們之間的合作關(guān)系。
    通過以上幾種關(guān)系的分析可知,依賴性在各個關(guān)系中普遍存在。如果一個類不能單獨存在,必須依賴其他類存在并得以保持其完整性,則需要將被依賴類和依賴類以及它們之間的關(guān)系同時入庫保存。
    本系統(tǒng)用刻面分類表示類本身的信息,類與其他類之間的關(guān)系則通過本體描述。
    根據(jù)刻面分類描述的精簡、一致性、全面性、刻面正交性、易于理解的原則,選擇以下刻面和子刻面:
類的基本信息:類的ID、名稱、版本,類的入庫時間等。
類的功能:操作、操作對象、操作描述等。
    類的應(yīng)用環(huán)境:開發(fā)語言、硬件環(huán)境、操作平臺、數(shù)據(jù)庫平臺等。
    類的應(yīng)用領(lǐng)域:類的具體應(yīng)用范疇。
    類的刻面分類與術(shù)語示例如表1所示。

    用類的刻面信息建立類庫的刻面模型,使用XML語言進行描述,同時在類入庫的時候,根據(jù)用戶所提交的信息,自動生成XML文檔。例如DBconnect類的刻面信息:
<?xml?version?=“1.0”?encoding?=“GB2312”?standalone=“yes”??>
<?XML-stylesheet?type=“text/xsl”?href=“yxfqust.xsl”??>
<!-- class faceted information-->
<?xml version=“1.0”?>
<Class>
<!-- basic information -->
<BasicInfo>
<ID>001</ID>
<Name>DBConnect</Name>
<Version>1.0</Version>
<Provider>sun</Provider>
<EnrollTime>2000-01-01</EnrollTime>
</BasicInfo>
<!-- application platform -->
<ApplicationPlatform>
<DL>Java</DL>
<Database>mysql,sqlserver</Database>
<system>windows,linux</system>
</ApplicationPlatform>
<!-- application domain -->
<ApplicationDomain>information system</ApplicationDomain>
<!-- operation information -->
<OperationInfo>
<Operation>connect to database </Operation>
<OperationOn>database</OperationOn>
<OperationDesc>connect to database in different ways</OperationDesc>
</OperationInfo>
</Class>
    從具體問題的需求出發(fā),XML具有如下的突出優(yōu)點[5]:
    (1)可讀性。用XML描述對于任何用戶或是計算機程序來說,都容易閱讀和處理。
    (2)XML的自描述性使得客戶端在收到數(shù)據(jù)的同時也能理解數(shù)據(jù)的邏輯結(jié)構(gòu)和含義,從而能直接對這些自描述的XML文件中的數(shù)據(jù)進行操作,增強了檢索的語義和作用。
    (3)表示的獨立性和內(nèi)容的獨立性帶來的靈活性。內(nèi)容與表示的分離,支持用戶界面?zhèn)€性化。表示和操作的分離,支持不同數(shù)據(jù)源的無縫連接。
    (4)強大的表達能力。無論是何種數(shù)據(jù)源,新的、老的,是否異構(gòu),XML都可以用統(tǒng)一的模式進行描述和訪問。
    (5)可擴展性。XML可以在不破壞現(xiàn)有結(jié)構(gòu)和系統(tǒng)的情況下增加新的數(shù)據(jù)字段,不影響新老客戶端的使用。
XML的這些特點可以為使用者在需要訪問不同的源類庫時提供標(biāo)準的統(tǒng)一接口。
    檢索采用XML樹的索引技術(shù)和模型匹配檢索算法[6-8]。
    一個刻面描述可以展開成為一棵刻面描述樹,而XML文檔的數(shù)據(jù)結(jié)構(gòu)就是樹狀結(jié)構(gòu)。對一個刻面描述方案,可以將其中的刻面和子刻面分別映射為樹中對應(yīng)的父節(jié)點和子節(jié)點,對采用某個刻面描述方案描述的類,可以將其對應(yīng)的刻面描述術(shù)語映射為對應(yīng)的葉子節(jié)點。
    對于類的查詢也可以相應(yīng)地表示為一棵查詢樹,即將查詢中出現(xiàn)的刻面名和子刻面名轉(zhuǎn)化為對應(yīng)的父節(jié)點和子節(jié)點,將查詢刻面的術(shù)語值轉(zhuǎn)化為葉子節(jié)點,并且用一個虛擬的根節(jié)點將它們組合成為一棵查詢樹。因此,對于類的檢索就轉(zhuǎn)化為查詢樹與庫中類的刻面描述樹之間的匹配。
    用戶在客戶端輸入查詢條件后,由服務(wù)層中的元數(shù)據(jù)服務(wù)組件負責(zé)根據(jù)用戶查詢條件生成X-Query查詢語句,并進行同義詞與近義詞處理。然后將生成的X-Query查詢語句通過數(shù)據(jù)訪問接口的查詢解釋器分解查詢請求,按照數(shù)據(jù)映射提供的存儲規(guī)則與對象合成器交互,使用XML數(shù)據(jù)的無序樹匹配的松弛匹配技術(shù)進行檢索。
2 建立本體表示類庫中類的依賴性關(guān)系
    前面的分析指出類庫中的類普遍存在依賴性關(guān)系,這些依賴性關(guān)系具有很強的語義信息,例如繼承、某些類不能單獨存在必須依賴其他類而存在才得以保持其完整性等。這里引入本體的主要目的為:(1)利用本體描述類之間的關(guān)系;(2)通過本體擴展類庫的刻面分類描述體系,利用本體具有的良好的概念層次結(jié)構(gòu)和對邏輯推理的支持,實現(xiàn)基于語義上的匹配檢索,從而提高查全率和查準率。
    本體不僅可以描述類與類之間的各種關(guān)系及刻面術(shù)語之間的同義詞和上下文關(guān)系,還可以描述刻面術(shù)語之間所具有的其他各種關(guān)系,從而盡量從語義上來建立類信息的全面描述。
    (1)概念類。概念類表示特定領(lǐng)域中的一組或一類實體,每個概念的不同特點可以由不同的屬性描述。如工作描述、功能、行為。語義上講,它表示的是對象的集合。
    (2)公理是表示某一個特定領(lǐng)域內(nèi)的一些永真式,用來描述和解釋元素及其元素之間的關(guān)聯(lián)和約束問題。
    (3)關(guān)系代表概念類之間的關(guān)系,形式上定義為n維的笛卡爾乘積的子集。基本關(guān)系是類的層次關(guān)系,即所謂的繼承關(guān)系。除此之外,還有連接關(guān)系,連接關(guān)系表示除了上下位關(guān)系之外的其他關(guān)系。具體關(guān)系如表2所示。

    (4)實例代表元素。從語義上可以理解為對象。
    本體的表示采用基于Web的本體描述語言O(shè)WL。OWL能夠用于清晰地表達詞匯表中詞匯以及詞匯之間的本體關(guān)系。用戶需要借助本體查詢語言來對本體進行利用。本體查詢語言作為應(yīng)用程序使用本體的一個接口。
本體的開發(fā)使用由HP實驗室研究開發(fā)的基于Java的開放源代碼Jena。選擇Jena的理由是:它為解析RDF、RDFS、OWL和SPARQL提供了一個編程環(huán)境和一個基于規(guī)則的推理引擎;Jena允許將數(shù)據(jù)保存到硬盤或OWL文件或關(guān)系數(shù)據(jù)庫中;Jena的推理機制支持在創(chuàng)建模型的時候?qū)⑼评頇C與模型相關(guān)聯(lián),能實現(xiàn)基于規(guī)則的推理。
    對OWL處理而言,語義邏輯的處理才是推理機制的實現(xiàn)。Jena提供的OWL支持包括:方便地訪問標(biāo)準OWL的類和屬性;支持多種版本的OWL規(guī)范;在基本的查詢中通過subClassOf這樣的關(guān)系來實現(xiàn)類的層級訪問和使用。
    對于類庫檢索,本體庫中關(guān)系的重要意義在于支持語義推理和擴展查詢,以提高查全率和查準率。要進行基于本體的類庫檢索,首先應(yīng)該建立一個本體庫,針對類庫進行分析和抽取概念:類庫、類、類的基本信息、類的刻面信息、類的接口信息、刻面、術(shù)語等。同時分析概念與概念之間的關(guān)系。
用OWL語言來描述類庫本體可在描述邏輯的基礎(chǔ)上建立概念分類層次,然后定義概念類的屬性和創(chuàng)建類的實例。
    首先確定本體所包含的概念和概念的層次,如類庫中出現(xiàn)的概念包括以下幾個實體:Library、Class、Facet、Terms等。
    可以用OWL語言定義如下:
    (1)OWL的概念通過owl:Class定義。
<owl: Class rdf:ID=”Library”>
<rdfs: label>類庫</rdfs:label>
</owl: Class>
(2)概念之間的繼承關(guān)系可以用<rdfs:subClassOf>表示。如功能刻面是刻面的一個子概念:
<owl: Class rdf: ID=”OperationFacet”>
<rdfs: label>功能刻面</rdfs:label>
<rdfs: subClassOf rdf resource=”#Facet”>
</owl: Class>
(3)定義概念的屬性。屬性是一個二元的關(guān)系。OWL定義了兩種屬性,即owl:Datatype Property和owl:Object Property。前者是概念的成員和數(shù)據(jù)類型,后者是不同概念之間的關(guān)系。如定義一個DatatyperProperty屬性的className:
<owl: DatatypeProperty rdf: ID=“className”>
<rdfs: domain rdf: resource=“Class”>
<rdfs: range rdf: resource=“&xsd;string”>
</owl: DatatypeProperty>
    下面定義一個ObjectProperty屬性的containClass:
<owl: ObjectProperty rdf: ID=”containClass”>
<rdfs: domain rdf resouce=“#Library”/>
<rdfs: range rdf:resource=“#Class”>
</owl: ObjectProperty>
    (4)傳遞性TransitiveProperty
    對稱性SymmetricProperty、自反性Inverseof、等價傳遞性InverseFunctionalProperty。
    (5)定義類與類之間的等價關(guān)系
<owl:InverseFunctionalProperty rdf:ID=”equals”>
<owl:inverseOf rdf:resoure=”#equals”/>
<rdfs:domain rdf:resource=”#class1”>
<rdfs:range rdf:resoure=”#class2”/>
<rdf type rdf:resource=http://www.w3.org/2002/07/owl#TransitiveProperty/>
<rdf type rdf:resource=”http://www.w3.org/2002/07/owl#ObjectProperty”/>
<rdf type rdf:resource=”http://www.w3.org/2002/07/owl#SymmetricProperty”/>
<rdf type rdf:resource=”http://www.w3.org/2002/07/owl#FunctionalProperty”/>
    Owl可以用來定義和表示類與類、類與屬性之間豐富的語義關(guān)系。在面向?qū)ο笾蓄惻c類之間的關(guān)系是確定的,如繼承、依賴、聚合等。
    本體庫的建立是相當(dāng)麻煩的,如果能夠在軟件設(shè)計過程中抽取本體,則以后本體的建立會節(jié)省不少的時間。目前,將面向?qū)ο蟮乃枷肱c本體建模的思想相結(jié)合得到了一定的研究,這些研究成果對領(lǐng)域本體的構(gòu)建有一定的推進作用。例如參考文獻[9]給出的一種從UML類圖到OWL映射方法。
3 加入本體后的類庫檢索
    在進行檢索時,首先利用本體知識對檢索條件進行預(yù)處理,對檢索條件進行加強與擴展,然后檢索引擎用處理后的條件進行檢索,將得到更符合用戶需求的返回結(jié)果。利用本體含有的語義信息檢索出語義上匹配的類。
基于本體描述的類庫,可以分作三層:最底層為數(shù)據(jù)服務(wù)層,存放刻面描述完畢的類實體,實現(xiàn)對類的存儲,包括本體庫和XML數(shù)據(jù)庫等;中間層為功能應(yīng)用層,包括本體的推理檢索模塊,數(shù)據(jù)訪問等功能,主要采用組件開發(fā)技術(shù)來完成功能;最外層是表示層,負責(zé)與用戶的交互及為用戶顯示界面和提供一個可視化的瀏覽接口。如圖1所示。


    實現(xiàn)采用MVC架構(gòu)的Struts。
    本體的查詢模塊通過Jena提供的推理機接口,利用同義、上下位和語義關(guān)系,或者第三方推理機推理出隱含的語義,從而使得查詢得以擴展。利用Owl本體概念的描述邏輯進行相關(guān)和相近概念的推理運算。
    (1)用戶通過查詢界面輸入查詢條件。
    (2)生成初始查詢,如分詞、關(guān)鍵詞匹配。
    (3)查詢擴展。對初始查詢進行語義擴展,然后把擴展后的術(shù)語集通過查詢界面顯示給用戶。本體擴展包括以下幾種類型:同義擴展、層次擴展、屬性擴展、公理擴展和規(guī)則擴展。返回的術(shù)語集包括術(shù)語之間的關(guān)系以及相應(yīng)的解釋。
    (4)細化:用戶根據(jù)返回的術(shù)語集進一步明確自己的需求。
    (5)執(zhí)行查詢和返回查詢結(jié)果,同時考慮將檢索結(jié)果按照查詢匹配度進行排序。
4 實驗評測
    環(huán)境和工具:Tomcat服務(wù)器,Eclipse開發(fā)平臺,Protégé,sql server2000數(shù)據(jù)庫,Jena推理機,Java類庫中的資源。
    類庫常規(guī)關(guān)鍵詞檢索方法與本系統(tǒng)檢索方法的效率對比,如表3所示。

    類作為面向?qū)ο笤O(shè)計中的重要元素,為軟件復(fù)用的實現(xiàn)提供了良好的條件。為了改進現(xiàn)有的類庫檢索不方便、效率低等問題,本系統(tǒng)在刻面描述的基礎(chǔ)上,結(jié)合本體語義檢索的思想,較好地解決了傳統(tǒng)的類庫檢索方法無法真正理解用戶的檢索意圖,以及查全率和查準率相對差的缺點,用戶可方便快捷地從類庫中尋找適合自己需要的類,從而更好地達到軟件復(fù)用的目的。下一步工作將是實現(xiàn)類庫中的類的刻面自動分類和本體信息提取。
參考文獻
[1] 呂楓華,王和珍,費翔林.類相似性的比較及其在類庫檢索中的應(yīng)用[J].軟件學(xué)報,1997,8(4):278-282.
[2] 葉青青,江水.基于語義與句法的Java類庫檢索方法與系統(tǒng)[J].計算機工程,2004,30(23).
[3] 徐正權(quán).類庫系統(tǒng)研究及其與軟件庫的融合[J].計算機與數(shù)字工程,2007,38(6):67-69.
[4] 張文娟.面向?qū)ο筌浖_發(fā)工具集中類庫和模型庫的研究與實現(xiàn)[J].計算機工程,2002,28(3).
[5] 余金山.基于XML,Tamino和CORBA的軟構(gòu)件管理與檢索技術(shù)[J].華僑大學(xué)學(xué)報,2008,29(4):518-521.
[6] MICHIELS P. MIHAILA G A. SIMEON J. Put a tree pattern in your algebra[C]. IEEE 23rd International Conference on Data Engineering, 2007. ICDE 2007. IEEE 2007: 246-255.
[7] 徐如志,錢樂秋,程建平,等.基于XML的軟件構(gòu)件查詢匹配算法研究[J].軟件學(xué)報,2003,14(7).
[8] 張海龍,彭鑫.基于刻面與本體的資源描述與檢索系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機應(yīng)用與軟件,2007,24(9).
[9] 劉振中,劉勇.基于UML類圖的OWL本體映射方法[J].計算機工程,2009,35(13):40-45.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。