張力生+年歡+宋輝+雷大江
摘要:從領(lǐng)域模型生成代碼是MDA中模型驅(qū)動(dòng)開發(fā)過程的重要環(huán)節(jié)。工程中領(lǐng)域模型一般用UML類圖表示,然后生成數(shù)據(jù)訪問層代碼。UML組合關(guān)聯(lián)的語(yǔ)義定義不明確,導(dǎo)致從領(lǐng)域模型生成的數(shù)據(jù)訪問層代碼不能精確地實(shí)現(xiàn)組合關(guān)聯(lián)語(yǔ)義問題的出現(xiàn)。本文研究了描述邏輯CATS、ALCHOIQbr和知識(shí)庫(kù)查詢,在這三種形式化工具的基礎(chǔ)上提出描述邏輯CATSbqr,使用CATSbqr分析了組合關(guān)聯(lián)的語(yǔ)義變化;然后表示了領(lǐng)域模型中增加復(fù)雜對(duì)象的操作語(yǔ)義,并給出了在數(shù)據(jù)訪問層實(shí)現(xiàn)增加操作的算法;最后將這種表示方法應(yīng)用到銷售單這個(gè)典型場(chǎng)景。本文的研究工作為建模工具實(shí)現(xiàn)UML組合關(guān)聯(lián)自動(dòng)轉(zhuǎn)換成數(shù)據(jù)訪問層代碼提供了理論基礎(chǔ)。
關(guān)鍵詞:領(lǐng)域模型;組合關(guān)聯(lián);描述邏輯
中圖分類號(hào):TP301
文獻(xiàn)標(biāo)識(shí)碼:A
DOI:10.3969/j.issn.1003-6970.2015.06.013
本文著錄格式:張力生,年歡,宋輝,等,領(lǐng)域模型中關(guān)聯(lián)語(yǔ)義的描述邏輯表示與應(yīng)用[J].軟件,2015,36(6):66-74
RepresentationandApplicationofDescriptionLogicintheSemanticAssociationinDomainModel
ZHANGLi-shengl,NIANHuanl,SONGHuj2,LEIDa-jiangl[Abstract]:Generatingcodefromthedomainmodelisanimportantpartofmodel-drivendevelopmentprocessinMDA.DomainmodelexpressedbyUMLclassdiagramcangeneratedataaccesslayercode.TheindistinctsemanticsofUMLcompositionassociationcausethegenerateddataaccesslayercodeincompletelyimplementthesemanticofcomposition.ThispaperresearcheddescriptionlogicCATS,ALCHOIQbrandqueryknowledgebaseandproposedCATSbqrlanguagebasedonthesethreetools,andanalyzedthechangesofsemanticsofcompositionassociationbyCATSbqr.Thenwerepresentedthesemanticsofaddingcomplexob.jectsoperationinthedomainmodelandproposedthealgorithmtoimplementtheaddingoperation.Atlast,weappliedthemethodtorepresentingthesalesorderinap-plicationscenarios.Thisworkprovidesapreciseformalpresentationwayfortheprocessofgeneratingdataaccesslayercodefromdomainmodelinmodelingtools.
[Keywords]:Domainmodel;Compositionassociation;Descriptionlogic
0引言
在應(yīng)用領(lǐng)域中,復(fù)雜對(duì)象的內(nèi)部存在整體/部分關(guān)系[1],它表示對(duì)象的部分與這些部分所組成的整體之間的關(guān)系,可以用自然語(yǔ)言描述。例如,“頭部是身體的一部分”這句話說明了頭部和身體之間具有整體/部分關(guān)系。復(fù)雜對(duì)象在軟件系統(tǒng)三層架構(gòu)的業(yè)務(wù)邏輯層中被抽象為業(yè)務(wù)實(shí)體(businessobjects),表示對(duì)真實(shí)世界的軟件抽象;在數(shù)據(jù)訪問層中被抽象為值對(duì)象(valueobjects),通過O/R映射(Ob.jectRelationalMapping)為數(shù)據(jù)庫(kù)中的記錄以實(shí)現(xiàn)對(duì)象持久化。MDA(Model-DrivenArchitecture)是OMG(ObjectManagementGroup)提出的軟件開發(fā)框架[2]。在MDA開發(fā)生命周期[3]中,建模人員對(duì)值對(duì)象建模得到領(lǐng)域模型,然后借助建模T具從領(lǐng)域模型生成可執(zhí)行的數(shù)據(jù)訪問層代碼。這個(gè)過程中的值對(duì)象主要是結(jié)構(gòu)化數(shù)據(jù),結(jié)構(gòu)化數(shù)據(jù)具有直觀明了的特點(diǎn)[4],對(duì)其進(jìn)行領(lǐng)域建??梢缘玫疥P(guān)系數(shù)據(jù)模型。領(lǐng)域模型一般用UML類圖表示,描述值對(duì)象的靜態(tài)結(jié)構(gòu)(包括值對(duì)象本身和對(duì)象間的聯(lián)系)、動(dòng)態(tài)操作(即增、刪、改、查,簡(jiǎn)寫為CRUD)和完整性約束三個(gè)方面的內(nèi)容。在領(lǐng)域模型中,對(duì)象彼此之間是直接引用,因此不存在引用完整性約束的問題。
使用UML描述模型具有與領(lǐng)域無(wú)關(guān)的通用模型描述能力,能夠?qū)崿F(xiàn)不同領(lǐng)域子系統(tǒng)模型間的無(wú)縫集成‘5]。復(fù)雜對(duì)象在領(lǐng)域模型中的靜態(tài)結(jié)構(gòu)可以用UML組合關(guān)聯(lián)表示,但是UML標(biāo)準(zhǔn)文本對(duì)組合關(guān)聯(lián)的語(yǔ)義定義不明確,導(dǎo)致領(lǐng)域模型生成的數(shù)據(jù)訪問層代碼不能精確地實(shí)現(xiàn)組合關(guān)聯(lián)的語(yǔ)義?;谝陨蠁栴},本文提出一種方法使用描述邏輯準(zhǔn)確地描述復(fù)雜對(duì)象在領(lǐng)域模型中的靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)操作,使生成的數(shù)據(jù)訪問層代碼實(shí)現(xiàn)組合關(guān)聯(lián)的語(yǔ)義。
1組合關(guān)聯(lián)的語(yǔ)義
1.1UML組合關(guān)聯(lián)的語(yǔ)義
UML標(biāo)準(zhǔn)文檔[6]中描述整體/部分關(guān)系的關(guān)聯(lián)有兩種形式:聚合關(guān)聯(lián)(aggregationassociation)和組合關(guān)聯(lián)(compositionassociation),它們都是二元關(guān)聯(lián)(binaryassociation)。組合是聚合的強(qiáng)關(guān)聯(lián)形式,比聚合多了2個(gè)約束,第一個(gè)約束是部件(part)實(shí)例只能同時(shí)包含在至多1個(gè)組合(composite)實(shí)例中,這就要求組合關(guān)聯(lián)端(compositeassociationend)重?cái)?shù)的上邊界不能大于[6];第二個(gè)約束是部件具有與組合相同的生命周期[7]。UML標(biāo)準(zhǔn)文檔定義了對(duì)組合對(duì)象的操作,組合實(shí)例完全負(fù)責(zé)部件實(shí)例的存在和存儲(chǔ),刪除組合則它的所有部件都會(huì)一起被刪除。組合可以被鏈接進(jìn)一個(gè)具有傳遞刪除特性(transitivedeletioncharacteristics)的有向無(wú)環(huán)圖(adirectedacyclicgraph)中,如此一來,刪除圖中一個(gè)部件的元素會(huì)導(dǎo)致這個(gè)元素下的所有子圖元素被刪除。這種現(xiàn)象叫做傳播(propagation),是指當(dāng)一個(gè)操作應(yīng)用于某個(gè)起始對(duì)象時(shí),該操作會(huì)自動(dòng)應(yīng)用到網(wǎng)絡(luò)中的對(duì)象[8]。
組合關(guān)聯(lián)可以用一條帶實(shí)心菱形的實(shí)線表示,實(shí)心菱形的一端連接表示組合的類,另一端連接表示部件的類。
1.2問題的提出
UML標(biāo)準(zhǔn)文檔定義了組合關(guān)聯(lián),但沒有明確地說明組合類和組合關(guān)聯(lián)代表的具體對(duì)象,例如組合類是否代表應(yīng)用領(lǐng)域中的復(fù)雜業(yè)務(wù)對(duì)象,如果不能,它們有什么聯(lián)系與區(qū)別。另外,標(biāo)準(zhǔn)文檔中也明確地指出了組合關(guān)聯(lián)語(yǔ)義的變化點(diǎn):組合中創(chuàng)建部件的順序和方式尚未定義。這些問題導(dǎo)致了建模T具從領(lǐng)域模型生成數(shù)據(jù)訪問層的代碼沒有準(zhǔn)確地實(shí)現(xiàn)組合語(yǔ)義。本文使用描述邏輯定義復(fù)雜對(duì)象的類圖到描述邏輯知識(shí)庫(kù)的轉(zhuǎn)換規(guī)則,推導(dǎo)UML組合關(guān)聯(lián)的語(yǔ)義,從領(lǐng)域模型中復(fù)雜對(duì)象的靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)操作兩方面描述組合關(guān)聯(lián)的語(yǔ)義。
2組合語(yǔ)義的描述邏輯表示
描述邏輯是一種研究知識(shí)表示和推理領(lǐng)域的形式化方法,能為建模應(yīng)用領(lǐng)域提供精確的形式化理論支持。本章在描述邏輯CATSbqr、ALCHOIQbr和知識(shí)庫(kù)查詢的基礎(chǔ)上提m了描述邏輯CATSbqr語(yǔ)言,使用CATSbqr定義了組合關(guān)聯(lián)的語(yǔ)義,表示了領(lǐng)域模型中復(fù)雜對(duì)象的靜態(tài)結(jié)構(gòu),為描述領(lǐng)域模型動(dòng)態(tài)操作的目標(biāo)對(duì)象提供了基礎(chǔ)。
2.1描述羅輯CATSbqr
由于描述邏輯語(yǔ)言CArS[9]不能描述對(duì)象的動(dòng)態(tài)操作語(yǔ)義,本節(jié)在描述邏輯CATS、ALCHOIQbr[10]和知識(shí)庫(kù)查詢[11]的基礎(chǔ)上提出描述邏輯CATSbqr,使用公理的布爾組合、單獨(dú)的關(guān)聯(lián)構(gòu)造算子和查詢表達(dá)式擴(kuò)展了CATS,用于描述領(lǐng)域模型中復(fù)雜對(duì)象的復(fù)雜靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)操作。
描述邏輯CATSbqr語(yǔ)言的基本元素是概念(concepts)、聯(lián)系(roles)和個(gè)體(individuals)。CATSbqr語(yǔ)言的知識(shí)庫(kù)包括TBox和ABox兩部分,分別描述應(yīng)用領(lǐng)域的內(nèi)涵知識(shí)和外延知識(shí)[13]。本文的研究重點(diǎn)在于復(fù)雜對(duì)象的術(shù)語(yǔ)表示,因此主要討論TBox。
CATSbqr語(yǔ)言的語(yǔ)法和語(yǔ)義分為兩部分:靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)操作,靜態(tài)結(jié)構(gòu)是形式化表示應(yīng)用領(lǐng)域的結(jié)果,動(dòng)態(tài)操作表示靜態(tài)結(jié)構(gòu)中的對(duì)象集合在操作中發(fā)生的變化。CATSbqr靜態(tài)結(jié)構(gòu)的語(yǔ)義由解釋定義。一個(gè)解釋I=(AI,.1)由解釋域AI和解釋函數(shù).1構(gòu)成,解釋域AI是應(yīng)用領(lǐng)域中對(duì)象的集合,解釋函數(shù).1把每個(gè)概念名映射為AI的子集,把每個(gè)聯(lián)系名映射為AIXAI的子集。CATSbqr描述靜態(tài)結(jié)構(gòu)的部分構(gòu)造算子的語(yǔ)法和語(yǔ)義見表1。
CATSbqr動(dòng)態(tài)操作是通過背景動(dòng)作[10]使解釋產(chǎn)生變化,這個(gè)過程叫做解釋更新[10][14]。動(dòng)態(tài)操作主要有增、刪、改、查四個(gè)動(dòng)作,使用CATSbqr動(dòng)作語(yǔ)言和知識(shí)庫(kù)查詢描述,其語(yǔ)法和語(yǔ)義如表2所示。
2.2組合關(guān)聯(lián)語(yǔ)義的準(zhǔn)確定義
本節(jié)將通過描述邏輯知識(shí)庫(kù)斷言的數(shù)學(xué)語(yǔ)義表達(dá)式推導(dǎo)組合類和組合關(guān)聯(lián)的準(zhǔn)確語(yǔ)義,說明UML組合類和組合關(guān)聯(lián)在建模應(yīng)用領(lǐng)域的復(fù)雜對(duì)象時(shí)發(fā)生的語(yǔ)義變化。
2.2.1復(fù)雜對(duì)象業(yè)務(wù)語(yǔ)義的描述邏輯表示
整體/部分關(guān)系表現(xiàn)為:從完整對(duì)象的外部看,這個(gè)完整的對(duì)象是獨(dú)立的、不可再分的,具有原子屬性;從完整對(duì)象的內(nèi)部看,整體由部分組成,部分不能脫離整體單獨(dú)存在。兩種角度的抽象層次不同,外部的抽象層次比內(nèi)部高。
我們把具有整體/部分關(guān)系的對(duì)象抽象為復(fù)雜對(duì)象A,假設(shè)復(fù)雜對(duì)象A具有1個(gè)部件C和多個(gè)部件D,A和C之間的關(guān)系為r,A和D之間的關(guān)系為s。使用描述邏輯語(yǔ)言CATSbqr可以將復(fù)雜對(duì)象A表示為TBox知識(shí)庫(kù)K1:
說明:Ai、Cl、Dt、T是知識(shí)庫(kù)中的概念,分別映射到應(yīng)用領(lǐng)域中一類對(duì)象的集合;r.、sl是知識(shí)庫(kù)中的聯(lián)系,分別映射到應(yīng)用領(lǐng)域中兩類對(duì)象集合的關(guān)系。同一個(gè)斷言表達(dá)式中的概念具有相同的頂域。
斷言2.1:表示應(yīng)用領(lǐng)域中復(fù)雜對(duì)象A與部件C和部件D之間的關(guān)系,其中概念A(yù)i、Cl、Di的語(yǔ)義分別是:
聯(lián)系rl、sl的語(yǔ)義分別是:
rlI_{(o,o)l(o,o)∈復(fù)雜對(duì)象A與部件C的關(guān)系r},
sll={(O,o)l(o,o)∈復(fù)雜對(duì)象A與部件D的關(guān)系s}。
斷言2.2:表示應(yīng)用領(lǐng)域中復(fù)雜對(duì)象A與部件C的1對(duì)1關(guān)系,其中頂域T的語(yǔ)義是
TI={oIo∈滿足復(fù)雜對(duì)象A與部件C的關(guān)系r的C類型對(duì)象)。
斷言2.3:表示應(yīng)用領(lǐng)域中復(fù)雜對(duì)象A與部件D的1對(duì)多關(guān)系,其中頂域T的語(yǔ)義是
TI_{oIoE滿足復(fù)雜對(duì)象A與部件D的關(guān)系s的D類型對(duì)象}。
2.2.2UML組合關(guān)聯(lián)的描述邏輯表示
根據(jù)類圖的描述邏輯編碼規(guī)則[15]可以把復(fù)雜對(duì)象的UML類圖自動(dòng)轉(zhuǎn)換成CATSbqrTBox知識(shí)庫(kù)。轉(zhuǎn)換的實(shí)質(zhì)可以從MDA元建模的層次[16]解釋:在元模型層M2層,UML的元模型根據(jù)轉(zhuǎn)換規(guī)則轉(zhuǎn)換成CATSbqr語(yǔ)言中的元素,例如,UML的類轉(zhuǎn)換成CATSbqr的概念,UML的關(guān)聯(lián)轉(zhuǎn)換成CATSbqr的聯(lián)系;在系統(tǒng)模型層Ml層,UML元模型的實(shí)例根據(jù)轉(zhuǎn)換規(guī)則轉(zhuǎn)換成CATSbqrTBox知識(shí)庫(kù)中的斷言。
使用UML組合關(guān)聯(lián)對(duì)2.2.1節(jié)中抽象出來的復(fù)雜對(duì)象A進(jìn)行領(lǐng)域建模,其類圖如圖2.1所示。建模思路是:對(duì)于復(fù)雜對(duì)象A,在圖2.1中用類A2表示,為了滿足關(guān)系型數(shù)據(jù)庫(kù)的第三范式關(guān)系模式,把具有1對(duì)多對(duì)應(yīng)關(guān)系的部件D從整體A中分離,用類D2表示,復(fù)雜對(duì)象A和部件D的l對(duì)多整體/部分關(guān)系用組合關(guān)聯(lián)s2表示,重?cái)?shù)[1..1]在A2端,重?cái)?shù)[1..*]在D2端。使用描述邏輯語(yǔ)言CATSbqr可以將復(fù)雜對(duì)象A的類圖(圖2.1)表示為TBox知識(shí)庫(kù)K2:
斷言2.4:表示類圖中復(fù)雜對(duì)象A的類圖包括滿足關(guān)聯(lián)s2的組合類A2和滿足關(guān)聯(lián)s2的部件類D2。由于部件D從復(fù)雜對(duì)象A中分離,剩余部分為部件C,因此組合類A2的數(shù)據(jù)實(shí)際只有部件C的數(shù)據(jù)。概念T、A2、D2的語(yǔ)義分別是:
TI_{oIoE復(fù)雜對(duì)象A},
A21={OIO∈部件C},
D21={OIO∈部件D}。
聯(lián)系S2和s2的語(yǔ)義分別是:
(s2)1={(o,o)l(o,o)∈部件D與部件C的關(guān)系},
S21={(o,o)l(o,o)∈部件C與部件D的關(guān)系}。
斷言2.5:表示類圖中1個(gè)A2對(duì)象對(duì)應(yīng)多個(gè)D:對(duì)象,其中概念T的語(yǔ)義是
T1={oIoε滿足部件D與部件C關(guān)系的C類型對(duì)象}。
斷言2.6:表示類圖中1個(gè)D2對(duì)象對(duì)應(yīng)1個(gè)A2對(duì)象,其中概念T的語(yǔ)義是
TI={oIoε滿足部件C與部件D關(guān)系的D類型對(duì)象}。
2.2.3UML組合類與組合關(guān)聯(lián)的語(yǔ)義變化分析
假設(shè)圖2.1可以準(zhǔn)確地表示整體/部分關(guān)系,那么知識(shí)庫(kù)Ki中的斷言應(yīng)該與K2中的斷言對(duì)應(yīng)等價(jià)。
性質(zhì)1(概念相等和聯(lián)系相等)在描述邏輯知識(shí)庫(kù)的斷言中,C和D表示兩個(gè)概念,r和s表示兩個(gè)聯(lián)系,如果C和D的語(yǔ)義相同,r和s的語(yǔ)義相同,即滿足表達(dá)式2.7和2.8,
那么概念C和D等價(jià),聯(lián)系r和s等價(jià),即
C-D,r-s。
性質(zhì)1利用描述邏輯的語(yǔ)義說明了知識(shí)庫(kù)中概念相等和聯(lián)系相等的語(yǔ)義。如果概念C和D的語(yǔ)義相同,即概念C和D通過解釋-1映射到應(yīng)用領(lǐng)域中的同一種對(duì)象,那么概念C等價(jià)于概念D,其實(shí)質(zhì)是使用不同的概念名表示相同的對(duì)象。類似地,如果聯(lián)系r和s的語(yǔ)義相同,即表示應(yīng)用領(lǐng)域中的同一種對(duì)象關(guān)系,那么聯(lián)系r等價(jià)于聯(lián)系s。
UML組合類與組合關(guān)聯(lián)的語(yǔ)義變化分析:根據(jù)斷言2.1和2.4中概念A(yù)i和T的語(yǔ)義可得:
AlI_{oIoε夏雜對(duì)象A}=TI
由性質(zhì)1中概念相等表達(dá)式2.7可得
A1三T,
同理,
Ci三A2,Di三D2。
根據(jù)斷言2.1和2.4中聯(lián)系rl和Sl-的語(yǔ)義可得:
rlI_{(o,o)l(o,o)∈復(fù)雜對(duì)象A與部件C的關(guān)系r}≠{(o,o)l(o,o)∈部件D與部件C的關(guān)系}=(s2)1
由性質(zhì)1中聯(lián)系相等表達(dá)式2.9可得
rl+s2,
同理,
S1+S2。
由于斷言2.1和2.4中對(duì)應(yīng)的概念相等,但對(duì)應(yīng)的聯(lián)系不相等,因此從斷言上分析知識(shí)庫(kù)K:與K,中的斷言不等價(jià)。使用替換規(guī)則將斷言2.1中的概念A(yù)i、Cl和Di分別替換為T、A2和D:,得到斷言2.9
下面從斷言2.9和2.4的數(shù)學(xué)語(yǔ)義分析組合關(guān)聯(lián)的語(yǔ)義,其數(shù)學(xué)語(yǔ)義分別如表達(dá)式2.10、2.11:
表達(dá)式2.10中概念A(yù)i、C1、Di的頂域都為夏雜對(duì)象A,因此式中AI的語(yǔ)義是
AI={oIoε復(fù)雜對(duì)象A}。
表達(dá)式2.11中概念T、C2、D2的頂域也是復(fù)雜對(duì)象A,因此式中A1的語(yǔ)義是
AI={oIoE復(fù)雜對(duì)象A}。
數(shù)對(duì)(o,02)的語(yǔ)義是
(o,02)I∈{(O,o)l(o,o)∈復(fù)雜對(duì)象A與部件C的關(guān)系r},
聯(lián)系s2-的語(yǔ)義是
(s2-)1{(o,o)l(o,o)∈部件D與部件C的關(guān)系},
而(o,02)∈(S2-)1,對(duì)比表達(dá)式2.10和2.11可以發(fā)現(xiàn)S2的語(yǔ)義發(fā)生了變化,部件D與部件C的關(guān)系變?yōu)?/p>
變化的原因是類A2隱含了復(fù)雜對(duì)象A與部件C之間的1對(duì)1關(guān)系,部件D通過復(fù)雜對(duì)象A可以確定唯一的部件C實(shí)例。同理,聯(lián)系s2的語(yǔ)義從S21={(0,o)l(o,o)∈部件D與部件C的關(guān)系}變化為S21={(0,o)l(o,o)∈復(fù)雜對(duì)象A與部件D的關(guān)系s}。
由上分析可得
根據(jù)性質(zhì)1中聯(lián)系相等表達(dá)式2.8可得
rl-s2,Sl-S2。
在組合類A2、S-2和S2的語(yǔ)義發(fā)生變化后,使用代入規(guī)則可以將表達(dá)式2.4完全轉(zhuǎn)換成2.1,斷言2.1、2.4中的概念和聯(lián)系分別對(duì)應(yīng)相等,斷言的語(yǔ)義也相等,因此斷言2.4與2.1等價(jià)。同理,斷言2.5與2.2等價(jià),斷言2.6與2.3等價(jià)。
分析以上推導(dǎo)過程可以得到組合類和組合關(guān)聯(lián)的語(yǔ)義變化,由于分離了部件D,添加了組合關(guān)聯(lián),復(fù)雜對(duì)象A對(duì)應(yīng)的A2類的靜態(tài)結(jié)構(gòu)發(fā)生了三個(gè)變化:第一個(gè)變化是A2類中的數(shù)據(jù)不再是復(fù)雜對(duì)象A的完整數(shù)據(jù),而是除去部件D以后的剩余部分,即A2類只包括部件C的數(shù)據(jù),但領(lǐng)域建模時(shí)仍然以類A2的名字代表完整的復(fù)雜對(duì)象A,這種處理方式符合白然語(yǔ)言的習(xí)慣;第二個(gè)變化是類A:雖然只有部件C的數(shù)據(jù),但其類名A:代表了復(fù)雜對(duì)象A,這種方式隱含了復(fù)雜對(duì)象A與部件C之間的1對(duì)1關(guān)系;第三個(gè)變化是雖然類A2只有部件C的數(shù)據(jù),但是由于類名A2代表了復(fù)雜對(duì)象A,組合關(guān)聯(lián)s2仍然表示復(fù)雜對(duì)象A與部件D的整體/部分關(guān)系。
3復(fù)雜對(duì)象動(dòng)態(tài)操作語(yǔ)義的描述邏輯表示和實(shí)現(xiàn)算法
復(fù)雜對(duì)象作為值對(duì)象在領(lǐng)域模型中的結(jié)構(gòu)具有特殊性,因此在數(shù)據(jù)訪問層中增、刪、改、查復(fù)雜對(duì)象時(shí)需要對(duì)這些動(dòng)態(tài)操作進(jìn)行準(zhǔn)確的語(yǔ)義描述。本節(jié)根據(jù)2.3.3節(jié)的UML組合關(guān)聯(lián)語(yǔ)義推導(dǎo)和語(yǔ)義變化分析,定義了領(lǐng)域模型中動(dòng)態(tài)操作復(fù)雜對(duì)象的操作語(yǔ)義白動(dòng)轉(zhuǎn)換成語(yǔ)義表達(dá)式的轉(zhuǎn)換規(guī)則,描述了操作復(fù)雜對(duì)象各部件的方式和順序,并給m這些操作語(yǔ)義在數(shù)據(jù)訪問層代碼中的實(shí)現(xiàn)算法。建模T具按照操作語(yǔ)義表達(dá)式生成的數(shù)據(jù)訪問層代碼可以實(shí)現(xiàn)具有準(zhǔn)確語(yǔ)義的UML組合關(guān)聯(lián)。
3.1復(fù)雜對(duì)象動(dòng)態(tài)操作語(yǔ)義的描述邏輯表示
領(lǐng)域模型中的動(dòng)態(tài)操作可以用映射Sa表示,用于反映數(shù)據(jù)訪問層增、刪、改、查操作對(duì)數(shù)據(jù)庫(kù)狀態(tài)產(chǎn)生的變化。數(shù)據(jù)庫(kù)狀態(tài)也是對(duì)客觀世界的映射結(jié)果,類似于描述邏輯知識(shí)庫(kù),也可以用解釋I,:=(△II)定義。解釋函數(shù)-I'的解釋域與描述邏輯CATSbqr的解釋域-1相同,數(shù)據(jù)庫(kù)中存放的記錄通過解釋函數(shù)-I‘映射到客觀世界中的對(duì)象,解釋I,中的概念是解釋I中對(duì)應(yīng)概念的子集,因此數(shù)據(jù)庫(kù)狀態(tài)中的記錄也滿足描述邏輯CATSbqr的TBox和Abox知識(shí)庫(kù)。映射S。作用于數(shù)據(jù)庫(kù)狀態(tài)對(duì)應(yīng)的解釋I上。
領(lǐng)域模型中動(dòng)態(tài)操作復(fù)雜對(duì)象的語(yǔ)義可以根據(jù)定義1轉(zhuǎn)換成CATSbqr的操作語(yǔ)義表達(dá)式。
定義1(動(dòng)態(tài)操作復(fù)雜對(duì)象的語(yǔ)義到操作語(yǔ)義表達(dá)式的轉(zhuǎn)化規(guī)則)給定一個(gè)組合關(guān)聯(lián)的類圖W,若組合類C和部件類D之間的組合關(guān)聯(lián)為r,組合端的重?cái)?shù)只能為[1..1],部分端的重?cái)?shù)為[ni..n2]。類圖W對(duì)應(yīng)的知識(shí)庫(kù)為cp(W),對(duì)于組合關(guān)聯(lián)r,操作組合類C的同時(shí)也操作部件類D。ol和02滿足斷言C(01)、D(02)、r(02,ol)、r(oi,02)。組合類C的動(dòng)態(tài)操作語(yǔ)義表達(dá)式的轉(zhuǎn)換規(guī)則如下:
增加完整的復(fù)雜對(duì)象的表達(dá)示為
刪除完整的復(fù)雜對(duì)象與添加復(fù)雜對(duì)象相似,刪除各元素的順序與添加相反,表達(dá)式為
查詢完整的復(fù)雜對(duì)象的表達(dá)式為
修改完整的復(fù)雜對(duì)象的表達(dá)式為
在組合關(guān)聯(lián)中,執(zhí)行一次組合類對(duì)象的操作應(yīng)涉及的部件類對(duì)象的數(shù)量與部件端的重?cái)?shù)相符。
3.2復(fù)雜對(duì)象動(dòng)態(tài)操作語(yǔ)義的實(shí)現(xiàn)算法
增、刪、改、查的語(yǔ)義可以按照定義1的轉(zhuǎn)化規(guī)則轉(zhuǎn)化成操作語(yǔ)義表達(dá)式,優(yōu)先級(jí)是從左到右,操作語(yǔ)義表達(dá)式的算法實(shí)現(xiàn)完全按照表達(dá)式的語(yǔ)義和優(yōu)先級(jí)執(zhí)行。由于篇幅原因,本文只給m增加操作的實(shí)現(xiàn)算法,刪除、修改和查詢算法可以按照類似的過程實(shí)現(xiàn)。
以2.2.2節(jié)中的TBox知識(shí)庫(kù)K2為例,增加完整復(fù)雜對(duì)象A的動(dòng)態(tài)操作語(yǔ)義表達(dá)式為
Ccreate=D0{02}.C0{ol}.r0{(0l,02)}
(3.1)
更新是兩個(gè)解釋中的差異。操作語(yǔ)義表達(dá)式3.1的語(yǔ)義是在原解釋域I中增加更新createl中的一個(gè)銷售單,使得解釋I變更為解釋I。這個(gè)過程需要增加銷售活動(dòng)對(duì)象ol、與o.組成銷售單的銷售商品項(xiàng)對(duì)象oz、銷售單與銷售商品項(xiàng)的聯(lián)系(ol,02),增加的02對(duì)象和(ol,02)關(guān)系的數(shù)量與重?cái)?shù)[1..*]一致,增加操作對(duì)應(yīng)的實(shí)現(xiàn)如算法createA(Aa)所示。
4組合關(guān)聯(lián)描述邏輯表示的應(yīng)用
4.1銷售單業(yè)務(wù)語(yǔ)義的描述邏輯表示
銷售單是表示顧客所訂商品的名稱、規(guī)格、數(shù)量以及其他與顧客訂貨單有關(guān)信息的憑證,作為銷售方內(nèi)部處理顧客訂貨單的依據(jù),用丁記錄一次銷售活動(dòng)的信息以及在本次銷售活動(dòng)中所銷售的若干個(gè)商品的信息。
對(duì)銷售單進(jìn)行語(yǔ)義分析,抽象出圖4.1所示的示意圖,以描述現(xiàn)實(shí)世界中的銷售單,其中,銷售單代表整個(gè)銷售單,記為S,用于記錄包含銷售活動(dòng)和銷售商品項(xiàng)兩部分的完整信息,以描述某次銷售活動(dòng)的完整情況;銷售活動(dòng)表示某次銷售活動(dòng),記為SO,用于記錄購(gòu)買單位、日期、單據(jù)編號(hào)、經(jīng)辦人等信息,以描述某次銷售活動(dòng)的總體情況;銷售商品項(xiàng)表示某次銷售活動(dòng)中所銷售的某個(gè)商品,記為SI,用于記錄商品的名稱、規(guī)格、數(shù)量等信息,以描述銷售某個(gè)商品的信息。
從整個(gè)復(fù)雜對(duì)象外部的更高抽象層次來看,1張銷售單S包含2種屬性:1個(gè)銷售活動(dòng)S0和至少1件銷售商品SI。使用CATSbqr將銷售單業(yè)務(wù)對(duì)象的TBox知識(shí)庫(kù)表示為:
其中,S、SO和SI是概念,語(yǔ)義分別是:
Si={oIo∈銷售單),
SOi={oIo∈銷售活動(dòng)),
SlI={olo∈銷售商品項(xiàng))。
st和si是聯(lián)系,語(yǔ)義分別是:
stl={(o,o)l(o,o)∈銷售單與銷售活動(dòng)的關(guān)系),
Sjl={(0,o)l(o,o)∈銷售單與銷售商品項(xiàng)的關(guān)系)。
表達(dá)式4.2中T的語(yǔ)義是
TI={oIoE參與銷售單與銷售活動(dòng)關(guān)系的銷售活動(dòng)}。
表達(dá)式4.3中T的語(yǔ)義是
TI={oIoE參與銷售單與銷售商品項(xiàng)關(guān)系的銷售商品項(xiàng)}。
4.2銷售單類圖的描述邏輯表示
實(shí)際工程應(yīng)用中,在領(lǐng)域建模階段一般用UML描述銷售單,設(shè)計(jì)出如圖4.2所示的類圖。其中,SalesOrder表示銷售活動(dòng),Item表示銷售項(xiàng),組合關(guān)聯(lián)salesitem表示整個(gè)復(fù)雜對(duì)象與Item類間的強(qiáng)關(guān)聯(lián),其組合端和部分端的重?cái)?shù)分別為[1..1]和[1..*]。為了更符合工程應(yīng)用中的情況,圖中增加了Customer、Product兩個(gè)類。
從整個(gè)復(fù)雜對(duì)象內(nèi)部的抽象層次來看,1個(gè)完整的復(fù)雜對(duì)象由1個(gè)銷售活動(dòng)實(shí)例SO和至少1個(gè)銷售商品實(shí)例組成,銷售單是銷售活動(dòng)和銷售商品項(xiàng)的頂域。根據(jù)CATSbqr對(duì)類圖的編碼規(guī)則,圖4.2轉(zhuǎn)換成的CATSbqrTBox知識(shí)庫(kù)為
其中,概念SalesOrder、Item和T的語(yǔ)義分別是:
SalesOrder'={olo∈銷售活動(dòng)),
ItemI={olo∈銷售商品項(xiàng)),
Ti={oIoE銷售單)。
聯(lián)系salesitem-和salesitem變化后的語(yǔ)義分別是:
(salesitem-)I={(o,o)l(o,o)∈銷售單與銷售活動(dòng)的關(guān)系),
salesitemi={(o,o)l(o,o)∈銷售單與銷售商品項(xiàng)的關(guān)系)。
表達(dá)式4.4中T的語(yǔ)義是
TI={oIoE滿足銷售單與銷售活動(dòng)關(guān)系的銷售活動(dòng)}。
表達(dá)式4.5中T的語(yǔ)義是
TI={oIoE參與銷售單與銷售商品項(xiàng)關(guān)系的銷售商品項(xiàng)}。
4.3增加銷售單操作語(yǔ)義的描述邏輯表示和實(shí)現(xiàn)
增加操作的實(shí)現(xiàn)算法完全按照增加的操作語(yǔ)義表達(dá)式的優(yōu)先級(jí)和語(yǔ)義實(shí)現(xiàn),刪除、修改和查詢算法實(shí)現(xiàn)也可以參照類似的方式。由于篇幅原因,本文只給m增加銷售單操作的實(shí)現(xiàn)算法。增加整個(gè)銷售單S的動(dòng)態(tài)操作語(yǔ)義表達(dá)式根據(jù)定義1可以描述為
其中ol、02滿足更新createl中的斷言SalesOrder(ol)、Item(02)、salesitem(oi,02)。創(chuàng)建完整銷售單對(duì)象S的動(dòng)態(tài)操作語(yǔ)義表達(dá)式SalesOrder。reat。的關(guān)鍵代碼實(shí)現(xiàn)如算法createSalesOrder所示。
5結(jié)束語(yǔ)
本文針對(duì)UML存在組合關(guān)聯(lián)語(yǔ)義定義模糊,導(dǎo)致從領(lǐng)域模型自動(dòng)轉(zhuǎn)換為數(shù)據(jù)訪問層代碼的精確度不足的問題,提出了描述邏輯CATSbqr語(yǔ)言,使用CATSbqr準(zhǔn)確地描述了UML組合關(guān)聯(lián)的語(yǔ)義,并分析了組合類和組合關(guān)聯(lián)的語(yǔ)義變化,另外,使用描述邏輯CATSbqr表示了動(dòng)態(tài)操作復(fù)雜對(duì)象數(shù)據(jù)的語(yǔ)義,并通過實(shí)例說明了該方法的實(shí)用性,為實(shí)現(xiàn)領(lǐng)域模型到數(shù)據(jù)訪問層的代碼自動(dòng)化提供了理論基礎(chǔ)。
致謝在此,向本文提I葉{寶貴意見的評(píng)審專家表示衷心的感謝。
參考文獻(xiàn)
[1]WinstonME,ChaffinR,HerrmannD.Ataxonomyofpart-wholerelations[J].Cognitivescience,1987,11(4):417-444.
[2]季文天,郭清菊,馬杰.基于模型驅(qū)動(dòng)的框架技術(shù)在數(shù)據(jù)采集平臺(tái)中的分析與應(yīng)用[J].軟件,2014,35(3):121-124.
[3]BrownAW.Modeldrivenarchitecture:Principlesandpractice[J].Software&SystemsModeling,2004,3(4):314-327.
[4]洪立?。恍煳等?一種結(jié)構(gòu)化數(shù)據(jù)關(guān)系特征抽取和表示模型[J].軟件,2013,34(12):148-151.
[5]葉新,潘清,董正宏.多領(lǐng)域建模仿真方法綜述[J].軟件,2014,35(3):233-236.
[6]OMG.formal/2011-08-06.uml-Superstructurespecification2.4.1[S].2011-08.http://www.omg.org/spec/UML/2.4.1/Superstructure
[7]
MichaelBlaha,JamesRumbaugh.UML面向?qū)ο蠼Ec設(shè)計(jì).第2版[M].北京:人民郵電出版社,2006:66-69.
[8]RumbaughJ.Controllingpropagationofoperationsusingattributesonrelations[C]//ACMSIGPLANNotices.ACM,1988,23(11):285-296.
[9]DeGiacomoG,LenzeriniM.What'sinanaggregate:Foundationsfordescriptionlogicswithtuplesandsets.INTERNATIONAL
[10]CalvaneseD,OrtizM,SimkusM.EvolvingGraphDatabasesunderDescriptionLogicConstraints[C]//DescriptionLogics.2013:120-131.
[11]CalvaneseD,DeGiacomoG,LemboD,etal.Tractablereasonmgandefficientqueryanswermgindescriptionlogics:TheDL-Litefamily[J].JournalofAutomatedreasoning,2007,39(3):385-429.
[12]CalvaneseD,DeGiacomoG,LenzeriniM,etal.View-basedqueryansweringandquerycontainmentoversemistructureddata[C]//DatabaseProgrammingLanguages.SpringerBerlinHeidelberg,2002:40-61.
[13]Thedescriptionlogichandbook:theory,impleruentation,andapplications[M].Cambridgeuniversitypress,2003.
[14]LiuH,LutzC,MilicicM,etal.FoundationsofInstanceLevelUpdatesinExpressiveDescriptionLogics[J].ARTIFICIALINTELLIGENCE,2011,175(18):2170-2197.
[15]BerardiD,CalvaneseD,DeGiacomoG.ReasoningonUMLclassdiagrams[J].ArtificialIntelligence,2005,168(1):70-118.
[16]MellorSJ,ScottK,UhlA,elal.MDAdistilled:principlesofmodel-drivenarchitecturepracticeandpromise[M].Addison-WesleyProfessional,2004.44-389.