第8章軟件維護(hù)_第1頁
第8章軟件維護(hù)_第2頁
第8章軟件維護(hù)_第3頁
第8章軟件維護(hù)_第4頁
第8章軟件維護(hù)_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第8章 軟件維護(hù) 8.1 軟件維護(hù)的內(nèi)容 8.2 軟件維護(hù)的特點(diǎn) 8.3 軟件維護(hù)過程 8.4 軟件的可維護(hù)性 8.5 軟件再工程過程 實(shí)例分析 本章小結(jié)軟件開發(fā)完成交付用戶使用后,就進(jìn)入生存周期軟件開發(fā)完成交付用戶使用后,就進(jìn)入生存周期的最后一個(gè)階段的最后一個(gè)階段軟件的運(yùn)行和維護(hù)階段。軟件軟件的運(yùn)行和維護(hù)階段。軟件維護(hù)工作處于軟件生命期的最后階段,維護(hù)階段也維護(hù)工作處于軟件生命期的最后階段,維護(hù)階段也是軟件生存期中最長的一個(gè)階段,所花費(fèi)的人力、是軟件生存期中最長的一個(gè)階段,所花費(fèi)的人力、物力最多,其花費(fèi)高達(dá)整個(gè)軟件生命期花費(fèi)的約物力最多,其花費(fèi)高達(dá)整個(gè)軟件生命期花費(fèi)的約6070。因?yàn)橛?jì)算機(jī)程

2、序總是會發(fā)生變化,對隱。因?yàn)橛?jì)算機(jī)程序總是會發(fā)生變化,對隱含錯(cuò)誤的修改,新功能的加入,環(huán)境變化造成的程含錯(cuò)誤的修改,新功能的加入,環(huán)境變化造成的程序變動等。因此,做好維護(hù)工作具有特別重要的意序變動等。因此,做好維護(hù)工作具有特別重要的意義,應(yīng)該充分認(rèn)識到維護(hù)工作的重要性和迫切性,義,應(yīng)該充分認(rèn)識到維護(hù)工作的重要性和迫切性,提高軟件的可維護(hù)性,減少維護(hù)的工作量和費(fèi)用,提高軟件的可維護(hù)性,減少維護(hù)的工作量和費(fèi)用,延長已經(jīng)開發(fā)軟件的生命期,以發(fā)揮其應(yīng)有的效益。延長已經(jīng)開發(fā)軟件的生命期,以發(fā)揮其應(yīng)有的效益。 8.1 軟件維護(hù)的內(nèi)容8.1.1 8.1.1 軟件維護(hù)的定義軟件維護(hù)的定義軟件維護(hù)是指軟件系統(tǒng)交

3、付使用以后,為了改正軟件維護(hù)是指軟件系統(tǒng)交付使用以后,為了改正軟件運(yùn)行錯(cuò)誤,或者因滿足新的需求而加入新功能的軟件運(yùn)行錯(cuò)誤,或者因滿足新的需求而加入新功能的修改軟件的過程。修改軟件的過程。軟件維護(hù)是軟件工程的一個(gè)重要任務(wù),其主要工軟件維護(hù)是軟件工程的一個(gè)重要任務(wù),其主要工作就是在軟件運(yùn)行和維護(hù)階段對軟件產(chǎn)品所進(jìn)行必要作就是在軟件運(yùn)行和維護(hù)階段對軟件產(chǎn)品所進(jìn)行必要的調(diào)整和修改。要求進(jìn)行維護(hù)的原因主要分為如下幾的調(diào)整和修改。要求進(jìn)行維護(hù)的原因主要分為如下幾種:種:8.1 軟件維護(hù)的內(nèi)容1. 在運(yùn)行中發(fā)現(xiàn)在測試階段未能發(fā)現(xiàn)的潛在軟在運(yùn)行中發(fā)現(xiàn)在測試階段未能發(fā)現(xiàn)的潛在軟件錯(cuò)誤和設(shè)計(jì)缺陷,而這些錯(cuò)誤或缺陷

4、在特定的使用件錯(cuò)誤和設(shè)計(jì)缺陷,而這些錯(cuò)誤或缺陷在特定的使用條件下暴露出來了。條件下暴露出來了。2. 用戶和數(shù)據(jù)處理人員在使用時(shí)常提出改進(jìn)現(xiàn)用戶和數(shù)據(jù)處理人員在使用時(shí)常提出改進(jìn)現(xiàn)有功能,增加新的功能,以及改善總體性能的要求,有功能,增加新的功能,以及改善總體性能的要求,為滿足這些要求,就需要修改軟件把這些要求納入到為滿足這些要求,就需要修改軟件把這些要求納入到軟件之中。軟件之中。3. 因在軟件使用過程中數(shù)據(jù)環(huán)境發(fā)生變化(例因在軟件使用過程中數(shù)據(jù)環(huán)境發(fā)生變化(例如一個(gè)事務(wù)處理代碼發(fā)生改變)或處理環(huán)境發(fā)生變化如一個(gè)事務(wù)處理代碼發(fā)生改變)或處理環(huán)境發(fā)生變化(例如安裝了新的硬件或操作系統(tǒng)),需要修改軟件

5、(例如安裝了新的硬件或操作系統(tǒng)),需要修改軟件以適應(yīng)這種變化。以適應(yīng)這種變化。8.1 軟件維護(hù)的內(nèi)容4. 為使投入運(yùn)行的軟件與其它相關(guān)的程序有良為使投入運(yùn)行的軟件與其它相關(guān)的程序有良好的接口,以利于協(xié)同工作;好的接口,以利于協(xié)同工作;5. 為使運(yùn)行軟件的應(yīng)用范圍得到必要的擴(kuò)充。為使運(yùn)行軟件的應(yīng)用范圍得到必要的擴(kuò)充。隨著社會對計(jì)算機(jī)的需求越來越大,要求軟件必須快隨著社會對計(jì)算機(jī)的需求越來越大,要求軟件必須快速發(fā)展。在軟件快速發(fā)展的同時(shí),應(yīng)該考慮軟件的開速發(fā)展。在軟件快速發(fā)展的同時(shí),應(yīng)該考慮軟件的開發(fā)成本,顯然,對軟件進(jìn)行維護(hù)的目的是為了糾正軟發(fā)成本,顯然,對軟件進(jìn)行維護(hù)的目的是為了糾正軟件開發(fā)過

6、程未發(fā)現(xiàn)的錯(cuò)誤,增強(qiáng)、改進(jìn)和完善軟件的件開發(fā)過程未發(fā)現(xiàn)的錯(cuò)誤,增強(qiáng)、改進(jìn)和完善軟件的功能和性能,以適應(yīng)軟件的發(fā)展,延長軟件的壽命讓功能和性能,以適應(yīng)軟件的發(fā)展,延長軟件的壽命讓其創(chuàng)造更多的價(jià)值。其創(chuàng)造更多的價(jià)值。8.1 軟件維護(hù)的內(nèi)容8.2.2 8.2.2 軟件維護(hù)的類型及策略軟件維護(hù)的類型及策略軟件的維護(hù)并不只是修正錯(cuò)誤。按維護(hù)性質(zhì)不同,軟件的維護(hù)并不只是修正錯(cuò)誤。按維護(hù)性質(zhì)不同,軟件維護(hù)可分為:校正性維護(hù)、適應(yīng)性維護(hù)、完善性軟件維護(hù)可分為:校正性維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù)。維護(hù)和預(yù)防性維護(hù)。8.1 軟件維護(hù)的內(nèi)容1. 完善性維護(hù)完善性維護(hù)在軟件漫長的使用過程中,用戶在使用過程

7、中往往會對在軟件漫長的使用過程中,用戶在使用過程中往往會對軟件提出的新的功能與性能要求。這是因?yàn)橛脩舻臉I(yè)務(wù)會發(fā)軟件提出的新的功能與性能要求。這是因?yàn)橛脩舻臉I(yè)務(wù)會發(fā)生變化,組織機(jī)構(gòu)也會發(fā)生變化,為適應(yīng)這些變化,需要對生變化,組織機(jī)構(gòu)也會發(fā)生變化,為適應(yīng)這些變化,需要對原來的軟件的功能進(jìn)行修改或擴(kuò)充。這種擴(kuò)充軟件功能、增原來的軟件的功能進(jìn)行修改或擴(kuò)充。這種擴(kuò)充軟件功能、增強(qiáng)軟件性能、提高軟件運(yùn)行效率和可維護(hù)性而進(jìn)行的維護(hù)活強(qiáng)軟件性能、提高軟件運(yùn)行效率和可維護(hù)性而進(jìn)行的維護(hù)活動稱為完善性維護(hù)。此維護(hù)活動工作量較大占整個(gè)維護(hù)工作動稱為完善性維護(hù)。此維護(hù)活動工作量較大占整個(gè)維護(hù)工作的的50%。例如:對人

