軟件工程軟件維護(hù)_第1頁(yè)
軟件工程軟件維護(hù)_第2頁(yè)
軟件工程軟件維護(hù)_第3頁(yè)
軟件工程軟件維護(hù)_第4頁(yè)
軟件工程軟件維護(hù)_第5頁(yè)
已閱讀5頁(yè),還剩72頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件工程軟件維護(hù)第一頁(yè),共七十八頁(yè),編輯于2023年,星期三軟件維護(hù)的概念軟件維護(hù)分類軟件維護(hù)活動(dòng)結(jié)構(gòu)化維護(hù)和非結(jié)構(gòu)化維護(hù)維護(hù)成本維護(hù)可能存在的問題軟件維護(hù)過程維護(hù)機(jī)構(gòu)/組織維護(hù)流程軟件維護(hù)文檔維護(hù)的副作用軟件的可維護(hù)性軟件維護(hù)的新方法軟件工程——軟件維護(hù)

第二頁(yè),共七十八頁(yè),編輯于2023年,星期三第15章 軟件維護(hù)軟件維護(hù)是軟件生命周期的最后一個(gè)階段,軟件從部署完畢到退役的整個(gè)時(shí)間內(nèi)對(duì)軟件的改動(dòng)所做的工作都是維護(hù)的內(nèi)容。在項(xiàng)目的各個(gè)階段對(duì)項(xiàng)目的可維護(hù)性進(jìn)行充分考慮、對(duì)可維護(hù)性的嚴(yán)格評(píng)審以及在維護(hù)階段有效地組織和管理維護(hù)活動(dòng),則是保證軟件可維護(hù)性和降低維護(hù)費(fèi)用的關(guān)鍵。本章重點(diǎn)內(nèi)容:維護(hù)的主要內(nèi)容、維護(hù)的流程、如何在軟件的生產(chǎn)過程各個(gè)階段保證軟件的可維護(hù)性目標(biāo)。

第三頁(yè),共七十八頁(yè),編輯于2023年,星期三第十五章軟件維護(hù)軟件后期維護(hù)費(fèi)用有時(shí)竟高達(dá)軟件總費(fèi)用的80%,所有前期開發(fā)費(fèi)用僅占20%。許多大型軟件公司為維護(hù)已有軟件耗費(fèi)大量人力、財(cái)力。因此,必須建立一套評(píng)估、控制和實(shí)施軟件維護(hù)的機(jī)制。

第四頁(yè),共七十八頁(yè),編輯于2023年,星期三軟件維護(hù)概念是指在軟件的運(yùn)行/維護(hù)階段由軟件廠商向客戶所提供的服務(wù)工作。三層含義(1)軟件的維護(hù)總是針對(duì)某一種軟件產(chǎn)品在軟件生存周期內(nèi)所進(jìn)行的活動(dòng)

(2)當(dāng)今的軟件維護(hù)更強(qiáng)調(diào)的是服務(wù)。在激烈的市場(chǎng)競(jìng)爭(zhēng)中,同類軟件產(chǎn)品的價(jià)格、功能、性能和接口等都差不多,而服務(wù)就會(huì)成為用戶選購(gòu)軟件的重要依據(jù),即“賣軟件就是賣服務(wù)”(3)軟件維護(hù)的時(shí)間是有限度的,一般而言目前軟件產(chǎn)品的免費(fèi)服務(wù)時(shí)間為兩年左右,兩年以后軟件廠商總會(huì)推出更新的版本以適應(yīng)用戶在功能、性能、接口等方面所提出的新需求,從而軟件廠商也會(huì)找到新的利潤(rùn)增長(zhǎng)點(diǎn)。第五頁(yè),共七十八頁(yè),編輯于2023年,星期三主講內(nèi)容軟件維護(hù)的分類維護(hù)活動(dòng)軟件維護(hù)過程維護(hù)的副作用軟件的可維護(hù)性軟件再工程:逆向工程和重構(gòu)工程

第六頁(yè),共七十八頁(yè),編輯于2023年,星期三15.1軟件維護(hù)的分類按照維護(hù)的起因分類:糾錯(cuò)性維護(hù)適應(yīng)性維護(hù)改善性維護(hù)/擴(kuò)充與完善性維護(hù)預(yù)防性維護(hù)四類。1.糾錯(cuò)性維護(hù)(CorrectiveMaintenance)——為改正軟件系統(tǒng)中潛藏的錯(cuò)誤而進(jìn)行的活動(dòng)。用戶在使用軟件過程中發(fā)現(xiàn)軟件的錯(cuò)誤是激發(fā)該種維護(hù)的起因。四類

第七頁(yè),共七十八頁(yè),編輯于2023年,星期三15.1軟件維護(hù)的分類2.適應(yīng)性維護(hù)(AdaptiveMaintenance)——為適應(yīng)軟件運(yùn)行環(huán)境的變化而修改軟件的活動(dòng)。軟件的運(yùn)行環(huán)境包括兩個(gè)方面,硬件和軟件,軟件則大體上包括操作系統(tǒng)、中間件、虛擬機(jī)等等。

第八頁(yè),共七十八頁(yè),編輯于2023年,星期三15.1軟件維護(hù)的分類3.改善性維護(hù)(PerfectiveMaintenance)——根據(jù)用戶在軟件使用過程中提出的建設(shè)性意見而進(jìn)行的維護(hù)活動(dòng)。主要是針對(duì)用戶提出的新的軟件需求或修改原有的軟件需求而進(jìn)行的維護(hù),該種維護(hù)通常占所有維護(hù)工作量的一半以上。軟件在部署之后一段時(shí)間內(nèi),用戶的改善性維護(hù)應(yīng)該是遞減的。

