第9章軟件進化_第1頁
第9章軟件進化_第2頁
第9章軟件進化_第3頁
第9章軟件進化_第4頁
第9章軟件進化_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1第第9章章 軟件進化軟件進化n軟件進化過程軟件進化過程n軟件維護軟件維護 軟件維護的相關(guān)概念軟件維護的相關(guān)概念 軟件再工程軟件再工程n遺留系統(tǒng)管理遺留系統(tǒng)管理2n軟件的開發(fā)不會因為系統(tǒng)的交付而停止,它貫穿系軟件的開發(fā)不會因為系統(tǒng)的交付而停止,它貫穿系統(tǒng)的整個生命周期。統(tǒng)的整個生命周期。 修改運行中發(fā)現(xiàn)的錯誤修改運行中發(fā)現(xiàn)的錯誤 適應新的運行平臺適應新的運行平臺 隨著業(yè)務(wù)流程的變化需要增加功能隨著業(yè)務(wù)流程的變化需要增加功能 提升性能或其他非功能特性提升性能或其他非功能特性 所有這些都意味著軟件需要不斷進化以滿足變所有這些都意味著軟件需要不斷進化以滿足變更的需求。更的需求。3開始開始版本版本1版

2、本版本2開發(fā)和進化銜接的螺旋模型開發(fā)和進化銜接的螺旋模型版本版本3描述描述運行運行實現(xiàn)實現(xiàn)有效性驗證有效性驗證n軟件工程是一個貫穿于系統(tǒng)生命周期的由需求、設(shè)計、軟件工程是一個貫穿于系統(tǒng)生命周期的由需求、設(shè)計、實現(xiàn)、測試、運行組成的螺旋過程。實現(xiàn)、測試、運行組成的螺旋過程。n螺旋過程經(jīng)常是不連續(xù)的,軟件開發(fā)團隊和進化的團螺旋過程經(jīng)常是不連續(xù)的,軟件開發(fā)團隊和進化的團隊往往不是一個團隊。隊往往不是一個團隊。49.1 進化過程進化過程變更影響分析變更影響分析版本規(guī)劃版本規(guī)劃變更實現(xiàn)變更實現(xiàn)系統(tǒng)發(fā)布系統(tǒng)發(fā)布軟件進化過程(變更請求驅(qū)動)軟件進化過程(變更請求驅(qū)動)變更請求變更請求需求分析需求分析需求更新

3、需求更新軟件開發(fā)軟件開發(fā)提議的變更提議的變更變更實現(xiàn)變更實現(xiàn)分析源代碼分析源代碼修改源代碼修改源代碼提交修改的系統(tǒng)提交修改的系統(tǒng)緊急變更請求緊急變更請求緊急修補過程(會造成代碼與文檔的不一致)緊急修補過程(會造成代碼與文檔的不一致)59.2 軟件維護軟件維護n軟件交付使用后變更軟件的過程稱為軟件維軟件交付使用后變更軟件的過程稱為軟件維護。護。n一般的軟件維護不包括重大的體系結(jié)構(gòu)的改一般的軟件維護不包括重大的體系結(jié)構(gòu)的改變,變更的實現(xiàn)方法一般是修改已有的系統(tǒng)變,變更的實現(xiàn)方法一般是修改已有的系統(tǒng)組件以及在必要的地方添加新組件到系統(tǒng)中。組件以及在必要的地方添加新組件到系統(tǒng)中。6n軟件維護的分類軟件

