




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第6章軟件維護(hù)6.1軟件維護(hù)的內(nèi)容6.2軟件維護(hù)的特點6.3軟件維護(hù)的實施6.4軟件可維護(hù)性6.5小結(jié)習(xí)題6.1軟件維護(hù)的內(nèi)容
1.校正性維護(hù) 在軟件交付使用后,由于軟件開發(fā)過程中產(chǎn)生的錯誤在測試中并沒有完全徹底地發(fā)現(xiàn),因此必然有一部分隱含的錯誤被帶到維護(hù)階段來。這些隱含的錯誤在某些特定的使用環(huán)境下會暴露出來。為了識別和糾正錯誤,修改軟件性能上的缺陷,應(yīng)進(jìn)行確定和修改錯誤的過程,這個過程就稱為校正性維護(hù),校正性維護(hù)占整個維護(hù)工作的21%。 2.適應(yīng)性維護(hù) 隨著計算機的飛速發(fā)展,計算機硬件和軟件環(huán)境在不斷發(fā)生變化,數(shù)據(jù)環(huán)境也在不斷發(fā)生變化。為了使應(yīng)用軟件適應(yīng)這種變化而修改軟件的過程稱為適應(yīng)性維護(hù)。例如,某個應(yīng)用軟件原來是在DOS環(huán)境下運行的,現(xiàn)在要把它移植到Windows環(huán)境下來運行;某個應(yīng)用軟件原來是在一種數(shù)據(jù)庫環(huán)境下工作的,現(xiàn)在要改到另一種安全性較高的數(shù)據(jù)庫環(huán)境下工作,這些變動都需要對相應(yīng)的軟件作修改。這種維護(hù)活動要占整個維護(hù)活動的25%。 3.完善性維護(hù) 在軟件漫長的運行時期中,用戶往往會對軟件提出新的功能要求與性能要求。這是因為用戶的業(yè)務(wù)會發(fā)生變化,組織機構(gòu)也會發(fā)生變化。為了適應(yīng)這些變化,應(yīng)用軟件原來的功能和性能需要擴充和增強。這種增加軟件功能、增強軟件性能和提高軟件運行效率而進(jìn)行的維護(hù)活動稱為完善性維護(hù)。例如,軟件原來的查詢響應(yīng)速度較慢,要提高響應(yīng)速度;軟件原來沒有幫助信息,使用不方便,現(xiàn)在要增加幫助信息。這種維護(hù)性活動數(shù)量較大,占整個維護(hù)活動的50%。 4.預(yù)防性維護(hù) 為了提高軟件的可維護(hù)性和可靠性而對軟件進(jìn)行的修改稱為預(yù)防性維護(hù)。這是為以后進(jìn)一步的運行和維護(hù)打好基礎(chǔ)。這需要采用先進(jìn)的軟件工程方法對需要維護(hù)的軟件或軟件中的某一部分進(jìn)行設(shè)計、編碼和測試。在整個維護(hù)活動中,預(yù)防性維護(hù)占很小的比例,只占4%。
6.2軟件維護(hù)的特點 6.2.1非結(jié)構(gòu)化維護(hù)和結(jié)構(gòu)化維護(hù) 軟件的開發(fā)過程對軟件的維護(hù)有較大的影響。若不采用軟件工程的方法開發(fā)軟件,則軟件只有程序而無文檔,維護(hù)工作非常困難,這是一種非結(jié)構(gòu)化的維護(hù)。若采用軟件工程的方法開發(fā)軟件,則各階段都有相應(yīng)的文檔,容易進(jìn)行維護(hù)工作,這是一種結(jié)構(gòu)化的維護(hù)。 1.非結(jié)構(gòu)化維護(hù) 因為只有源程序,而文檔很少或沒有文檔,維護(hù)活動只能從閱讀、理解和分析源程序開始。由于沒有需求說明文檔和設(shè)計文檔,只有通過閱讀源程序來了解系統(tǒng)功能、軟件結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口和設(shè)計約束等。這樣做,一是非常困難;二是難于搞清楚這些問題;三是常常誤解這些問題。要想搞清楚,需花費大量的人力、物力,最終對源程序修改的結(jié)果是難以估量的,因為沒有測試文檔,不可能進(jìn)行回歸測試,很難保證程序的正確性。這就是軟件工程時代以前進(jìn)行維護(hù)的情況。 2.結(jié)構(gòu)化維護(hù) 用軟件工程思想開發(fā)的軟件具有各個階段的文檔,這對于理解、掌握軟件功能、性能、軟件結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口和設(shè)計約束有很大作用。進(jìn)行維護(hù)活動時,需從評價需求說明開始,搞清楚軟件功能、性能上的改變;對設(shè)計說明文檔進(jìn)行評價,對設(shè)計說明文檔進(jìn)行修改和復(fù)查;根據(jù)設(shè)計的修改,進(jìn)行程序的變動;根據(jù)測試文檔中的測試用例進(jìn)行回歸測試;最后,把修改后的軟件再次交付使用。這對于減少精力、減少花費和提高軟件維護(hù)效率有很大的作用。 6.2.2維護(hù)的困難性 軟件維護(hù)的困難性主要是由于軟件需求分析和開發(fā)方法的缺陷造成的。軟件生存周期中的開發(fā)階段沒有嚴(yán)格而又科學(xué)的管理和規(guī)劃,就會引起軟件運行時的維護(hù)困難。這種困難表現(xiàn)在如下幾個方面:
(1)讀懂別人的程序是困難的。要修改別人編寫的程序,首先要看懂、理解別人的程序。而理解別人的程序是非常困難的,這種困難程度隨著程序文檔的減少而很快的增加,如果沒有相應(yīng)的文檔,困難就達(dá)到非常嚴(yán)重的地步。一般程序員都有這樣的體會,修改別人的程序,還不如自己重新編程序。 (2)文檔的不一致性。文檔的不一致性是維護(hù)工作困難的又一因素。它會導(dǎo)致維護(hù)人員不知所措,不知根據(jù)什么進(jìn)行修改。這種不一致表現(xiàn)在各種文檔之間的不一致以及文檔與程序之間的不一致。這種不一致是由于開發(fā)過程中文檔管理不嚴(yán)所造成的。在開發(fā)中經(jīng)常會出現(xiàn)修改程序卻遺忘了修改與其相關(guān)的文檔,或某一文檔做了修改,卻沒有修改與其相關(guān)的另一文檔這類現(xiàn)象。要解決文檔不一致性,就要加強開發(fā)工作中的文檔版本管理工作。
(3)軟件開發(fā)和軟件維護(hù)在人員和時間上的差異。如果軟件維護(hù)工作由該軟件的開發(fā)人員來進(jìn)行,則維護(hù)工作就變得容易,因為他們熟悉軟件的功能、結(jié)構(gòu)等。但通常開發(fā)人員與維護(hù)人員是不同的,這種差異會導(dǎo)致維護(hù)的困難。由于維護(hù)階段持續(xù)時間很長,正在運行的軟件可能是十幾、20年前開發(fā)的,開發(fā)工具、方法、技術(shù)與當(dāng)前的工具、方法和技術(shù)差異很大,這又是維護(hù)困難的另一因素。
(4)軟件維護(hù)不是一項吸引人的工作。由于維護(hù)工作的困難性,維護(hù)工作經(jīng)常遭受挫折,而且很難出成果,不像軟件開發(fā)工作那樣吸引人。 6.2.3軟件維護(hù)的費用 軟件維護(hù)的費用在總費用中的比重是在不斷增加的,它在1970年占35%~40%,1980年上升到40%~60%,1990年上升到70%~80%。 軟件維護(hù)費用不斷上升,這只是軟件維護(hù)有形的代價。另外還有無形的代價,即要占用更多的資源。由于大量軟件的維護(hù)活動要使用較多的硬件、軟件和軟件工程師等資源,這樣一來,投入新的軟件開發(fā)的資源就因不足而受到影響。由于維護(hù)時的改動,在軟件中引入了潛在的故障,從而降低了軟件的質(zhì)量。
軟件維護(hù)費用增加的主要原因是軟件維護(hù)的生產(chǎn)率非常低。例如,在1976年美國的飛行控制軟件每條指令的開發(fā)成本是75美元,而維護(hù)成本是每條指令大約4000美元,也就是說生產(chǎn)率下降了50倍。 用于軟件維護(hù)工作的活動可分為生產(chǎn)性活動和非生產(chǎn)性活動兩種。生產(chǎn)性活動包括分析評價、修改設(shè)計和編寫程序代碼等。非生產(chǎn)性活動包括理解程序代碼功能、解釋數(shù)據(jù)結(jié)構(gòu)、接口特點和設(shè)計約束。維護(hù)活動總的工作量由下式表示:
M=P+K·exp(C-D)
其中:M表示維護(hù)工作的總工作量;P表示生產(chǎn)性活動工作量;K表示經(jīng)驗常數(shù);C表示復(fù)雜性程度;D表示維護(hù)人員對軟件的熟悉程度。 上式表明,若C越大,D越小,那么維護(hù)工作量將成指數(shù)增加;C增加表示軟件因未用軟件工程方法開發(fā),從而使得軟件為非結(jié)構(gòu)化設(shè)計,文檔缺少,程序復(fù)雜性高;D減小表示維護(hù)人員不是原來的開發(fā)人員,對軟件熟悉程度低,重新理解軟件要花費很多時間。6.3軟件維護(hù)的實施 6.3.1維護(hù)的組織 為了有效地進(jìn)行軟件維護(hù),應(yīng)事先就開始組織工作,建立維護(hù)機構(gòu)。這種維護(hù)機構(gòu)通常以維護(hù)小組形式出現(xiàn)。維護(hù)小組分為臨時維護(hù)小組和長期維護(hù)小組。
1.臨時維護(hù)小組 臨時維護(hù)小組是非正式的機構(gòu),它執(zhí)行一些特殊的或臨時的維護(hù)任務(wù)。例如,對程序排錯的檢查,檢查完善性維護(hù)的設(shè)計和進(jìn)行質(zhì)量控制的復(fù)審等。臨時維護(hù)小組采用“同事復(fù)審”或“同行復(fù)審”等方法來提高維護(hù)工作的效率。 2.長期維護(hù)小組 對長期運行的復(fù)雜系統(tǒng)需要一個穩(wěn)定的維護(hù)小組。維護(hù)小組由以下成員組成。
1)組長 維護(hù)小組組長是該小組的技術(shù)負(fù)責(zé)人,負(fù)責(zé)向上級主管部門報告維護(hù)工作。組長應(yīng)是領(lǐng)域。一個有經(jīng)驗的系統(tǒng)分析員,具有一定的管理經(jīng)驗,熟悉系統(tǒng)的應(yīng)用
2)副組長 副組長是組長的助手。在組長缺席時完成組長的工作,具有與組長相同的業(yè)務(wù)水平和工作經(jīng)驗。副組長還執(zhí)行同開發(fā)部門或其他維護(hù)小組聯(lián)系的任務(wù)。在系統(tǒng)開發(fā)階段,收集與維護(hù)有關(guān)的信息;在維護(hù)階段,他同開發(fā)者繼續(xù)保持聯(lián)系,向他們傳送程序運行的反饋信息。因為大部分維護(hù)要求是由用戶提出的,所以副組長同用戶保持密切聯(lián)系也是非常重要的。
3)維護(hù)負(fù)責(zé)人 維護(hù)負(fù)責(zé)人是維護(hù)小組的行政負(fù)責(zé)人。他通常管理幾個維護(hù)小組的人事工作,負(fù)責(zé)維護(hù)小組成員的人事管理工作。 6.3.2維護(hù)的流程 軟件維護(hù)的流程如下:
(1)制定維護(hù)申請報告。
(2)審查申請報告并批準(zhǔn)。
(3)進(jìn)行維護(hù)并做詳細(xì)記錄。
(4)復(fù)審。 1.制定維護(hù)申請報告 所有軟件維護(hù)申請報告應(yīng)按規(guī)定的方式提出。該報告也稱為軟件問題報告。它是維護(hù)階段的一種文檔,由申請維護(hù)的用戶填寫。當(dāng)遇到一個錯誤時,用戶必須完整地說明錯誤產(chǎn)生的情況,包括輸入數(shù)據(jù)、錯誤清單、源程序清單以及其他有關(guān)材料,即導(dǎo)致該錯誤的環(huán)境的完整描述。對于適應(yīng)性或完善性的維護(hù)要求,要提交一份簡要的維護(hù)規(guī)格說明。 維護(hù)申請報告是一種由用戶產(chǎn)生的文檔,是用作計劃維護(hù)任務(wù)的基礎(chǔ)。在軟件維護(hù)組織內(nèi)部還要制定一份軟件修改報告,該報告是維護(hù)階段的另一種文檔,用來指出: (1)為滿足軟件問題報告實際要求的工作量。
(2)要求修改的性質(zhì)。
(3)請求修改的優(yōu)先權(quán)。
(4)關(guān)于修改的事后數(shù)據(jù)。 提出維護(hù)申請報告之后,由維護(hù)機構(gòu)來評審維護(hù)請求。評審工作很重要,通過評審回答要不要維護(hù),從而可以避免盲目的維護(hù)。
2.維護(hù)過程 一個維護(hù)申請?zhí)岢鲋螅?jīng)評審需要維護(hù),則按下列過程實施維護(hù):
(1)首先確定要進(jìn)行維護(hù)的類型。有許多情況,用戶可以把一個請求看作校正性維護(hù),而軟件開發(fā)者可以把這個請求看作適應(yīng)性或完善性維護(hù),此時,對不同觀點就要協(xié)商解決。
(2)對校正性維護(hù)從評價錯誤的嚴(yán)重性開始。如果存在一個嚴(yán)重的錯誤,例如一個系統(tǒng)的重要功能不能執(zhí)行,則由管理者組織有關(guān)人員立即開始分析問題。如果錯誤并不嚴(yán)重,則校正性維護(hù)與軟件其他任務(wù)一起進(jìn)行,統(tǒng)一安排,按計劃進(jìn)行維護(hù)工作。甚至?xí)羞@樣一種情況,申請是錯誤的。因此經(jīng)審查后發(fā)現(xiàn)并不需要修改軟件。 (3)對適應(yīng)性和完善性維護(hù)。如同它是另一個開發(fā)工作一樣,建立每個請求的優(yōu)先權(quán),安排所要求的工作。若設(shè)置一個極高的優(yōu)先權(quán),當(dāng)然也就意味著要立即開始此項維護(hù)工作了。
(4)實施維護(hù)任務(wù)。不管維護(hù)類型如何,大體上要開展相同的技術(shù)工作。這些工作包括修改軟件設(shè)計、必要的代碼修改、單元測試、集成測試、確認(rèn)測試以及復(fù)審,每種維護(hù)類型的側(cè)重點不一樣。
(5)“救火”維護(hù)。存在著并不完全適合上面所述的經(jīng)過仔細(xì)考慮的維護(hù)申請,這時申請的維護(hù)稱為“救火”維護(hù),在發(fā)生重大的軟件問題時,就會出現(xiàn)這種情況。例如,一個造紙廠的流程控制系統(tǒng)出現(xiàn)一個使壓出的紙越出建筑物的故障,這時要立即組織有關(guān)人員去“救火”,必須立即解決問題。顯然,如果一個軟件開發(fā)機構(gòu)經(jīng)常“救火”,就必須要認(rèn)真檢查一下,該機構(gòu)的管理和技術(shù)存在什么重大問題。 3.維護(hù)的復(fù)審 在維護(hù)任務(wù)完成后,要對維護(hù)任務(wù)進(jìn)行復(fù)審。進(jìn)行復(fù)審時要回答下列問題:
(1)給出當(dāng)前情況,即設(shè)計、代碼和測試的哪些方面已經(jīng)完成?
(2)各種維護(hù)資源已經(jīng)用了哪些?還有哪些未用?
(3)對于這個工作,主要的、次要的障礙是什么?
(4)復(fù)審對維護(hù)工作能否順利進(jìn)行有重大影響,對一個軟件機構(gòu)來說也是有效的管理工作的一部分。 6.3.3維護(hù)技術(shù) 有兩類維護(hù)技術(shù),它們是面向維護(hù)的技術(shù)和維護(hù)支援技術(shù)。面向維護(hù)的技術(shù)是在軟件開發(fā)階段用來減少錯誤、提高軟件可維護(hù)性的技術(shù)。維護(hù)支援技術(shù)是在軟件維護(hù)階段用來提高維護(hù)作業(yè)的效率和質(zhì)量的技術(shù)。
1.面向維護(hù)的技術(shù) 面向維護(hù)的技術(shù)涉及軟件開發(fā)的所有階段。 在需求分析階段,對用戶的需求進(jìn)行嚴(yán)格的分析定義,使之沒有矛盾和易于理解,可以減少軟件中的錯誤。例如美國密執(zhí)安大學(xué)的ISDOS系統(tǒng)就是需求分析階段使用的一種分析與文檔化工具,可以用它來檢查需求說明書的一致性和完備性。
在設(shè)計階段,劃分模塊時充分考慮將來改動或擴充的可能性。使用結(jié)構(gòu)化分析和結(jié)構(gòu)化設(shè)計方法,采用容易變更的、不依賴于特定硬件和特定操作系統(tǒng)的設(shè)計。 在編碼階段,采用靈活的數(shù)據(jù)結(jié)構(gòu),使程序相對獨立于數(shù)據(jù)的物理結(jié)構(gòu),養(yǎng)成良好的程序設(shè)計風(fēng)格。 在測試階段,盡可能多的發(fā)現(xiàn)錯誤,保存測試用例和測試數(shù)據(jù)等。 以上這些技術(shù)方法都能減少軟件錯誤,提高軟件的可維護(hù)性。 2.維護(hù)支援技術(shù) 維護(hù)支援技術(shù)包括下列各方面的技術(shù):
(1)信息收集。
(2)錯誤原因分析。
(3)軟件分析與理解。
(4)維護(hù)方案評價。
(5)代碼與文檔修改。
(6)修改后的確認(rèn)。
(7)遠(yuǎn)距離的維護(hù)。 6.3.4維護(hù)的副作用 維護(hù)的目的是為了延長軟件的壽命并讓其創(chuàng)造更多的價值,經(jīng)過一段時間的維護(hù),軟件中的錯誤減少了,功能增強了。但修改軟件是危險的,每修改一次,潛伏的錯誤就可能增加一分。這種因修改軟件而造成的錯誤或其他不希望出現(xiàn)的情況稱為維護(hù)的副作用。維護(hù)的副作用有編碼副作用、數(shù)據(jù)副作用和文檔副作用三種。
1.編碼副作用 在使用程序設(shè)計語言修改源代碼時可能引入如下錯誤:
(1)刪除或修改一個子程序、一個標(biāo)號和一個標(biāo)識符。 (2)改變程序代碼的時序關(guān)系,改變占用存儲的大小,改變邏輯運算符。
(3)修改文件的打開或關(guān)閉。
(4)改進(jìn)程序的執(zhí)行效率。
(5)把設(shè)計上的改變翻譯成代碼的改變。
(6)為邊界條件的邏輯測試做出改變。 以上這些變動都容易引入錯誤,要特別小心、仔細(xì)修改,避免引入新的錯誤。
2.數(shù)據(jù)副作用 在修改數(shù)據(jù)結(jié)構(gòu)時,有可能造成軟件設(shè)計與數(shù)據(jù)結(jié)構(gòu)不匹配,因而導(dǎo)致軟件錯誤。數(shù)據(jù)副作用是修改軟件信息結(jié)構(gòu)導(dǎo)致的結(jié)果,有以下幾種:
(1)重新定義局部或全局的常量,重新定義記錄或文件格式。
(2)增加或減少一個數(shù)組或高層數(shù)據(jù)結(jié)構(gòu)的大小。
(3)修改全局或公共數(shù)據(jù)。
(4)重新初始化控制標(biāo)志或指針。
(5)重新排列輸入/輸出或子程序的參數(shù)。 以上這些情況都容易導(dǎo)致設(shè)計與數(shù)據(jù)不相容的錯誤。數(shù)據(jù)副作用可以通過詳細(xì)的設(shè)計文檔加以控制,在此文檔中描述了一種交叉作用,把數(shù)據(jù)元素、記錄、文件和其他結(jié)構(gòu)聯(lián)系起來。 3.文檔副作用 對數(shù)據(jù)流、軟件結(jié)構(gòu)、模塊邏輯或任何其他有關(guān)特性進(jìn)行修改時,必須對相關(guān)技術(shù)文檔進(jìn)行相應(yīng)修改。否則會導(dǎo)致文檔與程序功能不匹配、缺省條件改變和新錯誤信息不正確等錯誤,使文檔不能反映軟件當(dāng)前的狀態(tài)。如果對可執(zhí)行軟件的修改沒有反映在文檔中,就會產(chǎn)生如下文檔副作用:
(1)修改交互輸入的順序或格式,沒有正確的記入文檔中。
(2)過時的文檔內(nèi)容、索引和文本可能造成沖突等。
因此,必須在軟件交付之前對整個軟件配置進(jìn)行評審,以減少文檔副作用。事實上,有些維護(hù)請求并不要求改變軟件設(shè)計和源代碼,而是指出在用戶文檔中不夠明確的地方。在這種情況下,維護(hù)工作主要集中在文檔。 為了控制因修改而引起的副作用,要做到:按模塊把修改分組;自頂向下的安排被修改模塊的順序;每次修改一個模塊。 對每個修改了的模塊,在安排修改下一個模塊之前要確定這個修改的副作用。可使用交叉引用表、存儲映像表和執(zhí)行流程跟蹤等。6.4軟件可維護(hù)性 6.4.1可維護(hù)性定義 軟件可維護(hù)性是指軟件能夠被理解、校正、適應(yīng)及增強功能的容易程度。 軟件的可維護(hù)性、可使用性和可靠性是衡量軟件質(zhì)量的幾個主要特性,也是用戶十分關(guān)心的幾個問題。但是影響軟件質(zhì)量的這些主要因素,目前還沒有對它們普遍適用的定量度量的方法,就其概念和內(nèi)涵來說則是很明確的。
軟件的可維護(hù)性是軟件開發(fā)階段的關(guān)鍵目標(biāo)。影響軟件可維護(hù)性的因素較多,設(shè)計、編碼及測試中的疏忽和低劣的軟件配置,缺少文檔等都對軟件的可維護(hù)性產(chǎn)生不良影響。軟件可維護(hù)性可用下面7個質(zhì)量特性來衡量,即可理解性、可測試性、可修改性、可靠性、可移植性、可使用性和效率。對于不同類型的維護(hù),這7種特性的側(cè)重點也不相同。這些質(zhì)量特性通常體現(xiàn)在軟件產(chǎn)品的許多方面。為使每一個質(zhì)量特性都達(dá)到預(yù)定的要求,需要在軟件開發(fā)的各個階段采取相應(yīng)的措施加以保證,即這些質(zhì)量要求要滲透到各開發(fā)階段的各個步驟中。因此,軟件的可維護(hù)性是產(chǎn)品投入運行以前各階段針對上述各質(zhì)量特性要求進(jìn)行開發(fā)的最終結(jié)果。 6.4.2可維護(hù)性的度量 目前有若干對軟件可維護(hù)性進(jìn)行綜合度量的方法,但要對可維護(hù)性作出定量度量還是困難的。還沒有一種方法能夠使用計算機對軟件的可維護(hù)性進(jìn)行綜合性的定量評價。下面是度量一個可維護(hù)的軟件的7種特性時常采用的方法,即質(zhì)量檢查表、質(zhì)量測試和質(zhì)量標(biāo)準(zhǔn)。 質(zhì)量檢查表是用于測試程序中某些質(zhì)量特性是否存在的一個問題清單。檢查者對檢查表上的每一個問題,依據(jù)自己的定性判斷,回答“是”或者“否”。質(zhì)量測試與質(zhì)量標(biāo)準(zhǔn)則用于定量分析和評價程序的質(zhì)量。由于許多質(zhì)量特性是相互抵觸的,要考慮幾種不同的度量標(biāo)準(zhǔn)去度量不同的質(zhì)量特性。 6.4.3提高可維護(hù)性的方法 怎樣才能得到可維護(hù)性高的程序呢?可從下面5個方面來解決這個問題:
(1)建立明確的軟件質(zhì)量目標(biāo)。
(2)利用先進(jìn)的軟件開發(fā)技術(shù)和工具。
(3)建立明確的質(zhì)量保證工作。
(4)選擇可維護(hù)的程序設(shè)計語言。
(5)改進(jìn)程序文檔。
1.建立明確的軟件質(zhì)量目標(biāo) 如果要程序滿足可維護(hù)性的7種特性的全部要求,那是不現(xiàn)實的。實際上,有一些可維護(hù)特性是相互促進(jìn)的,如可理解性和可測試性,可理解性和可修改性;而另一些則是相互矛盾的,如效率和可移植性,效率和可修改性等。為保證程序的可維護(hù)性,應(yīng)該在一定程度上滿足可維護(hù)性的各個特性,但各個特性的重要性隨著程序用途的不同或計算機環(huán)境的不同而改變。對編譯程序來說,效率和可移植性是主要的;對信息管理系統(tǒng)來說,可使用性和可修改性可能是主要的。通過大量實驗證明,強調(diào)效率的程序包含的錯誤比強調(diào)簡明性的程序所包含的錯誤要高出10倍。因此明確軟件所追求的質(zhì)量目標(biāo)對軟件的質(zhì)量和生存周期的費用將產(chǎn)生很大的影響。 2.使用先進(jìn)的軟件開發(fā)技術(shù)和工具 利用先進(jìn)的軟件開發(fā)技術(shù)能大大提高軟件質(zhì)量和減少軟件費用。例如,面向?qū)ο蟮能浖_發(fā)方法就是一個非常實用而強有力的軟件開發(fā)方法。 面向?qū)ο蠓椒ㄅc人類習(xí)慣的思維方法一致,用現(xiàn)實世界的概念來思考問題,從而能自然地解決問題。它強調(diào)模擬現(xiàn)實世界中的概念而不強調(diào)算法,它鼓勵開發(fā)者在開發(fā)過程中都使用應(yīng)用領(lǐng)域的概念去思考,開發(fā)過程自始至終都圍繞著建立問題領(lǐng)域的對象模型來進(jìn)行。按照人們習(xí)慣的思維方式建立起問題領(lǐng)域的模型,模擬客觀世界,使描述問題的問題空間和描述解法的解空間在結(jié)構(gòu)上盡可能一致,開發(fā)出盡可能直觀、自然的表現(xiàn)求解方法的軟件系統(tǒng)。
面向?qū)ο蠓椒ㄩ_發(fā)出的軟件的穩(wěn)定性好。傳統(tǒng)方法開發(fā)出來的軟件系統(tǒng)的結(jié)構(gòu)緊密依賴于系統(tǒng)所需要完成的功能。當(dāng)功能需求發(fā)生變化時,將引起軟件結(jié)構(gòu)的整體修改,因而這樣的軟件結(jié)構(gòu)是不穩(wěn)定的。面向?qū)ο蠓椒ㄒ詫ο鬄橹行臉?gòu)造軟件系統(tǒng),用對象模擬問題領(lǐng)域中的實體,以對象間的聯(lián)系刻畫實體間的聯(lián)系,根據(jù)問題領(lǐng)域中的模型來建立軟件系統(tǒng)的結(jié)構(gòu)。由于客觀世界的實體及其之間的聯(lián)系相對穩(wěn)定,因此建立的模型也相對穩(wěn)定。當(dāng)系統(tǒng)的功能需求發(fā)生變化時,并不會引起軟件結(jié)構(gòu)的整體變化,往往只需要做一些局部性的修改。所以面向?qū)ο蠓椒?gòu)造的軟件系統(tǒng)也比較穩(wěn)定。
面向?qū)ο蠓椒?gòu)造的軟件可重用性好。對象所固有的封裝性和信息隱蔽機制,使得對象內(nèi)部的實現(xiàn)和外界隔離,具有較強的獨立性。因此對象類提供了比較理想的模塊化機制和比較理想的可重用的軟件成分。 由于對象類是理想的模塊機制,它的獨立性好,修改一個類通常很少涉及到其他類。若只修改一個類的內(nèi)部實現(xiàn)部分而不修改該類的對外接口,則可以完全不影響軟件的其他部分。由于面向?qū)ο蟮能浖夹g(shù)符合人們習(xí)慣的思維方式,用這種方法所建立的軟件系統(tǒng)的結(jié)構(gòu)與問題空間的結(jié)構(gòu)基本一致,因此面向?qū)ο蟮能浖到y(tǒng)比較容易理解。
對面向?qū)ο蟮能浖到y(tǒng)進(jìn)行維護(hù),主要通過對從已有類派生出一些新類的維護(hù)來實現(xiàn)。因此,維護(hù)時的測試和調(diào)試工作也主要圍繞這些新派生出來的類進(jìn)行。類是獨立性很強的模塊,向類的實例發(fā)消息即可運行它,觀察它是否能正確的完成要求它做的工作。對類的測試通常比較容易實現(xiàn),如果發(fā)現(xiàn)錯誤也往往集中在類的內(nèi)部,比較容易調(diào)試。 總之,面向?qū)ο蠓椒ㄩ_發(fā)出來的軟件系統(tǒng),穩(wěn)定性好、容易修改、容易理解,易于測試和調(diào)試,因而可維護(hù)性好。 3.建立明確的質(zhì)量保證 質(zhì)量保證是指為提高軟件質(zhì)量所做的各種檢查工作。質(zhì)量保證檢查是非常有效的方法,不僅在軟件開發(fā)的各階段中得到了廣泛應(yīng)用,而且在軟件維護(hù)中也是一個非常重要的工具。為了保證可維護(hù)性,以下4類檢查是非常有用的。
1)在檢查點進(jìn)行檢查 檢查點是指軟件開發(fā)的每一個階段的終點。在檢查點進(jìn)行檢查的目標(biāo)是證實已開發(fā)的軟件是滿足設(shè)計要求的。在不同的檢查點檢查的內(nèi)容是不同的。例如,在設(shè)計階段檢查的重點是可理解性、可修改性和可測試性,可理解性檢查的重點是檢查設(shè)計的復(fù)雜性。 2)驗收檢查 驗收檢查是一個特殊的檢查點的檢查,它是把軟件從開發(fā)轉(zhuǎn)移到維護(hù)的最后一次檢查。它對減少維護(hù)費用,提高軟件質(zhì)量是非常重要的。驗收檢查實際上是我們已講過的驗收測試的一部分,只不過驗收檢查是從維護(hù)角度提出驗收條件或標(biāo)準(zhǔn)的。
3)周期性的維護(hù)檢查 上述兩種軟件檢查適用于新開發(fā)的軟件。對已運行的軟件應(yīng)進(jìn)行周期性的維護(hù)檢查。為了改正在開發(fā)階段未發(fā)現(xiàn)的錯誤,使軟件適應(yīng)新的計算機環(huán)境并滿足變化的用戶需求,對正在使用的軟件進(jìn)行改變是不可避免的。
改變程序可能引入新錯誤并破壞原來程序概念的完整性。為了保證軟件質(zhì)量應(yīng)該對正在使用的軟件進(jìn)行周期性維護(hù)檢查。實際上周期性維護(hù)檢查是開發(fā)階段對檢查點進(jìn)行檢查的繼續(xù),采用的檢查方法和檢查內(nèi)容都是相同的。把多次維護(hù)檢查結(jié)果同以前進(jìn)行的驗收檢查結(jié)果以及檢查點檢查結(jié)果做比較,對檢查結(jié)果的任何改變都要進(jìn)行分析,找出原因。 4)對軟件包的檢查 上述檢查方法適用于組織內(nèi)部開發(fā)和維護(hù)的軟件或?qū)樯贁?shù)幾個用戶設(shè)計的軟件,很難適用于享有多個用戶的通用軟件包。因為軟件包屬于賣方的資產(chǎn),用戶很難獲得軟件包的源代碼和完整的文檔。對軟件包的維護(hù)通常采用下述方法。使用單位的維護(hù)程序員在分析研究賣方提供的用戶手冊、操作手冊、培訓(xùn)教程、新版本策略指導(dǎo)、計算機環(huán)境和驗收測試的基礎(chǔ)上,深入了解本單位的希望和要求,編制軟件包檢驗程序。
軟件包檢驗程序是一個測試程序,它檢查軟件包程序所執(zhí)行的功能是否與用戶的要求和條件相一致。為了建立這個程序,維護(hù)程序員可以利用賣方提供的驗收測試用例或重新設(shè)計新的測試用例,根據(jù)測試結(jié)果檢查和驗證軟件包的參數(shù)或控制機構(gòu),從而完成軟件包的維護(hù)。
第四代語言,例如查詢語言、圖形語言、報表生成語言和非常高級語言等,對減少維護(hù)費用來說是一種最有吸引力的語言。人們?nèi)菀资褂谩⒗斫夂托薷乃鼈?。例如,用戶使用第四代語言開發(fā)商業(yè)應(yīng)用程序比使用通常的高級語言要快好多倍。一些第四代語言是過程語言,而另一些是非過程語言。對非過程的第四代語言,用戶不需要指出實現(xiàn)的算法,用戶只需向編譯程序或解釋程序提出自己的要求。例如它能自動地選擇報表格式、選擇字符類型等。自動生成指令能改進(jìn)軟件可靠性。此外,第四代語言容易理解,容易編程,程序容易修改,因此改進(jìn)了可維護(hù)性。 4.選擇可維護(hù)的語言 程序設(shè)計語言的選擇對維護(hù)影響很大。低級語言很難理解,很難掌握,因而很難維護(hù)。一般來說,高級語言比低級語言更容易理解,在高級語言中,一些語言可能比另一些語言更容易理解。
5.改進(jìn)程序的文檔
1)程序文檔 程序員利用程序文檔來理解程序的內(nèi)部結(jié)構(gòu)、程序同系統(tǒng)內(nèi)其他程序、操作系統(tǒng)和其他軟件系統(tǒng)如何相互作用。程序文檔包括源代碼的注釋、設(shè)計文檔、系統(tǒng)流程圖、程序流程圖和交叉引用表等。
程序文擋是對程序功能、程序各組成部分之間的關(guān)系、程序設(shè)計策略和程序?qū)崿F(xiàn)過程的歷史數(shù)據(jù)等的說明和補充。程序文檔對提高程序的可閱讀性有重要作用。為了維護(hù)程序,人們必須閱讀和理解程序文檔。通常過低估計文檔的價值是因為人們過低估計用戶對修改的需求。雖然人們對文檔的重要性還有許多不同的看法,但大多數(shù)人同意以下的觀點:
(1)好的文檔能提高程序的可閱讀性,但壞的文檔比沒有文檔更壞。
(2)
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度新股東入資生物制藥產(chǎn)業(yè)合作協(xié)議
- 2025年度電子商務(wù)平臺員工勞務(wù)外包及運營合同
- 二零二五年度長租公寓退租服務(wù)保障協(xié)議
- 二零二五年度餐飲連鎖生意合作合同范本
- 房產(chǎn)證抵押貸款合同抵押物管理協(xié)議(2025年度)
- 二零二五年度精裝高層購房定金合同
- 2025年度私人宅基地買賣轉(zhuǎn)讓協(xié)議書及配套設(shè)施建設(shè)補充協(xié)議
- 2025年度租房押金監(jiān)管及退還標(biāo)準(zhǔn)合同
- 二零二五年度文化產(chǎn)業(yè)投資入股協(xié)議
- 2025年黑龍江貨運從業(yè)資格證的試題
- 解析:2023年廣西壯族自治區(qū)中考數(shù)學(xué)真題(原卷版)
- 爬模施工應(yīng)急處置措施
- 2024年越南高純碳化硅粉末行業(yè)現(xiàn)狀及前景分析2024-2030
- 農(nóng)村積分超市實施方案(2篇)
- 領(lǐng)養(yǎng)小孩申請書
- GB 1588-2024醫(yī)用玻璃體溫計
- 全國大學(xué)生英語競賽輔導(dǎo)課件教學(xué)培訓(xùn)課件
- 2024年四川省成都市青羊區(qū)中考數(shù)學(xué)二診試卷(含答案)
- 2024年保安員考試題庫【典型題】
- Unit 2 Lets celebrate Developing ideas-Writing a letter to express 課件【知識精講+拓展訓(xùn)練】高中英語外研版(2019)必修第二冊
- 小品劇本《鍘美案》臺詞完整版遼寧民間藝術(shù)團宋小寶
評論
0/150
提交評論