最新的毛片基地免费,国产国语一级毛片,免费国产成人高清在线电影,中天堂国产日韩欧美,中国国产aa一级毛片,国产va欧美va在线观看,成人不卡在线

計(jì)算機(jī)可執(zhí)行的模型逆向工程方法及裝置與流程

文檔序號(hào):11236529閱讀:1257來源:國知局
計(jì)算機(jī)可執(zhí)行的模型逆向工程方法及裝置與流程

本公開涉及計(jì)算機(jī)可執(zhí)行的模型逆向工程方法和裝置,并且更具體地,涉及以下的計(jì)算機(jī)可執(zhí)行的模型逆向工程方法和裝置:定義結(jié)構(gòu)和將程序的源代碼轉(zhuǎn)換為模型以自動(dòng)生成期望類型的模型的規(guī)則,因此易于分析并重新設(shè)計(jì)程序結(jié)構(gòu)。



背景技術(shù):

可以通過使用戶直接讀取源代碼或者通過使用效果分析工具將源代碼可視化來對(duì)現(xiàn)有的計(jì)算機(jī)程序進(jìn)行分析。前一種方法主要取決于分析人員的技術(shù)能力,而后一種方法簡單并機(jī)械地將程序的模型按照原樣可視化,使得需要花費(fèi)費(fèi)用來將程序處理成期望類型的數(shù)據(jù)。在這兩種方法中,所生成的產(chǎn)品僅僅是參考數(shù)據(jù)并且不能重復(fù)使用。

由模型逆向工程表達(dá)的產(chǎn)品主要分為兩種類型。一種類型是被設(shè)計(jì)為一般使用的建模語言,其與uml(統(tǒng)一建模語言)對(duì)應(yīng)。另一種類型是由與changeminer對(duì)應(yīng)的效果分析工具使用的專用表達(dá)方案。圖7a例示了通用建模語言u(píng)ml的結(jié)構(gòu)元素,并且圖7b例示了作為效果分析工具的changeminer。

在前一種類型的情況下,雖然其可以提供通用符號(hào)以便生成用于各種sw環(huán)境和編程語言的模型,但其體積巨大。另外,雖然能夠制作粗略的sw模型,但其符號(hào)不是由uml提供的源代碼信息丟失。因此,不能利用通過逆向工程生成的模型來再次生成可執(zhí)行的源代碼。在后一種類型的情況下,由效果分析工具提供的逆向工程的產(chǎn)品在能夠表達(dá)各種源代碼信息的角度具有高利用率。然而,在后一種情況下,僅僅提供了不能實(shí)現(xiàn)二次利用的簡單報(bào)告,包括將逆向工程的產(chǎn)品用作模型并且基于該模型執(zhí)行設(shè)計(jì),這導(dǎo)致利用率降低。另外,由于產(chǎn)品按照原樣顯示了源代碼的模型,所以其包含了許多不必要的信息。

因此,需要提供以下裝置:該裝置能夠通過逆向工程制作所期望的模型形狀以在設(shè)計(jì)中重復(fù)使用,利用源代碼的所有信息,并且隨后產(chǎn)生在各種編程語言中可執(zhí)行的源代碼。使用該裝置,能夠提高sw開發(fā)的便利性及其質(zhì)量。

韓國專利注冊(cè)no.10-0463833公開了組件自動(dòng)轉(zhuǎn)換系統(tǒng)和方法,其自動(dòng)地分析系統(tǒng)的源代碼,并且使用面向?qū)ο蟮挠?jì)算系統(tǒng)中的分析信息將源代碼轉(zhuǎn)換為組件。

韓國專利注冊(cè)no.10-0965706公開了能夠重新插入代碼的計(jì)算機(jī)裝置和代碼重新插入方法,該代碼重新插入方法通過能夠在開發(fā)期間的各個(gè)步驟中執(zhí)行的一組可擴(kuò)展和構(gòu)造的代碼重新插入單元來提供代碼單元的重新插入和轉(zhuǎn)換、代碼單元的布置和執(zhí)行。



技術(shù)實(shí)現(xiàn)要素:

技術(shù)課題

本公開的一實(shí)施方式提供了一種計(jì)算機(jī)可執(zhí)行的服務(wù)器模型逆向工程方法和裝置,該服務(wù)器模型逆向工程方法和裝置能夠?qū)F(xiàn)有的源代碼轉(zhuǎn)換為期望類型的模型以易于執(zhí)行程序的分析、結(jié)構(gòu)理解和重新設(shè)計(jì)。

本公開的另一實(shí)施方式提供了一種計(jì)算機(jī)可執(zhí)行的模型逆向工程方法和裝置,該模型逆向工程方法和裝置能夠在模型中沒有任何信息丟失地表達(dá)源代碼的所有信息,并且僅使用模型來確認(rèn)源代碼的所有內(nèi)容。

本公開的又一實(shí)施方式提供了一種計(jì)算機(jī)可執(zhí)行的模型逆向工程方法和裝置,該模型逆向工程方法和裝置能夠?qū)⒃创a轉(zhuǎn)換為抽象格式的表達(dá)以抽象地表達(dá)所有信息,而不受限于準(zhǔn)備源代碼的編程語言。

本公開的又一實(shí)施方式提供了一種計(jì)算機(jī)可執(zhí)行的模型逆向工程方法和裝置,該模型逆向工程方法和裝置能夠使用模型來生成執(zhí)行與各種編程語言相同的功能的程序。

技術(shù)解決方案

根據(jù)本公開的實(shí)施方式,提供了一種計(jì)算機(jī)可執(zhí)行的模型逆向工程方法,該方法包括以下步驟:(a)接收源代碼;(b)接收用于將所述源代碼轉(zhuǎn)換為目標(biāo)模型的轉(zhuǎn)換規(guī)則;(c)使用與所述源代碼相關(guān)的解析器來解析所述源代碼,以將具有特定實(shí)質(zhì)結(jié)構(gòu)(materialstructure)的解析數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中;(d)將所存儲(chǔ)的解析數(shù)據(jù)轉(zhuǎn)換為元模型;以及(e)根據(jù)所接收的轉(zhuǎn)換規(guī)則將所述元模型轉(zhuǎn)換為目標(biāo)模型。

