[軟工導(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è),還剩62頁(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)介

1、1,第八章 軟 件 維 護(hù)普通人輕視軟件維護(hù)工作, 會(huì)失掉極其寶貴的機(jī)會(huì); 維護(hù)人員輕視軟件維護(hù)工作, 會(huì)失掉本應(yīng)精彩的人生; 老板輕視軟件維護(hù)工作, 會(huì)丟掉大片本來(lái)屬于自己的市場(chǎng),2,第八章 軟件維護(hù),8.1 軟件維護(hù)的定義 軟件維護(hù) - 就是在軟件已經(jīng)交付使用之后,為保證軟件在相當(dāng)長(zhǎng)的時(shí)期能夠正常運(yùn)作所進(jìn)行的軟件活動(dòng)。 維護(hù)的類(lèi)型有四種: 改正性維護(hù) 適應(yīng)性維護(hù) 擴(kuò)充與完善性維護(hù) 預(yù)防性維護(hù),3,改正性維護(hù) - Corrective Maintenance 在軟件交付使用后,因開(kāi)發(fā)時(shí)測(cè)試的不徹底、不完全,必然會(huì)有部分隱藏的錯(cuò)誤遺留到運(yùn)行階段。 這些隱藏下來(lái)的錯(cuò)誤在某些特定的使用環(huán)境下就會(huì)暴

2、露出來(lái)。 為了識(shí)別和糾正軟件錯(cuò)誤、改正軟件性能上的缺陷、排除實(shí)施中的誤使用,所進(jìn)行的診斷和改正錯(cuò)誤的過(guò)程就叫做改正性維護(hù)。,4,適應(yīng)性維護(hù) - Adaptive Maintenance,在使用過(guò)程中, 外部環(huán)境(新的硬、軟件配置) 數(shù)據(jù)環(huán)境(數(shù)據(jù)庫(kù)、數(shù)據(jù)格式、數(shù)據(jù)輸入/輸出方式、數(shù)據(jù)存儲(chǔ)介質(zhì)) 可能發(fā)生變化。 為使軟件適應(yīng)這種變化,而去修改軟件的過(guò)程就叫做適應(yīng)性維護(hù)。,5,擴(kuò)充與完善性維護(hù) - Perfective Maintenance,在軟件的使用過(guò)程中,用戶(hù)往往會(huì)對(duì)軟件提出新的功能與性能要求。 為了滿(mǎn)足這些要求,需要修改或再開(kāi)發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的

3、可維護(hù)性。 這種情況下進(jìn)行的維護(hù)活動(dòng)叫做擴(kuò)充與完善性維護(hù)。,6,預(yù)防性維護(hù) - Preventive Maintenance,預(yù)防性維護(hù)是為了提高軟件的可維護(hù)性、可靠性等,為以后進(jìn)一步改進(jìn)軟件打下良好基礎(chǔ)。 預(yù)防性維護(hù)定義為:采用先進(jìn)的軟件工程方法對(duì)需要維護(hù)的軟件或軟件中的某一部分(重新)進(jìn)行設(shè)計(jì)、編制和測(cè)試。,7,各種維護(hù)所占比例:,其它維護(hù) 4 %,適應(yīng)性維護(hù) 18% 25%,改正性維護(hù) 17% 21%,擴(kuò)充與完善性維護(hù) 50% 66%,8,8.2 軟件維護(hù)的特點(diǎn) - 影響維護(hù)工作量的因素,系統(tǒng)大?。合到y(tǒng)越大,理解掌握起來(lái)越困難。系統(tǒng)越大,所執(zhí)行功能越復(fù)雜。因而需要更多的維護(hù)工作量。 程序

4、設(shè)計(jì)語(yǔ)言:使用強(qiáng)功能的程序設(shè)計(jì)語(yǔ)言可以控制程序的規(guī)模。語(yǔ)言的功能越強(qiáng),生成程序的模塊化和結(jié)構(gòu)化程度越高,所需的指令數(shù)就越少,程序的可讀性越好。,9,系統(tǒng)年齡: 老系統(tǒng)隨著不斷的修改,結(jié)構(gòu)越來(lái)越亂; 維護(hù)人員經(jīng)常更換,程序又變得越來(lái)越難于理解 許多老系統(tǒng)在當(dāng)初并未按照軟件工程的要求進(jìn)行開(kāi)發(fā),因而沒(méi)有文檔,或文檔太少。 在長(zhǎng)期的維護(hù)過(guò)程中文檔在許多地方與程序?qū)崿F(xiàn)變得不一致,在維護(hù)時(shí)就會(huì)遇到很大困難。 數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用:使用數(shù)據(jù)庫(kù),可以簡(jiǎn)單而有效地管理和存儲(chǔ)用戶(hù)程序中的數(shù)據(jù),還可以減少生成用戶(hù)報(bào)表應(yīng)用軟件的維護(hù)工作量。,10,先進(jìn)的軟件開(kāi)發(fā)技術(shù):在軟件開(kāi)發(fā)時(shí),若使用能使軟件結(jié)構(gòu)比較穩(wěn)定的分析與設(shè)計(jì)技

