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

下載本文檔

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

文檔簡介

1、第8章 軟件維護(hù)軟件工程課件軟件工程課件ch08ch08軟件維護(hù)軟件維護(hù)第8章 軟件維護(hù)第8章 軟件維護(hù)第8章 軟件維護(hù)2022年6月30日第4頁教學(xué)內(nèi)容教學(xué)內(nèi)容8.1 軟件維護(hù)概述軟件維護(hù)概述8.2 軟件維護(hù)的過程軟件維護(hù)的過程8.3 軟件可維護(hù)性軟件可維護(hù)性8.4 軟件維護(hù)中存在的問題軟件維護(hù)中存在的問題8.5 再工程和逆向工程再工程和逆向工程8.6 本章小結(jié)和習(xí)題本章小結(jié)和習(xí)題 第8章 軟件維護(hù)2022年6月30日第5頁8.1 軟件維護(hù)概述軟件維護(hù)概述軟件系統(tǒng)開發(fā)完成交付用戶使用后,就進(jìn)入軟件的運(yùn)軟件系統(tǒng)開發(fā)完成交付用戶使用后,就進(jìn)入軟件的運(yùn)行維護(hù)階段。行維護(hù)階段。軟件維護(hù)的工作量大,而

2、且隨著軟件數(shù)量的增多和使軟件維護(hù)的工作量大,而且隨著軟件數(shù)量的增多和使用壽命的延長,軟件維護(hù)的工作量占整個(gè)軟件開發(fā)用壽命的延長,軟件維護(hù)的工作量占整個(gè)軟件開發(fā)運(yùn)行過程總工作量的比例還在持續(xù)上升。運(yùn)行過程總工作量的比例還在持續(xù)上升。8.1.1 軟件維護(hù)的定義軟件維護(hù)的定義8.1.2 軟件維護(hù)的分類軟件維護(hù)的分類8.1.3 軟件維護(hù)的特點(diǎn)軟件維護(hù)的特點(diǎn)第8章 軟件維護(hù)2022年6月30日第6頁8.1.1 軟件維護(hù)的定義軟件維護(hù)的定義軟件維護(hù)軟件維護(hù):指軟件系統(tǒng)交付使用以后,為了改正軟件:指軟件系統(tǒng)交付使用以后,為了改正軟件運(yùn)行錯(cuò)誤,或者因滿足新的需求而加入新功能的修運(yùn)行錯(cuò)誤,或者因滿足新的需求而加

3、入新功能的修改軟件的過程。改軟件的過程。軟件維護(hù)與硬件維修不同,不是簡單地將軟件產(chǎn)品恢軟件維護(hù)與硬件維修不同,不是簡單地將軟件產(chǎn)品恢復(fù)到初始狀態(tài),而是需要給用戶提供一個(gè)經(jīng)過修改復(fù)到初始狀態(tài),而是需要給用戶提供一個(gè)經(jīng)過修改的軟件新產(chǎn)品。軟件維護(hù)活動(dòng)需要改正現(xiàn)有錯(cuò)誤,的軟件新產(chǎn)品。軟件維護(hù)活動(dòng)需要改正現(xiàn)有錯(cuò)誤,修改、改進(jìn)現(xiàn)有軟件以適應(yīng)新環(huán)境。修改、改進(jìn)現(xiàn)有軟件以適應(yīng)新環(huán)境。軟件維護(hù)不像軟件開發(fā)一樣從零做起,需要在現(xiàn)有軟軟件維護(hù)不像軟件開發(fā)一樣從零做起,需要在現(xiàn)有軟件結(jié)構(gòu)中引入修改,并且要考慮代碼結(jié)構(gòu)所施加的件結(jié)構(gòu)中引入修改,并且要考慮代碼結(jié)構(gòu)所施加的約束,此外,軟件維護(hù)所允許的時(shí)間通常只是很短約束

4、,此外,軟件維護(hù)所允許的時(shí)間通常只是很短的一段時(shí)間。的一段時(shí)間。第8章 軟件維護(hù)2022年6月30日第7頁8.1.2 軟件維護(hù)的分類軟件維護(hù)的分類軟件維護(hù)活動(dòng)可以歸結(jié)為以下四類:軟件維護(hù)活動(dòng)可以歸結(jié)為以下四類:v 改正性維護(hù);改正性維護(hù);v 適應(yīng)性維護(hù);適應(yīng)性維護(hù);v 完善性維護(hù);完善性維護(hù);v 預(yù)防性維護(hù)。預(yù)防性維護(hù)。 第8章 軟件維護(hù) 8.1 軟件維護(hù)的分類軟件維護(hù)的分類 在軟件交付使用后,因開發(fā)時(shí)測試的不徹底、不完全,在軟件交付使用后,因開發(fā)時(shí)測試的不徹底、不完全,必然會(huì)有部分隱藏的錯(cuò)誤遺留到運(yùn)行階段。必然會(huì)有部分隱藏的錯(cuò)誤遺留到運(yùn)行階段。u 這些隱藏下來的錯(cuò)誤在某些特定的使用環(huán)境下就會(huì)

