基于MSC的構(gòu)件及組裝模式形式化描述研究

2013-06-08  by:廣州有限元分析、培訓(xùn)中心-1CAE.COM  來(lái)源:仿真在線

在基于構(gòu)件的軟件開(kāi)發(fā)方法基礎(chǔ)上,本文提出使用組裝模式的方法進(jìn)行構(gòu)件的組裝,并應(yīng)用擴(kuò)展的MSC對(duì)構(gòu)件及構(gòu)件組裝模式進(jìn)行描迷。最后介紹用Java語(yǔ)言實(shí)現(xiàn)一種構(gòu)件及組裝模式描述工具。

作者: 楊成偉*李長(zhǎng)英*曹寶香 來(lái)源: 萬(wàn)方數(shù)據(jù)
關(guān)鍵字: 構(gòu)件 MSC 構(gòu)件組裝

0引言
   
近年來(lái)人們從傳統(tǒng)工業(yè)和計(jì)算機(jī)硬件的飛速發(fā)展的成功模式中獲得啟發(fā),逐漸認(rèn)識(shí)到要真正解決軟件危機(jī),實(shí)現(xiàn)軟件的工業(yè)化生產(chǎn)是唯一可行的途徑。它們的成功均是采用了標(biāo)準(zhǔn)化的構(gòu)件(Component )生產(chǎn)以及基于標(biāo)準(zhǔn)構(gòu)件的產(chǎn)品生產(chǎn)模式。這種構(gòu)件復(fù)用的思想應(yīng)用到軟件開(kāi)發(fā)中,被稱(chēng)為軟件重用(Software Reuse)。
   
軟件重用是指在兩次或多次不同的軟件開(kāi)發(fā)過(guò)程中重復(fù)使用相同或相近軟件元素的過(guò)程。軟件元素包括程序代碼、測(cè)試用例、設(shè)計(jì)文檔、設(shè)計(jì)過(guò)程、需求分析文檔甚至領(lǐng)域知識(shí)?;?qū)⑦@些可重用元素稱(chēng)為軟構(gòu)件(Software Component ),或簡(jiǎn)稱(chēng)為構(gòu)件。由于軟構(gòu)件大都經(jīng)過(guò)了質(zhì)量認(rèn)證,并且經(jīng)過(guò)實(shí)際運(yùn)行環(huán)境的檢驗(yàn),所以使用軟構(gòu)件元素開(kāi)發(fā)的軟件具有良好的軟件質(zhì)量。由于大量軟構(gòu)件的存在以及能夠方便快捷地通過(guò)查詢(xún)得到所需的構(gòu)件,所以軟件開(kāi)發(fā)的速度大大提升,開(kāi)發(fā)成本得到了有效控制。開(kāi)發(fā)人員在獲得所需構(gòu)件后,所要做的工作只是根據(jù)需求分析和設(shè)計(jì)階段得到的軟件架構(gòu)模式(也可認(rèn)為是一種軟構(gòu)件),將構(gòu)件按需要組裝在一起.并在必要時(shí)添加少量膠合代碼(Glue Code)使各個(gè)構(gòu)件聯(lián)合在一起工作。同時(shí)組裝后的構(gòu)件又可以作為一個(gè)粒度更大的軟構(gòu)件被保存或者重用。于是產(chǎn)生了基于構(gòu)件的軟件開(kāi)發(fā)方法CBSD ( Component Based Software Devel-opment )。
   
不難看出在CBSD中,構(gòu)件是基礎(chǔ).重用是手段,組裝是核心。目前軟件構(gòu)件的獲取相對(duì)比較容易。一方面目前Internet上存在大量免費(fèi)的可重用構(gòu)件,另外還可以通過(guò)購(gòu)買(mǎi)中間件開(kāi)發(fā)商的構(gòu)件庫(kù)得到構(gòu)件。也正是由于這種獲取的方便性以及目前構(gòu)件標(biāo)準(zhǔn)的不完整性,給構(gòu)件組裝方法的研究以及組裝工具(環(huán)境)的開(kāi)發(fā)帶來(lái)了困難。
   
