版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院1第18章軟件維護(hù)為了軟件工作適應(yīng)環(huán)境的變化,就必須對(duì)軟件進(jìn)行維護(hù)。本章內(nèi)容:18.1軟件維護(hù)概述18.2軟件可維護(hù)性18.3軟件維護(hù)的特點(diǎn)18.4軟件維護(hù)的實(shí)施18.5維護(hù)“老化代碼”18.6逆向工程和再工程2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院218.1軟件維護(hù)概述
18.1.1軟件維護(hù)的定義屬于軟件維護(hù)工作的活動(dòng)不只是對(duì)軟件中的錯(cuò)誤進(jìn)行修改,只要是因?yàn)橐韵碌脑蛑划a(chǎn)生的活動(dòng)都屬于軟件維護(hù):(1)對(duì)軟件中的錯(cuò)誤進(jìn)行修改。(2)因軟件在使用過(guò)程中的軟硬件環(huán)境發(fā)生變化,需要修改軟件以適應(yīng)這種變化。(3)用戶要求增加新的功能,提高軟件的性能等。(4)為適應(yīng)新的工作要求而對(duì)軟件部分或整體進(jìn)行再工程(reengineering)。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院3軟件維護(hù)的分類1.改正性維護(hù)(Correctivemaintenance)軟件開發(fā)時(shí),由于測(cè)試技術(shù)的限制,沒有一種可以檢查出所有錯(cuò)誤的測(cè)試技術(shù),必然會(huì)有一部分隱藏的錯(cuò)誤被帶到運(yùn)行階段來(lái)。這些隱藏下來(lái)的錯(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ù)(Adaptivemaintenance)為了讓軟件適應(yīng)新的軟硬件環(huán)境對(duì)軟件進(jìn)行的修改活動(dòng)的過(guò)程就叫做適應(yīng)性維護(hù)。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院43.完善性維護(hù)(Perfectivemaintenance)在軟件的使用過(guò)程中,用戶往往對(duì)軟件提出新的功能與性能要求。為了滿足這些要求,對(duì)軟件進(jìn)行修改而產(chǎn)生的維護(hù)活動(dòng)叫做完善性維護(hù)。比如修改用戶界面,使之易于理解和使用,該種類型的維護(hù)占維護(hù)工作的很大部分。4.預(yù)防性維護(hù)(Preventivemaintenance)除了以上三類維護(hù)之外,還有一類維護(hù)活動(dòng),叫做預(yù)防性維護(hù)。這是為了提高軟件的可維護(hù)性、可靠性等,為以后進(jìn)一步改進(jìn)軟件打下良好基礎(chǔ)。通常,預(yù)防性維護(hù)定義為:“把今天的方法學(xué)用于昨天的系統(tǒng)以滿足明天的需要”。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院518.1.2影響維護(hù)工作的因素1.系統(tǒng)大小系統(tǒng)越大、越復(fù)雜,維護(hù)人員理解起來(lái)就越困難。因而需要更多的維護(hù)工作量??捎迷闯绦蛘Z(yǔ)句數(shù)、輸入輸出文件數(shù)、實(shí)現(xiàn)的功能模塊數(shù)量來(lái)衡量系統(tǒng)的大小。2.系統(tǒng)的開發(fā)文檔系統(tǒng)的開發(fā)文檔完善,維護(hù)工作就好做很多。開發(fā)文檔不完善,則維護(hù)的工作量將會(huì)很大,因?yàn)橐ㄟ^(guò)源程序去閱讀、理解一個(gè)程序的功能和設(shè)計(jì)思想將是非常困難的。3.其他因素在程序中使用的數(shù)學(xué)模型、任務(wù)的難度、IF嵌套深度、索引或下標(biāo)數(shù)等,對(duì)維護(hù)工作量都有影響。此外,許多軟件在開發(fā)時(shí)并未考慮將來(lái)的修改,這就為軟件的維護(hù)帶來(lái)許多問(wèn)題。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院618.1.3維護(hù)成本軟件的維護(hù)成本體現(xiàn)為有形和無(wú)形兩類。有形的軟件維護(hù)成本是花費(fèi)了多少錢,無(wú)形的成本是對(duì)其他方面的影響,可以是以下幾種:(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)率(用LOC/人月或功能點(diǎn)/人月度量)方面驚人的下降。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院718.2軟件可維護(hù)性對(duì)于一個(gè)復(fù)雜的軟件系統(tǒng),造成維護(hù)工作十分困難的一個(gè)直接原因是缺乏軟件開發(fā)文檔。因?yàn)闆]有足夠的、規(guī)范的文檔,很難理解以前的軟件的功能、算法和很難閱讀和理解源程序。但實(shí)際上,最根本的原因是沒有嚴(yán)格按照軟件工程的規(guī)范和標(biāo)準(zhǔn)來(lái)開發(fā)軟件,在維護(hù)時(shí)也沒按照規(guī)范來(lái)做,為以后的維護(hù)帶來(lái)了更多的問(wèn)題。所以,為了使得軟件能夠易于維護(hù),首先必須考慮使軟件具有可維護(hù)性。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院818.2.1軟件可維護(hù)性的定義軟件可維護(hù)性就是指進(jìn)行維護(hù)活動(dòng)時(shí)的容易程度??删S護(hù)性、可使用性、可靠性是衡量軟件質(zhì)量的幾個(gè)主要質(zhì)量特性,也是用戶十分關(guān)心的幾個(gè)方面。軟件的可維護(hù)性是軟件開發(fā)階段各個(gè)時(shí)期的關(guān)鍵目標(biāo)。目前廣泛使用的是用如下的七個(gè)特性來(lái)衡量程序的可維護(hù)性。而且對(duì)于不同類型的維護(hù),這七種特性的側(cè)重點(diǎn)也不相同。
表18-1在各類維護(hù)中的側(cè)重點(diǎn)類別改正性維護(hù)適應(yīng)性維護(hù)完善性維護(hù)可理解性√可測(cè)試性√可修改性√√可靠性√可移植性√可使用性√√效率√2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院918.2.2可維護(hù)性的度量(七種)1.可理解性可理解性是指人們通過(guò)閱讀源代碼和相關(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è)軟件可靠性。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院103.可測(cè)試性可測(cè)試性表明論證程序正確性的容易程度。4.可修改性可修改性表明程序容易修改的程度。5.可移植性可移植性表明程序轉(zhuǎn)移到一個(gè)新的計(jì)算環(huán)境的容易程度的大小。6.效率效率表明一個(gè)程序能執(zhí)行預(yù)定功能而又不浪費(fèi)機(jī)器資源的程度。7.可使用性可使用性是從用戶觀點(diǎn)出發(fā)來(lái)定義的。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院118.其他間接定量度量可維護(hù)性的方法Gilb提出了與軟件維護(hù)期間工作量有關(guān)的一些數(shù)據(jù),可以使用它們間接地對(duì)軟件的可維護(hù)性做出估計(jì)。(1)問(wèn)題識(shí)別的時(shí)間。(2)因管理活動(dòng)拖延的時(shí)間。(3)收集維護(hù)工具的時(shí)間。(4)分析、診斷問(wèn)題的時(shí)間。(5)修改規(guī)格說(shuō)明的時(shí)間。(6)具體的改錯(cuò)或修改的時(shí)間。(7)局部測(cè)試的時(shí)間。(8)集成或回歸測(cè)試的時(shí)間。(9)維護(hù)和評(píng)審時(shí)間。(10)恢復(fù)時(shí)間。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院1218.3軟件維護(hù)的特點(diǎn)
18.3.1非結(jié)構(gòu)化維護(hù)和結(jié)構(gòu)化維護(hù)1.非結(jié)構(gòu)化維護(hù)因?yàn)橹挥性闯绦颍臋n很少或沒有文檔,維護(hù)活動(dòng)只能從閱讀、理解和分析源程序開始。也只有通過(guò)閱讀源程序來(lái)了解系統(tǒng)功能、軟件結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口和設(shè)計(jì)約束等。要完成這些工作是非常困難的。要想搞清楚,要花費(fèi)大量的人力、物力,最終對(duì)源程序修改的后果還是難以估量的,難以估計(jì)軟件的質(zhì)量。因?yàn)闆]有測(cè)試文檔,不可能進(jìn)行回歸測(cè)試,很難保證程序的正確性。2.結(jié)構(gòu)化維護(hù)用軟件工程思想開發(fā)的軟件具有各個(gè)階段的文檔,這對(duì)于理解、掌握軟件功能、性能、軟件結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口和設(shè)計(jì)約束有很大作用。進(jìn)行維護(hù)活動(dòng)時(shí),需從評(píng)價(jià)需求說(shuō)明開始,搞清楚軟件功能、性能上的改變;對(duì)設(shè)計(jì)說(shuō)明文檔進(jìn)行評(píng)價(jià),對(duì)設(shè)計(jì)說(shuō)明文檔進(jìn)行修改和復(fù)查;根據(jù)設(shè)計(jì)的修改,進(jìn)行程序的變動(dòng);根據(jù)測(cè)試文檔中的測(cè)試用例進(jìn)行回歸測(cè)試。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院13結(jié)構(gòu)化維護(hù)和非結(jié)構(gòu)化維護(hù)在維護(hù)活動(dòng)中的區(qū)別
圖18-1結(jié)構(gòu)化維護(hù)和非結(jié)構(gòu)化維護(hù)2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院1418.3.2維護(hù)的困難性(1)讀懂別人的源程序是困難的。(2)文檔的不一致性。(3)軟件開發(fā)和軟件維護(hù)在人員和時(shí)間上的差異。(4)軟件維護(hù)不是一項(xiàng)具有吸引力的工作。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院1518.3.3軟件維護(hù)的費(fèi)用軟件維護(hù)的費(fèi)用在總費(fèi)用中的比重是在不斷增加的.軟件維護(hù)費(fèi)用不斷上升,這只是軟件維護(hù)有形的代價(jià)。另外還有無(wú)形的代價(jià),即要占用更多的硬件、軟件和軟件工程師等資源,這樣一來(lái),新的開發(fā)工作就因投入的資源不足而受到影響。軟件維護(hù)的困難造成軟件維護(hù)的生產(chǎn)率非常低,相對(duì)來(lái)說(shuō),大大增加了軟件維護(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ì)約束。維護(hù)活動(dòng)總的工作量由下式表示:M=P+K·exp(C-D)其中:M表示維護(hù)工作的總工作量;P表示生產(chǎn)性活動(dòng)工作量;K表示經(jīng)驗(yàn)常數(shù);C表示復(fù)雜性程序;D表示維護(hù)人員對(duì)軟件的熟悉程度。上式表明,若C越大,D越小,那么維護(hù)工作量將成指數(shù)增加;C增加表示軟件因未用軟件工程方法開發(fā),文檔缺少,程序復(fù)雜性高;D表示對(duì)軟件熟悉程度,如果維護(hù)人員不是開發(fā)人員,則重新理解軟件會(huì)花費(fèi)很多時(shí)間,造成總的維護(hù)費(fèi)用上升。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院1618.4軟件維護(hù)的實(shí)施18.4.1維護(hù)的組織1.臨時(shí)維護(hù)小組2.長(zhǎng)期維護(hù)小組對(duì)長(zhǎng)期運(yùn)行的復(fù)雜系統(tǒng)進(jìn)行維護(hù)必須有一個(gè)穩(wěn)定的維護(hù)小組才可以完成任務(wù)。維護(hù)小組在系統(tǒng)開發(fā)完成之前就應(yīng)該成立,小組必須有嚴(yán)格的組織。一般有如下的組成成員:1)組長(zhǎng)2)副組長(zhǎng)3)維護(hù)程序員2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院1718.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ù)審。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院181.制定維護(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)部還要制定一份軟件修改報(bào)告,該報(bào)告是維護(hù)階段的另一種文檔,用來(lái)指出:(1)為滿足軟件問(wèn)題報(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)來(lái)評(píng)審維護(hù)請(qǐng)求。將評(píng)價(jià)維護(hù)的類型,是改正性的還是改進(jìn)性的,然后根據(jù)問(wèn)題的嚴(yán)重性安排維護(hù)工作,開始具體的維護(hù)活動(dòng)。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院192.維護(hù)過(guò)程一個(gè)維護(hù)申請(qǐng)?zhí)岢鲋?,?jīng)評(píng)審需要維護(hù),則按下列過(guò)程實(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)“救火”維護(hù)。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院203.維護(hù)的復(fù)審在維護(hù)任務(wù)完成后,要對(duì)維護(hù)任務(wù)進(jìn)行復(fù)審。進(jìn)行復(fù)審時(shí)要回答下列問(wèn)題:(1)評(píng)價(jià)維護(hù)的情況,即設(shè)計(jì)、代碼和測(cè)試的哪些方面已經(jīng)完成?(2)對(duì)軟件開發(fā)工作有哪些改進(jìn)要求?(3)對(duì)于維護(hù)工作,主要的、次要的障礙是什么?復(fù)審對(duì)將來(lái)的維護(hù)工作能否順利進(jìn)行有重大影響,對(duì)一個(gè)軟件機(jī)構(gòu)來(lái)說(shuō)也是正規(guī)、有效的管理工作的一部分。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院2118.4.3維護(hù)技術(shù)在維護(hù)活動(dòng)中,按目的不同分為兩類維護(hù)技術(shù),分別是面向維護(hù)的技術(shù)和維護(hù)支援技術(shù)。面向維護(hù)的技術(shù)是在軟件開發(fā)階段用來(lái)減少錯(cuò)誤、提高軟件可維護(hù)性的技術(shù)。維護(hù)支援技術(shù)是在軟件維護(hù)階段用來(lái)提高維護(hù)作業(yè)的效率和質(zhì)量的技術(shù)。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院221.面向維護(hù)的技術(shù)面向維護(hù)的技術(shù)涉及軟件開發(fā)的所有階段。在需求分析階段,保證對(duì)用戶的需求沒有矛盾和易于理解,可以減少軟件中的錯(cuò)誤。例如,美國(guó)密執(zhí)安大學(xué)的ISDOS系統(tǒng)就是需求分析階段使用的一種分析與文檔化工具,可以檢查需求說(shuō)明書的一致性和完備性,提高需求說(shuō)明書的質(zhì)量。在設(shè)計(jì)階段,考慮計(jì)算機(jī)的發(fā)展趨勢(shì),充分考慮將來(lái)改動(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ù)性。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院232.維護(hù)支援技術(shù)維護(hù)支援技術(shù)包括下列各方面的技術(shù):(1)信息收集。(2)錯(cuò)誤原因分析。(3)軟件分析與理解。(4)維護(hù)方案評(píng)價(jià)。(5)代碼與文檔修改。(6)修改后的確認(rèn)。(7)遠(yuǎn)距離的維護(hù)。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院2418.4.4維護(hù)的副作用維護(hù)的目的是為了延長(zhǎng)軟件的壽命并讓其創(chuàng)造更多的價(jià)值,經(jīng)過(guò)一段時(shí)間的維護(hù),軟件的錯(cuò)誤被修正了,功能增強(qiáng)了。但同時(shí),因?yàn)樾薷亩氲臐摲腻e(cuò)誤也增加了。這種因修改軟件而造成的錯(cuò)誤或其他不希望出現(xiàn)的情況稱為維護(hù)的副作用。維護(hù)的副作用有編碼副作用、數(shù)據(jù)副作用和文檔副作用三種。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院251.編碼副作用使用程序設(shè)計(jì)語(yǔ)言修改源代碼時(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ò)誤。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院262.數(shù)據(jù)副作用在修改數(shù)據(jù)結(jié)構(gòu)時(shí),有可能造成軟件設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)不匹配,因而導(dǎo)致軟件錯(cuò)誤。有以下幾種情況:(1)重新定義局部或全局的常量,重新定義記錄或文件格式。(2)增加或減少一個(gè)數(shù)組或高層數(shù)據(jù)結(jié)構(gòu)的大小。(3)修改全局或公共數(shù)據(jù)。(4)重新初始化控制標(biāo)志或指針。(5)重新排列輸入/輸出或子程序的參數(shù)。(6)修改數(shù)據(jù)庫(kù)的結(jié)構(gòu)。以上這些情況都容易導(dǎo)致設(shè)計(jì)與數(shù)據(jù)不相容的錯(cuò)誤。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院273.文檔副作用所有的維護(hù)活動(dòng),都必須修改相應(yīng)的技術(shù)文檔,否則會(huì)導(dǎo)致文檔與程序功能不一致等錯(cuò)誤,使文檔不能反映軟件當(dāng)前的狀態(tài),對(duì)以后的維護(hù)將造成很大的困難。如果對(duì)可執(zhí)行軟件的修改沒有反映在文檔中,就會(huì)產(chǎn)生如下文檔副作用:(1)修改交互輸入的順序或格式,沒有正確的記入文檔中。(2)過(guò)時(shí)的文檔內(nèi)容、索引和文本可能造成沖突等。因此,必須在軟件交付之前對(duì)整個(gè)軟件配置進(jìn)行評(píng)審,以減少文檔副作用。事實(shí)上,有些維護(hù)請(qǐng)求并不要求改變軟件設(shè)計(jì)和源代碼,而是指出在用戶文檔中不夠明確的地方。在這種情況下,維護(hù)工作主要集中在文檔。在維護(hù)活動(dòng)中,應(yīng)該針對(duì)以上容易引起副作用的各個(gè)方面小心審查,以免將新的錯(cuò)誤帶入程序中。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院2818.5維護(hù)“老化代碼”對(duì)于那些使用超過(guò)15年的程序,這些程序通常稱為“老化代碼”,因?yàn)殚_發(fā)這些程序的技術(shù)人員一般不是現(xiàn)在的成員,而且沒有使用現(xiàn)代的開發(fā)方法,因此得到的數(shù)據(jù)結(jié)構(gòu)和程序的體系結(jié)構(gòu)都很差,文檔不完全,并且對(duì)曾經(jīng)做過(guò)的修改沒有完整的記錄。缺少詳細(xì)的文檔是維護(hù)老化代碼最大的困難。(1)在進(jìn)入“緊急維修”之前,必須研究程序的使用環(huán)境及有關(guān)資料,盡可能得到更多的背景信息。(2)力圖熟悉程序的所有控制流程。最初可以忽略某些編碼細(xì)節(jié)。如果設(shè)計(jì)資料存在,則可利用它們來(lái)幫助畫出結(jié)構(gòu)圖和高層流程圖。(3)評(píng)價(jià)現(xiàn)有文檔的可用性。若有幫助,可利用它們?cè)谠闯绦蚯鍐沃胁迦胱⑨?。?)充分利用交叉引用表、符號(hào)表及其他由編譯程序或匯編程序等提供的交叉引用信息。(5)必須非常謹(jǐn)慎地對(duì)程序進(jìn)行修改。如果可能,要尊重程序的風(fēng)格和格式,要說(shuō)明需要變更的程序指令。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院29(6)在刪除某些代碼時(shí),要確認(rèn)代碼確實(shí)不再使用。(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í)可以考慮再工程的方法。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院3018.6逆向工程和再工程逆向工程是從源代碼中抽取出來(lái)的設(shè)計(jì)信息。作為逆向工程的評(píng)價(jià),要求抽取出來(lái)的信息的抽象程度越高越好。下面是逆向工程中得到的信息抽象層次(從低到高):軟件過(guò)程的設(shè)計(jì)表示、程序和數(shù)據(jù)結(jié)構(gòu)信息、數(shù)據(jù)和控制流模型和實(shí)體-關(guān)系模型。軟件公司做逆向工程一般是自己的程序,有些是在多年以前開發(fā)出來(lái)的。這些程序沒有規(guī)格說(shuō)明,對(duì)它們的了解很模糊。因此,軟件的逆向工程是分析程序,力圖在比源代碼更高抽象層次上建立程序表示的過(guò)程。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院31再工程再工程(reengineering),它不僅能從已存在的程序中重新獲得設(shè)計(jì)信息,而且還能使用這些信息來(lái)改建或重構(gòu)現(xiàn)有的系統(tǒng),以改進(jìn)它的綜合質(zhì)量。一般軟件人員利用再工程重新實(shí)現(xiàn)已存在的程序,同時(shí)加進(jìn)新的功能或改善它的性能。每一個(gè)大的軟件開發(fā)機(jī)構(gòu)(或許多小的軟件開發(fā)單位)有著上百萬(wàn)行的老代碼,它們都是逆向工程或再工程的可能對(duì)象。但是由于某些程序并不頻繁使用而且不需要改變,而且逆向工程和再工程的工具還處于搖籃時(shí)代,僅能對(duì)有限種類的應(yīng)用執(zhí)行逆向工程或再工程,代價(jià)又十分高昂,因此對(duì)其庫(kù)中的每一個(gè)程序都做逆向工程或再工程是不現(xiàn)實(shí)的。為了執(zhí)行預(yù)防性維護(hù),軟件開發(fā)組織必須選擇在將來(lái)可能變更的程序,做好變更它們的準(zhǔn)備。逆向工程和再工程可用于執(zhí)行這種維護(hù)任務(wù)。下面首先討論預(yù)防性維護(hù),然后再進(jìn)一步討論逆向工程和再工程。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院3218.6.1預(yù)防性維護(hù)對(duì)于很早以前開發(fā)的程序,由于沒有科學(xué)的軟件工程做指導(dǎo),開發(fā)出來(lái)的程序結(jié)構(gòu)不好,可能一個(gè)模塊就有上千條語(yǔ)句,又沒有相應(yīng)的文檔。為了修改這類程序以適應(yīng)用戶新的或變更的需求,可以有以下幾種選擇:(1)通過(guò)反復(fù)地修改,以實(shí)現(xiàn)必要的變更。(2)盡可能多地掌握程序的內(nèi)部工作細(xì)節(jié),以便更有效地做出修改。(3)重新設(shè)計(jì)、重新編碼和測(cè)試那些需要變更的軟件部分,把軟件工程方法應(yīng)用于有修改的部分。(4)用CASE工具(逆向工程和再工程工具)對(duì)程序全部重新設(shè)計(jì)、重新編碼和測(cè)試。第一個(gè)選擇比較盲目,通常人們希望后三種選擇。選擇哪一種,要視具體情況而定。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院33預(yù)防性維護(hù)的對(duì)象(1)預(yù)先選定多年留待使用的程序。(2)當(dāng)前正在成功地使用著的程序。(3)可能在最近的將來(lái)要做重大修改或增強(qiáng)的程序。預(yù)防性維護(hù)方法是由Miller提出來(lái)的。他的想法是“結(jié)構(gòu)化翻新”,并將這個(gè)概念定義為“把今天的方法學(xué)應(yīng)用到昨天的系統(tǒng),以支持明天的需求”。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院34支持再工程理由(1)維護(hù)一行源代碼的代價(jià)可能14~40倍于初始開發(fā)該行源代碼的代價(jià)。(2)軟件體系結(jié)構(gòu)(程序及數(shù)據(jù)結(jié)構(gòu))的重新設(shè)計(jì)使用了現(xiàn)代設(shè)計(jì)概念,它對(duì)將來(lái)的維護(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ǔ)上建立起來(lái)。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院3518.6.2逆向工程的元素逆向工程可以從源代碼或目標(biāo)代碼中提取設(shè)計(jì)信息,其中抽象的層次、文檔的完全性、工具與人的交互程序,以及過(guò)程的方法都是重要的因素。逆向工程的抽象層次和用來(lái)產(chǎn)生它的工具提交的設(shè)計(jì)信息是原來(lái)設(shè)計(jì)的贗品,它是從源代碼或目標(biāo)代碼中提取出來(lái)的。理想情況是抽象層次盡可能地高,也就是說(shuō),逆向工程過(guò)程應(yīng)當(dāng)能夠?qū)С鲞^(guò)程性設(shè)計(jì)的表示(最低層抽象)、程序和數(shù)據(jù)結(jié)構(gòu)信息(低層抽象)、數(shù)據(jù)和控制流模型(中層抽象)和實(shí)體聯(lián)系模型(高層抽象)。隨著抽象層次的增加,可以給軟件工程師提供更多的信息,使得理解程序更容易。逆向工程的文檔完整性給出了一個(gè)抽象層次所能提供細(xì)節(jié)的詳細(xì)程度。在多數(shù)情況下,文檔完全性隨著抽象層次的增加而減少。例如,給出一個(gè)源代碼清單,可利用它得到比較完全的過(guò)程性設(shè)計(jì)表示,可能還能得到簡(jiǎn)單的數(shù)據(jù)流表示,但要得到完全的數(shù)據(jù)流圖則比較困難。文檔完整性的改善與人做逆向工程時(shí)所執(zhí)行的分析量成正比。交互性是指人與自動(dòng)工具“交互”建立有效的逆向工程過(guò)程的程度。在多數(shù)情況下,當(dāng)抽象層次增加時(shí),交互性也必須增加,而完全性則減少了。如果逆向工程過(guò)程的方向只有一條路,則從源代碼或目標(biāo)代碼中提取的所有信息都將提供給軟件工程師,他們可以用來(lái)進(jìn)行維護(hù)活動(dòng)。如果方向有兩條路,則信息將反饋給再工程工具,以便重新構(gòu)造或重新生成程序。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院3618.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)生與原來(lái)程序相同的功能,但質(zhì)量比原來(lái)程序高。作為重構(gòu)的一個(gè)簡(jiǎn)單實(shí)例,首先考慮Warnier的邏輯化簡(jiǎn)技術(shù)??梢杂盟鼈儊?lái)重構(gòu)程序邏輯,并生成符合結(jié)構(gòu)化程序設(shè)計(jì)原理的過(guò)程性描述。為了了解如何才能實(shí)行重構(gòu),首先研究化簡(jiǎn)技術(shù)。假定把一個(gè)逆向工程工具用在一個(gè)程序上,這個(gè)程序使用了數(shù)據(jù)項(xiàng)A,B,C,D,處理動(dòng)作(代碼段)V,W,X,Y,Z和(R的反)。表18-2(下頁(yè))顯示了四個(gè)數(shù)據(jù)項(xiàng)A,B,C,D真值表的表格表示及其生成的相應(yīng)處理動(dòng)作。2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院37表18-2真值表數(shù)據(jù)項(xiàng)操作ABCDVWXYZ0000√0001√0010√√0011√√0100√0101√0110√√0111√√1000√1001√1010√√√1011√√√1100√1101√1110√√1111√√2022/11/3廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院38邏輯化簡(jiǎn)可以用來(lái)作為維護(hù)現(xiàn)有的非結(jié)構(gòu)化的程序的再工程技術(shù)。許多老程序的控制流程十分混亂,既難理解又不好維護(hù)。Wa
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省廣州市海珠區(qū)2025-2026學(xué)年高一(上)期末物理模擬試卷(含答案)
- 北京市海淀區(qū)2025-2026學(xué)年高三上學(xué)期期末考試物理試卷(含答案)
- 安徽省合肥市科大附中2025-2026學(xué)年九年級(jí)(上)期末化學(xué)試卷(含答案)
- 2025-2026學(xué)年上海市浦東新區(qū)七年級(jí)(上)期末歷史試卷(含答案)
- 五下試卷及答案數(shù)學(xué)
- 網(wǎng)絡(luò)管理專業(yè)題庫(kù)及答案
- 2024年北師大版小學(xué)三年級(jí)上冊(cè)數(shù)學(xué)期末測(cè)試題及答案
- 酒吧策劃方案4篇
- 憑祥2022年事業(yè)單位招聘考試模擬試題及答案解析16
- 電氣更新改造技術(shù)要點(diǎn)
- 2025至2030中國(guó)輻射監(jiān)測(cè)儀表市場(chǎng)投資效益與企業(yè)經(jīng)營(yíng)發(fā)展分析報(bào)告
- 工程力學(xué)(本)2024國(guó)開機(jī)考答案
- 產(chǎn)品認(rèn)證標(biāo)志管理制度
- 廣州西關(guān)大屋介紹
- 基于機(jī)器視覺的SLM金屬3D打印設(shè)備視覺標(biāo)定技術(shù)研究
- CJ/T 192-2017內(nèi)襯不銹鋼復(fù)合鋼管
- GB/T 31907-2025服裝測(cè)量方法
- 消毒供應(yīng)中心清洗流程
- 買賣合同爭(zhēng)議仲裁應(yīng)訴答辯書范本
- 北京通州區(qū)事業(yè)單位公開招聘189人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年馬口鐵印鐵制罐項(xiàng)目可行性研究報(bào)告
評(píng)論
0/150
提交評(píng)論