5、術(shù),及程序設(shè)計(jì)技術(shù),如面向?qū)ο蠹夹g(shù)、復(fù)用技術(shù)等,可減少大量的工作量。 其它: 應(yīng)用的類(lèi)型 數(shù)學(xué)模型 任務(wù)的難度 開(kāi)關(guān)與標(biāo)記、IF嵌套深度、索引或下標(biāo)數(shù)等 對(duì)維護(hù)工作量都有影響。 許多軟件在開(kāi)發(fā)時(shí)并未考慮將來(lái)的修改,為軟件的維護(hù)帶來(lái)許多問(wèn)題。,11,維護(hù)成本,有形的軟件維護(hù)成本是花費(fèi)了多少錢(qián),無(wú)形的維護(hù)成本有更大的影響。 可用的資源必須供維護(hù)任務(wù)使用,以致耽誤甚至喪失開(kāi)發(fā)的良機(jī); 一些合理的修復(fù)或修改請(qǐng)求不能及時(shí)安排,使得客戶(hù)不滿(mǎn)意; 變更的結(jié)果引入新的故障,使得軟件整體質(zhì)量下降; 把軟件人員抽調(diào)到維護(hù)工作中,干擾了軟件開(kāi)發(fā)工作。,12,維護(hù)工作量的模型,M 是維護(hù)中消耗的總工作量 P 是生產(chǎn)性

6、工作量 K 是一個(gè)經(jīng)驗(yàn)常數(shù) c 是因缺乏好的設(shè)計(jì)和文檔而導(dǎo)致復(fù)雜性的度量 d 是維護(hù)人員對(duì)軟件熟悉程度的度量 模型指明,如果使用了不好的軟件開(kāi)發(fā)方法(未按軟件工程要求做),原來(lái)參加開(kāi)發(fā)的人員或小組不能參加維護(hù),則工作量(及成本)將按指數(shù)級(jí)增加。,13,8.2.3 維護(hù)中的典型問(wèn)題,(1) 難以跟蹤軟件版本的進(jìn)化過(guò)程,軟件的變化未在文檔中反映出來(lái). (2) 難以跟蹤軟件的創(chuàng)建過(guò)程. (3) 難以讀懂他人程序. (4) 無(wú)文檔或不全. (5) 軟件人員流動(dòng)性大. (6) 設(shè)計(jì)時(shí)未考慮修改需要,修改困難. 維護(hù)工作無(wú)吸引力,缺乏成就感. 采用軟件工程方法至少可部分地解決與維護(hù)有關(guān)的每一個(gè)問(wèn)題。,14