我們?cè)趯?duì)該問(wèn)題進(jìn)行分析后認(rèn)為,為了有效解決該組裝難題,關(guān)鍵是要從更高的層次對(duì)構(gòu)件進(jìn)行描述。必須選擇一種通用的、直觀的、準(zhǔn)確的描述語(yǔ)言,該語(yǔ)言描述應(yīng)該類(lèi)似自然語(yǔ)言(易于理解),有較嚴(yán)格的形式化語(yǔ)法(不能出現(xiàn)二義性),還要有豐富的語(yǔ)意。因此選擇消息序列圖MSC ( Message Sequence Chat)作為載體。從名字看,MSC是一種圖描述語(yǔ)言,實(shí)際上它具有文本描述(Textual Description)和圖形描述(Graphical Description)兩種形式。另外為T(mén)更好地完成構(gòu)件組裝,提出了組裝模式(Composition Pattern)的概念,它可以被看作是一種用MSC描述的可復(fù)用的設(shè)計(jì)模式。它的描述方式與構(gòu)件描述方式兼容,這是為了使構(gòu)件的組裝按照模式匹配的思想完成。這似乎限制了構(gòu)件復(fù)用的任意性,但另一方面任意性帶來(lái)了組裝的不兼容性。因此犧牲部分任意性來(lái)?yè)Q取組裝兼容性是一種必要的手段。隨著構(gòu)件數(shù)目以及組裝模式的增加,這種犧牲是可以忽略的。
   
    1基本MSC
   
    1 MSC優(yōu)點(diǎn)

   
MSC是一種描述語(yǔ)言,它主要用于描述系統(tǒng)構(gòu)件之間、系統(tǒng)構(gòu)件與環(huán)境之間的行為交互事件。MSC不僅提供了一種直觀、透明的方式,還提供了兩種描述方式:圖形描述和文本描述。其中圖形描述提供了清晰易懂的圖形元素作為系統(tǒng)中實(shí)例交互以及事件發(fā)生的描述手段。文本方式以一種類(lèi)似自然語(yǔ)言的方式進(jìn)行描述,與多數(shù)架構(gòu)描述語(yǔ)言(SDL)描述形式類(lèi)似,采用層次化描述方式,使系統(tǒng)結(jié)構(gòu)的描述更加清晰。文本描述符主要有三類(lèi):關(guān)鍵詞、終結(jié)符和非終結(jié)符。MSC已被作為國(guó)際電話電報(bào)聯(lián)合會(huì)(International Telecommunication Union)的一種推薦使用標(biāo)準(zhǔn)。
   
基于MSC提供的這些特性使其可以用于需求描述、接口描述、仿真與檢查、測(cè)試用例描述等多個(gè)方面。另外MSC也可以連接其它描述語(yǔ)言,如SQL等。MSC直觀的圖形表示方式以及豐富的語(yǔ)法表示形式使其具有對(duì)構(gòu)件及構(gòu)件組裝(交互)描述的先天優(yōu)勢(shì)。具體表現(xiàn)在如下幾個(gè)方面:
   
(1)MSC是一種圖語(yǔ)言。因此可以通過(guò)二維圖描述構(gòu)件內(nèi)部實(shí)例之間的行為交互。MSC文本描述主要目的是為了完成自動(dòng)化形式分析與實(shí)現(xiàn)工具之間的轉(zhuǎn)換。在構(gòu)件組裝環(huán)境中可以利用文本描述提供構(gòu)件間膠合代碼自動(dòng)生成工作。
   
( 2 ) MSC支持結(jié)構(gòu)化設(shè)計(jì)。一個(gè)簡(jiǎn)單的MSC描述利用高層消息序列圖(HMSC)可以被組合成一個(gè)更復(fù)雜的系統(tǒng)描述。依靠這種分解和復(fù)用機(jī)制可以很容易地實(shí)現(xiàn)對(duì)遺留系統(tǒng)的構(gòu)件提取和構(gòu)件組裝的再工程。
   
( 3 ) MSC支持工程的全過(guò)程。形式化的描述和直觀的表示方式是它支持包括從領(lǐng)域分析到測(cè)試的整個(gè)工程領(lǐng)域。因此MSC可以很好地描述軟構(gòu)件元素,并且適合于整個(gè)CBSD開(kāi)發(fā)生命周期。
   
