軟件工程修訂本PPT SE19_第1頁
軟件工程修訂本PPT SE19_第2頁
軟件工程修訂本PPT SE19_第3頁
軟件工程修訂本PPT SE19_第4頁
軟件工程修訂本PPT SE19_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,1,軟件工程 Software Engineering,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,2,第19章 軟件維護(hù),為了軟件工作適應(yīng)環(huán)境的變化,就必須對(duì)軟件進(jìn)行維護(hù) 。 本章內(nèi)容: 19.1 軟件維護(hù)概述 19.2 軟件可維護(hù)性 19.3 軟件維護(hù)的特點(diǎn) 19.4 軟件維護(hù)的實(shí)施 19.5 維護(hù)“老化代碼” 19.6 逆向工程和再工程,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,3,19.1 軟件維護(hù)概述19.1.1 軟件維護(hù)的定義,軟件維護(hù)活動(dòng)的原因: 對(duì)軟件中的錯(cuò)誤進(jìn)行修改。 適應(yīng)軟硬件環(huán)境的變化。 用戶要求增加新的功能,提高軟件的性能等

2、。 為適應(yīng)新的工作要求而對(duì)軟件部分或整體進(jìn)行再工程(reengineering)。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,4,軟件維護(hù)的分類,1. 改正性維護(hù)(Corrective maintenance) 軟件開發(fā)時(shí),由于測(cè)試技術(shù)的限制,沒有一種可以檢查出所有錯(cuò)誤的測(cè)試技術(shù),必然會(huì)有一部分隱藏的錯(cuò)誤被帶到運(yùn)行階段來。這些隱藏下來的錯(cuò)誤在運(yùn)行時(shí)就有可能在某些特定的環(huán)境下出現(xiàn)。這種對(duì)軟件中存在的錯(cuò)誤進(jìn)行修改的維護(hù)活動(dòng),就叫做改正性維護(hù)。據(jù)統(tǒng)計(jì),改正性維護(hù)占整個(gè)維護(hù)工作的五分之一。 2. 適應(yīng)性維護(hù)(Adaptive maintenance) 為了讓軟件適應(yīng)新的軟硬件環(huán)境對(duì)軟件進(jìn)行的修改活動(dòng)

3、的過程就叫做適應(yīng)性維護(hù)。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,5,3. 完善性維護(hù)(Perfective maintenance) 在軟件的使用過程中,用戶往往對(duì)軟件提出新的功能與性能要求。為了滿足這些要求,對(duì)軟件進(jìn)行修改而產(chǎn)生的維護(hù)活動(dòng)叫做完善性維護(hù)。比如修改用戶界面,使之易于理解和使用,該種類型的維護(hù)占維護(hù)工作的很大部分。 4. 預(yù)防性維護(hù)(Preventive maintenance) 除了以上三類維護(hù)之外,還有一類維護(hù)活動(dòng),叫做預(yù)防性維護(hù)。這是為了提高軟件的可維護(hù)性、可靠性等,為以后進(jìn)一步改進(jìn)軟件打下良好基礎(chǔ)。通常,預(yù)防性維護(hù)定義為:“把今天的方法學(xué)用于昨天的系統(tǒng)以滿足明天的需

4、要”。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,6,19.1.2 影響維護(hù)工作的因素,1. 系統(tǒng)大小 系統(tǒng)越大、越復(fù)雜,維護(hù)人員理解起來就越困難。因而需要更多的維護(hù)工作量。可用源程序語句數(shù)、輸入輸出文件數(shù)、實(shí)現(xiàn)的功能模塊數(shù)量來衡量系統(tǒng)的大小。 2. 系統(tǒng)的開發(fā)文檔 系統(tǒng)的開發(fā)文檔完善,維護(hù)工作就好做很多。開發(fā)文檔不完善,則維護(hù)的工作量將會(huì)很大,因?yàn)橐ㄟ^源程序去閱讀、理解一個(gè)程序的功能和設(shè)計(jì)思想將是非常困難的。 3. 其他因素 在程序中使用的數(shù)學(xué)模型、任務(wù)的難度、IF嵌套深度、索引或下標(biāo)數(shù)等,對(duì)維護(hù)工作量都有影響。 此外,許多軟件在開發(fā)時(shí)并未考慮將來的修改,這就為軟件的維護(hù)帶來許多問題。,

