版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件工程012024/5/16第8章維護(hù)軟件產(chǎn)品被開發(fā)出來并交付用戶使用之后,就進(jìn)入了軟件的運(yùn)行維護(hù)階段。軟件生命周期的最后一個(gè)階段,其基本任務(wù)是保證軟件在一個(gè)相當(dāng)長(zhǎng)的時(shí)期能夠正常運(yùn)行。平均來說,維護(hù)成本高達(dá)開發(fā)成本的4倍左右。目前國(guó)外許多軟件開發(fā)組織把60%以上的人力用于維護(hù)已有的軟件。軟件工程的主要目的就是提高軟件的可維護(hù)性,減少軟件維護(hù)所需要的工作量,降低軟件系統(tǒng)總成本。22024/5/16第8章維護(hù)軟件維護(hù)的定義01軟件維護(hù)的特點(diǎn)02軟件維護(hù)過程03軟件的可維護(hù)性04預(yù)防性維護(hù)05軟件再工程過程06小結(jié)0732024/5/168.1軟件維護(hù)的定義1所謂軟件維護(hù),就是在軟件已經(jīng)交付使用之后,為了改正錯(cuò)誤或滿足新的需求而修改軟件的過程。2改正性維護(hù):在大型程序的使用期間,用戶必然會(huì)發(fā)現(xiàn)程序錯(cuò)誤,并且把他們遇到的問題報(bào)告給維護(hù)人員。把診斷和改正錯(cuò)誤的過程稱為改正性維護(hù)。3適應(yīng)性維護(hù):為了和變化了的環(huán)境適當(dāng)?shù)呐浜隙M(jìn)行的修改軟件的活動(dòng)。4完善性維護(hù):在使用軟件的過程中,用戶往往提出增加新功能或修改已有功能的建議,還可能提出一般性的改進(jìn)意見。5預(yù)防性維護(hù):為了改進(jìn)未來的可維護(hù)性或可靠性,或?yàn)榱私o未來的改進(jìn)奠定更好的基礎(chǔ)而修改軟件。42024/5/168.1軟件維護(hù)的定義因此,維護(hù)絕不僅限于糾正使用中發(fā)現(xiàn)的錯(cuò)誤。完善性維護(hù):50-66%改正性維護(hù):17-21%適應(yīng)性維護(hù):18-25%其他維護(hù):4%上述4類維護(hù)活動(dòng)都必須應(yīng)用于整個(gè)軟件配置,維護(hù)軟件文檔和維護(hù)軟件的可執(zhí)行代碼同樣重要。52024/5/168.2軟件維護(hù)的特點(diǎn)8.2.1結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)差別巨大非結(jié)構(gòu)化維護(hù)如果軟件配置的唯一成分是程序代碼,那么維護(hù)活動(dòng)將非常艱難。評(píng)價(jià)程序代碼對(duì)于軟件結(jié)果、全程數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口、性能和(或)設(shè)計(jì)約束對(duì)程序代碼所做改動(dòng)的后果也難于估量非結(jié)構(gòu)化維護(hù)需要付出很大的代價(jià),這種維護(hù)方式是沒有使用良好定義的方法學(xué)開發(fā)出來的軟件的必然結(jié)果62024/5/16結(jié)構(gòu)化維護(hù)如果有一個(gè)完整的軟件配置存在,那么維護(hù)工作從評(píng)價(jià)軟件設(shè)計(jì)文檔開始。確定軟件重要的結(jié)構(gòu)特點(diǎn)、性能特點(diǎn)以及接口特點(diǎn);估量要求的改動(dòng)將帶來的影響;然后首先修改設(shè)計(jì)并且對(duì)所做的修改進(jìn)行仔細(xì)復(fù)查;接下來修改程序源碼;進(jìn)行回歸測(cè)試;提交修改后的軟件8.2軟件維護(hù)的特點(diǎn)72024/5/168.2軟件維護(hù)的特點(diǎn)8.2.2維護(hù)的代價(jià)高昂維護(hù)費(fèi)用穩(wěn)步上升1970年,35%-40%1980年,40%-60%1990年,70%-80%可用資源的使用不能及時(shí)修改,引起用戶不滿引入潛伏錯(cuò)誤,降低軟件質(zhì)量開發(fā)人員作為維護(hù)人員,使得開發(fā)過程混亂生產(chǎn)率大幅度下降82024/5/168.2軟件維護(hù)的特點(diǎn)用于維護(hù)工作的勞動(dòng)生產(chǎn)性活動(dòng)(分析評(píng)價(jià),修改設(shè)計(jì),編寫程序代碼)非生產(chǎn)性活動(dòng)(理解程序代碼的功能,解釋數(shù)據(jù)結(jié)構(gòu)、接口特點(diǎn)和性能限度等)維護(hù)工作量模型:M維護(hù)用的總工作量,P生產(chǎn)性工作量,K經(jīng)驗(yàn)常數(shù),c是復(fù)雜程度,d是維護(hù)人員對(duì)軟件的熟悉程度。92024/5/168.2軟件維護(hù)的特點(diǎn)絕大多數(shù)軟件在設(shè)計(jì)時(shí)沒有考慮將來的修改。需要維護(hù)的軟件往往沒有合格的文檔維護(hù)的問題,大部分都可歸因于軟件定義和軟件開發(fā)的方法有缺點(diǎn)。軟件維護(hù)不是一項(xiàng)吸引人的工作。當(dāng)要求對(duì)軟件進(jìn)行維護(hù)時(shí),不能指望由開發(fā)人員給人們仔細(xì)說明軟件。8.2.3維護(hù)的問題很多理解別人寫的程序通常非常困難。102024/5/168.3軟件維護(hù)過程維護(hù)過程本質(zhì)上是修改和壓縮了的軟件定義和開發(fā)過程,而且事實(shí)上遠(yuǎn)在提出一項(xiàng)維護(hù)要求之前,與軟件維護(hù)有關(guān)的工作就已經(jīng)開始了。建立維護(hù)組織確定報(bào)告和評(píng)價(jià)的過程為每個(gè)維護(hù)要求規(guī)定一個(gè)標(biāo)準(zhǔn)化的事件序列建立一個(gè)使用于維護(hù)活動(dòng)的記錄保管過程規(guī)定復(fù)審標(biāo)準(zhǔn)112024/5/168.3軟件維護(hù)過程維護(hù)組織每個(gè)維護(hù)要求都通過維護(hù)管理員轉(zhuǎn)交給熟悉該產(chǎn)品的系統(tǒng)管理員去評(píng)論。維護(hù)活動(dòng)開始之前就明確維護(hù)責(zé)任是十分必要的,這樣做可以大大減少維護(hù)過程中可能出現(xiàn)的混亂。122.維護(hù)報(bào)告應(yīng)該用標(biāo)準(zhǔn)化的格式表達(dá)所有軟件的維護(hù)要求。給用戶提供空白的維護(hù)要求表。如果遇到了一個(gè)錯(cuò)誤,必須完整的描述導(dǎo)致出現(xiàn)錯(cuò)的環(huán)境輸入數(shù)據(jù)全部輸出其他有關(guān)信息2024/5/168.3軟件維護(hù)過程#202213對(duì)于適應(yīng)性或完善性的維護(hù)要求,應(yīng)該提一個(gè)簡(jiǎn)短的需求說明書軟件組織內(nèi)部應(yīng)該制定出一個(gè)軟件修改報(bào)告:滿足維護(hù)要求表中提出的要求所需要的工作量維護(hù)要求的性質(zhì)這項(xiàng)要求的優(yōu)先次序與修改有關(guān)的時(shí)候數(shù)據(jù)2024/5/168.3軟件維護(hù)過程#2022142024/5/168.3軟件維護(hù)過程維護(hù)的事件流15不管維護(hù)的類型如何,都需要進(jìn)行同樣的技術(shù)工作。這些工作包括修改軟件設(shè)計(jì)、復(fù)查、必要的代碼修改、單元和集成測(cè)試(包括回歸測(cè)試)、驗(yàn)收測(cè)試和復(fù)審。當(dāng)惡性軟件問題發(fā)生時(shí),必須立即解決,這就是所謂的“救火”維護(hù)要求。在完成軟件維護(hù)任務(wù)之后,進(jìn)行處境復(fù)查在當(dāng)前處境下設(shè)計(jì)、編碼和測(cè)試的哪些方面能用不通的方法進(jìn)行?哪些維護(hù)資源是應(yīng)該有而事實(shí)上沒有的?對(duì)于這項(xiàng)維護(hù)工作什么是主要(以及次要)的障礙?要求的維護(hù)類型中有預(yù)防性維護(hù)嗎?2024/5/168.3軟件維護(hù)過程#2022164.保存維護(hù)記錄5.評(píng)價(jià)維護(hù)活動(dòng)每次程序運(yùn)行平均失效的次數(shù)用于每一類維護(hù)活動(dòng)的總?cè)藭r(shí)數(shù)平均每個(gè)程序、每種語言、每種維護(hù)類型所做的程序變動(dòng)數(shù)維護(hù)過程中增加或刪除一個(gè)源語句平均花費(fèi)的人時(shí)數(shù)維護(hù)每種語言平均話費(fèi)的人時(shí)數(shù)一張維護(hù)要求表的平均周轉(zhuǎn)時(shí)間不同維護(hù)類型所占的百分比2024/5/168.3軟件維護(hù)過程#2022172024/5/168.4軟件的可維護(hù)性軟件的可維護(hù)性——維護(hù)人員理解、改正、改動(dòng)或改進(jìn)這個(gè)軟件的難易程度。軟件的可維護(hù)性是支配軟件工程方法學(xué)所有步驟的關(guān)鍵目標(biāo)。8.4.1決定軟件可維護(hù)性的因素理解待修改的對(duì)象調(diào)試以確定錯(cuò)誤的具體位置(改正性維護(hù))進(jìn)行必要的測(cè)試182024/5/168.4軟件的可維護(hù)性可理解性外來讀者理解軟件的結(jié)構(gòu)、功能、接口和內(nèi)部處理的難易程度。模塊化詳細(xì)的設(shè)計(jì)文檔結(jié)構(gòu)化設(shè)計(jì)程序內(nèi)部的文檔良好的高級(jí)程序設(shè)計(jì)語言192024/5/168.4軟件的可維護(hù)性可測(cè)試性良好的文檔對(duì)診斷和測(cè)試是至關(guān)重要的。軟件結(jié)構(gòu)可用的測(cè)試工具和調(diào)試工具以前設(shè)計(jì)的測(cè)試過程開發(fā)階段用過的測(cè)試方案模塊的環(huán)形復(fù)雜度越大,可執(zhí)行的路徑就越多,全面測(cè)試它的難度就越高202024/5/168.4軟件的可維護(hù)性可修改性耦合、內(nèi)聚、信息隱藏、局部化、控制域和作用域的關(guān)系等,都影響軟件的可修改性??梢浦残园殉绦驈囊环N計(jì)算環(huán)境(硬件配置和操作系統(tǒng))轉(zhuǎn)移到另一種計(jì)算環(huán)境的難易程度。把因環(huán)境變化而必須修改的程序局限在少數(shù)程序模塊中,從而降低修改的難度。212024/5/168.4軟件的可維護(hù)性可重用性同一個(gè)事物不做修改或稍加修改就在不同環(huán)境中多次重復(fù)使用。通常,可重用的軟件構(gòu)件在開發(fā)時(shí)都經(jīng)過很嚴(yán)格的測(cè)試,可靠性比較高。很容易修改可重用的軟件構(gòu)件使之再次應(yīng)用在新環(huán)境中。因此,軟件中使用的可重用構(gòu)件越多,適應(yīng)性和完善性維護(hù)也就越容易。222024/5/168.4軟件的可維護(hù)性8.4.2文檔文檔是影響軟件可靠性的決定因素。文檔比程序代碼更重要。文檔可分為用戶文檔和系統(tǒng)文檔兩類。用戶文檔主要描述系統(tǒng)功能和使用方法系統(tǒng)文檔描述系統(tǒng)設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試等各個(gè)方面的內(nèi)容。232024/5/168.4軟件的可維護(hù)性添加標(biāo)題軟件文檔應(yīng)該滿足下述要求。添加標(biāo)題必須描述如何使用這個(gè)系統(tǒng)添加標(biāo)題必須描述怎樣安裝和管理這個(gè)系統(tǒng)添加標(biāo)題必須描述系統(tǒng)需求和設(shè)計(jì)添加標(biāo)題必須描述系統(tǒng)的實(shí)現(xiàn)和測(cè)試添加標(biāo)題用戶文檔添加標(biāo)題能使用戶獲得對(duì)系統(tǒng)的準(zhǔn)確的初步印象添加標(biāo)題功能描述、安裝文檔、使用手冊(cè)、參考手冊(cè)、操作員指南242024/5/168.4軟件的可維護(hù)性系統(tǒng)文檔從問題定義、需求說明到驗(yàn)收測(cè)試計(jì)劃這樣一些列和系統(tǒng)實(shí)現(xiàn)有關(guān)的文檔。把讀者從對(duì)系統(tǒng)概貌的了解,引導(dǎo)到對(duì)系統(tǒng)每個(gè)方面各個(gè)特點(diǎn)的更形式化更具體的認(rèn)識(shí)。252024/5/168.4軟件的可維護(hù)性8.4.3可維護(hù)性復(fù)審在軟件工程過程的每個(gè)階段都應(yīng)該考慮并努力提高軟件的可維護(hù)性,在每個(gè)階段結(jié)束前的技術(shù)審查和管理復(fù)審中,應(yīng)該著重對(duì)可維護(hù)性進(jìn)行復(fù)審。需求分析階段的復(fù)審對(duì)將來要改進(jìn)的部分和可能會(huì)修改的部分加以注意并指明應(yīng)該討論軟件的可移植性問題考慮可能影響軟件維護(hù)的系統(tǒng)界面262024/5/168.4軟件的可維護(hù)性設(shè)計(jì)復(fù)審從容易修改、模塊化和功能獨(dú)立的目標(biāo)出發(fā),評(píng)價(jià)軟件的結(jié)構(gòu)和過程對(duì)將來可能修改的部分預(yù)作準(zhǔn)備代碼復(fù)審編碼風(fēng)格內(nèi)部說明文檔盡量使用可重用的軟件構(gòu)件272024/5/168.4軟件的可維護(hù)性01測(cè)試階段復(fù)審02配置復(fù)審03保證軟件配置的所有成分是完整的、一致的和可理解的04為了便于修改和管理已經(jīng)編目歸檔了05完成了每項(xiàng)維護(hù)工作之后,都應(yīng)該對(duì)軟件維護(hù)本身進(jìn)行仔細(xì)的復(fù)審06維護(hù)應(yīng)該針對(duì)整個(gè)軟件配置,不應(yīng)該只修改源程序代碼07對(duì)設(shè)計(jì)、數(shù)據(jù)、模塊過程的修改體現(xiàn)在技術(shù)文檔中08對(duì)可執(zhí)行部分的修改反映在用戶文檔中28幾乎所有歷史比較悠久的軟件開發(fā)組織,都有一些十幾年前開發(fā)出的“老”程序。目前,某些老程序仍然在為用戶服務(wù),但是,這些程序的體系結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)可能很差,文檔可能并不完整,做過的修改可能并沒有記錄。滿足用戶對(duì)上述老程序的維護(hù):反復(fù)多次地修改程序的嘗試通過仔細(xì)分析程序盡可能多地掌握程序的內(nèi)部工作細(xì)節(jié),以便有效修改它用軟件工程的方法重新設(shè)計(jì)、重新編碼和測(cè)試那些需要變更的軟件部分對(duì)程序全部重新設(shè)計(jì)、重新編碼和測(cè)試2024/5/168.5預(yù)防性維護(hù)#202229預(yù)防性維護(hù)由Miller提出來的,“把今天的方法學(xué)應(yīng)用到昨天的系統(tǒng)上,以支持明天的需求”。維護(hù)一行源代碼的代價(jià)可能是最初來發(fā)該行代碼代價(jià)的14~40倍重新設(shè)計(jì)軟件體系結(jié)構(gòu)時(shí)試用了現(xiàn)代設(shè)計(jì)概念,它將對(duì)維護(hù)可能有很大的幫助由于現(xiàn)有程序版本可作為軟件原型使用,開發(fā)生產(chǎn)可大大高于平均水平用戶具有較多使用該軟件的經(jīng)驗(yàn),因此,能夠很容易地搞清新的變更需求和變更的范圍利用逆向工程和再工程的工具,可以使一部分工作自動(dòng)化在完成預(yù)防性維護(hù)的過程中可以建立完整的軟件配置2024/5/168.5預(yù)防性維護(hù)#2022302024/5/168.6軟件再工程過程圖8.2軟件再工程過程模型312024/5/168.6軟件再工程過程庫存目錄分析每個(gè)軟件組織都應(yīng)該保存其擁有的所有應(yīng)用系統(tǒng)的庫存目錄。該目錄包含關(guān)于每個(gè)應(yīng)用系統(tǒng)的基本信息。下列3類程序有可能成為預(yù)防性維護(hù)的對(duì)象:預(yù)定將使用多年的程序當(dāng)前正在成功使用著的程序在最近的將來可能要做重大修改或增強(qiáng)的程序。應(yīng)該仔細(xì)分析庫存目錄,按照業(yè)務(wù)重要程度、壽命、當(dāng)前可維護(hù)性、預(yù)期的修改次數(shù)等標(biāo)準(zhǔn),把庫中的應(yīng)用系統(tǒng)排序,從中選出再工程的候選者,然后明智地分配再工程所需要的資源322024/5/168.6軟件再工程過程文檔重構(gòu)建立文檔非常耗費(fèi)時(shí)間,不可能為數(shù)百個(gè)程序都重新建立文檔。由于資源有限,應(yīng)采用“使用時(shí)建立文檔”的方法。如果某應(yīng)用系統(tǒng)是完成業(yè)務(wù)工作的關(guān)鍵,而且必須重構(gòu)全部分檔,則仍然應(yīng)該設(shè)法把文檔工作減少到必需的最小量。332024/5/168.6軟件再工程過程逆向工程軟件的逆向工程是分析程序以便在比源代碼更高的抽象層次上創(chuàng)建出程序的某種表示的過程。逆向工程是一個(gè)恢復(fù)設(shè)計(jì)結(jié)果的過程。從現(xiàn)存的程序代碼中抽取有關(guān)數(shù)據(jù)、體系結(jié)構(gòu)、處理過程的設(shè)計(jì)信息。342024/5/168.6軟件再工程過程代碼重構(gòu)首先用重構(gòu)工具分析源代碼,標(biāo)注出和結(jié)構(gòu)化程序設(shè)計(jì)概念相違背的部分。然后重構(gòu)有問題的代碼。最后,復(fù)審和測(cè)試生成的重構(gòu)代碼并更新代碼文檔。重構(gòu)關(guān)注個(gè)體模塊的設(shè)計(jì)細(xì)節(jié)以及在模塊中定義的局部數(shù)據(jù)結(jié)構(gòu)。如果重構(gòu)擴(kuò)展到邊界之外并涉及軟件體系結(jié)構(gòu),則重構(gòu)變成了正向工程。352024/5/168.6軟件再工程過程數(shù)據(jù)重構(gòu)數(shù)據(jù)重構(gòu)發(fā)生在向當(dāng)?shù)偷某橄髮哟紊?,它是一種全范圍的再工程活動(dòng)。數(shù)據(jù)結(jié)構(gòu)始于逆向工程活動(dòng),分解當(dāng)前使用的數(shù)據(jù)體系結(jié)構(gòu),必要時(shí)定義數(shù)據(jù)模型,標(biāo)識(shí)數(shù)據(jù)對(duì)象和屬性,并從軟件質(zhì)量的角度復(fù)審現(xiàn)存的數(shù)據(jù)結(jié)構(gòu)。當(dāng)數(shù)據(jù)結(jié)構(gòu)較差時(shí),應(yīng)該對(duì)數(shù)據(jù)進(jìn)行再工程。對(duì)數(shù)據(jù)的修改必然會(huì)導(dǎo)致體系結(jié)構(gòu)或代碼層的改變。362024/5/168.6軟件再工程過程正向工程正向工程也成為革新或改造這項(xiàng)活動(dòng)不僅從現(xiàn)有程序中恢復(fù)設(shè)計(jì)信息,而且使用該信息去改變或重構(gòu)現(xiàn)有系統(tǒng),以提高其整體質(zhì)量。正向工程過程應(yīng)用軟件工程的原理、概念、技術(shù)和方法重新開發(fā)某個(gè)現(xiàn)有的應(yīng)用系統(tǒng)。具有原系統(tǒng)的所有功能,并加入了
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 政治學(xué)概論名詞解釋
- 企業(yè)職工高效學(xué)習(xí)掌握個(gè)人效率的提升法
- 環(huán)保應(yīng)急預(yù)案(6篇)
- 教科版二年級(jí)上冊(cè)科學(xué)期末測(cè)試卷【奪分金卷】
- 中國(guó)宏觀經(jīng)濟(jì)形勢(shì)分析與展望
- 傳統(tǒng)文化與兒童禮儀教育的融合
- 企業(yè)客服團(tuán)隊(duì)能力建設(shè)與質(zhì)量管理探索
- 以太陽為動(dòng)力溫暖千萬戶-家用太陽能供暖系統(tǒng)的發(fā)展與前景
- 創(chuàng)新教學(xué)方法在安全教育培訓(xùn)中的應(yīng)用
- 企業(yè)員工培訓(xùn)課程中的學(xué)生評(píng)價(jià)與調(diào)整策略
- 《法理學(xué)》(第三版教材)形成性考核作業(yè)1234答案
- 植物的抗熱性
- 《人際關(guān)系與溝通技巧》(第3版)-教學(xué)大綱
- 2023年中醫(yī)養(yǎng)生之藥膳食療考試試題
- 某土石方施工工程主要施工機(jī)械設(shè)備表
- 硅PU(塑料面層)檢驗(yàn)批質(zhì)量驗(yàn)收記錄表
- 高空除銹刷漆施工方案模板
- 信訪面試資料
- 【課件】《“敬畏生命珍愛生命”》主題班會(huì)課件
- 住宅物業(yè)危險(xiǎn)源辨識(shí)評(píng)價(jià)表
- 《報(bào)告文學(xué)研究》(07562)自考考試復(fù)習(xí)題庫(含答案)
評(píng)論
0/150
提交評(píng)論