第九頁(yè),共七十八頁(yè),編輯于2023年,星期三15.1軟件維護(hù)的分類4.預(yù)防性維護(hù)(PreventiveMaintenance)——為了進(jìn)一步改善軟件系統(tǒng)的可維護(hù)性和可靠性,并為以后的改進(jìn)奠定基礎(chǔ)。預(yù)防性維護(hù)可以采取逆向工程(reverseengineering)和重構(gòu)工程(re-engineering)方式。

第十頁(yè),共七十八頁(yè),編輯于2023年,星期三15.1軟件維護(hù)的分類預(yù)防性維護(hù)即軟件再工程,是為了提高軟件的可維護(hù)性、可靠性等,為以后進(jìn)一步改進(jìn)軟件打下良好基礎(chǔ)。預(yù)防性維護(hù)定義為:采用先進(jìn)的軟件工程方法對(duì)需要維護(hù)的軟件或軟件中的某一部分(重新)進(jìn)行設(shè)計(jì)、編制和測(cè)試。

第十一頁(yè),共七十八頁(yè),編輯于2023年,星期三軟件維護(hù)的種類完善性維護(hù)(perfectivemaintenance)完善和加強(qiáng)產(chǎn)品的功能與性能,以滿足用戶日益增長(zhǎng)的需要。50%適應(yīng)性維護(hù)(adaptivemaintenance)使軟件適應(yīng)運(yùn)行環(huán)境的變化。25%糾錯(cuò)性維護(hù)(correctivemaintenance)糾正在開發(fā)期間未能發(fā)現(xiàn)的遺留錯(cuò)誤。21%預(yù)防性維護(hù)(preventivemaintenance)4%為了進(jìn)一步改善軟件的可靠性和易維護(hù)性,或者為將來的維護(hù)奠定更好的基礎(chǔ)而對(duì)軟件進(jìn)行修改。

第十二頁(yè),共七十八頁(yè),編輯于2023年,星期三各類維護(hù)活動(dòng)的根本目的是延長(zhǎng)軟件生存期其它維護(hù)4%軟件生存周期軟件誕生計(jì)劃分析設(shè)計(jì)編碼測(cè)試運(yùn)行和維護(hù)(簡(jiǎn)稱維護(hù))改善期穩(wěn)定期陳舊期1年-10年2個(gè)月-2年重構(gòu)軟件工程周期15.1軟件維護(hù)的分類

第十三頁(yè),共七十八頁(yè),編輯于2023年,星期三軟件維護(hù)的概念軟件維護(hù)分類軟件維護(hù)活動(dòng)結(jié)構(gòu)化維護(hù)和非結(jié)構(gòu)化維護(hù)維護(hù)成本維護(hù)可能存在的問題軟件維護(hù)過程維護(hù)機(jī)構(gòu)/組織維護(hù)流程軟件維護(hù)文檔維護(hù)的副作用軟件的可維護(hù)性軟件維護(hù)的新方法軟件工程——軟件維護(hù)

第十四頁(yè),共七十八頁(yè),編輯于2023年,星期三15.2軟件維護(hù)活動(dòng)軟件維護(hù)是一種繁瑣而又不可或缺的工作,由于維護(hù)通常要求維護(hù)人員在用戶現(xiàn)場(chǎng)進(jìn)行,而且維護(hù)任務(wù)可能非常緊急,因此對(duì)現(xiàn)場(chǎng)維護(hù)人員的壓力很大。而且沒有絲毫的成就感。

第十五頁(yè),共七十八頁(yè),編輯于2023年,星期三15.2.1結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)非結(jié)構(gòu)化維護(hù)——軟件的配置中只有源代碼。由于沒有分析和設(shè)計(jì)文檔,無法對(duì)程序的功能進(jìn)行反向追蹤,理解別人的代碼是很痛苦的事情。由于配置中沒有測(cè)試文檔,所以維護(hù)后的代碼無法進(jìn)行回歸測(cè)試。因而導(dǎo)致程序的結(jié)構(gòu)化被不斷的破壞,維護(hù)的質(zhì)量無法得到保證。

第十六頁(yè),共七十八頁(yè),編輯于2023年,星期三15.2.1結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)結(jié)構(gòu)化維護(hù)——待維護(hù)的軟件的配置是完整的。用戶提出的維護(hù)申請(qǐng)用正向追蹤很容易從分析設(shè)計(jì)文檔追蹤直至代碼中,從而使維護(hù)人員很容易定位代碼的維護(hù)點(diǎn)。所以這種維護(hù)不會(huì)破壞軟件的結(jié)構(gòu)。結(jié)構(gòu)化維護(hù)不僅能減少維護(hù)的工作量,還能提高維護(hù)的質(zhì)量。

第十七頁(yè),共七十八頁(yè),編輯于2023年,星期三15.2.1結(jié)構(gòu)化與非結(jié)構(gòu)化的維護(hù)