8、事管理程序,在使用中要不斷修改人事。例如:對人事管理程序,在使用中要不斷修改人事管理程序,使其增加或刪除新的項(xiàng)目,滿足新需求;原來軟管理程序,使其增加或刪除新的項(xiàng)目,滿足新需求;原來軟件的查詢響應(yīng)速度較慢,要提高軟件的響應(yīng)速度;改變原來件的查詢響應(yīng)速度較慢,要提高軟件的響應(yīng)速度;改變原來軟件的用戶界面或增加聯(lián)機(jī)幫助信息;為軟件的運(yùn)行增加監(jiān)軟件的用戶界面或增加聯(lián)機(jī)幫助信息;為軟件的運(yùn)行增加監(jiān)控設(shè)施等??卦O(shè)施等。此項(xiàng)維護(hù)主要采用的策略可以使用功能強(qiáng)、使用方便的此項(xiàng)維護(hù)主要采用的策略可以使用功能強(qiáng)、使用方便的工具,采用原型化方法開發(fā)等。工具,采用原型化方法開發(fā)等。8.1 軟件維護(hù)的內(nèi)容2. 適應(yīng)性維

9、護(hù)適應(yīng)性維護(hù)隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,計(jì)算機(jī)軟硬件環(huán)境不斷發(fā)隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,計(jì)算機(jī)軟硬件環(huán)境不斷發(fā)生變化,數(shù)據(jù)環(huán)境也在不斷變化。適應(yīng)性維護(hù)是為了使軟件生變化,數(shù)據(jù)環(huán)境也在不斷變化。適應(yīng)性維護(hù)是為了使軟件適應(yīng)外部新的硬件和軟件環(huán)境或者數(shù)據(jù)環(huán)境(數(shù)據(jù)庫、數(shù)據(jù)適應(yīng)外部新的硬件和軟件環(huán)境或者數(shù)據(jù)環(huán)境(數(shù)據(jù)庫、數(shù)據(jù)格式、數(shù)據(jù)輸入格式、數(shù)據(jù)輸入/輸出方式、數(shù)據(jù)存儲介質(zhì))發(fā)生的變化,而輸出方式、數(shù)據(jù)存儲介質(zhì))發(fā)生的變化,而進(jìn)行修改軟件的過程。適應(yīng)性維護(hù)占整個(gè)維護(hù)工作的進(jìn)行修改軟件的過程。適應(yīng)性維護(hù)占整個(gè)維護(hù)工作的25%。例如:為現(xiàn)有的某個(gè)應(yīng)用問題實(shí)現(xiàn)一個(gè)數(shù)據(jù)庫管理系統(tǒng);對例如:為現(xiàn)有的某個(gè)應(yīng)用問題

10、實(shí)現(xiàn)一個(gè)數(shù)據(jù)庫管理系統(tǒng);對某個(gè)指定代碼進(jìn)行修改,如:從某個(gè)指定代碼進(jìn)行修改,如:從3個(gè)字符改為個(gè)字符改為4個(gè)字符;縮短個(gè)字符;縮短系統(tǒng)的應(yīng)答時(shí)間,使其達(dá)到特定的要求。系統(tǒng)的應(yīng)答時(shí)間,使其達(dá)到特定的要求。它主要的維護(hù)策略是對可能變化的因素進(jìn)行配置管理,它主要的維護(hù)策略是對可能變化的因素進(jìn)行配置管理,將因環(huán)境變化而必須修改的部分局部化,即局限于某些程序?qū)⒁颦h(huán)境變化而必須修改的部分局部化,即局限于某些程序模塊等。模塊等。8.1 軟件維護(hù)的內(nèi)容3. 校正性維護(hù)校正性維護(hù)軟件測試不可能找出一個(gè)軟件系統(tǒng)中所有潛伏的錯(cuò)誤,軟件測試不可能找出一個(gè)軟件系統(tǒng)中所有潛伏的錯(cuò)誤,在軟件交付使用后,軟件在特定情況下運(yùn)行

11、時(shí),這些潛伏的在軟件交付使用后,軟件在特定情況下運(yùn)行時(shí),這些潛伏的錯(cuò)誤可能會暴露出來。為了識別和糾正這些錯(cuò)誤,修改軟件錯(cuò)誤可能會暴露出來。為了識別和糾正這些錯(cuò)誤,修改軟件性能上的缺陷,而進(jìn)行確定和修改錯(cuò)誤的過程,稱為校正性性能上的缺陷,而進(jìn)行確定和修改錯(cuò)誤的過程,稱為校正性維護(hù)。糾錯(cuò)性維護(hù)占整個(gè)維護(hù)工作的維護(hù)。糾錯(cuò)性維護(hù)占整個(gè)維護(hù)工作的21%,例如:修正原來,例如:修正原來程序中并未使開關(guān)復(fù)原的錯(cuò)誤;解決開發(fā)時(shí)未能測試各種可程序中并未使開關(guān)復(fù)原的錯(cuò)誤;解決開發(fā)時(shí)未能測試各種可能條件帶來的問題;解決原來程序中遺漏處理文件中最后一能條件帶來的問題;解決原來程序中遺漏處理文件中最后一個(gè)記錄的問題。個(gè)

12、記錄的問題。它的主要維護(hù)策略是開發(fā)過程中采用新技術(shù),利用應(yīng)用它的主要維護(hù)策略是開發(fā)過程中采用新技術(shù),利用應(yīng)用軟件包,提高系統(tǒng)結(jié)構(gòu)化程度,進(jìn)行周期性維護(hù)審查等。軟件包,提高系統(tǒng)結(jié)構(gòu)化程度,進(jìn)行周期性維護(hù)審查等。8.2 軟件維護(hù)的特點(diǎn)1. 軟件維護(hù)時(shí)間長、工作量大、成本高軟件維護(hù)時(shí)間長、工作量大、成本高軟件的維護(hù)過程是軟件生存期中最長,并且相當(dāng)困難的軟件的維護(hù)過程是軟件生存期中最長,并且相當(dāng)困難的階段,軟件維護(hù)的工作量占整個(gè)軟件生存期的以上,階段,軟件維護(hù)的工作量占整個(gè)軟件生存期的以上,軟件維護(hù)的費(fèi)用占整個(gè)軟件開發(fā)預(yù)算的百分比正在增加。因軟件維護(hù)的費(fèi)用占整個(gè)軟件開發(fā)預(yù)算的百分比正在增加。因此,如何

13、減少軟件維護(hù)的工作量,降低軟件維護(hù)的成本,就此,如何減少軟件維護(hù)的工作量,降低軟件維護(hù)的成本,就成為提高軟件維護(hù)效率和質(zhì)量的關(guān)鍵。成為提高軟件維護(hù)效率和質(zhì)量的關(guān)鍵。2. 軟件維護(hù)副作用軟件維護(hù)副作用維護(hù)的目的是為了延長軟件的壽命并讓其創(chuàng)造更多的價(jià)維護(hù)的目的是為了延長軟件的壽命并讓其創(chuàng)造更多的價(jià)值,經(jīng)過在段時(shí)間的維護(hù),軟件中的錯(cuò)誤減少了,功能增強(qiáng)值,經(jīng)過在段時(shí)間的維護(hù),軟件中的錯(cuò)誤減少了,功能增強(qiáng)了。但是,修改軟件是危險(xiǎn)的,每修改一次,可能會產(chǎn)生新了。但是,修改軟件是危險(xiǎn)的,每修改一次,可能會產(chǎn)生新的潛在錯(cuò)誤。因此,維護(hù)的副作用是指由于修改軟件而造成的潛在錯(cuò)誤。因此,維護(hù)的副作用是指由于修改軟件

14、而造成新的錯(cuò)誤或其他不希望出現(xiàn)的情況。一般維護(hù)產(chǎn)生的副作用新的錯(cuò)誤或其他不希望出現(xiàn)的情況。一般維護(hù)產(chǎn)生的副作用有如下三種。有如下三種。8.2 軟件維護(hù)的特點(diǎn)(1) 代碼副作用:在使用程序設(shè)計(jì)語言修改源代碼時(shí)可代碼副作用:在使用程序設(shè)計(jì)語言修改源代碼時(shí)可能引入如下錯(cuò)誤:能引入如下錯(cuò)誤: 修改或刪除子程序;修改或刪除子程序;修改或刪除語句標(biāo)號;修改或刪除語句標(biāo)號;修改或刪除標(biāo)識符;修改或刪除標(biāo)識符;為提高執(zhí)行效率而做的修改;為提高執(zhí)行效率而做的修改;修改文件的打開或關(guān)閉操作;修改文件的打開或關(guān)閉操作;修改邏輯操作符;修改邏輯操作符;由設(shè)計(jì)變動引起的代碼修改;由設(shè)計(jì)變動引起的代碼修改;修改對邊界條件

15、的測試。修改對邊界條件的測試。代碼副作用有時(shí)通過回歸測試即可發(fā)現(xiàn),此時(shí)應(yīng)立即采代碼副作用有時(shí)通過回歸測試即可發(fā)現(xiàn),此時(shí)應(yīng)立即采取補(bǔ)救措施;然而,有時(shí)直到交付運(yùn)行后才暴露出來,故對取補(bǔ)救措施;然而,有時(shí)直到交付運(yùn)行后才暴露出來,故對代碼進(jìn)行上述修改應(yīng)特別慎重。代碼進(jìn)行上述修改應(yīng)特別慎重。8.2 軟件維護(hù)的特點(diǎn)(2) 數(shù)據(jù)副作用:在修改數(shù)據(jù)結(jié)構(gòu)時(shí),有可能造成軟件數(shù)據(jù)副作用:在修改數(shù)據(jù)結(jié)構(gòu)時(shí),有可能造成軟件設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)不匹配,因而導(dǎo)致軟件出錯(cuò)。容易引起數(shù)據(jù)設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)不匹配,因而導(dǎo)致軟件出錯(cuò)。容易引起數(shù)據(jù)副作用的修改包括:副作用的修改包括:局部或全局常量的再定義;局部或全局常量的再定義;記錄或文