5、暴這些隱藏下來的錯(cuò)誤在某些特定的使用環(huán)境下就會(huì)暴露出來。露出來。u 為了識(shí)別和糾正軟件錯(cuò)誤、改正軟件性能上的缺陷,為了識(shí)別和糾正軟件錯(cuò)誤、改正軟件性能上的缺陷,而進(jìn)行診斷和改正錯(cuò)誤的過程就叫做改正性維護(hù)。而進(jìn)行診斷和改正錯(cuò)誤的過程就叫做改正性維護(hù)。第8章 軟件維護(hù) 8.1 軟件維護(hù)的分類軟件維護(hù)的分類 改正性維護(hù)中的主要維護(hù)策略改正性維護(hù)中的主要維護(hù)策略: 開發(fā)過程中采用新技術(shù)開發(fā)過程中采用新技術(shù) 利用應(yīng)用軟件包利用應(yīng)用軟件包 提高系統(tǒng)結(jié)構(gòu)化程度提高系統(tǒng)結(jié)構(gòu)化程度 進(jìn)行周期性維護(hù)審查等進(jìn)行周期性維護(hù)審查等第8章 軟件維護(hù) 8.1 軟件維護(hù)的分類軟件維護(hù)的分類 在使用過程中,在使用過程中,p 外

6、部環(huán)境(新的硬、軟件配置)外部環(huán)境(新的硬、軟件配置)p 數(shù)據(jù)環(huán)境(數(shù)據(jù)庫、數(shù)據(jù)格式、數(shù)據(jù)輸入數(shù)據(jù)環(huán)境(數(shù)據(jù)庫、數(shù)據(jù)格式、數(shù)據(jù)輸入/ /輸出方輸出方式、數(shù)據(jù)存儲(chǔ)介質(zhì))可能發(fā)生變化式、數(shù)據(jù)存儲(chǔ)介質(zhì))可能發(fā)生變化。 為使軟件適應(yīng)這種變化,而去修改軟件的過程就叫做適為使軟件適應(yīng)這種變化,而去修改軟件的過程就叫做適應(yīng)性維護(hù)。應(yīng)性維護(hù)。第8章 軟件維護(hù)8.1 軟件維護(hù)的分類軟件維護(hù)的分類 適應(yīng)性維護(hù)中的主要維護(hù)策略適應(yīng)性維護(hù)中的主要維護(hù)策略對可能變化的因素進(jìn)行配置管理對可能變化的因素進(jìn)行配置管理將因環(huán)境變化而必須修改的部分局部化,即局限于某將因環(huán)境變化而必須修改的部分局部化,即局限于某些程序模塊等。些程

7、序模塊等。第8章 軟件維護(hù)8.1 軟件維護(hù)的分類軟件維護(hù)的分類 u 在軟件的使用過程中,用戶往往會(huì)對軟件提出新的功能與性在軟件的使用過程中,用戶往往會(huì)對軟件提出新的功能與性能要求。能要求。u 為了滿足這些要求,需要修改或再開發(fā)軟件,以擴(kuò)充軟件功為了滿足這些要求,需要修改或再開發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性。能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性。u 這種情況下進(jìn)行的維護(hù)活動(dòng)叫做完善性維護(hù)。這種情況下進(jìn)行的維護(hù)活動(dòng)叫做完善性維護(hù)。第8章 軟件維護(hù)8.1 軟件維護(hù)的分類軟件維護(hù)的分類 u 實(shí)踐表明,在幾種維護(hù)活動(dòng)中,完善性維護(hù)所占的比重實(shí)踐表明,

8、在幾種維護(hù)活動(dòng)中,完善性維護(hù)所占的比重最大。即大部分維護(hù)工作是改變和加強(qiáng)軟件,而不是糾錯(cuò)。最大。即大部分維護(hù)工作是改變和加強(qiáng)軟件,而不是糾錯(cuò)。u 完善性維護(hù)不一定是救火式的緊急維修,而可以是有計(jì)完善性維護(hù)不一定是救火式的緊急維修,而可以是有計(jì)劃、有預(yù)謀的一種再開發(fā)活動(dòng)。劃、有預(yù)謀的一種再開發(fā)活動(dòng)。第8章 軟件維護(hù)8.1 軟件維護(hù)的分類軟件維護(hù)的分類完善性維護(hù)中的主要維護(hù)策略完善性維護(hù)中的主要維護(hù)策略盡量采用功能強(qiáng)盡量采用功能強(qiáng)使用方便的工具,采用原型化的開發(fā)方法等使用方便的工具,采用原型化的開發(fā)方法等第8章 軟件維護(hù)8.1 軟件維護(hù)的分類軟件維護(hù)的分類 為了改進(jìn)未來的可維護(hù)性或可靠性,或?yàn)榱私o

9、未來的為了改進(jìn)未來的可維護(hù)性或可靠性,或?yàn)榱私o未來的改進(jìn)奠定更好的基礎(chǔ)而修改軟件。改進(jìn)奠定更好的基礎(chǔ)而修改軟件。u 也可以定義為:也可以定義為:“把今天的方法學(xué)用于昨天的系統(tǒng)以滿把今天的方法學(xué)用于昨天的系統(tǒng)以滿足明天的需要足明天的需要”。即該類維護(hù)工作需要采用先進(jìn)的軟件工。即該類維護(hù)工作需要采用先進(jìn)的軟件工程方法,對需要維護(hù)的軟件或軟件中的某一部分(重新)程方法,對需要維護(hù)的軟件或軟件中的某一部分(重新)進(jìn)行設(shè)計(jì)、編碼和測試。進(jìn)行設(shè)計(jì)、編碼和測試。第8章 軟件維護(hù)8.1 軟件維護(hù)的分類軟件維護(hù)的分類 預(yù)防性維護(hù)中的主要維護(hù)策略預(yù)防性維護(hù)中的主要維護(hù)策略采用提前實(shí)現(xiàn)采用提前實(shí)現(xiàn)軟件重用等技術(shù)軟件