第十八頁(yè),共七十八頁(yè),編輯于2023年,星期三15.2.2維護(hù)成本20世紀(jì)70年代,軟件的維護(hù)費(fèi)用約占軟件總預(yù)算的35~40%。80年代時(shí),軟件維護(hù)費(fèi)用進(jìn)一步增加,約占軟件總預(yù)算的60%。近年來,該值已上升到80%左右。隨著軟件復(fù)雜性的不斷提高,軟件的維護(hù)難度越來越大。這不僅導(dǎo)致維護(hù)成本不斷增高,軟件生產(chǎn)率急劇下降,還會(huì)帶來其他方面的負(fù)面影響。

第十九頁(yè),共七十八頁(yè),編輯于2023年,星期三15.2.2維護(hù)成本其他因素也已經(jīng)引起人們的注意。如:由于資源(人力、設(shè)備)優(yōu)先用于維護(hù)任務(wù),影響新軟件系統(tǒng)的開發(fā),可能會(huì)喪失機(jī)會(huì);有時(shí)還要付出一些無形的代價(jià),如某些貌似合理但實(shí)際不能滿足的維護(hù)請(qǐng)求將引起用戶不滿;在軟件維護(hù)過程中引入的潛在錯(cuò)誤降低了軟件的質(zhì)量;從開發(fā)小組中臨時(shí)抽調(diào)工程師從事維護(hù)工作沖擊正在進(jìn)行的開發(fā)等等。最后,維護(hù)舊程序使生產(chǎn)率(按每人月代碼行或每人月功能點(diǎn)計(jì)算)大幅度下降。

第二十頁(yè),共七十八頁(yè),編輯于2023年,星期三15.2.2維護(hù)成本估算模型MP+Ke=(c-d)M

:維護(hù)工作總工作量P:生產(chǎn)性工作量K

:

經(jīng)驗(yàn)常數(shù)c:復(fù)雜度d:對(duì)該軟件熟悉程度的度量

第二十一頁(yè),共七十八頁(yè),編輯于2023年,星期三15.2.3維護(hù)可能存在的問題1)無法追蹤軟件的整個(gè)創(chuàng)建過程。2)無法追蹤軟件版本的進(jìn)化過程。軟件交付使用后對(duì)軟件不斷修復(fù)和完善的過程,就是軟件版本的進(jìn)化過程,每一次進(jìn)化都會(huì)使軟件的主、次版本號(hào)增大。3)理解別人的程序非常困難。4)得不到開發(fā)人員的幫助。5)軟件配置不完整或不正確。6)分析和設(shè)計(jì)的缺陷。7)維護(hù)工作讓人沒有成就感。

第二十二頁(yè),共七十八頁(yè),編輯于2023年,星期三15.2.3維護(hù)可能存在的問題軟件維護(hù)中出現(xiàn)的大部分問題都可歸咎于軟件規(guī)劃和開發(fā)方法的缺陷。軟件開發(fā)時(shí)采用急功近利還是放眼未來的態(tài)度,對(duì)軟件維護(hù)影響極大。一般說來,軟件開發(fā)若不嚴(yán)格遵循軟件開發(fā)標(biāo)準(zhǔn),軟件維護(hù)就會(huì)遇到許多困難。

第二十三頁(yè),共七十八頁(yè),編輯于2023年,星期三15.2.4影響軟件維護(hù)工作量的因素在軟件維護(hù)中,影響維護(hù)工作量的因素主要有以下六種:系統(tǒng)的大小 系統(tǒng)規(guī)模越大,其功能就越復(fù)雜,軟件維護(hù)的工作量也隨之增大。程序設(shè)計(jì)語言 使用功能強(qiáng)大的程序設(shè)計(jì)語言可以控制程序的規(guī)模。語言的功能越強(qiáng),生成程序的模塊化和結(jié)構(gòu)化程度越高,所需的指令數(shù)就越少,程序的可讀性越好。Tobecontinue……

第二十四頁(yè),共七十八頁(yè),編輯于2023年,星期三系統(tǒng)年齡 系統(tǒng)使用時(shí)間越長(zhǎng),所進(jìn)行的修改就越多,而多次的修改可能造成系統(tǒng)結(jié)構(gòu)混亂。由于維護(hù)人員經(jīng)常更換,程序變得越來越難于理解,加之系統(tǒng)開發(fā)時(shí)文檔不齊全,或在長(zhǎng)期的維護(hù)過程中文檔在許多地方與程序?qū)崿F(xiàn)不一致,從而使維護(hù)變得十分困難。數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用 使用數(shù)據(jù)庫(kù),可以簡(jiǎn)單而有效地存儲(chǔ)、管理系統(tǒng)數(shù)據(jù),還可以減少生成用戶報(bào)表應(yīng)用軟件的維護(hù)工作量。Tobecontinue……

15.2.4影響軟件維護(hù)工作量的因素第二十五頁(yè),共七十八頁(yè),編輯于2023年,星期三先進(jìn)的軟件開發(fā)技術(shù)

在軟件開發(fā)過程中,如果采用先進(jìn)的分析設(shè)計(jì)技術(shù)和程序設(shè)計(jì)技術(shù),如面向?qū)ο蠹夹g(shù)、復(fù)用技術(shù)等,可減少大量的維護(hù)工作量。其它一些因素 如應(yīng)用的類型、數(shù)學(xué)模型、任務(wù)的難度、開關(guān)與標(biāo)記、IF嵌套深度、索引或下標(biāo)數(shù)等,對(duì)維護(hù)工作量也有影響。