16、件格式的再定義;記錄或文件格式的再定義;增減一個(gè)數(shù)組或高層數(shù)據(jù)結(jié)構(gòu)的大小;增減一個(gè)數(shù)組或高層數(shù)據(jù)結(jié)構(gòu)的大??;修改全局?jǐn)?shù)據(jù);修改全局?jǐn)?shù)據(jù);重新初始化控制標(biāo)志和指針;重新初始化控制標(biāo)志和指針;重新排列輸入重新排列輸入/輸出表或子程序參數(shù)表。輸出表或子程序參數(shù)表。以上這些情況都容易導(dǎo)致設(shè)計(jì)與數(shù)據(jù)不相容的錯(cuò)誤。設(shè)以上這些情況都容易導(dǎo)致設(shè)計(jì)與數(shù)據(jù)不相容的錯(cuò)誤。設(shè)計(jì)文檔化有助于限制數(shù)據(jù)副作用,因?yàn)樵O(shè)計(jì)文檔中詳細(xì)地描計(jì)文檔化有助于限制數(shù)據(jù)副作用,因?yàn)樵O(shè)計(jì)文檔中詳細(xì)地描述了數(shù)據(jù)結(jié)構(gòu)并提供一個(gè)交叉訪問表,把數(shù)據(jù)及引用它們的述了數(shù)據(jù)結(jié)構(gòu)并提供一個(gè)交叉訪問表,把數(shù)據(jù)及引用它們的模塊一一對應(yīng)起來。模塊一一對應(yīng)起來。8

17、.2 軟件維護(hù)的特點(diǎn)(3) 文檔副作用:對軟件的數(shù)據(jù)流、軟件結(jié)構(gòu)、模文檔副作用:對軟件的數(shù)據(jù)流、軟件結(jié)構(gòu)、模塊邏輯等進(jìn)行修改時(shí),必須對相關(guān)技術(shù)文檔進(jìn)行相應(yīng)修塊邏輯等進(jìn)行修改時(shí),必須對相關(guān)技術(shù)文檔進(jìn)行相應(yīng)修改。否則會導(dǎo)致文檔與程序功能不匹配、缺省條件改變改。否則會導(dǎo)致文檔與程序功能不匹配、缺省條件改變等錯(cuò)誤,產(chǎn)生文檔的副作用。如果對可執(zhí)行軟件的修改等錯(cuò)誤,產(chǎn)生文檔的副作用。如果對可執(zhí)行軟件的修改沒有反映在文檔中,會產(chǎn)生如下文檔副作用:沒有反映在文檔中,會產(chǎn)生如下文檔副作用:修改交互輸入的順序和格式,沒有正確的記入文檔修改交互輸入的順序和格式,沒有正確的記入文檔中;中;過時(shí)的文檔內(nèi)容、索引和文本可

18、能造成沖突等。過時(shí)的文檔內(nèi)容、索引和文本可能造成沖突等。為了控制因修改而引起的副作用,應(yīng)該:按模塊把為了控制因修改而引起的副作用,應(yīng)該:按模塊把修改分組;自頂向下的安排被修改模塊的順序;每次修修改分組;自頂向下的安排被修改模塊的順序;每次修改一個(gè)模塊。改一個(gè)模塊。8.2 軟件維護(hù)的特點(diǎn)3. 軟件維護(hù)的困難性軟件維護(hù)的困難性由于軟件維護(hù)工作通常并不由軟件的設(shè)計(jì)和開發(fā)人員來由于軟件維護(hù)工作通常并不由軟件的設(shè)計(jì)和開發(fā)人員來完成,維護(hù)人員首先要對軟件各階段的文檔和代碼進(jìn)行分析、完成,維護(hù)人員首先要對軟件各階段的文檔和代碼進(jìn)行分析、理解。因而出現(xiàn)了理解別人的程序困難、文檔不齊等問題,理解。因而出現(xiàn)了理解

19、別人的程序困難、文檔不齊等問題,尤其是對大型、復(fù)雜系統(tǒng)的維護(hù),更加困難和復(fù)雜。尤其是對大型、復(fù)雜系統(tǒng)的維護(hù),更加困難和復(fù)雜。(1) 結(jié)構(gòu)化維護(hù)和非結(jié)構(gòu)化維護(hù)結(jié)構(gòu)化維護(hù)和非結(jié)構(gòu)化維護(hù) 非結(jié)構(gòu)化維護(hù)是只有源程序,缺乏必要的文檔說明,非結(jié)構(gòu)化維護(hù)是只有源程序,缺乏必要的文檔說明,難于確定數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口等特性。特別是由于沒有保存難于確定數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口等特性。特別是由于沒有保存測試記錄,使回歸測試無法進(jìn)行。所以,改變程序代碼所引測試記錄,使回歸測試無法進(jìn)行。所以,改變程序代碼所引起的后果將難以確定?,F(xiàn)在,對于一些非結(jié)構(gòu)化程序的維護(hù)起的后果將難以確定?,F(xiàn)在,對于一些非結(jié)構(gòu)化程序的維護(hù)工作就是這樣,

20、不僅浪費(fèi)了人力物力,還使維護(hù)人員的積極工作就是這樣,不僅浪費(fèi)了人力物力,還使維護(hù)人員的積極性受到打擊。這種情況就是不使用軟件工程方法開發(fā)軟件的性受到打擊。這種情況就是不使用軟件工程方法開發(fā)軟件的必然結(jié)果。必然結(jié)果。8.2 軟件維護(hù)的特點(diǎn) 結(jié)構(gòu)化維護(hù)是指軟件開發(fā)過程是按照軟件工程方結(jié)構(gòu)化維護(hù)是指軟件開發(fā)過程是按照軟件工程方法進(jìn)行,開發(fā)各階段文檔齊全,軟件的維護(hù)過程,有一法進(jìn)行,開發(fā)各階段文檔齊全,軟件的維護(hù)過程,有一整套完整的方案、技術(shù)、審定過程。這對于減少精力、整套完整的方案、技術(shù)、審定過程。這對于減少精力、減少花費(fèi)和提高軟件維護(hù)效率有很大的作用。減少花費(fèi)和提高軟件維護(hù)效率有很大的作用。可以看

21、到,維護(hù)工作的難度及工作量的大小,明顯可以看到,維護(hù)工作的難度及工作量的大小,明顯的與前期的開發(fā)工作密切相關(guān)。的與前期的開發(fā)工作密切相關(guān)。8.2 軟件維護(hù)的特點(diǎn)(2) 維護(hù)的困難維護(hù)的困難軟件維護(hù)的困難主要是由于軟件需求分析和開發(fā)方法軟件維護(hù)的困難主要是由于軟件需求分析和開發(fā)方法的缺陷造成的。這種困難主要有如下幾個(gè)方面:的缺陷造成的。這種困難主要有如下幾個(gè)方面: 讀懂別人編的程序是困難的。要修改別人的程序,讀懂別人編的程序是困難的。要修改別人的程序,首先要讀懂和理解別人的程序。而理解別人的程序是非常首先要讀懂和理解別人的程序。而理解別人的程序是非常困難的,如果沒有相應(yīng)的文檔,困難就達(dá)到非常嚴(yán)重

22、的地困難的,如果沒有相應(yīng)的文檔,困難就達(dá)到非常嚴(yán)重的地步。步。 文檔的不一致性。文檔不一致會導(dǎo)致維護(hù)人員不文檔的不一致性。文檔不一致會導(dǎo)致維護(hù)人員不知所措,不知根據(jù)什么進(jìn)行修改。這種不一致是由于開發(fā)知所措,不知根據(jù)什么進(jìn)行修改。這種不一致是由于開發(fā)過程中文檔管理不嚴(yán)造成的,在開發(fā)中經(jīng)常出現(xiàn)修改程序過程中文檔管理不嚴(yán)造成的,在開發(fā)中經(jīng)常出現(xiàn)修改程序卻遺忘了修改與其相關(guān)的文檔,或某一文檔進(jìn)行了修改,卻遺忘了修改與其相關(guān)的文檔,或某一文檔進(jìn)行了修改,卻沒有修改與其相關(guān)的另一文檔。卻沒有修改與其相關(guān)的另一文檔。8.2 軟件維護(hù)的特點(diǎn) 軟件開發(fā)和軟件維護(hù)在人員和時(shí)間上的差異。通軟件開發(fā)和軟件維護(hù)在人員和