( 4 ) MSC可以被用來(lái)關(guān)聯(lián)其它描述語(yǔ)言如SDL和TTCN等。這使其具有靈活的可擴(kuò)展性和兼容性。另外MSC可以等價(jià)地轉(zhuǎn)換為有限(非有限)自動(dòng)機(jī)模型DFA(NDFA)。可以利用自動(dòng)機(jī)模型的多種性質(zhì)(如有限自動(dòng)機(jī)匹配、有限自動(dòng)機(jī)合并等)實(shí)現(xiàn)構(gòu)件與構(gòu)件模式匹配的方法。
   
    1.2 MSC實(shí)例
   
一個(gè)MSC圖由一些交互實(shí)例組成,實(shí)例之間通過(guò)方法調(diào)用或消息傳遞交互。實(shí)例頭部主要由實(shí)例名(Instance Name )、實(shí)例類(lèi)型( Instance)及分解(decomposition)組成。其具體語(yǔ)法為:
在MSC的實(shí)例描述中<instance head symbol>用白色矩形表示。< instance axis symbol>有兩種表示形式單線和雙線形式,兩種表示沒(méi)有區(qū)別,可選擇其一。< instance end symbol>用黑色矩形表示。三種圖形連接在一起表示一個(gè)實(shí)例的生存期。加粗部分為MSC保留關(guān)鍵詞。A is followed by B表示B跟隨A發(fā)生的關(guān)系。A is attached to B表示A依附于B,這種關(guān)系是可逆的,也就是說(shuō)B也同時(shí)依附于A。大括號(hào)后加關(guān)鍵詞set表示一個(gè)集合,集合中使用的*表示可以出現(xiàn)0次或多次,類(lèi)似于通配符概念。
   

基于MSC的構(gòu)件及組裝模式形式化描述研究+有限元項(xiàng)目服務(wù)資料圖圖片1

1. 3 MSC消息
   
消息是MSC中另一個(gè)重要概念。在MSC中消息表示輸人和輸出之間的關(guān)系。輸出可以來(lái)自于環(huán)境(通過(guò)門(mén))、實(shí)例或者被found表示輸出丟失或不能確定輸人點(diǎn))。輸人來(lái)自于環(huán)境(通過(guò)門(mén))、實(shí)例或者被lost(表示輸人丟失或者不能確定輸出點(diǎn))。實(shí)例間消息的交換被分成兩個(gè)部分:消息的輸出和消息的輸人。MSC文本描述使用關(guān)鍵詞before和after表示消息事件發(fā)生的順序。MSC圖形描述中,事件使用帶方向箭頭的直線表示。
   

基于MSC的構(gòu)件及組裝模式形式化描述研究+有限元項(xiàng)目服務(wù)資料圖圖片2


在MSC中實(shí)際上<message out area>和<message in area>實(shí)際上是依附在實(shí)例線上的點(diǎn)(描述中的<void symbol>)。< message symbol>表示為一個(gè)帶方向的直線。is associated with為MSC保留關(guān)鍵詞,它擴(kuò)展了一個(gè)文本字符串<msg identification>加人<message symbol>中。
   
    1.4 MSC事件次序
   
一個(gè)MSC中假設(shè)了一個(gè)全局時(shí)鐘,規(guī)定兩個(gè)規(guī)則:①不同實(shí)例MSC中假設(shè)輸出消息(產(chǎn)生消息)必須先于輸人消息(接收消息)產(chǎn)生;②沿著每個(gè)實(shí)例線事件從上到下依次發(fā)生。另外還規(guī)定消息圖中事件表示具有偏序關(guān)系(傳遞性、反對(duì)稱(chēng)性、不可逆性)。消息次序示例如圖1所示。
   
MSC中將一個(gè)消息的輸人和輸出分開(kāi)表示,為了加以區(qū)分將輸人消息表示成in(mi)形式,輸出消息表示成out ( mi )形式。圖1中根據(jù)規(guī)則①得到順序?yàn)閛ut( m2 )<in(m2),in(m3)<out(m3),out(m4)<in(m4);根據(jù)規(guī)則②得到順序in ( ml ) < out ( m2 )<in(m3) <out(m4),in(m2)<out( m3)。