根據(jù)一實(shí)施方式,該方法還可以包括以下步驟:(f)按照適合于統(tǒng)一建模語言(uml)標(biāo)準(zhǔn)的形式再對(duì)轉(zhuǎn)換后的目標(biāo)模型進(jìn)行轉(zhuǎn)換,以被存儲(chǔ)在文件中。

根據(jù)一實(shí)施方式,所述步驟(b)可以包括以下步驟:接收由源轉(zhuǎn)換規(guī)則、模型轉(zhuǎn)換規(guī)則、命名規(guī)則和關(guān)系規(guī)則配置的轉(zhuǎn)換規(guī)則。這里,所述步驟(e)可以包括以下步驟:根據(jù)所述轉(zhuǎn)換規(guī)則來指定并轉(zhuǎn)換所述源代碼的特定元素或所述目標(biāo)模型的特定元素。

根據(jù)一實(shí)施方式,所述步驟(c)可以包括以下步驟:根據(jù)所述源代碼的編程語言類型將所述源代碼解析為具有不同實(shí)質(zhì)結(jié)構(gòu)的數(shù)據(jù)。

根據(jù)一實(shí)施方式,所述步驟(d)可以包括以下步驟:獨(dú)立于源代碼類型和編程語言類型而將所述解析數(shù)據(jù)轉(zhuǎn)換為按照特定實(shí)質(zhì)結(jié)構(gòu)顯示所述源代碼的所有元素的元模型。

根據(jù)一實(shí)施方式,該方法還可以包括以下步驟:(g)將無關(guān)的源代碼排除在外,以便不根據(jù)所述轉(zhuǎn)換規(guī)則進(jìn)行轉(zhuǎn)換。

根據(jù)一實(shí)施方式,該方法還可以包括以下步驟:(h)接收用于不能用uml表達(dá)的源代碼信息的單獨(dú)轉(zhuǎn)換規(guī)則。在另一實(shí)施方式中,所述步驟(h)還可以包括以下步驟:針對(duì)不能用所述uml表達(dá)的所述源代碼信息,在消息生命線、異常生命線、驗(yàn)證生命線或代碼生命線中的至少一個(gè)中生成消息。

根據(jù)一實(shí)施方式,該方法還可以包括以下步驟:驗(yàn)證所述源代碼的所有信息是否被包括在所述目標(biāo)模型中。

根據(jù)一實(shí)施方式,所述步驟(e)可以包括以下步驟:(e-1)根據(jù)所接收的轉(zhuǎn)換規(guī)則將所述元模型轉(zhuǎn)換為源模型;(e-2)接收用于將所述源模型轉(zhuǎn)換為所述目標(biāo)模型的模型至模型轉(zhuǎn)換規(guī)則;以及(e-3)根據(jù)所述模型至模型轉(zhuǎn)換規(guī)則將所述源模型轉(zhuǎn)換為所述目標(biāo)模型。

根據(jù)一實(shí)施方式,該方法還可以包括以下步驟:(i)接收所述目標(biāo)模型,以執(zhí)行用于生成源代碼的配置;(j)讀取所述目標(biāo)模型的元素,以確認(rèn)所述元素是否用于生成所述源代碼;(k)根據(jù)所述元素所具有的驗(yàn)證規(guī)則對(duì)用于生成所述源代碼的模型元素進(jìn)行驗(yàn)證;以及(l)根據(jù)驗(yàn)證結(jié)果生成所述源代碼。

根據(jù)一實(shí)施方式,所述步驟(i)可以包括以下步驟:注冊(cè)所述目標(biāo)模型的元素和針對(duì)相應(yīng)元素的轉(zhuǎn)換規(guī)則,并且指定所述轉(zhuǎn)換規(guī)則的執(zhí)行條件以執(zhí)行所述配置。

根據(jù)本公開的實(shí)施方式,提供了一種模型逆向工程裝置,該裝置包括:存儲(chǔ)器,所述存儲(chǔ)器被配置成將模型逆向工程可用的程序存儲(chǔ)在所述存儲(chǔ)器中;以及處理器,所述處理器被配置成執(zhí)行所述程序,其中,所述處理器使用解析器來將所接收的源代碼解析為具有特定實(shí)質(zhì)結(jié)構(gòu)的解析數(shù)據(jù),將解析后的數(shù)據(jù)轉(zhuǎn)換為元模型,根據(jù)所接收的轉(zhuǎn)換規(guī)則將所述元模型轉(zhuǎn)換為目標(biāo)模型,并且使用轉(zhuǎn)換后的目標(biāo)模型生成源代碼。

根據(jù)一實(shí)施方式,所述處理器可以接收源代碼和用于將所述源代碼轉(zhuǎn)換為目標(biāo)模型的轉(zhuǎn)換規(guī)則,并且將具有解析后的特定實(shí)質(zhì)結(jié)構(gòu)的解析數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中。在另一實(shí)施方式中,所述處理器可以根據(jù)所述源代碼的編程語言類型將所接收的源代碼解析為具有不同類型的實(shí)質(zhì)結(jié)構(gòu)的數(shù)據(jù)。

根據(jù)一實(shí)施方式,所述處理器可以獨(dú)立于源代碼類型和編程語言類型而將所述解析數(shù)據(jù)轉(zhuǎn)換為按照特定實(shí)質(zhì)結(jié)構(gòu)來顯示所述源代碼的所有元素的元模型。在另一實(shí)施方式中,所述處理器可以接收用于不能用uml表達(dá)的源代碼信息的單獨(dú)轉(zhuǎn)換規(guī)則。

