軟件工程導(dǎo)論(8)軟件維護(hù)_第1頁(yè)
軟件工程導(dǎo)論(8)軟件維護(hù)_第2頁(yè)
軟件工程導(dǎo)論(8)軟件維護(hù)_第3頁(yè)
軟件工程導(dǎo)論(8)軟件維護(hù)_第4頁(yè)
軟件工程導(dǎo)論(8)軟件維護(hù)_第5頁(yè)
已閱讀5頁(yè),還剩70頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟件工程導(dǎo)論(8)

——軟件維護(hù)南京理工大學(xué)汪惠芬2004年10月30日第八章軟件維護(hù)8.1軟件維護(hù)的概念8.2軟件維護(hù)活動(dòng)8.3軟件修改的步驟8.4軟件可維護(hù)性8.5提高可維護(hù)性的方法8.6逆向工程和再工程8.7本章小結(jié)基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/20232.8.1軟件維護(hù)的概念8.1.1軟件維護(hù)的定義8.1.2影響維護(hù)工作量的因素8.1.3軟件維護(hù)的策略基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/20233.8.1.1軟件維護(hù)的定義改正性維護(hù)(correctivemaintenance)在軟件交付后,由于開(kāi)發(fā)時(shí)測(cè)試的不徹底、不完全,必然會(huì)有一部分隱藏的錯(cuò)誤被帶到運(yùn)行階段。這些隱藏下來(lái)的錯(cuò)誤在某些特定的使用環(huán)境下會(huì)暴露出來(lái)。為了識(shí)別和糾正錯(cuò)誤、改正軟件性能上的缺陷、排除實(shí)施中的誤使用,應(yīng)進(jìn)行的診斷和改正錯(cuò)誤的過(guò)程,是改正性維護(hù)?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/20234.8.1.1軟件維護(hù)的定義適應(yīng)性維護(hù)(adaptivemaintenance)隨著計(jì)算機(jī)的飛速發(fā)展,外部環(huán)境(新的硬件、軟件配置)或數(shù)據(jù)環(huán)境(數(shù)據(jù)庫(kù)、數(shù)據(jù)格式、數(shù)據(jù)輸入/輸出方式、數(shù)據(jù)存儲(chǔ)介質(zhì))可能發(fā)生變化,為了使軟件適應(yīng)這種變化,而修改軟件的過(guò)程叫作適應(yīng)性維護(hù)。基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/20235.8.1.1軟件維護(hù)的定義完善性維護(hù)(perfectivemaintenance)在軟件使用過(guò)程中,用戶(hù)往往會(huì)對(duì)軟件提出新的功能與性能要求。為了滿(mǎn)足這些要求,需要修改或再開(kāi)發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性。在這種情況下進(jìn)行的維護(hù)活動(dòng)叫作完善性維護(hù)?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/20236.8.1.1軟件維護(hù)的定義預(yù)防性維護(hù)(preventivemaintenance)為了提高軟件的可維護(hù)性、可靠性等,為以后進(jìn)一步改進(jìn)軟件打下良好基礎(chǔ),需要進(jìn)行預(yù)防性維護(hù)。預(yù)防性維護(hù)定義為:“把今天的方法學(xué)用于昨天的系統(tǒng)以滿(mǎn)足明天的需要”。也就是說(shuō),采用先進(jìn)的軟件工程方法對(duì)需要維護(hù)的軟件或軟件中的某一部分(重新)進(jìn)行設(shè)計(jì)、編制和測(cè)試?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/20237.8.1.1軟件維護(hù)的定義維護(hù)的工作量分配在整個(gè)軟件維護(hù)階段花費(fèi)的全部工作量中,預(yù)防性維護(hù)只占很小的比例,而完善性維護(hù)占了幾乎一半的工作量?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施適應(yīng)性維護(hù)

25%改正

性維護(hù)

20%完善性維護(hù)

50%其它維護(hù)

5%4/20/20238.8.1.1軟件維護(hù)的定義維護(hù)的工作量分配軟件維護(hù)活動(dòng)花費(fèi)的工作占整個(gè)生存期工作量的70%以上?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施維護(hù)