15.2.4影響軟件維護(hù)工作量的因素第二十六頁(yè),共七十八頁(yè),編輯于2023年,星期三軟件維護(hù)的概念軟件維護(hù)分類軟件維護(hù)活動(dòng)結(jié)構(gòu)化維護(hù)和非結(jié)構(gòu)化維護(hù)維護(hù)成本維護(hù)可能存在的問題軟件維護(hù)過程維護(hù)機(jī)構(gòu)/組織維護(hù)流程軟件維護(hù)文檔維護(hù)的副作用軟件的可維護(hù)性軟件維護(hù)的新方法軟件工程——軟件維護(hù)

第二十七頁(yè),共七十八頁(yè),編輯于2023年,星期三15.3軟件維護(hù)過程軟件維護(hù)工作在維護(hù)申請(qǐng)?zhí)岢鲋熬烷_始了,它必須是一項(xiàng)有組織有制度的工作,包括:建立維護(hù)組織,強(qiáng)制報(bào)告和評(píng)估的過程;為每個(gè)維護(hù)申請(qǐng)確定標(biāo)準(zhǔn)化的事件序列;制定保存維護(hù)活動(dòng)記錄的制度和有關(guān)復(fù)審及評(píng)估的標(biāo)準(zhǔn)。每項(xiàng)軟件維護(hù)活動(dòng)的過程是:維護(hù)申請(qǐng)→制定維護(hù)計(jì)劃→進(jìn)行維護(hù)活動(dòng)→建立維護(hù)文檔→復(fù)審/評(píng)價(jià)維護(hù)

第二十八頁(yè),共七十八頁(yè),編輯于2023年,星期三維護(hù)策略為維護(hù)工作制訂流程所有維護(hù)必須先提交維護(hù)申請(qǐng),維護(hù)申請(qǐng)必須規(guī)范軟件維護(hù)要有計(jì)劃在維護(hù)過程中需做維護(hù)記錄對(duì)源程序進(jìn)行修改軟件配置的修改15.3軟件維護(hù)過程

第二十九頁(yè),共七十八頁(yè),編輯于2023年,星期三15.3軟件維護(hù)過程

15.3.1維護(hù)機(jī)構(gòu)/組織

維護(hù)組織一般由維護(hù)員,維護(hù)管理員,系統(tǒng)管理員,修改控制決策機(jī)構(gòu),配置管理員組成。維護(hù)員——真正執(zhí)行維護(hù)的人員;維護(hù)管理員——協(xié)調(diào)維護(hù)活動(dòng)的人員;系統(tǒng)管理員——系統(tǒng)的管理者;修改控制決策機(jī)構(gòu)——決定一次維護(hù)的走向。修改控制和決策機(jī)構(gòu)、用戶、系統(tǒng)管理員、維護(hù)人員之間不能跨越維護(hù)管理員進(jìn)行溝通和采取行動(dòng)。

第三十頁(yè),共七十八頁(yè),編輯于2023年,星期三15.3.1維護(hù)機(jī)構(gòu)/組織

第三十一頁(yè),共七十八頁(yè),編輯于2023年,星期三15.3.1維護(hù)機(jī)構(gòu)/組織除了較大的軟件開發(fā)公司外,一個(gè)軟件(產(chǎn)品)的維護(hù)工作,并不需要一定設(shè)立一個(gè)專門的維護(hù)組織機(jī)構(gòu)。至少,在開發(fā)部門建立一個(gè)非正式的維護(hù)機(jī)構(gòu)則是非常必要的。維護(hù)需求往往是隨機(jī)發(fā)生的。維護(hù)申請(qǐng)?zhí)峤唤o維護(hù)管理員,并由系統(tǒng)監(jiān)督員評(píng)價(jià)。如果系統(tǒng)監(jiān)督員做出需要維護(hù)的評(píng)價(jià),維護(hù)負(fù)責(zé)人確定如何進(jìn)行維護(hù)。在維護(hù)人員進(jìn)行維護(hù)的過程中,配置管理員嚴(yán)格把關(guān),控制維護(hù)的范圍,對(duì)軟件配置進(jìn)行審計(jì)。

第三十二頁(yè),共七十八頁(yè),編輯于2023年,星期三15.3.2維護(hù)的報(bào)告與審核用戶提出的維護(hù)申請(qǐng)必須采用標(biāo)準(zhǔn)的格式,須填寫由維護(hù)人員制定的:維護(hù)申請(qǐng)單(MaintenanceRequestForm,MRF)或軟件問題報(bào)告單(SoftwareProblemReport,SPR)。如果是糾錯(cuò)性維護(hù),應(yīng)填寫SPR。在填寫SPR時(shí),用戶必須完整地記錄出錯(cuò)信息(什么錯(cuò)誤)和出錯(cuò)場(chǎng)景(在什么情況下出現(xiàn)的錯(cuò)誤)。其他種類的維護(hù),要填MRF。在MRF中應(yīng)該附加簡(jiǎn)短的修改規(guī)格說明,也就是在需求規(guī)格說明書中應(yīng)作哪些改動(dòng),比如增加功能或修改功能等。

第三十三頁(yè),共七十八頁(yè),編輯于2023年,星期三15.3.2維護(hù)的報(bào)告與審核維護(hù)管理員將MRF后之提交給系統(tǒng)管理員,并據(jù)此對(duì)軟件改動(dòng)量作評(píng)估。系統(tǒng)管理員核準(zhǔn)該維護(hù)申請(qǐng)后,維護(hù)組織內(nèi)部要制定一個(gè)軟件修改報(bào)告單(SoftwareChangeReport,SCR),MRF并不是軟件文檔的配置項(xiàng)。而軟件修改的真正依據(jù)是SCR,其內(nèi)容如下:

1)本次修改所需工作量;

2)本次維護(hù)活動(dòng)的性質(zhì);

3)本次維護(hù)請(qǐng)求的優(yōu)先級(jí);

4)本次修改的背景數(shù)據(jù)(來自于MRF或SPR的陳述)。將SCR提交給修改控制決策機(jī)構(gòu),作為維護(hù)進(jìn)一步工作的依據(jù)。SCR是保證軟件版本進(jìn)化可跟蹤性所必須的文檔。

第三十四頁(yè),共七十八頁(yè),編輯于2023年,星期三15.3.3維護(hù)過程的事件流用戶的維護(hù)請(qǐng)求提交給維護(hù)組織后的信息流程如圖15-4-2所示。收到維護(hù)請(qǐng)求后,維護(hù)組織首先要判斷維護(hù)的類型,即本次維護(hù)請(qǐng)求是糾錯(cuò)性維護(hù)還是其他類型的維護(hù)。對(duì)于糾錯(cuò)維護(hù)要啟動(dòng)糾錯(cuò)維護(hù)流程,如果是其他類型的維護(hù)則啟動(dòng)適應(yīng)性或改善性維護(hù)流程。用戶和維護(hù)組織有時(shí)會(huì)對(duì)維護(hù)的類型有不同的看法。

第三十五頁(yè),共七十八頁(yè),編輯于2023年,星期三15.3.3維護(hù)活動(dòng)的事件流第三十六頁(yè),共七十八頁(yè),編輯于2023年,星期三軟件維護(hù)的實(shí)施步驟嚴(yán)重性評(píng)價(jià)錯(cuò)誤分析優(yōu)先度評(píng)價(jià)維護(hù)過程配置復(fù)審問題分析區(qū)分類型糾錯(cuò)項(xiàng)目表維護(hù)人員名單⊕⊕完善適應(yīng)糾錯(cuò)開發(fā)項(xiàng)目表⊕高低已修改的配置批準(zhǔn)交付用戶的配置已修改的軟件測(cè)試**維護(hù)人員名單嚴(yán)重不嚴(yán)重⊕

第三十七頁(yè),共七十八頁(yè),編輯于2023年,星期三15.3.3維護(hù)過程的事件流⑴確認(rèn)維護(hù)類型⑵實(shí)施維護(hù)⑶維護(hù)評(píng)審

第三十八頁(yè),共七十八頁(yè),編輯于2023年,星期三軟件維護(hù)的管理流程

維護(hù)修改建議

分析修改建議是否合理提交管理部門審查是否同意修改撤銷NYNY進(jìn)行測(cè)試

提交管理部門審批是否批準(zhǔn)更新主文檔Y

更新其他文檔

提交使用修改N第三十九頁(yè),共七十八頁(yè),編輯于2023年,星期三15.3.4保存維護(hù)記錄為了能夠很好地評(píng)價(jià)維護(hù)的有效性,必須詳細(xì)記錄軟件維護(hù)過程中的各種數(shù)據(jù),這些數(shù)據(jù)包括:(1)程序標(biāo)志;(2)源程序行數(shù);(3)目標(biāo)程序的指令條數(shù);(4)所用的編程語言;(5)安裝程序的日期;(6)自安裝之日起程序運(yùn)行的次數(shù);(7)自安裝之日起程序失敗的次數(shù);(8)程序修改處的層數(shù)和標(biāo)志;

第四十頁(yè),共七十八頁(yè),編輯于2023年,星期三15.3.4保存維護(hù)記錄(9)因程序變動(dòng)而增加和刪除的源程序行數(shù);(10)每處改動(dòng)所耗費(fèi)的人時(shí)數(shù);(11)程序改動(dòng)的日期;(12)軟件工程師標(biāo)志;(13)MRF的標(biāo)志;(14)本次維護(hù)的類型;(15)維護(hù)開始和結(jié)束的日期;(16)用于本次維護(hù)累計(jì)的人時(shí)數(shù);(17)執(zhí)行本次維護(hù)的純利潤(rùn)。上述數(shù)據(jù)應(yīng)保存到維護(hù)數(shù)據(jù)庫(kù)里,作為維護(hù)評(píng)價(jià)的依據(jù)。

第四十一頁(yè),共七十八頁(yè),編輯于2023年,星期三15.3.5評(píng)價(jià)維護(hù)活動(dòng)通過每次維護(hù)活動(dòng)的詳細(xì)記錄,可通過下面的指標(biāo)度量維護(hù)的有效性:(1)程序運(yùn)行的平均失效次數(shù)(失效次數(shù)/運(yùn)行的次數(shù));(2)維護(hù)活動(dòng)耗費(fèi)的總?cè)藭r(shí)數(shù);(3)各種程序,及各種語言的平均變動(dòng)數(shù);(4)維護(hù)階段修改每條語句所花費(fèi)的人時(shí)數(shù);(5)維護(hù)每種語言的程序平均花費(fèi)的人時(shí)數(shù);(6)一張MRF的平均周轉(zhuǎn)時(shí)間;(7)各類維護(hù)請(qǐng)求的百分比。

