欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

對象模型轉(zhuǎn)換的設計模式和方法

文檔序號:6557418閱讀:234來源:國知局
專利名稱:對象模型轉(zhuǎn)換的設計模式和方法
技術領域
本發(fā)明涉及對象模型轉(zhuǎn)換的設計模式和方法。
背景技術
在本說明書中,以下使用的術語具有所說明的含義,除非另有說明-“類”將類的概念指定為在建模體系中共同操作和面向?qū)ο蟮某绦蛘Z言,尤其是打算在電子數(shù)據(jù)處理應用中一起工作的數(shù)據(jù)和進程(或各自的屬性和方法)的集合。在面向?qū)ο蟮恼Z言中,每一個對象的型由它的類來定義。類代表共享同樣的屬性、操作、方法、關系和語義的一組對象。
-“圖”建模元素集合的圖形表示,例如示出弧度(關系)和峰值(其它建模元素)的圖。UML(標準建模語言)標準建議以下圖類圖、對象圖、使用情況圖、序列圖、協(xié)作圖、轉(zhuǎn)換狀態(tài)圖、活動圖、組件圖和部署圖。
-“代碼生成”這里表示源代碼生成器對電子數(shù)據(jù)處理應用的自動或半自動的產(chǎn)生。它在對軟件應用的抽象描述的基礎上實現(xiàn),所述軟件應用供應給生成器并服務于控制生成。在分析該描述之后,發(fā)生器構(gòu)造期望的輸出代碼。該描述通常以比將產(chǎn)生的代碼的級別更高的語言表示。這樣能使用生成器而不必知道在生成的代碼中使用的程序設計語言的形式。
“模型驅(qū)動體系結(jié)構(gòu)”(MDA)表示一組OMG規(guī)范,其涉及使用一系列的模型和它們連續(xù)的轉(zhuǎn)換的開發(fā)過程。這些模型結(jié)合了計劃的多個維,并從功能模型擴展到源代碼模型。這些模型遵照UML標準。從一個模型到另一個模型的進展包含應用規(guī)格的漸進提高,且使用由UML元模型授權(quán)的轉(zhuǎn)換。
-“建模”表明狀態(tài)、問題或系統(tǒng)的抽象表示的活動,其實現(xiàn)目的一方面在于綜合和所述綜合的傳遞,另一方面在于解決問題或系統(tǒng)的具體實施。
-“面向?qū)ο蠼!北硎咎囟愋偷慕#渲薪T貫轭?、對象、屬性、方法、關聯(lián)等,和“功能建?!毕喾?,在“功能建模”中建模元素為處理函數(shù)和數(shù)據(jù)流。也可參見“UML”。
-“設計模式”(也使用術語“可再使用的設計模式”)表示解決已知問題的標準方法,所述已知問題例如復現(xiàn)的結(jié)構(gòu)或軟件設計問題。設計模式是給定的和復現(xiàn)的設計問題的抽象描述。例如如何監(jiān)控對象的持續(xù)性?如何監(jiān)控圖形界面?如何控制代碼的執(zhí)行?如何應用狀態(tài)機?等等。例如,設計模式已在著名的參考著作“Design Patterns,Elements ofReusable Object-Oriented Software”中公開,該著作1995年(Reading,MAAddison-Wesley)由Erich Gamma等人所著。這些模式區(qū)別于算法,算法從形式上描述如何解決問題;這些模式還常常獨立于任何程序設計語言。這些模式的描述通常符合固定的形式-名稱。
-要解決問題的描述。
-解決方案的描述解決方案的元素和它們的關系。
-結(jié)果解決方案的結(jié)果。
-“OMG”(對象管理組),表示這樣的組織,該組織的一個對象要定義標準,以便保證用面向?qū)ο蟮恼Z言的編程的應用的相互兼容性(參考http://www.omg.org)。
-“對象”表示在面向?qū)ο蟮慕;虺绦蛟O計中的類的實例,由一組數(shù)據(jù)(定義類的內(nèi)部數(shù)據(jù))和對其操作有用的程序組成。
-“面向?qū)ο蟆笔侵咐缒P?、語言、應用或應用元素,其組件為類和對象。例如,面向?qū)ο蟮恼Z言為程序設計語言,其中基礎組件是類,對象的實例動態(tài)地存在于使用它們的電子數(shù)據(jù)處理程序中。
-“構(gòu)造型”,表示擴展元模型的語義的建模元素的類型。構(gòu)造型必須基于存在于元模型中的某些型或類。構(gòu)造型能擴展語義,但不能擴展已存在的類和型的結(jié)構(gòu)。某些構(gòu)造型能在UML中預先確定,其它可由用戶定義。構(gòu)造型構(gòu)成UML的三個擴展機制中的一個,另兩個為“標簽值”和“注解”。
-“UML”(統(tǒng)一建模語言)表示由對象建模的記號(而不是語言),用于在對象系統(tǒng)的開發(fā)過程中決定并呈現(xiàn)對象系統(tǒng)的組件,在適當?shù)那闆r下也產(chǎn)生它的記錄。UML通常為OMG標準。這是由Jim Rumbaugh、Grady Booch和Ivar Jacobson所做工作合并的結(jié)果,且演化為多種方法。當前已被標準化的UML記號對不同的圖表提出圖形表示(參見上面)。
“對象建?!痹诂F(xiàn)有技術中已知,并在于按照類和對象創(chuàng)建對現(xiàn)實世界的元素的表示,獨立于任何程序設計語言。例如,對象的類被確定,它們內(nèi)部的數(shù)據(jù)和使用它們的函數(shù)被分離。存在不同的形式。UML是這些形式中的一種(實際上它不僅是記號的編目)。
每種面向?qū)ο蟮恼Z言都具有實施類概念的特定方法。特別地,對象方法或形式用于定義“高級抽象”的問題,而無需進入指定語言的細節(jié)。例如,UML提供工具用于簡單地用圖表現(xiàn)問題,使其更易接近其解決方案涉及的不同的動作者。
典型地,首先產(chǎn)生抽象的對象模型,例如以解決給出的問題為目的。
抽象的對象模型通常按多個步驟產(chǎn)生。當開發(fā)面對對象的電子數(shù)據(jù)處理應用時,常使用模型轉(zhuǎn)換程序。因此操作多個模型,這些模型是對象模型-首先,“分析模型”(或“專業(yè)模型”或“問題模型”);-然后,“體系結(jié)構(gòu)模型”(將被用于構(gòu)造該解決方案的不同技術元素的模型);-將分析模型與體系結(jié)構(gòu)要求相交得出“設計模型”(或“解決方案模型”);其最初是“大致的”,然后對其應用不同的“設計模型”,使其變成“詳細的設計模型”;-然后該模型準備產(chǎn)生最終代碼(可能被稱作“實施模型”)。
然后用面對對象語言(如C#或Java)實施該模型。因此期望對象形式被盡可能嚴格地定義,優(yōu)選地被唯一定義,以減少不確定性。
在用Java、C++或C#做軟件對象開發(fā)的背景下產(chǎn)生了一個問題,該問題是例如根據(jù)MDA規(guī)范,恰當?shù)貞迷O計模式(如從上述引用的參考工作中采取的模式,但不排除其它)到例如UML模型的模型,并附帶地、正確地產(chǎn)生對應代碼。
這個問題常規(guī)的解決辦法是人工應用模型到代表預想應用設計的UML模型,以便將該模型轉(zhuǎn)換成新的詳細的UML模型,從該UML模型產(chǎn)生代碼。
然而該解決方法不盡如人意,因為它是人工的。所以慢并且易生成誤差。而且,還可能引起最終模型內(nèi)的矛盾。此外,它必須一個接一個的應用模式。
因此,對于對象模型的轉(zhuǎn)換的設計模式和方法提出要求,以能夠轉(zhuǎn)換對象模型到新的對象模型而不會引起模型內(nèi)的誤差或矛盾。此外,該設計模型必須被設為能更有效地應用多個類似模式。

發(fā)明內(nèi)容
為此,本發(fā)明提出一種適于以對象模型的元素轉(zhuǎn)換序列被實施到計算機上的設計模式,其特征在于每個元素轉(zhuǎn)換都是對象模型的建模元素的修改、取消或創(chuàng)建。
在優(yōu)選實施例中,根據(jù)本發(fā)明的設計模式還包含一個或多個以下特征-對象模型符合UML記號;-該模式能被計算機程序解釋,且該模式適于觸發(fā)該程序?qū)D(zhuǎn)換序列的執(zhí)行;且-該程序包含向?qū)А?br> 本發(fā)明還涉及一種例如包含向?qū)У挠嬎銠C程序產(chǎn)品,所述向?qū)нm于解釋根據(jù)本發(fā)明的設計模式。
本發(fā)明還提出一種對象模型的轉(zhuǎn)換方法,包含訪問根據(jù)本發(fā)明的設計模型的步驟,和執(zhí)行該模式的初始對象模型的元素轉(zhuǎn)換序列的步驟。
在優(yōu)選實施例中,根據(jù)本發(fā)明的對象模型的轉(zhuǎn)換方法包含一個或多個以下特征-轉(zhuǎn)換對象模型的方法預先包含訪問初始對象模型的步驟,后者包含多個建模元素;對初始對象模型的每個建模元素搜索相關構(gòu)造型的步驟;以及如果在搜索步驟發(fā)現(xiàn)構(gòu)造型,搜索對應于已被發(fā)現(xiàn)的構(gòu)造型的設計模式的步驟;-轉(zhuǎn)換對象模型的方法預先包含備份初始對象模型的步驟;和-至少一些根據(jù)本發(fā)明的對象模型轉(zhuǎn)換的步驟由向?qū)崿F(xiàn)。
本發(fā)明還涉及代碼生成方法,該方法包含根據(jù)本發(fā)明轉(zhuǎn)換對象模型的方法的步驟,以及從對象模型生成代碼的步驟,其中所述對象模型是在轉(zhuǎn)換序列的執(zhí)行步驟中轉(zhuǎn)換的。


