• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      軟件分析演化與再工程研究綜述

      2019-12-26 07:35:00張志宏包東輝
      智富時(shí)代 2019年11期

      張志宏 包東輝

      【摘 要】軟件分析、演化和再工程是軟件生命周期的重要領(lǐng)域。維護(hù)大型軟件的任務(wù)一直是軟件從業(yè)者面臨的挑戰(zhàn)。本文從程序理解、源代碼建模、組件恢復(fù)、二進(jìn)制逆向工程和重構(gòu)、網(wǎng)絡(luò)為中心的平臺(tái)遷移、工具和環(huán)境六個(gè)軟件逆向工程領(lǐng)域探討了研究新趨勢(shì),以更好地滿足軟件分析、進(jìn)化和再工程的需要。

      【關(guān)鍵詞】軟件逆向工程;軟件演化;軟件再工程

      一、前言

      軟件分析、演化和再工程技術(shù)在過(guò)去幾年中已經(jīng)顯著成熟,并且已經(jīng)與軟件工程的其他幾個(gè)領(lǐng)域形成了強(qiáng)有力的技術(shù)聯(lián)系,例如解析和編譯技術(shù)、軟件建模和可視化、模式分析和集成開(kāi)發(fā)環(huán)境等。同時(shí),由于迭代和增量開(kāi)發(fā)模型的引入,例如極限編程(XP)和統(tǒng)一過(guò)程(RUP),為軟件分析、演化和再工程領(lǐng)域提供了新方向。在這種迭代和增量模型的上下文中,軟件開(kāi)發(fā)可以采取模型的分析、演化和轉(zhuǎn)換的形式,這些模型涉及廣泛的軟件組件,例如業(yè)務(wù)模型、需求模型、體系結(jié)構(gòu)和設(shè)計(jì)模型,以及實(shí)現(xiàn)和測(cè)試模型。在這些方面,產(chǎn)生了很多新的研究方向,從而將軟件分析和演化技術(shù)納入此類工程模型。

      本文對(duì)軟件分析、演化和再工程的六個(gè)主要領(lǐng)域進(jìn)行研究:

      1、程序理解:該領(lǐng)域涉及支持源代碼分析和設(shè)計(jì)恢復(fù)的技術(shù)。

      2、源代碼建模和表示:該領(lǐng)域涉及在更高抽象級(jí)別上對(duì)源代碼建模的技術(shù)。

      3、組件恢復(fù):該領(lǐng)域涉及大型軟件系統(tǒng)的架構(gòu)分析和模塊化技術(shù)。

      4、二進(jìn)制代碼逆向工程:該領(lǐng)域涉及分析二進(jìn)制代碼和反編譯復(fù)雜系統(tǒng)的技術(shù)。

      5、網(wǎng)絡(luò)為中心的平臺(tái)遷移:該領(lǐng)域涉及支持遺留系統(tǒng)演化到支持Web環(huán)境的技術(shù)。

      6、工具和環(huán)境:該領(lǐng)域主要關(guān)注系統(tǒng)分析和重構(gòu)的實(shí)用方法和支持工具。

      二、研究綜述

      程序理解一直被認(rèn)為是逆向工程和軟件維護(hù)的核心工作,高達(dá)50%的維護(hù)工作用于程序理解任務(wù),而最近的研究表明,涉及的時(shí)間甚至更多,高達(dá)70%。程序理解被定義為“在不同抽象層次上構(gòu)建底層軟件的模型,從代碼本身的模型到底層應(yīng)用領(lǐng)域的模型”[1]。因此,這是一個(gè)開(kāi)發(fā)人員根據(jù)所面臨的維護(hù)任務(wù)、程序的功能、工作方式、體系結(jié)構(gòu)或資源使用情況來(lái)識(shí)別的過(guò)程。到目前為止,對(duì)程序理解的研究主要集中在兩個(gè)問(wèn)題上:程序的哪種表示方式能夠幫助開(kāi)發(fā)人員在執(zhí)行任務(wù)時(shí)恢復(fù)適當(dāng)?shù)哪P?,以及如何通過(guò)工具自動(dòng)構(gòu)建這種表示方式。

      奧本大學(xué)的D.A.Umphress,D.Hendrix,J.H.Cross II在文章《改進(jìn)和測(cè)量源代碼可理解性的軟件可視化》中介紹了軟件可視化的兩種形式,并在實(shí)驗(yàn)中驗(yàn)證了它們?nèi)绾螏椭绦蚶斫?,為了便于理解程序的結(jié)構(gòu)和執(zhí)行,分析了控制結(jié)構(gòu)圖,并分析了復(fù)雜度圖對(duì)源代碼可理解性的測(cè)量能力。兩種方法都被證明是有效的,并被納入了Grasp IDE項(xiàng)目。然而,軟件可視化的有效性仍然需要在實(shí)際環(huán)境中得到更多證明。

      CWI和Delft大學(xué)的A.van Deursen和L.Moonen在Cobol程序環(huán)境下使用類型來(lái)記錄軟件系統(tǒng)的方法,提出了一種自動(dòng)程序理解工具構(gòu)建的解決方案。它引入了TypeExplorer,一種基于推斷類型瀏覽Cobol遺留系統(tǒng)的工具。TypeExplorer首先從源文件中提取信息,分析它并使它來(lái)推斷類型,然后構(gòu)建一個(gè)基于超文本的文檔,該文檔可供瀏覽,以便發(fā)現(xiàn)單個(gè)變量的低級(jí)結(jié)構(gòu)以及整個(gè)系統(tǒng)架構(gòu)的全局概覽。該項(xiàng)目的一個(gè)重要特點(diǎn)是支持將遺留Cobol-85代碼遷移到面向?qū)ο蟮腃obol標(biāo)準(zhǔn)中來(lái)。多年來(lái),幾個(gè)研究小組開(kāi)發(fā)了程序分析技術(shù)和工具,不同研究人員之間展開(kāi)合作,所面臨的關(guān)鍵問(wèn)題是需要工具的互操作性,即一個(gè)工具從另一個(gè)工具導(dǎo)入數(shù)據(jù)并將其結(jié)果導(dǎo)出到另一個(gè)工具的能力?;诖艘粋€(gè)新的研究領(lǐng)域誕生了,同時(shí)也得到了第一屆標(biāo)準(zhǔn)交換格式研討會(huì)的認(rèn)可。

      滑鐵盧大學(xué)的R.C.Holt,達(dá)姆施塔特理工大學(xué)的A.Shuerr,加利福尼亞大學(xué)的S.E.Sim和科布倫茨蘭道大學(xué)的A.Winter,提出了一種基于圖的標(biāo)準(zhǔn)交換格式,描述了這種協(xié)作的工作模式,并介紹了作為標(biāo)準(zhǔn)交換格式的GXL語(yǔ)言。這可看成是軟件分析的統(tǒng)一源代碼建模和表示的重要里程碑。GXL是一種基于XML的語(yǔ)言,用于表示類型圖、屬性圖、有向圖、有序圖以及超圖和層次圖?;诖?,實(shí)例圖可以用GXL表示并與相應(yīng)的模式信息交換。同時(shí),介紹了標(biāo)準(zhǔn)交換格式的基本要求,詳細(xì)說(shuō)明了GXL,并討論了使用GXL交換圖形。

      逆向工程不僅是一門(mén)理論研究學(xué)科,也是一個(gè)應(yīng)用領(lǐng)域。當(dāng)軟件必須轉(zhuǎn)移使用一種新開(kāi)發(fā)技術(shù)或一種新平臺(tái)上時(shí),現(xiàn)有軟件的應(yīng)用程序塊(稱為組件)應(yīng)該被提取并用作構(gòu)建新軟件。在軟件再工程的背景下,當(dāng)前還須解決兩個(gè)主要問(wèn)題:一個(gè)是識(shí)別現(xiàn)有軟件的哪些部分是潛在可重用的,另一個(gè)是開(kāi)發(fā)能夠圍繞已有代碼塊構(gòu)建新軟件的技術(shù)。

      德國(guó)斯圖加特大學(xué)的R.Koschke和J.czeranski以及意大利RCOST大學(xué)的G.Canfora對(duì)組件恢復(fù)的dIC方法,提出了識(shí)別潛在可重用代碼片段的解決方案。更具體地說(shuō),通過(guò)dIC方法來(lái)檢測(cè)抽象數(shù)據(jù)對(duì)象,dIC方法也被擴(kuò)展到檢測(cè)抽象數(shù)據(jù)類型和集成一個(gè)良好的內(nèi)聚度量來(lái)識(shí)別候選組件。由于文獻(xiàn)表明,任何一種構(gòu)件恢復(fù)方法的有效性在很大程度上取決于主體系統(tǒng)的特性,因此有必要進(jìn)一步研究構(gòu)件恢復(fù)方法與系統(tǒng)特性之間的關(guān)系。

      亞利桑那州立大學(xué)的S.V.Mudiam、G.C.Gannod的文章《使用適配器將遺留組件進(jìn)行集成》,提出了一種通過(guò)重用現(xiàn)有代碼片段和將遺留組件遷移到以網(wǎng)絡(luò)為中心的平臺(tái)來(lái)構(gòu)建軟件的解決方案。具體來(lái)說(shuō),它提出了將組件視為服務(wù)的觀點(diǎn),然后可以構(gòu)建客戶機(jī)應(yīng)用程序來(lái)與這些被視為數(shù)據(jù)和行為提供者的服務(wù)進(jìn)行交互。該技術(shù)利用架構(gòu)描述語(yǔ)言將組件描述為服務(wù),并使用包裝器或適配器生成“粘合代碼”,實(shí)現(xiàn)服務(wù)的運(yùn)行時(shí)集成。工作包括開(kāi)發(fā)一個(gè)環(huán)境,通過(guò)提供服務(wù)瀏覽和將建議技術(shù)遷移到.NET和web服務(wù)框架,來(lái)幫助創(chuàng)建基于服務(wù)的應(yīng)用程序。到目前為止,提到的所有方法都依賴于源代碼可用于分析的假設(shè),同時(shí)允許使用多種標(biāo)準(zhǔn)技術(shù),通?;诰幾g,如抽象語(yǔ)法樹(shù)構(gòu)造或依賴關(guān)系識(shí)別。不幸的是,在許多實(shí)際的工業(yè)應(yīng)用中,程序分析有時(shí)必須在沒(méi)有完全訪問(wèn)源代碼的情況下開(kāi)始。二進(jìn)制分析可能是唯一有效的替代方法,即直接分析程序的二進(jìn)制機(jī)器代碼。

      昆士蘭大學(xué)的D.Ung的發(fā)表了《帶運(yùn)行時(shí)反饋的二進(jìn)制代碼動(dòng)態(tài)重構(gòu)》。二進(jìn)制翻譯是一種允許為一臺(tái)機(jī)器編譯的軟件被轉(zhuǎn)換成在另一臺(tái)機(jī)器上高效運(yùn)行的技術(shù)。這種重構(gòu)活動(dòng)在逆向工程階段分解。在逆向工程階段,二進(jìn)制指令被解碼到更高的抽象級(jí)別,然后是正向工程階段,在此階段,抽象數(shù)據(jù)被編碼成另一種二進(jìn)制形式。該文介紹了UQDBT二進(jìn)制轉(zhuǎn)換器,它通過(guò)指定機(jī)器屬性及其指令集來(lái)提供適應(yīng)性,它以一種特殊的方式處理頻繁執(zhí)行的代碼,獲得比其他轉(zhuǎn)換器更快的翻譯。

      【參考文獻(xiàn)】

      [1]劉彥宇,唐運(yùn)樂(lè).支持源代碼逆向建模的關(guān)系模型設(shè)計(jì)[J].河池學(xué)院學(xué)報(bào),2013,33(02):91-96.

      作者簡(jiǎn)介:張志宏(1990-),男,山西忻州人,漢族,本科,單位:北海職業(yè)學(xué)院,研究方向:計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)。包東輝(1971-),男,廣西北海人,漢族,本科,講師,單位:北海職業(yè)學(xué)院,研究方向:職業(yè)教育。

      課題項(xiàng)目:2018年度廣西高校中青年基礎(chǔ)能力提升項(xiàng)目(2018KY1190 )《支持信息檢索的程序理解輔助系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》。

      顺平县| 山东省| 淮北市| 浦县| 驻马店市| 炉霍县| 同心县| 巫山县| 旺苍县| 铜梁县| 同德县| 龙里县| 广东省| 含山县| 彭泽县| 衡阳县| 会宁县| 怀来县| 沐川县| 泾源县| 忻州市| 莱西市| 浦东新区| 建昌县| 沙田区| 青海省| 浮山县| 佛冈县| 安岳县| 浦东新区| 天气| 永德县| 开远市| 合水县| 原平市| 聂拉木县| 四川省| 呼伦贝尔市| 观塘区| 沁源县| 贡嘎县|