70.8%4/20/20239.8.1.2影響維護(hù)工作量的因素在軟件的維護(hù)過(guò)程中,需要花費(fèi)大量的工作量,從而直接影響了軟件維護(hù)的成本。因此,應(yīng)當(dāng)考慮有哪些因素影響軟件維護(hù)的工作量,相應(yīng)應(yīng)該采取什么維護(hù)策略,才能有效地維護(hù)軟件并控制維護(hù)的成本。基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202310.8.1.2影響維護(hù)工作量的因素在軟件維護(hù)中,影響維護(hù)工作量的程序特性有以下6種:系統(tǒng)大小程序設(shè)計(jì)語(yǔ)言系統(tǒng)年齡數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用先進(jìn)的軟件開(kāi)發(fā)技術(shù)其它基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202311.8.1.1軟件維護(hù)的策略1)改正性維護(hù)策略利用應(yīng)用軟件包,可開(kāi)發(fā)出比由用戶(hù)完全自己開(kāi)發(fā)的系統(tǒng)可靠性更高的軟件;使用結(jié)構(gòu)化技術(shù),開(kāi)發(fā)的軟件易于理解和測(cè)試;防錯(cuò)性程序設(shè)計(jì);通過(guò)周期性維護(hù)審查,在形成維護(hù)問(wèn)題之前就可確定質(zhì)量缺陷?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202312.8.1.1軟件維護(hù)的策略2)適應(yīng)性維護(hù)策略在配置管理時(shí),把硬件、操作系統(tǒng)和其它相關(guān)環(huán)境因素的可能變化考慮在內(nèi),可以減少某些適應(yīng)性維護(hù)的工作量。把與硬件、操作系統(tǒng),以及其它外圍設(shè)備有關(guān)的程序歸到特定的程序模塊中??砂岩颦h(huán)境變化而必須修改的程序局部于某些程序模塊之中。使用內(nèi)部程序列表、外部文件,以及處理的例行處理包,可為維護(hù)時(shí)修改程序提供方便。使用面向?qū)ο蠹夹g(shù),增強(qiáng)軟件系統(tǒng)的穩(wěn)定性,易于修改和移植。基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202313.8.1.1軟件維護(hù)的策略3)完善性維護(hù)策略利用前兩類(lèi)維護(hù)中列舉的方法。利用數(shù)據(jù)庫(kù)管理系統(tǒng)、程序生成器、應(yīng)用軟件包,可減少系統(tǒng)或程序員的維護(hù)工作量。建立軟件系統(tǒng)的原型,把它在實(shí)際系統(tǒng)開(kāi)發(fā)之前提供給用戶(hù)。用戶(hù)通過(guò)研究原型,進(jìn)一步完善它們的功能要求,可以減少以后完善性維護(hù)的需要?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202314.8.2軟件維護(hù)活動(dòng)8.2.1軟件維護(hù)申請(qǐng)報(bào)告8.2.2軟件維護(hù)工作流程8.2.3維護(hù)檔案記錄8.2.4維護(hù)評(píng)價(jià)基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202315.8.2.1軟件維護(hù)申請(qǐng)報(bào)告所有軟件維護(hù)申請(qǐng)應(yīng)按規(guī)定的方式提出。軟件維護(hù)組織通常提供維護(hù)申請(qǐng)報(bào)告MRP(maintenancerequestform),或稱(chēng)軟件問(wèn)題報(bào)告,由申請(qǐng)維護(hù)的用戶(hù)填寫(xiě)。如果遇到一個(gè)錯(cuò)誤,用戶(hù)必須完整地說(shuō)明產(chǎn)生錯(cuò)誤的情況,包括輸入數(shù)據(jù)、錯(cuò)誤清單以及其他有關(guān)材料。如果申請(qǐng)的是適應(yīng)性維護(hù)或完善性維護(hù),用戶(hù)必須提出一份修改說(shuō)明書(shū),列出所有希望的修改。維護(hù)申請(qǐng)報(bào)告將由維護(hù)管理員和系統(tǒng)監(jiān)督員來(lái)研究處理?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202316.8.2.1軟件維護(hù)申請(qǐng)報(bào)告維護(hù)申請(qǐng)報(bào)告是由軟件組織外部提交的文檔,它是計(jì)劃維護(hù)工作的基礎(chǔ)。軟件組織內(nèi)部應(yīng)相應(yīng)地作出軟件修改報(bào)告SCR(softwarechangereport),并指明:所需修改變動(dòng)的性質(zhì);申請(qǐng)修改的優(yōu)先級(jí);為滿(mǎn)足某個(gè)維護(hù)申請(qǐng)報(bào)告,所需的工作量;預(yù)計(jì)修改后的狀況?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202317.8.2.2軟件維護(hù)工作流程軟件維護(hù)工作流程確認(rèn)維護(hù)要求;確認(rèn)維護(hù)類(lèi)型;按不同類(lèi)型進(jìn)行維護(hù)處理,包括修改軟件需求說(shuō)明、修改軟件設(shè)計(jì)、設(shè)計(jì)評(píng)審、對(duì)源程序作必要的修改、單元測(cè)試、集成測(cè)試(回歸測(cè)試)、確認(rèn)測(cè)試、軟件配置評(píng)審等;維護(hù)任務(wù)完成后進(jìn)行情況評(píng)審?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202318.8.2.2軟件維護(hù)工作流程基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施用戶(hù)維護(hù)人員確定更改要求評(píng)價(jià)錯(cuò)誤嚴(yán)重程度判明維護(hù)類(lèi)型評(píng)價(jià)優(yōu)先次序維護(hù)實(shí)施開(kāi)始問(wèn)題分析復(fù)審開(kāi)始問(wèn)題分析安排改正性維護(hù)把安排好的開(kāi)發(fā)工作量列入計(jì)劃把錯(cuò)誤改正列入計(jì)劃維護(hù)要求改