10、重用等技術(shù)第8章 軟件維護(hù)8.1 軟件維護(hù)的分類軟件維護(hù)的分類第8章 軟件維護(hù)2022年6月30日第18頁8.1.3 軟件維護(hù)的特點(diǎn)軟件維護(hù)的特點(diǎn)軟件維護(hù)工作有以下特點(diǎn)。軟件維護(hù)工作有以下特點(diǎn)。 軟件維護(hù)是軟件生存周期中延續(xù)時(shí)間最長、工作量最大軟件維護(hù)是軟件生存周期中延續(xù)時(shí)間最長、工作量最大的一個(gè)階段。的一個(gè)階段。 軟件維護(hù)不僅工作量大、任務(wù)重,而且維護(hù)不當(dāng)?shù)脑?,軟件維護(hù)不僅工作量大、任務(wù)重,而且維護(hù)不當(dāng)?shù)脑?,還會(huì)產(chǎn)生一些意想不到的副作用,甚至引起新的錯(cuò)誤。還會(huì)產(chǎn)生一些意想不到的副作用,甚至引起新的錯(cuò)誤。 軟件維護(hù)活動(dòng)實(shí)際上是一個(gè)修改和簡化了的軟件開發(fā)活軟件維護(hù)活動(dòng)實(shí)際上是一個(gè)修改和簡化了的軟

11、件開發(fā)活動(dòng)。動(dòng)。 盡管軟件維護(hù)需要的工作量很大,但是長期以來,軟件盡管軟件維護(hù)需要的工作量很大,但是長期以來,軟件維護(hù)工作卻一直未受到軟件設(shè)計(jì)者們的足夠重視。維護(hù)工作卻一直未受到軟件設(shè)計(jì)者們的足夠重視。第8章 軟件維護(hù)2022年6月30日第19頁8.2 軟件維護(hù)的過程軟件維護(hù)的過程軟件維護(hù)是一件復(fù)雜而困難的事情,必須在相應(yīng)的技術(shù)指軟件維護(hù)是一件復(fù)雜而困難的事情,必須在相應(yīng)的技術(shù)指導(dǎo)下,按照一定的步驟進(jìn)行。導(dǎo)下,按照一定的步驟進(jìn)行。一般地,軟件維護(hù)活動(dòng)首先要建立一個(gè)維護(hù)組織,然后建一般地,軟件維護(hù)活動(dòng)首先要建立一個(gè)維護(hù)組織,然后建立維護(hù)活動(dòng)的登記、申請制度及對維護(hù)方案的審批制度,立維護(hù)活動(dòng)的登記

12、、申請制度及對維護(hù)方案的審批制度,規(guī)定復(fù)審的評價(jià)標(biāo)準(zhǔn)。規(guī)定復(fù)審的評價(jià)標(biāo)準(zhǔn)。8.2.1 結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)8.2.2 維護(hù)組織維護(hù)組織8.2.3 維護(hù)工作的流程維護(hù)工作的流程8.2.4 維護(hù)工作的組織管理維護(hù)工作的組織管理第8章 軟件維護(hù)2022年6月30日第20頁8.2.1 結(jié)構(gòu)化維護(hù)非結(jié)構(gòu)化維護(hù)結(jié)構(gòu)化維護(hù)非結(jié)構(gòu)化維護(hù)8.2 維護(hù)與維護(hù)與8.2.2 維護(hù)組織維護(hù)組織8.2.3 維護(hù)工作的流程維護(hù)工作的流程8.2.4 維護(hù)工作的組織管理維護(hù)工作的組織管理第8章 軟件維護(hù)8.2.1 結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)u結(jié)構(gòu)化維護(hù)結(jié)構(gòu)化維護(hù) 指軟件開發(fā)過程

13、是按照軟件工程指軟件開發(fā)過程是按照軟件工程方法進(jìn)行的,開發(fā)各階段的文檔齊全,軟件的維方法進(jìn)行的,開發(fā)各階段的文檔齊全,軟件的維護(hù)過程,有一整套完整的方案、技術(shù)、審定過程護(hù)過程,有一整套完整的方案、技術(shù)、審定過程及文檔。因此易于維護(hù)。及文檔。因此易于維護(hù)。u非結(jié)構(gòu)化維護(hù)非結(jié)構(gòu)化維護(hù) 軟件配置的惟一成分是程序代碼軟件配置的惟一成分是程序代碼, ,缺乏必要的文檔說明,文檔缺少或者不一制,難缺乏必要的文檔說明,文檔缺少或者不一制,難于確定數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口等特性,這樣的維護(hù)于確定數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口等特性,這樣的維護(hù)工作令人生畏,事倍功半。因此非結(jié)構(gòu)化維護(hù)需工作令人生畏,事倍功半。因此非結(jié)構(gòu)化維護(hù)需要付