根據(jù)一實(shí)施方式,所述處理器可以根據(jù)將所接收的源模型轉(zhuǎn)換為所述目標(biāo)模型的模型至模型轉(zhuǎn)換規(guī)則將所述源模型轉(zhuǎn)換為所述目標(biāo)模型。在另一實(shí)施方式中,所述處理器可以接收由所述源模型的限定名和所述目標(biāo)模型的限定名配置的模型至模型轉(zhuǎn)換規(guī)則。

根據(jù)一實(shí)施方式,所述處理器可以接收所述目標(biāo)模型以執(zhí)行用于生成源代碼的配置,讀取所述目標(biāo)模型的元素以確認(rèn)所述元素是否是源代碼生成目標(biāo)元素,根據(jù)所述元素所具有的驗(yàn)證規(guī)則對(duì)所述生成目標(biāo)模型元素進(jìn)行驗(yàn)證,并且根據(jù)驗(yàn)證結(jié)果生成源代碼。在另一實(shí)施方式中,所述處理器可以注冊(cè)所述目標(biāo)模型的元素和針對(duì)相應(yīng)元素的轉(zhuǎn)換規(guī)則,并且指定所述轉(zhuǎn)換規(guī)則的執(zhí)行條件以執(zhí)行所述配置。

根據(jù)本公開的實(shí)施方式,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),在該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有用于執(zhí)行模型逆向工程方法的程序,該方法包括以下步驟:(a)接收源代碼;(b)接收用于將所述源代碼轉(zhuǎn)換為目標(biāo)模型的轉(zhuǎn)換規(guī)則;(c)使用與所述源代碼相關(guān)的解析器來解析所述源代碼,以將具有特定實(shí)質(zhì)結(jié)構(gòu)的解析數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中;(d)將所存儲(chǔ)的解析數(shù)據(jù)轉(zhuǎn)換為元模型;以及(e)根據(jù)所接收的轉(zhuǎn)換規(guī)則將所述元模型轉(zhuǎn)換為目標(biāo)模型。

有益效果

所公開的技術(shù)可以具有以下效果。然而,由于其并不意味著特定實(shí)施方式應(yīng)包括所有效果或僅僅只有這些效果,所以不應(yīng)理解所公開的技術(shù)的范圍限制于此。

根據(jù)本公開的一實(shí)施方式,計(jì)算機(jī)可執(zhí)行的服務(wù)器模型逆向工程方法和裝置能夠?qū)F(xiàn)有的源代碼轉(zhuǎn)換為期望類型的模型以易于執(zhí)行程序的分析、結(jié)構(gòu)理解和重新設(shè)計(jì)。

根據(jù)本公開的另一實(shí)施方式,計(jì)算機(jī)可執(zhí)行的模型逆向工程方法和裝置能夠在模型中沒有任何信息丟失地表達(dá)源代碼的所有信息,并且僅使用模型來確認(rèn)源代碼的所有內(nèi)容。

根據(jù)本公開的又一實(shí)施方式,計(jì)算機(jī)可執(zhí)行的模型逆向工程方法和裝置能夠?qū)⒃创a轉(zhuǎn)換為抽象格式的表達(dá)以抽象地表達(dá)所有信息,而不受限于準(zhǔn)備源代碼的編程語言。

根據(jù)本公開的又一實(shí)施方式,計(jì)算機(jī)可執(zhí)行的模型逆向工程方法和裝置能夠使用模型來生成執(zhí)行與各種編程語言相同的功能的程序。

附圖說明

圖1是例示模型逆向工程裝置的配置的框圖。

圖2是例示圖1中的模型逆向工程程序執(zhí)行器的配置的框圖。

圖3是例示圖2中的源代碼模型轉(zhuǎn)換器的配置和操作的視圖。

圖4是例示由圖3中的轉(zhuǎn)換規(guī)則接收器接收的逆向規(guī)則的視圖。

圖5是例示圖2中的模型至模型轉(zhuǎn)換器的配置和操作的視圖。

圖6是例示根據(jù)圖2中的源代碼模型轉(zhuǎn)換器的代碼系列表達(dá)式逆向工程方法的視圖。

圖7是例示圖2中的代碼生成器配置和用于生成代碼的方法的視圖。

圖8是例示通用建模語言u(píng)ml和作為效果分析工具的changeminer的元素。

具體實(shí)施方式

本公開的說明僅僅是針對(duì)結(jié)構(gòu)或功能說明的實(shí)施方式,因此本公開的范圍不應(yīng)被解釋為限制于實(shí)施方式中所說明的實(shí)施方式。即,由于可以在不脫離實(shí)施方式的特性的情況下按照若干種形式來實(shí)施實(shí)施方式,所以也應(yīng)理解的是,除非另有明確說明,否則所描述的實(shí)施方式不受前述描述的任何細(xì)節(jié)的限制,而是應(yīng)在所附的權(quán)利要求所限定的范圍內(nèi)進(jìn)行寬泛地解釋。因此,落入權(quán)利要求的范圍或這樣的范圍的等同物內(nèi)的各種改變和修改因此旨在被所附權(quán)利要求所涵蓋。

另外,本公開中所描述的術(shù)語可以理解如下:

雖然諸如“第一”和“第二”等的術(shù)語可以用于描述各種組件,但這樣的組件不能被理解為限制于以上術(shù)語。以上術(shù)語用于將一個(gè)組件與另一個(gè)組件相區(qū)分。例如,在不脫離本公開的權(quán)利范圍的情況下,第一組件可以被稱為第二組件,并且同樣地,第二組件可以被稱為第一組件。