5、2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,7,19.1.3 維護(hù)成本,軟件的維護(hù)成本體現(xiàn)為有形和無形兩類。有形維護(hù)成本是花費(fèi)了多少錢,無形成本有以下幾種: (1)維護(hù)不及時(shí)和不能滿足用戶新的功能需求,使得客戶不滿意。 (2)在維護(hù)時(shí)因引入了新的錯(cuò)誤,使軟件整體質(zhì)量下降,從而造成更大的維護(hù)活動(dòng)。 (3)當(dāng)必須把軟件人員抽調(diào)到維護(hù)工作中去時(shí),影響正在進(jìn)行的軟件開發(fā)工作。 軟件維護(hù)的代價(jià)是在生產(chǎn)率下降。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,8,19.2 軟件可維護(hù)性,對(duì)于一個(gè)復(fù)雜的軟件系統(tǒng),造成維護(hù)工作十分困難的一個(gè)直接原因是缺乏軟件開發(fā)文檔。因?yàn)闆]有足夠的、規(guī)范的文檔,很難理解以前的軟件

6、的功能、算法和很難閱讀和理解源程序。 但實(shí)際上,最根本的原因是沒有嚴(yán)格按照軟件工程的規(guī)范和標(biāo)準(zhǔn)來開發(fā)軟件,在維護(hù)時(shí)也沒按照規(guī)范來做,為以后的維護(hù)帶來了更多的問題。 所以,為了使得軟件能夠易于維護(hù),首先必須考慮使軟件具有可維護(hù)性。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,9,19.2.1 軟件可維護(hù)性的定義,軟件可維護(hù)性就是指進(jìn)行維護(hù)活動(dòng)時(shí)的容易程度??删S護(hù)性、可使用性、可靠性是衡量軟件質(zhì)量的幾個(gè)主要質(zhì)量特性。目前廣泛使用的是用如下的七個(gè)特性來衡量程序的可維護(hù)性。 表19-1 在各類維護(hù)中的側(cè)重點(diǎn),2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,10,19.2.2 可維護(hù)性的度量(七種),1.

7、可理解性 可理解性是指人們通過閱讀源代碼和相關(guān)文檔,了解程序功能及其如何運(yùn)行,對(duì)源程序的代碼容易理解??衫斫庑愿叩某绦驊?yīng)具有模塊化,編程風(fēng)格清晰、易讀,不使用具有歧義的代碼,使用有意義的標(biāo)示符作為變量名和函數(shù)名等特征。 2. 可靠性 可靠性指按照用戶的要求和設(shè)計(jì)目標(biāo),一個(gè)程序在給定的一段時(shí)間內(nèi)正確執(zhí)行的概率,是軟件整體質(zhì)量的一個(gè)重要的因素。 度量可靠性的方法,主要有兩種: (1)根據(jù)程序存在的錯(cuò)誤的統(tǒng)計(jì)數(shù)字,進(jìn)行可靠性預(yù)測(cè)。 (2)根據(jù)程序復(fù)雜性,預(yù)測(cè)軟件可靠性。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,11,3. 可測(cè)試性 可測(cè)試性表明論證程序正確性的容易程度。 4. 可修改性 可修改性

8、表明程序容易修改的程度。 5. 可移植性 可移植性表明程序轉(zhuǎn)移到一個(gè)新的計(jì)算環(huán)境的容易程度的大小。 6. 效率 效率表明一個(gè)程序能執(zhí)行預(yù)定功能而又不浪費(fèi)機(jī)器資源的程度。 7. 可使用性 可使用性是從用戶觀點(diǎn)出發(fā)來定義的。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,12,8. 其他間接定量度量可維護(hù)性的方法,Gilb提出了與軟件維護(hù)期間工作量有關(guān)的一些數(shù)據(jù),可以使用它們間接地對(duì)軟件的可維護(hù)性做出估計(jì)。 (1)問題識(shí)別的時(shí)間。 (2)因管理活動(dòng)拖延的時(shí)間。 (3)收集維護(hù)工具的時(shí)間。 (4)分析、診斷問題的時(shí)間。 (5)修改規(guī)格說明的時(shí)間。 (6)具體的改錯(cuò)或修改的時(shí)間。 (7)局部測(cè)試的時(shí)間。

