第六章軟件維護技術(shù)_第1頁
第六章軟件維護技術(shù)_第2頁
第六章軟件維護技術(shù)_第3頁
第六章軟件維護技術(shù)_第4頁
第六章軟件維護技術(shù)_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《軟件工程》軟件維護馬麗6.1軟件維護的內(nèi)容及特點6.2軟件的可維護性6.3維護任務(wù)的實施6.4預(yù)防性維護6.5軟件再工程過程第六章軟件維護

學(xué)習(xí)內(nèi)容:

在軟件的開發(fā)工作已完成并把軟件產(chǎn)品交付給用戶使用之后,就進入了軟件維護階段。這個階段的工作目標(biāo)是保證軟件在一個相當(dāng)長的時期內(nèi)能夠正常運行,因此對軟件的維護就成為必不可少的了。軟件維護需要的工作量非常大。平均說來,大型軟件的維護成本高達(dá)開發(fā)成本的四倍左右。目前國外許多軟件開發(fā)組織把60%以上的人力用于維護已有的軟件,而且隨著軟件數(shù)量增多和使用壽命延長,這個百分比還在持續(xù)上升。將來維護工作甚至可能會束縛住軟件開發(fā)組織的手腳,使他們沒有余力開發(fā)新的軟件。

6.1軟件維護的內(nèi)容及特點6.1.1軟件維護的內(nèi)容所謂軟件維護就是在軟件已經(jīng)交付使用之后,為了改正錯誤或滿足新的需要而修改軟件的過程。我們可以通過描述軟件交付使用后可能進行的下述四項活動,具體地定義軟件維護。1.改正性維護

通常,在軟件開發(fā)過程中所進行的測試都是不完全、不徹底的,軟件中必然會有一些潛伏的錯誤被帶到運行階段來。用戶常常將把他們遇到的問題報告給軟件維護人員,要求解決。

我們把診斷和改正軟件錯誤的過程稱為改正性維護。例如,在軟件交付用戶使用之后,解決在開發(fā)時沒有測試所有可能的執(zhí)行通路而帶來的問題;解決程序中遺漏對文件中最后一個記錄的處理的錯誤等。2.適應(yīng)性維護計算機科學(xué)技術(shù)領(lǐng)域的各個方面都在迅速進步,大約每過36個月就有新一代的硬件宣告出現(xiàn);另一方面,應(yīng)用軟件的使用壽命卻很容易超過十年,遠(yuǎn)遠(yuǎn)長于最初開發(fā)這個軟件時的運行環(huán)境的壽命。因此,適應(yīng)性維護就是為了和變化了的環(huán)境適當(dāng)?shù)嘏浜隙M行的修改軟件的活動,是既必要又經(jīng)常的維護活動。例如,適應(yīng)性維護可以是修改原在DOS操作系統(tǒng)中運行的程序,使之能在Windows操作系統(tǒng)中運行;修改兩個程序,使它們能夠使用相同的記錄結(jié)構(gòu);修改程序,使它適用于另外一種終端設(shè)備。3.完善性維護

在使用軟件的過程中,用戶往往提出增加新功能或改變某些已有功能的要求,還可能提出提高程序性能的要求。為了滿足這類要求而修改軟件的活動,稱為完善性維護。例如,在儲蓄系統(tǒng)交付銀行使用之后,增加扣除利息稅的功能;縮短系統(tǒng)的響應(yīng)時間,使之達(dá)到新的要求;改變現(xiàn)有程序輸出數(shù)據(jù)的格式,以方便用戶;在正在運行的軟件中增加聯(lián)機求助功能等,都是完善性維護。4.預(yù)防性維護

