電子科技大學軟件工程軟件維護(改)_第1頁
電子科技大學軟件工程軟件維護(改)_第2頁
電子科技大學軟件工程軟件維護(改)_第3頁
電子科技大學軟件工程軟件維護(改)_第4頁
電子科技大學軟件工程軟件維護(改)_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件工程授課教師:

藍天聯(lián)系電話子郵箱:lantian1029@第七章軟件維護軟件維護概述1軟件維護技術5軟件維護過程模型3應注意的問題2小結(jié)6本章學習目標123掌握:軟件維護的基本類型;軟件的可維護性的決定因素;IEEE軟件維護的過程模型。了解:軟件維護的困難性所在;軟件維護在管理上的要點;軟件維護的主要程序理解技術;軟件再工程的過程模型。理解:軟件維護的基本概念;軟件維護在技術上的要點;維護費用的估算;軟件逆向工程的概念及主要內(nèi)容。軟件維護概述軟件維護的基本概念軟件維護的基本類型維護的困難性軟件維護的定義IEEE/EIA12207[ISO/IEC2008]中對軟件維護的定義是:軟件維護是指由于軟件產(chǎn)品出現(xiàn)問題或需要改進而對代碼及相關文檔的修改,其目的是對現(xiàn)有軟件產(chǎn)品進行修改的同時保持其完整性。軟件維護的必要性軟件維護能夠改正錯誤。軟件維護能夠改善設計。軟件維護能夠?qū)崿F(xiàn)軟件的改進軟件維護能夠與其他系統(tǒng)進行交互。軟件維護能夠為使用不同的硬件、軟件、系統(tǒng)的新性能以及通訊設備等而對軟件進行改進。軟件維護能夠完成遺留程序的移植。軟件退出使用。軟件維護的成本軟件維護階段一般要消耗軟件生命周期中經(jīng)費開支的大部分。70年代用于維護已有軟件的費用只占軟件總預算的35%~40%,80年代上升為40%~60%,90年代已經(jīng)占70%~80%。軟件維護的基本類型維護的類型有四種:

糾錯性維護適應性維護完善性維護預防性維護國外的統(tǒng)計數(shù)字表明,完善性維護占全部維護活動的50%~66%,糾錯性維護占17%~21%,適應性維護占18%~25%,其他維護活動只占4%左右糾錯性維護在軟件交付使用后,因開發(fā)時測試的不徹底、不完全,必然會有部分隱藏的錯誤遺留到運行階段。這些隱藏下來的錯誤在某些特定的使用環(huán)境下就會暴露出來。為了識別和糾正軟件錯誤、改正軟件性能上的缺陷、排除實施中的誤用,應當進行的診斷和改正錯誤的過程就叫做糾錯性維護。適應性維護在使用過程中,外部環(huán)境(新的硬、軟件配置)數(shù)據(jù)環(huán)境(數(shù)據(jù)庫、數(shù)據(jù)格式、數(shù)據(jù)輸入/輸出方式、數(shù)據(jù)存儲介質(zhì))可能發(fā)生變化。為使軟件適應這種變化,而去修改軟件的過程就叫做適應性維護。

完善性維護在軟件的使用過程中,用戶往往會對軟件提出新的功能與性能要求。為了滿足這些要求,需要修改或再開發(fā)軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性。這種情況下進行的維護活動叫做完善性維護。實踐表明,在幾種維護活動中,完善性維護所占的比重最大。即大部分維護工作是改變和加強軟件,而不是糾錯。完善性維護不一定是救火式的緊急維修,而可以是有計劃、有預謀的一種再開發(fā)活動。事實證明,來自用戶要求擴充、加強軟件功能、性能的維護活動約占整個維護工作的50%。預防性維護預防性維護是為了提高軟件的可維護性、可靠性等,為以后進一步改進軟件打下良好基礎。預防性維護定義為:采用先進的軟件工程方法對需要維護的軟件或軟件中的某一部分(重新)進行設計、編制和測試。維護的困難性1、配置管理工作不到位2、人員變動造成的影響3、許多軟件的可讀性差4、任務緊、時間急的情況下處理維護請求軟件維護中應注意的問題(一)技術方面程序的理解測試影響分析可維護性影響分析的目標決定改變的范圍。這對合理計劃和完成工作有重要意義對完成工作所需的資源進行精確的估計。分析改變的費用/效益比由于對軟件進行變更往往是牽一發(fā)而動全身的,因此如果給出了一個變更,必須考慮到與之相關的其他復雜情況決定軟件可維護性的主要因素(1)可理解性(2)可測試性(3)可修改性(4)可移植性(5)可重用性影響軟件可維護性的