正性不嚴(yán)重嚴(yán)重(救火)人員安排完善性適應(yīng)性低高人

排修改

過(guò)的

軟件通過(guò)并交付

使用的軟件理解程序

分析原設(shè)計(jì)安排計(jì)劃

修改程序測(cè)試程序++++4/20/202319.8.2.2軟件維護(hù)工作流程情況評(píng)審內(nèi)容:在目前情況下,設(shè)計(jì)、編碼、測(cè)試中的哪一方面可以改進(jìn)?哪些維護(hù)資源應(yīng)該有,但沒(méi)有?工作中主要或次要的障礙是什么?從維護(hù)申請(qǐng)的類(lèi)型來(lái)看是否應(yīng)當(dāng)有預(yù)防性維護(hù)?基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202320.8.2.3維護(hù)檔案記錄為了估計(jì)軟件維護(hù)的有效程度,確定軟件產(chǎn)品的質(zhì)量,同時(shí)確定維護(hù)的實(shí)際開(kāi)銷(xiāo),需要在維護(hù)過(guò)程中做好維護(hù)檔案記錄?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202321.8.2.3維護(hù)檔案記錄維護(hù)檔案記錄內(nèi)容:基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施程序名稱(chēng)源程序語(yǔ)句條數(shù)機(jī)器代碼指令調(diào)試所用的程序設(shè)計(jì)語(yǔ)言程序安裝的日期程序安裝后的運(yùn)行次數(shù)與程序安裝后運(yùn)行次數(shù)有關(guān)的處理故障次數(shù)程序改變的層次及名稱(chēng)修改程序所增加的源程序語(yǔ)句條數(shù)修改程序所減少的源程序語(yǔ)句條數(shù)每次修改所付出的“人時(shí)”數(shù)修改程序的日期軟件維護(hù)人員的姓名維護(hù)申請(qǐng)報(bào)告的名稱(chēng)維護(hù)類(lèi)型維護(hù)開(kāi)始時(shí)間和維護(hù)結(jié)束時(shí)間花費(fèi)在維護(hù)上的累積“人時(shí)”數(shù)維護(hù)工作的凈收益4/20/202322.8.2.4維護(hù)評(píng)價(jià)維護(hù)“性能”參考度量值:每次程序運(yùn)行時(shí)的平均出錯(cuò)次數(shù);花費(fèi)在每類(lèi)維護(hù)上的總“人時(shí)”數(shù);每個(gè)程序、每種語(yǔ)言、每種維護(hù)類(lèi)型的程序平均修改次數(shù);因維護(hù)增加或減少每個(gè)源程序語(yǔ)句所花費(fèi)的平均“人時(shí)”數(shù);用于每種語(yǔ)言的平均“人時(shí)”數(shù);維護(hù)申請(qǐng)報(bào)告的平均處理時(shí)間;各類(lèi)維護(hù)申請(qǐng)的百分比?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202323.8.3軟件修改的步驟8.3.1分析和理解程序8.3.2修改程序8.3.3重新驗(yàn)證程序基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202324.8.3.1分析和理解程序經(jīng)過(guò)分析,全面、準(zhǔn)確、迅速地理解程序是決定維護(hù)成敗和質(zhì)量好壞的關(guān)鍵。在這方面,軟件的可理解性和文檔的質(zhì)量為常重要?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202325.8.3.1分析和理解程序必須做的工作:(1)研究程序的使用環(huán)境及有關(guān)資料,盡可能得到更多的背景資料;(2)理解程序的功能和目標(biāo);(3)掌握程序的結(jié)構(gòu)信息,即從程序中細(xì)分出若干結(jié)構(gòu)成分。如程序系統(tǒng)結(jié)構(gòu)、控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)和輸入/輸出結(jié)構(gòu)等;基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202326.8.3.1分析和理解程序必須做的工作:(4)了解數(shù)據(jù)流信息,即所涉及到的數(shù)據(jù)來(lái)源何處,在哪里被使用;(5)了解控制流信息,即執(zhí)行每條路徑的結(jié)果;(6)如果設(shè)計(jì)存在,則可利用它們來(lái)幫助畫(huà)出結(jié)構(gòu)圖和高層流程圖;(7)理解程序的操作(使用)要求。基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202327.8.3.1分析和理解程序分析方法:1)分析程序結(jié)構(gòu)圖搜集并閱讀所有存儲(chǔ)該程序的文件,即下它們所包含的過(guò)程名,建立一個(gè)包括這些過(guò)程名和文件名的文件;分析各個(gè)過(guò)程的源代碼;分析各個(gè)過(guò)程的接口,估計(jì)更改的復(fù)雜性?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202328.8.3.1分析和理解程序分析方法:2)數(shù)據(jù)跟蹤建立各層次的程序級(jí)上的接口圖,展示各模塊或過(guò)程的調(diào)用方式和接口參數(shù);利用數(shù)據(jù)流分析方法,對(duì)過(guò)程內(nèi)部的一些變量進(jìn)行跟蹤;維護(hù)人員通過(guò)這種數(shù)據(jù)流跟蹤,可獲得有關(guān)數(shù)據(jù)在過(guò)程間如何傳遞,在過(guò)程內(nèi)如何處理等信息。在跟蹤的過(guò)程中可在源程序中間插入自己的注釋?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202329.8.3.1分析和理解程序分析方法:3)控制跟蹤:控制流跟蹤同樣可在結(jié)構(gòu)圖基礎(chǔ)上或源程序基礎(chǔ)上進(jìn)行??刹捎梅?hào)執(zhí)行或?qū)嶋H動(dòng)態(tài)跟蹤的方法,了解數(shù)據(jù)如何從一個(gè)輸入源到達(dá)輸出點(diǎn)的。基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202330.8.3.1分析和理解程序分析方法:4)在分析過(guò)程中,充分閱讀和使用源程序清單和文檔,分析現(xiàn)有文檔的合理性。5)充分使用由編譯程序或匯編程序提供的交叉引用表、符號(hào)表以及其它有用的信息。6)如有可能,積極參加開(kāi)發(fā)工作。基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202331.8.3.2修改程序1)設(shè)計(jì)程序的修改計(jì)劃修改計(jì)劃內(nèi)容:規(guī)格說(shuō)明信息維護(hù)資源人員提供基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202332.8.3.2修改程序1)設(shè)計(jì)程序的修改計(jì)劃修改計(jì)劃設(shè)計(jì)工作:(1)研究程序的各個(gè)模塊、模塊的接口及數(shù)據(jù)庫(kù),從全局的觀(guān)點(diǎn)提出修改計(jì)劃?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202333.8.3.2修改程序1)設(shè)計(jì)程序的修改計(jì)劃修改計(jì)劃設(shè)計(jì)工作:(2)依次把要修改的以及那些受修改影響的模塊和數(shù)據(jù)結(jié)構(gòu)分離出來(lái),包括:基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施識(shí)別收修改影響的數(shù)據(jù);識(shí)別使用這些數(shù)據(jù)的程序模塊;對(duì)于上面程序模塊,按照是產(chǎn)生數(shù)據(jù)、修改數(shù)據(jù),還是刪除數(shù)據(jù)進(jìn)行分類(lèi);識(shí)別這些數(shù)據(jù)元素的外部控制信息;識(shí)別編輯和檢查這些數(shù)據(jù)元素的地方;隔離要修改的部分。4/20/202334.8.3.2修改程序1)設(shè)計(jì)程序的修改計(jì)劃修改計(jì)劃設(shè)計(jì)工作:(3)詳細(xì)地分析要修改的以及那些受變更影響的模塊和數(shù)據(jù)結(jié)構(gòu)的內(nèi)部細(xì)節(jié),設(shè)計(jì)修改計(jì)劃,標(biāo)明新邏輯及要改動(dòng)的現(xiàn)有邏輯。基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202335.8.3.2修改程序1)設(shè)計(jì)程序的修改計(jì)劃修改計(jì)劃設(shè)計(jì)工作:(4)向用戶(hù)提供回避措施:在問(wèn)題原因還未找到時(shí),先就問(wèn)題的現(xiàn)象提供回避的操作方法,可能的情況有:意外停機(jī),系統(tǒng)完全不能工作——作為臨時(shí)處理,消除特定的數(shù)據(jù),插入臨時(shí)代碼(打補(bǔ)?。?,以人工方式運(yùn)行系統(tǒng)安裝的期限到期——系統(tǒng)有時(shí)要延遲變更發(fā)現(xiàn)錯(cuò)誤運(yùn)行系統(tǒng)——人工查找錯(cuò)誤并修改之如果弄清了問(wèn)題的原因,可通過(guò)臨時(shí)修改或改變運(yùn)行控制以回避在系統(tǒng)運(yùn)行時(shí)產(chǎn)生的問(wèn)題?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202336.8.3.2修改程序2)修改代碼,以適應(yīng)變化要求:(1)正確、有效地編寫(xiě)修改代碼;(2)要謹(jǐn)慎地修改程序,盡量保持程序的風(fēng)格及格式,要在程序清單上注明改動(dòng)的指令;(3)不要匆忙刪除程序語(yǔ)句,除非完全肯定它是無(wú)用的;基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202337.8.3.2修改程序2)修改代碼,以適應(yīng)變化要求:(4)不要試圖公用程序中已有的臨時(shí)變量或工作區(qū),為了避免沖突或混淆用途,應(yīng)自行設(shè)置自己的變量;(5)插入錯(cuò)誤檢測(cè)語(yǔ)句;(6)保持詳細(xì)的維護(hù)活動(dòng)和維護(hù)結(jié)果記錄;(7)如果程序結(jié)構(gòu)混亂,修改受到干擾,可拋棄程序重新編寫(xiě)?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202338.8.3.2修改程序3)修改程序的副作用(1)修改代碼的副作用在使用程序設(shè)計(jì)語(yǔ)言修改源代碼時(shí),都可能引入錯(cuò)誤。例如:基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施刪除或修改一個(gè)子程序刪除或修改一個(gè)標(biāo)號(hào)刪除或修改一個(gè)標(biāo)識(shí)符改變程序代碼的時(shí)序關(guān)系改變占用存儲(chǔ)的大小改變邏輯運(yùn)算符修改文件的打開(kāi)或關(guān)閉改進(jìn)程序的執(zhí)行效率把設(shè)計(jì)上的改變翻譯成代碼的改變?yōu)檫吔鐥l件的邏輯測(cè)試作出改變4/20/202339.8.3.2修改程序3)修改程序的副作用(2)修改數(shù)據(jù)的副作用在修改數(shù)據(jù)結(jié)構(gòu)時(shí),有可能造成軟件設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)不匹配,因而導(dǎo)致軟件出錯(cuò)。數(shù)據(jù)的副作用是修改軟件信息結(jié)構(gòu)導(dǎo)致的結(jié)果。例如:基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施重新定義局部的或全局的常量重新定義記錄或文件的格式增大或減小一個(gè)數(shù)組或高層數(shù)據(jù)結(jié)構(gòu)的大小修改全局或公共數(shù)據(jù)重新初始化控制標(biāo)痣或指針重新排列輸入/輸出或子程序的參數(shù)4/20/202340.8.3.2修改程序3)修改程序的副作用(3)文檔的副作用對(duì)數(shù)據(jù)流、軟件結(jié)構(gòu)、模塊邏輯或任何其他有關(guān)特性進(jìn)行修改時(shí),必須對(duì)相關(guān)技術(shù)文檔進(jìn)行相應(yīng)修改。否則會(huì)導(dǎo)致文檔與程序功能不匹配、缺省條件改變、新錯(cuò)誤信息不正確等錯(cuò)誤。使得軟件文檔不能反映軟件的當(dāng)前狀態(tài)。對(duì)于用戶(hù)來(lái)說(shuō),軟件事實(shí)上就是文檔。如果對(duì)可執(zhí)行軟件的修改不反映在文檔里,會(huì)產(chǎn)生文檔的副作用?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202341.8.3.2修改程序3)修改程序的副作用控制修改副作用的措施:(1)按模塊把修改分組;(2)自頂向下地安排被修改模塊的順序;(3)每次修改一個(gè)模塊;(4)對(duì)于每個(gè)修改了的模塊,在安排修改下一個(gè)模塊之前,要確定這個(gè)修改的副作用。可以使用交叉引用表、存儲(chǔ)映象表、執(zhí)行流程跟蹤等?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202342.8.3.3重新驗(yàn)證程序1)靜態(tài)確認(rèn)修改軟件,伴隨著引起新的錯(cuò)誤的危險(xiǎn)。為了能夠作出正確的判斷,驗(yàn)證修改后的程序至少需要兩個(gè)人參加。要檢查:修改是否涉及到規(guī)格說(shuō)明?修改結(jié)果是否符合規(guī)格說(shuō)明?有沒(méi)有歪曲規(guī)格說(shuō)明?程序的修改是否足以修正軟件中的問(wèn)題?源程序代碼有無(wú)邏輯錯(cuò)誤?修改時(shí)有無(wú)修補(bǔ)失誤?修改部分對(duì)其它部分有無(wú)不良影響?基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202343.8.3.3重新驗(yàn)證程序2)計(jì)算機(jī)確認(rèn)在充分進(jìn)行了靜態(tài)確認(rèn)的基礎(chǔ)上,要用計(jì)算機(jī)對(duì)修改程序進(jìn)行確認(rèn)測(cè)試。幾個(gè)注意點(diǎn):確認(rèn)測(cè)試順序:對(duì)修改部分測(cè)試隔離修改部分,測(cè)試程序的未修改部分把兩部分集成起來(lái)進(jìn)行測(cè)試。準(zhǔn)備標(biāo)準(zhǔn)的測(cè)試用例。充分利用軟件工具幫助重新驗(yàn)證過(guò)程。在重新確認(rèn)過(guò)程中,需邀請(qǐng)用戶(hù)參加?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202344.8.3.3重新驗(yàn)證程序3)維護(hù)后的驗(yàn)收在交付新軟件之前,維護(hù)主管部門(mén)要檢驗(yàn):全部文檔是否完備,并已更新;所有測(cè)試用例和測(cè)試結(jié)果已經(jīng)正確記載;記錄軟件配置所有副本的工作已經(jīng)完成;維護(hù)工序和責(zé)任已經(jīng)確定。基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202345.8.3.3重新驗(yàn)證程序從維護(hù)角度來(lái)看所需測(cè)試種類(lèi)基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施對(duì)修改事務(wù)的測(cè)試;操作過(guò)程的測(cè)試;使用過(guò)程的測(cè)試;作業(yè)控制語(yǔ)言的測(cè)試;對(duì)修改程序的測(cè)試;后備/恢復(fù)過(guò)程的測(cè)試。軟件系統(tǒng)之間接口的測(cè)試;應(yīng)用系統(tǒng)運(yùn)行過(guò)程的測(cè)試;系統(tǒng)各部分之間接口的測(cè)試;與系統(tǒng)軟件接口的測(cè)試;安全性測(cè)試;4/20/202346.8.4軟件可維護(hù)性8.4.1軟件可維護(hù)性的定義8.4.2可維護(hù)性的度量基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202347.8.4.1軟件可維護(hù)性的定義概念所謂軟件可維護(hù)性,是指糾正軟件系統(tǒng)出現(xiàn)的錯(cuò)誤和缺陷,以及為滿(mǎn)足新的要求進(jìn)行修改、擴(kuò)充或壓縮的容易程度。軟件的可維護(hù)性是軟件開(kāi)發(fā)階段各個(gè)時(shí)期的關(guān)鍵目標(biāo)。基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202348.8.4.1軟件可維護(hù)性的定義衡量程序可維護(hù)性的特性可理解性可測(cè)試性可修改性可靠性可移植性可使用性效率基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202349.8.4.1軟件可維護(hù)性的定義各類(lèi)維護(hù)側(cè)重的特性基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施改正性維護(hù)使用性維護(hù)完善性維護(hù)可理解性√可測(cè)試性√可修改性√√可靠性√可移植性√可使用性√√效率√4/20/202350.8.5提高可維護(hù)性的方法8.5.1建立明確的軟件質(zhì)量目標(biāo)及優(yōu)先級(jí)8.5.2使用提高軟件質(zhì)量的技術(shù)和工具8.5.3進(jìn)行明確的質(zhì)量保證審查8.5.4選擇可維護(hù)的程序設(shè)計(jì)語(yǔ)言8.5.5改進(jìn)程序文檔基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202351.8.5.1建立明確的軟件質(zhì)量目標(biāo)及優(yōu)先級(jí)基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施一個(gè)可維護(hù)的程序應(yīng)當(dāng)是可理解的、可靠的、可測(cè)試的、可修改的、可移植的、效率高的可使用的。但要實(shí)現(xiàn)所有這些目標(biāo),需要付出很大的代價(jià),而且也不一定行得通。盡管可維護(hù)性要求每一種質(zhì)量特性都要得到滿(mǎn)足,但它們的相對(duì)重要性應(yīng)隨程序的用途及計(jì)算環(huán)境的不同而不同。因此,當(dāng)對(duì)程序的質(zhì)量特性,必須在提出目標(biāo)的同時(shí)規(guī)定它們的優(yōu)先級(jí)。這樣有助于提高軟件的質(zhì)量,并對(duì)軟件生存期的費(fèi)用產(chǎn)生很大的影響。4/20/202352.8.5.2使用提高軟件質(zhì)量的技術(shù)和工具1)模塊化模塊化技術(shù)的優(yōu)點(diǎn)是:如果需要改變某個(gè)模塊的功能,則只要改變這個(gè)模塊,對(duì)其它模塊影響很小;如果需要增加程序的某些功能,則僅需增加完成這些功能的新的模塊或模塊層;程序的測(cè)試與重復(fù)測(cè)試比較容易;程序錯(cuò)誤易于定位和糾正;容易提高程序效率?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202353.8.5.2使用提高軟件質(zhì)量的技術(shù)和工具2)結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化設(shè)計(jì)不僅使得模塊結(jié)構(gòu)標(biāo)準(zhǔn)化,而且將模塊間的相互作用也標(biāo)準(zhǔn)化了。因而把模塊化又向前推進(jìn)了一步。采用結(jié)構(gòu)化程序設(shè)計(jì)可以獲得良好的程序結(jié)構(gòu)。基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202354.8.5.2使用提高軟件質(zhì)量的技術(shù)和工具3)使用結(jié)構(gòu)化程序設(shè)計(jì)技術(shù),提高現(xiàn)有系統(tǒng)的可維護(hù)性采用備用件的方法采用自動(dòng)重建結(jié)構(gòu)和重新格式化的工具(結(jié)構(gòu)更新技術(shù))改進(jìn)現(xiàn)有程序的不完善的文檔使用結(jié)構(gòu)化程序設(shè)計(jì)方法實(shí)現(xiàn)新的子系統(tǒng)采用結(jié)構(gòu)化小組基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202355.8.5.3進(jìn)行明確的質(zhì)量保證審查1)在檢查點(diǎn)進(jìn)行復(fù)審保證程序質(zhì)量的最佳方法是在軟件開(kāi)發(fā)的最初階段就把質(zhì)量要求考慮進(jìn)去,并在開(kāi)發(fā)過(guò)程每一階段的終點(diǎn),設(shè)置檢查點(diǎn)進(jìn)行檢查。檢查的目的是要證實(shí),已開(kāi)發(fā)的軟件是否符合標(biāo)準(zhǔn),是否滿(mǎn)足規(guī)定的質(zhì)量需求?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202356.8.5.3進(jìn)行明確的質(zhì)量保證審查軟件開(kāi)發(fā)期間各檢查點(diǎn)的檢查重點(diǎn)基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施分析設(shè)計(jì)編碼測(cè)試驗(yàn)收檢查點(diǎn)檢查點(diǎn)檢查點(diǎn)檢查點(diǎn)可靠性

