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

下載本文檔

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

文檔簡介

軟件工程授課教師:

藍(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ù)國外的統(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í)測試的不徹底、不完全,必然會(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ù)庫、數(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ì)、編制和測試。維護(hù)的困難性1、配置管理工作不到位2、人員變動(dòng)造成的影響3、許多軟件的可讀性差4、任務(wù)緊、時(shí)間急的情況下處理維護(hù)請(qǐng)求軟件維護(hù)中應(yīng)注意的問題(一)技術(shù)方面程序的理解測試影響分析可維護(hù)性影響分析的目標(biāo)決定改變的范圍。這對(duì)合理計(jì)劃和完成工作有重要意義對(duì)完成工作所需的資源進(jìn)行精確的估計(jì)。分析改變的費(fèi)用/效益比由于對(duì)軟件進(jìn)行變更往往是牽一發(fā)而動(dòng)全身的,因此如果給出了一個(gè)變更,必須考慮到與之相關(guān)的其他復(fù)雜情況決定軟件可維護(hù)性的主要因素(1)可理解性(2)可測試性(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)測試階段驗(yàn)收測試階段交付階段軟件維護(hù)技術(shù)程序的理解軟件再工程軟件逆向工程程序的理解清晰簡明的文檔代碼瀏覽工具(SourceInsight)程序理解的任務(wù):以軟件維護(hù)、升級(jí)和再工程為目的,在不同的抽象級(jí)別上建立基本軟件的概念模型,包括從代碼本身的模型到基本應(yīng)用領(lǐng)域的模型,即建立從問題/應(yīng)用域到程序設(shè)計(jì)/實(shí)現(xiàn)域的映射集程序理解的具體任務(wù)通過檢查單個(gè)的程序設(shè)計(jì)結(jié)構(gòu),程序被表示成抽象語法樹、符號(hào)表或普通源文本盡量做到程序隱含信息的顯性表示及程序內(nèi)部關(guān)系的可視化從源代碼中提取信息,并存放在通用的數(shù)據(jù)庫中,然后通過查詢語言對(duì)數(shù)據(jù)庫進(jìn)行查詢檢查程序構(gòu)造過程中的結(jié)構(gòu)關(guān)系,明確表示程序組成部分之間的依賴關(guān)系。識(shí)別程序的高層概念,如標(biāo)準(zhǔn)算法、數(shù)據(jù)結(jié)構(gòu)、語法及語義匹配等。軟件再工程定義軟件再工程(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)正向工程庫存目錄分析代碼重構(gòu)逆向工程文檔重構(gòu)軟件再工程——庫存目錄分析對(duì)軟件組織用語的每個(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ì)的、分析庫存目錄,按照業(yè)務(wù)重要程度、壽命、當(dāng)前可維護(hù)性、預(yù)期的修改次數(shù)等標(biāo)準(zhǔn),把庫中的應(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)比較合理,但是,一些模塊的編碼方式卻是難于理解、測試和維護(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ì)程序的長期生存力有更大的影響。數(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ù)庫結(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í)和語句級(jí))分析代碼對(duì)大型系統(tǒng),通常用半自動(dòng)方法完成逆向工程。使用自動(dòng)化工具幫助軟件工程師理解現(xiàn)有代碼的語義,然后將該過程的結(jié)果傳遞給重構(gòu)和正向工程工具以完成再工程過程。用戶界面的逆向工程弄清幾個(gè)問題:界面必須處理的基本動(dòng)作是什么?系統(tǒng)對(duì)這些動(dòng)作的行為反應(yīng)的簡要描述是什么?有哪些界面的等價(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)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論