23、時(shí)間上的差異。通常開發(fā)人員與維護(hù)人員是不同的,這種差異會導(dǎo)致維護(hù)常開發(fā)人員與維護(hù)人員是不同的,這種差異會導(dǎo)致維護(hù)的困難。另外由于維護(hù)階段持續(xù)時(shí)間很長,正在運(yùn)行的的困難。另外由于維護(hù)階段持續(xù)時(shí)間很長,正在運(yùn)行的軟件可能是十幾、二十幾年前開發(fā)的,開發(fā)工具、方法、軟件可能是十幾、二十幾年前開發(fā)的,開發(fā)工具、方法、技術(shù)與當(dāng)前的工具、方法和技術(shù)差異很大,這是維護(hù)困技術(shù)與當(dāng)前的工具、方法和技術(shù)差異很大,這是維護(hù)困難的另一因素。難的另一因素。 軟件維護(hù)工作是一項(xiàng)難出成果,大家都不愿意干軟件維護(hù)工作是一項(xiàng)難出成果,大家都不愿意干的工作。這是由于維護(hù)工作的困難性,維護(hù)工作經(jīng)常遭的工作。這是由于維護(hù)工作的困難性,

24、維護(hù)工作經(jīng)常遭受挫折,以及很難出成果等原因造成的。受挫折,以及很難出成果等原因造成的。 8.3 軟件維護(hù)過程軟件維護(hù)是一件復(fù)雜而困難的事,必須在相應(yīng)的技軟件維護(hù)是一件復(fù)雜而困難的事,必須在相應(yīng)的技術(shù)指導(dǎo)下,按照一定的步驟進(jìn)行。首先要建立一個(gè)維護(hù)術(shù)指導(dǎo)下,按照一定的步驟進(jìn)行。首先要建立一個(gè)維護(hù)的組織,建立維護(hù)活動的登記、申請制度,及對維護(hù)方的組織,建立維護(hù)活動的登記、申請制度,及對維護(hù)方案的審批制度,規(guī)定復(fù)審的評價(jià)標(biāo)準(zhǔn)。案的審批制度,規(guī)定復(fù)審的評價(jià)標(biāo)準(zhǔn)。通過軟件維護(hù)組織對維護(hù)過程進(jìn)行有效的控制,如通過軟件維護(hù)組織對維護(hù)過程進(jìn)行有效的控制,如首先要對軟件進(jìn)行全面、準(zhǔn)確、迅速地理解,這是決定首先要對

25、軟件進(jìn)行全面、準(zhǔn)確、迅速地理解,這是決定維護(hù)工作成敗和質(zhì)量好壞的關(guān)鍵。維護(hù)工作成敗和質(zhì)量好壞的關(guān)鍵。8.3 軟件維護(hù)過程8.3.1 8.3.1 維護(hù)組織維護(hù)組織軟件維護(hù)階段相對來說是漫長而且不定期的,軟件維護(hù)階段相對來說是漫長而且不定期的,長期以來很少建立正式的維護(hù)組織,然而目前人長期以來很少建立正式的維護(hù)組織,然而目前人們普遍認(rèn)識到,即使對于一個(gè)小的軟件開發(fā)隊(duì)伍們普遍認(rèn)識到,即使對于一個(gè)小的軟件開發(fā)隊(duì)伍而言,確立一個(gè)非正式的維護(hù)組織即非正式的維而言,確立一個(gè)非正式的維護(hù)組織即非正式的維護(hù)管理員來負(fù)責(zé)維護(hù)工作卻是絕對必要的。如圖護(hù)管理員來負(fù)責(zé)維護(hù)工作卻是絕對必要的。如圖8-1所示就是一個(gè)維護(hù)機(jī)

26、構(gòu)的組織方案。所示就是一個(gè)維護(hù)機(jī)構(gòu)的組織方案。8.3 軟件維護(hù)過程圖圖8- 1 軟件維護(hù)的組織結(jié)構(gòu)軟件維護(hù)的組織結(jié)構(gòu)8.3 軟件維護(hù)過程維護(hù)申請?zhí)峤唤o一個(gè)維護(hù)管理員,他把申請交給某維護(hù)申請?zhí)峤唤o一個(gè)維護(hù)管理員,他把申請交給某個(gè)系統(tǒng)監(jiān)督員去評價(jià)。系統(tǒng)監(jiān)督員是一位技術(shù)人員,他個(gè)系統(tǒng)監(jiān)督員去評價(jià)。系統(tǒng)監(jiān)督員是一位技術(shù)人員,他必須熟悉產(chǎn)品程序的某一部分。一旦做出評價(jià),由修改必須熟悉產(chǎn)品程序的某一部分。一旦做出評價(jià),由修改負(fù)責(zé)人確定如何進(jìn)行修改。維護(hù)人員對程序進(jìn)行修改的負(fù)責(zé)人確定如何進(jìn)行修改。維護(hù)人員對程序進(jìn)行修改的過程中,由配置管理員嚴(yán)格把關(guān),控制修改的范圍,對過程中,由配置管理員嚴(yán)格把關(guān),控制修改的

27、范圍,對軟件配置進(jìn)行審計(jì)。軟件配置進(jìn)行審計(jì)。維護(hù)管理員、系統(tǒng)監(jiān)督員和修改負(fù)責(zé)人等,均代表維護(hù)管理員、系統(tǒng)監(jiān)督員和修改負(fù)責(zé)人等,均代表維護(hù)工作的某個(gè)職責(zé)范圍。修改負(fù)責(zé)人、維護(hù)管理員可維護(hù)工作的某個(gè)職責(zé)范圍。修改負(fù)責(zé)人、維護(hù)管理員可以是指定的某個(gè)人,也可以是一個(gè)包括管理人員、高級以是指定的某個(gè)人,也可以是一個(gè)包括管理人員、高級技術(shù)人員在內(nèi)的小組。系統(tǒng)監(jiān)督員可以有其他職責(zé),但技術(shù)人員在內(nèi)的小組。系統(tǒng)監(jiān)督員可以有其他職責(zé),但應(yīng)具體分管某一個(gè)軟件包。應(yīng)具體分管某一個(gè)軟件包。8.3 軟件維護(hù)過程8.3.2 8.3.2 維護(hù)工作的流程維護(hù)工作的流程圖圖8-2描述了實(shí)施軟件維護(hù)的工作流程。第描述了實(shí)施軟件維護(hù)

28、的工作流程。第一步是先確認(rèn)維護(hù)要求。這需要維護(hù)人員與用戶一步是先確認(rèn)維護(hù)要求。這需要維護(hù)人員與用戶反復(fù)協(xié)商,弄清錯(cuò)誤概況以及對業(yè)務(wù)的影響大小,反復(fù)協(xié)商,弄清錯(cuò)誤概況以及對業(yè)務(wù)的影響大小,以及用戶希望做什么樣的修改,并把這些情況存以及用戶希望做什么樣的修改,并把這些情況存入故障數(shù)據(jù)庫。然后由維護(hù)組織管理員確認(rèn)維護(hù)入故障數(shù)據(jù)庫。然后由維護(hù)組織管理員確認(rèn)維護(hù)類型。類型。8.3 軟件維護(hù)過程圖圖8- 2 軟件維護(hù)的工作流程圖軟件維護(hù)的工作流程圖8.3 軟件維護(hù)過程對于校正性維護(hù)申請,從評價(jià)錯(cuò)誤的嚴(yán)重性開始。對于校正性維護(hù)申請,從評價(jià)錯(cuò)誤的嚴(yán)重性開始。如果存在一個(gè)嚴(yán)重的錯(cuò)誤,則必須安排人員,在系統(tǒng)監(jiān)如果

29、存在一個(gè)嚴(yán)重的錯(cuò)誤,則必須安排人員,在系統(tǒng)監(jiān)督員的指導(dǎo)下,進(jìn)行問題分析,尋找錯(cuò)誤發(fā)生的原因,督員的指導(dǎo)下,進(jìn)行問題分析,尋找錯(cuò)誤發(fā)生的原因,進(jìn)行進(jìn)行“救火救火”性的緊急維護(hù);對于不嚴(yán)重的錯(cuò)誤,可根性的緊急維護(hù);對于不嚴(yán)重的錯(cuò)誤,可根據(jù)任務(wù)、時(shí)機(jī)情況,視輕重緩急,進(jìn)行排隊(duì),統(tǒng)一安排據(jù)任務(wù)、時(shí)機(jī)情況,視輕重緩急,進(jìn)行排隊(duì),統(tǒng)一安排時(shí)間。時(shí)間。所謂所謂“救火救火”式的緊急維護(hù),是指發(fā)生的錯(cuò)誤非常式的緊急維護(hù),是指發(fā)生的錯(cuò)誤非常嚴(yán)重,不立即修理往往會導(dǎo)致重大事故,這樣就必須緊嚴(yán)重,不立即修理往往會導(dǎo)致重大事故,這樣就必須緊急修改,暫不顧及正常的維護(hù)控制,不必考慮評價(jià)可能急修改,暫不顧及正常的維護(hù)控制,