4、維護的分類 改正性維護:修改軟件缺陷。改正性維護:修改軟件缺陷。 適應性維護:適應變更的操作環(huán)境適應性維護:適應變更的操作環(huán)境 (硬件、操作系統(tǒng)平臺、(硬件、操作系統(tǒng)平臺、 其他支持軟件)。其他支持軟件)。 增強性維護:因系統(tǒng)需求改變(機構(gòu)增強性維護:因系統(tǒng)需求改變(機構(gòu) 因素或業(yè)務(wù)改變)添加或因素或業(yè)務(wù)改變)添加或 修改功能。修改功能。 7n維護的成本維護的成本 維護成本和開發(fā)成本的比例在不同的應用域中是維護成本和開發(fā)成本的比例在不同的應用域中是不同的。不同的。Guimaraes(1983)的研究表明,對于業(yè)務(wù)應用的研究表明,對于業(yè)務(wù)應用系統(tǒng),維護成本和系統(tǒng)開發(fā)成本大體相等。對于嵌入系統(tǒng),維

5、護成本和系統(tǒng)開發(fā)成本大體相等。對于嵌入式實時系統(tǒng),維護費用是開發(fā)成本的四倍以上。式實時系統(tǒng),維護費用是開發(fā)成本的四倍以上。 帶來高維護費用的因素:帶來高維護費用的因素: 團隊的不穩(wěn)定團隊的不穩(wěn)定 合同責任,維護合同獨立與開發(fā)合同合同責任,維護合同獨立與開發(fā)合同 維護人員技術(shù)水平維護人員技術(shù)水平 系統(tǒng)結(jié)構(gòu)隨著年齡衰退系統(tǒng)結(jié)構(gòu)隨著年齡衰退8 如何降低軟件維護的費用?如何降低軟件維護的費用? (1)從開發(fā)階段的一開始就按質(zhì)量標準構(gòu)建系統(tǒng),從開發(fā)階段的一開始就按質(zhì)量標準構(gòu)建系統(tǒng),給予給予“可維護性可維護性”屬性以足夠的重視,這樣可以使系統(tǒng)屬性以足夠的重視,這樣可以使系統(tǒng)的整個生命周期成本減少。下圖說明

6、了這個問題。系統(tǒng)的整個生命周期成本減少。下圖說明了這個問題。系統(tǒng)1在開發(fā)成本中多投入在開發(fā)成本中多投入$25000,用于提高系統(tǒng)的可維護性,用于提高系統(tǒng)的可維護性,結(jié)果在整個生命周期中節(jié)省了結(jié)果在整個生命周期中節(jié)省了$100 000的維護成本。的維護成本。 9 (2)采用演化式的系統(tǒng)開發(fā)模型(如增量、)采用演化式的系統(tǒng)開發(fā)模型(如增量、螺旋),建立能結(jié)合新需求而演化和變更的系統(tǒng)。螺旋),建立能結(jié)合新需求而演化和變更的系統(tǒng)。 (3)實施軟件再工程,改善系統(tǒng)結(jié)構(gòu),提高)實施軟件再工程,改善系統(tǒng)結(jié)構(gòu),提高可維護性??删S護性。10n軟件再工程軟件再工程是試圖增加遺留系統(tǒng)(當前運行的系統(tǒng))是試圖增加遺留

7、系統(tǒng)(當前運行的系統(tǒng))的總體質(zhì)量、提高可維護性的工程。的總體質(zhì)量、提高可維護性的工程。n軟件可維護性定義為:維護人員理解、改正、改動和軟件可維護性定義為:維護人員理解、改正、改動和改進這個軟件的難易程度。改進這個軟件的難易程度。n軟件再工程與新開發(fā)軟件之間的重要差別表現(xiàn)在開發(fā)軟件再工程與新開發(fā)軟件之間的重要差別表現(xiàn)在開發(fā)的起點上。再工程開始于已有的系統(tǒng),通過改善原始的起點上。再工程開始于已有的系統(tǒng),通過改善原始系統(tǒng)的結(jié)構(gòu)和產(chǎn)生新的系統(tǒng)文檔,使之更容易理解、系統(tǒng)的結(jié)構(gòu)和產(chǎn)生新的系統(tǒng)文檔,使之更容易理解、更易于維護。更易于維護。軟件再工程軟件再工程11n實施軟件再工程的優(yōu)越性是:實施軟件再工程的優(yōu)