第四十二頁(yè),共七十八頁(yè),編輯于2023年,星期三15.3.6軟件維護(hù)的實(shí)施軟件維護(hù),最終落實(shí)在修改源程序和文檔上。為了正確、有效地修改源程序,通常要先分析和理解源程序,然后修改源程序,最后重新檢查和驗(yàn)證源程序

第四十三頁(yè),共七十八頁(yè),編輯于2023年,星期三15.3.6軟件維護(hù)的實(shí)施修改源程序的三個(gè)步驟分析和理解程序修改程序重新驗(yàn)證程序靜態(tài)確認(rèn)計(jì)算機(jī)確認(rèn)維護(hù)后的驗(yàn)收

第四十四頁(yè),共七十八頁(yè),編輯于2023年,星期三軟件維護(hù)的概念軟件維護(hù)分類軟件維護(hù)活動(dòng)結(jié)構(gòu)化維護(hù)和非結(jié)構(gòu)化維護(hù)維護(hù)成本維護(hù)可能存在的問題軟件維護(hù)過程維護(hù)機(jī)構(gòu)/組織維護(hù)流程軟件維護(hù)文檔維護(hù)的副作用軟件的可維護(hù)性軟件維護(hù)的新方法軟件工程——軟件維護(hù)

第四十五頁(yè),共七十八頁(yè),編輯于2023年,星期三15.4維護(hù)的副作用軟件修改是一項(xiàng)很危險(xiǎn)的工作,對(duì)一個(gè)復(fù)雜的邏輯過程,那怕做一項(xiàng)微小的改動(dòng),都可能引入潛在的錯(cuò)誤,雖然設(shè)計(jì)文檔化和細(xì)致的回歸測(cè)試有助于排除錯(cuò)誤,但是維護(hù)仍然會(huì)產(chǎn)生副作用。一次修改5-10個(gè)語句,成功率50%;一次修改40-50個(gè)語句,成功的可能性20%;每糾正一個(gè)錯(cuò)誤平均需修改17條指令。

第四十六頁(yè),共七十八頁(yè),編輯于2023年,星期三15.4維護(hù)的副作用軟件修改是一項(xiàng)很危險(xiǎn)的工作,對(duì)一個(gè)復(fù)雜的邏輯過程,那怕做一項(xiàng)微小的改動(dòng),都可能引入潛在的錯(cuò)誤,雖然設(shè)計(jì)文檔化和細(xì)致的回歸測(cè)試有助于排除錯(cuò)誤,但是維護(hù)仍然會(huì)產(chǎn)生副作用。軟件維護(hù)的副作用指,由于維護(hù)或在維護(hù)過程中其他一些不期望的行為引入的錯(cuò)誤,副作用大致可分為三類:(1)代碼副作用(2)數(shù)據(jù)副作用(3)文檔的副作用

第四十七頁(yè),共七十八頁(yè),編輯于2023年,星期三15.4維護(hù)的副作用維護(hù)的副作用是指,由于維護(hù)或在維護(hù)過程中其他一些不期望的行為引入的錯(cuò)誤。副作用可分三類:(1)代碼副作用—下面的修改最易引起副作用: ①修改或刪除子程序; ②修改或刪除語句標(biāo)號(hào); ③修改或刪除標(biāo)識(shí)符; ④為提高程序效率而做的修改; ⑤修改邏輯操作符; ⑥由設(shè)計(jì)變動(dòng)引起的代碼修改; ⑦修改分支處的判斷條件;代碼副作用大多數(shù)可在回歸測(cè)試中發(fā)現(xiàn)。

第四十八頁(yè),共七十八頁(yè),編輯于2023年,星期三15.4維護(hù)的副作用(2)數(shù)據(jù)副作用數(shù)據(jù)副作用是由于修改數(shù)據(jù)結(jié)構(gòu)帶來的副作用。容易引起數(shù)據(jù)副作用的修改包括: ①局部和全局常量的再定義; ②記錄或文件格式的再定義; ③增減數(shù)據(jù)或是由于修改數(shù)據(jù)結(jié)構(gòu)的定義導(dǎo)致數(shù)據(jù)結(jié)構(gòu)長(zhǎng)度的改變; ④修改全局?jǐn)?shù)據(jù); ⑤重新初始化控制標(biāo)志和指針; ⑥重新排列I/O表或子程序參數(shù)表。設(shè)計(jì)文檔化有助于抑制數(shù)據(jù)副作用,在設(shè)計(jì)文檔中有關(guān)于數(shù)據(jù)結(jié)構(gòu)的詳細(xì)描述和交叉訪問表。

第四十九頁(yè),共七十八頁(yè),編輯于2023年,星期三15.4維護(hù)的副作用(3)文檔副作用由于程序修改而沒有對(duì)文檔進(jìn)行相應(yīng)的修改引起文檔的副作用。必須保持文檔和程序的一致性。每次維護(hù)之后,再次交付軟件之前應(yīng)仔細(xì)評(píng)審整個(gè)配置,這樣才能更好地減少文檔的副作用。

第五十頁(yè),共七十八頁(yè),編輯于2023年,星期三軟件維護(hù)的概念軟件維護(hù)分類軟件維護(hù)活動(dòng)結(jié)構(gòu)化維護(hù)和非結(jié)構(gòu)化維護(hù)維護(hù)成本維護(hù)可能存在的問題軟件維護(hù)過程維護(hù)機(jī)構(gòu)/組織維護(hù)流程軟件維護(hù)文檔維護(hù)的副作用軟件的可維護(hù)性軟件維護(hù)的新方法軟件工程——軟件維護(hù)

