版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
軟件維護與再工程第六章第6章軟件維護與再工程軟件維護的概念軟件維護的活動軟件的可維護性軟件再工程26.1
軟件維護的概念
當軟件系統(tǒng)在實際環(huán)境被用戶使用時,軟件開發(fā)宣告結(jié)束。但軟件總是要變化的,在軟件交付使用后修改軟件的過程稱為軟件維護。一般的軟件維護不包括重大的體系結(jié)構的改變,變更的實現(xiàn)方法一般是修改已有的系統(tǒng)構件以及在必要的地方添加新構件到系統(tǒng)中。1、軟件維護的分類?改正性維護:修改軟件缺陷。?適應性維護:適應變更的操作環(huán)境(硬件、操作系統(tǒng)平臺、其他支持軟件)。?增強性維護:系統(tǒng)需求改變(機構因素、業(yè)務改變)。3
Lientz和Swanson(1980)對維護的工作量做過調(diào)查,如圖所示。Nosek和Palvia(1990)在十年后給出的數(shù)據(jù)與此相似。適應性維護和增強性維護占了絕大部分工作量。維護是系統(tǒng)開發(fā)過程的自然延續(xù),同樣也涉及到需求描述、設計、實現(xiàn)和測試活動。
42、維護的成本
維護成本和開發(fā)成本的比例在不同的應用域中是不同的。Guimaraes(1983)的研究表明,對于業(yè)務應用系統(tǒng),維護成本和系統(tǒng)開發(fā)成本大體相等。對于嵌入式實時系統(tǒng),維護費用是開發(fā)成本的四倍以上。帶來高維護費用的關鍵因素:?人員的不穩(wěn)定?合同責任?維護人員技術水平?系統(tǒng)結(jié)構衰退遺留系統(tǒng)的結(jié)構受到頻繁變更的破壞;沒有使用現(xiàn)代的軟件工程技術開發(fā);文檔不全、不一致;沒有采用配置管理,系統(tǒng)變更時在尋找系統(tǒng)構件的合適版本上浪費時間。
5
Belady和Lehman提出了一個計算維護工作量的模型:
M=p+K×e(c-d)其中M:軟件維護所有的工作量;p:生產(chǎn)性工作量(分析、設計、編碼及測試);K:經(jīng)驗常數(shù);c:復雜程度;d:維護人員對軟件的熟悉程度。該模型描述了影響維護的諸多因素中重要的關系。如果一個系統(tǒng)開發(fā)沒有遵循軟件工程原則,軟件結(jié)構不好,c的值就會很高,再加上維護人員對軟件的不熟悉,d的值很低。結(jié)果是,維護的成本呈指數(shù)級的增長。6
如何降低軟件維護的費用?
(1)從開發(fā)階段的一開始就按質(zhì)量標準構建系統(tǒng),給予“可維護性”屬性以足夠的重視,這樣可以使系統(tǒng)的整個生命周期成本減少。下圖說明了這個問題。系統(tǒng)1在開發(fā)成本中多投入$25000,用于提高系統(tǒng)的可維護性,結(jié)果在整個生命周期中節(jié)省了$100000的維護成本。
7
(2)采用演化式的系統(tǒng)開發(fā)模型(如增量、螺旋),建立能結(jié)合新需求而演化和變更的系統(tǒng)。(3)實施軟件再工程,改善系統(tǒng)結(jié)構,提高可維護性。86.2
軟件維護活動
Pfleeger和Bohner(1990)提出了軟件維護的一種模型,其中包含了度量的反饋,見下圖:9
該圖說明了當請求進行一些變更時要執(zhí)行的活動,底部帶標注的箭頭代表提供的度量信息,管理人員利用這些信息決定什么時候和怎樣進行變動。維護活動的一般過程:(1)變更分析分析各種變更帶來的的負面影響:產(chǎn)生不正確或不完整的補丁軟件、結(jié)構很差的設計與編碼、構件不標準等等。這些負面影響使軟件復雜性增加,更不易理解。因此對變更的成本、影響要進行分析。(2)理解變更,規(guī)劃新版本根據(jù)變更的類型(缺陷修正、平臺適應或系統(tǒng)增強),決定哪些變更在下一個版本中完成。
10
(3)實現(xiàn)變更分析系統(tǒng)變更的需求(如有必要,可對提出的變更建立原型),對系統(tǒng)構件重新設計,編碼、測試。軟件開發(fā)中重要的配置管理思想在這里同樣適用。對于緊急變更,保證更快速度完成比保證變更過程規(guī)范化更重要。(4)影響分析維護活動中改動的是需求、設計與代碼構件、測試用例以及文檔等工作產(chǎn)品。一個工作產(chǎn)品的質(zhì)量可能影響到其他工作產(chǎn)品,Pfleeger(1990)提出必須建立并跟蹤工作產(chǎn)品之間的關系,幫助我們評估一個構件的變更對所有其他構件的影響。下圖展示了工作產(chǎn)品之間的關系及可追蹤性:11R1R2R3RiD1D2D3Dj......水平追蹤連接C1C2C3Ck...T1T2T3Tn...垂直追蹤連接需求設計代碼測試工作產(chǎn)品的追蹤圖12
其中:每個矩形框內(nèi)的結(jié)點:表示為該階段產(chǎn)生的工作產(chǎn)品或構件。構件及之間的實線箭頭:構成了度量產(chǎn)品的垂直跟蹤圖。虛線箭頭連接的圖:構成了系統(tǒng)的水平跟蹤圖,代表了對變更的一個過程的度量。在某一階段內(nèi)(矩形框內(nèi))的產(chǎn)品變更前后分別對以下度量指標求值:?結(jié)點總數(shù)?指向一個結(jié)點的邊數(shù)(該結(jié)點的入度)?一個結(jié)點發(fā)出的邊數(shù)(出度)?環(huán)路數(shù)。
13Pfleeger提出計算最小路徑集,如果軟件變更后覆蓋的路徑增加,或者結(jié)點的入度、出度增加,則系統(tǒng)會更復雜、更難于維護。利用此信息,維護組可能決定用另一種方式實現(xiàn)或者取消該變更。每一對工作產(chǎn)品:需求產(chǎn)品與設計產(chǎn)品,設計產(chǎn)品與代碼產(chǎn)品,代碼產(chǎn)品與測試用例,在兩者之間形成關系子圖,度量規(guī)模和復雜性關系,從而得出負面影響。還可瀏覽整個水平跟蹤圖,了解變動后總的可追蹤性變得更復雜還是簡單了。146.3
軟件可維護性
軟件的可維護性、可靠性和可用性是衡量軟件質(zhì)量的幾個主要特性,是用戶最關心的幾個問題。軟件可維護性可定性地定義為:維護人員理解、改正、改動和改進這個軟件的難易程度。1、用于衡量可維護性的軟件特性:可用下面7個質(zhì)量特性來衡量:可理解性、可測試性、可修改性、可靠性、可移植性、可使用性和效率。對于不同類型的維護,這7種特性的側(cè)重點也不相同。要將這些質(zhì)量要求貫徹到各開發(fā)階段的各步驟中。軟件的可維護性是產(chǎn)品投入運行以前各階段針對上述各質(zhì)量特性要求進行開發(fā)的最終結(jié)果。15
開發(fā)階段可維護性因素
需求分析?明確維護的范圍和責任。?檢查每條需求,分析維護時可能需要的支持。
?明確哪些資源可能會變化以及帶來的影響。?了解系統(tǒng)可能的擴展與變更。設計階段?設計系統(tǒng)擴展、壓縮或變更的方法(如將變動部分與穩(wěn)定部分分離)。?做一些變更或適應不同軟硬件環(huán)境的實驗。?遵循高內(nèi)聚、低耦合原則。?設計界面不受系統(tǒng)內(nèi)部變更的影響。?每一個模塊只完成一個功能。
16編碼階段?檢查源程序與文檔的一致性。
?檢查源程序的可理解性。?源程序是否符合編碼規(guī)范。測試階段?維護人員與測試人員一起按照需求文檔和設計文檔測試軟件的有效性、可用性。?維護人員將收集的出錯信息分類統(tǒng)計,為今后的維護奠定基礎。172、可維護性的度量
(1)使用質(zhì)量檢查表度量一個可維護性的軟件的7種特性。質(zhì)量檢查表是用于測試程序中某些質(zhì)量特性是否存在的一個問題清單,檢查者對表上的每一個問題,回答“是”或“否”。(2)間接地度量可維護性(面向時間的度量):?察覺到問題所耗的時間;?分析問題所用的時間;?形成修改說明所需時間;?修改所用時間;?局部測試所用時間;?整體測試所用時間;?維護復審所用時間;?完全恢復所用時間。有關設計結(jié)構和軟件復雜性的度量也可間接說明軟件的可維護性。183、如何提高軟件的可維護性
(1)建立明確的軟件質(zhì)量目標。有一些特性是相互促進的,有一些是相互矛盾的,根據(jù)用途不同或計算機環(huán)境不同,確定最重要的特性。(2)使用先進的開發(fā)技術和工具。傳統(tǒng)方法開發(fā)的軟件結(jié)構緊密相關于所要完成的功能,結(jié)構不穩(wěn)定。(3)建立明確的質(zhì)量保證措施。在各里程碑處檢查與可維護性相關的軟件特性。(見下圖)19各里程碑處對與可維護性相關的軟件特性的檢查:(4)選擇易理解、易編程的語言。(5)建立完整、一致和正確的文檔。
分析設計編碼測試驗收配置復審可靠性可移植性可用性可理解性可修改性可測試性可理解性可修改性可移植性效率可靠性效率完整性一致性可理解性206.4
軟件再工程
在許多企業(yè)中,大型軟件的使用時間多為10年以上,維護這些軟件是一個挑戰(zhàn)!如一個保險公司使用多種實現(xiàn)語言在不同平臺上支持許多不同的應用程序,例如有一個應用程序處理某種類型的保險單、保單持有人信息、保險統(tǒng)計與記帳信息。這樣的保單可能要維持數(shù)十年。有時不到最后一個保單持有人死亡并且每一項索賠都得到支付,是不可能報廢軟件的。這些軟件有的已老化,雖然經(jīng)常出錯,但對業(yè)務處理提供了有力的支持。企業(yè)還要依賴這些系統(tǒng),卻很難決定怎樣使這些系統(tǒng)更易于維護。其選擇可能是擴充或者用新技術替換;每種選擇都希望在成本盡可能低的情況下增加軟件質(zhì)量。因此軟件再工程是試圖提高當前系統(tǒng)(或稱遺留系統(tǒng))的總體質(zhì)量、對它們進行重構的工程。211、遺留系統(tǒng)遺留系統(tǒng)是仍然提供必要的業(yè)務服務的舊系統(tǒng)。更換一個遺留系統(tǒng)是一個有風險的策略:
?遺留系統(tǒng)幾乎沒有完整的描述。?業(yè)務過程和遺留系統(tǒng)的操作方式緊密的交織在一起。
?重要的業(yè)務規(guī)則(業(yè)務功能的約束)隱藏在軟件內(nèi)部。?系統(tǒng)的結(jié)構衰退,理解系統(tǒng)的難度加大。
遺留系統(tǒng)的評估與選擇:?低質(zhì)量、低業(yè)務價值:拋棄
?低質(zhì)量、高業(yè)務價值:轉(zhuǎn)換或替代?高質(zhì)量、低業(yè)務價值:不轉(zhuǎn)換?高質(zhì)量、高業(yè)務價值:正常的系統(tǒng)維護
22
2、軟件再工程軟件再工程通過對遺留系統(tǒng)的改造使它們的質(zhì)量得到提高。與新開發(fā)軟件之間的重要差別表現(xiàn)在開發(fā)的起點上。再工程開始于已有的系統(tǒng),通過改善原始系統(tǒng)的結(jié)構和產(chǎn)生新的系統(tǒng)文檔,使之更容易理解、更易于維護。實施軟件再工程的優(yōu)越性是:
?減少重新開發(fā)軟件的風險
?降低開發(fā)軟件的成本再工程的成本比重新開發(fā)要小的多。
Ulrich(1990)引用了一個商業(yè)系統(tǒng)的例子:重新實現(xiàn)預算5000萬美元,經(jīng)過再工程,僅用了1200萬美元,是重新開發(fā)費用的四分之一。因此當一個系統(tǒng)有很高的業(yè)務價值同時需要很高的維護費用時,對該系統(tǒng)實施再工程是個經(jīng)濟的辦法。軟件再工程過程中的活動主要包括以下幾個方面:23
?
文檔重構(redocument)?結(jié)構重組(restructuring)?逆向工程(reverseengineering)?再工程(reengineering)24(1)文檔重構對源代碼進行靜態(tài)分析,產(chǎn)生以下用圖標和文本表示的信息:?構件的調(diào)用關系?類或構件的層次關系?數(shù)據(jù)接口表?數(shù)據(jù)詞典信息?數(shù)據(jù)流圖、控制流圖、實體-關系圖、結(jié)構圖?偽代碼?測試路徑?構件與變量的交叉引用圖形、文本、表格信息用來幫助維護人員理解代碼,評估一個系統(tǒng)是否需要結(jié)構重組。建立文檔是非常耗費時間的,僅對系統(tǒng)中當前正在改變的那些部分建立有用的相關文檔。重構(restructuring)是在不改變軟件基本功能和性能的前提下,對軟件內(nèi)部的一種調(diào)整。25(2)結(jié)構重組
這里主要指軟件重構,注重修改源代碼和(或)數(shù)據(jù),使適應未來的變化,通常不修改軟件整體的體系結(jié)構。包括兩方面:
·代碼重構:生成與源程序相同功能、但具有更高質(zhì)量的設計。如非結(jié)構化的程序轉(zhuǎn)換為更現(xiàn)代語言的程序。如FunctionEncapsulationTool能夠?qū)⑴f的C程序重構為C++程序?!?shù)據(jù)重構:對程序處理的數(shù)據(jù)作改變以反映程序變更。先進行源代碼分析的逆向工程,評估所有包含數(shù)據(jù)定義、文件描述、I/O以及接口描述的程序語句,從中抽取數(shù)據(jù)項和對象,獲取關于數(shù)據(jù)流的信息,理解已實現(xiàn)的數(shù)據(jù)結(jié)構,然后對數(shù)據(jù)重新設計,包括物理修改:文件格式或數(shù)據(jù)庫類型的轉(zhuǎn)換。26
(3)逆向工程
是一個分析程序的過程,利用工具從現(xiàn)有的程序中抽取數(shù)據(jù)、體系結(jié)構和過程的設計信息。
逆向工程的關鍵在于它從
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 景點小紅帽運營管理制度
- 咖啡店學生運營制度
- 河北村集體財務制度
- 桌面衛(wèi)生制度
- 居家衛(wèi)生清潔制度
- 2026年計算機編程語言及技術應用問題集
- 商超衛(wèi)生管理制度
- 幼兒園醫(yī)務衛(wèi)生制度
- 合作伙伴管理細則
- 鄉(xiāng)醫(yī)衛(wèi)生協(xié)會制度
- 深圳大疆在線測評行測題庫
- 金屬廠生產(chǎn)制度
- 2026安徽淮北市特種設備監(jiān)督檢驗中心招聘專業(yè)技術人員4人參考題庫及答案1套
- 2025年航空行業(yè)空客智能制造報告
- 蒙牛乳業(yè)股份有限公司盈利能力分析
- 2025民航西藏空管中心社會招聘14人(第1期)筆試參考題庫附帶答案詳解(3卷合一版)
- (新教材)2026年人教版八年級下冊數(shù)學 21.2.1 平行四邊形及其性質(zhì) 課件
- 設備保養(yǎng)維護規(guī)程
- 2025年東營中考物理真題及答案
- DL-T+5860-2023+電化學儲能電站可行性研究報告內(nèi)容深度規(guī)定
- GB/T 46425-2025煤矸石山生態(tài)修復技術規(guī)范
評論
0/150
提交評論