9、 (8)集成或回歸測(cè)試的時(shí)間。 (9)維護(hù)和評(píng)審時(shí)間。 (10)恢復(fù)時(shí)間。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,13,19.3 軟件維護(hù)的特點(diǎn)19.3.1 非結(jié)構(gòu)化維護(hù)和結(jié)構(gòu)化維護(hù),1. 非結(jié)構(gòu)化維護(hù) 有源程序,而文檔很少或沒有文檔,維護(hù)活動(dòng)只能從閱讀、理解和分析源程序開始。也只有通過閱讀源程序來了解系統(tǒng)功能、軟件結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口和設(shè)計(jì)約束等。 2. 結(jié)構(gòu)化維護(hù) 用軟件工程思想開發(fā)的軟件具有各個(gè)階段的文檔,便于理解、掌握軟件功能、性能、軟件結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口和設(shè)計(jì)約束。進(jìn)行維護(hù)活動(dòng)時(shí),需從評(píng)價(jià)需求說明開始,搞清楚軟件功能、性能上的改變;對(duì)設(shè)計(jì)說明文檔進(jìn)行評(píng)價(jià),對(duì)設(shè)計(jì)說明文

10、檔進(jìn)行修改和復(fù)查;根據(jù)設(shè)計(jì)的修改,進(jìn)行程序的變動(dòng);根據(jù)測(cè)試文檔中的測(cè)試用例進(jìn)行回歸測(cè)試。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,14,結(jié)構(gòu)化維護(hù)和非結(jié)構(gòu)化維護(hù)在維護(hù)活動(dòng)中的區(qū)別,圖19-1 結(jié)構(gòu)化維護(hù)和非結(jié)構(gòu)化維護(hù),2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,15,19.3.2 維護(hù)的困難性,(1)讀懂別人的源程序是困難的。 (2)文檔的不一致性。 (3)軟件開發(fā)和軟件維護(hù)在人員和時(shí)間上的差異。(4)軟件維護(hù)不是一項(xiàng)具有吸引力的工作。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,16,19.3.3 軟件維護(hù)的費(fèi)用,軟件維護(hù)的費(fèi)用在總費(fèi)用中的比重是在不斷增加的. 軟件維護(hù)費(fèi)用不斷上升,這只

11、是軟件維護(hù)有形的代價(jià)。另外還有無形的代價(jià),即要占用更多的硬件、軟件和軟件工程師等資源,這樣一來,新的開發(fā)工作就因投入的資源不足而受到影響。 軟件維護(hù)的困難造成軟件維護(hù)的生產(chǎn)率非常低,相對(duì)來說,大大增加了軟件維護(hù)的費(fèi)用。 用于軟件維護(hù)工作的活動(dòng)可分為生產(chǎn)性活動(dòng)和非生產(chǎn)性活動(dòng)兩種。生產(chǎn)性活動(dòng)包括分析評(píng)價(jià)、修改設(shè)計(jì)和編寫程序代碼等。非生產(chǎn)性活動(dòng)包括理解程序代碼功能,解釋數(shù)據(jù)結(jié)構(gòu)、接口特點(diǎn)和設(shè)計(jì)約束。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,17,19.4 軟件維護(hù)的實(shí)施,19.4.1 維護(hù)的組織 1. 臨時(shí)維護(hù)小組 2. 長期維護(hù)小組 對(duì)長期運(yùn)行的復(fù)雜系統(tǒng)進(jìn)行維護(hù)必須有一個(gè)穩(wěn)定的維護(hù)小組才可以完

