軟件工程第八章(維護(hù))_第1頁
軟件工程第八章(維護(hù))_第2頁
軟件工程第八章(維護(hù))_第3頁
軟件工程第八章(維護(hù))_第4頁
軟件工程第八章(維護(hù))_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件工程導(dǎo)論(第5版)第第8 8章章 維護(hù)維護(hù)軟件生存周期軟件生存周期問題定義 軟件定義 可行性研究需求分析 總體設(shè)計系統(tǒng)設(shè)計詳細(xì)設(shè)計軟件生命周期 軟件開發(fā)編碼和單元測試系統(tǒng)實現(xiàn)綜合測試 運行維護(hù)第第8 8章章 維護(hù)維護(hù)v軟件維護(hù)是軟件生命周期的最后一個階段,它處于系統(tǒng)投入生產(chǎn)性運行以后的時期中,因此不屬于系統(tǒng)開發(fā)過程。v軟件維護(hù)的基本任務(wù)是保證軟件在一個相當(dāng)長的時期能夠正常運行。v軟件維護(hù)需要的工作量非常大,雖然在不同應(yīng)用領(lǐng)域維護(hù)成本差別很大,但是,平均說來,大型軟件的維護(hù)成本高達(dá)開發(fā)成本的四倍左右。8.1.1 8.1.1 軟件維護(hù)定義軟件維護(hù)定義v所謂軟件維護(hù)就是在軟件已經(jīng)交付使用之后,為

2、了改正錯誤或滿足新的需要而修改軟件的過程。v軟件維護(hù)包括下述4項活動。 診斷和改正錯誤的過程:改正性維護(hù) 為了和變化了的環(huán)境適當(dāng)?shù)嘏浜隙M(jìn)行的修改軟件的活動:適應(yīng)性維護(hù) 為了滿足在使用軟件的過程中用戶的建議和改進(jìn)意見而作的維護(hù):完善性維護(hù) 為了給未來的改進(jìn)奠定更好的基礎(chǔ)而修改軟件:預(yù)防性維護(hù)1、改正(糾錯)性維護(hù)、改正(糾錯)性維護(hù)2、適應(yīng)性維護(hù)、適應(yīng)性維護(hù)3、完善性維護(hù)、完善性維護(hù)3、完善性性維護(hù)、完善性性維護(hù)4、預(yù)防性維護(hù)、預(yù)防性維護(hù) 綜綜 述述8.1.1 8.1.1 軟件維護(hù)定義軟件維護(hù)定義 三類維護(hù)占 維護(hù)在軟件生 總維護(hù)比例 存期所占比例8.2 8.2 維護(hù)的特點維護(hù)的特點v結(jié)構(gòu)化維

3、護(hù)與非結(jié)構(gòu)化維護(hù)的差別巨大1.非結(jié)構(gòu)化維護(hù) 如果軟件配置的唯一成分是程序代碼,那么維護(hù)活動從艱苦地評價程序代碼開始,而且常常由于程序內(nèi)部文檔不足而使評價更困難。而且對程序代碼所做的改動的后果是難于估量的:因為沒有測試方面的文檔,所以不可能進(jìn)行回歸測試。 非結(jié)構(gòu)化維護(hù)付出代價高昂。8.2 8.2 維護(hù)的特點維護(hù)的特點2.結(jié)構(gòu)化維護(hù)如果有一個完整的軟件配置存在,那么維護(hù)工作從評價設(shè)計文檔開始,確定軟件重要的結(jié)構(gòu)特點、性能特點以及接口特點;估量要求的改動將帶來的影響,并且計劃實施途徑。然后首先修改設(shè)計并且對所做的修改進(jìn)行仔細(xì)復(fù)查。接下來編寫相應(yīng)的源程序代碼;使用在測試說明書中包含的信息進(jìn)行回歸測試;