30、不必考慮評價(jià)可能發(fā)生的副作用。在維護(hù)完成、交付用戶之后再去做補(bǔ)償發(fā)生的副作用。在維護(hù)完成、交付用戶之后再去做補(bǔ)償工作。工作。8.3 軟件維護(hù)過程對于適應(yīng)性維護(hù)和完善性維護(hù)申請,需要先確定每項(xiàng)對于適應(yīng)性維護(hù)和完善性維護(hù)申請,需要先確定每項(xiàng)申請的優(yōu)先次序。若某項(xiàng)申請的優(yōu)先級非常高,就可立即申請的優(yōu)先次序。若某項(xiàng)申請的優(yōu)先級非常高,就可立即開始維護(hù)工作;否則,維護(hù)申請和其他的開發(fā)工作一樣,開始維護(hù)工作;否則,維護(hù)申請和其他的開發(fā)工作一樣,進(jìn)行排隊(duì),統(tǒng)一安排時(shí)間。并不是所有的完善性維護(hù)申請進(jìn)行排隊(duì),統(tǒng)一安排時(shí)間。并不是所有的完善性維護(hù)申請都必須承擔(dān),因?yàn)檫M(jìn)行完善性維護(hù)等于是做二次開發(fā),工都必須承擔(dān),因

31、為進(jìn)行完善性維護(hù)等于是做二次開發(fā),工作量很大,需要根據(jù)商業(yè)需要、可利用資源的情況、目前作量很大,需要根據(jù)商業(yè)需要、可利用資源的情況、目前和將來軟件的發(fā)展方向以及其他的考慮,決定是否承擔(dān)。和將來軟件的發(fā)展方向以及其他的考慮,決定是否承擔(dān)。雖然維護(hù)申請的類型不同,但都要進(jìn)行同樣的技術(shù)工雖然維護(hù)申請的類型不同,但都要進(jìn)行同樣的技術(shù)工作。這些工作有:修改軟件需求說明、修改軟件設(shè)計(jì)、設(shè)作。這些工作有:修改軟件需求說明、修改軟件設(shè)計(jì)、設(shè)計(jì)評審、對源程序做必要的修改、單元測試、集成測試計(jì)評審、對源程序做必要的修改、單元測試、集成測試(回歸測試回歸測試)、確認(rèn)測試、軟件配置評審等。、確認(rèn)測試、軟件配置評審等。

32、8.3 軟件維護(hù)過程在每次軟件維護(hù)任務(wù)完成后,要對維護(hù)任務(wù)進(jìn)行復(fù)在每次軟件維護(hù)任務(wù)完成后,要對維護(hù)任務(wù)進(jìn)行復(fù)審。進(jìn)行復(fù)審時(shí)要回答下列問題:審。進(jìn)行復(fù)審時(shí)要回答下列問題:(1) 在目前情況下,設(shè)計(jì)、編碼和測試中的哪一方在目前情況下,設(shè)計(jì)、編碼和測試中的哪一方面可以改進(jìn)?面可以改進(jìn)?(2) 各種維護(hù)資源已經(jīng)用了哪些?還有哪些未用各種維護(hù)資源已經(jīng)用了哪些?還有哪些未用(3) 工作中主要的或次要的障礙是什么?工作中主要的或次要的障礙是什么?(4) 從維護(hù)申請的類型來看是否應(yīng)當(dāng)有預(yù)防性維護(hù)?從維護(hù)申請的類型來看是否應(yīng)當(dāng)有預(yù)防性維護(hù)?情況復(fù)審對將來的維護(hù)工作如何進(jìn)行會產(chǎn)生重要的情況復(fù)審對將來的維護(hù)工作如何

33、進(jìn)行會產(chǎn)生重要的影響,并可為軟件機(jī)構(gòu)的有效管理提供重要的反饋信息。影響,并可為軟件機(jī)構(gòu)的有效管理提供重要的反饋信息。8.3 軟件維護(hù)過程8.3.3 8.3.3 維護(hù)技術(shù)維護(hù)技術(shù)有兩類維護(hù)技術(shù),它們是面向維護(hù)的技術(shù)和有兩類維護(hù)技術(shù),它們是面向維護(hù)的技術(shù)和維護(hù)支援技術(shù)。面向維護(hù)的技術(shù)是在軟件開發(fā)階維護(hù)支援技術(shù)。面向維護(hù)的技術(shù)是在軟件開發(fā)階段用來減少錯(cuò)誤、提高軟件可維護(hù)性的技術(shù)。維段用來減少錯(cuò)誤、提高軟件可維護(hù)性的技術(shù)。維護(hù)支援技術(shù)是在軟件維護(hù)階段用來提高維護(hù)工作護(hù)支援技術(shù)是在軟件維護(hù)階段用來提高維護(hù)工作的效率和質(zhì)量的技術(shù)。的效率和質(zhì)量的技術(shù)。(1) 面向維護(hù)的技術(shù)面向維護(hù)的技術(shù)面向維護(hù)的技術(shù)涉及軟

34、件開發(fā)的所有階段。面向維護(hù)的技術(shù)涉及軟件開發(fā)的所有階段。8.3 軟件維護(hù)過程在需求分析階段,對用戶的需求進(jìn)行嚴(yán)格的分析定義,在需求分析階段,對用戶的需求進(jìn)行嚴(yán)格的分析定義,使之沒有矛盾和易于理解,可以減少軟件中的錯(cuò)誤。例如使之沒有矛盾和易于理解,可以減少軟件中的錯(cuò)誤。例如美國密執(zhí)安大學(xué)的美國密執(zhí)安大學(xué)的ISDOS系統(tǒng)就是需求分析階段使用的系統(tǒng)就是需求分析階段使用的一種分析與文檔化工具,可以用它來檢查需求說明書的一一種分析與文檔化工具,可以用它來檢查需求說明書的一致性和完備性。致性和完備性。在設(shè)計(jì)階段,劃分模塊時(shí)充分考慮將來改動或擴(kuò)充的在設(shè)計(jì)階段,劃分模塊時(shí)充分考慮將來改動或擴(kuò)充的可能性。使用結(jié)

35、構(gòu)化分析和結(jié)構(gòu)化設(shè)計(jì)方法,采用容易變可能性。使用結(jié)構(gòu)化分析和結(jié)構(gòu)化設(shè)計(jì)方法,采用容易變更的、不依賴于特定硬件和特定操作系統(tǒng)的設(shè)計(jì)。更的、不依賴于特定硬件和特定操作系統(tǒng)的設(shè)計(jì)。在編碼階段,采用靈活的數(shù)據(jù)結(jié)構(gòu)。使程序相對獨(dú)立在編碼階段,采用靈活的數(shù)據(jù)結(jié)構(gòu)。使程序相對獨(dú)立于數(shù)據(jù)的物理結(jié)構(gòu),養(yǎng)成良好的編程風(fēng)格。于數(shù)據(jù)的物理結(jié)構(gòu),養(yǎng)成良好的編程風(fēng)格。在測試階段,盡可能多的發(fā)現(xiàn)錯(cuò)誤,保存測試用例和在測試階段,盡可能多的發(fā)現(xiàn)錯(cuò)誤,保存測試用例和測試數(shù)據(jù)等。測試數(shù)據(jù)等。8.3 軟件維護(hù)過程(2) 維護(hù)支援技術(shù):包括以下各方面的技術(shù)。維護(hù)支援技術(shù):包括以下各方面的技術(shù)。 信息收集。信息收集。 錯(cuò)誤原因分析。錯(cuò)誤

36、原因分析。 軟件分析與理解。軟件分析與理解。 維護(hù)方案評價(jià)。維護(hù)方案評價(jià)。 代碼與文檔修改。代碼與文檔修改。 修改后的確認(rèn)。修改后的確認(rèn)。 遠(yuǎn)距離的維護(hù)。遠(yuǎn)距離的維護(hù)。 8.4 軟件的可維護(hù)性許多軟件的維護(hù)很困難,這是因?yàn)檐浖脑丛S多軟件的維護(hù)很困難,這是因?yàn)檐浖脑闯绦蚝臀臋n難于理解和修改,造成軟件維護(hù)工作程序和文檔難于理解和修改,造成軟件維護(hù)工作量大、成本量大、成本 上升、修改出錯(cuò)率高。由于維護(hù)工上升、修改出錯(cuò)率高。由于維護(hù)工作面廣,維護(hù)的難度大,稍有不慎就會在修改中作面廣,維護(hù)的難度大,稍有不慎就會在修改中給軟件帶來新的問題或引入新的錯(cuò)誤,所以為了給軟件帶來新的問題或引入新的錯(cuò)誤,所以為

37、了使得軟件能夠易于維護(hù),必須考慮使軟件具有可使得軟件能夠易于維護(hù),必須考慮使軟件具有可維護(hù)性。維護(hù)性。8.4 軟件的可維護(hù)性8.4.1 8.4.1 軟件可維護(hù)性的定義軟件可維護(hù)性的定義軟件可維護(hù)性是指軟件能夠被理解,并能糾正軟件軟件可維護(hù)性是指軟件能夠被理解,并能糾正軟件系統(tǒng)出現(xiàn)的錯(cuò)誤和缺陷,以及為滿足新的要求進(jìn)行修改、系統(tǒng)出現(xiàn)的錯(cuò)誤和缺陷,以及為滿足新的要求進(jìn)行修改、擴(kuò)充或壓縮的容易程度。擴(kuò)充或壓縮的容易程度。軟件的可維護(hù)性、可使用性和可靠性是衡量軟件質(zhì)軟件的可維護(hù)性、可使用性和可靠性是衡量軟件質(zhì)量的幾個(gè)主要特性,也是用戶十分關(guān)心的問題之一。但量的幾個(gè)主要特性,也是用戶十分關(guān)心的問題之一。但