維護環(huán)境的因素(1)軟件維護的文檔(2)軟件的運行環(huán)境(3)軟件的維護組織(4)軟件維護質(zhì)量軟件維護中應注意的問題(二)管理方面契合組織的目標人力資源過程如何組織維護活動外包軟件維護中應注意的問題(三)維護費用估算參數(shù)模型

M=P+K×exp(c‐d)M是維護用的總工作量,P是生產(chǎn)性工作量,K是經(jīng)驗常數(shù),c是復雜程度,d是維護人員對軟件的熟悉程度基于經(jīng)驗專家判斷、類推、工作分解結(jié)構(gòu)軟件維護過程模型IEEE維護模型圖分類與鑒別階段分析階段設計階段實現(xiàn)階段系統(tǒng)測試階段驗收測試階段交付階段軟件維護技術程序的理解軟件再工程軟件逆向工程程序的理解清晰簡明的文檔代碼瀏覽工具(SourceInsight)程序理解的任務:以軟件維護、升級和再工程為目的,在不同的抽象級別上建立基本軟件的概念模型,包括從代碼本身的模型到基本應用領域的模型,即建立從問題/應用域到程序設計/實現(xiàn)域的映射集程序理解的具體任務通過檢查單個的程序設計結(jié)構(gòu),程序被表示成抽象語法樹、符號表或普通源文本盡量做到程序隱含信息的顯性表示及程序內(nèi)部關系的可視化從源代碼中提取信息,并存放在通用的數(shù)據(jù)庫中,然后通過查詢語言對數(shù)據(jù)庫進行查詢檢查程序構(gòu)造過程中的結(jié)構(gòu)關系,明確表示程序組成部分之間的依賴關系。識別程序的高層概念,如標準算法、數(shù)據(jù)結(jié)構(gòu)、語法及語義匹配等。軟件再工程定義軟件再工程(Re-engineering)指對現(xiàn)有軟件進行仔細審查和改造,對其進行重新構(gòu)造,使之成為一個新的形式,同時包括隨之產(chǎn)生的對新形式的實現(xiàn)。軟件再工程模型數(shù)據(jù)重構(gòu)正向工程庫存目錄分析代碼重構(gòu)逆向工程文檔重構(gòu)軟件再工程——庫存目錄分析對軟件組織用語的每個應用系統(tǒng)都進行預防性維護是不現(xiàn)實的,也是不必要的。一般說來,下述3類程序有可能成為預防性的對象:該程序?qū)⒃诮窈髷?shù)年內(nèi)繼續(xù)維護的對象當前正在成功地使用著該程序可能在最近的將來要對該程序做較大程度的修改或擴充應該仔細的、分析庫存目錄,按照業(yè)務重要程度、壽命、當前可維護性、預期的修改次數(shù)等標準,把庫中的應用小排序,從中選出再工程的侯選者。然后合理地分配再工程所需要的資源。軟件再工程——文檔重構(gòu)老程序固有的特點缺乏文檔,根據(jù)具體情況可采用下述3種方法之一來處理這個問題:1)如果一個程序是相對穩(wěn)定的,正在走向生命的終點,而且可能不會再修改它,則不必為它建立文檔。2)為了便于今后的維護,必須更新文檔,但是由于資源有限,應該采用“使用時建立文檔”的方法,也就是說,不是一下子把某應用系統(tǒng)的文檔全部都重建起來,而是只建立系統(tǒng)中當前正在修改的那些部分的完整文檔。3)如果某應用系統(tǒng)是用戶完成業(yè)務工作的關鍵,而且必須重構(gòu)全部文檔,則仍然應該盡量把文檔工作減少到必需的最小量。軟件再工程——逆向工程軟件的逆向工程是,分析程序以便在比源程序更高的抽象層次上創(chuàng)建出程序的某種描述的過程,也就是說,逆向工程是一個恢復設計結(jié)果的過程。軟件再工程——代碼重構(gòu)某些老程序的體系結(jié)構(gòu)比較合理,但是,一些模塊的編碼方式卻是難于理解、測試和維護的。在這種情況下,可以重構(gòu)這些模塊的代碼。通常,代碼重構(gòu)并不修改程序的體系結(jié)構(gòu),它只關注個體模塊的設計細節(jié)以及在模塊中定義的局部數(shù)據(jù)結(jié)構(gòu)。如果重構(gòu)擴展到模塊邊界之外并涉及軟件體系結(jié)構(gòu),則重構(gòu)變成了正向工程。軟件再工程——數(shù)據(jù)重構(gòu)對數(shù)據(jù)體系結(jié)構(gòu)差的程序很難進行適應性和完善性維護,因此,數(shù)據(jù)體系結(jié)構(gòu)比源代碼對程序的長期生存力有更大的影響。數(shù)據(jù)重構(gòu)是一種全范圍的再工程活動。由于數(shù)據(jù)結(jié)構(gòu)對程序體系結(jié)構(gòu)及程序中的算法有很大影響,對數(shù)據(jù)的修改必然會導致程序體系結(jié)構(gòu)或代碼層的改變。軟件再工程——正向工程正向工程也稱為革新或改造。正向工程過程應用現(xiàn)代軟件工程的概念、原理、技術和方法,重新開發(fā)現(xiàn)有的某些應用系統(tǒng)。在大多數(shù)情況下,經(jīng)過正向工程過程后得出的軟件,不僅重新實現(xiàn)了現(xiàn)有系統(tǒng)的功能,而且增加了新功能,提高了整體性能。軟件逆向工程軟件逆向工程(SoftwareReverseEngineering)是分析目標系統(tǒng),識別系統(tǒng)的構(gòu)件及其交互關系,并且通過高層抽象或其他形式來展現(xiàn)目標系統(tǒng)的過程。對逆向工程而言,抽象的層次、完備性、工具與分析人員協(xié)同工作的程度、過程的方向性等因素是需要考慮的。逆向工程過程逆向工程主要內(nèi)容一、數(shù)據(jù)的逆向工程二、處理的逆向工程三、用戶界面的逆向工程四、逆向工程的工具數(shù)據(jù)的逆向過程數(shù)據(jù)的逆向工程發(fā)生在不同的抽象層次內(nèi)部數(shù)據(jù)結(jié)構(gòu)的逆向工程數(shù)據(jù)庫結(jié)構(gòu)的逆向工程對新數(shù)據(jù)模型實施再工程構(gòu)造一個初始的對象模型確定候選鍵精化實驗性的類定義一般化關系找出關聯(lián)關系處理的逆向過程為了理解過程抽象,需要在不同的抽象級別(系統(tǒng)級、程序級、構(gòu)件級、模式級和語句級)分析代碼對大型系統(tǒng),通常用半自動方法完成逆向工程。使用自動化工具幫助軟件工程師理解現(xiàn)有代碼的語義,然后將該過程的結(jié)果傳遞給重構(gòu)和正向工程工具以完成再工程過程。用戶界面的逆向工程弄清幾個問題:界面必須處理的基本動作是什么?系統(tǒng)對這些動作的行為反應的簡要描述是什么?有哪些界面的等價概念是相關的?逆向過程的工具靜態(tài)模型逆向工具RationalRoseRigiJBPAS動態(tài)模型逆向工具SCEDISVisBorlandTogether本章小結(jié)軟件維護可以分為糾錯性維護、適應性維護、完善性維護、預防性維護。軟件維護實踐中經(jīng)常會遇到各種困難,需要在技術、管理方面進行考慮,并對維護費用進行估算。軟件維護按IEEE維護過程模型可以分為七個階段。程序的理解對軟件維護具有重要意義,程序理解的任務就是要揭示程序的功能與實現(xiàn)機制。軟件的再工程是對現(xiàn)有軟件進行仔細審查和改造,進行重新構(gòu)造,最終成為一個新的形式。六

溫馨提示

  • 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

提交評論