12、成任務(wù)。維護(hù)小組在系統(tǒng)開發(fā)完成之前就應(yīng)該成立,小組必須有嚴(yán)格的組織。一般有如下的組成成員: 1)組長 2)副組長 3)維護(hù)程序員,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,18,19.4.2 維護(hù)的流程,軟件維護(hù)活動(dòng)和軟件開發(fā)一樣,要有嚴(yán)格的規(guī)范,才能保證軟件的質(zhì)量。一般執(zhí)行維護(hù)活動(dòng)的流程如下: (1)制定維護(hù)申請(qǐng)報(bào)告。 (2)審查申請(qǐng)報(bào)告并批準(zhǔn)。 (3)進(jìn)行維護(hù)并做詳細(xì)記錄。 (4)復(fù)審。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,19,1. 制定維護(hù)申請(qǐng)報(bào)告,應(yīng)該以文檔的方式提出所有軟件維護(hù)申請(qǐng)。由申請(qǐng)維護(hù)的人員(用戶、開發(fā)人員)填寫。 對(duì)維護(hù)申請(qǐng)報(bào)告分析、評(píng)價(jià)后,在軟件維護(hù)組織內(nèi)部還

13、要制定一份軟件修改報(bào)告,該報(bào)告是維護(hù)階段的另一種文檔,用來指出: (1)為滿足軟件問題報(bào)告實(shí)際要求的工作量。 (2)要求修改的類型。 (3)請(qǐng)求修改的優(yōu)先權(quán)。 (4)關(guān)于修改的事后數(shù)據(jù)。 提出維護(hù)申請(qǐng)報(bào)告之后,由維護(hù)機(jī)構(gòu)來評(píng)審維護(hù)請(qǐng)求。將評(píng)價(jià)維護(hù)的類型,是改正性的還是改進(jìn)性的,然后根據(jù)問題的嚴(yán)重性安排維護(hù)工作,開始具體的維護(hù)活動(dòng)。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,20,2. 維護(hù)過程,一個(gè)維護(hù)申請(qǐng)?zhí)岢鲋螅?jīng)評(píng)審需要維護(hù),則按下列過程實(shí)施維護(hù): (1)首先確定要進(jìn)行維護(hù)的類型。 (2)對(duì)改正性維護(hù)從評(píng)價(jià)錯(cuò)誤的嚴(yán)重性開始。 (3)對(duì)適應(yīng)性和完善性維護(hù)。 (4)實(shí)施維護(hù)任務(wù)。 (5)“

14、救火”維護(hù)。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,21,3. 維護(hù)的復(fù)審,在維護(hù)任務(wù)完成后,要對(duì)維護(hù)任務(wù)進(jìn)行復(fù)審。進(jìn)行復(fù)審時(shí)要回答下列問題: (1)評(píng)價(jià)維護(hù)的情況,即設(shè)計(jì)、代碼和測(cè)試的哪些方面已經(jīng)完成? (2)對(duì)軟件開發(fā)工作有哪些改進(jìn)要求? (3)對(duì)于維護(hù)工作,主要的、次要的障礙是什么? 復(fù)審對(duì)將來的維護(hù)工作能否順利進(jìn)行有重大影響,對(duì)一個(gè)軟件機(jī)構(gòu)來說也是正規(guī)、有效的管理工作的一部分。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,22,19.4.3 維護(hù)技術(shù),在維護(hù)活動(dòng)中,按目的不同分為兩類維護(hù)技術(shù),分別是面向維護(hù)的技術(shù)和維護(hù)支援技術(shù)。 面向維護(hù)的技術(shù)是在軟件開發(fā)階段用來減少錯(cuò)誤、提高軟