可適應(yīng)性可理解性可修改性可測(cè)試性可理解性可修改性可移植性有效性可靠性有效性4/20/202357.8.5.3進(jìn)行明確的質(zhì)量保證審查2)驗(yàn)收檢查驗(yàn)收檢查是一個(gè)特殊的檢查點(diǎn)的檢查,是交付使用前的最后一次檢查,使軟件投入運(yùn)行之前保證可維護(hù)性的最后機(jī)會(huì)。它實(shí)際上是驗(yàn)收測(cè)試的一部分,只不過(guò)是從維護(hù)的角度提出驗(yàn)收的條件和標(biāo)準(zhǔn)?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202358.8.5.3進(jìn)行明確的質(zhì)量保證審查最小驗(yàn)收標(biāo)準(zhǔn)(1)需求和規(guī)范標(biāo)準(zhǔn)需求應(yīng)當(dāng)以可測(cè)試的術(shù)語(yǔ)進(jìn)行書(shū)寫(xiě),排列優(yōu)先次序的定義;區(qū)分必須的、任選的、將來(lái)的需求;包括對(duì)系統(tǒng)運(yùn)行時(shí)的計(jì)算機(jī)設(shè)備的需求;對(duì)維護(hù)、測(cè)試、操作以及維護(hù)人員的需求;對(duì)測(cè)試工具等的需求。基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202359.8.5.3進(jìn)行明確的質(zhì)量保證審查最小驗(yàn)收標(biāo)準(zhǔn)(2)設(shè)計(jì)標(biāo)準(zhǔn)程序應(yīng)設(shè)計(jì)成分層的模塊結(jié)構(gòu)。每個(gè)模塊應(yīng)完成唯一的功能,并達(dá)到高內(nèi)聚、低耦合;通過(guò)一些知道預(yù)期變化的實(shí)例,說(shuō)明設(shè)計(jì)的可擴(kuò)充性、可縮減性和可適應(yīng)性?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202360.8.5.3進(jìn)行明確的質(zhì)量保證審查最小驗(yàn)收標(biāo)準(zhǔn)(3)源代碼標(biāo)準(zhǔn)盡可能使用最高級(jí)的程序設(shè)計(jì)語(yǔ)言,且只使用語(yǔ)言的標(biāo)準(zhǔn)版本;所有的代碼都必須具有良好的結(jié)構(gòu);所有的代碼都必須文檔化,在注釋中說(shuō)明它的輸入、輸出以及便于測(cè)試/再測(cè)試的一些特點(diǎn)與風(fēng)格?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202361.8.5.3進(jìn)行明確的質(zhì)量保證審查最小驗(yàn)收標(biāo)準(zhǔn)(4)文檔標(biāo)準(zhǔn):