將理解的是,當(dāng)一個(gè)元件被稱為“連接至”另一元件時(shí),所述元件可以被直接連接至所述另一元件,或者也可以存在中間元件。相反,當(dāng)元件被稱為“直接連接至”另一元件時(shí),不存在中間元件。另外,除非明確地描述為相反,否則詞語“包括”和諸如“包括了”或“包括有”的變型將被理解為隱含包含所陳述的元件,但不排除包含任何其它元件。另外,可以同樣地解釋描述組件之間的關(guān)系的諸如“在…之間”、“直接在…之間”或“與…相鄰”以及“直接與…相鄰”的其它表達(dá)。

除非上下文另有明確的指示,否則本公開中的單數(shù)形式“一”、“一個(gè)”和“該”旨在也包括復(fù)數(shù)形式。還將理解的是,諸如“包含”或“具有”等術(shù)語旨在指示說明書中公開的特征、數(shù)字、操作、動(dòng)作、組件、部件或其組合的存在,而并不旨在排除可以存在或可以添加一個(gè)或更多個(gè)其它特征、數(shù)字、操作、動(dòng)作、組件、部件或其組合的可能性。

各個(gè)步驟中的標(biāo)識(shí)字母(例如,a、b、c等)用于說明的目的,而不描述各個(gè)步驟的順序。除非上下文明確提及,否則各個(gè)步驟可以從所提及的順序改變。即,可以按照所述的相同順序來執(zhí)行各個(gè)步驟,可以基本上同時(shí)執(zhí)行各個(gè)步驟,或者可以按照相反的順序執(zhí)行各個(gè)步驟。

可以在計(jì)算機(jī)可讀記錄介質(zhì)和計(jì)算機(jī)可讀代碼中具體實(shí)現(xiàn)本公開,并且計(jì)算機(jī)可讀記錄介質(zhì)可以包括存儲(chǔ)計(jì)算機(jī)系統(tǒng)可讀數(shù)據(jù)的任何類型的記錄裝置。計(jì)算機(jī)可讀記錄介質(zhì)的示例可以是包括按照載波(例如,通過互聯(lián)網(wǎng)的傳輸)的形式來具體實(shí)現(xiàn)的介質(zhì)的rom、ram、cd-rom、磁帶、軟盤、光學(xué)數(shù)據(jù)存儲(chǔ)裝置等。另外,計(jì)算機(jī)可讀記錄介質(zhì)可以分布在通過網(wǎng)絡(luò)連接在一起的計(jì)算機(jī)系統(tǒng)中,使得計(jì)算機(jī)可讀代碼按照分布方案來存儲(chǔ)和實(shí)現(xiàn)。

本申請(qǐng)中所使用的術(shù)語僅用于描述特定的實(shí)施方式,而不旨在限制本公開。除非另有定義,否則本文所使用的包括技術(shù)或科學(xué)術(shù)語的所有術(shù)語具有與本公開所屬領(lǐng)域的普通技術(shù)人員通常所理解的含義相同的含義。除非本申請(qǐng)中明確定義,否則諸如在通常使用詞典中定義的術(shù)語要被解釋為具有與相關(guān)領(lǐng)域中的上下文含義相同的含義,而不應(yīng)被解釋為具有理想或過度正式的含義。

圖1是例示模型逆向工程裝置的配置的框圖。

參照?qǐng)D1,根據(jù)本公開的實(shí)施方式的模型逆向工程裝置10可以包括處理器110、非易失性存儲(chǔ)器120、易失性存儲(chǔ)器130、網(wǎng)絡(luò)接口140、輸入裝置150和輸出裝置160。

處理器110處理器210可以包括模型逆向工程程序執(zhí)行器112和存儲(chǔ)管理器114。模型逆向工程程序執(zhí)行器112執(zhí)行模型逆向工程程序以通過源代碼逆向工程執(zhí)行模型生成和轉(zhuǎn)換過程。存儲(chǔ)管理器214管理由模型逆向工程程序執(zhí)行器112讀取和寫入的非易失性存儲(chǔ)器120和易失性存儲(chǔ)器130中的存儲(chǔ)區(qū)域。

非易失性存儲(chǔ)器120可以由固態(tài)盤ssd或硬盤驅(qū)動(dòng)器ddd配置,并且用于存儲(chǔ)模型逆向工程程序以及執(zhí)行該模型逆向工程程序所需要的數(shù)據(jù)。易失性存儲(chǔ)器130用于臨時(shí)存儲(chǔ)非易失性存儲(chǔ)器120中所存儲(chǔ)的模型逆向工程程序。

網(wǎng)絡(luò)接口140可以包括用于將模型逆向工程裝置10連接至外部服務(wù)器(例如,用于局域網(wǎng)lan通信的適配器)的環(huán)境。

輸入裝置150可以包括用于接收用戶輸入的環(huán)境,例如包括鼠標(biāo)、軌跡球、觸摸板、圖形輸入板、掃描儀、觸摸屏、鍵盤或指向裝置。輸出裝置160可以包括用于輸出用戶特定信息(例如,元模型、目標(biāo)模型或源代碼)的環(huán)境,其可以例如包括監(jiān)控器或觸摸屏。在一個(gè)實(shí)施方式中,輸入裝置150和輸出裝置160可以通過遠(yuǎn)程連接彼此連接。

圖2是例示圖1中的模型逆向工程程序執(zhí)行器的配置的框圖。

參照?qǐng)D2,根據(jù)本公開的實(shí)施方式的模型逆向工程程序執(zhí)行器112包括源代碼模型轉(zhuǎn)換器210、模型至模型轉(zhuǎn)換器220和代碼生成器230。模型逆向工程程序執(zhí)行器112是能夠通過源代碼逆向工程生成并轉(zhuǎn)換模型的裝置,其能夠接收源代碼或源模型以生成并轉(zhuǎn)換用戶期望形式的模型,并且當(dāng)準(zhǔn)備并應(yīng)用轉(zhuǎn)換規(guī)則時(shí)指定靈活多樣的驗(yàn)證規(guī)則。另外,模型逆向工程程序執(zhí)行器112在模型中存儲(chǔ)要轉(zhuǎn)換為編程語言的源代碼的所有信息。下面將參照?qǐng)D3至圖7描述源代碼模型轉(zhuǎn)換器210、模型至模型轉(zhuǎn)換器220和代碼生成器230。

