2017年全國計算機考試四級復(fù)習(xí)綱要:軟件維護

字號:


     四、軟件維護
     軟件維護階段覆蓋了從軟件交付使用到軟件被淘汰為止的整個時期,它是在軟件交付使用后,為了改正軟件中隱藏的錯誤,或者為了使軟件適應(yīng)新的環(huán)境,或者為了擴充和完善軟件的功能或性能而修改軟件的過程。一個軟件的開發(fā)時間可能需要一兩年,但它的使用時間可能要幾年或幾十年,而整個使用期都可能需要進(jìn)行軟件維護,所以軟件維護的代價是很大的,而且維護的代價還在逐年上升,據(jù)1994年Software Engineering Encyclopedia記載,在整個軟件生存周期所花費的代價中,20世紀(jì)80年代末用于軟件維護的代價約為75%到90年代初為90%。因此,如何提高軟件維護的效率、降低維護的代價成為十分重要的問題。
     (一) 軟件維護的分類
     根據(jù)引用軟件維護的原因,軟件維護通??煞殖筛恼跃S護、適應(yīng)性維護、完善性維護、預(yù)防性維護。
     1.改正性維護
     由于程序正確性證明尚未得到圓滿的解決,軟件測試又不可能找出程序中的所有錯誤,因此,在交付使用的軟件中都可能隱藏著某些尚未被發(fā)現(xiàn)的錯誤,而這些錯誤在某種使用環(huán)境下會暴露出來。改正性維護就是在使用過程中發(fā)現(xiàn)了隱藏的錯誤后,為了診斷和改正這些隱藏錯誤而修改軟件的活動。
     2.適應(yīng)性維護
     由于計算機的發(fā)展非常迅速,新的機型、新的操作系統(tǒng)、新的軟件系統(tǒng)不斷地涌現(xiàn),為了適應(yīng)計算機的飛速發(fā)展,可能要更正在運行的軟件的運行環(huán)境,如新的機型、數(shù)據(jù)庫管理系統(tǒng)等。適應(yīng)性維護就是為了適應(yīng)變化了的環(huán)境而修改軟件的活動。
     3.完善性維護
     用戶在使用軟件的過程中,隨著業(yè)務(wù)的發(fā)展,常常希望擴充原有軟件的功能,或者希望改進(jìn)原有的功能或性能,以滿足用戶的新要求,完善性維護就是為了擴充或完善原有軟件的功能或性能而修改軟件的活動。
     4.預(yù)防性維護
     軟件維護活動主要是上述三類維護,另有一類維護稱為預(yù)防性維護,它是為了提高軟件的可維護性和可靠性,為未來的進(jìn)一步改進(jìn)打下基礎(chǔ)而修改軟件的活動。據(jù)有關(guān)資料統(tǒng)計,在整個軟件維護活動中,改正性維護約占20%,適應(yīng)性維護約占25%,完善性維護約占50%以上,其他維護約占4%。
     (二) 與軟件維護有關(guān)的問題
     軟件維護人員通常不是該軟件的開發(fā)人員,這給軟件維護帶來很大的困難,特別是有些軟件在開發(fā)時沒有遵循軟件開發(fā)的準(zhǔn)則,沒有開發(fā)方法的支持,維護這樣的軟件就更困難。下面列舉一些與軟件維護有關(guān)的問題。
     (1)要維護一個軟件,首先要理解它。而理解別人的程序通常是非常困難的,尤其是對軟件配置(指各種文檔)不齊的軟件,理解起來更為困難。
     (2)需要維護的軟件往往缺少合格的文檔,或者文檔資料不齊,甚至沒有文檔。在軟件維護中,合格的文檔十分重要,它有助于理解被維護的軟件。合格的文檔不僅要完整正確地反映開發(fā)過程各階段的工作結(jié)果,而且應(yīng)該容易理解并應(yīng)程序源代碼一致。而錯誤的文檔會把對程序的理解引入歧途。
     (3)在軟件維護時,不要指望得到原來開發(fā)該軟件的人員的幫助。開發(fā)人員開發(fā)完一個軟件后,往往去從事另一軟件的開發(fā),甚至已調(diào)離開發(fā)單位。即使原先的開發(fā)人員還在,也可能因為相隔時間太久而遺忘了實現(xiàn)的細(xì)節(jié)。
     (4)多數(shù)軟件在設(shè)計時沒有考慮今后的修改,給軟件的修改帶來困難,而且在修改軟件時容易帶來新的差錯。對那些缺乏模塊獨立性和非結(jié)構(gòu)化的程序來說,更是如此。
     (5)軟件維護通常不是一件吸引人的工作。從事維護工作常使維護人員感到缺乏成就感。這也嚴(yán)重影響維護工作。從而導(dǎo)致維護質(zhì)量的不高??梢钥闯?,上述的有些問題都與被維護的質(zhì)量密切相關(guān),所以在開發(fā)軟件時,要認(rèn)真寫好各類文檔,并且應(yīng)注意提高軟件的可維護性,這樣可在很大程序上緩解軟件維護的困難。
     (三) 可維護性軟件可維護性是指理解、改正、改動、改進(jìn)軟件的難易程度。通常影響軟件可維護性的因素有可理解性、可測試性和可修改性。
     1.可理解性
     2.可測試性
     可測試性是指測試和診斷軟件(主要指程序)中錯誤的難易程度。測試主要是發(fā)現(xiàn)軟件中的錯誤,而診斷錯誤的性質(zhì)和出錯的位置通常是調(diào)試的任務(wù)。提高軟件可測試性的措施有:書寫詳細(xì)正確的文檔,采用良好的程序結(jié)構(gòu),使用測試工具和調(diào)試工具,保存以前的測試過程和測試用例等等。
     3.可修改性
     可修改性是指修改軟件(主要指程序)的難易程度。在修改程序時經(jīng)常會發(fā)生這樣的情況:修改程序中某個錯誤的同時又產(chǎn)生新的錯誤(由程序的修改引起的),或者在程序中增加了某個功能的同時,原先的某些功能不能正常執(zhí)行。這主要是因為程序中各成分之間存在著許多聯(lián)系,當(dāng)程序中某處修改時,這個修改可能會影響到程序的其他部分。如果修改程序時稍有考慮不周,就會出現(xiàn)上述顧此失彼的情況。因此,如果一處修改所涉及到的范圍越少,發(fā)生上述情況的概率也越小,其可修改性也越好。在軟件設(shè)計中我們介紹的那些設(shè)計準(zhǔn)則都是影響可修改性的因素,如信息隱蔽原則、模塊獨立、模塊間聯(lián)系的低耦合高內(nèi)聚等等。
     (四) 軟件維護活動流程
     凡是需要軟件維護,都應(yīng)有一個軟件維護的申請報告。改正性維護的申請報告應(yīng)完整地描述導(dǎo)致錯誤的環(huán)境,包括輸入數(shù)據(jù)、錯誤清單以及有關(guān)的材料。適應(yīng)性維護或完善性維護的申請報告應(yīng)提供一份簡短的需求說明書。維護申請書由維護管理員和系統(tǒng)管理員審批。并指明所需修改的性質(zhì),申請修改的優(yōu)先級,所需的工作量等。維護活動的第一步是確定維護的類型,若是改正性維護,則要估計錯誤的嚴(yán)重程度,對嚴(yán)重的錯誤,則馬上分派人員執(zhí)行維護任務(wù);對不嚴(yán)重的錯誤,則可將其暫時保存,在以后適當(dāng)時候再進(jìn)行改正。若是適應(yīng)性維護或完善性維護,則要根據(jù)其優(yōu)先級來決定維護的先后次序,優(yōu)先級高的維護則馬上開始;優(yōu)先級低的可暫時保存,以便統(tǒng)籌安排。適應(yīng)性維護或完善性維護的過程相當(dāng)于一個小的開發(fā)過程,它同樣要經(jīng)歷需求分析、設(shè)計、編碼、測試等階段。不管是哪種維護,有些工作是每種維護活動都必須做的,如在修改程序代碼的同時還要修改(如有必要)相應(yīng)的需求說明文檔、設(shè)計文檔等,還要進(jìn)行回歸測試和軟件配置復(fù)審等。