當(dāng)為了提高未來的可維護性或可靠性,或為了給未來的改進工作奠定更好的基礎(chǔ)而修改軟件時,就出現(xiàn)了第四類維護活動,這類維護活動稱為預(yù)防性維護。通常,把預(yù)防性維護定義為:“把今天的方法學(xué)應(yīng)用于昨天的系統(tǒng)以滿足明天的需要”。也就是說,預(yù)防性維護就是采用先進的軟件工程方法對需要維護的軟件或軟件中的某一部分,主動地進行重新設(shè)計、編碼和測試。在維護階段的最初一二年,改正性維護的工作量往往比較大。隨著在軟件運行過程中錯誤發(fā)現(xiàn)率迅速降低并趨于穩(wěn)定,就進入了正常使用期間。但是,由于用戶經(jīng)常提出改造軟件的要求,適應(yīng)性維護和完善性維護的工作量逐漸增加,而且在這種維護過程中往往又會引入新的錯誤,從而進一步加大了維護的工作量。從上述關(guān)于軟件維護的定義不難看出,軟件維護絕不僅限于糾正使用中發(fā)現(xiàn)的錯誤,事實上在全部維護活動中一半以上是完善性維護。國外的統(tǒng)計數(shù)字表明:完善性維護占全部維護活動的50%~66%改正性維護占17%~21%,適應(yīng)性維護占18%~25%,其他維護活動只占4%左右。軟件維護策略

針對上一小節(jié)所述的三種典型的維護活動,JamesMartin等人提出了一些可以減少維護成本的策略。下面學(xué)習(xí)主要的軟件維護策略。1.降低改正性維護成本的策略

顯然,軟件中包含的錯誤越少,改正性維護的成本也就越低,但是,要生成100%可靠的軟件通常成本太高,并不一定合算。然而通過使用先進技術(shù)仍然可以大大提高軟件的可靠性,從而減少改正性維護的需求。2.降低適應(yīng)性維護成本的策略

這類維護是必然要進行的,但是要采取適當(dāng)?shù)牟呗?。?)在進行配置管理時,把硬件、操作系統(tǒng)和其他相關(guān)的環(huán)境因素的可能變化考慮在內(nèi),可以減少某些適應(yīng)性維護的工作量;(2)把與硬件、操作系統(tǒng)及其他外圍設(shè)備有關(guān)的代碼放到特定的程序模塊中,可以把因環(huán)境變化而必須修改的程序代碼局限于某些特定的程序模塊內(nèi);(3)使用內(nèi)部程序列表、外部文件及例行處理程序包,可以為維護時修改程序提供方便。3.降低完善性維護成本的策略

上述的減少前兩類維護成本的策略,通常也能降低完善性維護的成本。特別是數(shù)據(jù)庫管理系統(tǒng)、程序自動生成系統(tǒng)、軟件開發(fā)環(huán)境、第四代語言和應(yīng)用軟件包,可明顯減少維護工作量。此外,在需求分析過程中準(zhǔn)確地預(yù)測用戶將來可能提出的需求,并且在設(shè)計時為將來可能提出的需求預(yù)先做準(zhǔn)備,顯然是降低完善性維護成本的有力措施。在實際開發(fā)軟件之前,建立軟件的原型并讓用戶試用,以進一步完善他們對軟件的功能需求,也能顯著減少軟件交付使用之后的完善性維護需求。6.1.2軟件維護的的特點

圖6.1描繪了面對一項維護要求時,不同的軟件配置所導(dǎo)致的不同工作流程。返回目錄圖6.1結(jié)構(gòu)化維護與非結(jié)構(gòu)化維護的對比非結(jié)構(gòu)化維護結(jié)構(gòu)化維護6.1.2.1結(jié)構(gòu)化維護與非結(jié)構(gòu)化維護差別懸殊

如果軟件配置的惟一成分是程序代碼,那么維護活動從艱苦地評價程序代碼開始,而且常常由于程序內(nèi)部文檔不足而使評價更困難(諸如軟件結(jié)構(gòu)、全程數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口、性能或設(shè)計約束等微妙的特點是難于搞清的,而且常常誤解了這一類特點)。最終對程序代碼所做的改動的后果是難于估量的。因為沒有測試方面的文檔,所以不可能進行回歸測試。這就是非結(jié)構(gòu)化維護,這種維護方式是沒有使用良好定義的方法學(xué)開發(fā)出來的軟件的必然結(jié)果---并正在為此而付出代價(浪費精力和受挫折)。非結(jié)構(gòu)化維護(上圖右側(cè))