15、件可維護(hù)性的技術(shù)。 維護(hù)支援技術(shù)是在軟件維護(hù)階段用來提高維護(hù)作業(yè)的效率和質(zhì)量的技術(shù)。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,23,1. 面向維護(hù)的技術(shù),面向維護(hù)的技術(shù)涉及軟件開發(fā)的所有階段。 在需求分析階段,保證對(duì)用戶的需求沒有矛盾和易于理解,可以減少軟件中的錯(cuò)誤。 在設(shè)計(jì)階段,考慮計(jì)算機(jī)的發(fā)展趨勢(shì),充分考慮將來改動(dòng)或擴(kuò)充的可能性。使用先進(jìn)的設(shè)計(jì)思想和工具。 在測(cè)試階段,設(shè)計(jì)完善的測(cè)試方法,盡量發(fā)現(xiàn)存在的錯(cuò)誤,保存測(cè)試用例和測(cè)試數(shù)據(jù)等。 在每個(gè)階段都要有詳細(xì)、規(guī)范的文檔。 以上這些技術(shù)方法都能減少軟件錯(cuò)誤,提高軟件的可維護(hù)性。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,24,2. 維護(hù)

16、支援技術(shù),維護(hù)支援技術(shù)包括下列各方面的技術(shù): (1)信息收集。 (2)錯(cuò)誤原因分析。 (3)軟件分析與理解。 (4)維護(hù)方案評(píng)價(jià)。 (5)代碼與文檔修改。 (6)修改后的確認(rèn)。 (7)遠(yuǎn)距離的維護(hù)。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,25,19.4.4 維護(hù)的副作用,維護(hù)的目的是為了延長軟件的壽命并讓其創(chuàng)造更多的價(jià)值,經(jīng)過一段時(shí)間的維護(hù),軟件的錯(cuò)誤被修正了,功能增強(qiáng)了。但同時(shí),因?yàn)樾薷亩氲臐摲腻e(cuò)誤也增加了。這種因修改軟件而造成的錯(cuò)誤或其他不希望出現(xiàn)的情況稱為維護(hù)的副作用。維護(hù)的副作用有編碼副作用、數(shù)據(jù)副作用和文檔副作用三種。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,26,1

17、. 編碼副作用,使用程序設(shè)計(jì)語言修改源代碼時(shí)可能引入如下錯(cuò)誤,這些錯(cuò)誤要到運(yùn)行時(shí)才能發(fā)現(xiàn): (1)刪除或修改一個(gè)子程序、一個(gè)標(biāo)號(hào)和一個(gè)標(biāo)識(shí)符。 (2)改變程序代碼的時(shí)序關(guān)系,改變占用存儲(chǔ)的大小,改變邏輯運(yùn)算符。 (3)為邊界條件的邏輯測(cè)試做出改變。 (4)改進(jìn)程序的執(zhí)行效率。 (5)把設(shè)計(jì)上的改變翻譯成代碼的改變。 以上這些變動(dòng)都容易引入錯(cuò)誤,要特別小心、仔細(xì)地修改,避免引入新的錯(cuò)誤。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,27,2. 數(shù)據(jù)副作用,在修改數(shù)據(jù)結(jié)構(gòu)時(shí),有可能造成軟件設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)不匹配,因而導(dǎo)致軟件錯(cuò)誤。有以下幾種情況: (1)重新定義局部或全局的常量,重新定義記錄或文件格

18、式。 (2)增加或減少一個(gè)數(shù)組或高層數(shù)據(jù)結(jié)構(gòu)的大小。 (3)修改全局或公共數(shù)據(jù)。 (4)重新初始化控制標(biāo)志或指針。 (5)重新排列輸入/輸出或子程序的參數(shù)。 (6)修改數(shù)據(jù)庫的結(jié)構(gòu)。 以上這些情況都容易導(dǎo)致設(shè)計(jì)與數(shù)據(jù)不相容的錯(cuò)誤。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,28,3. 文檔副作用,所有的維護(hù)活動(dòng),都必須修改相應(yīng)的技術(shù)文檔,否則會(huì)導(dǎo)致文檔與程序功能不一致等錯(cuò)誤,使文檔不能反映軟件當(dāng)前的狀態(tài),對(duì)以后的維護(hù)將造成很大的困難。如果對(duì)可執(zhí)行軟件的修改沒有反映在文檔中,就會(huì)產(chǎn)生如下文檔副作用: (1)修改交互輸入的順序或格式,沒有正確的記入文檔中。 (2)過時(shí)的文檔內(nèi)容、索引和文本可能造