7、,8.3 軟件維護(hù)過(guò)程,維護(hù)過(guò)程本質(zhì)上是修改和壓縮了的軟件定義和開(kāi)發(fā)過(guò)程,而且事實(shí)上遠(yuǎn)在提出一項(xiàng)維護(hù)要求之前,與軟件維護(hù)有關(guān)的工作已經(jīng)開(kāi)始了。 為了有效地進(jìn)行軟件維護(hù),應(yīng)事先就開(kāi)始做組織工作。 首先建立維護(hù)的機(jī)構(gòu) 申明提出維護(hù)申請(qǐng)報(bào)告的過(guò)程及評(píng)價(jià)的過(guò)程 為每一個(gè)維護(hù)申請(qǐng)規(guī)定標(biāo)準(zhǔn)的處理步驟 建立維護(hù)活動(dòng)的記錄保管,并規(guī)定復(fù)審的標(biāo)準(zhǔn),15,1、維護(hù)機(jī)構(gòu),除了較大的軟件開(kāi)發(fā)公司外,通常在軟件維護(hù)工作方面,并不保持一個(gè)正式的組織機(jī)構(gòu)。 雖然不要求建立一個(gè)正式的維護(hù)機(jī)構(gòu),但是在開(kāi)發(fā)部門(mén)確立一個(gè)非正式的維護(hù)機(jī)構(gòu)則是非常必要的。,16,每個(gè)維護(hù)要求都通過(guò)維護(hù)管理員轉(zhuǎn)交給相應(yīng)的系統(tǒng)管理員去評(píng)價(jià)(系統(tǒng)管理員是被

8、指定去熟悉一小部分產(chǎn)品程序的技術(shù)人員)。 系統(tǒng)管理員對(duì)維護(hù)任務(wù)做出評(píng)價(jià)之后,由變化授權(quán)人決定應(yīng)該進(jìn)行的活動(dòng)。,17,2. 維護(hù)報(bào)告 應(yīng)該用標(biāo)準(zhǔn)化的格式表達(dá)所有軟件維護(hù)申請(qǐng)(要求)。 維護(hù)申請(qǐng)報(bào)告或稱(chēng)軟件問(wèn)題報(bào)告,由申請(qǐng)維護(hù)的用戶(hù)填寫(xiě)。 用戶(hù)必須完整地說(shuō)明產(chǎn)生錯(cuò)誤的情況,包括輸入數(shù)據(jù)、錯(cuò)誤清單以及其它有關(guān)材料。 如果申請(qǐng)的是適應(yīng)性維護(hù)或完善性維護(hù),用戶(hù)必須提出一份修改說(shuō)明書(shū),列出所有希望的修改。,18,維護(hù)申請(qǐng)報(bào)告將由維護(hù)管理員和系統(tǒng)管理員來(lái)研究處理。 他們應(yīng)相應(yīng)地做出軟件修改報(bào)告,指明: 所需修改變動(dòng)的性質(zhì); 申請(qǐng)修改的優(yōu)先級(jí); 為滿(mǎn)足某個(gè)維護(hù)申請(qǐng)報(bào)告,所需的工作量 預(yù)計(jì)修改后的狀況. 軟件修

9、改報(bào)告應(yīng)提交給變化授權(quán)人(修改負(fù)責(zé)人),經(jīng)批準(zhǔn)后才能開(kāi)始進(jìn)一步安排維護(hù)工作。,19,3. 維護(hù)的事件流,20,盡管維護(hù)申請(qǐng)的類(lèi)型不同,但都要進(jìn)行同樣的技術(shù)工作。 修改軟件需求說(shuō)明 修改軟件設(shè)計(jì) 設(shè)計(jì)評(píng)審 對(duì)源程序做必要的修改 單元測(cè)試 集成測(cè)試( 回歸測(cè)試) 確認(rèn)測(cè)試 軟件配置評(píng)審等。,21,在每次軟件維護(hù)任務(wù)完成后進(jìn)行情況評(píng)審,對(duì)以下問(wèn)題做一總結(jié):(1) 在目前情況下,設(shè)計(jì)、編碼、測(cè)試中的哪一方面可以改進(jìn)?(2) 哪些維護(hù)資源應(yīng)該有但沒(méi)有?(3) 工作中主要的或次要的障礙是什么?(4) 從維護(hù)申請(qǐng)的類(lèi)型來(lái)看是否應(yīng)當(dāng)有預(yù)防性維護(hù)?情況評(píng)審對(duì)將來(lái)的維護(hù)工作如何進(jìn)行會(huì)產(chǎn)生重要的影響。,22,4、維