14、出很大代價(jià)。要付出很大代價(jià)。第8章 軟件維護(hù)8.2 軟件維護(hù)的特點(diǎn)軟件維護(hù)的特點(diǎn)維護(hù)申請維護(hù)申請軟件系統(tǒng)軟件系統(tǒng)文檔全否文檔全否?計(jì)劃維護(hù)方法計(jì)劃維護(hù)方法分析原設(shè)計(jì)分析原設(shè)計(jì)修改設(shè)計(jì)修改設(shè)計(jì)重新編程重新編程經(jīng)復(fù)審經(jīng)復(fù)審,還還有問題嗎有問題嗎?無無有有分析源程序分析源程序修改源程序修改源程序經(jīng)復(fù)審經(jīng)復(fù)審, ,還還有問題嗎有問題嗎? ?無無交付使用交付使用結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)的對比結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)的對比是是否否有有有有第8章 軟件維護(hù)2022年6月30日第23頁8.2.2 維護(hù)組織維護(hù)組織對于大型軟件系統(tǒng),建立一個(gè)專門的維護(hù)組織機(jī)構(gòu)對于大型軟件系統(tǒng),建立一個(gè)專門的維護(hù)組織機(jī)構(gòu)是必須的。

15、較小的軟件系統(tǒng),也有必要委派一個(gè)是必須的。較小的軟件系統(tǒng),也有必要委派一個(gè)專人負(fù)責(zé)軟件維護(hù)工作。專人負(fù)責(zé)軟件維護(hù)工作。在維護(hù)活動(dòng)開始之前,必須明確維護(hù)活動(dòng)的審批制在維護(hù)活動(dòng)開始之前,必須明確維護(hù)活動(dòng)的審批制度。每個(gè)維護(hù)要求都要通過維護(hù)管理員轉(zhuǎn)交給系度。每個(gè)維護(hù)要求都要通過維護(hù)管理員轉(zhuǎn)交給系統(tǒng)管理員去評價(jià)。系統(tǒng)管理員對維護(hù)申請做出評統(tǒng)管理員去評價(jià)。系統(tǒng)管理員對維護(hù)申請做出評價(jià)后,由主管部門決定是否進(jìn)行軟件修改。維護(hù)價(jià)后,由主管部門決定是否進(jìn)行軟件修改。維護(hù)小組在接到通過審批的維護(hù)申請報(bào)告后,將維護(hù)小組在接到通過審批的維護(hù)申請報(bào)告后,將維護(hù)任務(wù)下達(dá)給指定的維護(hù)人員,并監(jiān)控維護(hù)活動(dòng)的任務(wù)下達(dá)給指定的

16、維護(hù)人員,并監(jiān)控維護(hù)活動(dòng)的開展。開展。第8章 軟件維護(hù)2022年6月30日第24頁8.2.2 維護(hù)組織維護(hù)組織第8章 軟件維護(hù)2022年6月30日第25頁8.2.3 維護(hù)工作的流程維護(hù)工作的流程概括地說,軟件維護(hù)過程是:概括地說,軟件維護(hù)過程是:建立維護(hù)機(jī)構(gòu)建立維護(hù)機(jī)構(gòu)編寫軟件維護(hù)申請報(bào)告編寫軟件維護(hù)申請報(bào)告確定軟件確定軟件維護(hù)工作流程維護(hù)工作流程整理軟件維護(hù)文檔整理軟件維護(hù)文檔評價(jià)軟件維評價(jià)軟件維護(hù)性能。護(hù)性能。第8章 軟件維護(hù)2022年6月30日第26頁8.2.3 維護(hù)工作的流程維護(hù)工作的流程1、一個(gè)典型的維護(hù)機(jī)構(gòu)包括:維護(hù)管理員、修改批、一個(gè)典型的維護(hù)機(jī)構(gòu)包括:維護(hù)管理員、修改批準(zhǔn)人員、

17、系統(tǒng)管理員、配置管理員和維護(hù)人員。準(zhǔn)人員、系統(tǒng)管理員、配置管理員和維護(hù)人員。2、維護(hù)申請報(bào)告將由維護(hù)管理員和系統(tǒng)管理員共同、維護(hù)申請報(bào)告將由維護(hù)管理員和系統(tǒng)管理員共同研究和處理,相應(yīng)地做出軟件變更報(bào)告(研究和處理,相應(yīng)地做出軟件變更報(bào)告(Software Change Report, SCR)。)。SCR 的內(nèi)容的內(nèi)容包括:所需修改變動(dòng)的性質(zhì);申請修改的優(yōu)先級包括:所需修改變動(dòng)的性質(zhì);申請修改的優(yōu)先級;為滿足該維護(hù)申請報(bào)告所需的工作量(人員數(shù);為滿足該維護(hù)申請報(bào)告所需的工作量(人員數(shù)、時(shí)間數(shù)等);預(yù)計(jì)修改后的結(jié)果等。、時(shí)間數(shù)等);預(yù)計(jì)修改后的結(jié)果等。第8章 軟件維護(hù)2022年6月30日第27頁

18、8.2.3 維護(hù)工作的流程維護(hù)工作的流程3、具體執(zhí)行軟件維護(hù)、具體執(zhí)行軟件維護(hù)工作時(shí),主要的步驟工作時(shí),主要的步驟包括:包括:確認(rèn)維護(hù)類型;確認(rèn)維護(hù)類型;實(shí)施相應(yīng)維護(hù);實(shí)施相應(yīng)維護(hù);維護(hù)評審。維護(hù)評審。4、整理軟件維護(hù)文檔;、整理軟件維護(hù)文檔;5、評價(jià)軟件維護(hù)性能。、評價(jià)軟件維護(hù)性能。第8章 軟件維護(hù)2022年6月30日第28頁8.2.4 維護(hù)工作的組織管理維護(hù)工作的組織管理軟件維護(hù)工作的復(fù)雜性決定了軟件維護(hù)不僅軟件維護(hù)工作的復(fù)雜性決定了軟件維護(hù)不僅需要技術(shù)性工作,還需要大量的管理工作需要技術(shù)性工作,還需要大量的管理工作與之相配合,才能保證維護(hù)工作的質(zhì)量和與之相配合,才能保證維護(hù)工作的質(zhì)量和效