如果有一個完整的軟件配置存在,那么維護工作從評價設(shè)計文檔開始,確定軟件重要的結(jié)構(gòu)特點、性能特點以及接口特點;估量要求的改動將帶來的影響,并且計劃實施途徑。然后首先修改設(shè)計并且對所做的修改進行仔細(xì)復(fù)查。接下來編寫相應(yīng)的源程序代碼;使用在測試說明書中包含的信息進行回歸測試;最后,把修改后的軟件再次交付使用。上面描述的事件構(gòu)成結(jié)構(gòu)化維護,它是在軟件開發(fā)的早期應(yīng)用軟件工程方法學(xué)的結(jié)果。(它確實能減少精力的浪費并且能提高維護的總體質(zhì)量。)6.1.2.2維護的代價高昂

在過去的幾十年中,軟件維護的費用穩(wěn)步上升。1970年用于維護已有軟件的費用只占軟件總預(yù)算的35%~40%,1980年上升為40%~60%,1990年上升為70%~80%。維護費用只不過是軟件維護的最明顯的代價,其他一些現(xiàn)在還不明顯的代價將來可能更為人們所關(guān)注。因為可用的資源必須供維護任務(wù)使用,以致耽誤甚至喪失了開發(fā)新軟件的良機,這是軟件維護的一個無形的代價。其他無形的代價還有:

當(dāng)看來合理的有關(guān)改錯或修改的要求不能及時滿足時將引起用戶不滿;●由于維護時的改動,在軟件中引入了潛伏的故障,從而降低了軟件的質(zhì)量;●當(dāng)必須把軟件工程師調(diào)去從事維護工作時,將在開發(fā)過程中造成混亂。

軟件維護的最后一個代價是生產(chǎn)率的大幅度下降,這種情況在維護舊程序時常常遇到。例如,據(jù)Gausler在1976年的報道,美國空軍的飛行控制軟件每條指令的開發(fā)成本是75美元,然而維護成本大約是每條指令4000美元,也就是說,生產(chǎn)率下降了50倍以上。

用于維護工作的勞動(活動)可以分成生產(chǎn)性活動(例如,分析評價,修改設(shè)計和編寫程序代碼等)和非生產(chǎn)性活動(例如,理解程序代碼的功能,解釋數(shù)據(jù)結(jié)構(gòu)、接口特點和性能限度等)。下述公式給出維護工作量的一個模型:

其中:

M是維護用的總工作量

P是生產(chǎn)性工作量

K是經(jīng)驗常數(shù)

c是復(fù)雜程度(非結(jié)構(gòu)化設(shè)計和缺少文檔都會增加軟件的復(fù)雜程度)

d是維護人員對軟件的熟悉程度。

上面的模型表明,如果軟件的開發(fā)途徑不好(即,沒有使用軟件工程方法學(xué)),而且原來的開發(fā)人員不能參加維護工作,那么維護工作量(和費用)將指數(shù)地增加。M=P+K×exp(c-d)6.1.2.3維護的困難性

與軟件維護有關(guān)的絕大多數(shù)困難,都可歸因于軟件定義和軟件開發(fā)的方法有缺點。在軟件生命周期的頭兩個時期沒有嚴(yán)格而又科學(xué)的管理和規(guī)劃,幾乎必然會導(dǎo)致在最后階段出現(xiàn)問題。下面列出和軟件維護有關(guān)的部分問題:●讀懂別人寫的程序通常非常困難。而且困難程度隨著軟件配置成分的減少而迅速增加。如果僅有程序代碼沒有說明文檔,則會出現(xiàn)嚴(yán)重的問題?!裥枰S護的軟件往往沒有合格一致的文檔,或者文檔資料顯著不足。認(rèn)識到軟件必須有文檔僅僅是第一步,容易理解并且和程序代碼完全一致的文檔才真正有價值?!癞?dāng)要求對軟件進行維護時,不能指望由開發(fā)人員給我們仔細(xì)說明軟件。由于維護階段持續(xù)的時間很長,因此,當(dāng)需要解釋軟件時,往往原來寫程序的人已不在現(xiàn)場了。●絕大多數(shù)軟件在設(shè)計時沒有考慮將來的修改。除非使用強調(diào)模塊獨立原理的設(shè)計方法學(xué),否則修改軟件既困難又容易發(fā)生差錯?!褴浖S護不是一項吸引人的工作。形成這種觀念很大程度上是因為維護工作經(jīng)常遭受挫折。