10、護(hù)檔案記錄,程序標(biāo)識(shí); 源語(yǔ)句數(shù); 機(jī)器指令條數(shù); 使用的程序設(shè)計(jì)語(yǔ)言; 程序安裝的日期; 自從安裝以來(lái)程序運(yùn)行的次數(shù); 自從安裝以來(lái)程序失效的次數(shù); 程序變動(dòng)的層次和標(biāo)識(shí); 因程序變動(dòng)而增加的源語(yǔ)句數(shù);, 因程序變動(dòng)而刪除的源語(yǔ)句數(shù); 每個(gè)改動(dòng)耗費(fèi)的人時(shí)數(shù); 程序改動(dòng)的日期; 軟件工程師的名字; 維護(hù)要求表的標(biāo)識(shí); 維護(hù)類(lèi)型; 維護(hù)開(kāi)始和完成的日期; 累計(jì)用于維護(hù)的人時(shí)數(shù); 與完成的維護(hù)相聯(lián)系的純效益。,23,5、維護(hù)評(píng)價(jià),評(píng)價(jià)維護(hù)活動(dòng)比較困難,因?yàn)槿狈煽康臄?shù)據(jù)。 如果維護(hù)的檔案記錄做得比較好,可以得出一些維護(hù)“性能”方面的度量值。 (1) 每次程序運(yùn)行平均失效的次數(shù); (2) 用于每一類(lèi)

11、維護(hù)活動(dòng)的總?cè)藭r(shí)數(shù); (3) 平均每個(gè)程序、每種語(yǔ)言、每種維護(hù)類(lèi)型所做的程序變動(dòng)數(shù); (4) 維護(hù)過(guò)程中增加或刪除一個(gè)源語(yǔ)句平均花費(fèi)的人時(shí)數(shù); (5) 維護(hù)每種語(yǔ)言平均花費(fèi)的人時(shí)數(shù); (6) 一張維護(hù)要求表的平均周轉(zhuǎn)時(shí)間; (7) 不同維護(hù)類(lèi)型所占的百分比。 根據(jù)對(duì)維護(hù)工作定量度量的結(jié)果,可以做出關(guān)于開(kāi)發(fā)技術(shù)、語(yǔ)言選擇、維護(hù)工作量規(guī)劃、資源分配及其他許多方面的決定,而且可以利用這樣的數(shù)據(jù)去分析評(píng)價(jià)維護(hù)任務(wù)。,24,程序修改的步驟及修改的副作用,在軟件維護(hù)時(shí),必然會(huì)對(duì)源程序進(jìn)行修改。 通常對(duì)源程序的修改不能無(wú)計(jì)劃地倉(cāng)促上陣,為了正確、有效地修改,需要經(jīng)歷以下三個(gè)步驟。 分析和理解程序 修改程序

12、重新驗(yàn)證程序,25,分析和理解程序,經(jīng)過(guò)分析,全面、準(zhǔn)確、迅速地理解程序是決定維護(hù)成敗和質(zhì)量好壞的關(guān)鍵。在這方面,軟件的可理解性和文檔的質(zhì)量非常重要。 理解程序的功能和目標(biāo); 掌握程序的結(jié)構(gòu)信息,即從程序中細(xì)分出若干結(jié)構(gòu)成分。如程序系統(tǒng)結(jié)構(gòu)、 控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)和輸入輸出結(jié)構(gòu)等;,26,了解數(shù)據(jù)流信息,即涉及到的數(shù)據(jù)來(lái)源何處,在哪里被使用; 了解控制流信息,即執(zhí)行每條路徑的結(jié)果; 理解程序的操作(使用)要求; 為了容易地理解程序,要求自頂向下地理解現(xiàn)有源程序的程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),為此可采用如下幾種方法:,27,1. 分析程序結(jié)構(gòu)圖(1) 搜集所有存儲(chǔ)該程序的文件,閱讀這些文件,記下它們包含的過(guò)

13、程名,建立一個(gè)包括這些過(guò)程名和文件名的清單;(2) 分析各個(gè)過(guò)程的源代碼,建立一個(gè)直接調(diào)用矩陣D或調(diào)用樹(shù)。若過(guò)程 i 調(diào)用過(guò)程 j,則Dij1,否則Dij0。,28,(3) 建立過(guò)程的間接調(diào)用矩陣I,即直接調(diào)用矩陣D的傳遞閉包 ID1D2D3Dn 其中,n是所包含的過(guò)程總數(shù).例如,過(guò)程 i 調(diào)用 j,j 調(diào)用 k, 則 Dij1,Djk1, Iik1。(4) 分析各個(gè)過(guò)程的接口,估計(jì)更改的復(fù)雜性。,29,2. 數(shù)據(jù)跟蹤(1) 建立各層次的程序級(jí)上的接口圖,展示各模塊或過(guò)程的調(diào)用方式和接口參數(shù);(2) 利用數(shù)據(jù)流分析方法,對(duì)過(guò)程內(nèi)部的一些變量進(jìn)行跟蹤。可獲得有關(guān)數(shù)據(jù)在過(guò)程間如何傳遞,在過(guò)程內(nèi)如何