19、率。效率。第8章 軟件維護(hù)2022年6月30日第29頁8.2.4 維護(hù)工作的組織管理維護(hù)工作的組織管理第8章 軟件維護(hù)2022年6月30日第30頁8.3 軟件可維護(hù)性軟件可維護(hù)性8.3.1 軟件可維護(hù)性的定義軟件可維護(hù)性的定義8.3.2 軟件可維護(hù)性的度量軟件可維護(hù)性的度量8.3.3 提高軟件可維護(hù)性的方法提高軟件可維護(hù)性的方法第8章 軟件維護(hù)2022年6月30日第31頁8.3.1 軟件可維護(hù)性的定義軟件可維護(hù)性的定義u是指糾正軟件系統(tǒng)出現(xiàn)的錯(cuò)誤和缺陷,以是指糾正軟件系統(tǒng)出現(xiàn)的錯(cuò)誤和缺陷,以及為滿足新的要求進(jìn)行修改、擴(kuò)充或壓縮及為滿足新的要求進(jìn)行修改、擴(kuò)充或壓縮的容易程度。的容易程度。u 是軟

20、件開發(fā)階段各個(gè)時(shí)期的關(guān)鍵目標(biāo)。是軟件開發(fā)階段各個(gè)時(shí)期的關(guān)鍵目標(biāo)。第8章 軟件維護(hù) 8.3.1 軟件可維護(hù)性的定義軟件可維護(hù)性的定義 各類維護(hù)中的側(cè)重點(diǎn)各類維護(hù)中的側(cè)重點(diǎn)改正性維護(hù)改正性維護(hù)適應(yīng)性維護(hù)適應(yīng)性維護(hù)完善性維護(hù)完善性維護(hù)可理解性可理解性可測試性可測試性可修改性可修改性可靠性可靠性可移植性可移植性可使用性可使用性效率效率第8章 軟件維護(hù) 8.3.1 軟件可維護(hù)性的定義軟件可維護(hù)性的定義可理解性:維護(hù)人員通過閱讀源代碼和相關(guān)文檔,理解可理解性:維護(hù)人員通過閱讀源代碼和相關(guān)文檔,理解軟件的結(jié)構(gòu)、接口、功能和內(nèi)部過程的難易程度。軟件的結(jié)構(gòu)、接口、功能和內(nèi)部過程的難易程度。可測試性:指證實(shí)程序正

21、確性的難易程度。程序越簡單,可測試性:指證實(shí)程序正確性的難易程度。程序越簡單,證明其正確性就越容易,好的文檔資料對診斷和測試至證明其正確性就越容易,好的文檔資料對診斷和測試至關(guān)重要。關(guān)重要??尚薷男裕褐感薷某绦虻碾y易程度。一個(gè)可修改的程序可修改性:指修改程序的難易程度。一個(gè)可修改的程序往往是可理解的、通用的、靈活的和簡明的。往往是可理解的、通用的、靈活的和簡明的。第8章 軟件維護(hù) 8.3.1 軟件可維護(hù)性的定義軟件可維護(hù)性的定義可靠性:一個(gè)程序按照用戶的要求和設(shè)計(jì)目標(biāo),在給定的可靠性:一個(gè)程序按照用戶的要求和設(shè)計(jì)目標(biāo),在給定的一段時(shí)間內(nèi)正確執(zhí)行的概率。度量標(biāo)準(zhǔn)主要有平均失效時(shí)一段時(shí)間內(nèi)正確執(zhí)行

22、的概率。度量標(biāo)準(zhǔn)主要有平均失效時(shí)間間隔、間間隔、平均修復(fù)時(shí)間平均修復(fù)時(shí)間和和有效性有效性??梢浦残裕褐赋绦驈囊粋€(gè)計(jì)算機(jī)環(huán)境移到另一計(jì)算機(jī)環(huán)境可移植性:指程序從一個(gè)計(jì)算機(jī)環(huán)境移到另一計(jì)算機(jī)環(huán)境的適應(yīng)能力,亦即程序在不同計(jì)算機(jī)環(huán)境下能夠有效地運(yùn)的適應(yīng)能力,亦即程序在不同計(jì)算機(jī)環(huán)境下能夠有效地運(yùn)行的程度。行的程度。第8章 軟件維護(hù) 8.3.1 軟件可維護(hù)性的定義軟件可維護(hù)性的定義可使用性:從用戶觀點(diǎn)出發(fā),把可使用性定義為程序方便、可使用性:從用戶觀點(diǎn)出發(fā),把可使用性定義為程序方便、實(shí)用、及易于使用的程度。實(shí)用、及易于使用的程度。效率:一個(gè)程序能執(zhí)行預(yù)定功能而又不浪費(fèi)機(jī)器資源的程效率:一個(gè)程序能執(zhí)行預(yù)