文檔中應(yīng)說(shuō)明程序的輸入/輸出、使用的方法/算法、錯(cuò)誤恢復(fù)方法、所有參數(shù)的范圍以及缺省條件等?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202362.8.5.3進(jìn)行明確的質(zhì)量保證審查3)周期性地維護(hù)復(fù)審軟件在運(yùn)行期間,為了糾正新發(fā)現(xiàn)的錯(cuò)誤或缺陷,為了適應(yīng)計(jì)算環(huán)境的變化,為了響應(yīng)用戶(hù)新的需求,必須進(jìn)行修改。因此會(huì)導(dǎo)致軟件質(zhì)量有變壞的危險(xiǎn),可能產(chǎn)生新的錯(cuò)誤,破壞程序概念的完整性。因此,必須像硬件的定期檢查一樣,每月一次或二月一次,對(duì)軟件作周期性的維護(hù)審查,以跟蹤軟件質(zhì)量的變化?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202363.8.5.3進(jìn)行明確的質(zhì)量保證審查3)周期性地維護(hù)復(fù)審周期性維護(hù)審查實(shí)際上是開(kāi)發(fā)階段檢查點(diǎn)復(fù)查的繼續(xù),并且采用的檢查方法、檢查內(nèi)容都是相同的。維護(hù)審查的結(jié)果可以同以前的維護(hù)審查的結(jié)果、以及以前的驗(yàn)收檢查的內(nèi)容和檢查點(diǎn)檢查的結(jié)果相比較,任何一種改變都表明在軟件質(zhì)量上或其他類(lèi)型的問(wèn)題上可能起了變化?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202364.8.5.3進(jìn)行明確的質(zhì)量保證審查4)對(duì)軟件包進(jìn)行檢查軟件包是一種標(biāo)準(zhǔn)化了的、可為不同用戶(hù)使用的軟件。軟件包賣(mài)主考慮到他的專(zhuān)利權(quán),一般不會(huì)提供給用戶(hù)他的源代碼和程序文檔。因此,對(duì)軟件包的維護(hù)采取的方法不同?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202365.8.5.3進(jìn)行明確的質(zhì)量保證審查4)對(duì)軟件包進(jìn)行檢查使用單位的維護(hù)人員首先要仔細(xì)分析、研究賣(mài)主提供的用戶(hù)手冊(cè)、操作手冊(cè)、培訓(xùn)教程、新版本說(shuō)明、計(jì)算機(jī)環(huán)境要求書(shū)、未來(lái)特性表以及賣(mài)方提供的驗(yàn)收測(cè)試報(bào)告等,在此基礎(chǔ)上,深入了解本單位的希望和要求,編制軟件包的檢驗(yàn)程序。該檢驗(yàn)程序檢查軟件包程序所執(zhí)行的功能是否與用戶(hù)的要求和條件相一致。為了建立這個(gè)程序,維護(hù)人員可以利用賣(mài)方提供的驗(yàn)收測(cè)試實(shí)例,還可以自己重新設(shè)計(jì)新的測(cè)試實(shí)例。根據(jù)測(cè)試結(jié)果,檢查和驗(yàn)證軟件包的參數(shù)或控制結(jié)構(gòu),以完成軟件包的維護(hù)?;靖拍钴浖S護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202366.8.5.4選擇可維護(hù)的程序設(shè)計(jì)語(yǔ)言程序語(yǔ)言的選擇,對(duì)程序的可維護(hù)性影響很大。低級(jí)語(yǔ)言機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言(FORTRAN、COBOL、PL/1)第四代語(yǔ)言過(guò)程性語(yǔ)言非過(guò)程性語(yǔ)言基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施4/20/202367.8.5.4選擇可維護(hù)的程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言對(duì)可維護(hù)性的影響基本概念軟件維護(hù)程序修改可維護(hù)性本章小結(jié)逆向工程改善措施第一代

語(yǔ)言第二代

語(yǔ)言第三代

語(yǔ)言第四代

語(yǔ)言機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言:FOR

溫馨提示

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

評(píng)論

0/150

提交評(píng)論