圖3是例示圖2中的源代碼模型轉(zhuǎn)換器的配置和操作的視圖。

參照?qǐng)D3,根據(jù)本公開的實(shí)施方式的模型轉(zhuǎn)換器210包括轉(zhuǎn)換規(guī)則接收單元212、解析器214、元模型轉(zhuǎn)換單元216和模型轉(zhuǎn)換單元218。當(dāng)輸入了源代碼時(shí),轉(zhuǎn)換規(guī)則接收單元212可以接收轉(zhuǎn)換規(guī)則,解析器214可以解析源代碼以將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中,并且元模型轉(zhuǎn)換單元216可以獲取存儲(chǔ)器中所存儲(chǔ)的數(shù)據(jù)以將源代碼信息存儲(chǔ)在獨(dú)立于程序語言的元模型中。模型轉(zhuǎn)換單元218可以接收轉(zhuǎn)換規(guī)則并且將元模型轉(zhuǎn)換為目標(biāo)模型,計(jì)算滿足uml標(biāo)準(zhǔn)的模型。源代碼是要被轉(zhuǎn)換為uml模型的代碼,其可以是由多種編程語言(例如,java、c和cobol)準(zhǔn)備的源中的一種。

轉(zhuǎn)換規(guī)則接收單元212可以接收用于將所接收的源代碼轉(zhuǎn)換為目標(biāo)模型的轉(zhuǎn)換規(guī)則。當(dāng)源代碼中存在命名約定時(shí),轉(zhuǎn)換規(guī)則接收單元212可以理解該約定并且接收包括轉(zhuǎn)換目標(biāo)模型的配置的轉(zhuǎn)換規(guī)則。轉(zhuǎn)換規(guī)則接收單元212可以接收包括關(guān)于所輸入的源代碼的信息、關(guān)于要轉(zhuǎn)換的目標(biāo)模型的信息、關(guān)于命名約定的信息以及關(guān)于關(guān)系的信息的轉(zhuǎn)換規(guī)則。下面將參照?qǐng)D4描述轉(zhuǎn)換規(guī)則。

解析器214可以解析源代碼以將具有特定實(shí)質(zhì)結(jié)構(gòu)的解析數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中。即,解析器可以解析源代碼以將具有樹格式的實(shí)質(zhì)結(jié)構(gòu)的數(shù)據(jù)上傳到存儲(chǔ)器上。解析器214可以根據(jù)源代碼所具有的編程語言而具有不同的形式。解析是編譯器或翻譯器在計(jì)算機(jī)中將源代碼翻譯成機(jī)器語言的過程的步驟,其是對(duì)各個(gè)句子的語法結(jié)構(gòu)或語法進(jìn)行分析的過程。即,接收源程序中出現(xiàn)的標(biāo)記字符串以將該標(biāo)記字符串配置為語法正確的解析樹是一個(gè)任務(wù)。因此,解析器214可以根據(jù)源代碼的種類而具有不同的形式,并且根據(jù)源代碼的編程語言的種類利用具有不同實(shí)質(zhì)結(jié)構(gòu)的數(shù)據(jù)來解析源代碼。

元模型轉(zhuǎn)換單元216可以將所存儲(chǔ)的解析數(shù)據(jù)轉(zhuǎn)換為元模型。元模型轉(zhuǎn)換單元216可以將由各種源代碼所準(zhǔn)備的數(shù)據(jù)轉(zhuǎn)換為元模型實(shí)質(zhì)結(jié)構(gòu)。當(dāng)不管源代碼具有什么編程語言都改變解析器214時(shí),元模型轉(zhuǎn)換單元216使模型逆向工程裝置10能夠生成具有相同質(zhì)量和形式的uml模型。因此,元模型轉(zhuǎn)換單元216可以獨(dú)立于源代碼和編程語言的種類而將數(shù)據(jù)轉(zhuǎn)換為將源代碼的所有元素顯示為特定實(shí)質(zhì)結(jié)構(gòu)的元模型。

模型轉(zhuǎn)換單元218可以根據(jù)由轉(zhuǎn)換規(guī)則接收單元212接收的轉(zhuǎn)換規(guī)則將由元模型轉(zhuǎn)換單元216轉(zhuǎn)換的元模型轉(zhuǎn)換為目標(biāo)模型。模型轉(zhuǎn)換單元218可以將轉(zhuǎn)換后的目標(biāo)模型再轉(zhuǎn)換為滿足uml標(biāo)準(zhǔn)的形式,以將其寫在文件上。模型轉(zhuǎn)換單元218可以接收用于沒有被表達(dá)為uml模型的簡單表達(dá)式系列的語法的單獨(dú)轉(zhuǎn)換規(guī)則,以將其轉(zhuǎn)換為uml模型??梢园凑誹ml模型的形式來存儲(chǔ)通過模型轉(zhuǎn)換單元218轉(zhuǎn)換的模型,并且可以通過諸如ibm合理軟件架構(gòu)(rationalsoftwarearchitect)的uml編輯軟件來確認(rèn)該模型。模型轉(zhuǎn)換單元218可以根據(jù)轉(zhuǎn)換規(guī)則排除與要轉(zhuǎn)換的對(duì)象無關(guān)的源代碼,并且根據(jù)轉(zhuǎn)換規(guī)則指定要轉(zhuǎn)換的源代碼的特定元素或目標(biāo)模型的特定元素。源代碼的特定元素是源代碼的組件當(dāng)中的要被轉(zhuǎn)換為目標(biāo)模型的對(duì)象項(xiàng)目,所述源代碼的特定元素可以與源代碼的包、類、屬性和操作對(duì)應(yīng),并且目標(biāo)模型的特定元素是轉(zhuǎn)換后的目標(biāo)模型的轉(zhuǎn)換結(jié)果項(xiàng)目,所述目標(biāo)模型的特定元素可以與包、接口、類、屬性、操作、協(xié)作、序列圖、類圖、代碼生命線、消息生命線、驗(yàn)證生命線、異常生命線對(duì)應(yīng)。這里,無關(guān)的源代碼是可以由用戶選擇的沒有被指定為特定元素的元素。例如,當(dāng)用戶將注釋或未調(diào)用的信息選擇作為無關(guān)的源代碼時(shí),可以丟棄相關(guān)信息。另外,模型轉(zhuǎn)換單元218可以驗(yàn)證源代碼的所有信息是否都被包括在目標(biāo)模型中。

