




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
軟件維護(hù)與再工程第六章第6章軟件維護(hù)與再工程軟件維護(hù)的概念軟件維護(hù)的活動軟件的可維護(hù)性軟件再工程26.1
軟件維護(hù)的概念
當(dāng)軟件系統(tǒng)在實(shí)際環(huán)境被用戶使用時(shí),軟件開發(fā)宣告結(jié)束。但軟件總是要變化的,在軟件交付使用后修改軟件的過程稱為軟件維護(hù)。一般的軟件維護(hù)不包括重大的體系結(jié)構(gòu)的改變,變更的實(shí)現(xiàn)方法一般是修改已有的系統(tǒng)構(gòu)件以及在必要的地方添加新構(gòu)件到系統(tǒng)中。1、軟件維護(hù)的分類?改正性維護(hù):修改軟件缺陷。?適應(yīng)性維護(hù):適應(yīng)變更的操作環(huán)境(硬件、操作系統(tǒng)平臺、其他支持軟件)。?增強(qiáng)性維護(hù):系統(tǒng)需求改變(機(jī)構(gòu)因素、業(yè)務(wù)改變)。3
Lientz和Swanson(1980)對維護(hù)的工作量做過調(diào)查,如圖所示。Nosek和Palvia(1990)在十年后給出的數(shù)據(jù)與此相似。適應(yīng)性維護(hù)和增強(qiáng)性維護(hù)占了絕大部分工作量。維護(hù)是系統(tǒng)開發(fā)過程的自然延續(xù),同樣也涉及到需求描述、設(shè)計(jì)、實(shí)現(xiàn)和測試活動。
42、維護(hù)的成本
維護(hù)成本和開發(fā)成本的比例在不同的應(yīng)用域中是不同的。Guimaraes(1983)的研究表明,對于業(yè)務(wù)應(yīng)用系統(tǒng),維護(hù)成本和系統(tǒng)開發(fā)成本大體相等。對于嵌入式實(shí)時(shí)系統(tǒng),維護(hù)費(fèi)用是開發(fā)成本的四倍以上。帶來高維護(hù)費(fèi)用的關(guān)鍵因素:?人員的不穩(wěn)定?合同責(zé)任?維護(hù)人員技術(shù)水平?系統(tǒng)結(jié)構(gòu)衰退遺留系統(tǒng)的結(jié)構(gòu)受到頻繁變更的破壞;沒有使用現(xiàn)代的軟件工程技術(shù)開發(fā);文檔不全、不一致;沒有采用配置管理,系統(tǒng)變更時(shí)在尋找系統(tǒng)構(gòu)件的合適版本上浪費(fèi)時(shí)間。
5
Belady和Lehman提出了一個計(jì)算維護(hù)工作量的模型:
M=p+K×e(c-d)其中M:軟件維護(hù)所有的工作量;p:生產(chǎn)性工作量(分析、設(shè)計(jì)、編碼及測試);K:經(jīng)驗(yàn)常數(shù);c:復(fù)雜程度;d:維護(hù)人員對軟件的熟悉程度。該模型描述了影響維護(hù)的諸多因素中重要的關(guān)系。如果一個系統(tǒng)開發(fā)沒有遵循軟件工程原則,軟件結(jié)構(gòu)不好,c的值就會很高,再加上維護(hù)人員對軟件的不熟悉,d的值很低。結(jié)果是,維護(hù)的成本呈指數(shù)級的增長。6
如何降低軟件維護(hù)的費(fèi)用?
(1)從開發(fā)階段的一開始就按質(zhì)量標(biāo)準(zhǔn)構(gòu)建系統(tǒng),給予“可維護(hù)性”屬性以足夠的重視,這樣可以使系統(tǒng)的整個生命周期成本減少。下圖說明了這個問題。系統(tǒng)1在開發(fā)成本中多投入$25000,用于提高系統(tǒng)的可維護(hù)性,結(jié)果在整個生命周期中節(jié)省了$100000的維護(hù)成本。
7
(2)采用演化式的系統(tǒng)開發(fā)模型(如增量、螺旋),建立能結(jié)合新需求而演化和變更的系統(tǒng)。(3)實(shí)施軟件再工程,改善系統(tǒng)結(jié)構(gòu),提高可維護(hù)性。86.2
軟件維護(hù)活動
Pfleeger和Bohner(1990)提出了軟件維護(hù)的一種模型,其中包含了度量的反饋,見下圖:9
該圖說明了當(dāng)請求進(jìn)行一些變更時(shí)要執(zhí)行的活動,底部帶標(biāo)注的箭頭代表提供的度量信息,管理人員利用這些信息決定什么時(shí)候和怎樣進(jìn)行變動。維護(hù)活動的一般過程:(1)變更分析分析各種變更帶來的的負(fù)面影響:產(chǎn)生不正確或不完整的補(bǔ)丁軟件、結(jié)構(gòu)很差的設(shè)計(jì)與編碼、構(gòu)件不標(biāo)準(zhǔn)等等。這些負(fù)面影響使軟件復(fù)雜性增加,更不易理解。因此對變更的成本、影響要進(jìn)行分析。(2)理解變更,規(guī)劃新版本根據(jù)變更的類型(缺陷修正、平臺適應(yīng)或系統(tǒng)增強(qiáng)),決定哪些變更在下一個版本中完成。
10
(3)實(shí)現(xiàn)變更分析系統(tǒng)變更的需求(如有必要,可對提出的變更建立原型),對系統(tǒng)構(gòu)件重新設(shè)計(jì),編碼、測試。軟件開發(fā)中重要的配置管理思想在這里同樣適用。對于緊急變更,保證更快速度完成比保證變更過程規(guī)范化更重要。(4)影響分析維護(hù)活動中改動的是需求、設(shè)計(jì)與代碼構(gòu)件、測試用例以及文檔等工作產(chǎn)品。一個工作產(chǎn)品的質(zhì)量可能影響到其他工作產(chǎn)品,Pfleeger(1990)提出必須建立并跟蹤工作產(chǎn)品之間的關(guān)系,幫助我們評估一個構(gòu)件的變更對所有其他構(gòu)件的影響。下圖展示了工作產(chǎn)品之間的關(guān)系及可追蹤性:11R1R2R3RiD1D2D3Dj......水平追蹤連接C1C2C3Ck...T1T2T3Tn...垂直追蹤連接需求設(shè)計(jì)代碼測試工作產(chǎn)品的追蹤圖12
其中:每個矩形框內(nèi)的結(jié)點(diǎn):表示為該階段產(chǎn)生的工作產(chǎn)品或構(gòu)件。構(gòu)件及之間的實(shí)線箭頭:構(gòu)成了度量產(chǎn)品的垂直跟蹤圖。虛線箭頭連接的圖:構(gòu)成了系統(tǒng)的水平跟蹤圖,代表了對變更的一個過程的度量。在某一階段內(nèi)(矩形框內(nèi))的產(chǎn)品變更前后分別對以下度量指標(biāo)求值:?結(jié)點(diǎn)總數(shù)?指向一個結(jié)點(diǎn)的邊數(shù)(該結(jié)點(diǎn)的入度)?一個結(jié)點(diǎn)發(fā)出的邊數(shù)(出度)?環(huán)路數(shù)。
13Pfleeger提出計(jì)算最小路徑集,如果軟件變更后覆蓋的路徑增加,或者結(jié)點(diǎn)的入度、出度增加,則系統(tǒng)會更復(fù)雜、更難于維護(hù)。利用此信息,維護(hù)組可能決定用另一種方式實(shí)現(xiàn)或者取消該變更。每一對工作產(chǎn)品:需求產(chǎn)品與設(shè)計(jì)產(chǎn)品,設(shè)計(jì)產(chǎn)品與代碼產(chǎn)品,代碼產(chǎn)品與測試用例,在兩者之間形成關(guān)系子圖,度量規(guī)模和復(fù)雜性關(guān)系,從而得出負(fù)面影響。還可瀏覽整個水平跟蹤圖,了解變動后總的可追蹤性變得更復(fù)雜還是簡單了。146.3
軟件可維護(hù)性
軟件的可維護(hù)性、可靠性和可用性是衡量軟件質(zhì)量的幾個主要特性,是用戶最關(guān)心的幾個問題。軟件可維護(hù)性可定性地定義為:維護(hù)人員理解、改正、改動和改進(jìn)這個軟件的難易程度。1、用于衡量可維護(hù)性的軟件特性:可用下面7個質(zhì)量特性來衡量:可理解性、可測試性、可修改性、可靠性、可移植性、可使用性和效率。對于不同類型的維護(hù),這7種特性的側(cè)重點(diǎn)也不相同。要將這些質(zhì)量要求貫徹到各開發(fā)階段的各步驟中。軟件的可維護(hù)性是產(chǎn)品投入運(yùn)行以前各階段針對上述各質(zhì)量特性要求進(jìn)行開發(fā)的最終結(jié)果。15
開發(fā)階段可維護(hù)性因素
需求分析?明確維護(hù)的范圍和責(zé)任。?檢查每條需求,分析維護(hù)時(shí)可能需要的支持。
?明確哪些資源可能會變化以及帶來的影響。?了解系統(tǒng)可能的擴(kuò)展與變更。設(shè)計(jì)階段?設(shè)計(jì)系統(tǒng)擴(kuò)展、壓縮或變更的方法(如將變動部分與穩(wěn)定部分分離)。?做一些變更或適應(yīng)不同軟硬件環(huán)境的實(shí)驗(yàn)。?遵循高內(nèi)聚、低耦合原則。?設(shè)計(jì)界面不受系統(tǒng)內(nèi)部變更的影響。?每一個模塊只完成一個功能。
16編碼階段?檢查源程序與文檔的一致性。
?檢查源程序的可理解性。?源程序是否符合編碼規(guī)范。測試階段?維護(hù)人員與測試人員一起按照需求文檔和設(shè)計(jì)文檔測試軟件的有效性、可用性。?維護(hù)人員將收集的出錯信息分類統(tǒng)計(jì),為今后的維護(hù)奠定基礎(chǔ)。172、可維護(hù)性的度量
(1)使用質(zhì)量檢查表度量一個可維護(hù)性的軟件的7種特性。質(zhì)量檢查表是用于測試程序中某些質(zhì)量特性是否存在的一個問題清單,檢查者對表上的每一個問題,回答“是”或“否”。(2)間接地度量可維護(hù)性(面向時(shí)間的度量):?察覺到問題所耗的時(shí)間;?分析問題所用的時(shí)間;?形成修改說明所需時(shí)間;?修改所用時(shí)間;?局部測試所用時(shí)間;?整體測試所用時(shí)間;?維護(hù)復(fù)審所用時(shí)間;?完全恢復(fù)所用時(shí)間。有關(guān)設(shè)計(jì)結(jié)構(gòu)和軟件復(fù)雜性的度量也可間接說明軟件的可維護(hù)性。183、如何提高軟件的可維護(hù)性
(1)建立明確的軟件質(zhì)量目標(biāo)。有一些特性是相互促進(jìn)的,有一些是相互矛盾的,根據(jù)用途不同或計(jì)算機(jī)環(huán)境不同,確定最重要的特性。(2)使用先進(jìn)的開發(fā)技術(shù)和工具。傳統(tǒng)方法開發(fā)的軟件結(jié)構(gòu)緊密相關(guān)于所要完成的功能,結(jié)構(gòu)不穩(wěn)定。(3)建立明確的質(zhì)量保證措施。在各里程碑處檢查與可維護(hù)性相關(guān)的軟件特性。(見下圖)19各里程碑處對與可維護(hù)性相關(guān)的軟件特性的檢查:(4)選擇易理解、易編程的語言。(5)建立完整、一致和正確的文檔。
分析設(shè)計(jì)編碼測試驗(yàn)收配置復(fù)審可靠性可移植性可用性可理解性可修改性可測試性可理解性可修改性可移植性效率可靠性效率完整性一致性可理解性206.4
軟件再工程
在許多企業(yè)中,大型軟件的使用時(shí)間多為10年以上,維護(hù)這些軟件是一個挑戰(zhàn)!如一個保險(xiǎn)公司使用多種實(shí)現(xiàn)語言在不同平臺上支持許多不同的應(yīng)用程序,例如有一個應(yīng)用程序處理某種類型的保險(xiǎn)單、保單持有人信息、保險(xiǎn)統(tǒng)計(jì)與記帳信息。這樣的保單可能要維持?jǐn)?shù)十年。有時(shí)不到最后一個保單持有人死亡并且每一項(xiàng)索賠都得到支付,是不可能報(bào)廢軟件的。這些軟件有的已老化,雖然經(jīng)常出錯,但對業(yè)務(wù)處理提供了有力的支持。企業(yè)還要依賴這些系統(tǒng),卻很難決定怎樣使這些系統(tǒng)更易于維護(hù)。其選擇可能是擴(kuò)充或者用新技術(shù)替換;每種選擇都希望在成本盡可能低的情況下增加軟件質(zhì)量。因此軟件再工程是試圖提高當(dāng)前系統(tǒng)(或稱遺留系統(tǒng))的總體質(zhì)量、對它們進(jìn)行重構(gòu)的工程。211、遺留系統(tǒng)遺留系統(tǒng)是仍然提供必要的業(yè)務(wù)服務(wù)的舊系統(tǒng)。更換一個遺留系統(tǒng)是一個有風(fēng)險(xiǎn)的策略:
?遺留系統(tǒng)幾乎沒有完整的描述。?業(yè)務(wù)過程和遺留系統(tǒng)的操作方式緊密的交織在一起。
?重要的業(yè)務(wù)規(guī)則(業(yè)務(wù)功能的約束)隱藏在軟件內(nèi)部。?系統(tǒng)的結(jié)構(gòu)衰退,理解系統(tǒng)的難度加大。
遺留系統(tǒng)的評估與選擇:?低質(zhì)量、低業(yè)務(wù)價(jià)值:拋棄
?低質(zhì)量、高業(yè)務(wù)價(jià)值:轉(zhuǎn)換或替代?高質(zhì)量、低業(yè)務(wù)價(jià)值:不轉(zhuǎn)換?高質(zhì)量、高業(yè)務(wù)價(jià)值:正常的系統(tǒng)維護(hù)
22
2、軟件再工程軟件再工程通過對遺留系統(tǒng)的改造使它們的質(zhì)量得到提高。與新開發(fā)軟件之間的重要差別表現(xiàn)在開發(fā)的起點(diǎn)上。再工程開始于已有的系統(tǒng),通過改善原始系統(tǒng)的結(jié)構(gòu)和產(chǎn)生新的系統(tǒng)文檔,使之更容易理解、更易于維護(hù)。實(shí)施軟件再工程的優(yōu)越性是:
?減少重新開發(fā)軟件的風(fēng)險(xiǎn)
?降低開發(fā)軟件的成本再工程的成本比重新開發(fā)要小的多。
Ulrich(1990)引用了一個商業(yè)系統(tǒng)的例子:重新實(shí)現(xiàn)預(yù)算5000萬美元,經(jīng)過再工程,僅用了1200萬美元,是重新開發(fā)費(fèi)用的四分之一。因此當(dāng)一個系統(tǒng)有很高的業(yè)務(wù)價(jià)值同時(shí)需要很高的維護(hù)費(fèi)用時(shí),對該系統(tǒng)實(shí)施再工程是個經(jīng)濟(jì)的辦法。軟件再工程過程中的活動主要包括以下幾個方面:23
?
文檔重構(gòu)(redocument)?結(jié)構(gòu)重組(restructuring)?逆向工程(reverseengineering)?再工程(reengineering)24(1)文檔重構(gòu)對源代碼進(jìn)行靜態(tài)分析,產(chǎn)生以下用圖標(biāo)和文本表示的信息:?構(gòu)件的調(diào)用關(guān)系?類或構(gòu)件的層次關(guān)系?數(shù)據(jù)接口表?數(shù)據(jù)詞典信息?數(shù)據(jù)流圖、控制流圖、實(shí)體-關(guān)系圖、結(jié)構(gòu)圖?偽代碼?測試路徑?構(gòu)件與變量的交叉引用圖形、文本、表格信息用來幫助維護(hù)人員理解代碼,評估一個系統(tǒng)是否需要結(jié)構(gòu)重組。建立文檔是非常耗費(fèi)時(shí)間的,僅對系統(tǒng)中當(dāng)前正在改變的那些部分建立有用的相關(guān)文檔。重構(gòu)(restructuring)是在不改變軟件基本功能和性能的前提下,對軟件內(nèi)部的一種調(diào)整。25(2)結(jié)構(gòu)重組
這里主要指軟件重構(gòu),注重修改源代碼和(或)數(shù)據(jù),使適應(yīng)未來的變化,通常不修改軟件整體的體系結(jié)構(gòu)。包括兩方面:
·代碼重構(gòu):生成與源程序相同功能、但具有更高質(zhì)量的設(shè)計(jì)。如非結(jié)構(gòu)化的程序轉(zhuǎn)換為更現(xiàn)代語言的程序。如FunctionEncapsulationTool能夠?qū)⑴f的C程序重構(gòu)為C++程序。·數(shù)據(jù)重構(gòu):對程序處理的數(shù)據(jù)作改變以反映程序變更。先進(jìn)行源代碼分析的逆向工程,評估所有包含數(shù)據(jù)定義、文件描述、I/O以及接口描述的程序語句,從中抽取數(shù)據(jù)項(xiàng)和對象,獲取關(guān)于數(shù)據(jù)流的信息,理解已實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu),然后對數(shù)據(jù)重新設(shè)計(jì),包括物理修改:文件格式或數(shù)據(jù)庫類型的轉(zhuǎn)換。26
(3)逆向工程
是一個分析程序的過程,利用工具從現(xiàn)有的程序中抽取數(shù)據(jù)、體系結(jié)構(gòu)和過程的設(shè)計(jì)信息。
逆向工程的關(guā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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 統(tǒng)編版三年級語文下冊第三單元達(dá)標(biāo)測試卷(含答案)
- 2019-2025年軍隊(duì)文職人員招聘之軍隊(duì)文職法學(xué)題庫檢測試卷A卷附答案
- 2019-2025年消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識題庫練習(xí)試卷B卷附答案
- 2019-2025年軍隊(duì)文職人員招聘之軍隊(duì)文職管理學(xué)與服務(wù)通關(guān)提分題庫及完整答案
- 2025年軍隊(duì)文職人員招聘之軍隊(duì)文職教育學(xué)題庫檢測試卷A卷附答案
- 初二壓強(qiáng)物理試題及答案
- 螺螄粉專業(yè)知識培訓(xùn)課件
- 2025年大學(xué)生防詐騙知識競賽題庫及答案(一)
- 從愚公移山看堅(jiān)持與毅力作文
- 《初識高中物理實(shí)驗(yàn):運(yùn)動與力的教學(xué)計(jì)劃》
- 五步三查”流程規(guī)范要求ppt課件
- 三打白骨精英語話劇劇本
- 高嶺土化驗(yàn)檢測分析報(bào)告
- 商業(yè)銀行綜合柜臺業(yè)務(wù)(共227頁).ppt
- 廢舊物資回收服務(wù)實(shí)施方案
- 電力建設(shè)工程質(zhì)量監(jiān)督檢查大綱新版
- 四“借”三“有”寫清楚實(shí)驗(yàn)過程——三下“我做了一項(xiàng)小實(shí)驗(yàn)”習(xí)作教學(xué)
- 呼吸困難完全PPT課件
- 中國春節(jié)習(xí)俗簡介0001
- 高二數(shù)學(xué)教學(xué)進(jìn)度計(jì)劃表
- 規(guī)章制度匯編結(jié)構(gòu)格式標(biāo)準(zhǔn)
評論
0/150
提交評論