版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
軟件工程軟件5軟件維護(hù)和軟件重用軟件維護(hù)
軟件維護(hù)(SoftwareMaintenance)就是在軟件產(chǎn)品交付之后對其進(jìn)行修改,以排除故障,或改進(jìn)性能和其他屬性,或使產(chǎn)品適應(yīng)改變了的環(huán)境。軟件維護(hù)是軟件生存周期中持續(xù)時(shí)間最長的一個(gè)階段,也是花費(fèi)精力和費(fèi)用最多的一個(gè)階段。在軟件運(yùn)行的過程中,維護(hù)工作可以占到軟件開發(fā)全部工作量的一半以上。軟件的可維護(hù)性是指軟件被理解、改正、調(diào)整和改進(jìn)的難易程度,它是指導(dǎo)軟件工程各階段工作的一條基本原則。提高可維護(hù)性、減少維護(hù)的工作量、降低軟件的總成本是軟件工程的一個(gè)重要任務(wù)。軟件重用是指在軟件開發(fā)、維護(hù)過程中不作修改或稍加修改就可以重復(fù)使用相同或相似的軟件元素的過程。軟件重用的目的是能更快、更好、成本更低地生產(chǎn)軟件。在軟件維護(hù)時(shí),目前常采用軟件重用技術(shù)、逆向工程和再工程?!锉菊轮攸c(diǎn):如何提高軟件的可維護(hù)性;軟件重用。軟件維護(hù)和軟件重用5軟件維護(hù)和軟件重用軟件維護(hù)軟件維護(hù)(SofContents目錄軟件維護(hù)01軟件重用和再工程02Contents目錄軟件維護(hù)01軟件重用和再工程0201軟件維護(hù)軟件維護(hù)的種類軟件維護(hù)的特點(diǎn)軟件維護(hù)過程提高軟件的可維護(hù)性01軟件維護(hù)軟件維護(hù)的種類軟件維護(hù)的特點(diǎn)軟件維護(hù)過程提高軟件5.1軟件維護(hù)5.1.1軟件維護(hù)的種類DABC1)改正性維護(hù)軟件測試不大可能找出一個(gè)大型軟件系統(tǒng)的全部隱含錯(cuò)誤。也就是說,幾乎每一個(gè)大型程序在運(yùn)行過程中,都會不可避免地出現(xiàn)各種錯(cuò)誤。為克服現(xiàn)有軟件故障而進(jìn)行的維護(hù)稱為改正性維護(hù)(CorrectiveMaintenance)。3)完善性維護(hù)軟件交給用戶使用后,用戶往往會因?yàn)楣ぷ髁鞒?、?yīng)用環(huán)境的變化,要求增加新的功能和完善性能等。為增加軟件功能、增強(qiáng)軟件性能、提高軟件運(yùn)行效率而進(jìn)行的維護(hù)稱為完善性維護(hù)(PerfectiveMaintenance)。2)適應(yīng)性維護(hù)計(jì)算機(jī)技術(shù)的發(fā)展十分迅速,計(jì)算機(jī)的軟件、硬件環(huán)境也在不斷發(fā)生變化,而應(yīng)用軟件的使用壽命往往比原先開發(fā)時(shí)的系統(tǒng)環(huán)境更為長久,因此,常常需對軟件加以修改使之適應(yīng)改變了的環(huán)境。為使軟件產(chǎn)品適應(yīng)環(huán)境的變化而進(jìn)行的軟件維護(hù)稱為適應(yīng)性維護(hù)(AdaptiveMaintenance)。4)預(yù)防性維護(hù)為了進(jìn)一步提高軟件的可維護(hù)性和可靠性,為改進(jìn)軟件性能創(chuàng)造條件,需要對軟件進(jìn)行的其他維護(hù)稱為預(yù)防性維護(hù)(PreventiveMaintenance)。5.1軟件維護(hù)5.1.1軟件維護(hù)的種類DABC1)改正性5.1軟件維護(hù)5.1.1軟件維護(hù)的種類圖5-1各類維護(hù)工作量占總的維護(hù)工作量的百分比5.1軟件維護(hù)5.1.1軟件維護(hù)的種類圖5-1各類維5.1軟件維護(hù)5.1.2軟件維護(hù)的特點(diǎn)1)結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)差別巨大與非結(jié)構(gòu)化維護(hù)相比,結(jié)構(gòu)化維護(hù)能減少工作量并提高維護(hù)的總體質(zhì)量。這是在軟件開發(fā)的早期就運(yùn)用軟件工程方法論的結(jié)果。012)維護(hù)的問題很多02033)維護(hù)的代價(jià)高昂5.1軟件維護(hù)5.1.2軟件維護(hù)的特點(diǎn)1)結(jié)構(gòu)化維護(hù)與非5.1.2軟件維護(hù)的特點(diǎn)圖5-2描繪了因軟件維護(hù)要求而引起的可能的事件流程。圖5-2圖5-2右側(cè)的流程表示的是“非結(jié)構(gòu)化維護(hù)”。在這種情況下,由于所掌握的軟件文件只有源程序,維護(hù)工作只能從分析源程序開始。源程序內(nèi)部的注解和說明一般來講不會很詳盡,而軟件結(jié)構(gòu)、全程數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口、性能和設(shè)計(jì)約束等細(xì)微的特征往往很難完全搞清。在沒有軟件文檔的情況下,維護(hù)工作往往要進(jìn)行這種非結(jié)構(gòu)化維護(hù),并為此而付出代價(jià)。這種代價(jià)是由于沒有使用良好的軟件開發(fā)方法所造成的。5.1.2軟件維護(hù)的特點(diǎn)5.1.2軟件維護(hù)的特點(diǎn)圖5-2描繪了因軟件維護(hù)要求而引起5.1.2軟件維護(hù)的特點(diǎn)圖5-2描繪了因軟件維護(hù)要求而引起的可能的事件流程。圖5-2圖5-2左側(cè)的流程表示的是“結(jié)構(gòu)化維護(hù)”。在這種情況下,由于有完整的軟件文檔,軟件維護(hù)工作就可從分析軟件文檔開始,進(jìn)而確定軟件的結(jié)構(gòu)特性、功能特性和接口特性,確定所要求的修改將會帶來的影響并計(jì)劃實(shí)施方法。然后修改設(shè)計(jì)、編寫相應(yīng)的源程序代碼、對所做的修改進(jìn)行復(fù)查,并利用在測試說明書中包含的信息重復(fù)過去的測試,以確保沒有因修改而把錯(cuò)誤引入到先前運(yùn)行的軟件中。最后,把修改后的軟件再次交付使用。結(jié)構(gòu)化維護(hù)能減少工作量并提高維護(hù)的總體質(zhì)量。5.1.2軟件維護(hù)的特點(diǎn)5.1.2軟件維護(hù)的特點(diǎn)圖5-2描繪了因軟件維護(hù)要求而引起5.1.2
軟件維護(hù)的特點(diǎn)5.1.2軟件維護(hù)的特點(diǎn)412345由于可用的資源必須供軟件維護(hù)任務(wù)使用,導(dǎo)致耽誤甚至喪失開發(fā)良機(jī)。有關(guān)改錯(cuò)或修改的要求不能及時(shí)滿足,引起用戶不滿。在所維護(hù)的軟件中,由于修改軟件而引入潛伏的新的錯(cuò)誤,導(dǎo)致軟件質(zhì)量下降。當(dāng)必須把從事開發(fā)的軟件人員調(diào)去從事維護(hù)工作時(shí),將可能打亂軟件開發(fā)過程。每條指令的維護(hù)成本數(shù)十倍于每條指令的開發(fā)成本,造成生產(chǎn)率的大幅下降。32維護(hù)的代價(jià)高昂5.1.2軟件維護(hù)的特點(diǎn)5.1.2軟件維護(hù)的特點(diǎn)4125.1.2
軟件維護(hù)的特點(diǎn)5.1.2軟件維護(hù)的特點(diǎn)01
軟件人員經(jīng)常流動,因而當(dāng)需要維護(hù)時(shí),往往無法依賴開發(fā)者本人來對軟件進(jìn)行解釋和說明。03
需要維護(hù)的軟件往往沒有足夠的、合格的文檔。維護(hù)時(shí)僅有文檔是不夠的,容易理解的并且和程序代碼完全一致的文檔,才對維護(hù)真正有價(jià)值。02
理解他人編寫的程序往往是非常困難的,而且軟件文檔越少,維護(hù)難度越大。如果只有程序代碼而沒有說明文檔,則將出現(xiàn)嚴(yán)重困難。03
由于維護(hù)工作十分困難,又容易受挫,因而難以成為一項(xiàng)吸引人的工作。3維護(hù)的問題很多5.1.2軟件維護(hù)的特點(diǎn)5.1.2軟件維護(hù)的特點(diǎn)015.1軟件維護(hù)5.1.3軟件維護(hù)過程軟件維護(hù)過程實(shí)際上也是軟件問題定義和開發(fā)的過程。維護(hù)活動和軟件開發(fā)一樣,要有嚴(yán)格的規(guī)范,才能保證質(zhì)量。軟件開發(fā)機(jī)構(gòu)應(yīng)建立維護(hù)組織,當(dāng)用戶需要軟件維護(hù)時(shí),應(yīng)填寫維護(hù)申請表,維護(hù)組織對此進(jìn)行評價(jià),安排維護(hù)活動,軟件人員的維護(hù)過程要詳細(xì)記錄,并填寫維護(hù)報(bào)告,最后要復(fù)審。軟件維護(hù)時(shí),首先要確定維護(hù)屬于哪種類型。如果屬于改正性維護(hù),則需要評價(jià)其出錯(cuò)的嚴(yán)重性。如果錯(cuò)誤嚴(yán)重,就進(jìn)一步指定人員,在系統(tǒng)管理員的指導(dǎo)配合下,分析錯(cuò)誤的原因,進(jìn)行維護(hù)。對于不太嚴(yán)重的錯(cuò)誤,則該項(xiàng)改正性維護(hù)和其他軟件開發(fā)的任務(wù)一起統(tǒng)籌安排。如果屬于完善性或適應(yīng)性維護(hù),則先確定各個(gè)維護(hù)要求的優(yōu)先次序,并且安排所需工作時(shí)間。從其意圖和目標(biāo)來看,屬于開發(fā)工作,因此可將其視為開發(fā)任務(wù)。如果某項(xiàng)維護(hù)要求的優(yōu)先次序特別高,可立即開始維護(hù)工作。5.1軟件維護(hù)5.1.3軟件維護(hù)過程軟件維護(hù)過程實(shí)際上也5.1軟件維護(hù)5.1.3軟件維護(hù)過程不管是改正性、完善性還是適應(yīng)性維護(hù),都需要進(jìn)行同樣的技術(shù)工作,包括修改軟件設(shè)計(jì)、對源程序進(jìn)行修改、單元測試、組裝、有效性測試及復(fù)審等。參加軟件維護(hù)工作的人員并不是越多越好。一般情況下,對需要維護(hù)的軟件比較熟悉的人員,其維護(hù)工作的效率比較高。維護(hù)人員在維護(hù)過程中要做好詳細(xì)的記錄。對于不同類型的維護(hù),其工作的側(cè)重點(diǎn)會有所不同,但總的處理方法基本上是相同的。5.1軟件維護(hù)5.1.3軟件維護(hù)過程不管是改正性、完善性5.1軟件維護(hù)維護(hù)組織軟件開發(fā)機(jī)構(gòu)應(yīng)當(dāng)建立正式的維護(hù)組織,或設(shè)立專門負(fù)責(zé)維護(hù)工作的非正式組織。維護(hù)組織由維護(hù)管理員、系統(tǒng)管理員、維護(hù)人員組成。系統(tǒng)管理員必須對軟件產(chǎn)品程序或?qū)⒈恍薷牡哪穷惓绦蛳喈?dāng)熟悉。每當(dāng)軟件開發(fā)機(jī)構(gòu)收到用戶的維護(hù)申請后,交給負(fù)責(zé)此事的維護(hù)管理員,由他把維護(hù)申請交給系統(tǒng)管理員評價(jià),再由維護(hù)人員決定如何進(jìn)行修改。015.1.3軟件維護(hù)過程5.1軟件維護(hù)維護(hù)組織軟件開發(fā)機(jī)構(gòu)應(yīng)當(dāng)建立正式的維護(hù)組織,5.1軟件維護(hù)5.1.3軟件維護(hù)過程維護(hù)文件軟件維護(hù)要有書面文件:用戶填寫維護(hù)申請表、維護(hù)管理員填寫維護(hù)報(bào)告、維護(hù)人員填寫維護(hù)記錄。1)維護(hù)申請表軟件開發(fā)機(jī)構(gòu)的維護(hù)組織向用戶提供空白的維護(hù)申請表,由要求維護(hù)的用戶填寫,該表應(yīng)能完整描述軟件產(chǎn)生錯(cuò)誤的情況(包括輸入數(shù)據(jù)、輸出數(shù)據(jù)及其他有關(guān)信息)。對于適應(yīng)性或完善性的維護(hù)要求,則應(yīng)提出簡單明了的維護(hù)要求規(guī)格說明。維護(hù)申請表由維護(hù)管理員和系統(tǒng)管理員負(fù)責(zé)研究處理。022)維護(hù)報(bào)告軟件開發(fā)組織在收到用戶的維護(hù)要求表后,維護(hù)管理員應(yīng)寫一份軟件維護(hù)報(bào)告。該報(bào)告應(yīng)包含下述內(nèi)容:按照要求進(jìn)行維護(hù)所需要的工作量;維護(hù)要求的性質(zhì);該項(xiàng)要求與其他維護(hù)要求相比的優(yōu)先程度;預(yù)計(jì)軟件維護(hù)后的狀況。5.1軟件維護(hù)5.1.3軟件維護(hù)過程維護(hù)文件軟件維護(hù)要有5.1軟件維護(hù)5.1.3軟件維護(hù)過程維護(hù)文件02修改程序所增加的源語行數(shù)、所刪除的源語行數(shù);各次修改耗費(fèi)的人時(shí)數(shù)、累計(jì)用于維護(hù)的人時(shí)數(shù);軟件工程師的姓名;維護(hù)要求表的標(biāo)識;維護(hù)開始和結(jié)束的日期;維護(hù)工作的凈收益。3)維護(hù)記錄維護(hù)記錄可以包括如下內(nèi)容:程序名稱;維護(hù)類型;所用的編程語言;程序行數(shù)或機(jī)器指令條數(shù);程序開始使用的日期;已運(yùn)行次數(shù)、故障處理次數(shù);程序改變的級別及名稱;5.1軟件維護(hù)5.1.3軟件維護(hù)過程維護(hù)文件02修改程序5.1軟件維護(hù)5.1.3軟件維護(hù)過程維護(hù)工作流程維護(hù)工作流程如下:(1)用戶提出維護(hù)申請。(2)維護(hù)組織審查申請報(bào)告并安排維護(hù)工作。(3)進(jìn)行維護(hù)并做詳細(xì)的維護(hù)記錄。(4)復(fù)審。035.1軟件維護(hù)5.1.3軟件維護(hù)過程維護(hù)工作流程維護(hù)工作5.1軟件維護(hù)5.1.3軟件維護(hù)過程維護(hù)工作流程當(dāng)然,有時(shí)維護(hù)申請的處理過程并不完全符合上述事件流。例如,當(dāng)出現(xiàn)緊急軟件問題時(shí),就出現(xiàn)所謂“救火”維護(hù)要求。在這種情況下,就需要立即投入人力進(jìn)行維護(hù)。軟件維護(hù)的復(fù)審要明確下列問題:在目前的狀況下,設(shè)計(jì)、編程、測試等方面有什么可改進(jìn)的。哪些維護(hù)資源應(yīng)該有,實(shí)際上卻沒有。什么是這項(xiàng)維護(hù)工作中最主要的障礙。是否需要預(yù)防性維護(hù)。維護(hù)情況復(fù)查對將來的維護(hù)工作有重要意義,可為提高軟件組織的管理效能提供重要意見。035.1軟件維護(hù)5.1.3軟件維護(hù)過程維護(hù)工作流程當(dāng)然,有5.1軟件維護(hù)5.1.3軟件維護(hù)過程對維護(hù)的評價(jià)在維護(hù)過程中,如果缺乏詳盡可靠的數(shù)據(jù),要評價(jià)軟件維護(hù)工作就很困難。如果有良好的維護(hù)記錄,就可對維護(hù)工作做一些定量的評價(jià),可計(jì)算如下一些指標(biāo):(1)每次程序運(yùn)行的平均出錯(cuò)次數(shù)。(2)用在各類維護(hù)上的總的人時(shí)數(shù)。(3)平均每個(gè)程序、每種語言、每種類型的維護(hù)所做的程序變動數(shù)。(4)維護(hù)過程中每增加或減少一個(gè)源語句所平均花費(fèi)的人時(shí)數(shù)。(5)維護(hù)每種語言所平均花費(fèi)的人時(shí)數(shù)。(6)處理一張維護(hù)要求表平均所需時(shí)間。(7)各類維護(hù)申請的百分比。045.1軟件維護(hù)5.1.3軟件維護(hù)過程對維護(hù)的評價(jià)在維護(hù)過5.1軟件維護(hù)5.1.3軟件維護(hù)過程軟件維護(hù)的副作用維護(hù)是為了延長軟件的壽命,讓軟件創(chuàng)造更多的價(jià)值。但是維護(hù)會產(chǎn)生潛在的錯(cuò)誤或其他不希望出現(xiàn)的情況,稱為維護(hù)的副作用。維護(hù)的副作用有編碼副作用、數(shù)據(jù)副作用和文檔副作用3種。055.1軟件維護(hù)5.1.3軟件維護(hù)過程軟件維護(hù)的副作用維護(hù)5.1軟件維護(hù)5.1.3軟件維護(hù)過程數(shù)據(jù)副作用文檔副作用編碼副作用軟件維護(hù)副作用數(shù)據(jù)副作用
修改數(shù)據(jù)結(jié)構(gòu)時(shí)可能造成軟件設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)不匹配,從而導(dǎo)致軟件錯(cuò)誤。例如,修改局部量、全局量、記錄或文件的格式、初始化控制或指針、輸入/輸出或子程序的參數(shù)等容易導(dǎo)致設(shè)計(jì)與數(shù)據(jù)不一致。編碼副作用使用程序設(shè)計(jì)語言修改源程序時(shí)可能引入錯(cuò)誤。例如,修改程序的標(biāo)號、標(biāo)識符、運(yùn)算符、邊界條件、程序的時(shí)序關(guān)系等,要特別仔細(xì)、避免引入新的錯(cuò)誤。
文檔副作用
對數(shù)據(jù)流、軟件結(jié)構(gòu)、模塊邏輯或任何其他特性進(jìn)行修改時(shí),必須對相關(guān)的文檔進(jìn)行相應(yīng)修改,否則可能會導(dǎo)致文檔與程序功能不匹配、文檔不能反映軟件當(dāng)前的狀態(tài)。因此,必須在軟件交付之前對軟件配置進(jìn)行評審,以減少文檔的副作用。5.1軟件維護(hù)5.1.3軟件維護(hù)過程數(shù)據(jù)副作用文檔副作用5.1軟件維護(hù)5.1.4提高軟件的可維護(hù)性軟件可維護(hù)性是指軟件功能被理解、改正、適應(yīng)和增強(qiáng)的難易程度,是維護(hù)人員對軟件進(jìn)行維護(hù)的難易程度??删S護(hù)性是指導(dǎo)軟件工程各階段的一條基本原則,提高可維護(hù)性是軟件工程追求的目標(biāo)之一5.1軟件維護(hù)5.1.4提高軟件的可維護(hù)性軟件可維護(hù)性是5.1軟件維護(hù)
5.1.4提高軟件的可維護(hù)性可維護(hù)性(1)是否擁有一組訓(xùn)練有素的軟件人員;(3)文檔結(jié)構(gòu)是否標(biāo)準(zhǔn)化;(5)是否已有嵌入系統(tǒng)的調(diào)試工具;(7)是否使用了標(biāo)準(zhǔn)的操作系統(tǒng)。(4)測試用例是否合適;(2)系統(tǒng)結(jié)構(gòu)是否可理解、是否合理;(6)是否使用了合適的程序設(shè)計(jì)語言;
造成軟件維護(hù)工作變得困難的原因是多方面的,有維護(hù)人員素質(zhì)方面的因素,也有技術(shù)條件和管理方面的因素等。與開發(fā)環(huán)境有關(guān)的可維護(hù)性影響因素如下:1決定軟件可維護(hù)性的因素5.1軟件維護(hù)
5.1.4提高軟件的可維護(hù)性可維護(hù)性(15.1軟件維護(hù)5.1.4提高軟件的可維護(hù)性以上影響軟件可維護(hù)性的因素中,結(jié)構(gòu)合理性是軟件設(shè)計(jì)時(shí)應(yīng)當(dāng)考慮的。系統(tǒng)結(jié)構(gòu)若不合理,對其維護(hù)當(dāng)然困難較大。所謂結(jié)構(gòu)的合理性主要是以下列幾點(diǎn)為基礎(chǔ)的:模塊化、層次組織、系統(tǒng)文檔的結(jié)構(gòu)、命令的格式和約定、程序的復(fù)雜性等。其他影響軟件可維護(hù)性的因素還有應(yīng)用的類型、使用的數(shù)據(jù)庫技術(shù)、開關(guān)與標(biāo)號的數(shù)量、IF語句的嵌套層次、索引或下標(biāo)變量的數(shù)量等。此外軟件開發(fā)人員是否能參加維護(hù)也是值得考慮的因素。5.1軟件維護(hù)5.1.4提高軟件的可維護(hù)性以上影響軟件可5.1軟件維護(hù)
5.1.4提高軟件的可維護(hù)性135糾錯(cuò)或修改軟件的時(shí)間;6測試軟件的時(shí)間;7維護(hù)評審的時(shí)間;8軟件恢復(fù)運(yùn)行的時(shí)間。1識別問題的時(shí)間;2修改規(guī)格說明書的時(shí)間;3分析、診斷問題的時(shí)間;4選擇維護(hù)工具的時(shí)間;
軟件的可維護(hù)性是難以量化的概念,然而借助維護(hù)活動中可以定量估算的屬性,可以從下列維護(hù)工作所需的時(shí)間間接地度量可維護(hù)性。2軟件可維護(hù)性的度量5.1軟件維護(hù)
5.1.4提高軟件的可維護(hù)性135糾錯(cuò)或5.1軟件維護(hù)
5.1.4提高軟件的可維護(hù)性
軟件的可維護(hù)性,主要表現(xiàn)在它的可理解性、可測試性、可修改性、可移植性等方面。因而,對可維護(hù)性的度量問題,也可分解成對可理解性、可測試性、可修改性、可移植性的度量問題。
軟件的可理解性表現(xiàn)為維護(hù)人員理解軟件結(jié)構(gòu)、接口、功能和內(nèi)部過程的難易程度。模塊化;結(jié)構(gòu)化設(shè)計(jì)或面向?qū)ο笤O(shè)計(jì);與源程序一致的、完整正確詳盡的設(shè)計(jì)文檔、源代碼內(nèi)部的文檔和良好的高級程序設(shè)計(jì)語言等,都能提高軟件的可理解性。也可以通過對軟件復(fù)雜性的度量來評價(jià)軟件的可理解性。軟件越復(fù)雜,理解就越困難。具體可參考本書第4.5.5節(jié)“程序環(huán)形復(fù)雜程度的度量”。1)可理解性5.1軟件維護(hù)
5.1.4提高軟件的可維護(hù)性5.1軟件維護(hù)5.1.4提高軟件的可維護(hù)性
可測試性代表了軟件容易被測試的程度。它與源代碼有關(guān),要求程序易于理解,還要求有齊全的測試文檔,保留開發(fā)時(shí)期使用的測試用例。好的文檔資料對診斷和測試至關(guān)重要。
可測試性要求軟件需求的定義要便于對需求進(jìn)行分析并易于建立測試準(zhǔn)則;還要便于就這些準(zhǔn)則對軟件進(jìn)行評價(jià)??蓽y試性是指證實(shí)程序正確性的難易程度。此外,有無可用的測試、調(diào)試工具及測試過程的確定也非常重要。在軟件設(shè)計(jì)階段就應(yīng)該注意使差錯(cuò)容易定位,以便維護(hù)時(shí)容易找到糾錯(cuò)的辦法。2)可測試性5.1軟件維護(hù)5.1.4提高軟件的可維護(hù)性5.1軟件維護(hù)
5.1.4提高軟件的可維護(hù)性3)可修改性
可修改性是指程序容易修改的程度。一個(gè)可修改的程序往往是可理解的、通用的、靈活的和簡明的。所謂通用,是指不需要修改程序就可使程序改變功能。所謂靈活,是指程序容易被分解和組合。要度量一個(gè)程序的可修改性,可以通過對該程序做少量簡單的改變來估算修改這個(gè)程序的困難程度,例如對程序增加新類型的作業(yè)、改變輸入/輸出設(shè)備、取消輸出報(bào)告等。如果對于一個(gè)簡單的改變,程序中必須修改的模塊超過30%,則該程序?qū)儆陔y修改之列。
模塊設(shè)計(jì)的內(nèi)聚、耦合、局部化等因素都會影響軟件的可修改性。模塊抽象和信息隱蔽愈好,模塊的獨(dú)立性愈高,則修改時(shí)出錯(cuò)的機(jī)會也就愈少。5.1軟件維護(hù)
5.1.4提高軟件的可維護(hù)性3)可修改性5.1軟件維護(hù)
5.1.4提高軟件的可維護(hù)性
可移植性是指軟件不加改動地從一種運(yùn)行環(huán)境轉(zhuǎn)移到另一種運(yùn)行環(huán)境下運(yùn)行的能力,即程序在不同計(jì)算機(jī)環(huán)境下能夠有效地運(yùn)行的程度??梢浦残院玫能浖菀拙S護(hù)。4)可移植性5.1軟件維護(hù)
5.1.4提高軟件的可維護(hù)性5.1軟件維護(hù)
5.1.4提高軟件的可維護(hù)性1明確軟件的質(zhì)量目標(biāo)
在軟件開發(fā)的整個(gè)過程中,始終應(yīng)該考慮并努力提高軟件的可維護(hù)性,盡力將軟件設(shè)計(jì)成容易理解、容易測試和容易修改的軟件。2利用先進(jìn)的軟件技術(shù)和工具
軟件工程在不斷發(fā)展,新的技術(shù)和工具在不斷出現(xiàn),對軟件工程的新技術(shù)和新工具,應(yīng)及時(shí)學(xué)習(xí)并應(yīng)用。3選擇便于維護(hù)的程序設(shè)計(jì)語言
機(jī)器語言、匯編語言不易理解,難以維護(hù)。一般只有在對軟件的運(yùn)行時(shí)間和使用空間有嚴(yán)格限制或系統(tǒng)硬件有特殊要求時(shí),才使用機(jī)器語言或匯編語言。高級語言容易理解,可維護(hù)性較好。查詢語言、報(bào)表生成語言、圖像語言更容易理解、使用和維護(hù)。選擇適當(dāng)?shù)某绦蛟O(shè)計(jì)語言非常重要,要慎重、綜合地考慮各種因素,征求用戶的意見。要提高軟件的可維護(hù)性,應(yīng)從以下幾個(gè)方面入手。5.1軟件維護(hù)
5.1.4提高軟件的可維護(hù)性1明確軟件的5.1軟件維護(hù)
5.1.4提高軟件的可維護(hù)性4采取有效的質(zhì)量保證措施
在軟件開發(fā)時(shí)需要確定中間及最終交付的成果以及所有開發(fā)階段各項(xiàng)工作的質(zhì)量特征和評價(jià)標(biāo)準(zhǔn)。在每個(gè)階段結(jié)束前的技術(shù)審查和管理復(fù)審中,也應(yīng)著重對可維護(hù)性進(jìn)行復(fù)審。加強(qiáng)軟件測試工作,保證軟件的質(zhì)量。用戶要求確保軟件質(zhì)量,如果做不到這一點(diǎn),軟件開發(fā)人員就無法生存。本書第10.6節(jié)將進(jìn)一步介紹軟件質(zhì)量保證知識。5完善程序的文檔軟件文檔應(yīng)滿足下述要求:(1)描述如何使用系統(tǒng),沒有這種描述,系統(tǒng)將無法使用。(2)描述怎樣安裝和管理系統(tǒng)。(3)描述系統(tǒng)需求和設(shè)計(jì)。(4)描述系統(tǒng)的實(shí)現(xiàn)和測試。在軟件工程生存周期每個(gè)階段的技術(shù)復(fù)審和管理復(fù)審中,應(yīng)對文檔進(jìn)行檢查,對可維護(hù)性進(jìn)行復(fù)審。在維護(hù)階段,利用歷史文檔可大大簡化維護(hù)工作。歷史文檔有3種:系統(tǒng)開發(fā)文檔、錯(cuò)誤記錄和系統(tǒng)維護(hù)文檔。5.1軟件維護(hù)
5.1.4提高軟件的可維護(hù)性4采取有效的02軟件重用和再工程軟件的重用軟件重用過程模型開發(fā)可重用的軟件構(gòu)件軟件逆向工程軟件再工程02軟件重用和再工程軟件的重用軟件重用過程模型開發(fā)可重用的軟5.2軟件重用和再工程
軟件重用(SoftwareReuse)是指在軟件開發(fā)、維護(hù)過程中不作修改或稍加修改就可以重復(fù)使用相同或相似的軟件元素的過程。這些軟件元素包括應(yīng)用領(lǐng)域知識、開發(fā)經(jīng)驗(yàn)、設(shè)計(jì)經(jīng)驗(yàn)、體系結(jié)構(gòu)、需求分析文檔、設(shè)計(jì)文檔、程序代碼和測試用例等。對于新的軟件開發(fā)項(xiàng)目而言,它們是構(gòu)成整個(gè)軟件系統(tǒng)的部件,或者在軟件開發(fā)過程中可發(fā)揮某種作用。通常把這些軟件元素稱為軟件構(gòu)件。5.2軟件重用和再工程
軟件重用(SoftwareReu5.2軟件重用和再工程逆向工程(ReverseEngineer)是指根據(jù)已有的源代碼構(gòu)造軟件中間產(chǎn)品,包括重新創(chuàng)建設(shè)計(jì)和規(guī)約。再工程(Reengineering)是指在逆向工程所獲得信息的基礎(chǔ)上,重新進(jìn)行軟件設(shè)計(jì),重構(gòu)已有系統(tǒng)的一個(gè)新版本。在軟件開發(fā)、維護(hù)中采用重用軟件構(gòu)件,一般可以比從頭開發(fā)這個(gè)軟件更加容易。軟件重用的目的是能更快、更好、成本更低地生產(chǎn)軟件制品。各種軟件開發(fā)過程都能使用重用軟件構(gòu)件,利用面向?qū)ο蠹夹g(shù),可以方便有效地實(shí)現(xiàn)軟件重用。5.2軟件重用和再工程逆向工程(ReverseEngin5.2軟件重用和再工程
5.2.1軟件的重用軟件重用軟件成分的重用知識重用方法和標(biāo)準(zhǔn)重用知識重用1知識重用是多方面的,例如,軟件工程知識,開發(fā)經(jīng)驗(yàn)、設(shè)計(jì)經(jīng)驗(yàn)、應(yīng)用領(lǐng)域知識等的重用。5.2軟件重用和再工程
5.2.1軟件的重用軟件軟件成分5.2軟件重用和再工程
5.2.1軟件的重用軟件重用軟件成分的重用方法和標(biāo)準(zhǔn)重用知識重用方法和標(biāo)準(zhǔn)重用2方法和標(biāo)準(zhǔn)的重用包括傳統(tǒng)軟件工程方法、面向?qū)ο蠓椒?、有關(guān)軟件開發(fā)的國家標(biāo)準(zhǔn)和國際標(biāo)準(zhǔn)的重用等。5.2軟件重用和再工程
5.2.1軟件的重用軟件軟件成分5.2軟件重用和再工程
5.2.1軟件的重用軟件重用知識重用軟件成分的重用方法和標(biāo)準(zhǔn)重用軟件成分的重用3軟件成分的重用可分為3個(gè)級別:源代碼重用、設(shè)計(jì)結(jié)果重用和規(guī)格說明重用。5.2軟件重用和再工程
5.2.1軟件的重用軟件知識重用5.2軟件重用和再工程5.2.1軟件的重用源代碼的剪貼:這種重用存在配置管理問題,無法跟蹤代碼塊的修改重用過程。源代碼包含(Include):許多程序設(shè)計(jì)語言都提供Include機(jī)制,所包含的程序庫要經(jīng)過重新編譯,才能運(yùn)行。繼承:利用繼承機(jī)制重用類庫中的類時(shí),不必修改已有代碼,就可以擴(kuò)充類,或找到需要的類。源代碼重用011可重用的軟件成分5.2軟件重用和再工程5.2.1軟件的重用源代碼的剪貼:5.2軟件重用和再工程5.2.1軟件的重用設(shè)計(jì)結(jié)果的重用包括體系結(jié)構(gòu)的重用。設(shè)計(jì)結(jié)果的重用有助于把應(yīng)用軟件系統(tǒng)移植到不同的軟件或硬件平臺上。設(shè)計(jì)結(jié)果重用021可重用的軟件成分5.2軟件重用和再工程5.2.1軟件的重用設(shè)計(jì)結(jié)果的重用5.2軟件重用和再工程5.2.1軟件的重用規(guī)格說明重用特別適用于用戶需求沒有改變,但是系統(tǒng)體系結(jié)構(gòu)發(fā)生了變化的場合。規(guī)格說明重用031可重用的軟件成分5.2軟件重用和再工程5.2.1軟件的重用規(guī)格說明重用特5.2軟件重用和再工程5.2.1軟件的重用項(xiàng)目計(jì)劃
軟件項(xiàng)目計(jì)劃的基本結(jié)構(gòu)和許多內(nèi)容是可以重用的。這樣,可以減少制訂計(jì)劃的時(shí)間,降低建立進(jìn)度表和進(jìn)行風(fēng)險(xiǎn)分析等活動的不確定性。軟件結(jié)構(gòu)
在很多情況下,軟件結(jié)構(gòu)有相似或相同之處。可以創(chuàng)建一組軟件結(jié)構(gòu)模板,作為重用的設(shè)計(jì)框架。成本估計(jì)
不同的項(xiàng)目中經(jīng)常含有類似的功能,在做成本估計(jì)時(shí),重用部分的成本也可重用。2可重用軟件成分的具體內(nèi)容5.2軟件重用和再工程5.2.1軟件的重用項(xiàng)目計(jì)劃5.2軟件重用和再工程5.2.1軟件的重用需求模型和規(guī)格說明
類和對象的模型及規(guī)格說明、數(shù)據(jù)流圖等可以重用。源代碼
經(jīng)過驗(yàn)證的程序構(gòu)件可以重用。設(shè)計(jì)
系統(tǒng)和對象設(shè)計(jì)可以重用,用傳統(tǒng)方法開發(fā)的軟件結(jié)構(gòu)、接口、設(shè)計(jì)過程等可以重用。2可重用軟件成分的具體內(nèi)容5.2軟件重用和再工程5.2.1軟件的重用需求模型和規(guī)格5.2軟件重用和再工程5.2.1軟件的重用用戶文檔和技術(shù)文檔
經(jīng)??梢灾赜眠@些文檔的較大部分內(nèi)容。數(shù)據(jù)重用
包括數(shù)據(jù)結(jié)構(gòu)的重用、輸入數(shù)據(jù)的重用和中間結(jié)果的重用等。用戶界面
很多情況下用戶界面可以重用。測試用例
一旦設(shè)計(jì)或代碼構(gòu)件被重用,相關(guān)的測試用例也應(yīng)該被重用。2可重用軟件成分的具體內(nèi)容5.2軟件重用和再工程5.2.1軟件的重用用戶文檔和技術(shù)5.2軟件重用和再工程
5.2.2軟件重用的過程模型軟件重用的組裝模型01最簡單的軟件重用過程是,先將以往軟件工程項(xiàng)目中建立的軟件構(gòu)件存儲在構(gòu)件庫中;通過對軟件構(gòu)件庫進(jìn)行查詢,提取可以重用的構(gòu)件,為了適應(yīng)新系統(tǒng),對它們做一些修改,并建造新系統(tǒng)需要的其他構(gòu)件,再將需要的所有構(gòu)件組裝成新系統(tǒng)。圖5-4描述了軟件重用的組裝模型。5.2軟件重用和再工程
5.2.2軟件重用的過程模型軟件5.2軟件重用和再工程
5.2.2軟件重用的過程模型類構(gòu)件的重用02利用面向?qū)ο蠹夹g(shù),可以比較方便、有效地實(shí)現(xiàn)軟件重用。面向?qū)ο蠹夹g(shù)中的類是比較理想的可重用軟件構(gòu)件,不妨稱之為類構(gòu)件。5.2軟件重用和再工程
5.2.2軟件重用的過程模型類構(gòu)5.2軟件重用和再工程5.2.2軟件重用的過程模型繼承重用多態(tài)重用實(shí)例重用類構(gòu)件的重用繼承重用
利用面向?qū)ο蠓椒ǖ睦^承性機(jī)制,子類可以繼承父類已經(jīng)定義的所有數(shù)據(jù)和操作,也可以另外定義新的數(shù)據(jù)和操作。為提高繼承重用的效果,關(guān)鍵是設(shè)計(jì)一個(gè)合理的、具有一定深度的類構(gòu)件繼承層次結(jié)構(gòu)。這樣可以降低類構(gòu)件的接口復(fù)雜度,提高類的可理解性,為軟件開發(fā)人員提供更多可重用的類構(gòu)件。實(shí)例重用
按照需要?jiǎng)?chuàng)建類的實(shí)例,然后向該實(shí)例發(fā)送適當(dāng)?shù)南?,啟動相?yīng)的服務(wù),完成所需要的工作。
多態(tài)重用
多態(tài)重用方法根據(jù)接收消息的對象類型,在響應(yīng)一個(gè)一般化的消息時(shí),由多態(tài)性機(jī)制啟動正確的方法,執(zhí)行不同的操作。5.2軟件重用和再工程5.2.2軟件重用的過程模型繼承重5.2軟件重用和再工程
5.2.2軟件重用的過程模型軟件重用過程模型03為了實(shí)現(xiàn)軟件重用,已經(jīng)有許多過程模型,這些模型都強(qiáng)調(diào)領(lǐng)域工程和軟件工程同時(shí)進(jìn)行。所謂“領(lǐng)域”,是指具有相似或者相近軟件需求的應(yīng)用系統(tǒng)所覆蓋的一組功能區(qū)域??梢愿鶕?jù)領(lǐng)域的特性及相似性,預(yù)測軟件構(gòu)件的可重用性。領(lǐng)域工程就是分析、設(shè)計(jì)和構(gòu)造具有重用價(jià)值的軟件構(gòu)件,進(jìn)而建立可重用的軟件構(gòu)件庫的過程。左圖描述了適用于軟件重用的過程模型。領(lǐng)域工程在特定的領(lǐng)域中創(chuàng)建應(yīng)用領(lǐng)域的模型,設(shè)計(jì)軟件體系結(jié)構(gòu)模型,開發(fā)可重用的軟件成分,建立可重用的軟件構(gòu)件庫。顯然,對軟件構(gòu)件庫應(yīng)當(dāng)不斷地積累構(gòu)件、不斷地進(jìn)行完善。5.2軟件重用和再工程
5.2.2軟件重用的過程模型軟件5.2軟件重用和再工程
5.2.2軟件重用的過程模型軟件重用過程模型03基于構(gòu)件的軟件工程,根據(jù)用戶的實(shí)際需求,參照領(lǐng)域模型進(jìn)行系統(tǒng)分析,使用領(lǐng)域的結(jié)構(gòu)模型進(jìn)行結(jié)構(gòu)設(shè)計(jì),從可重用軟件構(gòu)件庫中查找需要的構(gòu)件,對構(gòu)件進(jìn)行鑒定、調(diào)整以構(gòu)造新的軟件構(gòu)件,對軟件構(gòu)件進(jìn)行組合以開發(fā)應(yīng)用軟件,軟件構(gòu)件不斷更新,并補(bǔ)充到可重用軟件構(gòu)件庫中去。5.2軟件重用和再工程
5.2.2軟件重用的過程模型軟件5.2軟件重用和再工程
5.2.3開發(fā)可重用的軟件構(gòu)件開發(fā)可重用的軟件構(gòu)件傳播軟件構(gòu)件分析過程領(lǐng)域工程開發(fā)可重用的軟件構(gòu)件
為了開發(fā)可重用的軟件構(gòu)件,應(yīng)該考慮以下問題:標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu)、標(biāo)準(zhǔn)的接口協(xié)議、設(shè)計(jì)程序模板等。分析過程領(lǐng)域工程分析過程的主要任務(wù)是標(biāo)識可重用的軟件構(gòu)件。
傳播軟件構(gòu)件
傳播軟件構(gòu)件就是讓用戶能在成千上萬的軟件構(gòu)件中找到他所需要的構(gòu)件,這需要很好地描述構(gòu)件。構(gòu)件的描述包括構(gòu)件的功能、使用條件、接口和如何實(shí)現(xiàn)等。構(gòu)件如何實(shí)現(xiàn)的問題,只有準(zhǔn)備修改構(gòu)件的人需要知道,其他人只要了解構(gòu)件的功能、使用條件和接口即可。1領(lǐng)域工程5.2軟件重用和再工程
5.2.3開發(fā)可重用的軟件構(gòu)件5.2軟件重用和再工程
5.2.3開發(fā)可重用的軟件構(gòu)件
隨著軟件構(gòu)件的不斷豐富,軟件構(gòu)件庫的規(guī)模會不斷擴(kuò)大,軟件構(gòu)件庫組織結(jié)構(gòu)的合理性將直接影響構(gòu)件的檢索效率。庫結(jié)構(gòu)的設(shè)計(jì)和檢索方法的選用,應(yīng)當(dāng)盡量保證用戶容易理解、便于使用。對可重用軟件構(gòu)件庫要進(jìn)行分類,以便于用戶檢索使用。軟件構(gòu)件分類的方法有3種典型模式:枚舉分類、刻面分類和屬性值分類。2分類和檢索軟件構(gòu)件5.2軟件重用和再工程
5.2.3開發(fā)可重用的軟件構(gòu)件5.2軟件重用和再工程
5.2.3開發(fā)可重用的軟件構(gòu)件枚舉分類01枚舉分類方法通過層次結(jié)構(gòu)來描述構(gòu)件,在該結(jié)構(gòu)中定義軟件構(gòu)件的類以及子類的不同層次。它把實(shí)際構(gòu)件放在枚舉層次的適當(dāng)路徑的最底層。枚舉分類模式的層次結(jié)構(gòu)容易理解和使用,但在建立層次之前必須完成領(lǐng)域工程,以使層次中的項(xiàng)具有足夠的信息。EnumeratedClassification5.2軟件重用和再工程
5.2.3開發(fā)可重用的軟件構(gòu)件5.2軟件重用和再工程
5.2.3開發(fā)可重用的軟件構(gòu)件刻面分類02分析應(yīng)用領(lǐng)域并標(biāo)識出一組基本的描述特征,這些描述特征稱為刻面。描述一個(gè)構(gòu)件的刻面的集合稱為刻面描述表。根據(jù)重要性確定刻面的優(yōu)先次序,并把它們與構(gòu)件聯(lián)系起來??堂婵梢悦枋鰳?gòu)件所完成的功能、加工的數(shù)據(jù)、應(yīng)用構(gòu)件的操作和實(shí)現(xiàn)方法等特征。通常,刻面描述不超過7個(gè)。把關(guān)鍵詞的值賦給重用庫中每個(gè)構(gòu)件的刻面集。使用自動工具完成同義詞詞典功能,從而可以根據(jù)關(guān)鍵詞或關(guān)鍵詞的同義詞,在構(gòu)件庫中查找所需要的構(gòu)件。
刻面分類方法通過分析軟件構(gòu)件的基本特征,并分析這些基本特征的優(yōu)先次序,來建立軟件構(gòu)件庫。FacetedClassification5.2軟件重用和再工程
5.2.3開發(fā)可重用的軟件構(gòu)件5.2軟件重用和再工程
5.2.3開發(fā)可重用的軟件構(gòu)件屬性值分類03屬性值分類模式是指為一個(gè)領(lǐng)域中的所有構(gòu)件定義一組屬性,然后與刻面分類法類似地給這些屬性賦值。屬性值分類法與刻面分類法相似,區(qū)別如下:對可重用的屬性個(gè)數(shù)沒有限制。屬性沒有優(yōu)先級。不使用同義詞詞典功能。Attribute-ValueClassification5.2軟件重用和再工程
5.2.3開發(fā)可重用的軟件構(gòu)件5.2軟件重用和再工程
5.2.4軟件逆向工程逆向工程是一種產(chǎn)品設(shè)計(jì)技術(shù)的再現(xiàn)過程,即對一項(xiàng)目標(biāo)產(chǎn)品進(jìn)行逆向分析及研究,從而演繹并得出該產(chǎn)品的處理流程、組織結(jié)構(gòu)、功能特性及技術(shù)規(guī)格等設(shè)計(jì)要素,以制作出功能相近,但又不完全一樣的產(chǎn)品。簡單地說,逆向工程就是根據(jù)已有的產(chǎn)品,反向推出產(chǎn)品設(shè)計(jì)數(shù)據(jù)(包括各類設(shè)計(jì)圖或數(shù)據(jù)模型)的過程。因此,逆向工程可以被認(rèn)為是一個(gè)從產(chǎn)品到設(shè)計(jì)的過程。5.2軟件重用和再工程
5.2.4軟件逆向工程逆向工程是5.2軟件重用和再工程
5.2.4軟件逆向工程軟件的逆向工程是分析程序,力圖在比源代碼更高的抽象層次上,建立程序的表示過程。它不僅是設(shè)計(jì)的恢復(fù)過程,還可以借助工具從已經(jīng)存在的程序中抽取數(shù)據(jù)結(jié)構(gòu)、體系結(jié)構(gòu)和程序設(shè)計(jì)信息。軟件逆向工程也可被視作“開發(fā)周期的逆行”。對一項(xiàng)軟件程序進(jìn)行逆向工程,類似于逆行傳統(tǒng)瀑布模型中的開發(fā)步驟,即從實(shí)現(xiàn)階段的輸出(即軟件程序)還原出在設(shè)計(jì)階段所做的構(gòu)思。軟件逆向工程僅僅是一種檢測或分析的過程,它并不會更改目標(biāo)系統(tǒng)。軟件的逆向工程可以使用凈室技術(shù)(將在第11.2節(jié)介紹)來避免侵犯版權(quán)。5.2軟件重用和再工程
5.2.4軟件逆向工程軟件的逆向5.2軟件重用和再工程
5.2.4軟件逆向工程圖5-6軟件逆向工程的過程及可能恢復(fù)的信息●處理規(guī)則●構(gòu)件調(diào)用●偽代碼●數(shù)據(jù)、控制●流程圖●數(shù)據(jù)結(jié)構(gòu)圖●數(shù)據(jù)接口表●測試路徑源代碼靜態(tài)分析數(shù)據(jù)字典E-R圖模塊、變量表5.2軟件重用和再工程
5.2.4軟件逆向工程圖5-65.2軟件重用和再工程5.2.4軟件逆向工程分析通過信息交換所得的觀察最常用于協(xié)議逆向工程,涉及使用總線分析器和數(shù)據(jù)包嗅探器。在接入計(jì)算機(jī)總線或網(wǎng)絡(luò)的連接,并成功截取到通信數(shù)據(jù)后,可以對總線或網(wǎng)絡(luò)行為進(jìn)行分析,以制造出擁有相同行為的通信實(shí)現(xiàn)。此法特別適用于設(shè)備驅(qū)動程序的逆向工程。1反匯編使用反匯編器把程序的原始機(jī)器碼翻譯成較便于閱讀理解的匯編代碼。這適用于任何的計(jì)算機(jī)程序,對不熟悉機(jī)器碼的人特別有用。流行的相關(guān)工具有OllyDebug和IDA。2反編譯使用反編譯器嘗試從程序的機(jī)器碼或字節(jié)碼中重現(xiàn)高級語言形式的源代碼。3軟件逆向工程的實(shí)現(xiàn)方法很多,主要有以下3種。5.2軟件重用和再工程5.2.4軟件逆向工程分析通過信息隨著計(jì)算機(jī)技術(shù)在各個(gè)領(lǐng)域的廣泛應(yīng)用,特別是軟件開發(fā)技術(shù)的迅猛發(fā)展,基于某個(gè)軟件,以反匯編閱讀源碼的方式去推斷其數(shù)據(jù)結(jié)構(gòu)、體系結(jié)構(gòu)和程序設(shè)計(jì)信息,成為軟件逆向工程技術(shù)關(guān)注的主要對象。目前主流應(yīng)用的四大逆向工程軟件為:ImagewareSurfacer,GeomagicStudio,CopyCAD,RapidForm。5.2軟件重用和再工程
5.2.4軟件逆向工程軟件逆向技術(shù)的目的是用來研究和學(xué)習(xí)先進(jìn)的技術(shù),特別是當(dāng)手里沒有合適的文檔資料,又很需要實(shí)現(xiàn)某個(gè)軟件功能的時(shí)候。也正因?yàn)檫@樣,很多軟件為了壟斷技術(shù),在軟件安裝之前,要求用戶同意不去逆向研究。隨著計(jì)算機(jī)技術(shù)在各個(gè)領(lǐng)域的廣泛應(yīng)用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州城市職業(yè)學(xué)院《機(jī)械設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽職業(yè)技術(shù)學(xué)院《數(shù)據(jù)科學(xué)導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 油橄欖示范基地建設(shè)項(xiàng)目可行性研究報(bào)告-油橄欖市場需求持續(xù)擴(kuò)大
- 貴陽人文科技學(xué)院《樂理視唱一》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州中醫(yī)藥大學(xué)《智慧城市信息系統(tǒng)建設(shè)與實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025山西省建筑安全員-A證考試題庫及答案
- 2025河南省建筑安全員B證(項(xiàng)目經(jīng)理)考試題庫
- 2025河南省安全員B證考試題庫附答案
- 2025福建建筑安全員B證考試題庫附答案
- 2025上海市安全員A證考試題庫
- 常見生產(chǎn)安全事故防治PPT課件
- 粉末涂料使用說明
- 玻璃瓶罐的缺陷產(chǎn)生原因及解決方法63699
- 贊比亞礦產(chǎn)資源及礦業(yè)開發(fā)前景分析
- 高層住宅(23-33層)造價(jià)估算指標(biāo)
- 大型儲罐吊裝方案
- “千師訪萬家”家訪記錄表(共2頁)
- 海拔高度與氣壓、空氣密度、重力加速度對照表
- 《青田石雕》教學(xué)設(shè)計(jì)
- (精選)有限空間作業(yè)安全監(jiān)理實(shí)施細(xì)則
- GB 19295-2021 食品安全國家標(biāo)準(zhǔn) 速凍面米與調(diào)制食品(高清版)
評論
0/150
提交評論