圖4是例示由圖3中的轉(zhuǎn)換規(guī)則接收器接收的逆向規(guī)則的視圖。

在圖4中,轉(zhuǎn)換規(guī)則可以由關(guān)于輸入源代碼的信息(源轉(zhuǎn)換規(guī)則)111、關(guān)于轉(zhuǎn)換后的目標(biāo)模型的信息(模型轉(zhuǎn)換規(guī)則)112、關(guān)于轉(zhuǎn)換后的模型元素的命名約定的信息113、以及關(guān)于模型元素之間的關(guān)系的信息來配置。

源轉(zhuǎn)換規(guī)則40可以使用正則表達(dá)式來指定要被轉(zhuǎn)換為模型的源。該源可以包括正則表達(dá)式,該正則表達(dá)式包括限定名、屬性、功能、源種類。限定名是指定逆向工程目標(biāo)源的正則表達(dá)式。僅將與包括包或文件夾的類名當(dāng)中的項(xiàng)目中定義的正則表達(dá)式匹配的源代碼轉(zhuǎn)換為模型。當(dāng)包或類名具有命名約定時(shí),模型轉(zhuǎn)換單元218可以使用項(xiàng)目對(duì)源進(jìn)行分類并將源轉(zhuǎn)換為模型,并且排除與逆向工程目標(biāo)無關(guān)的源代碼。屬性是指示類或文件中所包括的功能的正則表達(dá)式。模型轉(zhuǎn)換單元218可以將僅與文件中所包括的功能當(dāng)中的所有或特定功能或者限定名匹配的類轉(zhuǎn)換為模型。當(dāng)源不是用java而是用c或其它語言編寫并且文件名僅用文件擴(kuò)展名標(biāo)識(shí)時(shí),模型轉(zhuǎn)換單元218可以在項(xiàng)目中設(shè)置與文件擴(kuò)展名對(duì)應(yīng)的值以僅將特定類型的源轉(zhuǎn)換為模型。

模型轉(zhuǎn)換規(guī)則420可以顯示目標(biāo)模型的結(jié)構(gòu)信息。僅id是可以由用戶給定的用于識(shí)別要轉(zhuǎn)換為模型的元素的值。模型元素是用于指定要轉(zhuǎn)換的模型的元素的項(xiàng)目,該模型元素指定包、接口、類、屬性、操作、協(xié)作、序列圖、類圖、代碼生命線、消息生命線、驗(yàn)證生命線和異常生命線。源元素是指定要轉(zhuǎn)換為源的元素的項(xiàng)目,該源元素可以指定包、類、屬性和操作。當(dāng)沒有指定源元素時(shí),可以插入未在源和目標(biāo)模型中的元素。版型(stereotype)可以具有按照在轉(zhuǎn)換后的模型元素中被指定的方式書寫的版式。上層元素id用于指定包括相應(yīng)元素的上層元素id。

命名約定430可以指示關(guān)于用于對(duì)要轉(zhuǎn)換的模型元素進(jìn)行命名的命名約定的信息。源前綴是當(dāng)轉(zhuǎn)換為模型時(shí)要去除的源的前綴。模型前綴是當(dāng)轉(zhuǎn)換為模型時(shí)被包括在模型中的前綴。源前綴是當(dāng)轉(zhuǎn)換為模型時(shí)要去除的源的前綴。模型前綴是當(dāng)轉(zhuǎn)換為模型時(shí)被包括在模型元素名稱中的前綴。命名約定是當(dāng)將與模型元素對(duì)應(yīng)的源名稱轉(zhuǎn)換為模型命名時(shí)所應(yīng)用的命名約定??梢灾付ㄖT如“無”、“韓語”、“自定義”這樣的項(xiàng)目,其中,“無”使用源名稱作為模型名稱,“韓語”使用預(yù)先輸入的韓語名稱-英文名稱詞典來將源的英文名稱轉(zhuǎn)換為韓語名稱以將該韓語名稱用作模型名稱,并且“自定義”準(zhǔn)備在其不是簡單的英語-韓語轉(zhuǎn)換的情況下要指定的源程序。命名類指示當(dāng)在項(xiàng)目被指定為命名約定中的“自定義”的情況下確定模型名稱時(shí)所使用的java類信息。

即使源代碼中不存在轉(zhuǎn)換后的模型元素之間的關(guān)系,但是在需要時(shí),關(guān)系轉(zhuǎn)換規(guī)則440可以設(shè)置轉(zhuǎn)換后的模型元素之間的關(guān)系。類型(type)指示諸如關(guān)聯(lián)、泛化、實(shí)現(xiàn)和依賴這樣的關(guān)系類型。關(guān)系元素id指示用于設(shè)置關(guān)系的模型元素id。

圖5是例示圖2中的模型至模型轉(zhuǎn)換器的配置和操作的視圖。

在圖5a中,模型至模型轉(zhuǎn)換器220包括模型至模型轉(zhuǎn)換規(guī)則接收單元222和模型至模型轉(zhuǎn)換單元224。

