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

一種由序列圖生成Java代碼框架的方法

文檔序號(hào):6402102閱讀:273來源:國知局
專利名稱:一種由序列圖生成Java代碼框架的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種軟件開發(fā)領(lǐng)域,具體涉及一種將對(duì)系統(tǒng)建模得到的UML序列圖自動(dòng)轉(zhuǎn)換得到相應(yīng)的類圖與狀態(tài)圖,并將二者結(jié)合起來生成Java代碼框架的方法。
背景技術(shù)
OMG在2001年提出模型驅(qū)動(dòng)架構(gòu)。與傳統(tǒng)開發(fā)方法相比,MDA標(biāo)準(zhǔn)方法能夠把系統(tǒng)需求和具體的實(shí)現(xiàn)技術(shù)分離開來,它的核心是模型和模型的轉(zhuǎn)換,它以層次區(qū)分模型,這些特點(diǎn)使得實(shí)現(xiàn)不同系統(tǒng)之間的互操作成為可能,并且即使在實(shí)現(xiàn)技術(shù)發(fā)生變化后,模型仍然具有保留的價(jià)值。
MDA標(biāo)準(zhǔn)的代碼自動(dòng)生成的主要流程是首先抽象出平臺(tái)無關(guān)模型(PlatformIndependent Model, PIM), PIM能夠描述完整業(yè)務(wù)功能并且與具體實(shí)現(xiàn)技術(shù)無關(guān);然后根據(jù)具體實(shí)現(xiàn)技術(shù)的不同,制定與之對(duì)應(yīng)的轉(zhuǎn)換規(guī)則,在其他輔助工具的共同幫助下,將PIM模型轉(zhuǎn)換成平臺(tái)相關(guān)模型(Platform Specific Model, PSM),即與具體實(shí)現(xiàn)技術(shù)相關(guān)的PSM模型;最后經(jīng)過添加其他信息至PSM模型之后,最終由PSM模型實(shí)現(xiàn)轉(zhuǎn)換得到目標(biāo)代碼。
使用這種方法進(jìn)行開發(fā)時(shí),模型不僅僅可以用于軟件開發(fā)文檔,也是系統(tǒng)的主要組成部分。在這個(gè)過程中,不同的開發(fā)階段,需要根據(jù)不同的抽象與細(xì)化層次,得到相應(yīng)的模型,并最終轉(zhuǎn)換得到目標(biāo)代碼。
詳細(xì)的PM到PSM的開發(fā)過程如下:首先從業(yè)務(wù)邏輯的角度對(duì)系統(tǒng)建模得到平臺(tái)無關(guān)模型(PIM)。在這個(gè)過程中往往從很高的層次抽象得到系統(tǒng)模型,而不需要關(guān)心具體的實(shí)現(xiàn)技術(shù),從而達(dá)到與具體實(shí)現(xiàn)技術(shù)分離的目的。
得到PIM之后,根據(jù)不同技術(shù)的各自特點(diǎn),開發(fā)人員選擇實(shí)現(xiàn)系統(tǒng)的具體的技術(shù)平臺(tái),然后根據(jù)選擇的技術(shù)平臺(tái)進(jìn)行轉(zhuǎn)換,進(jìn)而得到相應(yīng)的PSM模型。
如果在上一步之后得到的PSM仍然不能滿足需求,還可以進(jìn)一步精化PSM。針對(duì)更加精確的平臺(tái),可以把比較粗糙的PSM看成是它的PIM,這時(shí)就可以繼續(xù)進(jìn)行轉(zhuǎn)換來得到更細(xì)致的PSM,通過這種層次化的轉(zhuǎn)換,最終可以使PSM更加明確。
最后根據(jù)目標(biāo)語言的具體特點(diǎn),由PSM模型轉(zhuǎn)換得到代碼,進(jìn)而實(shí)現(xiàn)代碼生成的最終目的,即可運(yùn)行系統(tǒng)。
在軟件開發(fā)過程中使用MDA方法生成代碼時(shí),首先搭建與平臺(tái)無關(guān)的PIM模型,這里就需要使用與平臺(tái)無關(guān)的建模語言,如UML ;然后根據(jù)選擇的平臺(tái)和目標(biāo)代碼的映射關(guān)系,將PM模型轉(zhuǎn)換生成PSM模型;最后由PSM模型生成目標(biāo)程序代碼。在整個(gè)過程中,其核心任務(wù)是實(shí)現(xiàn)PIM到PSM的映射和轉(zhuǎn)換。
在MDA標(biāo)準(zhǔn)中,將平臺(tái)相關(guān)模型PSM到目標(biāo)代碼的轉(zhuǎn)換過程定義為代碼生成,所以MDA工程的最終目標(biāo)也就是PSM模型到代碼的映射。在具體的開發(fā)過程中,開發(fā)人員首先需要確定目標(biāo)平臺(tái),建立與之適應(yīng)的解決方案,而每一個(gè)與平臺(tái)相關(guān)的模塊都會(huì)在其中創(chuàng)建各自的工程項(xiàng)目,然后將各個(gè)項(xiàng)目與PSM中對(duì)應(yīng)的模型進(jìn)行綁定,最后在代碼生成工具的幫助下,實(shí)現(xiàn)目標(biāo)代碼的自動(dòng)生成,進(jìn)而得到目標(biāo)代碼。

