![《軟件工程》課件第6章 軟件維護(hù)_第1頁(yè)](http://file4.renrendoc.com/view14/M03/2E/02/wKhkGWbQZa2ARyx5AACf3ytUw5U230.jpg)
![《軟件工程》課件第6章 軟件維護(hù)_第2頁(yè)](http://file4.renrendoc.com/view14/M03/2E/02/wKhkGWbQZa2ARyx5AACf3ytUw5U2302.jpg)
![《軟件工程》課件第6章 軟件維護(hù)_第3頁(yè)](http://file4.renrendoc.com/view14/M03/2E/02/wKhkGWbQZa2ARyx5AACf3ytUw5U2303.jpg)
![《軟件工程》課件第6章 軟件維護(hù)_第4頁(yè)](http://file4.renrendoc.com/view14/M03/2E/02/wKhkGWbQZa2ARyx5AACf3ytUw5U2304.jpg)
![《軟件工程》課件第6章 軟件維護(hù)_第5頁(yè)](http://file4.renrendoc.com/view14/M03/2E/02/wKhkGWbQZa2ARyx5AACf3ytUw5U2305.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章軟件維護(hù)6.1軟件維護(hù)的內(nèi)容6.2軟件維護(hù)的特點(diǎn)6.3軟件維護(hù)的實(shí)施6.4軟件可維護(hù)性6.5小結(jié)習(xí)題6.1軟件維護(hù)的內(nèi)容
1.校正性維護(hù) 在軟件交付使用后,由于軟件開(kāi)發(fā)過(guò)程中產(chǎn)生的錯(cuò)誤在測(cè)試中并沒(méi)有完全徹底地發(fā)現(xiàn),因此必然有一部分隱含的錯(cuò)誤被帶到維護(hù)階段來(lái)。這些隱含的錯(cuò)誤在某些特定的使用環(huán)境下會(huì)暴露出來(lái)。為了識(shí)別和糾正錯(cuò)誤,修改軟件性能上的缺陷,應(yīng)進(jìn)行確定和修改錯(cuò)誤的過(guò)程,這個(gè)過(guò)程就稱為校正性維護(hù),校正性維護(hù)占整個(gè)維護(hù)工作的21%。 2.適應(yīng)性維護(hù) 隨著計(jì)算機(jī)的飛速發(fā)展,計(jì)算機(jī)硬件和軟件環(huán)境在不斷發(fā)生變化,數(shù)據(jù)環(huán)境也在不斷發(fā)生變化。為了使應(yīng)用軟件適應(yīng)這種變化而修改軟件的過(guò)程稱為適應(yīng)性維護(hù)。例如,某個(gè)應(yīng)用軟件原來(lái)是在DOS環(huán)境下運(yùn)行的,現(xiàn)在要把它移植到Windows環(huán)境下來(lái)運(yùn)行;某個(gè)應(yīng)用軟件原來(lái)是在一種數(shù)據(jù)庫(kù)環(huán)境下工作的,現(xiàn)在要改到另一種安全性較高的數(shù)據(jù)庫(kù)環(huán)境下工作,這些變動(dòng)都需要對(duì)相應(yīng)的軟件作修改。這種維護(hù)活動(dòng)要占整個(gè)維護(hù)活動(dòng)的25%。 3.完善性維護(hù) 在軟件漫長(zhǎng)的運(yùn)行時(shí)期中,用戶往往會(huì)對(duì)軟件提出新的功能要求與性能要求。這是因?yàn)橛脩舻臉I(yè)務(wù)會(huì)發(fā)生變化,組織機(jī)構(gòu)也會(huì)發(fā)生變化。為了適應(yīng)這些變化,應(yīng)用軟件原來(lái)的功能和性能需要擴(kuò)充和增強(qiáng)。這種增加軟件功能、增強(qiáng)軟件性能和提高軟件運(yùn)行效率而進(jìn)行的維護(hù)活動(dòng)稱為完善性維護(hù)。例如,軟件原來(lái)的查詢響應(yīng)速度較慢,要提高響應(yīng)速度;軟件原來(lái)沒(méi)有幫助信息,使用不方便,現(xiàn)在要增加幫助信息。這種維護(hù)性活動(dòng)數(shù)量較大,占整個(gè)維護(hù)活動(dòng)的50%。 4.預(yù)防性維護(hù) 為了提高軟件的可維護(hù)性和可靠性而對(duì)軟件進(jìn)行的修改稱為預(yù)防性維護(hù)。這是為以后進(jìn)一步的運(yùn)行和維護(hù)打好基礎(chǔ)。這需要采用先進(jìn)的軟件工程方法對(duì)需要維護(hù)的軟件或軟件中的某一部分進(jìn)行設(shè)計(jì)、編碼和測(cè)試。在整個(gè)維護(hù)活動(dòng)中,預(yù)防性維護(hù)占很小的比例,只占4%。
6.2軟件維護(hù)的特點(diǎn) 6.2.1非結(jié)構(gòu)化維護(hù)和結(jié)構(gòu)化維護(hù) 軟件的開(kāi)發(fā)過(guò)程對(duì)軟件的維護(hù)有較大的影響。若不采用軟件工程的方法開(kāi)發(fā)軟件,則軟件只有程序而無(wú)文檔,維護(hù)工作非常困難,這是一種非結(jié)構(gòu)化的維護(hù)。若采用軟件工程的方法開(kāi)發(fā)軟件,則各階段都有相應(yīng)的文檔,容易進(jìn)行維護(hù)工作,這是一種結(jié)構(gòu)化的維護(hù)。 1.非結(jié)構(gòu)化維護(hù) 因?yàn)橹挥性闯绦?,而文檔很少或沒(méi)有文檔,維護(hù)活動(dòng)只能從閱讀、理解和分析源程序開(kāi)始。由于沒(méi)有需求說(shuō)明文檔和設(shè)計(jì)文檔,只有通過(guò)閱讀源程序來(lái)了解系統(tǒng)功能、軟件結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口和設(shè)計(jì)約束等。這樣做,一是非常困難;二是難于搞清楚這些問(wèn)題;三是常常誤解這些問(wèn)題。要想搞清楚,需花費(fèi)大量的人力、物力,最終對(duì)源程序修改的結(jié)果是難以估量的,因?yàn)闆](méi)有測(cè)試文檔,不可能進(jìn)行回歸測(cè)試,很難保證程序的正確性。這就是軟件工程時(shí)代以前進(jìn)行維護(hù)的情況。 2.結(jié)構(gòu)化維護(hù) 用軟件工程思想開(kāi)發(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ō)明開(kāi)始,搞清楚軟件功能、性能上的改變;對(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è)試;最后,把修改后的軟件再次交付使用。這對(duì)于減少精力、減少花費(fèi)和提高軟件維護(hù)效率有很大的作用。 6.2.2維護(hù)的困難性 軟件維護(hù)的困難性主要是由于軟件需求分析和開(kāi)發(fā)方法的缺陷造成的。軟件生存周期中的開(kāi)發(fā)階段沒(méi)有嚴(yán)格而又科學(xué)的管理和規(guī)劃,就會(huì)引起軟件運(yùn)行時(shí)的維護(hù)困難。這種困難表現(xiàn)在如下幾個(gè)方面:
(1)讀懂別人的程序是困難的。要修改別人編寫(xiě)的程序,首先要看懂、理解別人的程序。而理解別人的程序是非常困難的,這種困難程度隨著程序文檔的減少而很快的增加,如果沒(méi)有相應(yīng)的文檔,困難就達(dá)到非常嚴(yán)重的地步。一般程序員都有這樣的體會(huì),修改別人的程序,還不如自己重新編程序。 (2)文檔的不一致性。文檔的不一致性是維護(hù)工作困難的又一因素。它會(huì)導(dǎo)致維護(hù)人員不知所措,不知根據(jù)什么進(jìn)行修改。這種不一致表現(xiàn)在各種文檔之間的不一致以及文檔與程序之間的不一致。這種不一致是由于開(kāi)發(fā)過(guò)程中文檔管理不嚴(yán)所造成的。在開(kāi)發(fā)中經(jīng)常會(huì)出現(xiàn)修改程序卻遺忘了修改與其相關(guān)的文檔,或某一文檔做了修改,卻沒(méi)有修改與其相關(guān)的另一文檔這類現(xiàn)象。要解決文檔不一致性,就要加強(qiáng)開(kāi)發(fā)工作中的文檔版本管理工作。
(3)軟件開(kāi)發(fā)和軟件維護(hù)在人員和時(shí)間上的差異。如果軟件維護(hù)工作由該軟件的開(kāi)發(fā)人員來(lái)進(jìn)行,則維護(hù)工作就變得容易,因?yàn)樗麄兪煜ぼ浖墓δ?、結(jié)構(gòu)等。但通常開(kāi)發(fā)人員與維護(hù)人員是不同的,這種差異會(huì)導(dǎo)致維護(hù)的困難。由于維護(hù)階段持續(xù)時(shí)間很長(zhǎng),正在運(yùn)行的軟件可能是十幾、20年前開(kāi)發(fā)的,開(kāi)發(fā)工具、方法、技術(shù)與當(dāng)前的工具、方法和技術(shù)差異很大,這又是維護(hù)困難的另一因素。
(4)軟件維護(hù)不是一項(xiàng)吸引人的工作。由于維護(hù)工作的困難性,維護(hù)工作經(jīng)常遭受挫折,而且很難出成果,不像軟件開(kāi)發(fā)工作那樣吸引人。 6.2.3軟件維護(hù)的費(fèi)用 軟件維護(hù)的費(fèi)用在總費(fèi)用中的比重是在不斷增加的,它在1970年占35%~40%,1980年上升到40%~60%,1990年上升到70%~80%。 軟件維護(hù)費(fèi)用不斷上升,這只是軟件維護(hù)有形的代價(jià)。另外還有無(wú)形的代價(jià),即要占用更多的資源。由于大量軟件的維護(hù)活動(dòng)要使用較多的硬件、軟件和軟件工程師等資源,這樣一來(lái),投入新的軟件開(kāi)發(fā)的資源就因不足而受到影響。由于維護(hù)時(shí)的改動(dòng),在軟件中引入了潛在的故障,從而降低了軟件的質(zhì)量。
軟件維護(hù)費(fèi)用增加的主要原因是軟件維護(hù)的生產(chǎn)率非常低。例如,在1976年美國(guó)的飛行控制軟件每條指令的開(kāi)發(fā)成本是75美元,而維護(hù)成本是每條指令大約4000美元,也就是說(shuō)生產(chǎn)率下降了50倍。 用于軟件維護(hù)工作的活動(dòng)可分為生產(chǎn)性活動(dòng)和非生產(chǎn)性活動(dòng)兩種。生產(chǎn)性活動(dòng)包括分析評(píng)價(jià)、修改設(shè)計(jì)和編寫(xiě)程序代碼等。非生產(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增加表示軟件因未用軟件工程方法開(kāi)發(fā),從而使得軟件為非結(jié)構(gòu)化設(shè)計(jì),文檔缺少,程序復(fù)雜性高;D減小表示維護(hù)人員不是原來(lái)的開(kāi)發(fā)人員,對(duì)軟件熟悉程度低,重新理解軟件要花費(fèi)很多時(shí)間。6.3軟件維護(hù)的實(shí)施 6.3.1維護(hù)的組織 為了有效地進(jìn)行軟件維護(hù),應(yīng)事先就開(kāi)始組織工作,建立維護(hù)機(jī)構(gòu)。這種維護(hù)機(jī)構(gòu)通常以維護(hù)小組形式出現(xiàn)。維護(hù)小組分為臨時(shí)維護(hù)小組和長(zhǎng)期維護(hù)小組。
1.臨時(shí)維護(hù)小組 臨時(shí)維護(hù)小組是非正式的機(jī)構(gòu),它執(zhí)行一些特殊的或臨時(shí)的維護(hù)任務(wù)。例如,對(duì)程序排錯(cuò)的檢查,檢查完善性維護(hù)的設(shè)計(jì)和進(jìn)行質(zhì)量控制的復(fù)審等。臨時(shí)維護(hù)小組采用“同事復(fù)審”或“同行復(fù)審”等方法來(lái)提高維護(hù)工作的效率。 2.長(zhǎng)期維護(hù)小組 對(duì)長(zhǎng)期運(yùn)行的復(fù)雜系統(tǒng)需要一個(gè)穩(wěn)定的維護(hù)小組。維護(hù)小組由以下成員組成。
1)組長(zhǎng) 維護(hù)小組組長(zhǎng)是該小組的技術(shù)負(fù)責(zé)人,負(fù)責(zé)向上級(jí)主管部門報(bào)告維護(hù)工作。組長(zhǎng)應(yīng)是領(lǐng)域。一個(gè)有經(jīng)驗(yàn)的系統(tǒng)分析員,具有一定的管理經(jīng)驗(yàn),熟悉系統(tǒng)的應(yīng)用
2)副組長(zhǎng) 副組長(zhǎng)是組長(zhǎng)的助手。在組長(zhǎng)缺席時(shí)完成組長(zhǎng)的工作,具有與組長(zhǎng)相同的業(yè)務(wù)水平和工作經(jīng)驗(yàn)。副組長(zhǎng)還執(zhí)行同開(kāi)發(fā)部門或其他維護(hù)小組聯(lián)系的任務(wù)。在系統(tǒng)開(kāi)發(fā)階段,收集與維護(hù)有關(guān)的信息;在維護(hù)階段,他同開(kāi)發(fā)者繼續(xù)保持聯(lián)系,向他們傳送程序運(yùn)行的反饋信息。因?yàn)榇蟛糠志S護(hù)要求是由用戶提出的,所以副組長(zhǎng)同用戶保持密切聯(lián)系也是非常重要的。
3)維護(hù)負(fù)責(zé)人 維護(hù)負(fù)責(zé)人是維護(hù)小組的行政負(fù)責(zé)人。他通常管理幾個(gè)維護(hù)小組的人事工作,負(fù)責(zé)維護(hù)小組成員的人事管理工作。 6.3.2維護(hù)的流程 軟件維護(hù)的流程如下:
(1)制定維護(hù)申請(qǐng)報(bào)告。
(2)審查申請(qǐng)報(bào)告并批準(zhǔn)。
(3)進(jìn)行維護(hù)并做詳細(xì)記錄。
(4)復(fù)審。 1.制定維護(hù)申請(qǐng)報(bào)告 所有軟件維護(hù)申請(qǐng)報(bào)告應(yīng)按規(guī)定的方式提出。該報(bào)告也稱為軟件問(wèn)題報(bào)告。它是維護(hù)階段的一種文檔,由申請(qǐng)維護(hù)的用戶填寫(xiě)。當(dāng)遇到一個(gè)錯(cuò)誤時(shí),用戶必須完整地說(shuō)明錯(cuò)誤產(chǎn)生的情況,包括輸入數(shù)據(jù)、錯(cuò)誤清單、源程序清單以及其他有關(guān)材料,即導(dǎo)致該錯(cuò)誤的環(huán)境的完整描述。對(duì)于適應(yīng)性或完善性的維護(hù)要求,要提交一份簡(jiǎn)要的維護(hù)規(guī)格說(shuō)明。 維護(hù)申請(qǐng)報(bào)告是一種由用戶產(chǎn)生的文檔,是用作計(jì)劃維護(hù)任務(wù)的基礎(chǔ)。在軟件維護(hù)組織內(nèi)部還要制定一份軟件修改報(bào)告,該報(bào)告是維護(hù)階段的另一種文檔,用來(lái)指出: (1)為滿足軟件問(wèn)題報(bào)告實(shí)際要求的工作量。
(2)要求修改的性質(zhì)。
(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)審工作很重要,通過(guò)評(píng)審回答要不要維護(hù),從而可以避免盲目的維護(hù)。
2.維護(hù)過(guò)程 一個(gè)維護(hù)申請(qǐng)?zhí)岢鲋?,?jīng)評(píng)審需要維護(hù),則按下列過(guò)程實(shí)施維護(hù):
(1)首先確定要進(jìn)行維護(hù)的類型。有許多情況,用戶可以把一個(gè)請(qǐng)求看作校正性維護(hù),而軟件開(kāi)發(fā)者可以把這個(gè)請(qǐng)求看作適應(yīng)性或完善性維護(hù),此時(shí),對(duì)不同觀點(diǎn)就要協(xié)商解決。
(2)對(duì)校正性維護(hù)從評(píng)價(jià)錯(cuò)誤的嚴(yán)重性開(kāi)始。如果存在一個(gè)嚴(yán)重的錯(cuò)誤,例如一個(gè)系統(tǒng)的重要功能不能執(zhí)行,則由管理者組織有關(guān)人員立即開(kāi)始分析問(wèn)題。如果錯(cuò)誤并不嚴(yán)重,則校正性維護(hù)與軟件其他任務(wù)一起進(jìn)行,統(tǒng)一安排,按計(jì)劃進(jìn)行維護(hù)工作。甚至?xí)羞@樣一種情況,申請(qǐng)是錯(cuò)誤的。因此經(jīng)審查后發(fā)現(xiàn)并不需要修改軟件。 (3)對(duì)適應(yīng)性和完善性維護(hù)。如同它是另一個(gè)開(kāi)發(fā)工作一樣,建立每個(gè)請(qǐng)求的優(yōu)先權(quán),安排所要求的工作。若設(shè)置一個(gè)極高的優(yōu)先權(quán),當(dāng)然也就意味著要立即開(kāi)始此項(xiàng)維護(hù)工作了。
(4)實(shí)施維護(hù)任務(wù)。不管維護(hù)類型如何,大體上要開(kāi)展相同的技術(shù)工作。這些工作包括修改軟件設(shè)計(jì)、必要的代碼修改、單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試以及復(fù)審,每種維護(hù)類型的側(cè)重點(diǎn)不一樣。
(5)“救火”維護(hù)。存在著并不完全適合上面所述的經(jīng)過(guò)仔細(xì)考慮的維護(hù)申請(qǐng),這時(shí)申請(qǐng)的維護(hù)稱為“救火”維護(hù),在發(fā)生重大的軟件問(wèn)題時(shí),就會(huì)出現(xiàn)這種情況。例如,一個(gè)造紙廠的流程控制系統(tǒng)出現(xiàn)一個(gè)使壓出的紙?jiān)匠鼋ㄖ锏墓收?,這時(shí)要立即組織有關(guān)人員去“救火”,必須立即解決問(wèn)題。顯然,如果一個(gè)軟件開(kāi)發(fā)機(jī)構(gòu)經(jīng)常“救火”,就必須要認(rèn)真檢查一下,該機(jī)構(gòu)的管理和技術(shù)存在什么重大問(wèn)題。 3.維護(hù)的復(fù)審 在維護(hù)任務(wù)完成后,要對(duì)維護(hù)任務(wù)進(jìn)行復(fù)審。進(jìn)行復(fù)審時(shí)要回答下列問(wèn)題:
(1)給出當(dāng)前情況,即設(shè)計(jì)、代碼和測(cè)試的哪些方面已經(jīng)完成?
(2)各種維護(hù)資源已經(jīng)用了哪些?還有哪些未用?
(3)對(duì)于這個(gè)工作,主要的、次要的障礙是什么?
(4)復(fù)審對(duì)維護(hù)工作能否順利進(jìn)行有重大影響,對(duì)一個(gè)軟件機(jī)構(gòu)來(lái)說(shuō)也是有效的管理工作的一部分。 6.3.3維護(hù)技術(shù) 有兩類維護(hù)技術(shù),它們是面向維護(hù)的技術(shù)和維護(hù)支援技術(shù)。面向維護(hù)的技術(shù)是在軟件開(kāi)發(fā)階段用來(lái)減少錯(cuò)誤、提高軟件可維護(hù)性的技術(shù)。維護(hù)支援技術(shù)是在軟件維護(hù)階段用來(lái)提高維護(hù)作業(yè)的效率和質(zhì)量的技術(shù)。
1.面向維護(hù)的技術(shù) 面向維護(hù)的技術(shù)涉及軟件開(kāi)發(fā)的所有階段。 在需求分析階段,對(duì)用戶的需求進(jìn)行嚴(yán)格的分析定義,使之沒(méi)有矛盾和易于理解,可以減少軟件中的錯(cuò)誤。例如美國(guó)密執(zhí)安大學(xué)的ISDOS系統(tǒng)就是需求分析階段使用的一種分析與文檔化工具,可以用它來(lái)檢查需求說(shuō)明書(shū)的一致性和完備性。
在設(shè)計(jì)階段,劃分模塊時(shí)充分考慮將來(lái)改動(dòng)或擴(kuò)充的可能性。使用結(jié)構(gòu)化分析和結(jié)構(gòu)化設(shè)計(jì)方法,采用容易變更的、不依賴于特定硬件和特定操作系統(tǒng)的設(shè)計(jì)。 在編碼階段,采用靈活的數(shù)據(jù)結(jié)構(gòu),使程序相對(duì)獨(dú)立于數(shù)據(jù)的物理結(jié)構(gòu),養(yǎng)成良好的程序設(shè)計(jì)風(fēng)格。 在測(cè)試階段,盡可能多的發(fā)現(xiàn)錯(cuò)誤,保存測(cè)試用例和測(cè)試數(shù)據(jù)等。 以上這些技術(shù)方法都能減少軟件錯(cuò)誤,提高軟件的可維護(hù)性。 2.維護(hù)支援技術(shù) 維護(hù)支援技術(shù)包括下列各方面的技術(shù):
(1)信息收集。
(2)錯(cuò)誤原因分析。
(3)軟件分析與理解。
(4)維護(hù)方案評(píng)價(jià)。
(5)代碼與文檔修改。
(6)修改后的確認(rèn)。
(7)遠(yuǎn)距離的維護(hù)。 6.3.4維護(hù)的副作用 維護(hù)的目的是為了延長(zhǎng)軟件的壽命并讓其創(chuàng)造更多的價(jià)值,經(jīng)過(guò)一段時(shí)間的維護(hù),軟件中的錯(cuò)誤減少了,功能增強(qiáng)了。但修改軟件是危險(xiǎn)的,每修改一次,潛伏的錯(cuò)誤就可能增加一分。這種因修改軟件而造成的錯(cuò)誤或其他不希望出現(xiàn)的情況稱為維護(hù)的副作用。維護(hù)的副作用有編碼副作用、數(shù)據(jù)副作用和文檔副作用三種。
1.編碼副作用 在使用程序設(shè)計(jì)語(yǔ)言修改源代碼時(shí)可能引入如下錯(cuò)誤:
(1)刪除或修改一個(gè)子程序、一個(gè)標(biāo)號(hào)和一個(gè)標(biāo)識(shí)符。 (2)改變程序代碼的時(shí)序關(guān)系,改變占用存儲(chǔ)的大小,改變邏輯運(yùn)算符。
(3)修改文件的打開(kāi)或關(guān)閉。
(4)改進(jìn)程序的執(zhí)行效率。
(5)把設(shè)計(jì)上的改變翻譯成代碼的改變。
(6)為邊界條件的邏輯測(cè)試做出改變。 以上這些變動(dòng)都容易引入錯(cuò)誤,要特別小心、仔細(xì)修改,避免引入新的錯(cuò)誤。
2.數(shù)據(jù)副作用 在修改數(shù)據(jù)結(jié)構(gòu)時(shí),有可能造成軟件設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)不匹配,因而導(dǎo)致軟件錯(cuò)誤。數(shù)據(jù)副作用是修改軟件信息結(jié)構(gòu)導(dǎo)致的結(jié)果,有以下幾種:
(1)重新定義局部或全局的常量,重新定義記錄或文件格式。
(2)增加或減少一個(gè)數(shù)組或高層數(shù)據(jù)結(jié)構(gòu)的大小。
(3)修改全局或公共數(shù)據(jù)。
(4)重新初始化控制標(biāo)志或指針。
(5)重新排列輸入/輸出或子程序的參數(shù)。 以上這些情況都容易導(dǎo)致設(shè)計(jì)與數(shù)據(jù)不相容的錯(cuò)誤。數(shù)據(jù)副作用可以通過(guò)詳細(xì)的設(shè)計(jì)文檔加以控制,在此文檔中描述了一種交叉作用,把數(shù)據(jù)元素、記錄、文件和其他結(jié)構(gòu)聯(lián)系起來(lái)。 3.文檔副作用 對(duì)數(shù)據(jù)流、軟件結(jié)構(gòu)、模塊邏輯或任何其他有關(guān)特性進(jìn)行修改時(shí),必須對(duì)相關(guān)技術(shù)文檔進(jìn)行相應(yīng)修改。否則會(huì)導(dǎo)致文檔與程序功能不匹配、缺省條件改變和新錯(cuò)誤信息不正確等錯(cuò)誤,使文檔不能反映軟件當(dāng)前的狀態(tài)。如果對(duì)可執(zhí)行軟件的修改沒(méi)有反映在文檔中,就會(huì)產(chǎn)生如下文檔副作用:
(1)修改交互輸入的順序或格式,沒(méi)有正確的記入文檔中。
(2)過(guò)時(shí)的文檔內(nèi)容、索引和文本可能造成沖突等。
因此,必須在軟件交付之前對(duì)整個(gè)軟件配置進(jìn)行評(píng)審,以減少文檔副作用。事實(shí)上,有些維護(hù)請(qǐng)求并不要求改變軟件設(shè)計(jì)和源代碼,而是指出在用戶文檔中不夠明確的地方。在這種情況下,維護(hù)工作主要集中在文檔。 為了控制因修改而引起的副作用,要做到:按模塊把修改分組;自頂向下的安排被修改模塊的順序;每次修改一個(gè)模塊。 對(duì)每個(gè)修改了的模塊,在安排修改下一個(gè)模塊之前要確定這個(gè)修改的副作用??墒褂媒徊嬉帽?、存儲(chǔ)映像表和執(zhí)行流程跟蹤等。6.4軟件可維護(hù)性 6.4.1可維護(hù)性定義 軟件可維護(hù)性是指軟件能夠被理解、校正、適應(yīng)及增強(qiáng)功能的容易程度。 軟件的可維護(hù)性、可使用性和可靠性是衡量軟件質(zhì)量的幾個(gè)主要特性,也是用戶十分關(guān)心的幾個(gè)問(wèn)題。但是影響軟件質(zhì)量的這些主要因素,目前還沒(méi)有對(duì)它們普遍適用的定量度量的方法,就其概念和內(nèi)涵來(lái)說(shuō)則是很明確的。
軟件的可維護(hù)性是軟件開(kāi)發(fā)階段的關(guān)鍵目標(biāo)。影響軟件可維護(hù)性的因素較多,設(shè)計(jì)、編碼及測(cè)試中的疏忽和低劣的軟件配置,缺少文檔等都對(duì)軟件的可維護(hù)性產(chǎn)生不良影響。軟件可維護(hù)性可用下面7個(gè)質(zhì)量特性來(lái)衡量,即可理解性、可測(cè)試性、可修改性、可靠性、可移植性、可使用性和效率。對(duì)于不同類型的維護(hù),這7種特性的側(cè)重點(diǎn)也不相同。這些質(zhì)量特性通常體現(xiàn)在軟件產(chǎn)品的許多方面。為使每一個(gè)質(zhì)量特性都達(dá)到預(yù)定的要求,需要在軟件開(kāi)發(fā)的各個(gè)階段采取相應(yīng)的措施加以保證,即這些質(zhì)量要求要滲透到各開(kāi)發(fā)階段的各個(gè)步驟中。因此,軟件的可維護(hù)性是產(chǎn)品投入運(yùn)行以前各階段針對(duì)上述各質(zhì)量特性要求進(jìn)行開(kāi)發(fā)的最終結(jié)果。 6.4.2可維護(hù)性的度量 目前有若干對(duì)軟件可維護(hù)性進(jìn)行綜合度量的方法,但要對(duì)可維護(hù)性作出定量度量還是困難的。還沒(méi)有一種方法能夠使用計(jì)算機(jī)對(duì)軟件的可維護(hù)性進(jìn)行綜合性的定量評(píng)價(jià)。下面是度量一個(gè)可維護(hù)的軟件的7種特性時(shí)常采用的方法,即質(zhì)量檢查表、質(zhì)量測(cè)試和質(zhì)量標(biāo)準(zhǔn)。 質(zhì)量檢查表是用于測(cè)試程序中某些質(zhì)量特性是否存在的一個(gè)問(wèn)題清單。檢查者對(duì)檢查表上的每一個(gè)問(wèn)題,依據(jù)自己的定性判斷,回答“是”或者“否”。質(zhì)量測(cè)試與質(zhì)量標(biāo)準(zhǔn)則用于定量分析和評(píng)價(jià)程序的質(zhì)量。由于許多質(zhì)量特性是相互抵觸的,要考慮幾種不同的度量標(biāo)準(zhǔn)去度量不同的質(zhì)量特性。 6.4.3提高可維護(hù)性的方法 怎樣才能得到可維護(hù)性高的程序呢?可從下面5個(gè)方面來(lái)解決這個(gè)問(wèn)題:
(1)建立明確的軟件質(zhì)量目標(biāo)。
(2)利用先進(jìn)的軟件開(kāi)發(fā)技術(shù)和工具。
(3)建立明確的質(zhì)量保證工作。
(4)選擇可維護(hù)的程序設(shè)計(jì)語(yǔ)言。
(5)改進(jìn)程序文檔。
1.建立明確的軟件質(zhì)量目標(biāo) 如果要程序滿足可維護(hù)性的7種特性的全部要求,那是不現(xiàn)實(shí)的。實(shí)際上,有一些可維護(hù)特性是相互促進(jìn)的,如可理解性和可測(cè)試性,可理解性和可修改性;而另一些則是相互矛盾的,如效率和可移植性,效率和可修改性等。為保證程序的可維護(hù)性,應(yīng)該在一定程度上滿足可維護(hù)性的各個(gè)特性,但各個(gè)特性的重要性隨著程序用途的不同或計(jì)算機(jī)環(huán)境的不同而改變。對(duì)編譯程序來(lái)說(shuō),效率和可移植性是主要的;對(duì)信息管理系統(tǒng)來(lái)說(shuō),可使用性和可修改性可能是主要的。通過(guò)大量實(shí)驗(yàn)證明,強(qiáng)調(diào)效率的程序包含的錯(cuò)誤比強(qiáng)調(diào)簡(jiǎn)明性的程序所包含的錯(cuò)誤要高出10倍。因此明確軟件所追求的質(zhì)量目標(biāo)對(duì)軟件的質(zhì)量和生存周期的費(fèi)用將產(chǎn)生很大的影響。 2.使用先進(jìn)的軟件開(kāi)發(fā)技術(shù)和工具 利用先進(jìn)的軟件開(kāi)發(fā)技術(shù)能大大提高軟件質(zhì)量和減少軟件費(fèi)用。例如,面向?qū)ο蟮能浖_(kāi)發(fā)方法就是一個(gè)非常實(shí)用而強(qiáng)有力的軟件開(kāi)發(fā)方法。 面向?qū)ο蠓椒ㄅc人類習(xí)慣的思維方法一致,用現(xiàn)實(shí)世界的概念來(lái)思考問(wèn)題,從而能自然地解決問(wèn)題。它強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的概念而不強(qiáng)調(diào)算法,它鼓勵(lì)開(kāi)發(fā)者在開(kāi)發(fā)過(guò)程中都使用應(yīng)用領(lǐng)域的概念去思考,開(kāi)發(fā)過(guò)程自始至終都圍繞著建立問(wèn)題領(lǐng)域的對(duì)象模型來(lái)進(jìn)行。按照人們習(xí)慣的思維方式建立起問(wèn)題領(lǐng)域的模型,模擬客觀世界,使描述問(wèn)題的問(wèn)題空間和描述解法的解空間在結(jié)構(gòu)上盡可能一致,開(kāi)發(fā)出盡可能直觀、自然的表現(xiàn)求解方法的軟件系統(tǒng)。
面向?qū)ο蠓椒ㄩ_(kāi)發(fā)出的軟件的穩(wěn)定性好。傳統(tǒng)方法開(kāi)發(fā)出來(lái)的軟件系統(tǒng)的結(jié)構(gòu)緊密依賴于系統(tǒng)所需要完成的功能。當(dāng)功能需求發(fā)生變化時(shí),將引起軟件結(jié)構(gòu)的整體修改,因而這樣的軟件結(jié)構(gòu)是不穩(wěn)定的。面向?qū)ο蠓椒ㄒ詫?duì)象為中心構(gòu)造軟件系統(tǒng),用對(duì)象模擬問(wèn)題領(lǐng)域中的實(shí)體,以對(duì)象間的聯(lián)系刻畫(huà)實(shí)體間的聯(lián)系,根據(jù)問(wèn)題領(lǐng)域中的模型來(lái)建立軟件系統(tǒng)的結(jié)構(gòu)。由于客觀世界的實(shí)體及其之間的聯(lián)系相對(duì)穩(wěn)定,因此建立的模型也相對(duì)穩(wěn)定。當(dāng)系統(tǒng)的功能需求發(fā)生變化時(shí),并不會(huì)引起軟件結(jié)構(gòu)的整體變化,往往只需要做一些局部性的修改。所以面向?qū)ο蠓椒?gòu)造的軟件系統(tǒng)也比較穩(wěn)定。
面向?qū)ο蠓椒?gòu)造的軟件可重用性好。對(duì)象所固有的封裝性和信息隱蔽機(jī)制,使得對(duì)象內(nèi)部的實(shí)現(xiàn)和外界隔離,具有較強(qiáng)的獨(dú)立性。因此對(duì)象類提供了比較理想的模塊化機(jī)制和比較理想的可重用的軟件成分。 由于對(duì)象類是理想的模塊機(jī)制,它的獨(dú)立性好,修改一個(gè)類通常很少涉及到其他類。若只修改一個(gè)類的內(nèi)部實(shí)現(xiàn)部分而不修改該類的對(duì)外接口,則可以完全不影響軟件的其他部分。由于面向?qū)ο蟮能浖夹g(shù)符合人們習(xí)慣的思維方式,用這種方法所建立的軟件系統(tǒng)的結(jié)構(gòu)與問(wèn)題空間的結(jié)構(gòu)基本一致,因此面向?qū)ο蟮能浖到y(tǒng)比較容易理解。
對(duì)面向?qū)ο蟮能浖到y(tǒng)進(jìn)行維護(hù),主要通過(guò)對(duì)從已有類派生出一些新類的維護(hù)來(lái)實(shí)現(xiàn)。因此,維護(hù)時(shí)的測(cè)試和調(diào)試工作也主要圍繞這些新派生出來(lái)的類進(jìn)行。類是獨(dú)立性很強(qiáng)的模塊,向類的實(shí)例發(fā)消息即可運(yùn)行它,觀察它是否能正確的完成要求它做的工作。對(duì)類的測(cè)試通常比較容易實(shí)現(xiàn),如果發(fā)現(xiàn)錯(cuò)誤也往往集中在類的內(nèi)部,比較容易調(diào)試。 總之,面向?qū)ο蠓椒ㄩ_(kāi)發(fā)出來(lái)的軟件系統(tǒng),穩(wěn)定性好、容易修改、容易理解,易于測(cè)試和調(diào)試,因而可維護(hù)性好。 3.建立明確的質(zhì)量保證 質(zhì)量保證是指為提高軟件質(zhì)量所做的各種檢查工作。質(zhì)量保證檢查是非常有效的方法,不僅在軟件開(kāi)發(fā)的各階段中得到了廣泛應(yīng)用,而且在軟件維護(hù)中也是一個(gè)非常重要的工具。為了保證可維護(hù)性,以下4類檢查是非常有用的。
1)在檢查點(diǎn)進(jìn)行檢查 檢查點(diǎn)是指軟件開(kāi)發(fā)的每一個(gè)階段的終點(diǎn)。在檢查點(diǎn)進(jìn)行檢查的目標(biāo)是證實(shí)已開(kāi)發(fā)的軟件是滿足設(shè)計(jì)要求的。在不同的檢查點(diǎn)檢查的內(nèi)容是不同的。例如,在設(shè)計(jì)階段檢查的重點(diǎn)是可理解性、可修改性和可測(cè)試性,可理解性檢查的重點(diǎn)是檢查設(shè)計(jì)的復(fù)雜性。 2)驗(yàn)收檢查 驗(yàn)收檢查是一個(gè)特殊的檢查點(diǎn)的檢查,它是把軟件從開(kāi)發(fā)轉(zhuǎn)移到維護(hù)的最后一次檢查。它對(duì)減少維護(hù)費(fèi)用,提高軟件質(zhì)量是非常重要的。驗(yàn)收檢查實(shí)際上是我們已講過(guò)的驗(yàn)收測(cè)試的一部分,只不過(guò)驗(yàn)收檢查是從維護(hù)角度提出驗(yàn)收條件或標(biāo)準(zhǔn)的。
3)周期性的維護(hù)檢查 上述兩種軟件檢查適用于新開(kāi)發(fā)的軟件。對(duì)已運(yùn)行的軟件應(yīng)進(jìn)行周期性的維護(hù)檢查。為了改正在開(kāi)發(fā)階段未發(fā)現(xiàn)的錯(cuò)誤,使軟件適應(yīng)新的計(jì)算機(jī)環(huán)境并滿足變化的用戶需求,對(duì)正在使用的軟件進(jìn)行改變是不可避免的。
改變程序可能引入新錯(cuò)誤并破壞原來(lái)程序概念的完整性。為了保證軟件質(zhì)量應(yīng)該對(duì)正在使用的軟件進(jìn)行周期性維護(hù)檢查。實(shí)際上周期性維護(hù)檢查是開(kāi)發(fā)階段對(duì)檢查點(diǎn)進(jìn)行檢查的繼續(xù),采用的檢查方法和檢查內(nèi)容都是相同的。把多次維護(hù)檢查結(jié)果同以前進(jìn)行的驗(yàn)收檢查結(jié)果以及檢查點(diǎn)檢查結(jié)果做比較,對(duì)檢查結(jié)果的任何改變都要進(jìn)行分析,找出原因。 4)對(duì)軟件包的檢查 上述檢查方法適用于組織內(nèi)部開(kāi)發(fā)和維護(hù)的軟件或?qū)樯贁?shù)幾個(gè)用戶設(shè)計(jì)的軟件,很難適用于享有多個(gè)用戶的通用軟件包。因?yàn)檐浖鼘儆谫u方的資產(chǎn),用戶很難獲得軟件包的源代碼和完整的文檔。對(duì)軟件包的維護(hù)通常采用下述方法。使用單位的維護(hù)程序員在分析研究賣方提供的用戶手冊(cè)、操作手冊(cè)、培訓(xùn)教程、新版本策略指導(dǎo)、計(jì)算機(jī)環(huán)境和驗(yàn)收測(cè)試的基礎(chǔ)上,深入了解本單位的希望和要求,編制軟件包檢驗(yàn)程序。
軟件包檢驗(yàn)程序是一個(gè)測(cè)試程序,它檢查軟件包程序所執(zhí)行的功能是否與用戶的要求和條件相一致。為了建立這個(gè)程序,維護(hù)程序員可以利用賣方提供的驗(yàn)收測(cè)試用例或重新設(shè)計(jì)新的測(cè)試用例,根據(jù)測(cè)試結(jié)果檢查和驗(yàn)證軟件包的參數(shù)或控制機(jī)構(gòu),從而完成軟件包的維護(hù)。
第四代語(yǔ)言,例如查詢語(yǔ)言、圖形語(yǔ)言、報(bào)表生成語(yǔ)言和非常高級(jí)語(yǔ)言等,對(duì)減少維護(hù)費(fèi)用來(lái)說(shuō)是一種最有吸引力的語(yǔ)言。人們?nèi)菀资褂?、理解和修改它們。例如,用戶使用第四代語(yǔ)言開(kāi)發(fā)商業(yè)應(yīng)用程序比使用通常的高級(jí)語(yǔ)言要快好多倍。一些第四代語(yǔ)言是過(guò)程語(yǔ)言,而另一些是非過(guò)程語(yǔ)言。對(duì)非過(guò)程的第四代語(yǔ)言,用戶不需要指出實(shí)現(xiàn)的算法,用戶只需向編譯程序或解釋程序提出自己的要求。例如它能自動(dòng)地選擇報(bào)表格式、選擇字符類型等。自動(dòng)生成指令能改進(jìn)軟件可靠性。此外,第四代語(yǔ)言容易理解,容易編程,程序容易修改,因此改進(jìn)了可維護(hù)性。 4.選擇可維護(hù)的語(yǔ)言 程序設(shè)計(jì)語(yǔ)言的選擇對(duì)維護(hù)影響很大。低級(jí)語(yǔ)言很難理解,很難掌握,因而很難維護(hù)。一般來(lái)說(shuō),高級(jí)語(yǔ)言比低級(jí)語(yǔ)言更容易理解,在高級(jí)語(yǔ)言中,一些語(yǔ)言可能比另一些語(yǔ)言更容易理解。
5.改進(jìn)程序的文檔
1)程序文檔 程序員利用程序文檔來(lái)理解程序的內(nèi)部結(jié)構(gòu)、程序同系統(tǒng)內(nèi)其他程序、操作系統(tǒng)和其他軟件系統(tǒng)如何相互作用。程序文檔包括源代碼的注釋、設(shè)計(jì)文檔、系統(tǒng)流程圖、程序流程圖和交叉引用表等。
程序文擋是對(duì)程序功能、程序各組成部分之間的關(guān)系、程序設(shè)計(jì)策略和程序?qū)崿F(xiàn)過(guò)程的歷史數(shù)據(jù)等的說(shuō)明和補(bǔ)充。程序文檔對(duì)提高程序的可閱讀性有重要作用。為了維護(hù)程序,人們必須閱讀和理解程序文檔。通常過(guò)低估計(jì)文檔的價(jià)值是因?yàn)槿藗冞^(guò)低估計(jì)用戶對(duì)修改的需求。雖然人們對(duì)文檔的重要性還有許多不同的看法,但大多數(shù)人同意以下的觀點(diǎn):
(1)好的文檔能提高程序的可閱讀性,但壞的文檔比沒(méi)有文檔更壞。
(2)
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 星海音樂(lè)學(xué)院《草書(shū)技法》2023-2024學(xué)年第二學(xué)期期末試卷
- 東營(yíng)科技職業(yè)學(xué)院《書(shū)法》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶藝術(shù)工程職業(yè)學(xué)院《組成原理課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 云南城市建設(shè)職業(yè)學(xué)院《基礎(chǔ)化學(xué)(一)》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州旅游職業(yè)學(xué)院《單片機(jī)》2023-2024學(xué)年第二學(xué)期期末試卷
- 跨境進(jìn)口保健品的主要品類分析
- 山西金融職業(yè)學(xué)院《專業(yè)外語(yǔ)(自動(dòng)化)》2023-2024學(xué)年第二學(xué)期期末試卷
- 青島工學(xué)院《鋼筋翻樣與算量》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年醫(yī)療社會(huì)保障服務(wù)合作協(xié)議書(shū)
- 2025年太陽(yáng)能發(fā)電設(shè)備合作協(xié)議書(shū)
- 輸卵管積水疾病演示課件
- 自然辯證法概論-第4章(2018新大綱)
- 人教版初中英語(yǔ)七八九全部單詞(打印版)
- (新版)非阿片類鎮(zhèn)痛藥治療慢性疼痛病中國(guó)指南
- 臺(tái)球運(yùn)動(dòng)中的理論力學(xué)
- “高中英語(yǔ)閱讀課件-閱讀策略與技巧”
- GB/T 25922-2023封閉管道中流體流量的測(cè)量用安裝在充滿流體的圓形截面管道中的渦街流量計(jì)測(cè)量流量
- 最高人民法院婚姻法司法解釋(二)的理解與適用
- 關(guān)于醫(yī)保應(yīng)急預(yù)案
- 新人教版五年級(jí)上冊(cè)數(shù)學(xué)應(yīng)用題大全doc
- 商業(yè)綜合體市場(chǎng)調(diào)研報(bào)告
評(píng)論
0/150
提交評(píng)論