4、最后,把修改后的軟件再次交付使用。 結(jié)構(gòu)化維護(hù)能減少精力浪費并且能提高維護(hù)的總體質(zhì)量。8.2 8.2 維護(hù)的特點維護(hù)的特點8.2 8.2 維護(hù)的特點維護(hù)的特點v維護(hù)的代價v軟件維護(hù)的最明顯的代價:維護(hù)費用v無形的代價:n因為可用的資源必須供維護(hù)任務(wù)使用,以致耽誤甚至喪失了開發(fā)的良機(jī)。n當(dāng)看來合理的有關(guān)改錯或修改的要求不能及時滿足時將引起用戶不滿。n由于維護(hù)時的改動,在軟件中引入了潛伏的錯誤,從而降低了軟件的質(zhì)量。n當(dāng)必須把軟件工程師調(diào)去從事維護(hù)工作時,將在開發(fā)過程中造成混亂。n生產(chǎn)率的大幅度下降。8.2 8.2 維護(hù)的特點維護(hù)的特點v維護(hù)工作量的一個模型: M M P P K K * * ex

5、p exp(c c d d) 其中: M是維護(hù)用的總工作量, P是生產(chǎn)性工作量, K是經(jīng)驗常數(shù), c是因缺乏好的設(shè)計和文檔而導(dǎo)致復(fù)雜性的度量), d是維護(hù)人員對軟件的熟悉程度。v模型表明,如果軟件的開發(fā)途徑不好(即,沒有使用軟件工程方法學(xué)),而且原來的開發(fā)人員不能參加維護(hù)工作,那么維護(hù)工作量和費用將指數(shù)地增加。8.2 8.2 維護(hù)的特點維護(hù)的特點v維護(hù)的問題v與軟件維護(hù)有關(guān)的絕大多數(shù)問題,都可歸因于軟件定義和軟件開發(fā)的方法有缺點。v在軟件生命周期的頭兩個時期沒有嚴(yán)格而又科學(xué)的管理和規(guī)劃,幾乎必然會導(dǎo)致在最后階段出現(xiàn)問題。8.2 8.2 維護(hù)的特點維護(hù)的特點v和軟件維護(hù)有關(guān)的部分問題列表:理解別

6、人寫的程序通常非常困難,而且困難程度隨著軟件配置成分的減少而迅速增加。如果僅有程序代碼沒有說明文檔,則會出現(xiàn)嚴(yán)重的問題。需要維護(hù)的軟件往往沒有合格的文檔,或者文檔資料顯著不足。認(rèn)識到軟件必須有文檔僅僅是第一步,容易理解的并且和程序代碼完全一致的文檔才真正有價值。當(dāng)要求對軟件進(jìn)行維護(hù)時,不能指望由開發(fā)人員給我們仔細(xì)說明軟件。由于維護(hù) “階段持續(xù)的時間很長,因此,當(dāng)需要解釋軟件時,往往原來寫程序的人已經(jīng)不在附近了。8.2 8.2 維護(hù)的特點維護(hù)的特點絕大多數(shù)軟件在設(shè)計時沒有考慮將來的修改。除非使用強(qiáng)調(diào)模塊獨立原理的設(shè)計方法論,否則修改軟件既困難又容易發(fā)生差錯。軟件維護(hù)不是一項吸引人的工作。形成這種

7、觀念很大程度上是因為維護(hù)工作經(jīng)常遭受挫折。8.3 8.3 軟件維護(hù)過程軟件維護(hù)過程v維護(hù)過程本質(zhì)上是修改和壓縮了的軟件定義和開發(fā)過程。v為了有效地進(jìn)行軟件維護(hù),應(yīng)事先就開始做組織工作。 首先建立一個維護(hù)組織 確定報告及評價的過程 為每一個維護(hù)要求規(guī)定一個標(biāo)準(zhǔn)化的事件序列 建立一個適用于維護(hù)活動的記錄保管過程,并且規(guī)定復(fù)審標(biāo)準(zhǔn)8.3 8.3 軟件維護(hù)過程軟件維護(hù)過程v維護(hù)組織維護(hù)組織 維護(hù)修改建議維護(hù)修改建議 分析修改建議分析修改建議是否合理是否合理提交管理部門審查提交管理部門審查是否同意是否同意修改修改撤銷撤銷NYNY進(jìn)行測試進(jìn)行測試 提交管理部門審批提交管理部門審批是否批準(zhǔn)是否批準(zhǔn)更新主文檔

