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

下載本文檔

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

文檔簡(jiǎn)介

軟件工程授課教師:

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

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論