23、定功能而又不浪費(fèi)機(jī)器資源的程度。這些機(jī)器資源包括內(nèi)存容量、外存容量、通道容量和度。這些機(jī)器資源包括內(nèi)存容量、外存容量、通道容量和執(zhí)行時(shí)間。執(zhí)行時(shí)間。第8章 軟件維護(hù) 8.3.2 軟件可維護(hù)性的度量軟件可維護(hù)性的度量u 度量一個(gè)可維護(hù)的程序的七種特性時(shí)常用的方法就是質(zhì)度量一個(gè)可維護(hù)的程序的七種特性時(shí)常用的方法就是質(zhì)量檢查表、質(zhì)量測試和質(zhì)量標(biāo)準(zhǔn)。量檢查表、質(zhì)量測試和質(zhì)量標(biāo)準(zhǔn)。u 質(zhì)量檢查表是用于測試程序中某些質(zhì)量特性是否存在的一質(zhì)量檢查表是用于測試程序中某些質(zhì)量特性是否存在的一個(gè)問題清單。評價(jià)者針對檢查表上的每個(gè)問題,依據(jù)自己的個(gè)問題清單。評價(jià)者針對檢查表上的每個(gè)問題,依據(jù)自己的定性判斷,回答定性

24、判斷,回答“是是”或者或者“否否”。u 質(zhì)量測試和質(zhì)量標(biāo)準(zhǔn)則用于定量分析和評價(jià)程序的質(zhì)量。質(zhì)量測試和質(zhì)量標(biāo)準(zhǔn)則用于定量分析和評價(jià)程序的質(zhì)量。第8章 軟件維護(hù)8.3.3 提高軟件可維護(hù)性的方法提高軟件可維護(hù)性的方法 需要從以下五個(gè)方面著手:需要從以下五個(gè)方面著手: 建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級 使用提高軟件質(zhì)量的技術(shù)和工具使用提高軟件質(zhì)量的技術(shù)和工具 選擇便于維護(hù)的程序設(shè)計(jì)語言選擇便于維護(hù)的程序設(shè)計(jì)語言 采取明確的、有效的質(zhì)量保證審查措施采取明確的、有效的質(zhì)量保證審查措施 完善程序的文檔完善程序的文檔 第8章 軟件維護(hù)2022年6月30日第38頁8.4 軟件維護(hù)中

25、存在的問題軟件維護(hù)中存在的問題8.4.1 軟件維護(hù)困難的表現(xiàn)軟件維護(hù)困難的表現(xiàn)8.4.2 軟件維護(hù)的副作用軟件維護(hù)的副作用8.4.3 軟件維護(hù)的代價(jià)軟件維護(hù)的代價(jià)第8章 軟件維護(hù)2022年6月30日第39頁8.4.1 軟件維護(hù)困難的表現(xiàn)軟件維護(hù)困難的表現(xiàn)軟件維護(hù)的困難主要表現(xiàn)在以下幾個(gè)方面。軟件維護(hù)的困難主要表現(xiàn)在以下幾個(gè)方面。(1)讀懂別人的程序是很困難的,而文檔的不足更增)讀懂別人的程序是很困難的,而文檔的不足更增加了這種難度;加了這種難度;(2)文檔的不一致性是軟件維護(hù)困難的又一個(gè)因素,)文檔的不一致性是軟件維護(hù)困難的又一個(gè)因素,解決方法就是要加強(qiáng)開發(fā)工作中文檔的版本管理;解決方法就是要

26、加強(qiáng)開發(fā)工作中文檔的版本管理;(3)軟件開發(fā)和軟件維護(hù)在人員和時(shí)間上存在差異;)軟件開發(fā)和軟件維護(hù)在人員和時(shí)間上存在差異;(4)軟件維護(hù)不是一件吸引人的工作。)軟件維護(hù)不是一件吸引人的工作。第8章 軟件維護(hù)2022年6月30日第40頁8.4.2 軟件維護(hù)的副作用軟件維護(hù)的副作用維護(hù)的副作用是指由于修改軟件而導(dǎo)致新的錯(cuò)誤的維護(hù)的副作用是指由于修改軟件而導(dǎo)致新的錯(cuò)誤的出現(xiàn)或者新增加一些不希望發(fā)生的情況。一般維出現(xiàn)或者新增加一些不希望發(fā)生的情況。一般維護(hù)產(chǎn)生的副作用主要有如下護(hù)產(chǎn)生的副作用主要有如下3 種。種。1修改代碼的副作用修改代碼的副作用2修改數(shù)據(jù)的副作用修改數(shù)據(jù)的副作用3修改文檔的副作用修改

27、文檔的副作用第8章 軟件維護(hù)l影響維護(hù)工作量的因素主要有以下六種:影響維護(hù)工作量的因素主要有以下六種:系統(tǒng)的大小系統(tǒng)的大小程序設(shè)計(jì)語言:語言的功能越強(qiáng),生成程序的模塊化和程序設(shè)計(jì)語言:語言的功能越強(qiáng),生成程序的模塊化和結(jié)構(gòu)化程度越高,所需的指令數(shù)就越少,程序的可讀性結(jié)構(gòu)化程度越高,所需的指令數(shù)就越少,程序的可讀性越好。越好。系統(tǒng)年齡:系統(tǒng)使用時(shí)間越長,所進(jìn)行的修改就越多,系統(tǒng)年齡:系統(tǒng)使用時(shí)間越長,所進(jìn)行的修改就越多,而多次修改可能造成系統(tǒng)結(jié)構(gòu)變得混亂。而多次修改可能造成系統(tǒng)結(jié)構(gòu)變得混亂。8.4.3 軟件維護(hù)的代價(jià)軟件維護(hù)的代價(jià)第8章 軟件維護(hù) 數(shù)據(jù)庫技術(shù)的應(yīng)用:可以簡單而有效地管理和存儲(chǔ)用戶