14、處理等信息。對(duì)于判斷問(wèn)題原因特別有用。在跟蹤的過(guò)程中可在源程序中間插入自己的注釋。,30,3. 控制跟蹤 控制流跟蹤可采用符號(hào)執(zhí)行或?qū)嶋H動(dòng)態(tài)跟蹤的方法,了解數(shù)據(jù)如何從一個(gè)輸入源到達(dá)輸出點(diǎn)的。 4. 充分閱讀和使用源程序清單和文檔,分析現(xiàn)有文檔的合理性。 5. 充分使用由編譯程序或匯編程序提供的交叉引用表、符號(hào)表、以及其它有用的信息。 6. 如有可能,積極參加開(kāi)發(fā)工作。,31,修改程序,對(duì)程序的修改,必須事先做出計(jì)劃,有預(yù)謀地、周密有效地實(shí)施修改。 1. 設(shè)計(jì)程序的修改計(jì)劃 程序的修改計(jì)劃要考慮人員和資源的安排。小的修改可以不需要詳細(xì)的計(jì)劃,而對(duì)于需要耗時(shí)數(shù)月的修改,就需要計(jì)劃立案。,32,在編

15、寫(xiě)有關(guān)問(wèn)題解決的方案時(shí),必須充分描述修改作業(yè)的規(guī)格說(shuō)明。 規(guī)格說(shuō)明信息:數(shù)據(jù)修改、處理修改、作業(yè)控制語(yǔ)言修改、系統(tǒng)之間接口的修改等; 維護(hù)資源:新程序版本、測(cè)試數(shù)據(jù)、所需軟件、計(jì)算機(jī)時(shí)間等; 人員; 支持:紙面、計(jì)算機(jī)媒體等。,33,通常,可采用自頂向下的方法,在理解程序的基礎(chǔ)上,(1) 研究程序的各個(gè)模塊、模塊的接口、及數(shù)據(jù)庫(kù),從全局的觀點(diǎn),提出修改計(jì)劃。 (2) 依次地把要修改的、以及那些受修改影響的模塊和數(shù)據(jù)結(jié)構(gòu)分離出來(lái)。為此,要 識(shí)別受修改影響的數(shù)據(jù); 識(shí)別使用這些數(shù)據(jù)的程序模塊;,34, 對(duì)于上面程序模塊,按是產(chǎn)生數(shù)據(jù)、修改數(shù)據(jù)、還是刪除數(shù)據(jù)進(jìn)行分類(lèi); 識(shí)別對(duì)這些數(shù)據(jù)元素的外部控制信

16、息; 識(shí)別編輯和檢查這些數(shù)據(jù)元素的地方; 隔離要修改的部分;,35,(3) 詳細(xì)地分析要修改的、以及那些受變更影響的模塊和數(shù)據(jù)結(jié)構(gòu)的內(nèi)部細(xì)節(jié),設(shè)計(jì)修改計(jì)劃,標(biāo)明新邏輯及要改動(dòng)的現(xiàn)有邏輯。 (4) 向用戶(hù)提供回避措施。用戶(hù)的某些業(yè)務(wù)因軟件中發(fā)生問(wèn)題而中斷,為不讓系統(tǒng)長(zhǎng)時(shí)間停止運(yùn)行,需把問(wèn)題局部化,在可能的范圍內(nèi)繼續(xù)開(kāi)展業(yè)務(wù)。 可以采取的措施有:,36, 查找問(wèn)題原因,可能情況有: 意外停機(jī) 安裝的期限到期 系統(tǒng)運(yùn)行中發(fā)現(xiàn)錯(cuò)誤 如果弄清了問(wèn)題的原因,可通過(guò)臨時(shí)修改或改變運(yùn)行控制以回避在系統(tǒng)運(yùn)行時(shí)產(chǎn)生的問(wèn)題。,37,2. 修改代碼,以適應(yīng)變化在修改時(shí),要求: (1) 正確、有效地編寫(xiě)修改代碼;(2)