基于MSC的構(gòu)件及組裝模式形式化描述研究+有限元項(xiàng)目服務(wù)資料圖圖片3


    
    2構(gòu)件及其組裝模式
   
構(gòu)件可以看做組成一個(gè)系統(tǒng)的獨(dú)立的功能實(shí)體。它應(yīng)該具有下面幾點(diǎn)性質(zhì):
   
(1)具有獨(dú)立(相對(duì)獨(dú)立)的功能。通過(guò)封裝一些方法為外界使用者提供服務(wù),完成某種任務(wù)。構(gòu)件與構(gòu)件間應(yīng)保持低禍合性。
    (2)具有封裝性。在構(gòu)件使用者眼中,構(gòu)件是一個(gè)內(nèi)部不可見(jiàn)的黑盒。使用者通過(guò)構(gòu)件向外界公開(kāi)的接口調(diào)用服務(wù)(方法)。
(3)具有清晰的接口。這些接口是使用者調(diào)用服務(wù)(方法)的唯一途徑,必須是公開(kāi)的。
(4)與實(shí)現(xiàn)方法無(wú)關(guān)性。理想情況下,構(gòu)件內(nèi)部實(shí)現(xiàn)應(yīng)該與具體的編程語(yǔ)言無(wú)關(guān)。使用者只需要了解構(gòu)件提供的服務(wù)接口,不需要了解內(nèi)部實(shí)現(xiàn)方式。在調(diào)用中可以先對(duì)構(gòu)件接口使用包裝器進(jìn)行包裝,使接口調(diào)用與實(shí)現(xiàn)無(wú)關(guān)。目前各種主流編程語(yǔ)言(C++,Java)都提供類(lèi)似包裝方法。
   
根據(jù)構(gòu)件特點(diǎn),不難發(fā)現(xiàn),要使構(gòu)件復(fù)用效率提高,使用者必須對(duì)構(gòu)件接口以及完成服務(wù)情況有相當(dāng)?shù)牧私狻?duì)于一個(gè)從外界獲取的構(gòu)件,這種理解是困難和不準(zhǔn)確的。使用者可能對(duì)構(gòu)件理解發(fā)生偏差與不完整,造成構(gòu)件復(fù)用失敗。
   
MSC具有直觀的圖形表示和豐富的語(yǔ)意。所以提出使用MSC來(lái)描述構(gòu)件和組裝模式,以直觀的圖形化方式描述接口之間的交互。
   
    2.1構(gòu)件描述
   
基于MSC的構(gòu)件描述,主要描述中心構(gòu)件及其與作用環(huán)境之間的交互。作用環(huán)境可以是構(gòu)件或包裝器、代理等與所描述構(gòu)件發(fā)生交互關(guān)系的實(shí)體。構(gòu)件與作用環(huán)境可能發(fā)生兩種交互關(guān)系:一種為構(gòu)件從作用環(huán)境請(qǐng)求消息,另一種則為相反情況即作用環(huán)境從構(gòu)件請(qǐng)求消息。第一種典型的情況是使用代理,構(gòu)件與其代理之間產(chǎn)生禍合,必須從構(gòu)件中調(diào)用代理內(nèi)部函數(shù)。第二種典型的情況是使用包裝器,包裝器是對(duì)構(gòu)件接口進(jìn)行進(jìn)一步封裝,其實(shí)際類(lèi)或函數(shù)在構(gòu)件中。為了使描述方便和無(wú)歧義性,構(gòu)件描述中的構(gòu)件用C表示,作用環(huán)境用Ei表示,調(diào)用方法用mi表示。構(gòu)件描述中C為中心描述對(duì)象,所以C請(qǐng)求消息用out( m)表示,反之用in(m)表示。圖2是一個(gè)基于MSC的構(gòu)件圖形表示及描述。
   

基于MSC的構(gòu)件及組裝模式形式化描述研究+應(yīng)用技術(shù)圖片圖片4

