軟件維護(hù)
軟件維護(hù)的目的是保證軟件在運(yùn)營時(shí)期能夠正常運(yùn)行。
軟件具有可維護(hù)性由以下三個(gè)因素決定:
可理解性
可測試性
可修改性
提高軟件的可維護(hù)性
采用軟件工程提高軟件的可維護(hù)性:注重文檔(用戶文檔和系統(tǒng)文檔)
注重可維護(hù)性的開發(fā)過程:從軟件的可理解性、可測試性、可修改性等方面提高軟件可維護(hù)性。需求分析階段對可能的修改部分明確說明,設(shè)計(jì)階段遵循高內(nèi)聚低耦合的設(shè)計(jì)原則,編碼階段采用科學(xué)的編碼規(guī)范,保證保釋的質(zhì)量,測試階段做好測試記錄及相關(guān)文檔,維護(hù)階段有要嚴(yán)格的配置管理,保證系統(tǒng)文檔、用戶文檔與系統(tǒng)的一致性。
可維護(hù)性的度量
從軟件的內(nèi)部和外部兩個(gè)方面來度量可維護(hù)性
軟件外部使用平均修復(fù)時(shí)間(MTTR)來度量軟件的可維護(hù)性,它是指處理一個(gè)有錯誤的軟件組件需要花費(fèi)的平均時(shí)間。
M=1/(1+MTTR)
平均修復(fù)時(shí)間需要記錄:分析問題需要的時(shí)間、確定改動方案需要的時(shí)間、執(zhí)行改動花費(fèi)的時(shí)間、測試改動花費(fèi)的時(shí)間、其他管理花費(fèi)的時(shí)間
軟件內(nèi)部,通過度量軟件的復(fù)雜性來間接度量可維護(hù)性,與軟件復(fù)雜性相關(guān)的因素包括:環(huán)路數(shù)、軟件規(guī)模、其他因素(嵌套深度、系統(tǒng)用戶數(shù))
軟件維護(hù)的分類
糾錯型維護(hù):糾正和改正在軟件使用過程中發(fā)現(xiàn)的錯誤
適應(yīng)型維護(hù):適應(yīng)變化了環(huán)境而修改軟件的活動
完善型維護(hù):為了擴(kuò)充或完善原有軟件的功能或性能而修改軟件的活動
預(yù)防型維護(hù):為了提高軟件的可維護(hù)性和可靠性,為未來進(jìn)一步改進(jìn)打下基礎(chǔ)而修改軟件的活動。
糾錯型維護(hù)、適應(yīng)維護(hù)、完善型維護(hù)是由用戶驅(qū)動的、預(yù)防型維護(hù)是由開發(fā)商驅(qū)動的。
總體上完善性維護(hù)約占50%以上,適應(yīng)性維護(hù)約占25%,糾錯型維護(hù)約占20%,預(yù)防型維護(hù)約占5%。
軟件維護(hù)的工作量
維護(hù)活動可分成生產(chǎn)類(如確認(rèn)需求、設(shè)計(jì)、編碼、測試、培訓(xùn)等)和非生產(chǎn)類(熟悉原有軟件的代碼,理解原有軟件的結(jié)構(gòu)等)
維護(hù)工作量數(shù)學(xué)模型:
M=維護(hù)的總工作量
P=生產(chǎn)類活動工作量
K=經(jīng)驗(yàn)常數(shù)
c=軟件的復(fù)雜程度
d=維護(hù)人員對軟件的熟悉程度
生產(chǎn)類維護(hù)工作量相對來說比較穩(wěn)定
由于開發(fā)混亂,導(dǎo)致軟件復(fù)雜度c增加,同時(shí)使維護(hù)人員理解軟件的難度增加,對軟件的熟悉程度d降低,維護(hù)工作量快速上升
在軟件復(fù)雜度c一定的前提下,維護(hù)人員對軟件的熟悉程度d越低,則維護(hù)工作量呈指數(shù)規(guī)律增加
影響維護(hù)工作量的其它因素包括:
維護(hù)工作本身是否規(guī)范,及維護(hù)工作對后續(xù)維護(hù)工作量的影響
軟件系統(tǒng)的類型不同維護(hù)工作量也有區(qū)別
硬件是否穩(wěn)定。
軟件維護(hù)作業(yè)的實(shí)施和管理
本質(zhì)上說,維護(hù)過程是修改和壓縮了的開發(fā)過程
1、建立維護(hù)組織
2、提出維護(hù)需求
3、實(shí)施維護(hù)作業(yè)
4、記錄維護(hù)要素
5、評價(jià)維護(hù)活動
軟件再生工程
1、篩選
2、文檔重構(gòu)
3、代碼重構(gòu)
4、數(shù)據(jù)重構(gòu)
5、逆向工程
6、重新開發(fā)