下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
逆向工程在計(jì)算機(jī)應(yīng)用中的發(fā)展
0.基于逆向工程的對(duì)象分析方法隨著計(jì)算機(jī)科學(xué)技術(shù)的快速發(fā)展,計(jì)算機(jī)應(yīng)用的領(lǐng)域不斷拓展。人們希望計(jì)算機(jī)能夠解決不同領(lǐng)域的問題,并對(duì)計(jì)算機(jī)惡意軟件的功能、質(zhì)量、開發(fā)成本和時(shí)間提出更高的要求。計(jì)算機(jī)軟件的規(guī)模和復(fù)雜程度日益俱增,因而軟件技術(shù)不斷受到新的挑戰(zhàn)。20世紀(jì)70年代,軟件危機(jī)的出現(xiàn)促使了軟件工程學(xué)的誕生和發(fā)展。20世紀(jì)80年代初,面向?qū)ο蠹夹g(shù)成為研究的熱點(diǎn),許多面向?qū)ο蟮木幊陶Z言問世。20世紀(jì)80年代末以來面向?qū)ο蠓椒ㄩ_始向系統(tǒng)分析、設(shè)計(jì)階段延伸,出現(xiàn)了一大批面向?qū)ο蟮姆治雠c設(shè)計(jì)方法。1997年統(tǒng)一建模語言(UML)被對(duì)象管理組織采納作為一種標(biāo)準(zhǔn)建模語言。建模語言的標(biāo)準(zhǔn)化為軟件開發(fā)人員及其用戶帶來諸多便利,軟件工程領(lǐng)域取得了前所未有的進(jìn)展。在傳統(tǒng)軟件開發(fā)的正向工程方法技術(shù)日趨完善的同時(shí),軟件領(lǐng)域的逆向工程作為軟件工程的一個(gè)分支開始受到廣泛的關(guān)注。軟件領(lǐng)域的逆向工程迄今為止沒有標(biāo)準(zhǔn)的定義,一般將逆向工程定義為包括兩個(gè)步驟的過程:第一步分析目標(biāo)系統(tǒng),標(biāo)識(shí)系統(tǒng)的對(duì)象及其關(guān)系:第二步創(chuàng)建不同形式或更高形式的抽象層次的系統(tǒng)表示。逆向工程適用于軟件生命期的各個(gè)階段和各種對(duì)象層次,包括需求、設(shè)計(jì)及實(shí)現(xiàn)。逆向工程可用于低級(jí)的抽象層次,例如把程序二進(jìn)制代碼轉(zhuǎn)換為源代碼,但主要用于程序源代碼轉(zhuǎn)換為更高抽象層次的表示,如控制流圖、數(shù)據(jù)流圖、類關(guān)系圖、順序圖等。逆向工程是一個(gè)設(shè)計(jì)恢復(fù)過程,逆向工程工具從現(xiàn)存的程序中抽取數(shù)據(jù)、體系結(jié)構(gòu)和過程的設(shè)計(jì)信息。本文著重講述逆向工程在軟件開發(fā)和維護(hù)階段的重要作用。1.軟件開發(fā)需要反向設(shè)計(jì)1.開發(fā)過程中的需求變化在人們頭腦中,逆向工程只是在原有軟件中進(jìn)行,事實(shí)上在正在開發(fā)的新軟件過程中也可以采逆向工程,這一般是在大型軟件系統(tǒng)的開發(fā)過程中,因?yàn)殚_發(fā)人員沒有理由強(qiáng)求用戶完全固定需求,需求經(jīng)常發(fā)生變化是客觀現(xiàn)實(shí),從軟件工程角度來看這全完是正常的,一方面用戶不大可能一次性將需求描述清楚,這樣就有可能補(bǔ)充,另一方面就是用戶已提高的需求,隨用戶對(duì)問題的理解和認(rèn)識(shí)的加深,用戶也可能對(duì)原有需求提出更改。而且盡管軟件系統(tǒng)的開發(fā)周期比過去明顯縮短,但在開發(fā)過程中后期需求發(fā)生變化并不罕見,這常常使得開發(fā)人員十分被動(dòng)。目前大多數(shù)的系統(tǒng)開發(fā)環(huán)境的支持理念仍然以正向工程(ForwardEngineering)為主,即按照分析建模、設(shè)計(jì)建模、文檔自動(dòng)生成、用靜態(tài)設(shè)計(jì)模型自動(dòng)產(chǎn)生或修改代碼框架、方法體或函數(shù)體的編碼、模塊測(cè)試、系統(tǒng)測(cè)試的順序進(jìn)行開發(fā)。在系統(tǒng)開發(fā)初期或者開發(fā)時(shí)間比較充裕的情況下,以正向工程模式進(jìn)行建模和程序設(shè)計(jì)是合理和可行的,但由于需求變化和開發(fā)周期的限制,實(shí)際上在開發(fā)過程中出現(xiàn)了種種問題,開發(fā)過程中后期需求變化無法保證模型與程序的一致性。開發(fā)過程的中后期發(fā)生了需求變化,雖然可以要求開發(fā)人員對(duì)系統(tǒng)靜態(tài)模型進(jìn)行相應(yīng)的修改,重新生成源程序代碼框架和一部分文檔,但由于時(shí)間的限制和系統(tǒng)動(dòng)態(tài)模型不能對(duì)源程序產(chǎn)生實(shí)質(zhì)性作用等因素,則經(jīng)常是不修改動(dòng)態(tài)模型而直接修改源程序,使得相關(guān)動(dòng)態(tài)模型的文檔很可能與源程序不一致,正向建立的動(dòng)態(tài)模型與對(duì)應(yīng)的源程序之間不能保證必然的一致性,故自動(dòng)生成的文檔可能沒有正確反映目標(biāo)系統(tǒng)的動(dòng)態(tài)行為和結(jié)構(gòu)特征然而,對(duì)于分布、并發(fā)為主要特征的系統(tǒng),其主要設(shè)計(jì)內(nèi)涵恰恰是由動(dòng)態(tài)模型來描述。因此,在軟件開發(fā)的過程中當(dāng)需求發(fā)生變化時(shí),逆向工程的作用顯得尤為重要。通過逆向工程從源程序逆向地產(chǎn)生相應(yīng)的動(dòng)態(tài)模型,如符合UML標(biāo)準(zhǔn)的序列圖、狀態(tài)圖或協(xié)同圖等,并自動(dòng)生成文檔。這樣有效地解決目前需求變化而引發(fā)的模型與程序的不一致、文檔與程序的不一致等問題,對(duì)現(xiàn)有的開發(fā)方法、環(huán)境與工具的功能也是很好而且非常必要的擴(kuò)充。2.遺產(chǎn)系統(tǒng)與設(shè)計(jì)計(jì)算機(jī)軟件在各個(gè)領(lǐng)域經(jīng)過了幾十年應(yīng)用的積累,自九十年代以來,應(yīng)用軟件系統(tǒng)的規(guī)模越來越大,功能越來越復(fù)雜,使得更多的大型軟件的開發(fā)必須考慮到原先己運(yùn)行了多年的系統(tǒng),包括系統(tǒng)的需求、設(shè)計(jì)決策、業(yè)務(wù)規(guī)則、歷史數(shù)據(jù)等等,稱之為遺產(chǎn)系統(tǒng)(LS)。LS是一種巨大的、長(zhǎng)期的投資,因此如何充分利用這些有用的資產(chǎn)對(duì)新系統(tǒng)的開發(fā)顯得尤為重要。由于歷史原因,過去許多軟件并沒有按照工程規(guī)范去開發(fā),許多軟件都存在文檔資料不全,甚至沒有,這樣要重用遺產(chǎn)系統(tǒng),就不得不通過原代碼來理解其抽象設(shè)計(jì)。這樣一來源代碼在許多情況下就是利用Ls系統(tǒng)的唯一依賴,利用LS系統(tǒng)就不得不先充分理解LS系統(tǒng),這樣就可以利用源代碼來抽象出軟件的邏輯設(shè)計(jì),這正是逆向工程的一大優(yōu)勢(shì)。3.逆向工程有利于重在分析、改造自由軟件隨著Internet在全球范圍內(nèi)的迅速普及,網(wǎng)上提供的免費(fèi)資料越來越多,從網(wǎng)上下載的開放源碼的自由軟件也成為當(dāng)前很多軟件開發(fā)中可重用代碼一大來源;但是這些自由軟件的源碼根本沒有統(tǒng)一的設(shè)計(jì),所得到的僅僅是其源代碼及一些對(duì)程序本身的輔助說明的文檔,而且往往資料不全或說明不充分,難以理解,難以利用。同時(shí),隨著自由軟件在網(wǎng)上的傳播,對(duì)其進(jìn)行修改、擴(kuò)充的人越來越多,更使其系統(tǒng)結(jié)構(gòu)復(fù)雜化,系統(tǒng)框架難以抽取。但是,若要充分深人、安全地利用這些自由軟件,不得不對(duì)其進(jìn)行透徹的分析,在了解其內(nèi)部結(jié)構(gòu)、系統(tǒng)框架等細(xì)節(jié)的基礎(chǔ)上對(duì)這些自由軟件進(jìn)行改造,以實(shí)現(xiàn)想完成的功能。由此產(chǎn)生了一個(gè)嚴(yán)重的問題:越想更好利用這些自由軟件,所面臨的困難越大。逆向工程通過分析這些從網(wǎng)上下載的自由軟件源程序,從而得到自由軟件的結(jié)構(gòu)、框架等細(xì)節(jié),使用者能夠充分理解軟件,并可以按照自己的使用目的而改造這些軟件的功能。如能充分利用逆向工程來改造網(wǎng)上自由軟件,這樣就會(huì)大大加快軟件開發(fā)速度,提高軟件開發(fā)效率。2.軟件維護(hù)需要反向設(shè)計(jì)1.對(duì)軟件生命周期的重視程度不夠長(zhǎng)期以來軟件工程主要注重新軟件的開發(fā),許多研究也主要集中在新軟件開發(fā)、想方設(shè)法縮短軟件開發(fā)時(shí)間,提高軟件開發(fā)質(zhì)量和滿足用戶需求。盡管軟件維護(hù)作為軟件工程的一部分,但在軟件生命周期中沒有得到足夠重視,而且軟件工程師多半不愿從事這項(xiàng)工作,認(rèn)為這項(xiàng)工作缺乏挑戰(zhàn)性,沒有什么實(shí)際性意義。其他人們也不理解軟件維護(hù)人員的工作,另外,由于市場(chǎng)壓力越來越來大使得軟件生命周期變得越來越短,結(jié)果形成一種趨勢(shì):許多軟件還沒有進(jìn)行維護(hù)階段就被新軟件所淘汰,也正因?yàn)檫@個(gè)原因使得軟件工程過分強(qiáng)調(diào)軟件生命周期的早期階段即軟件開發(fā)階段,但為了緊跟軟件發(fā)展趨勢(shì),加快軟件開發(fā)速度,就有必要利用逆向工程充分原來軟件,加快軟件開發(fā)過程中需求分析、總體設(shè)計(jì)和細(xì)節(jié)設(shè)計(jì)的速度,從而縮短軟件開發(fā)周期。2.老系統(tǒng)替代產(chǎn)品的風(fēng)險(xiǎn)盡管軟件更新越來越頻繁,但許多公司由于種種原因,不能僅僅用新軟件替代舊軟件就可以了。一些公司,通常是一些大公司經(jīng)常維護(hù)使用它們的軟件許多年,為了進(jìn)一步滿足新的要求和充分利用新的信息技術(shù),這些公司就處于一種艱難境界:一方面,他們的信息系統(tǒng)不得不提供新的功能和需求,以充分利用新技術(shù)和滿足用戶新的需求;另一方面因?yàn)槔舷到y(tǒng)滿足不了現(xiàn)有要求但又不能簡(jiǎn)單拋棄。其原因是其職員和客戶對(duì)老系統(tǒng)相當(dāng)熟悉,對(duì)它們存在依賴感,原有軟件的大部分功能還不得不保持。完全用另外一個(gè)新系統(tǒng)替代現(xiàn)存老系統(tǒng)存在一定風(fēng)險(xiǎn),會(huì)產(chǎn)生一定負(fù)面影響例如新系統(tǒng)功能與原系統(tǒng)根本不同等等。為了降低風(fēng)險(xiǎn),逆向工程技術(shù)可以作為解決這一問題的有效途徑。3.基本保護(hù)的必要性一方面是因?yàn)檫^去許多軟件的開發(fā)并沒有按照軟件工程規(guī)范進(jìn)行開發(fā),導(dǎo)致不少軟件開發(fā)時(shí)就文檔不全,甚至沒有;另一方面是因?yàn)槎嗄陙韺?duì)系統(tǒng)的維護(hù)和修改,但卻沒有形成正規(guī)、詳細(xì)的文檔,或者原來系統(tǒng)維護(hù)和修改過程中有比較詳細(xì)的文檔,但是因?yàn)樵瓉砭S護(hù)人員已經(jīng)離開公司使得文檔資料丟失?;謴?fù)丟失的信息意味著產(chǎn)生不存的設(shè)計(jì)文檔或者恢復(fù)在軟件開發(fā)過程或軟件維護(hù)過程中丟失的信息,對(duì)于那些沒有參與原有軟件開發(fā),又沒有參與早期系統(tǒng)維護(hù)的工程師來說,恢復(fù)系統(tǒng)的各種信息對(duì)他們的維護(hù)工作特別重要,逆向工程技術(shù)提供了一種方法去恢復(fù)丟失的信息如結(jié)構(gòu)化圖表、流程圖、實(shí)體關(guān)系圖等等?;謴?fù)這些文檔資料對(duì)軟件維護(hù)人員維護(hù)軟件大有好處,維護(hù)人員正是憑借這些文檔資料才能有效地管理系統(tǒng),才能對(duì)原有軟件作必要的擴(kuò)充和修改,滿足新的需求。4.應(yīng)使用反向工程中應(yīng)注意的幾個(gè)問題逆向工程是一個(gè)相當(dāng)不成熟的領(lǐng)域,理論和實(shí)踐的研究都還處于早期的探究階段。還有待于在以下幾方面進(jìn)行進(jìn)一步研究:1.開發(fā)全自動(dòng)的逆向工程工具逆向工程的目標(biāo)在于為系統(tǒng)維護(hù)和系統(tǒng)演化中的系統(tǒng)理解提供支持,其在實(shí)際使用中的經(jīng)濟(jì)影響是至關(guān)重要的。因而,逆向工程系統(tǒng)必須以實(shí)用性為首要目的,要能產(chǎn)生實(shí)際的經(jīng)濟(jì)效益。逆向工程過程相當(dāng)復(fù)雜,開發(fā)全自動(dòng)的逆向工程工具解決真正的問題在短期內(nèi)是不可能的。所以,逆向工程工具的研究應(yīng)注重于實(shí)用的半自動(dòng)工具的開發(fā),并做大量的案例研究。利用逆向工程進(jìn)行開發(fā)初期就應(yīng)對(duì)經(jīng)濟(jì)效益作評(píng)估,不要一味追求這一方法而導(dǎo)致經(jīng)濟(jì)損挫。2.逆向工程的研究原則由于其不成熟,很多逆向工程研究都針對(duì)于虛構(gòu)問題。但是,以虛構(gòu)問題為目標(biāo)限制了逆向工程系統(tǒng)的實(shí)用性。為了使逆向工程的研究真正走向成熟,必須從虛構(gòu)問題過渡到有經(jīng)濟(jì)影響的實(shí)際問題。為此,逆向工程研究應(yīng)當(dāng)遵循以下幾個(gè)原則:(1)用實(shí)際程序作為例子;(2)用系統(tǒng)作為例子;(3)利用多種信息源。3.軟件系統(tǒng)不統(tǒng)一創(chuàng)建能開發(fā)和配置工具的基礎(chǔ)設(shè)施是逆向工程支持機(jī)制研究者所面臨的挑戰(zhàn)之一?,F(xiàn)有逆向工程研究和開發(fā)的基礎(chǔ)設(shè)施不夠充分,逆向工程系統(tǒng)本身也是昂貴的遺產(chǎn)系統(tǒng)。當(dāng)前的大多數(shù)工具都采用定制的軟件系統(tǒng),重復(fù)大量的基本工作(如分析源代碼)并且用戶界面不統(tǒng)一,難于與其他工具集成。Web提供了解決逆向工程基礎(chǔ)設(shè)施的良好途徑。Web的擴(kuò)展掩碼語言XML可作為表示軟件系統(tǒng)構(gòu)件及其關(guān)系的通用中間格式,為查找感興趣構(gòu)件、可視化信息空間結(jié)構(gòu)和集成已有工具提供了基礎(chǔ),并且通過統(tǒng)一的用戶界面,即Web瀏覽器,達(dá)到表示集成。用Web作為逆向工程的基礎(chǔ)設(shè)施,還可以有效地支持分布式對(duì)象技術(shù)帶來的分布式程序理解,并利用現(xiàn)有的搜索引擎等技術(shù)。4.基于構(gòu)件的解傳統(tǒng)的逆向工程輔助程序理解的方式可視為”白盒”理解,主要依賴于分析源代碼程序抽取程序結(jié)構(gòu)和控制流信息。由分布式對(duì)象技術(shù)、構(gòu)件技術(shù)和構(gòu)架技術(shù)發(fā)展而導(dǎo)致的基于構(gòu)件的軟件開發(fā)對(duì)程序理解提出了新的挑戰(zhàn)?;跇?gòu)件的系統(tǒng)由已有的構(gòu)件,尤其是COTS7產(chǎn)品和非開發(fā)件,組裝而成
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湛江貨運(yùn)從業(yè)資格考題
- 二零二五年建筑工程專用鋼筋采購合同2篇
- 2025版委托擔(dān)保合同模板:專業(yè)版3篇
- 二零二五出租車公司股權(quán)質(zhì)押合同模板4篇
- 二零二五版草料運(yùn)輸車輛GPS定位及調(diào)度服務(wù)合同3篇
- 二零二五年度智慧城市臨時(shí)工項(xiàng)目管理合同4篇
- 二零二五版設(shè)備砂石料購銷與設(shè)備性能優(yōu)化協(xié)議3篇
- 二零二五年度人事部人才與專家工作辦公室員工福利保障合同3篇
- 二零二五年度圖書館圖書修復(fù)與保護(hù)工程合同
- 個(gè)體物流配送員勞動(dòng)協(xié)議格式(2024年版)一
- 2024生態(tài)環(huán)境相關(guān)法律法規(guī)考試試題
- 有砟軌道施工工藝課件
- 兩辦意見八硬措施煤礦安全生產(chǎn)條例宣貫學(xué)習(xí)課件
- 40篇短文搞定高中英語3500單詞
- 人教版高中數(shù)學(xué)必修二《第九章 統(tǒng)計(jì)》同步練習(xí)及答案解析
- 兒科護(hù)理安全警示教育課件
- 三年級(jí)下冊(cè)口算天天100題
- 國家中英文名稱及代碼縮寫(三位)
- 人員密集場(chǎng)所消防安全培訓(xùn)
- 液晶高壓芯片去保護(hù)方法
- 拜太歲科儀文檔
評(píng)論
0/150
提交評(píng)論