第五十一頁(yè),共七十八頁(yè),編輯于2023年,星期三15.5軟件的可維護(hù)性可維護(hù)性(maintainability)軟件的可維護(hù)性是指軟件被理解和被正確改動(dòng)的難易程度。軟件的可維護(hù)性差是軟件維護(hù)工作量和費(fèi)用激增的直接原因,因此在軟件工程的各個(gè)階段都要保證軟件具有較高可維護(hù)性,從而降低軟件維護(hù)成本,這是軟件工程的重要目標(biāo)之一。

第五十二頁(yè),共七十八頁(yè),編輯于2023年,星期三15.5.1影響可維護(hù)性的因素軟件的可維護(hù)性主要受下面因素影響:(1)軟件的構(gòu)造過程是否嚴(yán)格按照軟件工程的方法進(jìn)行;(2)開發(fā)團(tuán)隊(duì)是否訓(xùn)練有素;(3)軟件的開發(fā)平臺(tái)(操作系統(tǒng)和開發(fā)語言)是否標(biāo)準(zhǔn)。總結(jié)起來就是:開發(fā)團(tuán)隊(duì)(人)是否使用了通用的工具采用標(biāo)準(zhǔn)的方法來構(gòu)造軟件。

第五十三頁(yè),共七十八頁(yè),編輯于2023年,星期三15.5.2可維護(hù)性的度量通過維護(hù)記錄可間接度量可維護(hù)性。(1)問題、收集維護(hù)工具以及分析問題所用的時(shí)間;(2)形成修改說明書所用的時(shí)間;(3)修改設(shè)計(jì)和源代碼所用的時(shí)間;(4)測(cè)試所用時(shí)間;(5)復(fù)審所用時(shí)間;(6)完全恢復(fù)所用時(shí)間。以上時(shí)間越短則軟件的可維護(hù)性越好。

第五十四頁(yè),共七十八頁(yè),編輯于2023年,星期三15.5.3文檔與軟件的可維護(hù)性文檔文檔是影響軟件可維護(hù)性的決定因素。由于長(zhǎng)期使用的大型軟件系統(tǒng)在使用過程中必然會(huì)經(jīng)受多次修改,所以文檔比程序代碼更重要。文檔類型用戶文檔描述系統(tǒng)功能和使用方法,不關(guān)心這些功能是怎樣實(shí)現(xiàn)的;系統(tǒng)文檔描述系統(tǒng)設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試等各方面的內(nèi)容。

第五十五頁(yè),共七十八頁(yè),編輯于2023年,星期三15.5.3可維護(hù)性復(fù)審在軟件工程每一階段的復(fù)審中,可維護(hù)性都是一個(gè)重要的指標(biāo)。在需求分析階段的復(fù)審中,應(yīng)在規(guī)格說明書中對(duì)將來可能修改和可以改進(jìn)的部分加以注明;在設(shè)計(jì)階段的復(fù)審中,應(yīng)該從易于維護(hù)和提高設(shè)計(jì)總體質(zhì)量的角度對(duì)設(shè)計(jì)進(jìn)行全面評(píng)審;代碼復(fù)審主要審查代碼風(fēng)格和內(nèi)部文檔(程序注釋等)這兩個(gè)直接影響可維護(hù)性的因素。最后,每一階段性測(cè)試,直到軟件正式交付之前,都應(yīng)該進(jìn)行的預(yù)防性維護(hù)。正式的可維護(hù)性復(fù)審放在測(cè)試完成之后,稱為配置復(fù)審。目的是保證配置中所有成分的完整、一致、易于理解且便于修改控制。

第五十六頁(yè),共七十八頁(yè),編輯于2023年,星期三主講內(nèi)容軟件維護(hù)的分類維護(hù)活動(dòng)軟件維護(hù)過程維護(hù)的副作用軟件的可維護(hù)性軟件再工程:逆向工程和重構(gòu)工程

第五十七頁(yè),共七十八頁(yè),編輯于2023年,星期三預(yù)防性維護(hù)開發(fā)和維護(hù)者不應(yīng)等待用戶的維護(hù)申請(qǐng),可先選擇以下類型程序作為預(yù)防性維護(hù)對(duì)象:預(yù)計(jì)若干年內(nèi)將繼續(xù)使用的程序當(dāng)今正成功使用的程序最近的將來要進(jìn)行大修改和完善的程序15.6軟件再工程

第五十八頁(yè),共七十八頁(yè),編輯于2023年,星期三15.6軟件再工程怎樣維護(hù)老程序?(1)反復(fù)多次地做修改程序的嘗試,與不可見的設(shè)計(jì)及源代碼“頑強(qiáng)戰(zhàn)斗”,以實(shí)現(xiàn)所要求的修改;(2)通過仔細(xì)分析程序盡可能多地掌握程序的內(nèi)部工作細(xì)節(jié),以便更有效地修改它;(3)在深入理解原有設(shè)計(jì)的基礎(chǔ)上,用軟件工程方法重新設(shè)計(jì)、重新編碼和測(cè)試那些需要變更的軟件部分;(4)以軟件工程方法學(xué)為指導(dǎo),對(duì)程序全部重新設(shè)計(jì)、重新編碼和測(cè)試,為此可以使用CASE工具(逆向工程和再工程工具)來幫助理解原有的設(shè)計(jì)預(yù)防性維護(hù)方法“把今天的方法學(xué)應(yīng)用到昨天的系統(tǒng)上,以支持明天的需求。”----Miller