38、是影響軟件質(zhì)量的這些因素,目前還沒有普遍適用的定是影響軟件質(zhì)量的這些因素,目前還沒有普遍適用的定量度量的方法。量度量的方法。8.4 軟件的可維護(hù)性軟件的可維護(hù)性是軟件開發(fā)階段各個(gè)時(shí)期的關(guān)鍵目標(biāo)。軟件的可維護(hù)性是軟件開發(fā)階段各個(gè)時(shí)期的關(guān)鍵目標(biāo)。影響軟件可維護(hù)性的因素很多,設(shè)計(jì)、編碼和測試中的疏忽影響軟件可維護(hù)性的因素很多,設(shè)計(jì)、編碼和測試中的疏忽和低劣的軟件配置,缺少文檔等都對軟件的可維護(hù)性產(chǎn)生不和低劣的軟件配置,缺少文檔等都對軟件的可維護(hù)性產(chǎn)生不良影響。軟件維護(hù)可用如下的七個(gè)質(zhì)量特性來衡量,即可理良影響。軟件維護(hù)可用如下的七個(gè)質(zhì)量特性來衡量,即可理解性、可測試性、可修改性、可靠性、可移植性、可

39、使用性解性、可測試性、可修改性、可靠性、可移植性、可使用性和效率。而且對于不同類型的維護(hù),這七種特性的側(cè)重點(diǎn)也和效率。而且對于不同類型的維護(hù),這七種特性的側(cè)重點(diǎn)也不相同。這些質(zhì)量特性通常體現(xiàn)在軟件產(chǎn)品的許多方面。將不相同。這些質(zhì)量特性通常體現(xiàn)在軟件產(chǎn)品的許多方面。將這些特性作為基本要求,需要在軟件開發(fā)的整個(gè)階段都采用這些特性作為基本要求,需要在軟件開發(fā)的整個(gè)階段都采用相應(yīng)的措施保證,也就是說這些質(zhì)量要求滲透到軟件開發(fā)的相應(yīng)的措施保證,也就是說這些質(zhì)量要求滲透到軟件開發(fā)的各個(gè)步驟中。因此,軟件的可維護(hù)性是產(chǎn)品投入運(yùn)行以前各各個(gè)步驟中。因此,軟件的可維護(hù)性是產(chǎn)品投入運(yùn)行以前各階段面臨這七種質(zhì)量特性

40、要求進(jìn)行開發(fā)的最終結(jié)果。階段面臨這七種質(zhì)量特性要求進(jìn)行開發(fā)的最終結(jié)果。8.4 軟件的可維護(hù)性表表8- 1 各類維護(hù)中的側(cè)重點(diǎn)各類維護(hù)中的側(cè)重點(diǎn)表表8-1列出了在各類維護(hù)中應(yīng)側(cè)重哪些特性。列出了在各類維護(hù)中應(yīng)側(cè)重哪些特性。8.4 軟件的可維護(hù)性8.4.2 8.4.2 可維護(hù)性的度量可維護(hù)性的度量目前有幾種對軟件可維護(hù)性進(jìn)行綜合度量的方法,但目前有幾種對軟件可維護(hù)性進(jìn)行綜合度量的方法,但要對可維護(hù)性做出定量度量還是較困難的。這里介紹度量要對可維護(hù)性做出定量度量還是較困難的。這里介紹度量一個(gè)可維護(hù)的軟件的七種特性時(shí)常用的方法,即質(zhì)量檢查一個(gè)可維護(hù)的軟件的七種特性時(shí)常用的方法,即質(zhì)量檢查表、質(zhì)量測試和

41、質(zhì)量標(biāo)準(zhǔn)。表、質(zhì)量測試和質(zhì)量標(biāo)準(zhǔn)。質(zhì)量檢查表用于測試程序中某些質(zhì)量特性是否存在的質(zhì)量檢查表用于測試程序中某些質(zhì)量特性是否存在的一個(gè)問題清單。評測者針對檢查表上的每一個(gè)問題,依據(jù)一個(gè)問題清單。評測者針對檢查表上的每一個(gè)問題,依據(jù)自己的定性判斷,回答自己的定性判斷,回答“是是”或者或者“否否”。質(zhì)量測試和質(zhì)。質(zhì)量測試和質(zhì)量標(biāo)準(zhǔn)用于定量分析和評價(jià)程序的質(zhì)量。量標(biāo)準(zhǔn)用于定量分析和評價(jià)程序的質(zhì)量。由于許多質(zhì)量特性是相互抵觸的,要考慮幾種不同的由于許多質(zhì)量特性是相互抵觸的,要考慮幾種不同的度量標(biāo)準(zhǔn),去度量不同的質(zhì)量特性。度量標(biāo)準(zhǔn),去度量不同的質(zhì)量特性。8.4 軟件的可維護(hù)性1. 可理解性可理解性可理解性表

42、明人們通過閱讀源代碼和相關(guān)文檔,了可理解性表明人們通過閱讀源代碼和相關(guān)文檔,了解軟件功能及其運(yùn)行狀況的容易程度。一個(gè)可理解的軟解軟件功能及其運(yùn)行狀況的容易程度。一個(gè)可理解的軟件主要應(yīng)該具備的以下特性:模塊化,風(fēng)格一致性,使件主要應(yīng)該具備的以下特性:模塊化,風(fēng)格一致性,使用清晰明確的代碼,使用有意義的數(shù)據(jù)名和過程名,結(jié)用清晰明確的代碼,使用有意義的數(shù)據(jù)名和過程名,結(jié)構(gòu)化,完整性等。構(gòu)化,完整性等。對于可理解性,可以使用一種叫做對于可理解性,可以使用一種叫做“90-10測試法測試法”來衡量。即讓有經(jīng)驗(yàn)的程序員閱讀來衡量。即讓有經(jīng)驗(yàn)的程序員閱讀10分鐘要測試的程序,分鐘要測試的程序,然后把這個(gè)程序拿

43、開,這個(gè)程序員如能憑記憶和理解寫然后把這個(gè)程序拿開,這個(gè)程序員如能憑記憶和理解寫出出90的程序,則稱該程序是可理解的。的程序,則稱該程序是可理解的。8.4 軟件的可維護(hù)性2. 可靠性可靠性可靠性表明一個(gè)軟件按照用戶的要求和設(shè)計(jì)目標(biāo),在給可靠性表明一個(gè)軟件按照用戶的要求和設(shè)計(jì)目標(biāo),在給定的一段時(shí)間內(nèi)正確執(zhí)行的概率??煽啃缘闹饕攘繕?biāo)準(zhǔn)有:定的一段時(shí)間內(nèi)正確執(zhí)行的概率??煽啃缘闹饕攘繕?biāo)準(zhǔn)有:平均失效間隔時(shí)間、平均修復(fù)時(shí)間、有效性。度量可靠性的平均失效間隔時(shí)間、平均修復(fù)時(shí)間、有效性。度量可靠性的方法,主要有兩類:方法,主要有兩類:(1) 根據(jù)軟件錯(cuò)誤統(tǒng)計(jì)數(shù)字,進(jìn)行可靠性預(yù)測??衫酶鶕?jù)軟件錯(cuò)誤統(tǒng)計(jì)

44、數(shù)字,進(jìn)行可靠性預(yù)測??衫靡恍┛煽啃阅P?,根據(jù)程序測試時(shí)發(fā)現(xiàn)并排除的錯(cuò)誤數(shù)預(yù)測一些可靠性模型,根據(jù)程序測試時(shí)發(fā)現(xiàn)并排除的錯(cuò)誤數(shù)預(yù)測平均失效間隔時(shí)間。平均失效間隔時(shí)間。(2) 根據(jù)軟件復(fù)雜性,預(yù)測軟件可靠性。使用這種方法根據(jù)軟件復(fù)雜性,預(yù)測軟件可靠性。使用這種方法的前提條件是可靠性與復(fù)雜性有關(guān)。程序復(fù)雜性度量標(biāo)準(zhǔn)可的前提條件是可靠性與復(fù)雜性有關(guān)。程序復(fù)雜性度量標(biāo)準(zhǔn)可用于預(yù)測哪些模塊最可能發(fā)生錯(cuò)誤,以及可能出現(xiàn)的錯(cuò)誤類用于預(yù)測哪些模塊最可能發(fā)生錯(cuò)誤,以及可能出現(xiàn)的錯(cuò)誤類型,了解錯(cuò)誤類型及它們可能出現(xiàn)在哪里,能更快地查出和型,了解錯(cuò)誤類型及它們可能出現(xiàn)在哪里,能更快地查出和糾正更多的錯(cuò)誤,提高可靠