28、數(shù)據(jù)庫技術(shù)的應(yīng)用:可以簡單而有效地管理和存儲(chǔ)用戶程序中的數(shù)據(jù),減少生成用戶報(bào)表應(yīng)用軟件的維護(hù)工作量。程序中的數(shù)據(jù),減少生成用戶報(bào)表應(yīng)用軟件的維護(hù)工作量。先進(jìn)的軟件開發(fā)技術(shù)先進(jìn)的軟件開發(fā)技術(shù) :可減少大量的維護(hù)工作量。:可減少大量的維護(hù)工作量。其它一些因素,如應(yīng)用的類型、數(shù)學(xué)模型、任務(wù)的難度、其它一些因素,如應(yīng)用的類型、數(shù)學(xué)模型、任務(wù)的難度、開關(guān)與標(biāo)記、開關(guān)與標(biāo)記、IF嵌套深度、索引或下標(biāo)數(shù)等,對維護(hù)工作嵌套深度、索引或下標(biāo)數(shù)等,對維護(hù)工作量也有影響。量也有影響。8.4.3 軟件維護(hù)的代價(jià)軟件維護(hù)的代價(jià)第8章 軟件維護(hù)有形的軟件維護(hù)成本是花費(fèi)了多少錢,而其他非直接的成本有形的軟件維護(hù)成本是花費(fèi)了

29、多少錢,而其他非直接的成本有更大的影響。例如,無形的成本可以是:有更大的影響。例如,無形的成本可以是:(1)一些看起來是合理的修復(fù)或修改請求不能及時(shí)安排,)一些看起來是合理的修復(fù)或修改請求不能及時(shí)安排,使得客戶不滿意;使得客戶不滿意;(2)變更的結(jié)果把一些潛在的錯(cuò)誤引入正在維護(hù)的軟件,)變更的結(jié)果把一些潛在的錯(cuò)誤引入正在維護(hù)的軟件,使得軟件整體質(zhì)量下降;使得軟件整體質(zhì)量下降;(3)當(dāng)必須把軟件人員抽調(diào)到維護(hù)工作中去時(shí),就使得軟)當(dāng)必須把軟件人員抽調(diào)到維護(hù)工作中去時(shí),就使得軟件開發(fā)工作受到干擾。件開發(fā)工作受到干擾。維護(hù)工作量可以分成生產(chǎn)性活動(dòng)(如分析和評價(jià)、設(shè)計(jì)修改維護(hù)工作量可以分成生產(chǎn)性活動(dòng)(

30、如分析和評價(jià)、設(shè)計(jì)修改和實(shí)現(xiàn))和和實(shí)現(xiàn))和“輪轉(zhuǎn)輪轉(zhuǎn)”活動(dòng)(如力圖理解代碼在做什么、試活動(dòng)(如力圖理解代碼在做什么、試圖判明數(shù)據(jù)結(jié)構(gòu)、接口特性、性能界限等)圖判明數(shù)據(jù)結(jié)構(gòu)、接口特性、性能界限等)8.4.3 軟件維護(hù)的代價(jià)軟件維護(hù)的代價(jià)第8章 軟件維護(hù)Belady 和和Lehman 提出一個(gè)軟件維護(hù)工作量的模型如下:提出一個(gè)軟件維護(hù)工作量的模型如下:M=P+K*exp(C-D)其中,其中,M 表示維護(hù)中消耗的總工作量;表示維護(hù)中消耗的總工作量;P 表示上面描述的生產(chǎn)表示上面描述的生產(chǎn)性活動(dòng)工作量;性活動(dòng)工作量;K 是一個(gè)經(jīng)驗(yàn)是一個(gè)經(jīng)驗(yàn)常數(shù);常數(shù);C 表示由非結(jié)構(gòu)化維護(hù)表示由非結(jié)構(gòu)化維護(hù)(缺乏好的

31、設(shè)計(jì)和文檔)而引起的程序復(fù)雜性的度量;(缺乏好的設(shè)計(jì)和文檔)而引起的程序復(fù)雜性的度量;D 表表示示對維護(hù)軟件熟悉程度的度量。對維護(hù)軟件熟悉程度的度量。由上式可以發(fā)現(xiàn),由上式可以發(fā)現(xiàn),C 越大,越大,D 越小,那么維護(hù)工作量就成指越小,那么維護(hù)工作量就成指數(shù)數(shù)的增加。的增加。也就是說,如果使用了不好的軟件開發(fā)方法(未按軟件工程也就是說,如果使用了不好的軟件開發(fā)方法(未按軟件工程要求做),原來參加開發(fā)的人員或小組不能參加維護(hù)的話,要求做),原來參加開發(fā)的人員或小組不能參加維護(hù)的話,則維護(hù)工作量(及成本)將按指數(shù)級增加。則維護(hù)工作量(及成本)將按指數(shù)級增加。8.4.3 軟件維護(hù)的代價(jià)軟件維護(hù)的代價(jià)第