17、 要謹(jǐn)慎地修改程序,盡量保持程序的風(fēng)格及格式,要在程序清單上注明改動(dòng)的指令;(3) 不要?jiǎng)h除程序語(yǔ)句,除非完全肯定它是無(wú)用的;(4) 不要試圖共用程序中已有的臨時(shí)變量或工作區(qū),為了避免沖突或混淆用途,應(yīng)設(shè)置自己的變量;,38,(5) 插入錯(cuò)誤檢測(cè)語(yǔ)句;(6) 在修改過(guò)程中做好修改的詳細(xì)記錄,消除變更中任何有害的副作用(波動(dòng)效應(yīng)); 3. 修改程序的副作用 所謂副作用是指因修改軟件而造成的錯(cuò)誤或其它不希望發(fā)生的情況。副作用有三種:修改代碼的副作用、修改數(shù)據(jù)的副作用、文檔的副作用。,39,在修改源代碼時(shí),都可能引入錯(cuò)誤。例如,刪除或修改一個(gè)子程序、刪除或修改一個(gè)標(biāo)號(hào)、 刪除或修改一個(gè)標(biāo)識(shí)符、改變程

18、序代碼的時(shí)序關(guān)系、改變占用存儲(chǔ)的大小、改變邏輯運(yùn)算符、修改文件的打開(kāi)或關(guān)閉、改進(jìn)程序的執(zhí)行效率,以及把設(shè)計(jì)上的改變翻譯成代碼的改變時(shí),都容易引入錯(cuò)誤。,(1) 修改代碼的副作用,40,(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é)果。 容易導(dǎo)致設(shè)計(jì)與數(shù)據(jù)不相容的錯(cuò)誤可以有: 重新定義局部的或全局的常量,41,重新定義記錄或文件的格式 增大或減小一個(gè)數(shù)組或高層數(shù)據(jù)結(jié)構(gòu)的大小 修改全局或公共數(shù)據(jù) 重新初始化控制標(biāo)志或指針 重新排列輸入輸出或子程序的參數(shù) 數(shù)據(jù)副作用可以通過(guò)交叉引用表加以控制。把數(shù)據(jù)元素、記錄

19、、文件和其它結(jié)構(gòu)聯(lián)系起來(lái)。,42,(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)。,43,如果對(duì)可執(zhí)行軟件的修改不反映在文檔里,就會(huì)產(chǎn)生文檔的副作用。 對(duì)交互輸入的順序或格式進(jìn)行修改,如果沒(méi)有正確地記入文檔中,就可能引起重大的問(wèn)題。 過(guò)時(shí)的文檔內(nèi)容、索引和文本可能造成沖突,引起用戶(hù)失敗和不滿(mǎn)。 因此,必須在軟件交付之前對(duì)整個(gè)軟件配置進(jìn)行評(píng)審,以減少文檔的副作用。,44,為了控制因修改而引起的副作用,要做到:(1) 按模塊把修

20、改分組;(2) 自頂向下地安排被修改模塊的順序;(3) 每次修改一個(gè)模塊;(4) 對(duì)于每個(gè)修改了的模塊,在安排修改下一個(gè)模塊之前,要確定這個(gè)修改的副作用??梢允褂媒徊嬉帽?、存儲(chǔ)映象表、執(zhí)行流程跟蹤等。,45,重新驗(yàn)證程序,在將修改后的程序提交用戶(hù)之前,需要進(jìn)行充分的確認(rèn)和測(cè)試,以保證整個(gè)修改后程序的正確性。 靜態(tài)確認(rèn)修改軟件,伴隨著引起新的錯(cuò)誤的危險(xiǎn)。為了能夠做出正確的判斷,驗(yàn)證修改后的程序至少需要兩個(gè)人參加。要檢查:,46,(1) 修改是否涉及到規(guī)格說(shuō)明? 修改結(jié)果是否符合規(guī)格說(shuō)明? 有沒(méi)有歪曲規(guī)格說(shuō)明?(2) 程序的修改是否足以修正軟件中的問(wèn)題? 源程序代碼有無(wú)邏輯錯(cuò)誤? 修改時(shí)有無(wú)修補(bǔ)