45、性。糾正更多的錯(cuò)誤,提高可靠性。8.4 軟件的可維護(hù)性3. 可測試性可測試性可測試性表明論證軟件正確性的容易程度。程序越可測試性表明論證軟件正確性的容易程度。程序越簡單,驗(yàn)證其正確性就越容易。對于軟件中的程序模塊,簡單,驗(yàn)證其正確性就越容易。對于軟件中的程序模塊,可用程序復(fù)雜性來度量可測試性。顯然,程序的環(huán)路復(fù)可用程序復(fù)雜性來度量可測試性。顯然,程序的環(huán)路復(fù)雜性越大,程序的路徑就越多,全面測試程序的難度就雜性越大,程序的路徑就越多,全面測試程序的難度就越大。越大。4. 可修改性可修改性可修改性表明軟件容易修改的程度。一個(gè)可修改的可修改性表明軟件容易修改的程度。一個(gè)可修改的軟件應(yīng)當(dāng)是可理解的、通

46、用的、靈活的、簡單的。其中,軟件應(yīng)當(dāng)是可理解的、通用的、靈活的、簡單的。其中,通用是指當(dāng)軟件適用的功能發(fā)生改變而無需修改。靈活通用是指當(dāng)軟件適用的功能發(fā)生改變而無需修改。靈活指很容易對軟件進(jìn)行修改。指很容易對軟件進(jìn)行修改。8.4 軟件的可維護(hù)性測試可修改性的一種定量方法是修改練習(xí)?;舅枷胧菧y試可修改性的一種定量方法是修改練習(xí)?;舅枷胧峭ㄟ^做幾個(gè)簡單的修改,來評價(jià)修改難度。設(shè)通過做幾個(gè)簡單的修改,來評價(jià)修改難度。設(shè)C是程序中各是程序中各個(gè)模塊的平均復(fù)雜性,個(gè)模塊的平均復(fù)雜性,A是必須修改的模塊數(shù),是必須修改的模塊數(shù),D是要修改是要修改的模塊的平均復(fù)雜性。則修改的難度公式為:的模塊的平均復(fù)雜性

47、。則修改的難度公式為:D=A/C在簡單修改時(shí)當(dāng)在簡單修改時(shí)當(dāng)D1,說明該軟件修改困難。,說明該軟件修改困難。A和和C可用可用任何一種度量程序復(fù)雜性的方法計(jì)算。任何一種度量程序復(fù)雜性的方法計(jì)算。5. 可移植性可移植性表明軟件轉(zhuǎn)移到一個(gè)新的計(jì)算環(huán)境的可能性的大小,或表明軟件轉(zhuǎn)移到一個(gè)新的計(jì)算環(huán)境的可能性的大小,或者表明軟件能有效地在各種環(huán)境中運(yùn)行的容易程度。一個(gè)可者表明軟件能有效地在各種環(huán)境中運(yùn)行的容易程度。一個(gè)可移植性好的軟件應(yīng)具有良好、靈活、不依賴于某一具體計(jì)算移植性好的軟件應(yīng)具有良好、靈活、不依賴于某一具體計(jì)算機(jī)或操作系統(tǒng)的性能。機(jī)或操作系統(tǒng)的性能。8.4 軟件的可維護(hù)性6. 效率效率效率表

48、明一個(gè)軟件能執(zhí)行預(yù)定功能而又不浪效率表明一個(gè)軟件能執(zhí)行預(yù)定功能而又不浪費(fèi)機(jī)器資源的程度,這些資源包括:內(nèi)存容量、費(fèi)機(jī)器資源的程度,這些資源包括:內(nèi)存容量、外存容量、通道容量和執(zhí)行時(shí)間。外存容量、通道容量和執(zhí)行時(shí)間。7. 可使用性可使用性站在用戶的角度,可使用性是軟件方便、實(shí)站在用戶的角度,可使用性是軟件方便、實(shí)用、及易于使用的程度。一個(gè)可使用的程序應(yīng)該用、及易于使用的程度。一個(gè)可使用的程序應(yīng)該易于使用、允許出錯(cuò)和修改,而盡可能保證用戶易于使用、允許出錯(cuò)和修改,而盡可能保證用戶在使用時(shí)不陷入混亂狀態(tài)。在使用時(shí)不陷入混亂狀態(tài)。8.4 軟件的可維護(hù)性8.4.3 8.4.3 提高可維護(hù)性的方法提高可維

49、護(hù)性的方法軟件的可維護(hù)性對于延長軟件的生存期具有軟件的可維護(hù)性對于延長軟件的生存期具有決定意義,因此必須考慮怎樣才能提高軟件的可決定意義,因此必須考慮怎樣才能提高軟件的可維護(hù)性。為此,可從以下五個(gè)方面著手。維護(hù)性。為此,可從以下五個(gè)方面著手。8.4 軟件的可維護(hù)性1. 建立明確的軟件質(zhì)量目標(biāo)建立明確的軟件質(zhì)量目標(biāo)如果要程序完全滿足可維護(hù)性的七種質(zhì)量特性,需要付如果要程序完全滿足可維護(hù)性的七種質(zhì)量特性,需要付出很大的代價(jià),而且也不一定行得通。實(shí)際上,某些質(zhì)量特出很大的代價(jià),而且也不一定行得通。實(shí)際上,某些質(zhì)量特性是相互促進(jìn)的,如可理解性和可測試性,可理解性和可修性是相互促進(jìn)的,如可理解性和可測試

50、性,可理解性和可修改性;某些質(zhì)量特性是相互抵觸的,如效率和可移植性,效改性;某些質(zhì)量特性是相互抵觸的,如效率和可移植性,效率和可修改性。因此,為保證程序的可維護(hù)性,應(yīng)該在一定率和可修改性。因此,為保證程序的可維護(hù)性,應(yīng)該在一定程度上滿足可維護(hù)的各個(gè)特性,但各個(gè)特性的重要性又是隨程度上滿足可維護(hù)的各個(gè)特性,但各個(gè)特性的重要性又是隨著程序的用途或計(jì)算機(jī)環(huán)境的不同而改變的。對編譯程序來著程序的用途或計(jì)算機(jī)環(huán)境的不同而改變的。對編譯程序來說,效率和可移植性是主要的;對信息管理系統(tǒng)來說,可使說,效率和可移植性是主要的;對信息管理系統(tǒng)來說,可使用性和可修改性可能是主要的。所以在對程序的質(zhì)量特性提用性和可修

51、改性可能是主要的。所以在對程序的質(zhì)量特性提出目標(biāo)的同時(shí),還必須規(guī)定它們的優(yōu)先級。出目標(biāo)的同時(shí),還必須規(guī)定它們的優(yōu)先級。8.4 軟件的可維護(hù)性2. 使用先進(jìn)的軟件開發(fā)技術(shù)和工具使用先進(jìn)的軟件開發(fā)技術(shù)和工具利用先進(jìn)的軟件開發(fā)技術(shù)是軟件開發(fā)過程中利用先進(jìn)的軟件開發(fā)技術(shù)是軟件開發(fā)過程中提高軟件質(zhì)量,降低成本的有效方法之一,也是提高軟件質(zhì)量,降低成本的有效方法之一,也是提高可維護(hù)性的有效的技術(shù)。常用的技術(shù)有:模提高可維護(hù)性的有效的技術(shù)。常用的技術(shù)有:模塊化、結(jié)構(gòu)化程序設(shè)計(jì),自動重建結(jié)構(gòu)和重新格塊化、結(jié)構(gòu)化程序設(shè)計(jì),自動重建結(jié)構(gòu)和重新格式化的工具等。例如,面向?qū)ο蟮能浖_發(fā)方法式化的工具等。例如,面向?qū)ο?/p>

52、的軟件開發(fā)方法就是一個(gè)非常使用而強(qiáng)有力的軟件開發(fā)方法。就是一個(gè)非常使用而強(qiáng)有力的軟件開發(fā)方法。8.4 軟件的可維護(hù)性3. 進(jìn)行明確的質(zhì)量保證審查進(jìn)行明確的質(zhì)量保證審查質(zhì)量保證審查對于獲得和維持軟件的質(zhì)量,是一個(gè)很有質(zhì)量保證審查對于獲得和維持軟件的質(zhì)量,是一個(gè)很有用的技術(shù)。除了保證軟件得到適當(dāng)?shù)馁|(zhì)量外,審查還可以用用的技術(shù)。除了保證軟件得到適當(dāng)?shù)馁|(zhì)量外,審查還可以用來檢測在開發(fā)和維護(hù)階段內(nèi)發(fā)生的質(zhì)量變化。一旦檢測出問來檢測在開發(fā)和維護(hù)階段內(nèi)發(fā)生的質(zhì)量變化。一旦檢測出問題,就可以采取措施進(jìn)行糾正,以控制不斷增長的軟件維護(hù)題,就可以采取措施進(jìn)行糾正,以控制不斷增長的軟件維護(hù)成本,延長軟件系統(tǒng)的有效生

53、命期。成本,延長軟件系統(tǒng)的有效生命期。在軟件開發(fā)和軟件維護(hù)的各階段,質(zhì)量保證檢查是非常在軟件開發(fā)和軟件維護(hù)的各階段,質(zhì)量保證檢查是非常有效的方法。保證軟件質(zhì)量的最佳方法就是在軟件開發(fā)的最有效的方法。保證軟件質(zhì)量的最佳方法就是在軟件開發(fā)的最初階段就把質(zhì)量和可維護(hù)性要求考慮進(jìn)去,并在開發(fā)過程每初階段就把質(zhì)量和可維護(hù)性要求考慮進(jìn)去,并在開發(fā)過程每一階段的終點(diǎn),設(shè)置檢查點(diǎn)進(jìn)行檢查。檢查的目的是要證實(shí),一階段的終點(diǎn),設(shè)置檢查點(diǎn)進(jìn)行檢查。檢查的目的是要證實(shí),已開發(fā)的軟件是否符合標(biāo)準(zhǔn),是否滿足規(guī)定的質(zhì)量需求。在已開發(fā)的軟件是否符合標(biāo)準(zhǔn),是否滿足規(guī)定的質(zhì)量需求。在不同的檢查點(diǎn),檢查的重點(diǎn)不完全相同,如圖不同的