在一個(gè)實(shí)施方式中,源代碼模型轉(zhuǎn)換器210可以根據(jù)所接收的轉(zhuǎn)換規(guī)則將所輸入的源代碼轉(zhuǎn)換為uml形式的源模型。模型至模型轉(zhuǎn)換器220可以接收模型至模型轉(zhuǎn)換規(guī)則,并且根據(jù)模型至模型轉(zhuǎn)換規(guī)則將源模型轉(zhuǎn)換為最終目標(biāo)模型。在圖5中詳細(xì)地描述了模型至模型轉(zhuǎn)換規(guī)則。

更具體地,模型至模型轉(zhuǎn)換器220可以根據(jù)模型至模型轉(zhuǎn)換規(guī)則移動(dòng)并重建源模型的包和類的位置。即,模型至模型轉(zhuǎn)換器220可以在源模型包的類很多的情況下將包進(jìn)行分離,并且在類的操作很多的情況下將類進(jìn)行分離。按照相同的方式,模型至模型轉(zhuǎn)換器220可以在源模型包的類很少的情況下整合包并且在類的操作很少的情況下整合類。換句話說,當(dāng)需要根據(jù)轉(zhuǎn)換規(guī)則在元模型中整合并重組轉(zhuǎn)換后的源模型的包或類時(shí),模型至模型轉(zhuǎn)換器220可以根據(jù)模型至模型轉(zhuǎn)換規(guī)則將源模型轉(zhuǎn)換為目標(biāo)模型。

轉(zhuǎn)換規(guī)則接收單元

圖5b是例示模型至模型轉(zhuǎn)換規(guī)則的視圖。

在圖5b中,模型至模型轉(zhuǎn)換規(guī)則由源模型qualifiedname510和目標(biāo)模型qualifiedname520配置。源模型qualifiedname510是要轉(zhuǎn)換為目標(biāo)模型的源模型元素的限定名,并且由該限定名指示的源模型元素的所有下層模型元素被復(fù)制到由目標(biāo)模型qualifiedname520指示的模型元素上。當(dāng)被復(fù)制到目標(biāo)模型時(shí),與源模型qualifiedname510不同但是與目標(biāo)模型qualifiedname520相同的源模型元素被整合為一個(gè)目標(biāo)模型元素。相反,分別復(fù)制與源模型qualifiedname510的高級(jí)元素名稱相同的源模型元素以及與目標(biāo)模型qualifiedname520的高級(jí)元素名稱不同的源模型元素。目標(biāo)模型qualifiedname520指示將由源模型qualifiedname510指示的元素復(fù)制到其上的目標(biāo)模型元素的qualifiedname520。

圖6是例示根據(jù)圖2中的源代碼模型轉(zhuǎn)換器的代碼系列表達(dá)式逆向工程方法的視圖。

在圖6a中,源代碼模型轉(zhuǎn)換器210可以首先接收正則表達(dá)式類型的轉(zhuǎn)換規(guī)則以轉(zhuǎn)換該表達(dá)式,并且選擇并解析要轉(zhuǎn)換的源代碼以將解析后的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中。接下來,源代碼模型轉(zhuǎn)換器210可以通過元模型轉(zhuǎn)換器216獲取存儲(chǔ)器中所存儲(chǔ)的數(shù)據(jù),以將源代碼信息存儲(chǔ)在獨(dú)立于編程語言的模型中。模型轉(zhuǎn)換器218可以接收所接收的轉(zhuǎn)換規(guī)則,以根據(jù)該轉(zhuǎn)換規(guī)則轉(zhuǎn)換由元模型轉(zhuǎn)換單元216轉(zhuǎn)換的數(shù)據(jù)。可以按照滿足uml標(biāo)準(zhǔn)的形式再將轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行轉(zhuǎn)換并且將其存儲(chǔ)在文件中。

當(dāng)根據(jù)轉(zhuǎn)換規(guī)則將元模型轉(zhuǎn)換為uml模型時(shí),uml模型中未表達(dá)的簡單表達(dá)式系列的語法可以通過接收單獨(dú)的轉(zhuǎn)換規(guī)則來進(jìn)行轉(zhuǎn)換。下面給出轉(zhuǎn)換規(guī)則的詳細(xì)描述。

1)常見事物:未被表達(dá)為功能的內(nèi)部邏輯當(dāng)中的功能調(diào)用或組合片段的邏輯表達(dá)式可以在適合于使用目的的代碼系列生命線中生成諸如代碼、驗(yàn)證、異常和消息這樣的同步信息,并且可以在文檔欄中被表達(dá)為邏輯代碼。

2)消息:生成消息的語法可以在消息生命線中生成消息。根據(jù)是否存在與由生成消息的特定功能提出的正則表達(dá)式匹配的功能來確定是否在消息生命線中生成消息。

3)異常消息:導(dǎo)致錯(cuò)誤消息的語法可以在異常生命線中生成消息。根據(jù)是否存在與由生成錯(cuò)誤的特定功能提出的正則表達(dá)式匹配的功能來確定是否在異常生命線中生成消息。

4)驗(yàn)證消息:在驗(yàn)證諸如基本輸入值檢查的輸入?yún)?shù)的同時(shí)導(dǎo)致錯(cuò)誤的語法可以在驗(yàn)證生命線中生成消息。根據(jù)是否存在與由功能和與輸入值驗(yàn)證對(duì)應(yīng)的語法模式提出的正則表達(dá)式匹配的功能來確定是否在驗(yàn)證生命線中生成消息。

5)代碼消息:沒有被轉(zhuǎn)換為操作調(diào)用、組合片段的其它邏輯和注釋可以在代碼生命線中生成消息。在操作將調(diào)用表達(dá)為同步消息或者生成組合片段之前的內(nèi)部邏輯被完全表達(dá)在代碼生命線中。就在建模元素出現(xiàn)之前,源代碼的操作調(diào)用語法和與組合片段對(duì)應(yīng)的原始語法也被表達(dá)在代碼生命線中(完全表達(dá)原始源代碼以驗(yàn)證模型轉(zhuǎn)換匹配)。

