關(guān)于反向工程的合法性條件有哪些,反向工程這個問題很多朋友還不知道,今天小六來為大家解答以上的問題,現(xiàn)在讓我們一起來看看吧!
1、首先聲明是轉(zhuǎn)來的,因為我回答你這個問題帶了個網(wǎng)址,就一直提示"敏感"回答不上0?引言??? 隨著計算機(jī)技術(shù)的迅速發(fā)展,計算機(jī)技術(shù)應(yīng)用的領(lǐng)域也逐漸擴(kuò)大,人們希望計算機(jī)這一智能體能夠解決各個領(lǐng)域的更多、更復(fù)雜的問題,從而也對計算機(jī)軟件產(chǎn)品的功能、質(zhì)量、開發(fā)成本和時間提出了越來越多的要求,軟件技術(shù)受到了前所未有的挑戰(zhàn)。
2、傳統(tǒng)的軟件工程主要關(guān)注新軟件的分析與設(shè)計,但隨著軟件系統(tǒng)的規(guī)模和復(fù)雜度日益增長,軟件的生命周期越來越長,軟件開發(fā)的很大一部分工作集中于維護(hù)和改造現(xiàn)有的軟件系統(tǒng),而這些現(xiàn)有系統(tǒng)的需求、設(shè)計決策、業(yè)務(wù)規(guī)則、歷史數(shù)據(jù)等統(tǒng)稱為遺產(chǎn)系統(tǒng)(LS,Legacy System),LS是一種巨大的、長期的投資,因為如何充分利用這些有用的資產(chǎn)對新系統(tǒng)的開發(fā)顯得尤其重要。
3、另一方面,隨著Internet技術(shù)的普及,Web用戶增多,很多軟件廠商需要將系統(tǒng)移植到Web上,進(jìn)一步加劇了對軟件維護(hù)的需求。
4、實踐研究表明,軟件資源預(yù)算的50%~80%消耗在對現(xiàn)有系統(tǒng)的維護(hù)上,而軟件維護(hù)者理解程序源代碼的時間要占整個軟件維護(hù)的47%~62%。
5、軟件維護(hù)已經(jīng)成為軟件工程面臨的重要課題之一,而正確和全面地理解軟件系統(tǒng)是對軟件進(jìn)行維護(hù)的前提,軟件逆向工程應(yīng)運(yùn)而生,成為軟件工程領(lǐng)域的一個新興分支,其目標(biāo)就是開發(fā)幫助人們理解已有軟件系統(tǒng)的方法、工具,為軟件系統(tǒng)的維護(hù)和演化提供支持。
6、??? 文中主要介紹逆向工程的基本概念、主要步驟、分析方法、研究現(xiàn)狀、存在的問題以及發(fā)展方向。
7、1 逆向工程的基本概念??? “逆向工程”這個名詞最早出現(xiàn)在對硬件產(chǎn)品的分析中,人們分析硬件產(chǎn)品以便改進(jìn)自己的產(chǎn)品。
8、M.G.Rekoffir將逆向工程定義為:對一個復(fù)雜的硬件系統(tǒng)實施有條理的檢查,以開發(fā)出關(guān)于這個系統(tǒng)的一組規(guī)范說明的過程。
9、在把這個概念應(yīng)用到軟件系統(tǒng)過程中,研究人員發(fā)現(xiàn)利用其中的許多方法可以獲得對系統(tǒng)以及系統(tǒng)結(jié)構(gòu)的理解。
10、然而,對一個硬件系統(tǒng)實施逆向工程,一般是為了得到這個系統(tǒng)的復(fù)制品,對一個軟件系統(tǒng)實施逆向工程,一般是為了獲得對這個系統(tǒng)在設(shè)計層次上的理解,以便于系統(tǒng)的維護(hù)、鞏固、移植、改進(jìn)。
11、??? 軟件逆向工程的基本原理是抽取軟件系統(tǒng)的主要部分而隱藏細(xì)節(jié),然后使用抽取出的實體在高層上描述軟件系統(tǒng)。
12、在軟件工程領(lǐng)域,迄今為止沒有統(tǒng)一的逆向工程定義,較為通用的是Elliot Chikofsky和Cross1990年定義的逆向工程的相關(guān)術(shù)語。
13、軟件工程通常被認(rèn)為是開發(fā)一個新的系統(tǒng),盡管軟件工程也包括逆向工程和再工程,為了避免對軟件工程含義的誤解,引進(jìn)了正向工程的概念。
14、??? (1)正向工程(Forward Engineering):從系統(tǒng)的高層抽象和邏輯上獨(dú)立于實現(xiàn)的設(shè)計到系統(tǒng)的物理設(shè)計的傳統(tǒng)過程,具體地說是從用戶的需求到高層設(shè)計,再到底層設(shè)計,最后到實現(xiàn)的過程。
15、??? (2)逆向工程(Reverse Engineering):對系統(tǒng)進(jìn)行分析,以確定系統(tǒng)的組件和組件之間的相互作用,以其他形式表示系統(tǒng),或在較高的抽象層次上表示系統(tǒng)的過程。
16、值得說明的是,在對一個系統(tǒng)實施逆向工程時,并不改變這個系統(tǒng)本身,也不包括在此系統(tǒng)上構(gòu)建新的系統(tǒng)的過程。
17、??? (3)重構(gòu)(Restructuring):保持系統(tǒng)外部行為(功能和語義)的前提下,在統(tǒng)一抽象層次上改變表示形式。
18、??? (4)再工程(Reengineering):通過逆向工程、重構(gòu)和正向工程對現(xiàn)有系統(tǒng)進(jìn)行審查和改造,將其重組為一種新形式。
19、??? (5)設(shè)計恢復(fù)(Design Recovery):結(jié)合目標(biāo)系統(tǒng)、領(lǐng)域知識和外部消息認(rèn)定更高層次的抽象。
20、其中,再工程、設(shè)計恢復(fù)不改變系統(tǒng),重構(gòu)改變了系統(tǒng)。
21、但不改變其功能,再工程涉及到正向工程與逆向工程的聯(lián)合使用,逆向工程解決程序的理解問題,正向工程檢驗?zāi)男┕δ苄枰黾?、保留和刪除,再工程改變了系統(tǒng)的功能和方向,是最根本和最有深遠(yuǎn)影響的擴(kuò)展。
22、??? 圖1顯示這些概念之間的關(guān)系。
23、2 主要步驟和分析方法??? 由逆向工程定義可知:軟件逆向工程的任務(wù)包括分析系統(tǒng)、抽象系統(tǒng)和展現(xiàn)系統(tǒng),從而實現(xiàn)協(xié)助用戶理解系統(tǒng)的目的。
24、??? 分析系統(tǒng)是指分析系統(tǒng)的結(jié)構(gòu)及運(yùn)行過程,但不管目標(biāo)系統(tǒng)面向何種應(yīng)用領(lǐng)域,分析系統(tǒng)不外乎是分析系統(tǒng)的靜態(tài)信息和動態(tài)信息。
25、目標(biāo)系統(tǒng)面對不同的應(yīng)用領(lǐng)域,要實現(xiàn)抽象目標(biāo)系統(tǒng)的任務(wù),需要領(lǐng)域知識和專家的經(jīng)驗。
26、展現(xiàn)系統(tǒng)最好的方式是使系統(tǒng)可視化。
27、圖1 關(guān)系圖??? 現(xiàn)有的逆向工程分析方法主要有以下4種:??? (1)詞法分析和語法分析。
28、??? 該方法主要是對程序源碼進(jìn)行分析,得到程序信息的多種有用表示,其中最常用的就是交叉引用列表。
29、通過語法分析可以得到兩類表示:分析樹(parse tree)、抽象語法樹AST(abstract syntax tree),其中AST是更復(fù)雜的程序分析工具基礎(chǔ),包含了和程序的實際內(nèi)容相關(guān)的細(xì)節(jié)。
30、??? (2)圖形化方法。
31、??? 圖形化方法包括控制流分析、數(shù)據(jù)流分析以及程序依賴圖。
32、控制流分析是在確定程序語法結(jié)構(gòu)之后進(jìn)行。
33、數(shù)據(jù)流分析關(guān)注于解決程序中從定義到使用的過程的相關(guān)的問題,比控制流分析要復(fù)雜得多。
34、程序依賴圖是數(shù)據(jù)流分析的進(jìn)一步改進(jìn),比數(shù)據(jù)流分析更復(fù)雜。
35、在程序依賴圖中,控制流和數(shù)據(jù)流依賴放在一起處理,程序依賴圖還具有這樣的結(jié)構(gòu)特性:一個程序依賴圖描述了一個控制依賴的區(qū)域。
36、??? (3)程序切片。
37、??? 切片技術(shù)來源于數(shù)據(jù)流分析方法,已經(jīng)成為很多程序理解工具的基礎(chǔ)。
38、一個程序切片是由程序中的一些語句和判定表達(dá)式組成的集合。
39、這些語句和判定表達(dá)式可能會影響在程序的某個位置上所定義或使用的變量的值。
40、利用切片技術(shù)可以將關(guān)注點(diǎn)確定在一個較小范圍而不是關(guān)注整個程序。
41、??? (4)動態(tài)分析。
42、??? 靜態(tài)分析是對程序源碼進(jìn)行分析。
43、動態(tài)分析則是在程序運(yùn)行時進(jìn)行分析,基本方法是對程序進(jìn)行植入。
44、植入是在一種在全局范圍內(nèi)更改源代碼以添加額外操作的過程。
45、這種方法的基本原理是:利用代碼的結(jié)構(gòu)信息,依據(jù)固定的規(guī)則,將軟件觸發(fā)器添加到代碼中。
本文分享完畢,希望對大家有所幫助。
標(biāo)簽:
免責(zé)聲明:本文由用戶上傳,如有侵權(quán)請聯(lián)系刪除!