閱讀以下對通過舉例的方式給出的本發(fā)明實施例的詳細描述,并參考附圖,本發(fā)明的其它特點和優(yōu)勢將顯而易見,單張附圖示出根據(jù)本發(fā)明方法的實施例的步驟和組件。
具體實施例方式
本發(fā)明的基本思想在于重新定義設計模式;本發(fā)明意義上的設計模式被設計成能在計算機上以對象模型的元素轉(zhuǎn)換序列的形式實施。
該模式典型地包括對應于指定構(gòu)造型的標識符,以便它能被找回。
給出的元素轉(zhuǎn)換,例如對象模型的指定建模元素的修改、取消或創(chuàng)建,從而能容易并系統(tǒng)地被恰當?shù)碾娮訑?shù)據(jù)處理工具實現(xiàn)。此外,對于由常規(guī)意義(如上述定義的)上理解的設計模型理論上解決的問題,能發(fā)現(xiàn)指定的元素轉(zhuǎn)換序列。因此,以對象模型的元素轉(zhuǎn)換序列來實施設計模式使得對象模型向詳細模型發(fā)展,然后所述詳細模型能實現(xiàn)向代碼的系統(tǒng)轉(zhuǎn)換(代碼生成)。
更特別地,本發(fā)明意義上的設計模式可由數(shù)據(jù)結(jié)構(gòu)(如計算機文件)描述,這樣,當其被程序訪問然后解釋時,它觸發(fā)該模式的對象模型的元素轉(zhuǎn)換序列的執(zhí)行。這樣執(zhí)行特殊的程序用于自動應用設計模式到模型上。
典型地,建模形式為UML記號;在這種情況下建模元素為UML常規(guī)操作的元素,也就是包、類、屬性、運算、關聯(lián)、基數(shù)、遺傳等。
單圖示出根據(jù)本發(fā)明方法一個的實施例的步驟和組件。
該圖概略地表示了例如初始對象模型40(如UML模型)、詳細的最終模型80、目錄(即“模式的編目”)60和程序50,其中目錄60包含多個設計模式70(本發(fā)明意義上的),程序50包含向?qū)?用戶幫助或輔助程序)。初始模型40是普通模型,即在模型具有足夠能產(chǎn)生代碼的詳細等級之前它以模型的設計階段的形式出現(xiàn)。
編目可由向?qū)гL問,并且它包含的設計模式70能由向?qū)Ы忉?。如果需要,向?qū)П贿B接到建模工具,所述建模工具如IBM的Rational Rose、Softeam的Objecteering或i-Logix的Rhapsody。這樣的結(jié)果是,建模工具被向?qū)Э刂撇?zhí)行諸如將UML模型元素轉(zhuǎn)換或變換成代碼的任務。這種情況下,向?qū)Ш徒9ぞ呖杀灰暈樾纬沙绦驅(qū)嶓w50。
如果需要,根據(jù)本發(fā)明的方法包含訪問被開發(fā)者指定應用的初始對象模型40的步驟。初始模型包括多個建模元素(即,用標準的UML術語的模型“原子”)。模型包含“建模元素”,例如包、屬性或類的操作都是這種元素。初始模型40能被分析(步驟E1),也就是說,對于初始對象模型的每個“元素”都實現(xiàn)搜索相關構(gòu)造型的步驟。如果在搜索步驟發(fā)現(xiàn)構(gòu)造型,則接著執(zhí)行搜索對應于已被發(fā)現(xiàn)的構(gòu)造型的設計模式70的步驟(步驟E2)。
實際上,在開發(fā)者的應用的初始UML模型中,向?qū)峁┙o他選擇建模元素的可能性,其中指定的設計模式應用到所述建模元素(或元素組)。為此,在執(zhí)行程序前,初始模型40被“標記”,即設計模式將要應用到的模型的每個元素被特定的構(gòu)造型注釋,其標簽為模式名。因此程序被優(yōu)選地設計成對用戶友好的輔助程序,特別適合上述預備的測量。
然后開發(fā)者啟動對模式70的執(zhí)行為此,例如向?qū)Э稍L問目錄60并選則要執(zhí)行的模式70。為此,恰當?shù)哪J?0包括對應于已被發(fā)現(xiàn)的構(gòu)造型的標識符。
程序能優(yōu)選地保存初始模型40的備份,以允許取消或執(zhí)行出錯時的“取消”命令。
已選擇模式70的轉(zhuǎn)換序列典型地通過建模工具以可執(zhí)行腳本的形式產(chǎn)生,由向?qū)顾隹蓤?zhí)行腳本與這些工具相聯(lián)系。例如,向?qū)в肬ML環(huán)境提供的腳本語言編寫(例如用Rational Rose的VBA或用objecteering的J語言),且“設計模式”被向?qū)K讀取,所述向?qū)K解釋每個元素轉(zhuǎn)換的正式記號。
然而,用于每個元素轉(zhuǎn)換的正式記號能保持獨立于UML工具。因此這些模式自身可從UML工具再使用到其它工具。為此目的,向?qū)У囊婵蛇m于每個建模工具的環(huán)境。這樣,程序?qū)嶓w50(即,向?qū)Ъ咏9ぞ?適于訪問并解釋模式以便執(zhí)行元素轉(zhuǎn)換序列。
例如,模式70可以是一組元素轉(zhuǎn)換,每個元素轉(zhuǎn)換是獨立于任何特定建模工具的正式子句。這樣,可提供單個通用的腳本(即程序50的引擎),所述腳本讀取、解釋并執(zhí)行這些模式70。
元素轉(zhuǎn)換序列因此對應于模式70。然后由向?qū)нx擇的序列被傳遞給解釋并執(zhí)行轉(zhuǎn)換序列的程序50的特定“引擎”(步驟E3),其中所述轉(zhuǎn)換序列應用到出現(xiàn)在建模工具的存儲器中的對象模型。該序列的執(zhí)行將初始模型40逐漸轉(zhuǎn)換成更詳細的新模型80。每個設計模式70(例如“單元素”、“工廠”、“代理”、“迭代器”、“狀態(tài)”等,見引用的參考著作)以元素轉(zhuǎn)換序列的形式執(zhí)行。每次轉(zhuǎn)換引起模型40的基本變化,例如增加屬性、創(chuàng)建類、敘述屬性的型、增加關聯(lián)等。因此元素轉(zhuǎn)換是“動作量”。每個量對應于獨立的動作,例如由建模工具獨自處理的動作。這可通過呼叫特定的原語取得,所述原語符合在建模工具中實施的模型(例如“加屬性”、“重命名關聯(lián)”、“創(chuàng)建包”等)。特定的動作序列解決特定的問題(根據(jù)設計模式)。這樣對每個模式70而言對應存在這樣的程序,該程序自動應用到建模工具中實施的UML模型40。假定多個序列具有相同邏輯結(jié)構(gòu)(相同邏輯面的“動作量”序列),那么它們可以另外地被相同電子數(shù)據(jù)處理方法成功并系統(tǒng)地執(zhí)行,而不引起矛盾。
應用元素轉(zhuǎn)換序列到初始模型40產(chǎn)生詳細模型80。然后,在所用建模工具的內(nèi)部專有表示的基礎上,詳細模型80用于自動生成相應代碼。應當注意也可以是模型的基本原語轉(zhuǎn)換應用到該內(nèi)部內(nèi)部專有表示。
生成的代碼例如是Java、C++或C#代碼。例如,為了實現(xiàn)代碼生成,向?qū)Э汕‘數(shù)刂甘窘9ぞ?,該建模工具配備有代碼生成器。例如,在具有Rational Rose建模工具的情況下。
例如,考慮希望應用以下模式到設計模型40的情況模式“狀態(tài)”應用到模型40的三個類,模式“單元素”應用到四個類,且模式“迭代器”應用到兩類。該例中,模型的三個狀態(tài)類用構(gòu)造型“狀態(tài)”標記,四個單元素類用構(gòu)造型“單元素”標記,且兩個“迭加器”類用相應的構(gòu)造型標記。在標記模型后,程序50執(zhí)行以下步驟-復制初始模型40到詳細模型;-對于初始模型40的每個類-分析類并搜索構(gòu)造型;-如果發(fā)現(xiàn)構(gòu)造型-在目錄60中搜索對應于該構(gòu)造型的模式70;-開始執(zhí)行該模式70(其創(chuàng)建、修改或消除詳細模型80中的建模元素);-結(jié)束“如果”測試;-結(jié)束“對于初始模型40的每個類”的循環(huán);-//該步中構(gòu)造新的詳細的設計模型80;-從詳細的設計模型生成代碼。
上述方法系統(tǒng)地、快速而無誤地將初始的模型40轉(zhuǎn)換到詳細模型80,且該詳細模型隨后被用作自動生成代碼。根據(jù)該方法,開發(fā)者隨后可應用多個設計模式到單個執(zhí)行指令,這提高了方法的功效。這是可能的,因為根據(jù)本發(fā)明的模式70具有指定的邏輯結(jié)構(gòu)。而且,每個具有相同邏輯結(jié)構(gòu)的模式70能在其它模式后執(zhí)行。
對于本領域的技術人員顯見的是,本發(fā)明不限于以上描述的變體并易受許多其它變體的影響。例如,使用上述機制的精神是可能的-從或多或少的正式描述創(chuàng)建/生成新的模型(例如從文本),這為從文本開始的UML產(chǎn)生機制提供了可選項;-利用“分析模式”將規(guī)范模型轉(zhuǎn)換成例如分析對象模型,或利用“結(jié)構(gòu)模式”從分析模型構(gòu)造設計對象模型;更一般地,可以設想將本發(fā)明應用到任何類型的對象模型;對于具有其它可用模式類型來說這是足夠的,不僅僅是設計模式;-轉(zhuǎn)換模型(例如從非對象模型到對象模型或從LDS到UML或反之亦然);且-制造語言轉(zhuǎn)換器(例如從COBOL轉(zhuǎn)換成C或從C轉(zhuǎn)換成Java等),因為程序設計語言可以借助于元模型描述,并且以另一種語言來重寫一種語言的方式能被轉(zhuǎn)換成設計模式的形式。
最后應當注意,本發(fā)明還能用于通過應用“結(jié)構(gòu)模式”,從分析對象模型產(chǎn)生設計對象模型。為此,通過應用MDA準則,可能的是通過“交叉”分析模型和結(jié)構(gòu)模型來構(gòu)造設計模型。
權(quán)利要求
1.一種適于在計算機上以對象模型的元素轉(zhuǎn)換序列實施的設計模式(70),其特征在于,每個元素轉(zhuǎn)換是所述對象模型的建模元素的修改、取消或創(chuàng)建。
2.根據(jù)權(quán)利要求1的設計模式(70),其中所述對象模型遵照通用建模語言記號。
3.根據(jù)權(quán)利要求1的設計模式(70),其特征在于-所述模式能被計算機程序(50)解釋;-所述模式適于觸發(fā)所述程序(50)對所述轉(zhuǎn)換序列的執(zhí)行。
4.根據(jù)權(quán)利要求3的設計模式(70),其中所述程序(50)包括向?qū)А?br> 5.一種計算機程序產(chǎn)品(50),例如包含適于解釋根據(jù)權(quán)利要求1的設計模式(70)的向?qū)А?br> 6.一種對象模型的轉(zhuǎn)換方法,包含-訪問根據(jù)權(quán)利要求1的設計模式(70)的步驟(E2);和-執(zhí)行所述模式的初始對象模型的元素轉(zhuǎn)換序列的步驟(E3)。
7.根據(jù)權(quán)利要求6的方法,在權(quán)利要求6的步驟之前包含-訪問所述初始對象模型的步驟,所述初始對象模型包含多個建模元素;-對所述初始對象模型的每個建模元素,搜索相關構(gòu)造型的步驟(E1);及如果在所述搜索步驟發(fā)現(xiàn)構(gòu)造型,搜索對應于已被發(fā)現(xiàn)的構(gòu)造型的設計模式(70)的步驟。
8.根據(jù)權(quán)利要求6的方法,在權(quán)利要求6的步驟之前包含備份所述初始對象模型的步驟。
9.根據(jù)權(quán)利要求6的方法,其中所述步驟部分地由向?qū)崿F(xiàn)。
10.一種代碼生成方法,包含-根據(jù)權(quán)利要求6的方法的步驟;及-從所述對象模型生成代碼的步驟,其中所述對象模型是在執(zhí)行所述轉(zhuǎn)換序列的步驟中轉(zhuǎn)換的。
全文摘要
本發(fā)明涉及一種適于在計算機上以對象模型(40)的元素轉(zhuǎn)換序列實施的設計模式(70)。本發(fā)明還涉及計算機程序產(chǎn)品(50),例如包含適于解釋該模式的向?qū)А1景l(fā)明還涉及對象模型的轉(zhuǎn)換方法,包含訪問所述模式的步驟(E2)和執(zhí)行對象模型的元素轉(zhuǎn)換序列的步驟(E3)。然后可以簡單地、系統(tǒng)地且不出錯地生成代碼。
文檔編號G06F9/44GK1983172SQ200610063939
公開日2007年6月20日 申請日期2006年11月17日 優(yōu)先權(quán)日2005年11月18日
發(fā)明者P·拉爾韋, A·帕斯特 申請人:阿爾卡特公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
大足县| 大埔区| 竹山县| 山东省| 紫金县| 桐梓县| 阳信县| 阿勒泰市| 西畴县| 舞阳县| 满洲里市| 阳谷县| 陆川县| 阳新县| 高平市| 博白县| 库伦旗| 沿河| 积石山| 碌曲县| 安溪县| 五常市| 大化| 阿勒泰市| 怀远县| 佳木斯市| 上虞市| 高淳县| 潢川县| 福清市| 英超| 平陆县| 鲁山县| 孝感市| 叶城县| 深水埗区| 禄劝| 康保县| 佛冈县| 怀集县| 鄯善县|