21、失誤?(3) 修改部分對(duì)其它部分有無(wú)不良影響(副作用)?對(duì)軟件進(jìn)行修改,常常會(huì)引發(fā)別的問(wèn)題,有必要檢查修改的影響范圍。,47,計(jì)算機(jī)確認(rèn)在進(jìn)行了以上確認(rèn)的基礎(chǔ)上,用計(jì)算機(jī)對(duì)修改程序進(jìn)行確認(rèn)測(cè)試:(1) 確認(rèn)測(cè)試順序:先對(duì)修改部分進(jìn)行測(cè)試,然后隔離修改部分,測(cè)試程序的未修改部分,最后再把它們集成起來(lái)進(jìn)行測(cè)試。這種測(cè)試稱(chēng)為回歸測(cè)試。 (2) 準(zhǔn)備標(biāo)準(zhǔn)的測(cè)試用例。(3) 充分利用軟件工具幫助重新驗(yàn)證過(guò)程。,48,(4) 在重新確認(rèn)過(guò)程中,需邀請(qǐng)用戶(hù)參加。 維護(hù)后的驗(yàn)收在交付新軟件之前,維護(hù)主管部門(mén)要檢驗(yàn):(1) 全部文檔是否完備,并已更新;(2) 所有測(cè)試用例和測(cè)試結(jié)果已經(jīng)正確記載;(3) 記錄軟件

22、配置所有副本的工作已經(jīng)完成;(4) 維護(hù)工序和責(zé)任已經(jīng)確定。,49,從維護(hù)角度來(lái)看所需測(cè)試種類(lèi),(1) 對(duì)修改事務(wù)的測(cè)試; (2) 對(duì)修改程序的測(cè)試; (3) 操作過(guò)程的測(cè)試; (4) 應(yīng)用系統(tǒng)運(yùn)用過(guò)程的測(cè)試; (5) 系統(tǒng)各部分之間接口的測(cè)試; (6) 作業(yè)控制語(yǔ)言的測(cè)試; (7) 與系統(tǒng)軟件接口的測(cè)試;,50,(8) 軟件系統(tǒng)之間接口的測(cè)試; (9) 安全性測(cè)試; (10) 后備恢復(fù)過(guò)程的測(cè)試。,51,8.4 軟件的可維護(hù)性,許多軟件的維護(hù)十分困難,原因在于這些軟件的文檔不全、質(zhì)量差、開(kāi)發(fā)過(guò)程不注意采用好的方法,忽視程序設(shè)計(jì)風(fēng)格等。 許多維護(hù)要求并不是因?yàn)槌绦蛑谐鲥e(cuò)而提出的,而是為適應(yīng)環(huán)境

23、變化或需求變化而提出的。 為了使得軟件能夠易于維護(hù),必須考慮使軟件具有可維護(hù)性。 軟件可維護(hù)性是指糾正軟件系統(tǒng)出現(xiàn)的錯(cuò)誤和缺陷,以及為滿(mǎn)足新的要求進(jìn)行修改、擴(kuò)充或壓縮的容易程度。,52,8.4.1 決定軟件可維護(hù)性的因素,1. 可理解性 表現(xiàn)為外來(lái)讀者理解軟件的結(jié)構(gòu)、功能、接口和內(nèi)部處理過(guò)程的難易程度。 模塊化(模塊結(jié)構(gòu)良好,高內(nèi)聚,松耦合)、詳細(xì)的設(shè)計(jì)文檔、結(jié)構(gòu)化設(shè)計(jì)、程序內(nèi)部的文檔和良好的高級(jí)程序設(shè)計(jì)語(yǔ)言等等,都對(duì)提高軟件的可理解性有重要貢獻(xiàn)。 2. 可測(cè)試性 診斷和測(cè)試的容易程度取決于軟件容易理解的程度。軟件結(jié)構(gòu)、可用的測(cè)試工具和調(diào)試工具,以及以前設(shè)計(jì)的測(cè)試過(guò)程也都是非常重要的,53,8