基于MSC的構(gòu)件及組裝模式形式化描述研究+應(yīng)用技術(shù)圖片圖片5

  2.2組裝模式描述
   
基于構(gòu)件軟件開(kāi)發(fā)CSSD可以分為兩大部分:一是獲取構(gòu)件;二是組裝構(gòu)件。構(gòu)件的獲取可以通過(guò)自行開(kāi)發(fā)或商業(yè)購(gòu)買(mǎi)得到。通過(guò)對(duì)已有構(gòu)件應(yīng)用MSC進(jìn)行描述后,使用者可以快速與準(zhǔn)確地理解構(gòu)件。之后的問(wèn)題是如何進(jìn)行合理有效的組裝。我們認(rèn)為構(gòu)件組裝是可行的,但需要滿足一定前提條件:
   
(1)獲得足夠可復(fù)用的構(gòu)件。
(2)對(duì)構(gòu)件有充分理解,特別是接口調(diào)用。
(3)能夠正確選取所需構(gòu)件進(jìn)行組裝。
(4)組裝后功能、性能方面的檢查。
   
前兩個(gè)前提條件通過(guò)MSC構(gòu)件描述能夠解決。而對(duì)于構(gòu)件選擇以及組裝后系統(tǒng)功能性能檢查,只有在組裝后才能進(jìn)行。這樣如果組裝完成后系統(tǒng)出現(xiàn)問(wèn)題,解決起來(lái)將相當(dāng)困難,往往造成改一處而動(dòng)全身的連鎖反映。因此提出組裝模式的概念,它是沿用目前流行的設(shè)計(jì)模式的思想。將構(gòu)件組裝結(jié)構(gòu)在組裝之前通過(guò)描述語(yǔ)言進(jìn)行描述。這種方式不僅可以使構(gòu)件組裝檢查在組裝之前進(jìn)行,更重要的是它也可以作為一種可復(fù)用資源而存在。組裝模式沿用MSC語(yǔ)法,并加以擴(kuò)展完成描述過(guò)程。圖3是組裝模式的描述示例。
   

基于MSC的構(gòu)件及組裝模式形式化描述研究+應(yīng)用技術(shù)圖片圖片6

基于MSC的構(gòu)件及組裝模式形式化描述研究+應(yīng)用技術(shù)圖片圖片7


    2. 3區(qū)別與聯(lián)系
   
利用MSC直觀的形式化描述方式描述構(gòu)件與構(gòu)件的組裝模式。兩者共同的特點(diǎn)是均使用了MSC語(yǔ)法,但是由于描述對(duì)象、目的的不同,均對(duì)基本MSC做了擴(kuò)展來(lái)滿足具體需要。具體表現(xiàn)在幾個(gè)方面:
   
(1)描述對(duì)象。
   
構(gòu)件描述主要描述的是中心構(gòu)件與可能和它發(fā)生作用的構(gòu)件之間的交互關(guān)系。目的主要是兩方面:幫助構(gòu)件使用者了解構(gòu)件接口方法和為在下一步工作中檢驗(yàn)構(gòu)件交互的情況(主要是接口交互)能否適用于組裝模式。
   
組裝模式的描述對(duì)象是系統(tǒng)中具體需要的構(gòu)件之間交互和作用情況,可以被認(rèn)為是一種系統(tǒng)設(shè)計(jì)描述。
   
(2)描述語(yǔ)法復(fù)雜度。
   
雖然構(gòu)件描述和組裝模式的描述語(yǔ)法來(lái)自于MSC.但是相比較來(lái)看,構(gòu)件描述注重接口交互描述,組裝模式描述則側(cè)重于描述組裝而成的系統(tǒng)或更大粒度的構(gòu)件,因此后者的描述幾乎可以使用MSC所有語(yǔ)法(包括如異常、定時(shí)器等)。而前者則關(guān)心的是中心構(gòu)件和作用環(huán)境交互的描述,其主要是消息以及交互的方向。
   
(3)與外部交互。
   
構(gòu)件描述是以中心構(gòu)件為核心描述交互情況,也就是說(shuō)在構(gòu)件描述中都應(yīng)該是與中心構(gòu)件發(fā)生交互的消息。其它不與其發(fā)生關(guān)系的消息實(shí)際上是不能確定的消息。
   