第五十九頁(yè),共七十八頁(yè),編輯于2023年,星期三15.6軟件再工程事實(shí)原因(1)維護(hù)一行源代碼的代價(jià)可能是最初開發(fā)該行源代碼代價(jià)的14-40倍;(2)重新設(shè)計(jì)軟件體系結(jié)構(gòu)(程序及數(shù)據(jù)結(jié)構(gòu))時(shí)使用了現(xiàn)代設(shè)計(jì)概念,它對(duì)將來的維護(hù)可能有很大的幫助;(3)由于現(xiàn)有的程序版本可作為軟件原型使用,開發(fā)生產(chǎn)率可大大高于平均水平;(4)用戶具有較多使用該軟件的經(jīng)驗(yàn),因此,能夠很容易地搞清新的變更需求和變更的范圍;(5)利用逆向工程和再工程的工具,可以使一部分工作自動(dòng)化;(6)在完成預(yù)防性維護(hù)的過程中可以建立起完整的軟件配置。

第六十頁(yè),共七十八頁(yè),編輯于2023年,星期三15.6軟件再工程逆向工程(reverseengineering):指在軟件生存周期中,將軟件的某種形式描述轉(zhuǎn)換成更抽象形式的活動(dòng)重構(gòu)(restructuring):指在同一抽象級(jí)別上轉(zhuǎn)換系統(tǒng)的描述形式。如把C++程序轉(zhuǎn)換成Java程序設(shè)計(jì)恢復(fù)(designrecovery):指借助工具從已有程序中抽象出有關(guān)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、總體結(jié)構(gòu)設(shè)計(jì)和過程設(shè)計(jì)的信息。

第六十一頁(yè),共七十八頁(yè),編輯于2023年,星期三15.6軟件再工程1什么是軟件再工程

軟件再工程是一類軟件工程活動(dòng),是一個(gè)工程過程,它將逆向工程、重構(gòu)和正向工程組合起來,將現(xiàn)存系統(tǒng)重新構(gòu)造為新的形式。

第六十二頁(yè),共七十八頁(yè),編輯于2023年,星期三15.6軟件再工程ReverseEngineering解剖分析競(jìng)爭(zhēng)對(duì)手或已有的老產(chǎn)品,以獲取產(chǎn)品的設(shè)計(jì),制造機(jī)密。分析已有的程序(或某種形式的描述),將程序(或其它描述)轉(zhuǎn)換成某種更高級(jí)的,更易于理解的抽象形式。Re-Engineering在逆向工程所獲信息的基礎(chǔ)上修改或用新的、規(guī)范的工程方法重構(gòu)已有的系統(tǒng)的一個(gè)新的版本。

第六十三頁(yè),共七十八頁(yè),編輯于2023年,星期三15.6軟件再工程2為什么軟件再工程在軟件復(fù)用中,有問題是與現(xiàn)有系統(tǒng)密切相關(guān)的例如:

現(xiàn)有軟件系統(tǒng)如何適應(yīng)當(dāng)前技術(shù)的發(fā)展及需求的變化,采用更易于理解的、適應(yīng)變化的、可復(fù)用的系統(tǒng)軟件構(gòu)架并提煉出可復(fù)用的軟件構(gòu)件?

現(xiàn)存大量的遺產(chǎn)軟件系統(tǒng)(LegacySoftware)由于技術(shù)的發(fā)展,正逐漸退出使用,如何對(duì)這些系統(tǒng)進(jìn)行挖掘、整理,得到有用的軟件構(gòu)件?

已有的軟件構(gòu)件隨著時(shí)間的流逝會(huì)逐漸變得不可使用,如何對(duì)它們進(jìn)行維護(hù),以延長(zhǎng)其生命期,充分利用這些可復(fù)用構(gòu)件?

第六十四頁(yè),共七十八頁(yè),編輯于2023年,星期三軟件再工程(SoftwareReengineering)正是解決上述問題的主要技術(shù)手段。再工程的基礎(chǔ)是系統(tǒng)理解,包括對(duì)運(yùn)行系統(tǒng)、源代碼、設(shè)計(jì)、分析、文檔等的全面理解。但在很多情況下,由于各類文檔的丟失,只能對(duì)源代碼進(jìn)行理解,即程序理解。

它能夠使我們:

增進(jìn)對(duì)軟件的理解;

提高軟件自身的可維護(hù)性、復(fù)用性或演化性.軟件再工程比其它系統(tǒng)進(jìn)化方法具有的絕對(duì)優(yōu)勢(shì)減少軟件演化風(fēng)險(xiǎn)降低成本第六十五頁(yè),共七十八頁(yè),編輯于2023年,星期三

需求規(guī)范軟件設(shè)計(jì)1程序正向工程逆向工程軟件設(shè)計(jì)2重構(gòu)

設(shè)計(jì)恢復(fù)

15.6.1軟件再工程過程模型逆向工程和重構(gòu)工程示意圖第六十六頁(yè),共七十八頁(yè),編輯于2023年,星期三代碼重構(gòu)數(shù)據(jù)重構(gòu)正向工程庫(kù)存目錄分析文檔重構(gòu)逆向工程15.6.1軟件再工程過程模型

第六十七頁(yè),共七十八頁(yè),編輯于2023年,星期三15.6.2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論