24、.4.1 決定軟件可維護(hù)性的因素,3. 可修改性(和第五章設(shè)計(jì)原理和啟發(fā)規(guī)則直接有關(guān),p100-) 4. 可移植性 把程序從一種計(jì)算機(jī)環(huán)境(硬件配置和操作系統(tǒng))轉(zhuǎn)移到 另一種計(jì)算環(huán)境的難易程度. 5. 可重用性 指同一事物不做修改或稍加改動(dòng)就在不同的環(huán)境中多次 重復(fù)使用.,54,8.4.2 文 檔,文檔是影響軟件可維護(hù)性的決定因素。往往文檔比程序代碼更重要。 軟件系統(tǒng)的文檔可以分為用戶(hù)文檔和系統(tǒng)文檔兩類(lèi)。 - 用戶(hù)文檔主要描述系統(tǒng)功能和使用 方法,并不關(guān)心這些功能是怎樣實(shí)現(xiàn)的; - 系統(tǒng)文檔描述系統(tǒng)設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試等各方面的內(nèi)容。,55,軟件文檔應(yīng)該滿(mǎn)足下述要求: (1) 必須描述如何使用這個(gè)

25、系統(tǒng),沒(méi)有這種描述時(shí)即使是最簡(jiǎn)單的系統(tǒng)也無(wú)法使用; (2) 必須描述怎樣安裝和管理這個(gè)系統(tǒng); (3) 必須描述系統(tǒng)需求和設(shè)計(jì); (4) 必須描述系統(tǒng)的實(shí)現(xiàn)和測(cè)試,以便使系統(tǒng)成為可維護(hù)的。,56,1. 用戶(hù)文檔 用戶(hù)文檔是用戶(hù)了解系統(tǒng)的第一步,它應(yīng)該能使用戶(hù)獲得對(duì)系統(tǒng)的準(zhǔn)確的初步印象。文檔的結(jié)構(gòu)方式應(yīng)該使用戶(hù)能夠方便地根據(jù)需要閱讀有關(guān)的內(nèi)容。 用戶(hù)文檔至少應(yīng)該包括下述5方面的內(nèi)容: (1) 功能描述; (2) 安裝文檔; (3) 使用手冊(cè); (4) 參考手冊(cè); (5) 操作員指南(如果需要有系統(tǒng)操作員的話(huà)) 。 上述內(nèi)容可以分別作為獨(dú)立的文檔, 也可以作為一個(gè)文檔的不同分冊(cè), 具體做法應(yīng)該由系統(tǒng)

26、規(guī)模決定。,57,2. 系統(tǒng)文檔 - 所謂系統(tǒng)文檔指從問(wèn)題定義、需求說(shuō)明到驗(yàn)收測(cè)試計(jì)劃這樣一系列和系統(tǒng)實(shí)現(xiàn)有關(guān)的文檔。 - 描述系統(tǒng)設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試的文檔對(duì)于理解程序和維護(hù)程序來(lái)說(shuō)是極端重要的。 - 和用戶(hù)文檔類(lèi)似,系統(tǒng)文檔的結(jié)構(gòu)也應(yīng)該能把讀者從對(duì)系統(tǒng)概貌的了解,引導(dǎo)到對(duì)系統(tǒng)每個(gè)方面每個(gè)特點(diǎn)的更形式化更具體的認(rèn)識(shí)。,58,8.4.3 提高可維護(hù)性的方法,建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級(jí) 使用提高軟件質(zhì)量的技術(shù)和工具 進(jìn)行明確的質(zhì)量保證審查 選擇可維護(hù)的程序設(shè)計(jì)語(yǔ)言 改進(jìn)程序的文檔,59,8.4.4 可維護(hù)性復(fù)審,在軟件工程過(guò)程的每一個(gè)階段都應(yīng)該考慮并努力提高軟件的可維護(hù)性,在每個(gè)階段結(jié)束前的技術(shù)審查和管理復(fù)審中,應(yīng)該著重對(duì)可維護(hù)性進(jìn)行復(fù)審。,60,在完成了每項(xiàng)維護(hù)工作之后,都應(yīng)該對(duì)軟件維護(hù)本身進(jìn)行仔細(xì)認(rèn)真的復(fù)審。 - 維護(hù)應(yīng)該針對(duì)整個(gè)軟件配置,不應(yīng)該只修改源程序代碼。當(dāng)對(duì)源程序代碼的修改沒(méi)有反映在設(shè)計(jì)文檔或用戶(hù)手冊(cè)中時(shí),就會(huì)產(chǎn)生嚴(yán)重的后果。 - 每當(dāng)對(duì)數(shù)據(jù)、軟件結(jié)構(gòu)、模

溫馨提示

  • 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)論