19、成沖突等。 因此,必須在軟件交付之前對(duì)整個(gè)軟件配置進(jìn)行評(píng)審,以減少文檔副作用。事實(shí)上,有些維護(hù)請(qǐng)求并不要求改變軟件設(shè)計(jì)和源代碼,而是指出在用戶文檔中不夠明確的地方。在這種情況下,維護(hù)工作主要集中在文檔。 在維護(hù)活動(dòng)中,應(yīng)該針對(duì)以上容易引起副作用的各個(gè)方面小心審查,以免將新的錯(cuò)誤帶入程序中。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,29,19.5 維護(hù)“老化代碼”,對(duì)于那些使用超過15年的程序,這些程序通常稱為“老化代碼”,因?yàn)殚_發(fā)這些程序的技術(shù)人員一般不是現(xiàn)在的成員,而且沒有使用現(xiàn)代的開發(fā)方法,因此得到的數(shù)據(jù)結(jié)構(gòu)和程序的體系結(jié)構(gòu)都很差,文檔不完全,并且對(duì)曾經(jīng)做過的修改沒有完整的記錄。缺少詳

20、細(xì)的文檔是維護(hù)老化代碼最大的困難。 (1)在進(jìn)入“緊急維修”之前,必須研究程序的使用環(huán)境及有關(guān)資料,盡可能得到更多的背景信息。 (2)力圖熟悉程序的所有控制流程。最初可以忽略某些編碼細(xì)節(jié)。如果設(shè)計(jì)資料存在,則可利用它們來幫助畫出結(jié)構(gòu)圖和高層流程圖。 (3)評(píng)價(jià)現(xiàn)有文檔的可用性。若有幫助,可利用它們?cè)谠闯绦蚯鍐沃胁迦胱⑨尅?(4)充分利用交叉引用表、符號(hào)表及其他由編譯程序或匯編程序等提供的交叉引用信息。 (5)必須非常謹(jǐn)慎地對(duì)程序進(jìn)行修改。如果可能,要尊重程序的風(fēng)格和格式,要說明需要變更的程序指令。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,30,(6)在刪除某些代碼時(shí),要確認(rèn)代碼確實(shí)不再使用

21、。 (7)不要試圖共享程序已有的臨時(shí)變量或工作區(qū),需要時(shí)可插入新的變量以避免沖突。 (8)保持詳細(xì)的維護(hù)活動(dòng)和維護(hù)結(jié)果記錄。 (9)如果程序結(jié)構(gòu)混亂,修改受到干擾,可拋棄程序重新編寫。 (10)插入出錯(cuò)檢驗(yàn)。 但是對(duì)“老化代碼”的維護(hù)實(shí)在是一件吃力不討好,工作難做,又不經(jīng)濟(jì)的事情,這時(shí)可以考慮再工程的方法。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,31,19.6 逆向工程和再工程,逆向工程是分析程序,從源代碼中抽取出來的設(shè)計(jì)信息,在比源代碼更高抽象層次上建立程序表示的過程。 作為逆向工程的評(píng)價(jià),要求抽取出來的信息的抽象程度越高越好。下面是逆向工程中得到的信息抽象層次(從低到高): 軟件過程

22、的設(shè)計(jì)表示、程序和數(shù)據(jù)結(jié)構(gòu)信息、數(shù)據(jù)和控制流模型和實(shí)體-關(guān)系模型。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,32,再工程,再工程(reengineering),它不僅能從已存在的程序中重新獲得設(shè)計(jì)信息,而且還能使用這些信息來改建或重構(gòu)現(xiàn)有的系統(tǒng),以改進(jìn)它的綜合質(zhì)量。一般軟件人員利用再工程重新實(shí)現(xiàn)已存在的程序,同時(shí)加進(jìn)新的功能或改善它的性能。 為了執(zhí)行預(yù)防性維護(hù),軟件開發(fā)組織必須選擇在將來可能變更的程序,做好變更它們的準(zhǔn)備。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,33,19.6.1 預(yù)防性維護(hù),早期開發(fā)的程序,缺乏軟件工程的開發(fā)思想,程序結(jié)構(gòu)不好,沒有相應(yīng)的文檔。修改這類程序有以下幾種