發(fā)明內(nèi)容
在現(xiàn)有的技術(shù)中,由于MDA標(biāo)準(zhǔn)中代碼生成方法的不完善性,降低所生成代碼的實(shí)用性。本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種由序列圖自動(dòng)轉(zhuǎn)換得到類圖與狀態(tài)圖,進(jìn)而將類圖描述的系統(tǒng)靜態(tài)信息與狀態(tài)圖描述的系統(tǒng)動(dòng)態(tài)信息相結(jié)合的方法,以提高自動(dòng)生成代碼的質(zhì)量與可用性,并保證在轉(zhuǎn)換過程中模型的一致性。為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:一種由序列圖生成Java代碼框架的方法,包括根據(jù)目標(biāo)系統(tǒng)的功能需求,所繪制出該系統(tǒng)的UML序列圖,通過所述序列圖自動(dòng)轉(zhuǎn)換得到與其相應(yīng)的類圖與狀態(tài)圖,并由所述的類圖生成靜態(tài)代碼框架,以及由所述的狀態(tài)圖生成動(dòng)態(tài)代碼信息,將所述靜態(tài)代碼框架與所述動(dòng)態(tài)代碼信息結(jié)合得到完整的Java代碼框架,所述方法包括以下步驟:( I)將序列圖轉(zhuǎn)換為類圖,其中,對(duì)所述序列圖對(duì)象的分析,將每個(gè)序列圖中的全部對(duì)象換得到對(duì)象序列,將所述對(duì)象序列轉(zhuǎn)換到一個(gè)類圖中,將每一個(gè)對(duì)象轉(zhuǎn)換為一個(gè)類,如果兩個(gè)對(duì)象彼此有交互關(guān)系,則為它們對(duì)應(yīng)的類建立關(guān)聯(lián),將每個(gè)對(duì)象上的動(dòng)作、事件作為操作加入對(duì)應(yīng)類中;(2)將序列圖轉(zhuǎn)換為狀態(tài)圖,其中,分析對(duì)象在所述序列圖中的消息序列,將每個(gè)序列圖中消息序列轉(zhuǎn)換為對(duì)序列,將所述對(duì)序列轉(zhuǎn)換為單個(gè)子狀態(tài)圖,將所有的子狀態(tài)圖合成生成一個(gè)對(duì)象的完整狀態(tài)圖;由序列圖中的對(duì)象信息自動(dòng)轉(zhuǎn)換得到類圖;由序列圖中的動(dòng)作、事件信息自動(dòng)轉(zhuǎn)換得到狀態(tài)圖;(3)制定類圖和狀態(tài)圖到Java代碼的映射關(guān)系,從所述類圖中獲取代碼靜態(tài)結(jié)構(gòu)信息,從所述狀態(tài)圖獲取類中方法的動(dòng)態(tài)信息,并分別制定所述類圖和所述狀態(tài)圖到代碼的映射關(guān)系;(4)合并類圖和狀態(tài)圖信息選擇自動(dòng)生成代碼。需要說明的是,通過上述方法可以既保證模型一致性的情況下同時(shí)又保證代碼中靜態(tài)信息與動(dòng)態(tài)信息的完整。需要進(jìn)一步說明的是,所述類圖中的模型包括實(shí)體模型和關(guān)聯(lián)模型,其中,實(shí)體模型對(duì)應(yīng)到j(luò)ava代碼的映射為:包(Package)—生成與包同名的文件夾,包中所含的類對(duì)應(yīng)的源文件存于該文件夾中;類(Class) —為每個(gè)類生成相應(yīng)的文件,目標(biāo)代碼為Java,映射為java文件;屬性(Attribute) —為模型中的類的屬性,包括可見性、數(shù)據(jù)類型和缺省值等信息,在生成代碼時(shí)映射為類的成員變量的說明;操作(Operation) —包括操作名及其參數(shù)、參數(shù)數(shù)據(jù)類型和返回值等信息,在生成代碼時(shí)映射為類的成員函數(shù)。數(shù)據(jù)類型(Data Type)一根據(jù)相應(yīng)的設(shè)置生成Enum, Array等類型定義。關(guān)聯(lián)模型對(duì)應(yīng)到j(luò)ava代碼的映射為:關(guān)聯(lián)(Association)—對(duì)應(yīng)到兩端類中的屬性;聚集(Aggregation)—對(duì)應(yīng)到目標(biāo)類中的屬性,以參數(shù)的形式傳入對(duì)象引用;
組成(Composition)—對(duì)應(yīng)到目標(biāo)類中的屬性,在目標(biāo)類中實(shí)例化;依賴(D印endence)—對(duì)應(yīng)到目標(biāo)類中的屬性;繼承(Generalization)—對(duì)應(yīng)目標(biāo)類的子類;實(shí)現(xiàn)(Realization)—對(duì)應(yīng)目標(biāo)類的實(shí)現(xiàn)類。需要進(jìn)一步說明的是,所述狀態(tài)圖到Java代碼的映射關(guān)系:所述狀態(tài)圖中的圖元主要包括狀態(tài)、事件、變遷;其中,狀態(tài)映射為Java代碼中的類,每一個(gè)狀態(tài)用類來表示,狀態(tài)中若含有事件,則將該事件作為方法加入到對(duì)應(yīng)類中,而每一個(gè)狀態(tài)圖也會(huì)生成一個(gè)上下文類,負(fù)責(zé)控釋狀態(tài)的變遷,而變遷就作為這個(gè)上下文類中的函數(shù)。本發(fā)明有益效果在于:保持模型到代碼的一致性,促進(jìn)基于模型驅(qū)動(dòng)的軟件開發(fā),提聞開發(fā)效率。