組裝模式中描述組裝構(gòu)件之間實(shí)際交互情況,沒(méi)有中心構(gòu)件概念,因此需要描述兩兩構(gòu)件之間的每個(gè)交互消息。另外因?yàn)镸SC支持部分圖組裝,也就是利用更高層的MSC抽象圖(實(shí)際上是部分圖作為描述對(duì)象的更高級(jí)別抽象圖),實(shí)現(xiàn)一個(gè)大系統(tǒng)描述的分步驟描述。因此在大系統(tǒng)組裝模式圖中出現(xiàn)了消息與env的交互箭頭。它的含義實(shí)際上是發(fā)出消息到另一個(gè)MSC圖(或接收來(lái)自其它MSC圖的消息)。
   
    3應(yīng)用與實(shí)現(xiàn)
   
基于MSC的組裝描述工具是基于Java語(yǔ)言實(shí)現(xiàn),同時(shí)應(yīng)用XML作為MSC描述的存儲(chǔ)載體。XML語(yǔ)法簡(jiǎn)單,并能很好地描述MSC的文本語(yǔ)法。在前臺(tái)用Java圖形建模的MSC圖形被轉(zhuǎn)換為文本描述存儲(chǔ)在XML文件中。
   
為了更好地管理構(gòu)件接口方法(消息),將構(gòu)件接口(方法)集中管理,形成樹(shù)形結(jié)構(gòu),每個(gè)節(jié)點(diǎn)的所有葉子節(jié)點(diǎn)表示該構(gòu)件的所有接口描述,各個(gè)層次的節(jié)點(diǎn)為構(gòu)件路徑。如此該命名空間對(duì)不同構(gòu)件中的同名接口可以區(qū)別管理。
   
    圖4和圖5是構(gòu)件組裝的概念模型描述和MSC構(gòu)件及組裝模式描述工具的實(shí)現(xiàn)。
   

基于MSC的構(gòu)件及組裝模式形式化描述研究+應(yīng)用技術(shù)圖片圖片8

基于MSC的構(gòu)件及組裝模式形式化描述研究+應(yīng)用技術(shù)圖片圖片9


    4結(jié)束語(yǔ)
   
本文提出了模式化方法組裝系統(tǒng)的思想,與傳統(tǒng)的CBSD開(kāi)發(fā)方法不同。應(yīng)用組裝模式組裝構(gòu)件或系統(tǒng),可以在組裝前設(shè)計(jì)并檢查系統(tǒng)可行性。這樣就大大減少了組裝的風(fēng)險(xiǎn)性,同時(shí)在描述工具的支持下,組裝模式的設(shè)計(jì)被作為可復(fù)用資源保存。
   
目前在MSC描述工具的支持下,構(gòu)件的組裝和選取工作均是基于手工選擇和組裝完成的。下一步研究工作,將放在MSC構(gòu)件描述與組裝模式中構(gòu)件匹配上,完成構(gòu)件自動(dòng)選擇、匹配和組裝的全部過(guò)程。


開(kāi)放分享:優(yōu)質(zhì)有限元技術(shù)文章,助你自學(xué)成才

相關(guān)標(biāo)簽搜索:基于MSC的構(gòu)件及組裝模式形式化描述研究 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) Abaqus培訓(xùn) Autoform培訓(xùn) 有限元培訓(xùn) Solidworks培訓(xùn) UG模具培訓(xùn) PROE培訓(xùn) 運(yùn)動(dòng)仿真 

編輯
在線報(bào)名:
  • 客服在線請(qǐng)直接聯(lián)系我們的客服,您也可以通過(guò)下面的方式進(jìn)行在線報(bào)名,我們會(huì)及時(shí)給您回復(fù)電話,謝謝!
驗(yàn)證碼

全國(guó)服務(wù)熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號(hào)金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓(xùn)QQ咨詢(xún):點(diǎn)擊咨詢(xún) 點(diǎn)擊咨詢(xún)
項(xiàng)目QQ咨詢(xún):點(diǎn)擊咨詢(xún)
email:kf@1cae.com