32、8章 軟件維護(hù)8.5 軟件再工程軟件再工程軟件再工程旨在對現(xiàn)存的大量軟件系統(tǒng)進(jìn)行挖掘、整理以得到有軟件再工程旨在對現(xiàn)存的大量軟件系統(tǒng)進(jìn)行挖掘、整理以得到有用的軟件組件,或?qū)σ延熊浖M件進(jìn)行維護(hù)以延長其生存期。用的軟件組件,或?qū)σ延熊浖M件進(jìn)行維護(hù)以延長其生存期。軟件再工程的基礎(chǔ)是系統(tǒng)理解,包括對運(yùn)行系統(tǒng)、源代碼、設(shè)計(jì)、軟件再工程的基礎(chǔ)是系統(tǒng)理解,包括對運(yùn)行系統(tǒng)、源代碼、設(shè)計(jì)、分析和文檔等的全面理解,但在很多情況下,由于各類文檔的丟分析和文檔等的全面理解,但在很多情況下,由于各類文檔的丟失,只能對源代碼進(jìn)行理解,即程序理解。失,只能對源代碼進(jìn)行理解,即程序理解。軟件再工程和逆向工程是目前預(yù)防性維

33、護(hù)采用的主要技術(shù),是走軟件再工程和逆向工程是目前預(yù)防性維護(hù)采用的主要技術(shù),是走向自動(dòng)維護(hù)的必經(jīng)之路。向自動(dòng)維護(hù)的必經(jīng)之路。第8章 軟件維護(hù)2022年6月30日第46頁8.5 再工程和逆向工程再工程和逆向工程8.5.1 再工程與逆向工程的概念再工程與逆向工程的概念8.5.2 為什么要實(shí)施軟件再工程為什么要實(shí)施軟件再工程8.5.3 軟件再工程技術(shù)軟件再工程技術(shù)第8章 軟件維護(hù)2022年6月30日第47頁8.5.1 再工程與逆向工程的概念再工程與逆向工程的概念 軟件再工程軟件再工程: 是一類軟件工程活動(dòng),它能夠使我們:是一類軟件工程活動(dòng),它能夠使我們: 增進(jìn)對軟件的理解增進(jìn)對軟件的理解; 準(zhǔn)備或直接

34、提高軟件的可維護(hù)性、復(fù)用性或演化性。準(zhǔn)備或直接提高軟件的可維護(hù)性、復(fù)用性或演化性。軟件的逆向工程軟件的逆向工程: : 是分析程序,力圖在比源代碼更高的抽象層次上建立程序表是分析程序,力圖在比源代碼更高的抽象層次上建立程序表示的過程。示的過程。第8章 軟件維護(hù)逆向工程過程逆向工程過程理解處理理解處理理解界面理解界面理解數(shù)據(jù)理解數(shù)據(jù)分析語句分析語句分析模式分析模式分析模塊分析模塊分析程序分析程序分析系統(tǒng)分析系統(tǒng)重構(gòu)代碼重構(gòu)代碼提取抽象提取抽象求精與簡化求精與簡化結(jié)構(gòu)化源代碼結(jié)構(gòu)化源代碼初始規(guī)格說明初始規(guī)格說明最終的規(guī)格說最終的規(guī)格說明明非結(jié)構(gòu)化源代非結(jié)構(gòu)化源代碼碼逆向工程過程逆向工程過程第8章 軟

35、件維護(hù)8.5.2 為什么要實(shí)施軟件再工程為什么要實(shí)施軟件再工程實(shí)施軟件再工程所帶來的好處實(shí)施軟件再工程所帶來的好處 :再工程可幫助軟件機(jī)構(gòu)降低軟件演化的風(fēng)險(xiǎn)再工程可幫助軟件機(jī)構(gòu)降低軟件演化的風(fēng)險(xiǎn) 再工程可幫助軟件機(jī)構(gòu)補(bǔ)償軟件的投資再工程可幫助軟件機(jī)構(gòu)補(bǔ)償軟件的投資 再工程可使得軟件易于進(jìn)一步變更再工程可使得軟件易于進(jìn)一步變更 再工程有著廣闊的市場再工程有著廣闊的市場 第8章 軟件維護(hù) 再工程相關(guān)的技術(shù)再工程相關(guān)的技術(shù)再工程課題再工程課題相關(guān)技術(shù)相關(guān)技術(shù)改進(jìn)軟件改進(jìn)軟件重構(gòu)、文檔重寫、加注釋更新文檔、復(fù)用工程、重重構(gòu)、文檔重寫、加注釋更新文檔、復(fù)用工程、重新劃分模塊、數(shù)據(jù)再工程、業(yè)務(wù)過程再工程、可維新劃分模塊、數(shù)據(jù)再工程、業(yè)務(wù)過程再工程、可維護(hù)性分析、業(yè)務(wù)分析、經(jīng)濟(jì)分析護(hù)性分析、業(yè)務(wù)分析、經(jīng)濟(jì)分析理解軟件理解軟件瀏覽、分析并度量逆向工程、設(shè)計(jì)恢復(fù)瀏覽、分析并度量逆向工程、設(shè)計(jì)恢復(fù)獲取、保存及擴(kuò)充軟件的獲取、保存及擴(kuò)充軟件的知識(shí)知識(shí)分解、逆向工程設(shè)計(jì)恢復(fù)、對象恢復(fù)、程序理解、分解、逆向工程設(shè)計(jì)恢復(fù)、對象恢復(fù)、程序理解、知識(shí)庫及變換知識(shí)庫及變換8.5.3 軟件再

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論