8、更新主文檔Y 更新其他文檔更新其他文檔 提交使用提交使用修改修改N軟件維護(hù)的管理流程軟件維護(hù)的管理流程8.3 8.3 軟件維護(hù)過程軟件維護(hù)過程v維護(hù)報告v應(yīng)該用標(biāo)準(zhǔn)化的格式表達(dá)所有軟件維護(hù)要求。n軟件維護(hù)人員給用戶提供空白的維護(hù)要求有時稱為軟件問題報告表,由要求一項維護(hù)活動的用戶填寫。n如果遇到了一個錯誤,那么必須完整描述導(dǎo)致出現(xiàn)錯誤的環(huán)境(包括輸入數(shù)據(jù),全部輸出數(shù)據(jù),以及其他有關(guān)信息)。n對于適應(yīng)性或完善性的維護(hù)要求,應(yīng)該提出一個簡短的需求說明書。n由維護(hù)管理員和系統(tǒng)管理員評價用戶提交的維護(hù)要求表。8.3 8.3 軟件維護(hù)過程軟件維護(hù)過程v 維護(hù)要求表是一個外部產(chǎn)生的文件,它是計劃維護(hù)活動的

9、基礎(chǔ)。v 軟件組織內(nèi)部應(yīng)該制定出一個軟件修改報告,它給出下述信息:(1)滿足維護(hù)要求表中提出的要求所需要的工作量;(2)維護(hù)要求的性質(zhì);(3)這項要求的優(yōu)先次序;(4)與修改有關(guān)的事后數(shù)據(jù)。 在擬定進(jìn)一步的維護(hù)計劃之前,把軟件修改報告提交給變化授權(quán)人審查批準(zhǔn)。8.3 8.3 軟件維護(hù)過程軟件維護(hù)過程v維護(hù)的事件流8.3 8.3 軟件維護(hù)過程軟件維護(hù)過程v保存維護(hù)記錄v應(yīng)該為每項維護(hù)工作都收集下述數(shù)據(jù):(1)程序標(biāo)識; (2)源語句數(shù);(3)機(jī)器指令條數(shù); (4)使用的程序設(shè)計語言;(5)程序安裝的日期; (6)自從安裝以來程序運行的次數(shù);(7)自從安裝以來程序失效的次數(shù);(8)程序變動的層次和

10、標(biāo)識;(9)因程序變動而增加的源語句數(shù);(10)因程序變動而刪除的源語句數(shù);(11)每個改動耗費的人時數(shù); (12)程序改動的日期; (13)軟件工程師的名字; (14)維護(hù)要求表的標(biāo)識; (15)維護(hù)類型; (l6)維護(hù)開始和完成的日期;(17)累計用于維護(hù)的人時數(shù); (18)與完成的維護(hù)相聯(lián)系的純效益。8.3 8.3 軟件維護(hù)過程軟件維護(hù)過程v評價維護(hù)活動從下述七個方面度量維護(hù)工作:(1)每次程序運行平均失效的次數(shù);(2)用于每一類維護(hù)活動的總?cè)藭r數(shù);(3)平均每個程序、每種語言、每種維護(hù)類型所做的程序變動效果;(4)維護(hù)過程中增加或刪除一個源語句平均花費的人時數(shù);(5)維護(hù)每種語言平均花

11、費的人時數(shù);(6)一張維護(hù)要求表的平均周轉(zhuǎn)時間;(7)不同維護(hù)類型所占的百分比。8.4 8.4 軟件的可維護(hù)性軟件的可維護(hù)性n許多軟件的維護(hù)十分困難,原因在于這些軟件的文檔不全、質(zhì)量差、開發(fā)過程不注意采用好的方法,忽視程序設(shè)計風(fēng)格等。n許多維護(hù)要求并不是因為程序中出錯而提出的,而是為適應(yīng)環(huán)境變化或需求變化而提出的。n為了使得軟件能夠易于維護(hù),必須考慮使軟件具有可維護(hù)性。8.4 8.4 軟件的可維護(hù)性軟件的可維護(hù)性8.4.1 8.4.1 軟件可維護(hù)性的因素軟件可維護(hù)性的因素。8.4.1 8.4.1 軟件可維護(hù)性的因素軟件可維護(hù)性的因素8.4.2 8.4.2 軟件可維護(hù)性的度量軟件可維護(hù)性的度量注

