午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

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

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

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



背景技術(shù):

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

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

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

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

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

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



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

技術(shù)課題

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

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

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

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

技術(shù)解決方案

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

有益效果

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

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

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

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

根據(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)換器的代碼系列表達式逆向工程方法的視圖。

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

圖8是例示通用建模語言uml和作為效果分析工具的changeminer的元素。

具體實施方式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

即使源代碼中不存在轉(zhuǎn)換后的模型元素之間的關(guān)系,但是在需要時,關(guān)系轉(zhuǎn)換規(guī)則440可以設(shè)置轉(zhuǎn)換后的模型元素之間的關(guān)系。類型(type)指示諸如關(guān)聯(lián)、泛化、實現(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。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

工業(yè)實用性

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

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