8、越性是: 減少重新開發(fā)軟件的風險減少重新開發(fā)軟件的風險 降低開發(fā)軟件的成本降低開發(fā)軟件的成本 再工程的成本比重新開發(fā)要小的多。再工程的成本比重新開發(fā)要小的多。 Ulrich(1990)引用了一個商業(yè)系統(tǒng)的例子:重新實引用了一個商業(yè)系統(tǒng)的例子:重新實現(xiàn)預算現(xiàn)預算5000萬美元,經(jīng)過再工程,僅用了萬美元,經(jīng)過再工程,僅用了1200萬萬美元,美元,是重新開發(fā)費用的四分之一。是重新開發(fā)費用的四分之一。 因此當一個系統(tǒng)有很高的業(yè)務(wù)價值同時需要很高因此當一個系統(tǒng)有很高的業(yè)務(wù)價值同時需要很高的維護費用時,對該系統(tǒng)實施再工程是個經(jīng)濟的辦法。的維護費用時,對該系統(tǒng)實施再工程是個經(jīng)濟的辦法。12源代碼轉(zhuǎn)換源代碼轉(zhuǎn)

9、換逆向工程逆向工程程序結(jié)程序結(jié)構(gòu)改善構(gòu)改善程序模塊化程序模塊化數(shù)據(jù)再工程數(shù)據(jù)再工程最初的程序最初的程序程序文檔程序文檔模塊化程序模塊化程序最初的數(shù)據(jù)最初的數(shù)據(jù)結(jié)構(gòu)化程序結(jié)構(gòu)化程序經(jīng)過再工經(jīng)過再工程的數(shù)據(jù)程的數(shù)據(jù)軟件再工程過程(教材軟件再工程過程(教材P158)不易維護的程序不易維護的程序已改進和重新構(gòu)造的程序已改進和重新構(gòu)造的程序13n源代碼轉(zhuǎn)換:使用工具將語言轉(zhuǎn)換成相同語言新版本源代碼轉(zhuǎn)換:使用工具將語言轉(zhuǎn)換成相同語言新版本或另一種語言?;蛄硪环N語言。n逆向工程:從源代碼中抽取出系統(tǒng)的說明和設(shè)計等信逆向工程:從源代碼中抽取出系統(tǒng)的說明和設(shè)計等信息,把這種信息求精與簡化并存儲起來以被后用。息,

10、把這種信息求精與簡化并存儲起來以被后用。n程序結(jié)構(gòu)改善:對控制結(jié)構(gòu)進行分析和修改,提高可程序結(jié)構(gòu)改善:對控制結(jié)構(gòu)進行分析和修改,提高可讀性。讀性。n程序模塊化:可能涉及到體系結(jié)構(gòu)的重構(gòu)。程序模塊化:可能涉及到體系結(jié)構(gòu)的重構(gòu)。n數(shù)據(jù)再工程:對數(shù)據(jù)及其結(jié)構(gòu)進行分析和重組,或者數(shù)據(jù)再工程:對數(shù)據(jù)及其結(jié)構(gòu)進行分析和重組,或者將分散的單個文件中的數(shù)據(jù)轉(zhuǎn)移到數(shù)據(jù)庫管理系統(tǒng)上,將分散的單個文件中的數(shù)據(jù)轉(zhuǎn)移到數(shù)據(jù)庫管理系統(tǒng)上,還可能改變數(shù)據(jù)庫模式。還可能改變數(shù)據(jù)庫模式。14n軟件再工程的成本依賴于所做的工作的程度。見下圖:軟件再工程的成本依賴于所做的工作的程度。見下圖:自動源代碼轉(zhuǎn)換自動源代碼轉(zhuǎn)換 自動結(jié)構(gòu)重

11、構(gòu)自動結(jié)構(gòu)重構(gòu)+手工改變手工改變 結(jié)構(gòu)重構(gòu)結(jié)構(gòu)重構(gòu)+體系結(jié)構(gòu)改變體系結(jié)構(gòu)改變增長的成本增長的成本自動的程序結(jié)構(gòu)重構(gòu)自動的程序結(jié)構(gòu)重構(gòu) 程序和數(shù)據(jù)結(jié)構(gòu)重構(gòu)程序和數(shù)據(jù)結(jié)構(gòu)重構(gòu)15軟件再工程的問題:軟件再工程的問題:n系統(tǒng)經(jīng)過再工程能改善的范圍受到一定的限制。系統(tǒng)經(jīng)過再工程能改善的范圍受到一定的限制。n需要自動工具的支持。需要自動工具的支持。n對于實時系統(tǒng),由于頻繁的性能優(yōu)化,實現(xiàn)與設(shè)計對于實時系統(tǒng),由于頻繁的性能優(yōu)化,實現(xiàn)與設(shè)計之間的對應關(guān)系比較松散,逆向工程不易抽取設(shè)計之間的對應關(guān)系比較松散,逆向工程不易抽取設(shè)計信息。信息。 169.3 遺留系統(tǒng)的管理遺留系統(tǒng)的管理n遺留系統(tǒng)是仍然提供必要的業(yè)務(wù)

12、服務(wù)的舊系統(tǒng)。更遺留系統(tǒng)是仍然提供必要的業(yè)務(wù)服務(wù)的舊系統(tǒng)。更換一個遺留系統(tǒng)是一個有風險的策略:換一個遺留系統(tǒng)是一個有風險的策略: 遺留系統(tǒng)幾乎沒有完整的描述。遺留系統(tǒng)幾乎沒有完整的描述。 業(yè)務(wù)過程和遺留系統(tǒng)的操作方式緊密的交織在業(yè)務(wù)過程和遺留系統(tǒng)的操作方式緊密的交織在一起。一起。 重要的業(yè)務(wù)規(guī)則(業(yè)務(wù)功能的約束)隱藏在軟重要的業(yè)務(wù)規(guī)則(業(yè)務(wù)功能的約束)隱藏在軟件內(nèi)部。件內(nèi)部。 系統(tǒng)的結(jié)構(gòu)衰退,理解系統(tǒng)的難度加大系統(tǒng)的結(jié)構(gòu)衰退,理解系統(tǒng)的難度加大。17n大多數(shù)機構(gòu)擁有很多遺留系統(tǒng),對這些系統(tǒng)維護和大多數(shù)機構(gòu)擁有很多遺留系統(tǒng),對這些系統(tǒng)維護和更新資金有限,應該對這些系統(tǒng)評估以做出選擇:更新資金有限,應該對這些系統(tǒng)評估以做出選擇: 1. 徹底拋棄,業(yè)務(wù)過程改變,不再依賴。徹底拋棄,業(yè)務(wù)過程改變,不再依賴。 2. 繼續(xù)維護,系統(tǒng)運行平穩(wěn),仍有存在的必要。繼續(xù)維護,系統(tǒng)運行平穩(wěn),仍有存在的必要。 3. 對系統(tǒng)再工程,不斷地變更使系統(tǒng)質(zhì)量下降,對系統(tǒng)再工程,不斷地變更使系統(tǒng)質(zhì)量下降,但仍需要變更。但仍需要變更。 4.由新的軟件替代整個或部分由新的軟件替代整個或部分。18 遺留系統(tǒng)的評估與選擇:遺留系統(tǒng)的評估與選擇: 低質(zhì)量、低業(yè)務(wù)價值:低質(zhì)量、低業(yè)務(wù)價值: 拋棄拋棄 低質(zhì)量、高業(yè)務(wù)價值:低質(zhì)量、高業(yè)務(wù)價值: 轉(zhuǎn)換或替代轉(zhuǎn)換或替代 高質(zhì)量、低業(yè)務(wù)價值:高質(zhì)量、低業(yè)務(wù)價值

溫馨提示

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

評論

0/150

提交評論