上述種種困難存在于現(xiàn)有的沒采用軟件工程思想開發(fā)出來的軟件中。不應(yīng)該把一種科學(xué)的方法學(xué)看做萬應(yīng)靈藥,但是,軟件工程至少部分地解決了與維護有關(guān)的每一個問題。6.2軟件的可維護性6.2.1軟件的可維護性-----指軟件能夠被維護人員理解、改正、適應(yīng)和完善以適應(yīng)新的環(huán)境的難易程度。

決定軟件可維護性的因素

維護就是在軟件交付使用后進行的修改,修改之前必須理解修改的對象,修改之后應(yīng)該進行必要的測試,以保證所做的修改是正確的。如果是改正性維護,還必須預(yù)先進行調(diào)試以確定錯誤。因此,影響軟件可維護性的因素主要有下述七個:返回目錄1.可理解性2.可測試性3.可修改性4.可靠性5.可移植性6.可重用性7.效率6.2.2文檔

文檔是影響軟件可維護性的決定因素。由于長期使用的大型軟件系統(tǒng)在使用過程中必然會經(jīng)受多次修改,所以文檔比程序代碼更重要。

軟件系統(tǒng)的文檔可以分為用戶文檔和系統(tǒng)文檔兩類。用戶文檔主要描述系統(tǒng)功能和使用方法,并不關(guān)心這些功能是怎樣實現(xiàn)的;系統(tǒng)文檔描述系統(tǒng)設(shè)計、實現(xiàn)和測試等各方面的內(nèi)容。總的說來,軟件文檔應(yīng)該滿足下述要求:(1)必須描述如何使用這個系統(tǒng),沒有這種描述即使是最簡單的系統(tǒng)也無法使用;(2)必須描述怎樣安裝和管理這個系統(tǒng);(3)必須描述系統(tǒng)需求和設(shè)計;(4)必須描述系統(tǒng)的實現(xiàn)和測試,以便使系統(tǒng)成為可維護的。6.2.3提高軟件可維護性的方法從以下五方面解決:1.建立明確的軟件質(zhì)量標(biāo)準(zhǔn)2.利用先進的軟件技術(shù)和工具3.建立明確的質(zhì)量保證制度4.選擇可維護的程序設(shè)計語言5.改進軟件的文檔。6.2.4可維護性復(fù)審

可維護性是所有軟件都應(yīng)該具備的基本特點。在軟件工程過程的每一個階段都應(yīng)該考慮并努力提高軟件的可維護性,在每個階段結(jié)束前的技術(shù)審查和管理復(fù)審中,應(yīng)該著重對可維護性進行復(fù)審。6.3軟件維護實施過程

首先必須建立一個維護組織,隨后必須確定報告和評價的過程,而且必須為每個維護要求規(guī)定一個標(biāo)準(zhǔn)化的事件序列。此外,還應(yīng)該建立一個適用于維護活動的記錄保管過程,并且規(guī)定復(fù)審標(biāo)準(zhǔn)。6.3.1維護組織

雖然通常并不需要建立正式的維護組織,但是,即使對于一個小的軟件開發(fā)團體而言,非正式地委托責(zé)任也是絕對必要的。維護機構(gòu)成員一般包括:配置管理員、維護控制員、系統(tǒng)管理員、一般維護工作人員。

每個維護要求都通過維護管理員轉(zhuǎn)交給相應(yīng)的系統(tǒng)管理員去評價,見下頁圖示。返回目錄維護機構(gòu)

提示:在維護活動開始之前就明確維護責(zé)任是十分必要的,這樣做可以大大減少維護過程中可能出現(xiàn)的混亂。系統(tǒng)管理員是被指定去熟悉一小部分產(chǎn)品程序的技術(shù)人員。系統(tǒng)管理員對維護任務(wù)做出評價之后,由變化授權(quán)人決定應(yīng)該進行的活動。圖6.2描繪了上述組織方式。圖6.26.3.2維護報告

