《軟件工程基礎(chǔ)》全套PPT課件
《軟件工程基礎(chǔ)》全套PPT課件,軟件工程基礎(chǔ),軟件工程,基礎(chǔ),全套,PPT,課件
12.1 軟件維護(hù)的概念軟件維護(hù)的定義軟件維護(hù)的定義 軟件維護(hù)軟件維護(hù)是指在軟件運(yùn)行是指在軟件運(yùn)行/維護(hù)階段對(duì)軟件產(chǎn)品所進(jìn)行的修維護(hù)階段對(duì)軟件產(chǎn)品所進(jìn)行的修改就是所謂的維護(hù)。根據(jù)維護(hù)工作的性質(zhì),軟件維護(hù)的活動(dòng)改就是所謂的維護(hù)。根據(jù)維護(hù)工作的性質(zhì),軟件維護(hù)的活動(dòng)可以分為以下可以分為以下4種類型。種類型。1改正性維護(hù)改正性維護(hù) 改正性維護(hù)改正性維護(hù)(corrective maintenance)為了識(shí)別和糾正)為了識(shí)別和糾正軟件錯(cuò)誤、改正軟件性能上的缺陷、排除實(shí)施中的誤使軟件錯(cuò)誤、改正軟件性能上的缺陷、排除實(shí)施中的誤使用,應(yīng)進(jìn)行的診斷和改正錯(cuò)誤的過程。例如,改正性維護(hù)用,應(yīng)進(jìn)行的診斷和改正錯(cuò)誤的過程。例如,改正性維護(hù)可以是改正原來程序中開關(guān)使用的錯(cuò)誤;解決開發(fā)時(shí)未能可以是改正原來程序中開關(guān)使用的錯(cuò)誤;解決開發(fā)時(shí)未能測(cè)試各種可能情況帶來的問題等。測(cè)試各種可能情況帶來的問題等。2適應(yīng)性維護(hù)適應(yīng)性維護(hù) 隨著信息技術(shù)的飛速發(fā)展,軟件運(yùn)行的外部環(huán)境(新的隨著信息技術(shù)的飛速發(fā)展,軟件運(yùn)行的外部環(huán)境(新的硬、軟件配置)或數(shù)據(jù)環(huán)境(數(shù)據(jù)庫、數(shù)據(jù)格式、數(shù)據(jù)輸入硬、軟件配置)或數(shù)據(jù)環(huán)境(數(shù)據(jù)庫、數(shù)據(jù)格式、數(shù)據(jù)輸入/輸出方式、數(shù)據(jù)存儲(chǔ)介質(zhì))可能發(fā)生變化,為了使軟件適輸出方式、數(shù)據(jù)存儲(chǔ)介質(zhì))可能發(fā)生變化,為了使軟件適應(yīng)這種變化,而修改軟件的過程叫做應(yīng)這種變化,而修改軟件的過程叫做適應(yīng)性維護(hù)適應(yīng)性維護(hù)(adaptive maintenance)。例如,需要對(duì)已運(yùn)行的軟件進(jìn)行改造,以)。例如,需要對(duì)已運(yùn)行的軟件進(jìn)行改造,以適應(yīng)網(wǎng)絡(luò)環(huán)境或已升級(jí)改版的操作系統(tǒng)要求。適應(yīng)網(wǎng)絡(luò)環(huán)境或已升級(jí)改版的操作系統(tǒng)要求。3完善性維護(hù)完善性維護(hù) 為了滿足新的功能與性能要求,需要修改或再開發(fā)軟件,為了滿足新的功能與性能要求,需要修改或再開發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件12.1 軟件維護(hù)的概念的可維護(hù)性。這種情況下進(jìn)行的維護(hù)活動(dòng)叫做的可維護(hù)性。這種情況下進(jìn)行的維護(hù)活動(dòng)叫做完善性維護(hù)完善性維護(hù)(perfective maintenance)。例如,完善性維護(hù)可能是修)。例如,完善性維護(hù)可能是修改一個(gè)計(jì)算工資的程序,使其增加新的扣除項(xiàng)目;縮短系統(tǒng)改一個(gè)計(jì)算工資的程序,使其增加新的扣除項(xiàng)目;縮短系統(tǒng)的應(yīng)答時(shí)間,使其達(dá)到特定的要求等。的應(yīng)答時(shí)間,使其達(dá)到特定的要求等。4預(yù)防性維護(hù)預(yù)防性維護(hù) 預(yù)防性維護(hù)預(yù)防性維護(hù)(preventive maintenance)是指把今天的)是指把今天的方法學(xué)用于昨天的系統(tǒng)以滿足明天的需要。也就是說,采方法學(xué)用于昨天的系統(tǒng)以滿足明天的需要。也就是說,采用先進(jìn)的軟件工程方法對(duì)需要維護(hù)的軟件或軟件中的某一部用先進(jìn)的軟件工程方法對(duì)需要維護(hù)的軟件或軟件中的某一部分(重新)進(jìn)行設(shè)計(jì)、編碼和測(cè)試。分(重新)進(jìn)行設(shè)計(jì)、編碼和測(cè)試。12.1 軟件維護(hù)的概念 以上介紹的幾類維護(hù)占總維護(hù)工作量的比例以及維護(hù)在以上介紹的幾類維護(hù)占總維護(hù)工作量的比例以及維護(hù)在軟件生存期成本所占比例如下圖所示軟件生存期成本所占比例如下圖所示。在整個(gè)軟件維護(hù)階段花費(fèi)的全部工作量中,預(yù)防性維護(hù)在整個(gè)軟件維護(hù)階段花費(fèi)的全部工作量中,預(yù)防性維護(hù)只占很小的比例,而完善性維護(hù)占了幾乎一半的工作量。只占很小的比例,而完善性維護(hù)占了幾乎一半的工作量。軟件維護(hù)活動(dòng)花費(fèi)的工作量占整個(gè)生存期工作量的軟件維護(hù)活動(dòng)花費(fèi)的工作量占整個(gè)生存期工作量的70%以以12.1 軟件維護(hù)的概念上(工作量的比例直接反映了成本的比例)上(工作量的比例直接反映了成本的比例),這是由于在,這是由于在漫長(zhǎng)的軟件運(yùn)行過程中需要不斷對(duì)軟件進(jìn)行修改,以使其漫長(zhǎng)的軟件運(yùn)行過程中需要不斷對(duì)軟件進(jìn)行修改,以使其進(jìn)一步完善、改正新發(fā)現(xiàn)的錯(cuò)誤、適應(yīng)新的環(huán)境和用戶新進(jìn)一步完善、改正新發(fā)現(xiàn)的錯(cuò)誤、適應(yīng)新的環(huán)境和用戶新的需求,這些修改需要花費(fèi)很多精力和時(shí)間,而且有時(shí)修的需求,這些修改需要花費(fèi)很多精力和時(shí)間,而且有時(shí)修改不正確,還會(huì)引入新的錯(cuò)誤。同時(shí),軟件維護(hù)技術(shù)不像改不正確,還會(huì)引入新的錯(cuò)誤。同時(shí),軟件維護(hù)技術(shù)不像開發(fā)技術(shù)那樣成熟、規(guī)范化,自然消耗工作量就比較多。開發(fā)技術(shù)那樣成熟、規(guī)范化,自然消耗工作量就比較多。12.1 軟件維護(hù)的概念 在軟件維護(hù)中,影響維護(hù)工作量的因素主要有以下在軟件維護(hù)中,影響維護(hù)工作量的因素主要有以下6種種:(1)系統(tǒng)規(guī)模。)系統(tǒng)規(guī)模。(2)程序設(shè)計(jì)語言。)程序設(shè)計(jì)語言。(3)系統(tǒng)年齡大小。)系統(tǒng)年齡大小。(4)數(shù)據(jù)庫技術(shù)的應(yīng)用水平。)數(shù)據(jù)庫技術(shù)的應(yīng)用水平。(5)所采用的軟件開發(fā)技術(shù)及軟件開發(fā)工程化的程度。)所采用的軟件開發(fā)技術(shù)及軟件開發(fā)工程化的程度。(6)其他:如應(yīng)用的類型、數(shù)學(xué)模型、任務(wù)的難度、)其他:如應(yīng)用的類型、數(shù)學(xué)模型、任務(wù)的難度、IF嵌嵌 套深度、索引或下標(biāo)數(shù)等,對(duì)維護(hù)工作量都有影響。套深度、索引或下標(biāo)數(shù)等,對(duì)維護(hù)工作量都有影響。影響維護(hù)工作量的因素影響維護(hù)工作量的因素 12.1 軟件維護(hù)的概念 根據(jù)影響軟件維護(hù)工作量的各種因素,針對(duì)根據(jù)影響軟件維護(hù)工作量的各種因素,針對(duì)3種典型維種典型維護(hù),護(hù),James Martin等提出了一些策略,以控制維護(hù)成本。等提出了一些策略,以控制維護(hù)成本。1改正性維護(hù)改正性維護(hù) 應(yīng)用一些諸如數(shù)據(jù)庫管理系統(tǒng)、軟件開發(fā)環(huán)境、程序自應(yīng)用一些諸如數(shù)據(jù)庫管理系統(tǒng)、軟件開發(fā)環(huán)境、程序自動(dòng)生成系統(tǒng)和高級(jí)(第四代)語言等新技術(shù)可大大提高可動(dòng)生成系統(tǒng)和高級(jí)(第四代)語言等新技術(shù)可大大提高可靠性,并減少進(jìn)行改正性維護(hù)的需要。此外,還可考慮利靠性,并減少進(jìn)行改正性維護(hù)的需要。此外,還可考慮利用應(yīng)用軟件包、防錯(cuò)性程序設(shè)計(jì)、通過周期性維護(hù)審查等用應(yīng)用軟件包、防錯(cuò)性程序設(shè)計(jì)、通過周期性維護(hù)審查等策略。策略。軟件維護(hù)的策略軟件維護(hù)的策略 12.1 軟件維護(hù)的概念2適應(yīng)性維護(hù)適應(yīng)性維護(hù) 這一類的維護(hù)不可避免,但可以采用以下策略加以控制。這一類的維護(hù)不可避免,但可以采用以下策略加以控制。(1)在配置管理時(shí),把硬件、操作系統(tǒng)和其他相關(guān)環(huán)境因)在配置管理時(shí),把硬件、操作系統(tǒng)和其他相關(guān)環(huán)境因素的可能變化考慮在內(nèi),可以減少某些適應(yīng)性維護(hù)的工作素的可能變化考慮在內(nèi),可以減少某些適應(yīng)性維護(hù)的工作量。量。(2)把與硬件、操作系統(tǒng),以及其他外圍設(shè)備有關(guān)的程序)把與硬件、操作系統(tǒng),以及其他外圍設(shè)備有關(guān)的程序歸到特定的程序模塊中??砂岩颦h(huán)境變化而必須修改的程序歸到特定的程序模塊中??砂岩颦h(huán)境變化而必須修改的程序局部于某些程序模塊之中。局部于某些程序模塊之中。(3)使用內(nèi)部程序列表、外部文件,以及處理的例行程序)使用內(nèi)部程序列表、外部文件,以及處理的例行程序包,可為維護(hù)時(shí)修改程序提供方便。包,可為維護(hù)時(shí)修改程序提供方便。12.1 軟件維護(hù)的概念(4)使用面向?qū)ο蠹夹g(shù),增強(qiáng)軟件系統(tǒng)的穩(wěn)定性,易于修)使用面向?qū)ο蠹夹g(shù),增強(qiáng)軟件系統(tǒng)的穩(wěn)定性,易于修改和移植。改和移植。3完善性維護(hù)完善性維護(hù) 利用前兩類維護(hù)中列舉的方法,也可以減少這一類維利用前兩類維護(hù)中列舉的方法,也可以減少這一類維護(hù)。特別是數(shù)據(jù)庫管理系統(tǒng)、程序生成器、應(yīng)用軟件包,護(hù)。特別是數(shù)據(jù)庫管理系統(tǒng)、程序生成器、應(yīng)用軟件包,可減少系統(tǒng)或程序員的維護(hù)工作量??蓽p少系統(tǒng)或程序員的維護(hù)工作量。此外,建立軟件系統(tǒng)的原型,把它在實(shí)際系統(tǒng)開發(fā)之前此外,建立軟件系統(tǒng)的原型,把它在實(shí)際系統(tǒng)開發(fā)之前提供給用戶。用戶通過研究原型,進(jìn)一步完善他們的功能提供給用戶。用戶通過研究原型,進(jìn)一步完善他們的功能要求,可以減少以后完善性維護(hù)的需要。要求,可以減少以后完善性維護(hù)的需要。12.1 軟件維護(hù)的概念 為為了了有有效效地地進(jìn)進(jìn)行行軟軟件件維維護(hù)護(hù),應(yīng)應(yīng)事事先先就就開開始始做做組組織織工工作作,確確定定實(shí)實(shí)施施維維護(hù)護(hù)的的機(jī)機(jī)構(gòu)構(gòu),明明確確提提出出維維護(hù)護(hù)申申請(qǐng)請(qǐng)報(bào)報(bào)告告的的過過程程及及評(píng)評(píng)價(jià)價(jià)的的過過程程;為為每每一一個(gè)個(gè)維維護(hù)護(hù)申申請(qǐng)請(qǐng)規(guī)規(guī)定定標(biāo)標(biāo)準(zhǔn)準(zhǔn)的的處處理理步步驟驟;還還必必須須建立維護(hù)活動(dòng)的記錄制度以及規(guī)定評(píng)價(jià)和評(píng)審的標(biāo)準(zhǔn)。建立維護(hù)活動(dòng)的記錄制度以及規(guī)定評(píng)價(jià)和評(píng)審的標(biāo)準(zhǔn)。12.2 軟件維護(hù)活動(dòng)軟件維護(hù)申請(qǐng)報(bào)告軟件維護(hù)申請(qǐng)報(bào)告 所所有有軟軟件件維維護(hù)護(hù)申申請(qǐng)請(qǐng)應(yīng)應(yīng)按按規(guī)規(guī)定定的的方方式式提提出出。軟軟件件維維護(hù)護(hù)組組織織通通常常提提供供維維護(hù)護(hù)申申請(qǐng)請(qǐng)報(bào)報(bào)告告(maintenance request form,MRF),或或稱稱軟軟件件問問題題報(bào)報(bào)告告,由由申申請(qǐng)請(qǐng)維維護(hù)護(hù)的的用用戶戶填填寫寫。如如果果遇遇到到一一個(gè)個(gè)錯(cuò)錯(cuò)誤誤,用用戶戶必必須須完完整整地地說說明明產(chǎn)產(chǎn)生生錯(cuò)錯(cuò)誤誤的的情情況況,包包括括輸輸入入數(shù)數(shù)據(jù)據(jù)、錯(cuò)錯(cuò)誤誤清清單單以以及及其其他他有有關(guān)關(guān)材材料料。如如果果申申請(qǐng)請(qǐng)的的是適應(yīng)性維護(hù)或完善性維護(hù),用戶必須提出一份修改說明是適應(yīng)性維護(hù)或完善性維護(hù),用戶必須提出一份修改說明書,列出所有希望的修改。維護(hù)申請(qǐng)報(bào)告將書,列出所有希望的修改。維護(hù)申請(qǐng)報(bào)告將由維護(hù)管理員和由維護(hù)管理員和系統(tǒng)監(jiān)督員來研究處理系統(tǒng)監(jiān)督員來研究處理。維護(hù)申請(qǐng)報(bào)告是由軟件組織外部提交的文檔,它是計(jì)劃維維護(hù)申請(qǐng)報(bào)告是由軟件組織外部提交的文檔,它是計(jì)劃維護(hù)工作的基礎(chǔ)。軟件組織內(nèi)部應(yīng)相應(yīng)地做出軟件修改報(bào)告護(hù)工作的基礎(chǔ)。軟件組織內(nèi)部應(yīng)相應(yīng)地做出軟件修改報(bào)告(software change report,SCR),指明:),指明:所需修改變動(dòng)的性質(zhì);所需修改變動(dòng)的性質(zhì);申請(qǐng)修改的優(yōu)先級(jí);申請(qǐng)修改的優(yōu)先級(jí);為滿足某個(gè)維護(hù)申請(qǐng)報(bào)告,所需的工作量;為滿足某個(gè)維護(hù)申請(qǐng)報(bào)告,所需的工作量;預(yù)計(jì)修改后的狀況。預(yù)計(jì)修改后的狀況。軟件修改報(bào)告應(yīng)提交修改負(fù)責(zé)人,經(jīng)批準(zhǔn)后才能開始進(jìn)一軟件修改報(bào)告應(yīng)提交修改負(fù)責(zé)人,經(jīng)批準(zhǔn)后才能開始進(jìn)一步安排維護(hù)工作。步安排維護(hù)工作。12.2 軟件維護(hù)活動(dòng) 軟件維護(hù)工作流程如下圖所示。軟件維護(hù)工作流程如下圖所示。12.2 軟件維護(hù)活動(dòng)軟件維護(hù)工作流程軟件維護(hù)工作流程 第一步是先確認(rèn)維護(hù)要求,然后由維護(hù)組織管理員確認(rèn)第一步是先確認(rèn)維護(hù)要求,然后由維護(hù)組織管理員確認(rèn)維護(hù)類型。維護(hù)類型。對(duì)于改正性維護(hù)申請(qǐng)對(duì)于改正性維護(hù)申請(qǐng),如果存在嚴(yán)重的錯(cuò)誤,如果存在嚴(yán)重的錯(cuò)誤,則必須安排人員,在系統(tǒng)監(jiān)督員的指導(dǎo)下,進(jìn)行問題分則必須安排人員,在系統(tǒng)監(jiān)督員的指導(dǎo)下,進(jìn)行問題分析,尋找錯(cuò)誤發(fā)生的原因,進(jìn)行析,尋找錯(cuò)誤發(fā)生的原因,進(jìn)行“救火救火”性的緊急維護(hù)性的緊急維護(hù);對(duì);對(duì)于不嚴(yán)重的錯(cuò)誤,可根據(jù)任務(wù)和人員情況,視輕重緩急進(jìn)于不嚴(yán)重的錯(cuò)誤,可根據(jù)任務(wù)和人員情況,視輕重緩急進(jìn)行排隊(duì),統(tǒng)一安排時(shí)間。所謂行排隊(duì),統(tǒng)一安排時(shí)間。所謂“救火救火”式的緊急維護(hù)式的緊急維護(hù),是指,是指對(duì)非常嚴(yán)重的錯(cuò)誤進(jìn)行緊急修改,暫不再顧及正常的維護(hù)對(duì)非常嚴(yán)重的錯(cuò)誤進(jìn)行緊急修改,暫不再顧及正常的維護(hù)控制,不必考慮評(píng)價(jià)可能發(fā)生的副作用。在維護(hù)完成、交控制,不必考慮評(píng)價(jià)可能發(fā)生的副作用。在維護(hù)完成、交付用戶之后再去做這些工作。付用戶之后再去做這些工作。12.2 軟件維護(hù)活動(dòng) 對(duì)于適應(yīng)性維護(hù)和完善性維護(hù)申請(qǐng)對(duì)于適應(yīng)性維護(hù)和完善性維護(hù)申請(qǐng),需要先確定每項(xiàng)申請(qǐng),需要先確定每項(xiàng)申請(qǐng)的優(yōu)先次序。若某項(xiàng)申請(qǐng)的優(yōu)先級(jí)非常高,就可立即開始維的優(yōu)先次序。若某項(xiàng)申請(qǐng)的優(yōu)先級(jí)非常高,就可立即開始維護(hù)工作;否則,維護(hù)申請(qǐng)和其他的開發(fā)工作一樣,進(jìn)行排護(hù)工作;否則,維護(hù)申請(qǐng)和其他的開發(fā)工作一樣,進(jìn)行排隊(duì),統(tǒng)一安排時(shí)間。隊(duì),統(tǒng)一安排時(shí)間。盡管維護(hù)申請(qǐng)的類型不同,但都要進(jìn)行同樣的技術(shù)工作。盡管維護(hù)申請(qǐng)的類型不同,但都要進(jìn)行同樣的技術(shù)工作。這些工作這些工作包括包括:修改軟件需求說明、修改軟件設(shè)計(jì)、設(shè)計(jì)評(píng):修改軟件需求說明、修改軟件設(shè)計(jì)、設(shè)計(jì)評(píng)審、對(duì)源程序做必要的修改、單元測(cè)試、集成測(cè)試(回歸測(cè)審、對(duì)源程序做必要的修改、單元測(cè)試、集成測(cè)試(回歸測(cè)試)、確認(rèn)測(cè)試、軟件配置評(píng)審等。試)、確認(rèn)測(cè)試、軟件配置評(píng)審等。在每次軟件維護(hù)任務(wù)完成后,最好進(jìn)行一次情況評(píng)審,對(duì)在每次軟件維護(hù)任務(wù)完成后,最好進(jìn)行一次情況評(píng)審,對(duì)以下問題做一總結(jié):以下問題做一總結(jié):12.2 軟件維護(hù)活動(dòng)l在目前情況下,設(shè)計(jì)、編碼、測(cè)試中的哪一方面可以改在目前情況下,設(shè)計(jì)、編碼、測(cè)試中的哪一方面可以改 進(jìn)?進(jìn)?l哪些維護(hù)資源應(yīng)該有,但沒有?哪些維護(hù)資源應(yīng)該有,但沒有?l工作中主要的或次要的障礙是什么?工作中主要的或次要的障礙是什么?l從維護(hù)申請(qǐng)的類型來看是否應(yīng)當(dāng)有預(yù)防性維護(hù)?情況評(píng)從維護(hù)申請(qǐng)的類型來看是否應(yīng)當(dāng)有預(yù)防性維護(hù)?情況評(píng) 審對(duì)將來的維護(hù)工作如何進(jìn)行會(huì)產(chǎn)生重要的影響,并可審對(duì)將來的維護(hù)工作如何進(jìn)行會(huì)產(chǎn)生重要的影響,并可為軟件機(jī)構(gòu)的有效管理提供重要的反饋信息。為軟件機(jī)構(gòu)的有效管理提供重要的反饋信息。12.2 軟件維護(hù)活動(dòng)12.2 軟件維護(hù)活動(dòng)維護(hù)檔案記錄維護(hù)檔案記錄 為為了了估估計(jì)計(jì)軟軟件件維維護(hù)護(hù)的的有有效效程程度度,確確定定軟軟件件產(chǎn)產(chǎn)品品的的質(zhì)質(zhì)量量,同同時(shí)時(shí)確確定定維維護(hù)護(hù)的的實(shí)實(shí)際際開開銷銷,需需要要在在維維護(hù)護(hù)的的過過程程中中做做好好維維護(hù)護(hù)檔檔案案記記錄錄。其其內(nèi)內(nèi)容容包包括括程程序序名名稱稱、源源程程序序語語句句條條數(shù)數(shù)、機(jī)機(jī)器器代代碼碼指指令令條條數(shù)數(shù)、所所用用的的程程序序設(shè)設(shè)計(jì)計(jì)語語言言、程程序序安安裝裝的的日日期期、程程序序安安裝裝后后的的運(yùn)運(yùn)行行次次數(shù)數(shù)、與與程程序序安安裝裝后后運(yùn)運(yùn)行行次次數(shù)數(shù)有有關(guān)關(guān)的的處處理理故故障障次次數(shù)數(shù)、程程序序改改變變的的層層次次及及名名稱稱、修修改改程程序序所所增增加加的的源源程程序序語語句句條條數(shù)數(shù)、修修改改程程序序所所減減少少的的源源程程序序語語句句條條數(shù)數(shù)、每每次次修修改改所所付付出出的的“人人時(shí)時(shí)”數(shù)數(shù)、修修改改程程序序的的日日期期、軟軟件件維維護(hù)護(hù)人人員員的的姓姓名名、維維護(hù)護(hù)申申請(qǐng)請(qǐng)報(bào)報(bào)告告的的名名稱稱、維維護(hù)護(hù)類類型型、維維護(hù)護(hù)開開始始時(shí)時(shí)間間和和維維護(hù)護(hù)結(jié)結(jié)束束時(shí)時(shí)間間、花花費(fèi)費(fèi)在在維維護(hù)護(hù)上上的的累累計(jì)計(jì)“人人時(shí)時(shí)”數(shù)數(shù)、維維護(hù)護(hù)工工作作的的凈凈收收益益等等。對(duì)對(duì)每每項(xiàng)維護(hù)任務(wù)都應(yīng)該收集上述數(shù)據(jù)。項(xiàng)維護(hù)任務(wù)都應(yīng)該收集上述數(shù)據(jù)。評(píng)價(jià)維護(hù)活動(dòng)可評(píng)價(jià)維護(hù)活動(dòng)可參考的度量值參考的度量值有:有:每次程序運(yùn)行時(shí)的平均出錯(cuò)次數(shù);每次程序運(yùn)行時(shí)的平均出錯(cuò)次數(shù);花費(fèi)在每類維護(hù)上的總花費(fèi)在每類維護(hù)上的總“人時(shí)人時(shí)”數(shù);數(shù);每個(gè)程序、每種語言、每種維護(hù)類型的程序平均修改次每個(gè)程序、每種語言、每種維護(hù)類型的程序平均修改次 數(shù);數(shù);因?yàn)榫S護(hù),增加或刪除每個(gè)源程序語句所花費(fèi)的平均因?yàn)榫S護(hù),增加或刪除每個(gè)源程序語句所花費(fèi)的平均“人人 時(shí)時(shí)”數(shù);數(shù);用于每種語言的平均用于每種語言的平均“人時(shí)人時(shí)”數(shù);數(shù);維護(hù)申請(qǐng)報(bào)告的平均處理時(shí)間;維護(hù)申請(qǐng)報(bào)告的平均處理時(shí)間;各類維護(hù)申請(qǐng)的百分比。各類維護(hù)申請(qǐng)的百分比。12.2 軟件維護(hù)活動(dòng)維護(hù)評(píng)價(jià)維護(hù)評(píng)價(jià) 為了正確、有效地進(jìn)行程序修改,需要經(jīng)歷為了正確、有效地進(jìn)行程序修改,需要經(jīng)歷3個(gè)步驟個(gè)步驟:分分析和理解程序析和理解程序、實(shí)施修改實(shí)施修改以及以及重新驗(yàn)證程序重新驗(yàn)證程序。12.3 程序修改的步驟及修改的副作用分析和理解程序分析和理解程序 經(jīng)過分析,全面、準(zhǔn)確、迅速地理解程序是決定維護(hù)成經(jīng)過分析,全面、準(zhǔn)確、迅速地理解程序是決定維護(hù)成敗和質(zhì)量好壞的關(guān)鍵。在這方面,軟件的可理解性和文檔的敗和質(zhì)量好壞的關(guān)鍵。在這方面,軟件的可理解性和文檔的質(zhì)量非常重要。為此必須:質(zhì)量非常重要。為此必須:(1)研究程序的使用環(huán)境及有關(guān)資料,盡可能得到更多的)研究程序的使用環(huán)境及有關(guān)資料,盡可能得到更多的 背景信息;背景信息;(2)理解程序的功能和目標(biāo);)理解程序的功能和目標(biāo);(3)掌握程序的結(jié)構(gòu)信息,即從程序中細(xì)分出若干結(jié)構(gòu)成)掌握程序的結(jié)構(gòu)信息,即從程序中細(xì)分出若干結(jié)構(gòu)成 分,如程序系統(tǒng)結(jié)構(gòu)、控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)和輸入分,如程序系統(tǒng)結(jié)構(gòu)、控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)和輸入/輸輸 出結(jié)構(gòu)等;出結(jié)構(gòu)等;(4)了解數(shù)據(jù)流信息,即所涉及的數(shù)據(jù)來自何處,在哪里)了解數(shù)據(jù)流信息,即所涉及的數(shù)據(jù)來自何處,在哪里 被使用;被使用;(5)了解控制流信息,即執(zhí)行每條路徑的結(jié)果;)了解控制流信息,即執(zhí)行每條路徑的結(jié)果;(6)如果設(shè)計(jì)存在,則可利用它們來幫助畫出結(jié)構(gòu)圖和高)如果設(shè)計(jì)存在,則可利用它們來幫助畫出結(jié)構(gòu)圖和高 層流程圖;層流程圖;(7)理解程序的操作(使用)要求。)理解程序的操作(使用)要求。12.3 程序修改的步驟及修改的副作用 為了容易地理解程序,要求自頂向下地理解現(xiàn)有源程序的為了容易地理解程序,要求自頂向下地理解現(xiàn)有源程序的程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),為此可采用如下幾種方法。程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),為此可采用如下幾種方法。(1)分析程序結(jié)構(gòu)圖。)分析程序結(jié)構(gòu)圖。(2)數(shù)據(jù)跟蹤。)數(shù)據(jù)跟蹤。(3)控制跟蹤??刹捎梅?hào)執(zhí)行或?qū)嶋H動(dòng)態(tài)跟蹤的方法,)控制跟蹤??刹捎梅?hào)執(zhí)行或?qū)嶋H動(dòng)態(tài)跟蹤的方法,了解數(shù)據(jù)是如何從一個(gè)輸入源到達(dá)輸出點(diǎn)的。了解數(shù)據(jù)是如何從一個(gè)輸入源到達(dá)輸出點(diǎn)的。(4)在分析的過程中,應(yīng)充分閱讀和使用源程序清單和文)在分析的過程中,應(yīng)充分閱讀和使用源程序清單和文 檔,分析現(xiàn)有文檔的合理性。檔,分析現(xiàn)有文檔的合理性。(5)充分使用由編譯程序或匯編程序提供的交叉引用表、)充分使用由編譯程序或匯編程序提供的交叉引用表、符號(hào)表,以及其他有用的信息。符號(hào)表,以及其他有用的信息。(6)如有可能,爭(zhēng)取參加開發(fā)工作。)如有可能,爭(zhēng)取參加開發(fā)工作。12.3 程序修改的步驟及修改的副作用 對(duì)程序的修改,必須事先做出計(jì)劃,有準(zhǔn)備地、周密有效對(duì)程序的修改,必須事先做出計(jì)劃,有準(zhǔn)備地、周密有效地實(shí)施修改。地實(shí)施修改。1設(shè)計(jì)程序的修改計(jì)劃設(shè)計(jì)程序的修改計(jì)劃 程序的修改計(jì)劃要考慮人員和資源的安排。程序的修改計(jì)劃要考慮人員和資源的安排。修改計(jì)劃的內(nèi)修改計(jì)劃的內(nèi)容容主要包括以下幾項(xiàng):主要包括以下幾項(xiàng):(1)規(guī)格說明信息規(guī)格說明信息:數(shù)據(jù)修改、處理修改、作業(yè)控制語言:數(shù)據(jù)修改、處理修改、作業(yè)控制語言 修改、系統(tǒng)之間接口的修改等。修改、系統(tǒng)之間接口的修改等。(2)維護(hù)資源維護(hù)資源:新程序版本、測(cè)試數(shù)據(jù)、所需的軟件系:新程序版本、測(cè)試數(shù)據(jù)、所需的軟件系 統(tǒng)、計(jì)算機(jī)時(shí)間等。統(tǒng)、計(jì)算機(jī)時(shí)間等。12.3 程序修改的步驟及修改的副作用修改程序修改程序(3)人員人員:程序員、用戶相關(guān)人員、技術(shù)支持人員、廠家:程序員、用戶相關(guān)人員、技術(shù)支持人員、廠家 聯(lián)系人、數(shù)據(jù)錄入員等。聯(lián)系人、數(shù)據(jù)錄入員等。(4)提供提供:紙質(zhì)、計(jì)算機(jī)媒體等。:紙質(zhì)、計(jì)算機(jī)媒體等。針對(duì)以上每一項(xiàng),要說明必要性、從何處著手、是否接針對(duì)以上每一項(xiàng),要說明必要性、從何處著手、是否接受、日期等。通常,可采用自頂向下的方法,在理解程序的受、日期等。通常,可采用自頂向下的方法,在理解程序的基礎(chǔ)上做如下工作:基礎(chǔ)上做如下工作:(1)研究程序的各個(gè)模塊、模塊的接口及數(shù)據(jù)庫,從全局)研究程序的各個(gè)模塊、模塊的接口及數(shù)據(jù)庫,從全局 的觀點(diǎn)提出修改計(jì)劃。的觀點(diǎn)提出修改計(jì)劃。(2)依次把要修改的、以及那些受修改影響的模塊和數(shù)據(jù))依次把要修改的、以及那些受修改影響的模塊和數(shù)據(jù) 結(jié)構(gòu)分離出來。結(jié)構(gòu)分離出來。12.3 程序修改的步驟及修改的副作用(3)詳細(xì)地分析要修改的,以及那些受變更影響的模塊和)詳細(xì)地分析要修改的,以及那些受變更影響的模塊和 數(shù)據(jù)結(jié)構(gòu)的內(nèi)部細(xì)節(jié),設(shè)計(jì)修改計(jì)劃,標(biāo)明新邏輯及數(shù)據(jù)結(jié)構(gòu)的內(nèi)部細(xì)節(jié),設(shè)計(jì)修改計(jì)劃,標(biāo)明新邏輯及 要改動(dòng)的現(xiàn)有邏輯。要改動(dòng)的現(xiàn)有邏輯。(4)向用戶提供回避措施。用戶的某些業(yè)務(wù)因軟件中發(fā)生)向用戶提供回避措施。用戶的某些業(yè)務(wù)因軟件中發(fā)生 問題而中斷,為不讓系統(tǒng)長(zhǎng)時(shí)間停止運(yùn)行,需把問題問題而中斷,為不讓系統(tǒng)長(zhǎng)時(shí)間停止運(yùn)行,需把問題 局部化,在可能的范圍內(nèi)繼續(xù)開展業(yè)務(wù)。局部化,在可能的范圍內(nèi)繼續(xù)開展業(yè)務(wù)。2修改代碼,以適應(yīng)變化修改代碼,以適應(yīng)變化 修改時(shí),要求:修改時(shí),要求:(1)正確、有效地編寫修改代碼;)正確、有效地編寫修改代碼;(2)要謹(jǐn)慎地修改程序,盡量保持程序的風(fēng)格及格式,要)要謹(jǐn)慎地修改程序,盡量保持程序的風(fēng)格及格式,要 12.3 程序修改的步驟及修改的副作用 在程序清單上注明改動(dòng)的指令;在程序清單上注明改動(dòng)的指令;(3)不要匆忙刪除程序語句,除非完全肯定它是無用的;)不要匆忙刪除程序語句,除非完全肯定它是無用的;(4)不要試圖共用程序中已有的臨時(shí)變量或工作區(qū),為了)不要試圖共用程序中已有的臨時(shí)變量或工作區(qū),為了 避免沖突或混淆用途,應(yīng)自行設(shè)置自己的變量;避免沖突或混淆用途,應(yīng)自行設(shè)置自己的變量;(5)插入錯(cuò)誤檢測(cè)語句;)插入錯(cuò)誤檢測(cè)語句;(6)保持詳細(xì)的維護(hù)活動(dòng)和維護(hù)結(jié)果記錄;)保持詳細(xì)的維護(hù)活動(dòng)和維護(hù)結(jié)果記錄;(7)如果程序結(jié)構(gòu)混亂,修改受到干擾,可拋棄程序重新)如果程序結(jié)構(gòu)混亂,修改受到干擾,可拋棄程序重新 編寫。編寫。12.3 程序修改的步驟及修改的副作用 所謂所謂程序修改的副作用程序修改的副作用是指因修改軟件而造成的錯(cuò)誤是指因修改軟件而造成的錯(cuò)誤或其他不希望發(fā)生的情況,有以下或其他不希望發(fā)生的情況,有以下3種副作用:種副作用:1修改代碼的副作用修改代碼的副作用 在使用程序設(shè)計(jì)語言修改源代碼時(shí),都可能引入新的在使用程序設(shè)計(jì)語言修改源代碼時(shí),都可能引入新的錯(cuò)誤。例如,刪除或修改一個(gè)子程序、刪除或修改一個(gè)標(biāo)錯(cuò)誤。例如,刪除或修改一個(gè)子程序、刪除或修改一個(gè)標(biāo)號(hào)、刪除或修改一個(gè)標(biāo)識(shí)符、改變程序代碼的時(shí)序關(guān)系、號(hào)、刪除或修改一個(gè)標(biāo)識(shí)符、改變程序代碼的時(shí)序關(guān)系、改變占用存儲(chǔ)的大小、改變邏輯運(yùn)算符、修改文件的打開改變占用存儲(chǔ)的大小、改變邏輯運(yùn)算符、修改文件的打開或關(guān)閉、改進(jìn)程序的執(zhí)行效率,以及把設(shè)計(jì)上的改變翻譯或關(guān)閉、改進(jìn)程序的執(zhí)行效率,以及把設(shè)計(jì)上的改變翻譯成代碼的改變、為邊界條件的邏輯測(cè)試做出改變時(shí),都容成代碼的改變、為邊界條件的邏輯測(cè)試做出改變時(shí),都容易引入錯(cuò)誤。易引入錯(cuò)誤。12.3 程序修改的步驟及修改的副作用修改程序的副作用及其控制修改程序的副作用及其控制 2修改數(shù)據(jù)的副作用修改數(shù)據(jù)的副作用 在修改數(shù)據(jù)結(jié)構(gòu)時(shí),有可能造成軟件設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)不匹在修改數(shù)據(jù)結(jié)構(gòu)時(shí),有可能造成軟件設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)不匹配,因而導(dǎo)致軟件出錯(cuò)。配,因而導(dǎo)致軟件出錯(cuò)。修改數(shù)據(jù)的副作用修改數(shù)據(jù)的副作用是修改軟件信息是修改軟件信息結(jié)構(gòu)導(dǎo)致的結(jié)果。例如,在重新定義局部的或全局的常量、結(jié)構(gòu)導(dǎo)致的結(jié)果。例如,在重新定義局部的或全局的常量、重新定義記錄或文件的格式、增大或減小一個(gè)數(shù)組或高層數(shù)重新定義記錄或文件的格式、增大或減小一個(gè)數(shù)組或高層數(shù)據(jù)結(jié)構(gòu)的大小、修改全局或公共數(shù)據(jù)、重新初始化控制標(biāo)志據(jù)結(jié)構(gòu)的大小、修改全局或公共數(shù)據(jù)、重新初始化控制標(biāo)志或指針、重新排列輸入或指針、重新排列輸入/輸出或子程序的參數(shù)時(shí),容易導(dǎo)致輸出或子程序的參數(shù)時(shí),容易導(dǎo)致設(shè)計(jì)與數(shù)據(jù)不相容的錯(cuò)誤。數(shù)據(jù)副作用可以通過詳細(xì)的設(shè)計(jì)設(shè)計(jì)與數(shù)據(jù)不相容的錯(cuò)誤。數(shù)據(jù)副作用可以通過詳細(xì)的設(shè)計(jì)文檔加以控制。文檔加以控制。12.3 程序修改的步驟及修改的副作用3修改文檔的副作用修改文檔的副作用 對(duì)數(shù)據(jù)流、軟件結(jié)構(gòu)、模塊邏輯或任何其他有關(guān)特性進(jìn)對(duì)數(shù)據(jù)流、軟件結(jié)構(gòu)、模塊邏輯或任何其他有關(guān)特性進(jìn)行修改時(shí),必須對(duì)相關(guān)技術(shù)文檔進(jìn)行相應(yīng)修改。如果對(duì)可行修改時(shí),必須對(duì)相關(guān)技術(shù)文檔進(jìn)行相應(yīng)修改。如果對(duì)可執(zhí)行軟件的修改不反映在文檔里,會(huì)產(chǎn)生執(zhí)行軟件的修改不反映在文檔里,會(huì)產(chǎn)生文檔的副作用文檔的副作用。例如,對(duì)交互輸入的順序或格式進(jìn)行修改,如果沒有正確例如,對(duì)交互輸入的順序或格式進(jìn)行修改,如果沒有正確地記入文檔中,可能引起重大的問題。過時(shí)的文檔內(nèi)容、地記入文檔中,可能引起重大的問題。過時(shí)的文檔內(nèi)容、索引和文本可能造成沖突,引起用戶業(yè)務(wù)的失敗和不滿。索引和文本可能造成沖突,引起用戶業(yè)務(wù)的失敗和不滿。因此,必須在軟件交付之前對(duì)整個(gè)軟件配置進(jìn)行評(píng)審,以因此,必須在軟件交付之前對(duì)整個(gè)軟件配置進(jìn)行評(píng)審,以減少文檔的副作用。減少文檔的副作用。12.3 程序修改的步驟及修改的副作用 為了控制因修改而引起的副作用,要做到:為了控制因修改而引起的副作用,要做到:(1)按模塊把修改分組;)按模塊把修改分組;(2)自頂向下地安排被修改模塊的順序;)自頂向下地安排被修改模塊的順序;(3)每次修改一個(gè)模塊;)每次修改一個(gè)模塊;(4)對(duì)于每個(gè)修改了的模塊,在安排修改下一個(gè)模塊之)對(duì)于每個(gè)修改了的模塊,在安排修改下一個(gè)模塊之 前,要確定這個(gè)修改的副作用,可以使用交叉引用前,要確定這個(gè)修改的副作用,可以使用交叉引用 表、存儲(chǔ)映象表、執(zhí)行流程跟蹤等。表、存儲(chǔ)映象表、執(zhí)行流程跟蹤等。12.3 程序修改的步驟及修改的副作用 在將修改后的程序提交用戶之前,需要用以下的方法進(jìn)行在將修改后的程序提交用戶之前,需要用以下的方法進(jìn)行在將修改后的程序提交用戶之前,需要用以下的方法進(jìn)行在將修改后的程序提交用戶之前,需要用以下的方法進(jìn)行充分的確認(rèn)和測(cè)試,以保證整個(gè)修改后的程序的正確性。充分的確認(rèn)和測(cè)試,以保證整個(gè)修改后的程序的正確性。充分的確認(rèn)和測(cè)試,以保證整個(gè)修改后的程序的正確性。充分的確認(rèn)和測(cè)試,以保證整個(gè)修改后的程序的正確性。1 1靜態(tài)確認(rèn)靜態(tài)確認(rèn)靜態(tài)確認(rèn)靜態(tài)確認(rèn) 修改的軟件,通常伴隨著引起新的錯(cuò)誤的危險(xiǎn)。為了能夠修改的軟件,通常伴隨著引起新的錯(cuò)誤的危險(xiǎn)。為了能夠修改的軟件,通常伴隨著引起新的錯(cuò)誤的危險(xiǎn)。為了能夠修改的軟件,通常伴隨著引起新的錯(cuò)誤的危險(xiǎn)。為了能夠做出正確的判定,驗(yàn)證修改后的程序至少需要兩個(gè)人參加。做出正確的判定,驗(yàn)證修改后的程序至少需要兩個(gè)人參加。做出正確的判定,驗(yàn)證修改后的程序至少需要兩個(gè)人參加。做出正確的判定,驗(yàn)證修改后的程序至少需要兩個(gè)人參加。要檢查:要檢查:要檢查:要檢查:(1 1)修改是否涉及規(guī)格說明?修改結(jié)果是否符合規(guī)格說)修改是否涉及規(guī)格說明?修改結(jié)果是否符合規(guī)格說)修改是否涉及規(guī)格說明?修改結(jié)果是否符合規(guī)格說)修改是否涉及規(guī)格說明?修改結(jié)果是否符合規(guī)格說 明?有沒有歪曲規(guī)格說明?明?有沒有歪曲規(guī)格說明?明?有沒有歪曲規(guī)格說明?明?有沒有歪曲規(guī)格說明?(2 2)程序的修改是否足以修正軟件中的問題?源程序代碼)程序的修改是否足以修正軟件中的問題?源程序代碼)程序的修改是否足以修正軟件中的問題?源程序代碼)程序的修改是否足以修正軟件中的問題?源程序代碼 有無邏輯錯(cuò)誤?修改時(shí)有無修補(bǔ)失誤?有無邏輯錯(cuò)誤?修改時(shí)有無修補(bǔ)失誤?有無邏輯錯(cuò)誤?修改時(shí)有無修補(bǔ)失誤?有無邏輯錯(cuò)誤?修改時(shí)有無修補(bǔ)失誤?重新驗(yàn)證程序重新驗(yàn)證程序 12.3 程序修改的步驟及修改的副作用(3 3)修改部分對(duì)其他部分有無不良影響(副作用)?)修改部分對(duì)其他部分有無不良影響(副作用)?對(duì)軟件進(jìn)行修改,常常會(huì)引發(fā)別的問題,因此,有必要對(duì)軟件進(jìn)行修改,常常會(huì)引發(fā)別的問題,因此,有必要 檢查修改的影響范圍。檢查修改的影響范圍。2確認(rèn)測(cè)試確認(rèn)測(cè)試 在充分進(jìn)行了以上確認(rèn)的基礎(chǔ)上,要用計(jì)算機(jī)對(duì)修改程在充分進(jìn)行了以上確認(rèn)的基礎(chǔ)上,要用計(jì)算機(jī)對(duì)修改程 序進(jìn)行確認(rèn)測(cè)試。序進(jìn)行確認(rèn)測(cè)試。(1 1)確認(rèn)測(cè)試順序:先對(duì)修改部分進(jìn)行測(cè)試,然后隔離修)確認(rèn)測(cè)試順序:先對(duì)修改部分進(jìn)行測(cè)試,然后隔離修 改部分,測(cè)試程序的未修改部分,最后再把它們集成起改部分,測(cè)試程序的未修改部分,最后再把它們集成起 來進(jìn)行測(cè)試。這種測(cè)試稱為來進(jìn)行測(cè)試。這種測(cè)試稱為回歸測(cè)試回歸測(cè)試。(2 2)準(zhǔn)備標(biāo)準(zhǔn)的測(cè)試用例。)準(zhǔn)備標(biāo)準(zhǔn)的測(cè)試用例。12.3 程序修改的步驟及修改的副作用(3)充分利用軟件工具幫助重新驗(yàn)證過程。)充分利用軟件工具幫助重新驗(yàn)證過程。(4)在重新確認(rèn)過程中,需邀請(qǐng)用戶參加。)在重新確認(rèn)過程中,需邀請(qǐng)用戶參加。3維護(hù)后的驗(yàn)收維護(hù)后的驗(yàn)收 在交付新軟件之前,維護(hù)主管部門要檢驗(yàn):在交付新軟件之前,維護(hù)主管部門要檢驗(yàn):(1)全部文檔是否完備,并已更新;)全部文檔是否完備,并已更新;(2)所有測(cè)試用例和測(cè)試結(jié)果已經(jīng)正確記載;)所有測(cè)試用例和測(cè)試結(jié)果已經(jīng)正確記載;(3)記錄軟件配置所有副本的工作已經(jīng)完成;)記錄軟件配置所有副本的工作已經(jīng)完成;(4)維護(hù)工序和責(zé)任是明確的。)維護(hù)工序和責(zé)任是明確的。12.3 程序修改的步驟及修改的副作用 所謂所謂軟件可維護(hù)性軟件可維護(hù)性,是指糾正軟件系統(tǒng)出現(xiàn)的錯(cuò)誤和缺陷,是指糾正軟件系統(tǒng)出現(xiàn)的錯(cuò)誤和缺陷,以及為滿足新的要求進(jìn)行修改、擴(kuò)充或壓縮的容易度。以及為滿足新的要求進(jìn)行修改、擴(kuò)充或壓縮的容易度。軟件的可維護(hù)性是軟件開發(fā)階段各個(gè)時(shí)期的關(guān)鍵目標(biāo)。目軟件的可維護(hù)性是軟件開發(fā)階段各個(gè)時(shí)期的關(guān)鍵目標(biāo)。目前廣泛使用的是用如下的前廣泛使用的是用如下的7個(gè)特性衡量程序的可維護(hù)性。而個(gè)特性衡量程序的可維護(hù)性。而且對(duì)于不同類型的維護(hù),這且對(duì)于不同類型的維護(hù),這7種特性的側(cè)重點(diǎn)也不相同。下種特性的側(cè)重點(diǎn)也不相同。下表所示為在各類維護(hù)中的側(cè)重點(diǎn),表中的表所示為在各類維護(hù)中的側(cè)重點(diǎn),表中的“”表示需要的表示需要的特性。特性。12.4 軟件的可維護(hù)性 軟件可維護(hù)性的定義軟件可維護(hù)性的定義 軟件度量學(xué)軟件度量學(xué)是一門研究對(duì)軟件的可維護(hù)性做出定量度量是一門研究對(duì)軟件的可維護(hù)性做出定量度量的學(xué)科。度量一個(gè)可維護(hù)程序的的學(xué)科。度量一個(gè)可維護(hù)程序的7種特性常用的方法有種特性常用的方法有質(zhì)量質(zhì)量檢查表檢查表、質(zhì)量測(cè)試質(zhì)量測(cè)試和和質(zhì)量標(biāo)準(zhǔn)質(zhì)量標(biāo)準(zhǔn)。質(zhì)量檢查表質(zhì)量檢查表是用于測(cè)試程是用于測(cè)試程序中某些質(zhì)量特性是否存在的一個(gè)問題清單。評(píng)價(jià)者針對(duì)序中某些質(zhì)量特性是否存在的一個(gè)問題清單。評(píng)價(jià)者針對(duì)檢查表上的每一個(gè)問題,依據(jù)自己的定性判斷,回答檢查表上的每一個(gè)問題,依據(jù)自己的定性判斷,回答“Yes”或者或者“No”。質(zhì)量測(cè)試與質(zhì)量標(biāo)準(zhǔn)質(zhì)量測(cè)試與質(zhì)量標(biāo)準(zhǔn)則用于定量分析則用于定量分析和和評(píng)價(jià)程序的質(zhì)量。由于許多質(zhì)量特性是相互抵觸的,要考評(píng)價(jià)程序的質(zhì)量。由于許多質(zhì)量特性是相互抵觸的,要考慮幾種不同的度量標(biāo)準(zhǔn),相應(yīng)地去度量不同的質(zhì)量特性。慮幾種不同的度量標(biāo)準(zhǔn),相應(yīng)地去度量不同的質(zhì)量特性。12.4 軟件的可維護(hù)性 可維護(hù)性的度量可維護(hù)性的度量 1可理解性可理解性 可理解性可理解性表明人們通過閱讀源代碼和相關(guān)文檔,了解程序表明人們通過閱讀源代碼和相關(guān)文檔,了解程序功能及其如何運(yùn)行的容易程度。一個(gè)可理解的程序主要應(yīng)具功能及其如何運(yùn)行的容易程度。一個(gè)可理解的程序主要應(yīng)具備以下一些特性:模塊化、風(fēng)格一致性、不使用令人捉摸不備以下一些特性:模塊化、風(fēng)格一致性、不使用令人捉摸不定或含糊不清的代碼、使用有意義的數(shù)據(jù)名和過程名、結(jié)構(gòu)定或含糊不清的代碼、使用有意義的數(shù)據(jù)名和過程名、結(jié)構(gòu)化、完整性等?;⑼暾缘???衫斫庑钥梢酝ㄟ^可理解性可以通過“90-10測(cè)試測(cè)試”的方法來衡量,即把一的方法來衡量,即把一份份被測(cè)試的源程序清單拿給一位有經(jīng)驗(yàn)的程序員閱讀被測(cè)試的源程序清單拿給一位有經(jīng)驗(yàn)的程序員閱讀10分鐘。分鐘。若該程序員能憑自己的理解和記憶寫出該程序的若該程序員能憑自己的理解和記憶寫出該程序的90%以上。以上。則認(rèn)為這個(gè)程序具有可理解性,否則這個(gè)程序要重新編寫。則認(rèn)為這個(gè)程序具有可理解性,否則這個(gè)程序要重新編寫。12.4 軟件的可維護(hù)性 2可靠性可靠性 可靠性表明可靠性表明一個(gè)程序按照用戶的要求和設(shè)計(jì)目標(biāo),在給定一個(gè)程序按照用戶的要求和設(shè)計(jì)目標(biāo),在給定的一段時(shí)間內(nèi)正確執(zhí)行的概率。的一段時(shí)間內(nèi)正確執(zhí)行的概率??煽啃远攘康臉?biāo)準(zhǔn)可靠性度量的標(biāo)準(zhǔn)主要有:主要有:平均失效間隔時(shí)間(平均失效間隔時(shí)間(mean time to failure,MTTF)、)、平均平均修復(fù)時(shí)間(修復(fù)時(shí)間(mean time to repair error,MTTR)、)、有效性有效性A(=MTBD/(MTBD+MDT)。)。度量可靠性的方法度量可靠性的方法主要有主要有如下兩類:如下兩類:(1)根據(jù)程序錯(cuò)誤統(tǒng)計(jì)數(shù)字,進(jìn)行可靠性預(yù)測(cè)。)根據(jù)程序錯(cuò)誤統(tǒng)計(jì)數(shù)字,進(jìn)行可靠性預(yù)測(cè)。(2)根據(jù)程序復(fù)雜性,預(yù)測(cè)軟件可靠性。)根據(jù)程序復(fù)雜性,預(yù)測(cè)軟件可靠性。12.4 軟件的可維護(hù)性 3可測(cè)試性可測(cè)試性 可測(cè)試性表明可測(cè)試性表明論證程序正確性的容易程度。程序越簡(jiǎn)單,論證程序正確性的容易程度。程序越簡(jiǎn)單,證明其正確性就越容易。而且設(shè)計(jì)合適的測(cè)試用例,取決于證明其正確性就越容易。而且設(shè)計(jì)合適的測(cè)試用例,取決于對(duì)程序的全面理解,因此,一個(gè)可測(cè)試的程序應(yīng)當(dāng)是可理解對(duì)程序的全面理解,因此,一個(gè)可測(cè)試的程序應(yīng)當(dāng)是可理解的、可靠的、簡(jiǎn)單的。的、可靠的、簡(jiǎn)單的。對(duì)于程序模塊,可用程序復(fù)雜性來度量可測(cè)試性。程序的對(duì)于程序模塊,可用程序復(fù)雜性來度量可測(cè)試性。程序的環(huán)路復(fù)雜性越大,程序的路徑就越多,因此,全面測(cè)試程序環(huán)路復(fù)雜性越大,程序的路徑就越多,因此,全面測(cè)試程序的難度就越大。的難度就越大。12.4 軟件的可維護(hù)性 4可修改性可修改性 可修改性可修改性表明程序容易修改的程度。一個(gè)可修改的程序應(yīng)表明程序容易修改的程度。一個(gè)可修改的程序應(yīng)當(dāng)是當(dāng)是可理解的可理解的、通用的通用的、靈活的靈活的、簡(jiǎn)單的簡(jiǎn)單的。測(cè)試可修改性的一種定量方法是測(cè)試可修改性的一種定量方法是修改練習(xí)修改練習(xí)。其。其基本思想基本思想是是通過做幾個(gè)簡(jiǎn)單的修改,來評(píng)價(jià)修改的難度。設(shè)通過做幾個(gè)簡(jiǎn)單的修改,來評(píng)價(jià)修改的難度。設(shè)C是程序中是程序中各個(gè)模塊的復(fù)雜性,各個(gè)模塊的復(fù)雜性,n是必須修改的模塊數(shù),是必須修改的模塊數(shù),A是要修改的是要修改的模塊的復(fù)雜性。則修改的難度模塊的復(fù)雜性。則修改的難度D由下式計(jì)算:由下式計(jì)算:D=A/C 對(duì)于簡(jiǎn)單的修改,若對(duì)于簡(jiǎn)單的修改,若D1,說明該程序修改困難。,說明該程序修改困難。A和和C可用任何一種度量程序復(fù)雜性的方法計(jì)算??捎萌魏我环N度量程序復(fù)雜性的方法計(jì)算。12.4 軟件的可維護(hù)性 5可移植性可移植性 可移植性可移植性表明程序轉(zhuǎn)移到一個(gè)新的計(jì)算環(huán)境的可能性的表明程序轉(zhuǎn)移到一個(gè)新的計(jì)算環(huán)境的可能性的大小?;蛘咚砻鞒绦蚩梢匀菀椎亍⒂行У卦诟鞣N各樣的大小?;蛘咚砻鞒绦蚩梢匀菀椎?、有效地在各種各樣的計(jì)算環(huán)境中運(yùn)行的容易程度。計(jì)算環(huán)境中運(yùn)行的容易程度。一個(gè)可移植的程序應(yīng)具有結(jié)構(gòu)良好、靈活、不依賴于某一個(gè)可移植的程序應(yīng)具有結(jié)構(gòu)良好、靈活、不依賴于某一具體計(jì)算機(jī)或操作系統(tǒng)的性能。一具體計(jì)算機(jī)或操作系統(tǒng)的性能。6效率效率 效率效率表明一個(gè)程序能執(zhí)行預(yù)定功能而又不浪費(fèi)機(jī)器資源表明一個(gè)程序能執(zhí)行預(yù)定功能而又不浪費(fèi)機(jī)器資源的程度。這些機(jī)器資源包括內(nèi)存容量、外存容量、通道容的程度。這些機(jī)器資源包括內(nèi)存容量、外存容量、通道容量和執(zhí)行時(shí)間。量和執(zhí)行時(shí)間。12.4 軟件的可維護(hù)性 7可使用性可使用性 從用戶觀點(diǎn)出發(fā),從用戶觀點(diǎn)出發(fā),可使用性可使用性是指程序方便、實(shí)用及易于使是指程序方便、實(shí)用及易于使用的程度。一個(gè)可使用的程序應(yīng)是易于使用的、能允許用戶用的程度。一個(gè)可使用的程序應(yīng)是易于使用的、能允許用戶出錯(cuò)和改變,并盡可能不使用戶陷入混亂狀態(tài)的程序。出錯(cuò)和改變,并盡可能不使用戶陷入混亂狀態(tài)的程序。用于可使用性度量的檢查項(xiàng)目主要有:用于可使用性度量的檢查項(xiàng)目主要有:(1)程序是否具有自描述性?)程序是否具有自描述性?(2)程序是否能始終如一地按照用戶的要求運(yùn)行?)程序是否能始終如一地按照用戶的要求運(yùn)行?(3)程序是否讓用戶對(duì)數(shù)據(jù)處理有一個(gè)滿意的和適當(dāng)?shù)目兀┏绦蚴欠褡層脩魧?duì)數(shù)據(jù)處理有一個(gè)滿意的和適當(dāng)?shù)目?制?制?(4)程序是否容易學(xué)會(huì)使用?)程序是否容易學(xué)會(huì)使用?12.4 軟件的可維護(hù)性(5)程序是否使用數(shù)據(jù)管理系統(tǒng)來自動(dòng)地處理事務(wù)性工作)程序是否使用數(shù)據(jù)管理系統(tǒng)來自動(dòng)地處理事務(wù)性工作 和管理格式化、地址分配及存儲(chǔ)器組織。和管理格式化、地址分配及存儲(chǔ)器組織。(6)程序是否具有容錯(cuò)性?)程序是否具有容錯(cuò)性?(7)程序是否靈活?)程序是否靈活?8其他間接定量度量可維護(hù)性的方法其他間接定量度量可維護(hù)性的方法 Gilb提出了與軟件維護(hù)期間工作量有關(guān)的一些數(shù)據(jù),可以提出了與軟件維護(hù)期間工作量有關(guān)的一些數(shù)據(jù),可以使用它們間接地對(duì)軟件的可維護(hù)性做出估計(jì)。使用它們間接地對(duì)軟件的可維護(hù)性做出估計(jì)。(1)問題識(shí)別的時(shí)間;)問題識(shí)別的時(shí)間;(2)因管理活動(dòng)拖延的時(shí)間;)因管理活動(dòng)拖延的時(shí)間;(3)收集維護(hù)工具的時(shí)間;)收集維護(hù)工具的時(shí)間;12.4 軟件的可維護(hù)性(4)分析、診斷問題的時(shí)間;)分析、診斷問題的時(shí)間;(5)修改規(guī)格說明的時(shí)間;)修改規(guī)格說明的時(shí)間;(6)具體的改錯(cuò)或修改的時(shí)間;)具體的改錯(cuò)或修改的時(shí)間;(7)局部測(cè)試的時(shí)間;)局部測(cè)試的時(shí)間;(8)集成或回歸測(cè)試的時(shí)間;)集成或回歸測(cè)試的時(shí)間;(9)維護(hù)的評(píng)審時(shí)間;)維護(hù)的評(píng)審時(shí)間;(10)恢復(fù)時(shí)間。)恢復(fù)時(shí)間。這些數(shù)據(jù)反映了維護(hù)全過程中檢錯(cuò)這些數(shù)據(jù)反映了維護(hù)全過程中檢錯(cuò)-糾錯(cuò)糾錯(cuò)-驗(yàn)證的周期,即驗(yàn)證的周期,即從檢測(cè)出軟件存在的問題開始至修正它們并經(jīng)回歸測(cè)試驗(yàn)證從檢測(cè)出軟件存在的問題開始至修正它們并經(jīng)回歸測(cè)試驗(yàn)證這段時(shí)間。可以粗略地認(rèn)為,這個(gè)周期越短,維護(hù)越容易。這段時(shí)間??梢源致缘卣J(rèn)為,這個(gè)周期越短,維護(hù)越容易。12.4 軟件的可維護(hù)性 一個(gè)可維護(hù)的程序應(yīng)是可理解的、可靠的、可測(cè)試的、可一個(gè)可維護(hù)的程序應(yīng)是可理解的、可靠的、可測(cè)試的、可修改的、可移植的、效率高的、可使用的。盡管可維護(hù)性要修改的、可移植的、效率高的、可使用的。盡管可維護(hù)性要求每一種質(zhì)量特性都要得到滿足,但它們的相對(duì)重要性應(yīng)隨求每一種質(zhì)量特性都要得到滿足,但它們的相對(duì)重要性應(yīng)隨程序的用途及計(jì)算環(huán)境的不同而不同。例如,對(duì)編譯程序來程序的用途及計(jì)算環(huán)境的不同而不同。例如,對(duì)編譯程序來說,可能強(qiáng)調(diào)效率;但對(duì)管理信息系統(tǒng)來說,則可能強(qiáng)調(diào)可說,可能強(qiáng)調(diào)效率;但對(duì)管理信息系統(tǒng)來說,則可能強(qiáng)調(diào)可使用性和可修改性。所以,應(yīng)當(dāng)對(duì)程序的質(zhì)量特性,在提出使用性和可修改性。所以,應(yīng)當(dāng)對(duì)程序的質(zhì)量特性,在提出目標(biāo)的同時(shí)還必須規(guī)定它們的優(yōu)先級(jí)。這樣有助于提高軟件目標(biāo)的同時(shí)還必須規(guī)定它們的優(yōu)先級(jí)。這樣有助于提高軟件的質(zhì)量,并對(duì)軟件生存期的費(fèi)用產(chǎn)生很大的影響。的質(zhì)量,并對(duì)軟件生存期的費(fèi)用產(chǎn)生很大的影響。12.5 提高可維護(hù)性的方法建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級(jí)建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級(jí)1模塊化模塊化 模塊化技術(shù)的優(yōu)點(diǎn)是如果需要改變某個(gè)模塊的功能,則模塊化技術(shù)的優(yōu)點(diǎn)是如果需要改變某個(gè)模塊的功能,則只要改變這個(gè)模塊,對(duì)其他模塊影響很??;如果需要增加只要改變這個(gè)模塊,對(duì)其他模塊影響很?。蝗绻枰黾映绦虻哪承┕δ?,則僅需增加完成這些功能的新的模塊或程序的某些功能,則僅需增加完成這些功能的新的模塊或模塊層;程序的測(cè)試與重復(fù)測(cè)試比較容易;程序錯(cuò)誤易于模塊層;程序的測(cè)試與重復(fù)測(cè)試比較容易;程序錯(cuò)誤易于定位和糾正;容易提高程序效率。定位和糾正;容易提高程序效率。2結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì) 結(jié)構(gòu)化程序設(shè)計(jì)不僅使得模塊結(jié)構(gòu)標(biāo)準(zhǔn)化,而且將模塊結(jié)構(gòu)化程序設(shè)計(jì)不僅使得模塊結(jié)構(gòu)標(biāo)準(zhǔn)化,而且將模塊間的相互作用也標(biāo)準(zhǔn)化了,因而把模塊化又向前推進(jìn)了一間的相互作用也標(biāo)準(zhǔn)化了,因而把模塊化又向前推進(jìn)了一步。采用結(jié)構(gòu)化程序設(shè)計(jì)可以獲得良好的程序結(jié)構(gòu)。步。采用結(jié)構(gòu)化程序設(shè)計(jì)可以獲得良好的程序結(jié)構(gòu)。使用提高軟件質(zhì)量的技術(shù)和工具使用提高軟件質(zhì)量的技術(shù)和工具 12.5 提高可維護(hù)性的方法3使用結(jié)構(gòu)化程序設(shè)計(jì)技術(shù),提高現(xiàn)有系統(tǒng)的可使用結(jié)構(gòu)化程序設(shè)計(jì)技術(shù),提高現(xiàn)有系統(tǒng)的可 維護(hù)性維護(hù)性(1)采用備用件的方法)采用備用件的方法當(dāng)要修改某一個(gè)模塊時(shí),用一當(dāng)要修改某一個(gè)模塊時(shí),用一 個(gè)新的結(jié)構(gòu)良好的模塊替換掉整個(gè)模塊。個(gè)新的結(jié)構(gòu)良好的模塊替換掉整個(gè)模塊。(2)采用自動(dòng)重建結(jié)構(gòu)和重新格式化的工具(結(jié)構(gòu)更新技)采用自動(dòng)重建結(jié)構(gòu)和重新格式化的工具(結(jié)構(gòu)更新技 術(shù))。術(shù))。(3)改進(jìn)現(xiàn)有程序的不完善的文檔。)改進(jìn)現(xiàn)有程序的不完善的文檔。(4)使用結(jié)構(gòu)化程序設(shè)計(jì)方法實(shí)現(xiàn)新的子系統(tǒng)。)使用結(jié)構(gòu)化程序設(shè)計(jì)方法實(shí)現(xiàn)新的子系統(tǒng)。(5)采用結(jié)構(gòu)化小組。)采用結(jié)構(gòu)化小組。12.5 提高可維護(hù)性的方法 質(zhì)量保證審查除了保證軟件得到適當(dāng)?shù)馁|(zhì)量外,還可以用質(zhì)量保證審查除了保證軟件得到適當(dāng)?shù)馁|(zhì)量外,還可以用來檢測(cè)在開發(fā)和維護(hù)階段內(nèi)發(fā)生的質(zhì)量變化。一旦檢測(cè)出問來檢測(cè)在開發(fā)和維護(hù)階段內(nèi)發(fā)生的質(zhì)量變化。一旦檢測(cè)出問題來,就可以采取措施糾正,以控制不斷增長(zhǎng)的軟件維護(hù)成題來,就可以采取措施糾正,以控制不斷增長(zhǎng)的軟件維護(hù)成本。本。為了保證軟件的可維護(hù)性,有為了保證軟件的可維護(hù)性,有4種類型的軟件審查。種類型的軟件審查。1在檢查點(diǎn)進(jìn)行復(fù)審在檢查點(diǎn)進(jìn)行復(fù)審 保證軟件質(zhì)量的最佳方法是在軟件開發(fā)的最初階段就把質(zhì)保證軟件質(zhì)量的最佳方法是在軟件開發(fā)的最初階段就把質(zhì)量要求考慮進(jìn)去,并在開發(fā)過程每一個(gè)階段的終點(diǎn),設(shè)置檢量要求考慮進(jìn)去,并在開發(fā)過程每一個(gè)階段的終點(diǎn),設(shè)置檢查點(diǎn)進(jìn)行檢查。檢查的目的是要證實(shí),已開發(fā)的軟件是否符查點(diǎn)進(jìn)行檢查。檢查的目的是要證實(shí),已開發(fā)的軟件是否符合標(biāo)準(zhǔn),是否滿足規(guī)定的質(zhì)量需求。合標(biāo)準(zhǔn),是否滿足規(guī)定的質(zhì)量需求。12.5 提高可維護(hù)性的方法質(zhì)量保證審查質(zhì)量保證審查 在在不不同同的的檢檢查查點(diǎn)點(diǎn),檢檢查查的的重重點(diǎn)點(diǎn)不不完完全全相相同同,例例如如,在在設(shè)設(shè)計(jì)計(jì)階階段段,檢檢查查重重點(diǎn)點(diǎn)是是可可理理解解性性、可可修修改改性性、可可測(cè)測(cè)試試性性??煽衫砝斫饨庑孕詸z查的重點(diǎn)是程序的復(fù)雜性。如下圖所示。檢查的重點(diǎn)是程序的復(fù)雜性。如下圖所示。12.5 提高可維護(hù)性的方法可可以以使使用用各各種種質(zhì)質(zhì)量量特特性性檢檢查查表表,或或用用度度量量標(biāo)標(biāo)準(zhǔn)準(zhǔn)來來檢檢查查可可維維護(hù)護(hù)性性。各各種種度度量量標(biāo)標(biāo)準(zhǔn)準(zhǔn)應(yīng)應(yīng)當(dāng)當(dāng)在在管管理理部部門門、用用戶戶、軟軟件件開開發(fā)發(fā)人人員員、軟軟件件維維護(hù)護(hù)人人員員當(dāng)當(dāng)中中達(dá)達(dá)成成一一致致意意見見。審審查查小小組組可可以以采采用用人工測(cè)試一類的方式進(jìn)行審查。人工測(cè)試一類的方式進(jìn)行審查。2驗(yàn)收檢查驗(yàn)收檢查 驗(yàn)收檢查是一個(gè)特殊的檢查點(diǎn)的檢查,是交付使用前的最驗(yàn)收檢查是一個(gè)特殊的檢查點(diǎn)的檢查,是交付使用前的最后一次檢查,是軟件投入運(yùn)行之前保證可維護(hù)性的最后機(jī)后一次檢查,是軟件投入運(yùn)行之前保證可維護(hù)性的最后機(jī)會(huì)。它實(shí)際上是驗(yàn)收測(cè)試的一部分,只不過它是從維護(hù)的角會(huì)。它實(shí)際上是驗(yàn)收測(cè)試的一部分,只不過它是從維護(hù)的角度提出驗(yàn)收的條件和標(biāo)準(zhǔn)。度提出驗(yàn)收的條件和標(biāo)準(zhǔn)。以下是驗(yàn)收檢查必須遵循的最小驗(yàn)收標(biāo)準(zhǔn)。以下是驗(yàn)收檢查必須遵循的最小驗(yàn)收標(biāo)準(zhǔn)。(1)需求和規(guī)范標(biāo)準(zhǔn))需求和規(guī)范標(biāo)準(zhǔn) 需求應(yīng)當(dāng)以可測(cè)試的術(shù)語進(jìn)行書寫,按優(yōu)先次序排列和需求應(yīng)當(dāng)以可測(cè)試的術(shù)語進(jìn)行書寫,按優(yōu)先次序排列和定義。定義。區(qū)分必須的、任選的、將來的需求。區(qū)分必須的、任選的、將來的需求。12.5 提高可維護(hù)性的方法 包括對(duì)系統(tǒng)運(yùn)行時(shí)的計(jì)算機(jī)設(shè)備的需求;對(duì)維護(hù)、測(cè)包括對(duì)系統(tǒng)運(yùn)行時(shí)的計(jì)算機(jī)設(shè)備的需求;對(duì)維護(hù)、測(cè) 試、操作,以及維護(hù)人員的需求;對(duì)測(cè)試工具等的需求。試、操作,以及維護(hù)人員的需求;對(duì)測(cè)試工具等的需求。(2)設(shè)計(jì)標(biāo)準(zhǔn))設(shè)計(jì)標(biāo)準(zhǔn) 程序應(yīng)設(shè)計(jì)成分層的模塊結(jié)構(gòu)。每個(gè)模塊應(yīng)完成唯一的程序應(yīng)設(shè)計(jì)成分層的模塊結(jié)構(gòu)。每個(gè)模塊應(yīng)完成唯一的 功能,并達(dá)到高內(nèi)聚、低耦合。功能,并達(dá)到高內(nèi)聚、低耦合。通過一些知道預(yù)期變化的實(shí)例,說明設(shè)計(jì)的可擴(kuò)充性、通過一些知道預(yù)期變化的實(shí)例,說明設(shè)計(jì)的可擴(kuò)充性、可縮減性和可適應(yīng)性??煽s減性和可適應(yīng)性。(3)源代碼標(biāo)準(zhǔn))源代碼標(biāo)準(zhǔn) 盡可能使用程序設(shè)計(jì)語言的標(biāo)準(zhǔn)版本。盡可能使用程序設(shè)計(jì)語言的標(biāo)準(zhǔn)版本。所有的代碼都必須具有良好的結(jié)構(gòu)。所有的代碼都必須具有良好的結(jié)構(gòu)。12.5 提高可維護(hù)性的方法 所有的代碼都必須文檔化,在注釋中說明它的輸入、輸出,所有的代碼都必須文檔化,在注釋中說明它的輸入、輸出,以及便于測(cè)試以及便于測(cè)試/再測(cè)試的一些特點(diǎn)與風(fēng)格。再測(cè)試的一些特點(diǎn)與風(fēng)格。(4)文檔標(biāo)準(zhǔn))文檔標(biāo)準(zhǔn) 文檔中應(yīng)說明程序的輸入文檔中應(yīng)說明程序的輸入/輸出、使用的方法輸出、使用的方法/算法、錯(cuò)誤恢算法、錯(cuò)誤恢復(fù)方法、所有參數(shù)的范圍、默認(rèn)條件等。復(fù)方法、所有參數(shù)的范圍、默認(rèn)條件等。3周期性地維護(hù)審查周期性地維護(hù)審查 檢查點(diǎn)復(fù)查和驗(yàn)收檢查,可用來保證新軟件系統(tǒng)的可維護(hù)性。檢查點(diǎn)復(fù)查和驗(yàn)收檢查,可用來保證新軟件系統(tǒng)的可維護(hù)性。對(duì)已有的軟件系統(tǒng),則應(yīng)當(dāng)進(jìn)行周期性的維護(hù)檢查。對(duì)已有的軟件系統(tǒng),則應(yīng)當(dāng)進(jìn)行周期性的維護(hù)檢查。軟件在運(yùn)行期間,必須對(duì)軟件做周期性的維護(hù)審查,以跟蹤軟件在運(yùn)行期間,必須對(duì)軟件做周期性的維護(hù)審查,以跟蹤軟件質(zhì)量的變化。周期性維護(hù)審查實(shí)際上是開發(fā)階段檢查點(diǎn)軟件質(zhì)量的變化。周期性維護(hù)審查實(shí)際上是開發(fā)階段檢查點(diǎn)復(fù)查的繼續(xù),并且采用的檢查方法、檢查內(nèi)容都是相同的。復(fù)查的繼續(xù),并且采用的檢查方法、檢查內(nèi)容都是相同的。12.5 提高可維護(hù)性的方法4對(duì)軟件包進(jìn)行檢查對(duì)軟件包進(jìn)行檢查 軟件包軟件包是一種標(biāo)準(zhǔn)化了的、可為不同單位、不同用戶使用是一種標(biāo)準(zhǔn)化了的、可為不同單位、不同用戶使用的封裝軟件。軟件包開發(fā)商一般不會(huì)給用戶提供源代碼和程的封裝軟件。軟件包開發(fā)商一般不會(huì)給用戶提供源代碼和程序文檔,因此,對(duì)軟件包的維護(hù)采取以下方法。序文檔,因此,對(duì)軟件包的維護(hù)采取以下方法。使用單位的維護(hù)人員首先要仔細(xì)分析、研究開發(fā)商提供的使用單位的維護(hù)人員首先要仔細(xì)分析、研究開發(fā)商提供的用戶手冊(cè)、操作手冊(cè)、培訓(xùn)教程、新版本說明、計(jì)算機(jī)環(huán)境用戶手冊(cè)、操作手冊(cè)、培訓(xùn)教程、新版本說明、計(jì)算機(jī)環(huán)境要求書,以及開發(fā)商提供的驗(yàn)收測(cè)試報(bào)告等,在此基礎(chǔ)上,要求書,以及開發(fā)商提供的驗(yàn)收測(cè)試報(bào)告等,在此基礎(chǔ)上,深入了解本單位的希望和要求,編制軟件包的檢驗(yàn)程序。該深入了解本單位的希望和要求,編制軟件包的檢驗(yàn)程序。該檢驗(yàn)程序檢查軟件包程序所執(zhí)行的功能是否與用戶的要求檢驗(yàn)程序檢查軟件包程序所執(zhí)行的功能是否與用戶的要求和條件相一致。和條件相一致。12.5 提高可維護(hù)性的方法 程序文檔程序文檔是對(duì)程序總目標(biāo)、程序各組成部分之間的關(guān)系、是對(duì)程序總目標(biāo)、程序各組成部分之間的關(guān)系、程序設(shè)計(jì)策略、程序?qū)崿F(xiàn)過程的歷史數(shù)據(jù)等的說明和補(bǔ)充。程序設(shè)計(jì)策略、程序?qū)崿F(xiàn)過程的歷史數(shù)據(jù)等的說明和補(bǔ)充。程序文檔對(duì)提高程序的可理解性有著十分重要作用。在軟件程序文檔對(duì)提高程序的可理解性有著十分重要作用。在軟件維護(hù)階段,利用歷史文檔,可以大大簡(jiǎn)化維護(hù)工作。例如,維護(hù)階段,利用歷史文檔,可以大大簡(jiǎn)化維護(hù)工作。例如,通過了解原設(shè)計(jì)思想,可以指導(dǎo)維護(hù)人員選擇適當(dāng)?shù)姆椒ㄈネㄟ^了解原設(shè)計(jì)思想,可以指導(dǎo)維護(hù)人員選擇適當(dāng)?shù)姆椒ㄈバ薷拇a而不危及系統(tǒng)的完整性。又例如,了解開發(fā)系統(tǒng)中修改代碼而不危及系統(tǒng)的完整性。又例如,了解開發(fā)系統(tǒng)中最困難的部分,可以向維護(hù)人員提供最直接的線索,判斷出最困難的部分,可以向維護(hù)人員提供最直接的線索,判斷出錯(cuò)之處。歷史文檔有如下錯(cuò)之處。歷史文檔有如下3種:種:(1)系統(tǒng)開發(fā)日志系統(tǒng)開發(fā)日志:它記錄了項(xiàng)目的開發(fā)原則、開發(fā)目標(biāo)、:它記錄了項(xiàng)目的開發(fā)原則、開發(fā)目標(biāo)、優(yōu)先次序、選擇某種設(shè)計(jì)方案的理由、決策策略、使用優(yōu)先次序、選擇某種設(shè)計(jì)方案的理由、決策策略、使用改進(jìn)文檔改進(jìn)文檔 12.5 提高可維護(hù)性的方法的測(cè)試技術(shù)和工具、每天出現(xiàn)的問題、計(jì)劃的成功和失敗之的測(cè)試技術(shù)和工具、每天出現(xiàn)的問題、計(jì)劃的成功和失敗之處等。處等。(2)錯(cuò)誤記載錯(cuò)誤記載:它把出錯(cuò)的歷史情況記錄下來,對(duì)于預(yù)測(cè):它把出錯(cuò)的歷史情況記錄下來,對(duì)于預(yù)測(cè)今后可能發(fā)生的錯(cuò)誤類型及出錯(cuò)頻率有很大幫助。也有助于今后可能發(fā)生的錯(cuò)誤類型及出錯(cuò)頻率有很大幫助。也有助于維護(hù)人員查明出現(xiàn)故障的程序或模塊,以便去修改或替換它維護(hù)人員查明出現(xiàn)故障的程序或模塊,以便去修改或替換它們。們。(3)系統(tǒng)維護(hù)日志系統(tǒng)維護(hù)日志:記錄了在維護(hù)階段有關(guān)系統(tǒng)修改和修:記錄了在維護(hù)階段有關(guān)系統(tǒng)修改和修改目的的信息。包括修改的宗旨、修改的策略、存在的問改目的的信息。包括修改的宗旨、修改的策略、存在的問題、問題所在的位置、解決問題的辦法、修改要求和說明、題、問題所在的位置、解決問題的辦法、修改要求和說明、注意事項(xiàng)、新版本說明等信息。注意事項(xiàng)、新版本說明等信息。12.5 提高可維護(hù)性的方法 軟件維護(hù)在軟件生存期模型中處在末端,是要解決產(chǎn)品交軟件維護(hù)在軟件生存期模型中處在末端,是要解決產(chǎn)品交付用戶之后運(yùn)行中發(fā)生的各種問題,其中包括:修正產(chǎn)品開付用戶之后運(yùn)行中發(fā)生的各種問題,其中包括:修正產(chǎn)品開發(fā)中未曾暴露的缺陷,解決產(chǎn)品與其運(yùn)行環(huán)境不協(xié)調(diào)以及產(chǎn)發(fā)中未曾暴露的缺陷,解決產(chǎn)品與其運(yùn)行環(huán)境不協(xié)調(diào)以及產(chǎn)品依用戶要求進(jìn)一步完善等問題。品依用戶要求進(jìn)一步完善等問題。軟件的維護(hù)期通常比開發(fā)期長(zhǎng)得多,其投入也大得多,所軟件的維護(hù)期通常比開發(fā)期長(zhǎng)得多,其投入也大得多,所以軟件工作者絕不可忽視維護(hù)工作。以軟件工作者絕不可忽視維護(hù)工作。通過本章應(yīng)掌握軟件維護(hù)的概念、維護(hù)方法以及維護(hù)應(yīng)通過本章應(yīng)掌握軟件維護(hù)的概念、維護(hù)方法以及維護(hù)應(yīng)注意的問題。必須強(qiáng)調(diào),對(duì)已運(yùn)行程序的修改應(yīng)非常慎重,注意的問題。必須強(qiáng)調(diào),對(duì)已運(yùn)行程序的修改應(yīng)非常慎重,必須認(rèn)真遵循既定的維護(hù)規(guī)程。必
收藏
編號(hào):65494723
類型:共享資源
大?。?span id="zf9n3xj" class="font-tahoma">6.60MB
格式:ZIP
上傳時(shí)間:2022-03-24
40
積分
- 關(guān) 鍵 詞:
-
軟件工程基礎(chǔ)
軟件工程
基礎(chǔ)
全套
PPT
課件
- 資源描述:
-
《軟件工程基礎(chǔ)》全套PPT課件,軟件工程基礎(chǔ),軟件工程,基礎(chǔ),全套,PPT,課件
展開閱讀全文
- 溫馨提示:
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ì)自己和他人造成任何形式的傷害或損失。
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶書面授權(quán),請(qǐng)勿作他用。