23、選擇: 通過反復(fù)地修改,以實(shí)現(xiàn)必要的變更。 盡可能多地掌握程序的內(nèi)部工作細(xì)節(jié),以便更有效地做出修改。 重新設(shè)計(jì)、重新編碼和測(cè)試那些需要變更的軟件部分,把軟件工程方法應(yīng)用于有修改的部分。 用CASE工具(逆向工程和再工程工具)對(duì)程序全部重新設(shè)計(jì)、重新編碼和測(cè)試。 第一個(gè)選擇比較盲目,通常人們希望后三種選擇。選擇哪一種,要視具體情況而定。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,34,預(yù)防性維護(hù)的對(duì)象,(1)預(yù)先選定多年留待使用的程序。 (2)當(dāng)前正在成功地使用著的程序。 (3)可能在最近的將來要做重大修改或增強(qiáng)的程序。 預(yù)防性維護(hù)方法是由Miller提出來的。他的想法是“結(jié)構(gòu)化翻新”,并將這

24、個(gè)概念定義為“把今天的方法學(xué)應(yīng)用到昨天的系統(tǒng),以支持明天的需求”。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,35,支持再工程理由,(1)維護(hù)一行源代碼的代價(jià)可能1440倍于初始開發(fā)該行源代碼的代價(jià)。 (2)軟件體系結(jié)構(gòu)(程序及數(shù)據(jù)結(jié)構(gòu))的重新設(shè)計(jì)使用了現(xiàn)代設(shè)計(jì)概念,它對(duì)將來的維護(hù)可能有很大的幫助。 (3)由于軟件的原型已經(jīng)存在,開發(fā)生產(chǎn)率應(yīng)當(dāng)大大高于平均水平。 (4)現(xiàn)行用戶具有較多有關(guān)該軟件的經(jīng)驗(yàn),因此,新的變更需求和變更的范圍能夠容易地搞清。 (5)逆向工程和再工程的工具可以使一部分作業(yè)自動(dòng)化。 (6)軟件文檔將可以在完成預(yù)防性維護(hù)的基礎(chǔ)上建立起來。,2020/10/8,廣東工業(yè)大學(xué)計(jì)

25、算機(jī)學(xué)院,36,19.6.2 逆向工程的元素,逆向工程可以從源代碼或目標(biāo)代碼中提取設(shè)計(jì)信息,其中抽象的層次、文檔的完全性、工具與人的交互程序,以及過程的方法都是重要的因素。 逆向工程過程應(yīng)當(dāng)能夠?qū)С鲞^程性設(shè)計(jì)的表示(最低層抽象)、程序和數(shù)據(jù)結(jié)構(gòu)信息(低層抽象)、數(shù)據(jù)和控制流模型(中層抽象)和實(shí)體聯(lián)系模型(高層抽象)。 逆向工程的文檔完整性的詳細(xì)程度與給出的抽象層次有關(guān)。文檔完整性與逆向工程的分析量成正比。 交互性是指人與自動(dòng)工具“交互”建立有效的逆向工程過程的程度。,2020/10/8,廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,37,19.6.3 再工程中的重構(gòu)技術(shù),再工程組合了逆向工程的分析和設(shè)計(jì)抽象的特點(diǎn),具有對(duì)程序數(shù)據(jù)、體系結(jié)構(gòu)和邏輯的重構(gòu)能力。 執(zhí)行重構(gòu)可生成一個(gè)設(shè)計(jì),它產(chǎn)生與原來程序相同的功能,但質(zhì)量比原來程序高。 重構(gòu)的一個(gè)簡單實(shí)例:Warnier的邏輯化簡技術(shù),重構(gòu)程序邏輯。某個(gè)程序使用了數(shù)據(jù)項(xiàng)A,B,C,D,處理動(dòng)作(代碼段)V,W,X,Y,Z和(R的反)。表19-2(下頁)顯示了四個(gè)數(shù)據(jù)項(xiàng)A,B,C,D真值表的表格表示及其生成的相應(yīng)處理動(dòng)作。,2

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論