54、檢查點(diǎn),檢查的重點(diǎn)不完全相同,如圖8-3所示。所示。8.4 軟件的可維護(hù)性圖圖8- 3 軟件開發(fā)期間各個(gè)檢查點(diǎn)的檢查重點(diǎn)軟件開發(fā)期間各個(gè)檢查點(diǎn)的檢查重點(diǎn)8.4 軟件的可維護(hù)性例如在設(shè)計(jì)階段,檢查重點(diǎn)是可理解性、可修改性、可例如在設(shè)計(jì)階段,檢查重點(diǎn)是可理解性、可修改性、可測試性,可理解性檢查的重點(diǎn)是程序的復(fù)雜性。測試性,可理解性檢查的重點(diǎn)是程序的復(fù)雜性。4. 驗(yàn)收檢查驗(yàn)收檢查驗(yàn)收檢查是一個(gè)特殊的檢查點(diǎn)的檢查,它實(shí)際上是驗(yàn)收驗(yàn)收檢查是一個(gè)特殊的檢查點(diǎn)的檢查,它實(shí)際上是驗(yàn)收測試的一部分,它是把軟件從開發(fā)轉(zhuǎn)移到維護(hù)的最后一次檢測試的一部分,它是把軟件從開發(fā)轉(zhuǎn)移到維護(hù)的最后一次檢查查,是軟件投入運(yùn)行之前

55、保證可維護(hù)性的最后機(jī)會。它對減是軟件投入運(yùn)行之前保證可維護(hù)性的最后機(jī)會。它對減少維護(hù)費(fèi)用,提高軟件質(zhì)量非常重要。少維護(hù)費(fèi)用,提高軟件質(zhì)量非常重要。 需求和規(guī)范標(biāo)準(zhǔn):以需求規(guī)格說明書為標(biāo)準(zhǔn),進(jìn)行檢需求和規(guī)范標(biāo)準(zhǔn):以需求規(guī)格說明書為標(biāo)準(zhǔn),進(jìn)行檢查,區(qū)分必須的、任選的、將來的需求;包括對系統(tǒng)運(yùn)行時(shí)查,區(qū)分必須的、任選的、將來的需求;包括對系統(tǒng)運(yùn)行時(shí)的計(jì)算機(jī)設(shè)備的需求;對維護(hù)、測試、操作、以及維護(hù)人員的計(jì)算機(jī)設(shè)備的需求;對維護(hù)、測試、操作、以及維護(hù)人員的需求;對測試工具等的需求。的需求;對測試工具等的需求。8.4 軟件的可維護(hù)性 設(shè)計(jì)標(biāo)準(zhǔn)軟件應(yīng)設(shè)計(jì)成分層的模塊結(jié)構(gòu)。每個(gè)模塊設(shè)計(jì)標(biāo)準(zhǔn)軟件應(yīng)設(shè)計(jì)成分層的模

56、塊結(jié)構(gòu)。每個(gè)模塊應(yīng)完成獨(dú)立的功能,滿足高內(nèi)聚、低耦合的原則。通過一應(yīng)完成獨(dú)立的功能,滿足高內(nèi)聚、低耦合的原則。通過一些知道預(yù)期變化的實(shí)例,說明設(shè)計(jì)的可擴(kuò)充性、可縮減性些知道預(yù)期變化的實(shí)例,說明設(shè)計(jì)的可擴(kuò)充性、可縮減性和可適應(yīng)性。和可適應(yīng)性。 源代碼標(biāo)準(zhǔn)盡可能使用最高級的程序設(shè)計(jì)語言,且源代碼標(biāo)準(zhǔn)盡可能使用最高級的程序設(shè)計(jì)語言,且只使用語言的標(biāo)準(zhǔn)版本;所有的代碼都必須具有良好的結(jié)只使用語言的標(biāo)準(zhǔn)版本;所有的代碼都必須具有良好的結(jié)構(gòu);所有的代碼都必須文檔化,在注釋中說明它的輸入、構(gòu);所有的代碼都必須文檔化,在注釋中說明它的輸入、輸出以及便于測試、再測試的一些特點(diǎn)與風(fēng)格。輸出以及便于測試、再測試的一

57、些特點(diǎn)與風(fēng)格。 文檔標(biāo)準(zhǔn):文檔中應(yīng)說明程序的輸入文檔標(biāo)準(zhǔn):文檔中應(yīng)說明程序的輸入/輸出、使用輸出、使用方法方法/算法、錯(cuò)誤恢復(fù)方法、所有參數(shù)的范圍以及缺省條算法、錯(cuò)誤恢復(fù)方法、所有參數(shù)的范圍以及缺省條件等。件等。8.4 軟件的可維護(hù)性5. 周期性的維護(hù)檢查周期性的維護(hù)檢查上述兩種軟件檢查可用來保證新的軟件系統(tǒng)的可維護(hù)上述兩種軟件檢查可用來保證新的軟件系統(tǒng)的可維護(hù)性。對已運(yùn)行的軟件應(yīng)該進(jìn)行周期性的維護(hù)檢查。軟件在性。對已運(yùn)行的軟件應(yīng)該進(jìn)行周期性的維護(hù)檢查。軟件在運(yùn)行期間,為了糾正在開發(fā)階段未發(fā)現(xiàn)的錯(cuò)誤和缺陷,使運(yùn)行期間,為了糾正在開發(fā)階段未發(fā)現(xiàn)的錯(cuò)誤和缺陷,使軟件適應(yīng)新的計(jì)算機(jī)環(huán)境并滿足變化的用

58、戶要求,必須對軟件適應(yīng)新的計(jì)算機(jī)環(huán)境并滿足變化的用戶要求,必須對正在使用的軟件進(jìn)行修改。修改軟件可能引入新的錯(cuò)誤并正在使用的軟件進(jìn)行修改。修改軟件可能引入新的錯(cuò)誤并破壞原來程序概念的完整性。因此,必須像硬件的定期檢破壞原來程序概念的完整性。因此,必須像硬件的定期檢查一樣,每月一次,或兩月一次,對軟件做周期性的維護(hù)查一樣,每月一次,或兩月一次,對軟件做周期性的維護(hù)審查,以跟蹤軟件質(zhì)量的變化。審查,以跟蹤軟件質(zhì)量的變化。周期性維護(hù)審查實(shí)際上是開發(fā)階段檢查點(diǎn)復(fù)查的繼續(xù),周期性維護(hù)審查實(shí)際上是開發(fā)階段檢查點(diǎn)復(fù)查的繼續(xù),并且采用的檢查方法、檢查內(nèi)容都是相同的。并且采用的檢查方法、檢查內(nèi)容都是相同的。8.

59、4 軟件的可維護(hù)性6. 選擇可維護(hù)的程序設(shè)計(jì)語言選擇可維護(hù)的程序設(shè)計(jì)語言程序設(shè)計(jì)語言的選擇的不同,對程序的可維護(hù)性影程序設(shè)計(jì)語言的選擇的不同,對程序的可維護(hù)性影響很大。很明顯,低級語言很難理解和掌握,維護(hù)當(dāng)然響很大。很明顯,低級語言很難理解和掌握,維護(hù)當(dāng)然很困難。高級語言比低級語言更容易理解,但同是高級很困難。高級語言比低級語言更容易理解,但同是高級語言,可理解的程度也不一樣。例如,用戶使用第四代語言,可理解的程度也不一樣。例如,用戶使用第四代語言開發(fā)商業(yè)應(yīng)用程序比使用通常的高級語言快很多倍。語言開發(fā)商業(yè)應(yīng)用程序比使用通常的高級語言快很多倍。一些第四代語言是過程語言,而另一些是非過程語言。一些

60、第四代語言是過程語言,而另一些是非過程語言。對非過程語言,用戶不需要指出實(shí)現(xiàn)算法,只需向編譯對非過程語言,用戶不需要指出實(shí)現(xiàn)算法,只需向編譯程序或解釋程序提出自己的要求。例如它能自動選擇報(bào)程序或解釋程序提出自己的要求。例如它能自動選擇報(bào)表格式、文字字符類型等。另外,第四代語言容易理解,表格式、文字字符類型等。另外,第四代語言容易理解,容易編程,程序容易修改,從維護(hù)角度來看,第四代語容易編程,程序容易修改,從維護(hù)角度來看,第四代語言就比其他語言更容易維護(hù)。言就比其他語言更容易維護(hù)。8.4 軟件的可維護(hù)性7. 健全程序的文檔健全程序的文檔(1) 程序文檔程序文檔程序文檔是對程序的總目標(biāo)、程序的各組

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論