12、:系統(tǒng)平均不工作間隔時間注:系統(tǒng)平均不工作間隔時間MTBD(Mean Time Between System Downs)、平均停機(jī)時間、平均停機(jī)時間MDT(Mean Down Time)。:8.4.3 提高軟件可維護(hù)性的方法提高軟件可維護(hù)性的方法8.5 8.5 軟件再工程過程軟件再工程過程圖8.3 軟件再工程過程模型8.5 8.5 軟件再工程過程軟件再工程過程v典型的軟件再工程過程模型如圖8.3所示,該模型定義了6類活動。v再工程范型是一個循環(huán)模型。這意味著作為該范型的組成部分的每個活動都可能被重復(fù),而且對于任意一個特定的循環(huán)來說,過程可以在完成任意一個活動之后終止。8.5 8.5 軟件再工

13、程過程軟件再工程過程1.庫存目錄分析v每個軟件組織都應(yīng)該保存其擁有的所有應(yīng)用系統(tǒng)的庫存目錄。該目錄包含關(guān)于每個應(yīng)用系統(tǒng)的基本信息。v對庫中每個程序都做逆向工程或再工程是不現(xiàn)實的。下述3類程序有可能成為預(yù)防性維護(hù)的對象: (1)預(yù)定將使用多年的程序; (2)當(dāng)前正在成功地使用著的程序; (3)在最近的將來可能要做重大修改或增強(qiáng)的程序。8.5 8.5 軟件再工程過程軟件再工程過程v應(yīng)該仔細(xì)分析庫存目錄,按照業(yè)務(wù)重要程度、壽命、當(dāng)前可維護(hù)性、預(yù)期的修改次數(shù)等標(biāo)準(zhǔn),把庫中的應(yīng)用系統(tǒng)排序,從中選出再工程的候選者,然后明智地分配再工程所需要的資源。8.5 8.5 軟件再工程過程軟件再工程過程2.文檔重構(gòu)v

14、老程序固有的特點是缺乏文檔。具體情況不同,處理這個問題的方法也不同: 軟件穩(wěn)定或者生命周期臨近結(jié)束,保持現(xiàn)狀 首先建立起正在修改部分的文檔 如果某應(yīng)用系統(tǒng)是完成業(yè)務(wù)工作的關(guān)鍵,而且必須重構(gòu)全部文檔,則仍然應(yīng)該設(shè)法把文檔工作減少到必需的最小量。8.5 8.5 軟件再工程過程軟件再工程過程3.逆向工程v軟件的逆向工程是分析程序以便在比源代碼更高的抽象層次上創(chuàng)建出程序的某種表示的過程。v逆向工程是一個恢復(fù)設(shè)計結(jié)果的過程,逆向工程工具從現(xiàn)存的程序代碼中抽取有關(guān)數(shù)據(jù)、體系結(jié)構(gòu)和處理過程的設(shè)計信息。8.5 8.5 軟件再工程過程軟件再工程過程4.代碼重構(gòu)v重構(gòu)難于理解、測試和維護(hù)的模塊的代碼。v為了完成代碼重構(gòu)活動,首先用重構(gòu)工具分析源代碼,標(biāo)注出和結(jié)構(gòu)化程序設(shè)計概念相違背的部分。然后重構(gòu)有問題的代碼。最后,復(fù)審和測試生成的重構(gòu)代碼并更新代碼文檔。v重構(gòu)并不修改整體的程序體系結(jié)構(gòu),它僅關(guān)注個體模塊的設(shè)計細(xì)節(jié)以及在模塊中定義的局部數(shù)據(jù)結(jié)構(gòu)。v如果重構(gòu)擴(kuò)展到模塊邊界之外并涉及軟件體系結(jié)構(gòu),則重構(gòu)變成了正向工程。8.5 8.5 軟件再工程過程軟件再工程過程5.數(shù)據(jù)重構(gòu)v數(shù)據(jù)重構(gòu)是一種全范圍的再工程活動。v數(shù)據(jù)重構(gòu)始于逆向工程活動,分解當(dāng)前使用的數(shù)據(jù)體系結(jié)構(gòu),必要時定義數(shù)據(jù)模型,標(biāo)識數(shù)據(jù)對象和屬性,并從軟件質(zhì)量的角度復(fù)審現(xiàn)存

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論