6)參數(shù)聲明和初始化:可以使用以英語單詞名稱-韓語單詞名稱的形式輸入的并且按照與邏輯表達(dá)式匹配的形式改變的在先信息來用韓語書寫參數(shù)名稱。至于類型名稱,基本類型根據(jù)通過映射源類型和模型類型而產(chǎn)生的映射表來轉(zhuǎn)換類型名稱,并且除了基本類型以外的類型將類型(type)名稱轉(zhuǎn)換為根據(jù)布置符號(hào)而轉(zhuǎn)換為模型的類型名稱,該布置符號(hào)是根據(jù)是否被布置而在邏輯表達(dá)式中定義的。參數(shù)初始化意味著按照原樣轉(zhuǎn)換語法。

7)功能轉(zhuǎn)換:根據(jù)預(yù)先定義的正則表達(dá)式規(guī)則,將語法轉(zhuǎn)換為正則表達(dá)式。示例)strcpy\((參數(shù)名稱),在滿足(參數(shù)名稱)的左手定則的情況下)\)->${1}=${2},該語法被轉(zhuǎn)換為右手表達(dá)式。因此,諸如strcpy(a,b)的語法被轉(zhuǎn)換為a=b語法。

圖6b例示了如何在序列圖中表達(dá)不能被指示為uml表達(dá)式的簡單序列系列的表達(dá)式。源代碼模型轉(zhuǎn)換器210生成針對(duì)代碼系列表達(dá)式的諸如代碼、驗(yàn)證、異常和消息這樣的任意生命線以在序列圖中指示代碼系列表達(dá)式,利用該生命線來繪制消息,并且將該消息的文檔內(nèi)容存儲(chǔ)在表達(dá)式中。

圖7是例示圖2中的代碼生成器配置和用于生成代碼的方法的視圖。

在圖7a中,代碼生成器230可以包括代碼生成器配置232、模型掃描儀234、模型驗(yàn)證236和代碼制作器238。代碼生成器230是基于模型生成各種編程語言的源代碼的模塊。代碼生成器230可以基于針對(duì)模型元素和邏輯表達(dá)式中的每一個(gè)進(jìn)行映射的轉(zhuǎn)換規(guī)則來生成程序源代碼。代碼生成器230可以使用模型來生成各種語言的源代碼。

在圖7b中,代碼生成器配置232可以執(zhí)行準(zhǔn)備轉(zhuǎn)換規(guī)則以描述所期望的源代碼的配置(s710)。首先,生成一個(gè)轉(zhuǎn)換規(guī)則項(xiàng)目以注冊(cè)要在該項(xiàng)目中轉(zhuǎn)換的模型元素,并且針對(duì)各個(gè)元素生成并注冊(cè)轉(zhuǎn)換規(guī)則。當(dāng)注冊(cè)轉(zhuǎn)換規(guī)則時(shí),描述轉(zhuǎn)換規(guī)則的轉(zhuǎn)換行為并且指定轉(zhuǎn)換規(guī)則的執(zhí)行條件。當(dāng)針對(duì)所有元素都完全注冊(cè)了轉(zhuǎn)換規(guī)則時(shí),定義要準(zhǔn)備的源代碼的結(jié)構(gòu)。

當(dāng)期望在完全準(zhǔn)備軟件模型之后或者正在準(zhǔn)備軟件的同時(shí)生成針對(duì)所準(zhǔn)備模型的代碼時(shí),需要的是選擇用于期望模型的轉(zhuǎn)換規(guī)則項(xiàng)目,并且然后執(zhí)行源代碼生成功能。不管是整個(gè)模型還是部分模型,都能夠生成源代碼。

當(dāng)執(zhí)行源代碼生成功能時(shí),在代碼生成器230中執(zhí)行模型掃描儀234。模型掃描儀234可以按照從上到下的方案從最頂層元素中連續(xù)地讀取元素,以確認(rèn)相關(guān)元素是否是源代碼生成目標(biāo)元素。在源代碼生成目標(biāo)元素的情況下,模型掃描儀234向模型驗(yàn)證236發(fā)送相關(guān)元素(s720)。

模型驗(yàn)證236可以接收源代碼生成目標(biāo)元素并且根據(jù)針對(duì)相關(guān)元素的驗(yàn)證規(guī)則執(zhí)行驗(yàn)證(s730)。當(dāng)完成驗(yàn)證之后存在錯(cuò)誤時(shí),模型驗(yàn)證236可以將該錯(cuò)誤傳送給模型掃描儀234,并且模型掃描儀234可以存儲(chǔ)驗(yàn)證結(jié)果。

當(dāng)完全驗(yàn)證所有模型元素并且存在錯(cuò)誤時(shí),模型掃描儀234可以在屏幕上輸出所有驗(yàn)證的結(jié)果(s740)。當(dāng)作為驗(yàn)證的結(jié)果不存在錯(cuò)誤時(shí),代碼制作器238可以根據(jù)轉(zhuǎn)換規(guī)則生成源代碼(s750)。

盡管本文提供了本公開的優(yōu)選實(shí)施方式的描述,但本領(lǐng)域技術(shù)人員將理解的是,可以在不脫離所附的權(quán)利要求所限定的技術(shù)原理和范圍的情況下按照各種方式修改或改變本公開。

工業(yè)實(shí)用性

根據(jù)本公開,提供了以下的計(jì)算機(jī)可執(zhí)行模型逆向工程方法和裝置:該計(jì)算機(jī)可執(zhí)行模型逆向工程方法和裝置定義結(jié)構(gòu)以及將程序的源代碼轉(zhuǎn)換為模型以自動(dòng)生成所需類型的模型的規(guī)則,因此易于分析和重新設(shè)計(jì)程序結(jié)構(gòu)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1