




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
軟件工程學(xué)中國科學(xué)技術(shù)大學(xué)網(wǎng)絡(luò)學(xué)院8.1軟件維護(hù)的概念8.2軟件維護(hù)過程8.3程序修改的步驟
及修改的副作用8.4軟件的可維護(hù)性8.5提高可維護(hù)性的方法8.6軟件再工程過程
第8章軟件維護(hù)8.1軟件維護(hù)的概念軟件維護(hù)的定義影響維護(hù)工作量的因素軟件維護(hù)的策略維護(hù)成本軟件維護(hù)的定義在軟件運(yùn)行/維護(hù)階段對軟件產(chǎn)品進(jìn)行的修改就是所謂的維護(hù)。維護(hù)的類型有四種:改正性維護(hù)適應(yīng)性維護(hù)完善性維護(hù)預(yù)防性維護(hù)改正性維護(hù)在軟件交付使用后,因開發(fā)時(shí)測試的不徹底、不完全,必然會(huì)有部分隱藏的錯(cuò)誤遺留到運(yùn)行階段。這些隱藏下來的錯(cuò)誤在某些特定的使用環(huán)境下就會(huì)暴露出來。為了識(shí)別和糾正軟件錯(cuò)誤、改正軟件性能上的缺陷、排除實(shí)施中的誤使用,應(yīng)當(dāng)進(jìn)行的診斷和改正錯(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ì)對軟件提出新的功能與性能要求。為了滿足這些要求,需要修改或再開發(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)的軟件工程方法對需要維護(hù)的軟件或軟件中的某一部分(重新)進(jìn)行設(shè)計(jì)、編制和測試。在整個(gè)軟件維護(hù)階段所花費(fèi)的全部工作量中,完善性維護(hù)占了幾乎一半的工作量。軟件維護(hù)活動(dòng)所花費(fèi)的工作占整個(gè)生存期工作量的70%以上,這是由于在漫長的軟件運(yùn)行過程中需要不斷對軟件進(jìn)行修改,以改正新發(fā)現(xiàn)的錯(cuò)誤、適應(yīng)新的環(huán)境和用戶新的要求,這些修改需要花費(fèi)很多精力和時(shí)間,而且有時(shí)會(huì)引入新的錯(cuò)誤。維護(hù)護(hù)在在軟軟件件生生三三類類維維護(hù)護(hù)占占存存期期所所占占比比例例總總維維護(hù)護(hù)比比例例影響響維維護(hù)護(hù)工工作作量量的的因因素素在軟軟件件的的維維護(hù)護(hù)過過程程中中,,需需要要花花費(fèi)費(fèi)大大量量的的工工作作量量,,從從而而直直接影影響響了了軟軟件件維維護(hù)護(hù)的的成成本本。應(yīng)當(dāng)考慮慮有哪些因因素影響響軟件維維護(hù)的工工作量,相應(yīng)應(yīng)該采取取什么維維護(hù)策略略,才能有效地維維護(hù)軟件件并控制維護(hù)護(hù)的成本本。系統(tǒng)大小?。合到y(tǒng)越越大,理理解掌握握起來越越困難。。系統(tǒng)越越大,所所執(zhí)行功功能越復(fù)復(fù)雜。因因而需要要更多的的維護(hù)工工作量。。程序設(shè)計(jì)計(jì)語言:使用強(qiáng)強(qiáng)功能的的程序設(shè)設(shè)計(jì)語言言可以控控制程序序的規(guī)模模。語言言的功能能越強(qiáng),,生成程程序的模模塊化和和結(jié)構(gòu)化化程度越越高,所所需的指指令數(shù)就就越少,,程序的的可讀性性越好。。系統(tǒng)年齡齡:老系統(tǒng)隨隨著不斷斷的修改改,結(jié)構(gòu)構(gòu)越來越越亂;維護(hù)人員員經(jīng)常更更換,程程序又變變得越來來越難于于理解。。許多老系系統(tǒng)在當(dāng)當(dāng)初并未未按照軟軟件工程程的要求求進(jìn)行開開發(fā),因因而沒有有文檔,,或文檔檔太少。。在長期的的維護(hù)過過程中文文檔在許許多地方方與程序序?qū)崿F(xiàn)變變得不一一致,在在維護(hù)時(shí)時(shí)就會(huì)遇遇到很大大困難。。數(shù)據(jù)庫技技術(shù)的應(yīng)應(yīng)用:使用數(shù)數(shù)據(jù)庫,,可以簡簡單而有有效地管管理和存存儲(chǔ)用戶戶程序中中的數(shù)據(jù)據(jù),還可可以減少少生成用用戶報(bào)表表應(yīng)用軟軟件的維維護(hù)工作作量。先進(jìn)的軟軟件開發(fā)發(fā)技術(shù):在軟件件開發(fā)時(shí)時(shí),若使使用能使使軟件結(jié)結(jié)構(gòu)比較較穩(wěn)定的的分析與與設(shè)計(jì)技技術(shù),及及程序設(shè)設(shè)計(jì)技術(shù)術(shù),如面面向?qū)ο笙蠹夹g(shù)、、復(fù)用技技術(shù)等,,可減少少大量的的工作量量。其它:應(yīng)用的類類型數(shù)學(xué)模型型任務(wù)的難難度開關(guān)與標(biāo)標(biāo)記、IF嵌套深度度、索引引或下標(biāo)標(biāo)數(shù)等對維護(hù)工工作量都都有影響響。許多軟件件在開發(fā)發(fā)時(shí)并未未考慮將將來的修修改,為為軟件的的維護(hù)帶帶來許多多問題。。軟件維護(hù)護(hù)的策略略改正性維維護(hù)通常要生生成100%可靠的的軟件并并不一定定合算,,成本太太高。但通過使使用新技技術(shù),可可大大減減少進(jìn)行行改正性性維護(hù)的的需要。這些技術(shù)術(shù)包括::數(shù)據(jù)庫管管理系統(tǒng)統(tǒng)、軟件開發(fā)發(fā)環(huán)境、程序自動(dòng)動(dòng)生成系系統(tǒng)、較高級(jí)(第四代)的語言。以及新的開發(fā)發(fā)方法、軟件復(fù)用用、防錯(cuò)程序序設(shè)計(jì)及周期性維維護(hù)審查查等。適應(yīng)性維維護(hù)這一類維維護(hù)不可可避免,,可以控控制。(1)在配置管管理時(shí),,把硬件件、操作作系統(tǒng)和和其它相相關(guān)環(huán)境境因素的的可能變變化考慮慮在內(nèi)。(2)把與硬件、操操作系統(tǒng),以以及其它外圍圍設(shè)備有關(guān)的的程序歸到特特定的程序模模塊中。(3)使用內(nèi)部程序序列表、外部部文件,以及及處理的例行行程序包,可可為維護(hù)時(shí)修修改程序提供供方便。完善性維護(hù)利用前兩類維維護(hù)中列舉的的方法,也可可以減少這一一類維護(hù)。特特別是數(shù)據(jù)庫管理系系統(tǒng)、程序生成器、應(yīng)用軟件包,可減少維護(hù)護(hù)工作量。此此外,建立立軟件系統(tǒng)的的原型,把它它在實(shí)際系統(tǒng)統(tǒng)開發(fā)之前提提供給用戶。。用戶通過研研究原型,進(jìn)進(jìn)一步完善他他們的功能要要求,就可以以減少以后完完善性維護(hù)的的需要。維護(hù)成本有形的軟件維維護(hù)成本是花費(fèi)了多少少錢,無形的維護(hù)成成本有更大的影響響。一些合理的修復(fù)或或修改請求不不能及時(shí)安排排,使得客戶不不滿意;變更的結(jié)果引入新的故障障,使得軟件整整體質(zhì)量下降降;把軟件人員抽抽調(diào)到維護(hù)工工作中,干擾擾了軟件開發(fā)發(fā)工作。軟件維護(hù)的代價(jià)是降低了生產(chǎn)率率,在做老程序序的維護(hù)時(shí)非非常明顯。例如,開發(fā)每一行源源代碼耗資25美元,維護(hù)每一行源源代碼需要耗耗資1000美元。維護(hù)工作量量包括生產(chǎn)性活動(dòng)動(dòng)(如分析和和評(píng)價(jià)、設(shè)設(shè)計(jì)修改和和實(shí)現(xiàn))和和“輪轉(zhuǎn)”活活動(dòng)(如力圖理理解代碼在在做什么、、試圖判明明數(shù)據(jù)結(jié)構(gòu)構(gòu)、接口特特性、性能能界限等))。維護(hù)工作量量的模型M維護(hù)中消耗耗的總工作作量p生產(chǎn)性工作作量K經(jīng)驗(yàn)常數(shù)c復(fù)雜程度((結(jié)構(gòu)化設(shè)設(shè)計(jì)和缺少少文檔都會(huì)會(huì)增加軟件件的復(fù)雜程程度)d是維護(hù)人員對軟件熟悉悉程度的度度量。模型指明,,如果使用用了不好的的軟件開發(fā)發(fā)方法(未未按軟件工工程要求做做),原來來參加開發(fā)發(fā)的人員或或小組不能能參加維護(hù)護(hù),則工作作量(及成成本)將按按指數(shù)級(jí)增增加。8.2軟件維護(hù)過程為了有效地地進(jìn)行軟件件維護(hù),應(yīng)應(yīng)事先就開開始做組織織工作。首先建立維護(hù)的的機(jī)構(gòu)申明提出維護(hù)申申請報(bào)告的的過程及評(píng)價(jià)的過程程為每一個(gè)維維護(hù)申請規(guī)規(guī)定標(biāo)準(zhǔn)的處理理步驟建立維護(hù)活動(dòng)的的登記制度度以及規(guī)定評(píng)價(jià)和評(píng)審審的標(biāo)準(zhǔn)。維護(hù)組織除了較大的的軟件開發(fā)發(fā)公司外,,通常在軟軟件維護(hù)工工作方面,,并不保持持一個(gè)正式式的組織機(jī)機(jī)構(gòu)。雖然不要求求建立一個(gè)個(gè)正式的維維護(hù)機(jī)構(gòu),,但是在開開發(fā)部門確確立一個(gè)非非正式的維維護(hù)機(jī)構(gòu)則則是非常必必要的。軟件維護(hù)的的組織維護(hù)申請?zhí)峤唤o維護(hù)管理員員,他把申請請交給某個(gè)個(gè)系統(tǒng)監(jiān)督員員去評(píng)價(jià)。一旦做出評(píng)評(píng)價(jià),由修改負(fù)責(zé)人人確定如何進(jìn)行修修改。在修改程序序的過程中中,由配置管理員員嚴(yán)格格把把關(guān)關(guān),,控制制修修改改的的范范圍圍,對軟軟件件配配置置進(jìn)進(jìn)行行審審計(jì)計(jì)。在維維護(hù)護(hù)之之前前,,就就把把責(zé)責(zé)任任明明確確下下來來,,可可以以減減少少維維護(hù)護(hù)過過程程中中的的混混亂亂。。軟件件維維護(hù)護(hù)申申請請報(bào)報(bào)告告維護(hù)護(hù)申申請請報(bào)報(bào)告告或或稱稱軟件件問問題題報(bào)報(bào)告告,由由申請請維維護(hù)護(hù)的的用用戶戶填寫寫。用戶戶必必須須完整整地地說說明明產(chǎn)產(chǎn)生生錯(cuò)錯(cuò)誤誤的的情情況況,包包括括輸入入數(shù)數(shù)據(jù)據(jù)、錯(cuò)誤誤清清單單以及及其它它有有關(guān)關(guān)材材料料。如果果申申請請的的是是適適應(yīng)應(yīng)性性維維護(hù)護(hù)或或完完善善性性維維護(hù)護(hù),,用用戶戶必必須須提提出出一一份份修修改改說說明明書書,,列列出出所所有有希希望望的的修修改改。。維護(hù)護(hù)申申請請報(bào)報(bào)告告將將由由維護(hù)護(hù)管管理理員員和系統(tǒng)統(tǒng)監(jiān)監(jiān)督督員員來研研究究處處理理。。他們們應(yīng)應(yīng)相相應(yīng)應(yīng)地地做做出出軟件件修修改改報(bào)報(bào)告告,指指明明::所需需修修改改變變動(dòng)動(dòng)的的性性質(zhì)質(zhì);;申請請修修改改的的優(yōu)優(yōu)先先級(jí)級(jí);;為滿滿足足某某個(gè)個(gè)維維護(hù)護(hù)申申請請報(bào)報(bào)告告,,所所需需的的工工作作量量;;預(yù)計(jì)計(jì)修修改改后后的的狀狀況況.軟件件修修改改報(bào)報(bào)告告應(yīng)應(yīng)提提交交修修改改負(fù)負(fù)責(zé)責(zé)人人,,經(jīng)經(jīng)批批準(zhǔn)準(zhǔn)后后才才能能開開始始進(jìn)進(jìn)一一步步安安排排維維護(hù)護(hù)工工作作。。軟件件維維護(hù)護(hù)工工作作流流程程盡管管維維護(hù)護(hù)申申請請的的類類型型不不同同,,但但都都要要進(jìn)進(jìn)行行同同樣樣的的技技術(shù)術(shù)工工作作。。修改改軟軟件件需需求求說說明明修改改軟軟件件設(shè)設(shè)計(jì)計(jì)設(shè)計(jì)計(jì)評(píng)評(píng)審審對源源程程序序做做必必要要的的修修改改單元元測測試試集成成測測試試(回歸歸測測試試)確認(rèn)認(rèn)測測試試軟件件配配置置評(píng)評(píng)審審等等。在每每次次軟軟件件維維護(hù)護(hù)任任務(wù)務(wù)完完成成后后進(jìn)進(jìn)行行情情況況評(píng)評(píng)審審,,對對以以下下問問題題做做一一總總結(jié)結(jié)::(1)在目目前前情情況況下下,,設(shè)設(shè)計(jì)計(jì)、、編編碼碼、、測測試試中中的的哪哪一一方方面面可可以以改改進(jìn)進(jìn)?(2)哪些些維維護(hù)護(hù)資資源源應(yīng)應(yīng)該該有有但但沒沒有有?(3)工作作中中主主要要的的或或次次要要的的障障礙礙是是什什么么?(4)從維護(hù)申請的的類型來看是是否應(yīng)當(dāng)有預(yù)預(yù)防性維護(hù)?情況評(píng)審對將將來的維護(hù)工工作如何進(jìn)行行會(huì)產(chǎn)生重要要的影響。維護(hù)檔案記錄錄程序名稱源程序語句條條數(shù)機(jī)器代碼指令令條數(shù)所用的程序設(shè)設(shè)計(jì)語言程序安裝的日日期程序安裝后的的運(yùn)行次數(shù)與程序安裝后后運(yùn)行次數(shù)有有關(guān)的處理故故障次數(shù)程序改變的層層次及名稱修改程序增加加的源程序語語句條數(shù)修改程序減少少的源程序語語句條數(shù)每次修改所付付出的“人時(shí)時(shí)”數(shù)修改程序的日日期軟件維護(hù)人員員的姓名維護(hù)申請報(bào)告告的名稱、維維護(hù)類型維護(hù)開始時(shí)間間和維護(hù)結(jié)束束時(shí)間、花費(fèi)在維護(hù)上上的累計(jì)“人人時(shí)”數(shù)維護(hù)工作的凈凈收益等。評(píng)價(jià)維護(hù)活動(dòng)評(píng)價(jià)維護(hù)活動(dòng)動(dòng)比較困難,因?yàn)槿狈煽煽康臄?shù)據(jù)。。如果維護(hù)的檔檔案記錄做得得比較好,可可以得出一些些維護(hù)“性能能”方面的度度量值。每次程序運(yùn)行行時(shí)的平均出出錯(cuò)次數(shù);花費(fèi)在每類維維護(hù)上的總““人時(shí)”數(shù);;每個(gè)程序、每每種語言、每每種維護(hù)類型型的程序平均均修改次數(shù);;因?yàn)榫S護(hù),增增加或刪除每每個(gè)源程序語語句所花費(fèi)的的平均“人時(shí)時(shí)”數(shù);用于每種語言言的平均“人人時(shí)”數(shù);維護(hù)申請報(bào)告告的平均處理理時(shí)間;各類維護(hù)申請請的百分比。。據(jù)此可對開發(fā)發(fā)技術(shù)、語言言選擇、維護(hù)護(hù)工作計(jì)劃、、資源分配、、以及其它許許多方面做出出判定。8.3程序修改的步步驟及修改的的副作用在軟件維護(hù)時(shí)時(shí),必然會(huì)對對源程序進(jìn)行行修改。通常對源程序序的修改不能能無計(jì)劃地倉倉促上陣,為為了正確、有有效地修改,需要經(jīng)歷以下下三個(gè)步驟。。分析和理解程程序修改程序重新驗(yàn)證程序序分析和理解程程序經(jīng)過分析,全面、準(zhǔn)確、、迅速地理解解程序是決定定維護(hù)成敗和和質(zhì)量好壞的的關(guān)鍵。在這方面,,軟件的可理理解性和文檔檔的質(zhì)量非常常重要。理解程序的功功能和目標(biāo);;掌握程序的結(jié)結(jié)構(gòu)信息,即即從程序中細(xì)細(xì)分出若干結(jié)結(jié)構(gòu)成分。如如程序系統(tǒng)結(jié)結(jié)構(gòu)、控制制結(jié)構(gòu)、數(shù)據(jù)據(jù)結(jié)構(gòu)和輸入入/輸出結(jié)構(gòu)構(gòu)等;了解數(shù)據(jù)流信信息,即涉及及到的數(shù)據(jù)來來源何處,在在哪里被使用用;了解控制流信信息,即執(zhí)行行每條路徑的的結(jié)果;理解程序的操操作(使用)要求;為了容易地理理解程序,要要求自頂向下下地理解現(xiàn)有有源程序的程程序結(jié)構(gòu)和數(shù)數(shù)據(jù)結(jié)構(gòu),為為此可采用如如下幾種方法法:1.分析程序結(jié)構(gòu)構(gòu)圖(1)搜集所有存儲(chǔ)儲(chǔ)該程序的文文件,閱讀這這些文件,記記下它們包含含的過程名,,建立一個(gè)包括括這些過程名名和文件名的的清單;(2)分析各個(gè)過程程的源代碼,,建立一個(gè)直接接調(diào)用矩陣D或調(diào)用樹。若過程i調(diào)用過程j,則D[i][j]=1,否則D[i][j]=0。(3)建立過過程的的間接接調(diào)用用矩陣陣I,即直直接調(diào)調(diào)用矩矩陣D的傳遞遞閉包包I=D1∪D2∪D3∪…∪∪Dn其中,,n是所包包含的的過程程總數(shù)數(shù).例如,,過程程i調(diào)用j,j調(diào)用k,則D[i][j]=1,D[j][k]=1,I[i][k]=1。(4)分析各個(gè)個(gè)過程的的接口,估計(jì)更改改的復(fù)雜雜性。2.數(shù)據(jù)跟蹤蹤(1)建立各層層次的程程序級(jí)上上的接口口圖,展示各各模塊或或過程的的調(diào)用方方式和接接口參數(shù)數(shù);(2)利用數(shù)據(jù)據(jù)流分析析方法,,對過程程內(nèi)部的的一些變變量進(jìn)行行跟蹤。??色@得有關(guān)數(shù)據(jù)據(jù)在過程程間如何何傳遞,在過程內(nèi)內(nèi)如何處處理等信息。。對于判判斷問題題原因特特別有用用。在跟跟蹤的過過程中可可在源程程序中間間插入自自己的注注釋。3.控制跟蹤蹤控制流跟跟蹤可采采用符號(hào)號(hào)執(zhí)行或或?qū)嶋H動(dòng)動(dòng)態(tài)跟蹤蹤的方法法,了解數(shù)據(jù)據(jù)如何從從一個(gè)輸輸入源到到達(dá)輸出出點(diǎn)的。4.充分閱讀讀和使用用源程序序清單和和文檔,分析現(xiàn)現(xiàn)有文檔檔的合理理性。5.充分使用用由編譯譯程序或或匯編程程序提供供的交叉叉引用表表、符號(hào)號(hào)表、以以及其它它有用的的信息。。6.如有可能能,積極極參加開開發(fā)工作作。修改程序序?qū)Τ绦虻牡男薷?,,必須事事先做出出?jì)劃,,有預(yù)謀謀地、周周密有效效地實(shí)施施修改。。1.設(shè)計(jì)程序序的修改改計(jì)劃程序的修修改計(jì)劃劃要考慮慮人員和和資源的的安排。。小的修修改可以以不需要要詳細(xì)的的計(jì)劃,,而對于于需要耗耗時(shí)數(shù)月月的修改改,就需需要計(jì)劃劃立案。。在編寫有有關(guān)問題題解決的的方案時(shí)時(shí),必須須充分描描述修改改作業(yè)的的規(guī)格說說明。規(guī)格說明明信息::數(shù)據(jù)修修改、處處理修改改、作業(yè)業(yè)控制語語言修改改、系統(tǒng)統(tǒng)之間接接口的修修改等;;維護(hù)資源源:新程程序版本本、測試試數(shù)據(jù)、、所需軟軟件、計(jì)計(jì)算機(jī)時(shí)時(shí)間等;;人員;支持:紙面、、計(jì)算機(jī)機(jī)媒體等等。通常,可可采用自自頂向下下的方法法,在理理解程序序的基礎(chǔ)礎(chǔ)上,(1)研究程序序的各個(gè)個(gè)模塊、、模塊的的接口、、及數(shù)據(jù)據(jù)庫,從全局局的觀點(diǎn)點(diǎn),提出出修改計(jì)計(jì)劃。(2)依次地把把要修改的的、以及那些受修修改影響響的模塊塊和數(shù)據(jù)據(jù)結(jié)構(gòu)分離出來來。為此,,要識(shí)別受修修改影響響的數(shù)據(jù)據(jù);識(shí)別使用用這些數(shù)數(shù)據(jù)的程程序模塊塊;對于上面面程序模模塊,按按是產(chǎn)生生數(shù)據(jù)、、修改數(shù)數(shù)據(jù)、還還是刪除除數(shù)據(jù)進(jìn)進(jìn)行分類類;識(shí)別對這這些數(shù)據(jù)據(jù)元素的的外部控控制信息息;識(shí)別編輯輯和檢查查這些數(shù)數(shù)據(jù)元素素的地方方;隔離要修修改的部部分;(3)詳細(xì)地分分析要修改的的、以及那些受變變更影響響的模塊塊和數(shù)據(jù)據(jù)結(jié)構(gòu)的內(nèi)部細(xì)細(xì)節(jié),設(shè)計(jì)修改改計(jì)劃,標(biāo)明新新邏輯及及要改動(dòng)動(dòng)的現(xiàn)有有邏輯。。(4)向用戶提提供回避措施施。用戶的的某些業(yè)業(yè)務(wù)因軟軟件中發(fā)發(fā)生問題題而中斷斷,為不不讓系統(tǒng)統(tǒng)長時(shí)間間停止運(yùn)運(yùn)行,需需把問題題局部化化,在可能的的范圍內(nèi)內(nèi)繼續(xù)開開展業(yè)務(wù)務(wù)??梢圆扇∪〉拇胧┦┯校孩俨檎艺覇栴}原原因,可能情情況有::意外停機(jī)機(jī)安裝的期期限到期期系統(tǒng)運(yùn)行行中發(fā)現(xiàn)現(xiàn)錯(cuò)誤②如果弄清清了問題題的原因因,可通過臨時(shí)時(shí)修改或或改變運(yùn)運(yùn)行控制制以回避避在系統(tǒng)統(tǒng)運(yùn)行時(shí)時(shí)產(chǎn)生的的問題。2.修改代碼碼,以適適應(yīng)變化化在修改時(shí)時(shí),要求求:(1)正確、有有效地編編寫修改改代碼;;(2)要謹(jǐn)慎地地修改程程序,盡盡量保持持程序的的風(fēng)格及及格式,,要在程程序清單單上注明明改動(dòng)的的指令;;(3)不要?jiǎng)h除除程序語語句,除除非完全全肯定它它是無用用的;(4)不要試圖圖共用程程序中已已有的臨臨時(shí)變量量或工作作區(qū),為為了避免免沖突或或混淆用用途,應(yīng)應(yīng)設(shè)置自自己的變變量;(5)插入錯(cuò)誤誤檢測語語句;(6)在修改過過程中做做好修改改的詳細(xì)細(xì)記錄,,消除變變更中任任何有害害的副作作用(波波動(dòng)效應(yīng)應(yīng));3.修改程序序的副作作用所謂副作作用是指指因修改改軟件而而造成的的錯(cuò)誤或或其它不不希望發(fā)發(fā)生的情情況。副副作用有有三種::修改代碼碼的副作作用、修改數(shù)據(jù)據(jù)的副作作用、文檔的副副作用。在修改源源代碼時(shí)時(shí),都可可能引入入錯(cuò)誤。。例如,,刪除或修修改一個(gè)個(gè)子程序序、刪除或修修改一個(gè)個(gè)標(biāo)號(hào)、刪除或修修改一個(gè)個(gè)標(biāo)識(shí)符符、改變程序序代碼的的時(shí)序關(guān)關(guān)系、改變占用用存儲(chǔ)的的大小、改變邏輯輯運(yùn)算符符、修改文件件的打開開或關(guān)閉閉、改進(jìn)程序序的執(zhí)行行效率,以及把設(shè)計(jì)上上的改變變翻譯成成代碼的的改變時(shí),都容容易引入入錯(cuò)誤。。(1)修改代碼碼的副作作用(2)修改數(shù)據(jù)據(jù)的副作作用在修改數(shù)據(jù)據(jù)結(jié)構(gòu)時(shí),有可可能造成成軟件設(shè)計(jì)計(jì)與數(shù)據(jù)據(jù)結(jié)構(gòu)不不匹配,因而導(dǎo)導(dǎo)致軟件件出錯(cuò)。。數(shù)據(jù)副作作用就是是修改軟軟件信息息結(jié)構(gòu)導(dǎo)導(dǎo)致的結(jié)結(jié)果。容易導(dǎo)致致設(shè)計(jì)與與數(shù)據(jù)不不相容的的錯(cuò)誤可可以有::重新定義義局部的的或全局局的常量量重新定義義記錄或或文件的的格式增大或減減小一個(gè)個(gè)數(shù)組或或高層數(shù)數(shù)據(jù)結(jié)構(gòu)構(gòu)的大小小修改全局局或公共共數(shù)據(jù)重新初始始化控制制標(biāo)志或或指針重新排列列輸入//輸出或或子程序序的參數(shù)數(shù)數(shù)據(jù)副作作用可以以通過交叉引用用表加以控制制。把數(shù)數(shù)據(jù)元素素、記錄錄、文件件和其它它結(jié)構(gòu)聯(lián)聯(lián)系起來來。(3)文檔的副副作用對數(shù)據(jù)流、軟件結(jié)構(gòu)構(gòu)、模塊邏輯輯或任何其它它有關(guān)特特性進(jìn)行修改改時(shí),必必須對相關(guān)技技術(shù)文檔檔進(jìn)行相相應(yīng)修改改。否則會(huì)會(huì)導(dǎo)致文檔與程程序功能能不匹配配,缺省條件件改變,新錯(cuò)誤信信息不正正確等錯(cuò)誤。。使得軟件文檔檔不能反反映軟件件的當(dāng)前前狀態(tài)。對于用戶戶來說,,軟件事事實(shí)上就就是文檔檔。如果對可可執(zhí)行軟軟件的修修改不反反映在文文檔里,,就會(huì)產(chǎn)產(chǎn)生文檔檔的副作作用。對交互輸輸入的順順序或格格式進(jìn)行行修改,,如果沒沒有正確確地記入入文檔中中,就可可能引起起重大的的問題。。過時(shí)的文文檔內(nèi)容容、索引引和文本本可能造造成沖突突,引起起用戶失失敗和不不滿。因此,必須在軟軟件交付付之前對對整個(gè)軟軟件配置置進(jìn)行評(píng)評(píng)審,以減少少文檔的的副作用用。為了控制因因修改而引引起的副作作用,要做做到:(1)按模塊把修修改分組;;(2)自頂向下地地安排被修修改模塊的的順序;(3)每次修改一一個(gè)模塊;;(4)對于每個(gè)修修改了的模模塊,在安安排修改下下一個(gè)模塊塊之前,要要確定這個(gè)個(gè)修改的副副作用??梢允褂媒唤徊嬉帽肀?、存儲(chǔ)映映象表、執(zhí)執(zhí)行流程跟跟蹤等。重新驗(yàn)證程程序在將修改后后的程序提提交用戶之之前,需要要進(jìn)行充分的確認(rèn)認(rèn)和測試,以保證整整個(gè)修改后后程序的正正確性。靜態(tài)態(tài)確確認(rèn)認(rèn)修改改軟軟件件,,伴伴隨隨著著引引起起新新的的錯(cuò)錯(cuò)誤誤的的危危險(xiǎn)險(xiǎn)。為為了了能能夠夠做做出出正正確確的的判判斷斷,,驗(yàn)驗(yàn)證證修修改改后后的的程程序序至至少少需需要要兩兩個(gè)個(gè)人人參參加加。。要要檢檢查查::(1)修改改是是否否涉涉及及到到規(guī)規(guī)格格說說明明?修改改結(jié)結(jié)果果是是否否符符合合規(guī)規(guī)格格說說明明?有沒沒有有歪歪曲曲規(guī)規(guī)格格說說明明?(2)程序的修改是是否足以修正正軟件中的問問題?源程序代碼有有無邏輯錯(cuò)誤誤?修改時(shí)有無修修補(bǔ)失誤?(3)修改部分對其其它部分有無無不良影響(副作用)?對軟件進(jìn)行修修改,常常會(huì)會(huì)引發(fā)別的問問題,有必要要檢查修改的的影響范圍。計(jì)算機(jī)確認(rèn)在進(jìn)行了以上上確認(rèn)的基礎(chǔ)礎(chǔ)上,用計(jì)算算機(jī)對修改程程序進(jìn)行確認(rèn)認(rèn)測試:(1)確認(rèn)測試順序序:先對修改部部分進(jìn)行測試試,然后隔離離修改部分,,測試程序的的未修改部分分,最后再把把它們集成起起來進(jìn)行測試試。這種測試試稱為回歸測測試。(2)準(zhǔn)備標(biāo)標(biāo)準(zhǔn)的的測試試用例例。(3)充分利利用軟軟件工工具幫幫助重重新驗(yàn)驗(yàn)證過過程。(4)在重新新確認(rèn)認(rèn)過程程中,,需邀邀請用用戶參參加。維護(hù)后后的驗(yàn)驗(yàn)收──在在交付付新軟軟件之之前,,維護(hù)護(hù)主管管部門門要檢檢驗(yàn)::(1)全部文文檔是是否完完備,,并已已更新新;(2)所有有測測試試用用例例和和測測試試結(jié)結(jié)果果已已經(jīng)經(jīng)正正確確記記載載;;(3)記錄錄軟軟件件配配置置所所有有副副本本的的工工作作已已經(jīng)經(jīng)完完成成;;(4)維護(hù)護(hù)工工序序和和責(zé)責(zé)任任已已經(jīng)經(jīng)確確定定。。從維維護(hù)護(hù)角角度度來來看看所所需需測測試試種種類類(1)對修改改事事務(wù)務(wù)的測測試試;;(2)對修改改程程序序的測測試試;;(3)操作作過過程程的測測試試;;(4)應(yīng)用用系系統(tǒng)統(tǒng)運(yùn)運(yùn)用用過過程程的測測試試;;(5)系統(tǒng)統(tǒng)各各部部分分之之間間接接口口的測試;;(6)作業(yè)控制制語言的測試;;(7)與系統(tǒng)軟軟件接口口的測試;;(8)軟件系統(tǒng)統(tǒng)之間接接口的測試;;(9)安全性測試;(10)后備/恢恢復(fù)過程程的測試。。8.4軟件可維維護(hù)性許多軟件件的維護(hù)護(hù)十分困困難,原原因在于于這些軟件的的文檔不不全、質(zhì)量差、開發(fā)過程程不注意意采用好好的方法法,忽視程序序設(shè)計(jì)風(fēng)風(fēng)格等。許多維護(hù)護(hù)要求并并不是因因?yàn)槌绦蛐蛑谐鲥e(cuò)錯(cuò)而提出出的,而而是為適應(yīng)環(huán)境境變化或需求變化化而提出的的。為了使得得軟件能能夠易于于維護(hù),,必須考考慮使軟軟件具有有可維護(hù)性性。軟件可維維護(hù)性的的定義軟件可維維護(hù)性是指糾正軟件件系統(tǒng)出出現(xiàn)的錯(cuò)錯(cuò)誤和缺缺陷,以以及為滿滿足新的的要求進(jìn)進(jìn)行修改改、擴(kuò)充充或壓縮縮的容易易程度。可維護(hù)性、可使用性、可靠性是衡量軟件質(zhì)質(zhì)量的主要質(zhì)質(zhì)量特性,也也是用戶十分分關(guān)心的幾個(gè)個(gè)方面。軟件的可維護(hù)性是軟件開發(fā)階段段各個(gè)時(shí)期的的關(guān)鍵目標(biāo)。目前廣泛使用用的是用如下下的七個(gè)特性性來衡量程序序的可維護(hù)性性??衫斫庑钥煽墒褂眯钥蓽y試性可可移植性可修改性效效率可靠性而且對于不同同類型的維護(hù)護(hù),這七種特特性的側(cè)重點(diǎn)點(diǎn)也不相同。在各類維護(hù)中中的側(cè)重點(diǎn)這些質(zhì)量特性性通常體現(xiàn)在在軟件產(chǎn)品的的許多方面;為使每一個(gè)質(zhì)質(zhì)量特性都達(dá)達(dá)到預(yù)定的要要求,需要在在軟件開發(fā)的的各個(gè)階段采采取相應(yīng)的措措施加以保證證。這些質(zhì)量要求求要滲透到而而各開發(fā)階段段的各個(gè)步驟驟當(dāng)中。因此,軟件件的可維護(hù)性性是產(chǎn)品投入入運(yùn)行以前各各階段面向上上述各質(zhì)量特特性要求進(jìn)行行開發(fā)的最終終結(jié)果??删S護(hù)性的度度量人們一直期望望對軟件的可維維護(hù)性做出定定量度量,但要做到這這一點(diǎn)并不容容易。常用的度量一一個(gè)可維護(hù)的的程序的七種種特性的方法法。就是質(zhì)量檢查表質(zhì)量測試質(zhì)量標(biāo)準(zhǔn)質(zhì)量檢查表是用于測試程程序中某些質(zhì)質(zhì)量特性是否否存在的一個(gè)個(gè)問題清單。。評(píng)價(jià)者針對檢檢查表上的每每一個(gè)問題,,依據(jù)自己的的定性判斷,,回答“Yes”或者“No”。質(zhì)量測試與質(zhì)量標(biāo)準(zhǔn)則用于定量分分析和評(píng)價(jià)程程序的質(zhì)量。。由于許多質(zhì)量量特性是相互互抵觸的,要要考慮幾種不同同的度量標(biāo)準(zhǔn)準(zhǔn),相應(yīng)地去度度量不同的質(zhì)質(zhì)量特性。1.可理解性可理解性表明明人們通過閱閱讀源代碼和和相關(guān)文檔,,了解程序功功能及其如何何運(yùn)行的容易易程度。一個(gè)可理解解的程序應(yīng)應(yīng)具備以下下一些特性性:模塊化,風(fēng)格一致性性,不使用令人人捉摸不定定或含糊不不清的代碼碼,使用有意義義的數(shù)據(jù)名名和過程名名,結(jié)構(gòu)化,完整整性性等。。2.可靠靠性性可靠靠性性表表明明一一個(gè)個(gè)程程序序按按照照用用戶戶的的要要求求和和設(shè)設(shè)計(jì)計(jì)目目標(biāo)標(biāo),,在在給給定定的的一一段段時(shí)時(shí)間間內(nèi)內(nèi)正正確確執(zhí)執(zhí)行行的的概概率率。。關(guān)于可靠靠性,度度量的標(biāo)標(biāo)準(zhǔn)主要要有:平均失效效間隔時(shí)時(shí)間MTTF平均修復(fù)復(fù)時(shí)間MTTR有效性A=MTBD/(MTBD+MDT)度量可靠靠性的方方法根據(jù)程序序錯(cuò)誤統(tǒng)統(tǒng)計(jì)數(shù)字字,進(jìn)行行可靠性性預(yù)測。常用方方法是利利用一些些可靠性模模型,根據(jù)程序序測試時(shí)時(shí)發(fā)現(xiàn)并并排除的的錯(cuò)誤數(shù)數(shù)預(yù)測平平均失效效間隔時(shí)時(shí)間MTTF。根據(jù)程序序復(fù)雜性性,預(yù)測測軟件可可靠性。
用程程序復(fù)雜雜性預(yù)測測可靠性性,前提條件件是可靠靠性與復(fù)復(fù)雜性有有關(guān)。因此可可用復(fù)雜雜性預(yù)測測出錯(cuò)率率。程序序復(fù)雜性性度量標(biāo)標(biāo)準(zhǔn)可用用于預(yù)測哪些些模塊最最可能發(fā)發(fā)生錯(cuò)誤誤,以及可能出現(xiàn)現(xiàn)的錯(cuò)誤誤類型。3.可測試性性可測試性性表明論論證程序序正確性性的容易易程度。程序越越簡單,,證明其其正確性性就越容容易。而而且設(shè)計(jì)計(jì)合用的的測試用用例,取取決于對對程序的的全面理理解。一個(gè)可測測試的程程序應(yīng)當(dāng)當(dāng)是可理解的的,可靠的,簡單的。用于可測測試性度度量的檢檢查項(xiàng)目目如下::程序是否否模塊化化?結(jié)構(gòu)是否否良好?程序是否否可理解解?程序是否否可靠?程序是否否能顯示示任意中中間結(jié)果果?程序是否否能以清清楚的方方式描述述它的輸輸出?程序是否否能及時(shí)時(shí)地按照照要求顯顯示所有有的輸入入?程序是否否有跟蹤蹤及顯示示邏輯控控制流程程的能力力?程序是否否能從檢檢查點(diǎn)再再啟動(dòng)?程序是否否能顯示示帶說明明的錯(cuò)誤誤信息?4.可修改性性可修改改性表表明程程序容容易修修改的的程度度。一個(gè)可可修改改的程程序應(yīng)應(yīng)當(dāng)是是可理解解的、通用的的、靈活的的、簡單的的。通用性性是指指程序序適用用于各各種功功能變變化而而無需需修改改。靈活性性是指指能夠夠容易易地對對程序序進(jìn)行行修改改。測試可可修改改性的的一種種定量量方法法是修改練練習(xí)。其基基本思思想是是通過做做幾個(gè)個(gè)簡單單的修修改,來評(píng)價(jià)價(jià)修改改的難難度。設(shè)C是程序序中各各個(gè)模模塊的的平均均復(fù)雜雜性,,n是必須須修改改的模模塊數(shù)數(shù),A是要修修改的的模塊塊的平平均復(fù)復(fù)雜性性。則則修修改的的難度度D由下式計(jì)計(jì)算:D=A/C5.可移植性性可移植性性表明程程序轉(zhuǎn)移移到一個(gè)個(gè)新的計(jì)計(jì)算環(huán)境境的可能能性的大大小?;蛘咚砻鞒坛绦蚩梢砸匀菀椎氐?、有效效地在各各種各樣樣的計(jì)算算環(huán)境中中運(yùn)行的的容易程程度。一個(gè)可移移植的程程序應(yīng)具具有結(jié)構(gòu)良好好、靈活、不依賴于于某一具具體計(jì)算算機(jī)或操操作系統(tǒng)統(tǒng)的性能能。用于可移移植性度度量的檢檢查項(xiàng)目目如下::是否是用用高級(jí)的的獨(dú)立于于機(jī)器的的語言來來編寫程程序?是否使用用廣泛使使用的標(biāo)標(biāo)準(zhǔn)化的的程序設(shè)設(shè)計(jì)語言言來編寫寫程序?是否僅使使用了這這種語言言的標(biāo)準(zhǔn)準(zhǔn)版本和和特性?程序中是是否使用用了標(biāo)準(zhǔn)準(zhǔn)的普遍遍使用的的庫功能能和子程程序?程序中是是否極少少使用或或根本不不使用操操作系統(tǒng)統(tǒng)的功能能?程序在執(zhí)執(zhí)行之前前是否初初始化內(nèi)內(nèi)存?程序在執(zhí)執(zhí)行之前前是否測測定當(dāng)前前的輸入入/輸出出設(shè)備?程序是否否把與機(jī)機(jī)器相關(guān)關(guān)的語句句分離了了出來,,集中放放在了一一些單獨(dú)獨(dú)的程序序模塊中中,并有有說明文文件?程序是否否結(jié)構(gòu)化化?并允許在在小一些些的計(jì)算算機(jī)上分分段(覆蓋)運(yùn)行?程序中是是否避免免了依賴賴于字母母數(shù)字或或特殊字字符的內(nèi)內(nèi)部位表表示?6.效率效率表明明一個(gè)程程序能執(zhí)執(zhí)行預(yù)定定功能而而又不浪浪費(fèi)機(jī)器器資源的的程度。這些機(jī)器器資源包包括內(nèi)存容量量、外存容量量、通道容量量和執(zhí)行時(shí)間間。用于效率率度量的的檢查項(xiàng)項(xiàng)目如下下:程序是否否模塊化化?結(jié)構(gòu)是否否良好?是否消除除了無用用的標(biāo)號(hào)號(hào)與表達(dá)達(dá)式,以以充分發(fā)發(fā)揮編譯譯器優(yōu)化化作用?程序的編編譯器是是否有優(yōu)優(yōu)化功能能?是否把特特殊子程程序和錯(cuò)錯(cuò)誤處理理子程序序都?xì)w入入了單獨(dú)獨(dú)的模塊塊中?是否以快快速的數(shù)數(shù)學(xué)運(yùn)算算代替了了較慢的的數(shù)學(xué)運(yùn)運(yùn)算?是否盡可可能地使使用了整整數(shù)運(yùn)算算,而不不是實(shí)數(shù)數(shù)運(yùn)算?是否在表表達(dá)式中中避免了了混合數(shù)數(shù)據(jù)類型型的使用用,消除除了不必必要的類類型轉(zhuǎn)換換?程序是否避免免了非標(biāo)準(zhǔn)的的函數(shù)或子程程序的調(diào)用?在幾條分支結(jié)結(jié)構(gòu)中,是否否最有可能為為“真”的分分支首先得到到測試?在復(fù)雜的邏輯輯條件中,是是否最有可能能為“真“的的表達(dá)式首先先得到測試?7.可使用性從用戶觀點(diǎn)出出發(fā),可使用性定義義為程序方便便、實(shí)用、及及易于使用的的程度。一個(gè)可使用用的程序應(yīng)是是易于使用的、能允許用戶出出錯(cuò)和改變,并盡可能不使用用戶陷入混亂亂狀態(tài)的程序。用于可使用性性度量的檢查查項(xiàng)目如下::程序是否具有有自描述性?程序是否能始始終如一地按按照用戶的要要求運(yùn)行?程序是否讓用用戶對數(shù)據(jù)處處理有一個(gè)滿滿意的和適當(dāng)當(dāng)?shù)目刂?程序是否容易易學(xué)會(huì)使用?程序是否使用用數(shù)據(jù)管理系系統(tǒng)來自動(dòng)地地處理事務(wù)性性工作和管理理格式化、地地址分配及存存儲(chǔ)器組織。。程序是否具有有容錯(cuò)性?程序是否靈活活?其它間接定量量度量可維護(hù)護(hù)性的方法問題識(shí)別的時(shí)時(shí)間;因管理活動(dòng)拖拖延的時(shí)間;;收集維護(hù)工具具的時(shí)間;分析、診斷問問題的時(shí)間;;修改規(guī)格說明明的時(shí)間;具體的改錯(cuò)或或修改的時(shí)間間;局部測試的時(shí)時(shí)間;集成或回歸測測試的時(shí)間;;維護(hù)的評(píng)審時(shí)時(shí)間;這些數(shù)據(jù)反映映了維護(hù)全過過程中檢錯(cuò)-糾錯(cuò)--驗(yàn)證的周期,即從檢測出軟件件存在的問題題開始至修正正它們并經(jīng)回回歸測試驗(yàn)證證這段時(shí)間。可以粗略地認(rèn)認(rèn)為,這個(gè)周期越短短,維護(hù)越容容易。8.5提高可維護(hù)性性的方法建立明確的軟軟件質(zhì)量目標(biāo)標(biāo)和優(yōu)先級(jí)使用提高軟件件質(zhì)量的技術(shù)術(shù)和工具進(jìn)行明確的質(zhì)質(zhì)量保證審查查選擇擇可可維維護(hù)護(hù)的的程程序序設(shè)設(shè)計(jì)計(jì)語語言言改進(jìn)進(jìn)程程序序的的文文檔檔建立立明明確確的的軟軟件件質(zhì)質(zhì)量量目目標(biāo)標(biāo)和和優(yōu)優(yōu)先先級(jí)級(jí)一個(gè)個(gè)可可維維護(hù)護(hù)的的程程序序應(yīng)應(yīng)是是可理理解解的的、可靠靠的的、可測測試試的的、可修修改改的的、可移移植植的的、效率率高高的的、可使使用用的的。要實(shí)實(shí)現(xiàn)現(xiàn)這這所所有有的的目目標(biāo)標(biāo),,需需要要付付出出很很大大的的代代價(jià)價(jià),,而而且且也也不不一一定定行行得得通通。。某些些質(zhì)質(zhì)量量特特性性是是相相互互促促進(jìn)進(jìn)的的,例如如可理理解性性和可可測試試性、、可理理解性性和可可修改改性。。另一些些質(zhì)量量特性性是相相互抵抵觸的的,如效效率和和可移移植性性、效效率和和可修修改性性等。。每一種種質(zhì)量特特性的相對重重要性性應(yīng)隨程程序的的用途途及計(jì)計(jì)算環(huán)環(huán)境的的不同同而不不同。例如如,對對編譯譯程序序來說說,可可能強(qiáng)強(qiáng)調(diào)效效率;;但對對管理理信息息系統(tǒng)統(tǒng)來說說,則則可能能強(qiáng)調(diào)調(diào)可使使用性性和可可修改改性。。應(yīng)當(dāng)對對程序序的質(zhì)質(zhì)量特特性,,在提出目目標(biāo)的同時(shí)時(shí)還必必須規(guī)定它它們的的優(yōu)先先級(jí)。使用提提高軟軟件質(zhì)質(zhì)量的的技術(shù)術(shù)和工工具模塊化化如果需需要改改變某某個(gè)模模塊的的功能能,則則只要要改變變這個(gè)個(gè)模塊塊,對對其它它模塊塊影響響很小??;如果需需要增增加程程序的的某些些功能能,則則僅需需增加加完成成這些些功能能的新新的模模塊或或模塊塊層;;程序的的測試試與重重復(fù)測測試比比較容容易;;程序錯(cuò)錯(cuò)誤易易于定定位和和糾正正;結(jié)構(gòu)化化程序序設(shè)計(jì)計(jì)程序被被劃分分成分分層的的模塊塊結(jié)構(gòu)構(gòu);模塊調(diào)調(diào)用控控制必必須從從模塊塊的入入口點(diǎn)點(diǎn)進(jìn)入入,從從其出出口點(diǎn)點(diǎn)退出出。模塊的控制制結(jié)構(gòu)僅限限于順序、、選擇、重重復(fù)三種,,且沒有GOTO語句。每個(gè)程序變變量只用于于唯一的程程序目的,,而且變量量的作用范范圍應(yīng)是明明確的、有有限制的。。使用結(jié)構(gòu)化化程序設(shè)計(jì)計(jì)技術(shù),提提高現(xiàn)有系系統(tǒng)的可維維護(hù)性采用備用件件的方法───用一個(gè)個(gè)新的結(jié)構(gòu)構(gòu)良好的模模塊替換掉掉整個(gè)要修修改的模塊塊。采用自動(dòng)重重建結(jié)構(gòu)和和重新格式式化的工具具(結(jié)構(gòu)更新技技術(shù))──把非結(jié)構(gòu)化化代碼轉(zhuǎn)換換成良好結(jié)結(jié)構(gòu)代碼。。改進(jìn)現(xiàn)有程程序的不完完善的文檔檔──建建立或補(bǔ)充充系統(tǒng)說明明書、設(shè)計(jì)計(jì)文檔、模模塊說明書書、以及在在源程序中中插入必要要的注釋。。進(jìn)行明確的的質(zhì)量保證證審查質(zhì)量保證審審查對于獲得和維持持軟件的質(zhì)質(zhì)量,是一個(gè)很很有用的技技術(shù)。審查可以用來檢測在開發(fā)發(fā)和維護(hù)階階段內(nèi)發(fā)生生的質(zhì)量變變化。一旦檢測出出問題來,,就可以采采取措施來來糾正,以以控制不斷斷增長的軟軟件維護(hù)成成本,延長長軟件系統(tǒng)統(tǒng)的有效生生命期。保證軟件質(zhì)質(zhì)量的最佳佳方法是在軟件開發(fā)發(fā)的最初階階段把質(zhì)量量要求考慮慮進(jìn)去,并在開發(fā)過程程每一階段段的終點(diǎn),設(shè)置檢查點(diǎn)點(diǎn)進(jìn)行檢查查。檢查的目的的是要證實(shí)實(shí),已開發(fā)發(fā)的軟件是否符合標(biāo)標(biāo)準(zhǔn),是否滿足規(guī)規(guī)定的質(zhì)量量需求。在不同的的檢查點(diǎn),,檢查的重重點(diǎn)不完全全相同。1.在檢查點(diǎn)進(jìn)進(jìn)行復(fù)審軟件開發(fā)期期間各個(gè)檢檢查點(diǎn)的檢檢查重點(diǎn)在設(shè)計(jì)階段段,檢查重重點(diǎn)是可理解性、可修改性、可測試性??衫斫庑詸z查的重點(diǎn)點(diǎn)是程序的復(fù)雜雜性。對每個(gè)模模塊可用McCabe環(huán)路來計(jì)算算模塊的復(fù)復(fù)雜性,若若大于10,則需重新新設(shè)計(jì)。可以使用各各種質(zhì)量特性檢檢查表,或用度量標(biāo)準(zhǔn)來檢查可維維護(hù)性。審查小組可可以采用人人工測試一一類的方式式,進(jìn)行審審查。2.驗(yàn)收檢查驗(yàn)收檢查是一個(gè)特殊的檢查查點(diǎn)的檢查,是是交付使用用前的最后一次檢檢查,驗(yàn)收檢查實(shí)際上是驗(yàn)收測試的一部分,,只不過它它是從維護(hù)護(hù)的角度提提出驗(yàn)收的的條件和標(biāo)標(biāo)準(zhǔn)。驗(yàn)收檢查必必須遵循的的最小驗(yàn)收收標(biāo)準(zhǔn)。(1)需求和規(guī)范范標(biāo)準(zhǔn)①需求應(yīng)當(dāng)以以可測試的的術(shù)語進(jìn)行行書寫,排排列優(yōu)先次次序和定義義;②區(qū)分必須的的、任選的的、將來的的需求;③包括對系統(tǒng)統(tǒng)運(yùn)行時(shí)的的計(jì)算機(jī)設(shè)設(shè)備的需求求;對維護(hù)護(hù)、測試、、操作、以以及維護(hù)人人員的需求求;對測試試工具等的的需求。(2)設(shè)計(jì)標(biāo)準(zhǔn)①程序應(yīng)設(shè)計(jì)計(jì)成分層的的模塊結(jié)構(gòu)構(gòu)。每個(gè)模模塊應(yīng)完成成唯一的功功能,并達(dá)達(dá)到高內(nèi)聚聚、低耦合合;②通過一些知知道預(yù)期變變化的實(shí)例例,說明設(shè)設(shè)計(jì)的可擴(kuò)擴(kuò)充性、可可縮減性和和可適應(yīng)性性。(3)源代碼標(biāo)標(biāo)準(zhǔn)①盡可可能使用用最高級(jí)級(jí)的程序序設(shè)計(jì)語語言,且且只使用用語言的的標(biāo)準(zhǔn)版版本;②所有的的代碼都必必須具有良良好的結(jié)構(gòu)構(gòu);③所有的的代碼都必必須文檔化化,在注釋釋中說明它它的輸入、、輸出、以以及便于測測試/再測測試的一些些特點(diǎn)與風(fēng)風(fēng)格。(4)文檔標(biāo)準(zhǔn)文檔中應(yīng)說說明程序的輸入入/輸出使用的方法法/算法錯(cuò)誤恢復(fù)方方法所有參數(shù)的的范圍缺省條件等等。3.周期性地維維護(hù)審查檢查點(diǎn)復(fù)查查和驗(yàn)收檢查,可用來保證新軟件件系統(tǒng)的可可維護(hù)性。對已有的軟軟件系統(tǒng),,則應(yīng)當(dāng)進(jìn)行周期性性的維護(hù)檢檢查。軟件在運(yùn)行行期間進(jìn)行行修改,會(huì)會(huì)導(dǎo)致軟件件質(zhì)量有變變壞的危險(xiǎn)險(xiǎn),破壞程程序概念的的完整性。。必須定期檢查,對軟件做做周期性的的維護(hù)審查查,以跟蹤軟件件質(zhì)量的變變化。周期性維護(hù)護(hù)審查實(shí)際上是開開發(fā)階段檢檢查點(diǎn)復(fù)查查的繼續(xù),,并且采用的檢查查方法、檢查查內(nèi)內(nèi)容容都都是是相相同同的的。維護(hù)護(hù)審審查查的的結(jié)結(jié)果果可以以同同以前前的的維維護(hù)護(hù)審審查查的的結(jié)結(jié)果果,以前前的的驗(yàn)驗(yàn)收收檢檢查查的的結(jié)結(jié)果果、檢查查點(diǎn)點(diǎn)檢檢查查的的結(jié)結(jié)果果相比比較較,,任任何何一一種種改改變變都都表表明明在在軟軟件件質(zhì)質(zhì)量量上上或或其其它它類類型型的的問問題題上上可可能能起起了了變變化化。。對于于改改變變的的原原因因應(yīng)應(yīng)當(dāng)當(dāng)進(jìn)進(jìn)行行分分析析。4.對軟軟件件包包進(jìn)進(jìn)行行檢檢查查軟件件包包是一一種種標(biāo)準(zhǔn)準(zhǔn)化化的,,可可為不不同同單單位位、不同同用用戶戶使使用用的軟軟件件。。一般般源代代碼碼和和程程序序文文檔檔不會(huì)會(huì)提提供供給給用用戶戶。。對軟軟件件包包的的維維護(hù)護(hù)采采取取以以下下方方法法。。使用用單單位位的的維維護(hù)護(hù)人人員員首首先先要要仔仔細(xì)細(xì)分分析析、、研研究究賣賣主主提提供供的的用用戶戶手手冊冊、、操操作作手手冊冊、、培培訓(xùn)訓(xùn)教教程程等等,,以以及及賣賣方方提提供供的的驗(yàn)驗(yàn)收收測測試試報(bào)報(bào)告告等等。。在此基礎(chǔ)礎(chǔ)上,深深入了解本單單位的希希望和要要求,編制軟件件包的檢檢驗(yàn)程序序。
檢查查軟件包包程序所所執(zhí)行的的功能是是否與用用戶的要要求和條條件相一一致。為了建立立這個(gè)程程序,維維護(hù)人員員可以利用賣方方提供的的驗(yàn)收測測試實(shí)例例,還可以以自己重新設(shè)設(shè)計(jì)新的的測試實(shí)實(shí)例。根據(jù)測試試結(jié)果,,檢查和和驗(yàn)證軟軟件包的的參數(shù)或或控制結(jié)結(jié)構(gòu),以以完成軟軟件包的的維護(hù)。。選擇可維維護(hù)的程程序設(shè)計(jì)計(jì)語言程序設(shè)計(jì)計(jì)語言的的選擇,,對程序序的可維維護(hù)性影影響很大大。機(jī)器語語言匯編語語言高級(jí)語語言查詢語語言(FORTRAN、報(bào)表生生成語語言COBOL等)圖象語語言應(yīng)用生生成語語言改進(jìn)程程序的的文檔檔程序文文檔是是對程程序總目標(biāo)標(biāo)、程序各各組成成部分分之間間的關(guān)關(guān)系、程序設(shè)設(shè)計(jì)策策略、程序?qū)崒?shí)現(xiàn)過過程的的歷史史數(shù)據(jù)據(jù)等的說說明和和補(bǔ)充充。即使是是一個(gè)個(gè)十分分簡單單的程程序,,要想想有效效地、、高效效率地地維護(hù)護(hù)它,,也需需要編編制文文檔來來解釋釋其目目的及及任務(wù)務(wù)。對于程程序維維護(hù)人人員來來說,,要想想按程序序編制制人員員的意意圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025遼寧沈陽市遼中區(qū)人民醫(yī)院及遼中區(qū)中醫(yī)院招聘編外人員95人筆試模擬試題及答案解析
- 教育教學(xué)質(zhì)量推進(jìn)會(huì)上校長講話:破局教育困境我校以“四維突破”戰(zhàn)略開辟新航道
- 小學(xué)二年級(jí)數(shù)學(xué)有余數(shù)的除法(2位數(shù)除以1位數(shù))水平測試習(xí)題
- 超市員工代表發(fā)言稿
- 三年級(jí)數(shù)學(xué)幾百幾十加減幾百幾十質(zhì)量監(jiān)控習(xí)題
- 車間員工獎(jiǎng)金分配方案(7篇)
- 洗煤廠述職報(bào)告
- 起重機(jī)械的安全
- 雙節(jié)期間安全教育工作
- 四年級(jí)數(shù)學(xué)上冊三位數(shù)除兩位數(shù)專項(xiàng)訓(xùn)練
- QMS審核知識(shí)試題附答案
- 創(chuàng)新思維及方法課件
- 建設(shè)工程合同糾紛-審判實(shí)務(wù)分析課件
- (完整word版)高考英語作文練習(xí)紙(標(biāo)準(zhǔn)答題卡)
- (完整版)Borg評(píng)分量表
- 代付農(nóng)民工工資委托付款書(模板)
- 哪吒鬧海閱讀訓(xùn)練題及答案
- 軟件開發(fā)管理辦法(完整版)
- 《等量代換》ppt(基礎(chǔ)教育)
- 自我探索價(jià)值觀講課稿
- 職業(yè)駕駛員職業(yè)心理和生理健康
評(píng)論
0/150
提交評(píng)論