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