圖1為本發(fā)明的整體架構(gòu)圖。
具體實(shí)施例方式下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的描述?!N由序列圖生成Java代碼框架的方法,包括根據(jù)目標(biāo)系統(tǒng)的功能需求,所繪制出該系統(tǒng)的UML序列圖,通過所述序列圖自動(dòng)轉(zhuǎn)換得到與其相應(yīng)的類圖與狀態(tài)圖,并由所述的類圖生成靜態(tài)代碼框架,以及由所述的狀態(tài)圖生成動(dòng)態(tài)代碼信息,將所述靜態(tài)代碼框架與所述動(dòng)態(tài)代碼信息結(jié)合得到完整的Java代碼框架,所述方法包括以下步驟:( I)將序列圖轉(zhuǎn)換為類圖,其中,對(duì)所述序列圖對(duì)象的分析,將每個(gè)序列圖中的全部對(duì)象換得到對(duì)象序列,將所述對(duì)象序列轉(zhuǎn)換到一個(gè)類圖中,將每一個(gè)對(duì)象轉(zhuǎn)換為一個(gè)類,如果兩個(gè)對(duì)象彼此有交互關(guān)系,則為它們對(duì)應(yīng)的類建立關(guān)聯(lián),將每個(gè)對(duì)象上的動(dòng)作、事件作為操作加入對(duì)應(yīng)類中;(2)將序列圖轉(zhuǎn)換為狀態(tài)圖,其中,分析對(duì)象在所述序列圖中的消息序列,將每個(gè)序列圖中消息序列轉(zhuǎn)換為對(duì)序列,將所述對(duì)序列轉(zhuǎn)換為單個(gè)子狀態(tài)圖,將所有的子狀態(tài)圖合成生成一個(gè)對(duì)象的完整狀態(tài)圖;由序列圖中的對(duì)象信息自動(dòng)轉(zhuǎn)換得到類圖;由序列圖中的動(dòng)作、事件信息自動(dòng)轉(zhuǎn)換得到狀態(tài)圖;(3)制定類圖和狀態(tài)圖到Java代碼的映射關(guān)系,從所述類圖中獲取代碼靜態(tài)結(jié)構(gòu)信息,從所述狀態(tài)圖獲取類中方法的動(dòng)態(tài)信息,并分別制定所述類圖和所述狀態(tài)圖到代碼的映射關(guān)系;(4)合并類圖和狀態(tài)圖信息選擇自動(dòng)生成代碼。需要說明的是,由序列圖轉(zhuǎn)換得到類圖:通過對(duì)序列圖中對(duì)象的分析,將每個(gè)序列圖中的對(duì)象轉(zhuǎn)換對(duì)象序列;將對(duì)象序列轉(zhuǎn)換到一個(gè)類圖中,將每一個(gè)對(duì)象轉(zhuǎn)換為一個(gè)類,并為有交互關(guān)系的兩個(gè)對(duì)象對(duì)應(yīng)的類建立關(guān)聯(lián);將每個(gè)對(duì)象上的動(dòng)作、事件作為操作加入對(duì)應(yīng)類中;需要說明的是,由序列圖轉(zhuǎn)換得到狀態(tài)圖:轉(zhuǎn)換的算法設(shè)計(jì),首先讀取要生成狀態(tài)圖的序列圖,收集該序列圖中的所有的對(duì)象,每個(gè)對(duì)象將產(chǎn)生一個(gè)狀態(tài)圖。選取每一個(gè)對(duì)象,收集序列圖中的該對(duì)象的所有的消息。并把收集的消息按照消息出現(xiàn)在序列圖中出現(xiàn)的上下次序進(jìn)行排序。然后把發(fā)送消息對(duì)應(yīng)為動(dòng)作,接收消息對(duì)應(yīng)為事件。然后把收集的(動(dòng)作,事件)序列對(duì),對(duì)應(yīng)于生成狀態(tài)圖的一個(gè)對(duì)象。最后用動(dòng)作來標(biāo)識(shí)狀態(tài)的do action,事件來標(biāo)識(shí)狀態(tài)的一條轉(zhuǎn)換,從而生成一個(gè)簡單的狀態(tài)圖。進(jìn)一步地說,制定類圖到Java代碼的映射關(guān)系:類圖中的模型分為實(shí)體模型與關(guān)聯(lián)模型,根據(jù)其具體含義可以得到面向?qū)ο笳Z言中的對(duì)應(yīng)關(guān)系。其中實(shí)體模型對(duì)應(yīng)到代碼的映射為:包(Package):生成與包同名的文件夾,包中所含的類對(duì)應(yīng)的源文件存于該文件夾中;類(Class):為每個(gè)類生成相應(yīng)的文件。若目標(biāo)代碼為Java,則映射為java文件;屬性(Attribute):模型中的類的屬性,包括可見性、數(shù)據(jù)類型和缺省值等信息,在生成代碼時(shí)映射為類的成員變量的說明。其中在映射時(shí),無論是何種屬性,只要在模型中設(shè)定了初始值,則在對(duì)應(yīng)的源文件中初始化。操作(Operation):包括操作名及其參數(shù)、參數(shù)數(shù)據(jù)類型和返回值等信息,在生成代碼時(shí)映射為類的成員函數(shù)。數(shù)據(jù)類型(Data Type):根據(jù)相應(yīng)的設(shè)置生成Enum, Array等類型定義。關(guān)聯(lián)模型的處理辦法如下所示:關(guān)聯(lián)(Association):對(duì)應(yīng)到兩端類中的屬性(如果有關(guān)聯(lián)類,在關(guān)聯(lián)類中實(shí)現(xiàn))。聚集(Aggregation):對(duì)應(yīng)到目標(biāo)類中的屬性,以參數(shù)的形式傳入對(duì)象引用。組成(Composition):對(duì)應(yīng)到目標(biāo)類中的屬性,在目標(biāo)類中實(shí)例化。依賴(Dependence):對(duì)應(yīng)到目標(biāo)類中的屬性。繼承(Generalization):對(duì)應(yīng)目標(biāo)類的子類。實(shí)現(xiàn)(Realization):對(duì)應(yīng)目標(biāo)類的實(shí)現(xiàn)類。類圖模型到面向?qū)ο笳Z言中代碼的映射關(guān)系比較清晰,在此以Java代碼為例展示模型到代碼的映射關(guān)系。如下表所示。
權(quán)利要求
1.一種由序列圖生成Java代碼框架的方法,包括根據(jù)目標(biāo)系統(tǒng)的功能需求,繪制出該系統(tǒng)的UML序列圖,其特征在于,通過所述序列圖自動(dòng)轉(zhuǎn)換得到與其相應(yīng)的類圖與狀態(tài)圖,并由所述的類圖生成靜態(tài)代碼框架,以及由所述的狀態(tài)圖生成動(dòng)態(tài)代碼信息,將所述靜態(tài)代碼框架與所述動(dòng)態(tài)代碼信息結(jié)合得到完整的Java代碼框架,所述方法包括以下步驟: (I)將序列圖轉(zhuǎn)換為類圖,其中,對(duì)所述序列圖對(duì)象的分析,將每個(gè)序列圖中的全部對(duì)象換得到對(duì)象序列,將所述對(duì)象序列轉(zhuǎn)換到一個(gè)類圖中,將每一個(gè)對(duì)象轉(zhuǎn)換為一個(gè)類,如果兩個(gè)對(duì)象彼此有交互關(guān)系,則為它們對(duì)應(yīng)的類建立關(guān)聯(lián),將每個(gè)對(duì)象上的動(dòng)作、事件作為操作加入對(duì)應(yīng)類中; (2 )將序列圖轉(zhuǎn)換為狀態(tài)圖,其中,分析對(duì)象在所述序列圖中的消息序列,將每個(gè)序列圖中消息序列轉(zhuǎn)換為對(duì)序列,將所述對(duì)序列轉(zhuǎn)換為單個(gè)子狀態(tài)圖,將所有的子狀態(tài)圖合成生成一個(gè)對(duì)象的完整狀態(tài)圖; 由序列圖中的對(duì)象信息自動(dòng)轉(zhuǎn)換得到類圖;由序列圖中的動(dòng)作、事件信息自動(dòng)轉(zhuǎn)換得到狀態(tài)圖; (3)制定類圖和狀態(tài)圖到Java代碼的映射關(guān)系,從所述類圖中獲取代碼靜態(tài)結(jié)構(gòu)信息,從所述狀態(tài)圖獲取類中方法的動(dòng)態(tài)信息,并分別制定所述類圖和所述狀態(tài)圖到代碼的映射關(guān)系; (4)合并類圖和狀態(tài)圖信息選擇自動(dòng)生成代碼。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述類圖中的模型包括實(shí)體模型和關(guān)聯(lián)模型,其中,實(shí)體模型對(duì)應(yīng)到j(luò)ava代碼的映射為: 包(Package)—生成與包同名的文件夾,包中所含的類對(duì)應(yīng)的源文件存于該文件夾中; 類(Class)—為每個(gè)類生成相應(yīng)的文件,目標(biāo)代碼為Java,映射為java文件; 屬性(Attribute) —為模型中的類的屬性,包括可見性、數(shù)據(jù)類型和缺省值等信息,在生成代碼時(shí)映射為類的成員變量的說明; 操作(Operation) —包括操作名及其參數(shù)、參數(shù)數(shù)據(jù)類型和返回值等信息,在生成代碼時(shí)映射為類的成員函數(shù)。
數(shù)據(jù)類型(Data Type)一根據(jù)相應(yīng)的設(shè)置生成Enum, Array等類型定義。
關(guān)聯(lián)模型對(duì)應(yīng)到j(luò)ava代碼的映射為: 關(guān)聯(lián)(Association)—對(duì)應(yīng)到兩端類中的屬性; 聚集(Aggregation)—對(duì)應(yīng)到目標(biāo)類中的屬性,以參數(shù)的形式傳入對(duì)象引用; 組成(Composition)—對(duì)應(yīng)到目標(biāo)類中的屬性,在目標(biāo)類中實(shí)例化; 依賴(Dependence)—對(duì)應(yīng)到目標(biāo)類中的屬性; 繼承(Generalization)—對(duì)應(yīng)目標(biāo)類的子類; 實(shí)現(xiàn)(Realization)—對(duì)應(yīng)目標(biāo)類的實(shí)現(xiàn)類。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述狀態(tài)圖到Java代碼的映射關(guān)系:所述狀態(tài)圖中的圖元主要包括狀態(tài)、事件、變遷;其中,狀態(tài)映射為Java代碼中的類,每一個(gè)狀態(tài)用類來表示,狀態(tài)中若含有事件,則將該事件作為方法加入到對(duì)應(yīng)類中,而每一個(gè)狀態(tài)圖也會(huì)生成一個(gè)上下文類,負(fù)責(zé)控釋狀態(tài)的變遷,而變遷就作為這個(gè)上下文類中的函數(shù)。
全文摘要
本發(fā)明為一種由序列圖生成Java代碼框架的方法,主要將由系統(tǒng)建模得到的UML序列圖自動(dòng)轉(zhuǎn)換得到相應(yīng)的類圖與狀態(tài)圖,其中由類圖生成靜態(tài)代碼框架,由狀態(tài)圖生成代碼動(dòng)態(tài)信息,并分別制定各自模型到代碼的映射規(guī)則,將二者有機(jī)的結(jié)合起來進(jìn)而得到完整的Java代碼框架。本發(fā)明保持了模型到代碼的一致性,促進(jìn)基于模型驅(qū)動(dòng)的軟件開發(fā),提高開發(fā)效率。
文檔編號(hào)G06F9/45GK103164252SQ20131013227
公開日2013年6月19日 申請(qǐng)日期2013年4月15日 優(yōu)先權(quán)日2013年4月15日
發(fā)明者段振華, 張超, 田聰, 張南, 王小兵, 羅玲 申請(qǐng)人:西安電子科技大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
涪陵区| 扎兰屯市| 象州县| 东至县| 平顺县| 印江| 镇巴县| 璧山县| 九龙县| 页游| 全州县| 伊通| 泰安市| 顺平县| 望奎县| 博爱县| 武强县| 枣庄市| 平南县| 新蔡县| 雷州市| 保山市| 辽阳县| 信丰县| 民县| 渝中区| 海宁市| 阿鲁科尔沁旗| 新昌县| 汶川县| 娱乐| 永吉县| 台前县| 台前县| 余庆县| 平乐县| 白城市| 科技| 清新县| 化隆| 乌拉特中旗|