應(yīng)該用標(biāo)準(zhǔn)化的格式表達(dá)所有軟件維護要求。軟件維護人員通常給用戶提供空白的維護要求表——有時稱為軟件問題報告表,這個表格由要求一項維護活動的用戶填寫。如果遇到了一個錯誤,那么必須完整描述導(dǎo)致出現(xiàn)錯誤的環(huán)境(包括輸入數(shù)據(jù),全部輸出數(shù)據(jù),以及其他有關(guān)信息)。對于適應(yīng)性或完善性的維護要求,應(yīng)該提出一個簡短的需求說明書。如前所述,由維護管理員和系統(tǒng)管理員評價用戶提交的維護要求表。

維護要求表是一個外部產(chǎn)生的文件,它是計劃維護活動的基礎(chǔ)。軟件組織內(nèi)部應(yīng)該制定出一個軟件修改報告,它給出下述信息:(1)滿足維護要求表中提出的要求所需要的工作量;(2)維護要求的性質(zhì);(3)這項要求的優(yōu)先次序;(4)與修改有關(guān)的事后數(shù)據(jù)。

在擬定進一步的維護計劃之前,把軟件修改報告提交給變化授權(quán)人審查批準(zhǔn)。6.3.3維護的事件流

圖6.3描繪了由一項維護要求而引出的一串事件。1、首先應(yīng)該確定要求進行的維護的類型。用戶常常把一項要求看作是為了改正軟件的錯誤(即改正性維護),而開發(fā)人員可能把同一項要求看作是適應(yīng)性或完善性維護。當(dāng)存在不同意見時必須協(xié)商解決。

從圖6.3描繪的事件流看到:2、對改(校)正性維護要求的處理,從估量錯誤的嚴(yán)重程度開始。如果是一個嚴(yán)重的錯誤(例如,一個關(guān)鍵性的系統(tǒng)不能正常運行),則在系統(tǒng)管理員的指導(dǎo)下分派人員,并且立即開始問題分析過程。如果錯誤并不嚴(yán)重,那么改正性的維護和其他要求軟件開發(fā)資源的任務(wù)一起統(tǒng)籌安排。3、適應(yīng)性維護和完善性維護的要求沿著相同的事件流通路前進。應(yīng)該確定每個維護要求的優(yōu)先次序,并且安排要求的工作時間,就好像它是另一個開發(fā)任務(wù)一樣,如果一項維護要求的優(yōu)先次序非常高,可能立即開始維護工作。

4、不管維護類型如何,都需要進行同樣的技術(shù)工作。這些工作包括修改軟件設(shè)計、復(fù)查、必要的代碼修改、單元測試和集成測試(包括使用以前的測試方案的回歸測試),驗收測試和復(fù)審。不同類型的維護強調(diào)的重點不同,但是基本途徑是相同的。維護事件流中最后一個事件是復(fù)審,它再次檢驗軟件配置的所有成分的有效性,并且保證事實上滿足了維護要求表中的要求。5、當(dāng)然,也有并不完全符合上述事件流的維護要求。當(dāng)發(fā)生惡性的軟件問題時,就出現(xiàn)所謂的“救火”維護要求,這種情況需要立即把資源用來解決問題。(如果對一個組織來說,“救火”是常見的過程,那么就必須懷疑它的管理能力和技術(shù)能力。)

在完成軟件維護任務(wù)之后,進行處境復(fù)查常常是有好處的。一般說來,這種復(fù)查試圖回答下述問題:●

在當(dāng)前處境下設(shè)計、編碼或測試的哪些方面能用不同方法進行?●哪些維護資源是應(yīng)該有而事實上卻沒有的?●對于這項維護工作什么是主要的、次要的障礙是什么?●要求的維護類型中有預(yù)防性維護嗎?處境復(fù)查對將來維護工作的進行有重要影響,而且所提供的反饋信息對有效地管理軟件組織十分重要。6.3.4保存維護記錄

對于軟件生命周期的所有階段而言,以前記

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論