




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第8章 軟件維護(hù) 8.1 軟件維護(hù)的內(nèi)容 8.2 軟件維護(hù)的特點(diǎn) 8.3 軟件維護(hù)過(guò)程 8.4 軟件的可維護(hù)性 8.5 軟件再工程過(guò)程 實(shí)例分析 本章小結(jié)軟件開(kāi)發(fā)完成交付用戶使用后,就進(jìn)入生存周期軟件開(kāi)發(fā)完成交付用戶使用后,就進(jìn)入生存周期的最后一個(gè)階段的最后一個(gè)階段軟件的運(yùn)行和維護(hù)階段。軟件軟件的運(yùn)行和維護(hù)階段。軟件維護(hù)工作處于軟件生命期的最后階段,維護(hù)階段也維護(hù)工作處于軟件生命期的最后階段,維護(hù)階段也是軟件生存期中最長(zhǎng)的一個(gè)階段,所花費(fèi)的人力、是軟件生存期中最長(zhǎng)的一個(gè)階段,所花費(fèi)的人力、物力最多,其花費(fèi)高達(dá)整個(gè)軟件生命期花費(fèi)的約物力最多,其花費(fèi)高達(dá)整個(gè)軟件生命期花費(fèi)的約6070。因?yàn)橛?jì)算機(jī)程
2、序總是會(huì)發(fā)生變化,對(duì)隱。因?yàn)橛?jì)算機(jī)程序總是會(huì)發(fā)生變化,對(duì)隱含錯(cuò)誤的修改,新功能的加入,環(huán)境變化造成的程含錯(cuò)誤的修改,新功能的加入,環(huán)境變化造成的程序變動(dòng)等。因此,做好維護(hù)工作具有特別重要的意序變動(dòng)等。因此,做好維護(hù)工作具有特別重要的意義,應(yīng)該充分認(rèn)識(shí)到維護(hù)工作的重要性和迫切性,義,應(yīng)該充分認(rèn)識(shí)到維護(hù)工作的重要性和迫切性,提高軟件的可維護(hù)性,減少維護(hù)的工作量和費(fèi)用,提高軟件的可維護(hù)性,減少維護(hù)的工作量和費(fèi)用,延長(zhǎng)已經(jīng)開(kāi)發(fā)軟件的生命期,以發(fā)揮其應(yīng)有的效益。延長(zhǎng)已經(jīng)開(kāi)發(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ò)誤,或者因滿足新的需求而加入新功能的修改軟件的過(guò)程。修改軟件的過(guò)程。軟件維護(hù)是軟件工程的一個(gè)重要任務(wù),其主要工軟件維護(hù)是軟件工程的一個(gè)重要任務(wù),其主要工作就是在軟件運(yùn)行和維護(hù)階段對(duì)軟件產(chǎn)品所進(jìn)行必要作就是在軟件運(yùn)行和維護(hù)階段對(duì)軟件產(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)在測(cè)試階段未能發(fā)現(xiàn)的潛在軟在運(yùn)行中發(fā)現(xiàn)在測(cè)試階段未能發(fā)現(xiàn)的潛在軟件錯(cuò)誤和設(shè)計(jì)缺陷,而這些錯(cuò)誤或缺陷
4、在特定的使用件錯(cuò)誤和設(shè)計(jì)缺陷,而這些錯(cuò)誤或缺陷在特定的使用條件下暴露出來(lái)了。條件下暴露出來(lái)了。2. 用戶和數(shù)據(jù)處理人員在使用時(shí)常提出改進(jìn)現(xiàn)用戶和數(shù)據(jù)處理人員在使用時(shí)常提出改進(jìn)現(xiàn)有功能,增加新的功能,以及改善總體性能的要求,有功能,增加新的功能,以及改善總體性能的要求,為滿足這些要求,就需要修改軟件把這些要求納入到為滿足這些要求,就需要修改軟件把這些要求納入到軟件之中。軟件之中。3. 因在軟件使用過(guò)程中數(shù)據(jù)環(huán)境發(fā)生變化(例因在軟件使用過(guò)程中數(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ò)充。隨著社會(huì)對(duì)計(jì)算機(jī)的需求越來(lái)越大,要求軟件必須快隨著社會(huì)對(duì)計(jì)算機(jī)的需求越來(lái)越大,要求軟件必須快速發(fā)展。在軟件快速發(fā)展的同時(shí),應(yīng)該考慮軟件的開(kāi)速發(fā)展。在軟件快速發(fā)展的同時(shí),應(yīng)該考慮軟件的開(kāi)發(fā)成本,顯然,對(duì)軟件進(jìn)行維護(hù)的目的是為了糾正軟發(fā)成本,顯然,對(duì)軟件進(jìn)行維護(hù)的目的是為了糾正軟件開(kāi)發(fā)過(guò)
6、程未發(fā)現(xiàn)的錯(cuò)誤,增強(qiáng)、改進(jìn)和完善軟件的件開(kāi)發(fā)過(guò)程未發(fā)現(xiàn)的錯(cuò)誤,增強(qiáng)、改進(jìn)和完善軟件的功能和性能,以適應(yīng)軟件的發(fā)展,延長(zhǎng)軟件的壽命讓功能和性能,以適應(yīng)軟件的發(fā)展,延長(zhǎng)軟件的壽命讓其創(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ù)在軟件漫長(zhǎng)的使用過(guò)程中,用戶在使用過(guò)程
7、中往往會(huì)對(duì)在軟件漫長(zhǎng)的使用過(guò)程中,用戶在使用過(guò)程中往往會(huì)對(duì)軟件提出的新的功能與性能要求。這是因?yàn)橛脩舻臉I(yè)務(wù)會(huì)發(fā)軟件提出的新的功能與性能要求。這是因?yàn)橛脩舻臉I(yè)務(wù)會(huì)發(fā)生變化,組織機(jī)構(gòu)也會(huì)發(fā)生變化,為適應(yīng)這些變化,需要對(duì)生變化,組織機(jī)構(gòu)也會(huì)發(fā)生變化,為適應(yīng)這些變化,需要對(duì)原來(lái)的軟件的功能進(jìn)行修改或擴(kuò)充。這種擴(kuò)充軟件功能、增原來(lái)的軟件的功能進(jìn)行修改或擴(kuò)充。這種擴(kuò)充軟件功能、增強(qiáng)軟件性能、提高軟件運(yùn)行效率和可維護(hù)性而進(jìn)行的維護(hù)活強(qiáng)軟件性能、提高軟件運(yùn)行效率和可維護(hù)性而進(jìn)行的維護(hù)活動(dòng)稱為完善性維護(hù)。此維護(hù)活動(dòng)工作量較大占整個(gè)維護(hù)工作動(dòng)稱為完善性維護(hù)。此維護(hù)活動(dòng)工作量較大占整個(gè)維護(hù)工作的的50%。例如:對(duì)人
8、事管理程序,在使用中要不斷修改人事。例如:對(duì)人事管理程序,在使用中要不斷修改人事管理程序,使其增加或刪除新的項(xiàng)目,滿足新需求;原來(lái)軟管理程序,使其增加或刪除新的項(xiàng)目,滿足新需求;原來(lái)軟件的查詢響應(yīng)速度較慢,要提高軟件的響應(yīng)速度;改變?cè)瓉?lái)件的查詢響應(yīng)速度較慢,要提高軟件的響應(yīng)速度;改變?cè)瓉?lái)軟件的用戶界面或增加聯(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)、使用方便的工具,采用原型化方法開(kāi)發(fā)等。工具,采用原型化方法開(kāi)發(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ù)庫(kù)、數(shù)據(jù)適應(yīng)外部新的硬件和軟件環(huán)境或者數(shù)據(jù)環(huán)境(數(shù)據(jù)庫(kù)、數(shù)據(jù)格式、數(shù)據(jù)輸入格式、數(shù)據(jù)輸入/輸出方式、數(shù)據(jù)存儲(chǔ)介質(zhì))發(fā)生的變化,而輸出方式、數(shù)據(jù)存儲(chǔ)介質(zhì))發(fā)生的變化,而進(jìn)行修改軟件的過(guò)程。適應(yīng)性維護(hù)占整個(gè)維護(hù)工作的進(jìn)行修改軟件的過(guò)程。適應(yīng)性維護(hù)占整個(gè)維護(hù)工作的25%。例如:為現(xiàn)有的某個(gè)應(yīng)用問(wèn)題實(shí)現(xiàn)一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng);對(duì)例如:為現(xiàn)有的某個(gè)應(yīng)用問(wèn)題
10、實(shí)現(xiàn)一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng);對(duì)某個(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ù)策略是對(duì)可能變化的因素進(jìn)行配置管理,它主要的維護(hù)策略是對(duì)可能變化的因素進(jìn)行配置管理,將因環(huán)境變化而必須修改的部分局部化,即局限于某些程序?qū)⒁颦h(huán)境變化而必須修改的部分局部化,即局限于某些程序模塊等。模塊等。8.1 軟件維護(hù)的內(nèi)容3. 校正性維護(hù)校正性維護(hù)軟件測(cè)試不可能找出一個(gè)軟件系統(tǒng)中所有潛伏的錯(cuò)誤,軟件測(cè)試不可能找出一個(gè)軟件系統(tǒng)中所有潛伏的錯(cuò)誤,在軟件交付使用后,軟件在特定情況下運(yùn)行
11、時(shí),這些潛伏的在軟件交付使用后,軟件在特定情況下運(yùn)行時(shí),這些潛伏的錯(cuò)誤可能會(huì)暴露出來(lái)。為了識(shí)別和糾正這些錯(cuò)誤,修改軟件錯(cuò)誤可能會(huì)暴露出來(lái)。為了識(shí)別和糾正這些錯(cuò)誤,修改軟件性能上的缺陷,而進(jìn)行確定和修改錯(cuò)誤的過(guò)程,稱為校正性性能上的缺陷,而進(jìn)行確定和修改錯(cuò)誤的過(guò)程,稱為校正性維護(hù)。糾錯(cuò)性維護(hù)占整個(gè)維護(hù)工作的維護(hù)。糾錯(cuò)性維護(hù)占整個(gè)維護(hù)工作的21%,例如:修正原來(lái),例如:修正原來(lái)程序中并未使開(kāi)關(guān)復(fù)原的錯(cuò)誤;解決開(kāi)發(fā)時(shí)未能測(cè)試各種可程序中并未使開(kāi)關(guān)復(fù)原的錯(cuò)誤;解決開(kāi)發(fā)時(shí)未能測(cè)試各種可能條件帶來(lái)的問(wèn)題;解決原來(lái)程序中遺漏處理文件中最后一能條件帶來(lái)的問(wèn)題;解決原來(lái)程序中遺漏處理文件中最后一個(gè)記錄的問(wèn)題。個(gè)
12、記錄的問(wèn)題。它的主要維護(hù)策略是開(kāi)發(fā)過(guò)程中采用新技術(shù),利用應(yīng)用它的主要維護(hù)策略是開(kāi)發(fā)過(guò)程中采用新技術(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í)間長(zhǎng)、工作量大、成本高軟件維護(hù)時(shí)間長(zhǎng)、工作量大、成本高軟件的維護(hù)過(guò)程是軟件生存期中最長(zhǎng),并且相當(dāng)困難的軟件的維護(hù)過(guò)程是軟件生存期中最長(zhǎng),并且相當(dāng)困難的階段,軟件維護(hù)的工作量占整個(gè)軟件生存期的以上,階段,軟件維護(hù)的工作量占整個(gè)軟件生存期的以上,軟件維護(hù)的費(fèi)用占整個(gè)軟件開(kāi)發(fā)預(yù)算的百分比正在增加。因軟件維護(hù)的費(fèi)用占整個(gè)軟件開(kāi)發(fā)預(yù)算的百分比正在增加。因此,如何
13、減少軟件維護(hù)的工作量,降低軟件維護(hù)的成本,就此,如何減少軟件維護(hù)的工作量,降低軟件維護(hù)的成本,就成為提高軟件維護(hù)效率和質(zhì)量的關(guān)鍵。成為提高軟件維護(hù)效率和質(zhì)量的關(guān)鍵。2. 軟件維護(hù)副作用軟件維護(hù)副作用維護(hù)的目的是為了延長(zhǎng)軟件的壽命并讓其創(chuàng)造更多的價(jià)維護(hù)的目的是為了延長(zhǎng)軟件的壽命并讓其創(chuàng)造更多的價(jià)值,經(jīng)過(guò)在段時(shí)間的維護(hù),軟件中的錯(cuò)誤減少了,功能增強(qiáng)值,經(jīng)過(guò)在段時(shí)間的維護(hù),軟件中的錯(cuò)誤減少了,功能增強(qiáng)了。但是,修改軟件是危險(xiǎn)的,每修改一次,可能會(huì)產(chǎn)生新了。但是,修改軟件是危險(xiǎn)的,每修改一次,可能會(huì)產(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ì)語(yǔ)言修改源代碼時(shí)可代碼副作用:在使用程序設(shè)計(jì)語(yǔ)言修改源代碼時(shí)可能引入如下錯(cuò)誤:能引入如下錯(cuò)誤: 修改或刪除子程序;修改或刪除子程序;修改或刪除語(yǔ)句標(biāo)號(hào);修改或刪除語(yǔ)句標(biāo)號(hào);修改或刪除標(biāo)識(shí)符;修改或刪除標(biāo)識(shí)符;為提高執(zhí)行效率而做的修改;為提高執(zhí)行效率而做的修改;修改文件的打開(kāi)或關(guān)閉操作;修改文件的打開(kāi)或關(guān)閉操作;修改邏輯操作符;修改邏輯操作符;由設(shè)計(jì)變動(dòng)引起的代碼修改;由設(shè)計(jì)變動(dòng)引起的代碼修改;修改對(duì)邊界條件
15、的測(cè)試。修改對(duì)邊界條件的測(cè)試。代碼副作用有時(shí)通過(guò)回歸測(cè)試即可發(fā)現(xiàn),此時(shí)應(yīng)立即采代碼副作用有時(shí)通過(guò)回歸測(cè)試即可發(fā)現(xiàn),此時(shí)應(yīng)立即采取補(bǔ)救措施;然而,有時(shí)直到交付運(yùn)行后才暴露出來(lái),故對(duì)取補(bǔ)救措施;然而,有時(shí)直到交付運(yùn)行后才暴露出來(lái),故對(duì)代碼進(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è)交叉訪問(wèn)表,把數(shù)據(jù)及引用它們的述了數(shù)據(jù)結(jié)構(gòu)并提供一個(gè)交叉訪問(wèn)表,把數(shù)據(jù)及引用它們的模塊一一對(duì)應(yīng)起來(lái)。模塊一一對(duì)應(yīng)起來(lái)。8
17、.2 軟件維護(hù)的特點(diǎn)(3) 文檔副作用:對(duì)軟件的數(shù)據(jù)流、軟件結(jié)構(gòu)、模文檔副作用:對(duì)軟件的數(shù)據(jù)流、軟件結(jié)構(gòu)、模塊邏輯等進(jìn)行修改時(shí),必須對(duì)相關(guān)技術(shù)文檔進(jìn)行相應(yīng)修塊邏輯等進(jìn)行修改時(shí),必須對(duì)相關(guān)技術(shù)文檔進(jìn)行相應(yīng)修改。否則會(huì)導(dǎo)致文檔與程序功能不匹配、缺省條件改變改。否則會(huì)導(dǎo)致文檔與程序功能不匹配、缺省條件改變等錯(cuò)誤,產(chǎn)生文檔的副作用。如果對(duì)可執(zhí)行軟件的修改等錯(cuò)誤,產(chǎn)生文檔的副作用。如果對(duì)可執(zhí)行軟件的修改沒(méi)有反映在文檔中,會(huì)產(chǎn)生如下文檔副作用:沒(méi)有反映在文檔中,會(huì)產(chǎn)生如下文檔副作用:修改交互輸入的順序和格式,沒(méi)有正確的記入文檔修改交互輸入的順序和格式,沒(méi)有正確的記入文檔中;中;過(guò)時(shí)的文檔內(nèi)容、索引和文本可
18、能造成沖突等。過(guò)時(shí)的文檔內(nèi)容、索引和文本可能造成沖突等。為了控制因修改而引起的副作用,應(yīng)該:按模塊把為了控制因修改而引起的副作用,應(yīng)該:按模塊把修改分組;自頂向下的安排被修改模塊的順序;每次修修改分組;自頂向下的安排被修改模塊的順序;每次修改一個(gè)模塊。改一個(gè)模塊。8.2 軟件維護(hù)的特點(diǎn)3. 軟件維護(hù)的困難性軟件維護(hù)的困難性由于軟件維護(hù)工作通常并不由軟件的設(shè)計(jì)和開(kāi)發(fā)人員來(lái)由于軟件維護(hù)工作通常并不由軟件的設(shè)計(jì)和開(kāi)發(fā)人員來(lái)完成,維護(hù)人員首先要對(duì)軟件各階段的文檔和代碼進(jìn)行分析、完成,維護(hù)人員首先要對(duì)軟件各階段的文檔和代碼進(jìn)行分析、理解。因而出現(xiàn)了理解別人的程序困難、文檔不齊等問(wèn)題,理解。因而出現(xiàn)了理解
19、別人的程序困難、文檔不齊等問(wèn)題,尤其是對(duì)大型、復(fù)雜系統(tǒng)的維護(hù),更加困難和復(fù)雜。尤其是對(duì)大型、復(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ù)是只有源程序,缺乏必要的文檔說(shuō)明,非結(jié)構(gòu)化維護(hù)是只有源程序,缺乏必要的文檔說(shuō)明,難于確定數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口等特性。特別是由于沒(méi)有保存難于確定數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口等特性。特別是由于沒(méi)有保存測(cè)試記錄,使回歸測(cè)試無(wú)法進(jìn)行。所以,改變程序代碼所引測(cè)試記錄,使回歸測(cè)試無(wú)法進(jìn)行。所以,改變程序代碼所引起的后果將難以確定?,F(xiàn)在,對(duì)于一些非結(jié)構(gòu)化程序的維護(hù)起的后果將難以確定?,F(xiàn)在,對(duì)于一些非結(jié)構(gòu)化程序的維護(hù)工作就是這樣,
20、不僅浪費(fèi)了人力物力,還使維護(hù)人員的積極工作就是這樣,不僅浪費(fèi)了人力物力,還使維護(hù)人員的積極性受到打擊。這種情況就是不使用軟件工程方法開(kāi)發(fā)軟件的性受到打擊。這種情況就是不使用軟件工程方法開(kāi)發(fā)軟件的必然結(jié)果。必然結(jié)果。8.2 軟件維護(hù)的特點(diǎn) 結(jié)構(gòu)化維護(hù)是指軟件開(kāi)發(fā)過(guò)程是按照軟件工程方結(jié)構(gòu)化維護(hù)是指軟件開(kāi)發(fā)過(guò)程是按照軟件工程方法進(jìn)行,開(kāi)發(fā)各階段文檔齊全,軟件的維護(hù)過(guò)程,有一法進(jìn)行,開(kāi)發(fā)各階段文檔齊全,軟件的維護(hù)過(guò)程,有一整套完整的方案、技術(shù)、審定過(guò)程。這對(duì)于減少精力、整套完整的方案、技術(shù)、審定過(guò)程。這對(duì)于減少精力、減少花費(fèi)和提高軟件維護(hù)效率有很大的作用。減少花費(fèi)和提高軟件維護(hù)效率有很大的作用??梢钥?/p>
21、到,維護(hù)工作的難度及工作量的大小,明顯可以看到,維護(hù)工作的難度及工作量的大小,明顯的與前期的開(kāi)發(fā)工作密切相關(guān)。的與前期的開(kāi)發(fā)工作密切相關(guān)。8.2 軟件維護(hù)的特點(diǎn)(2) 維護(hù)的困難維護(hù)的困難軟件維護(hù)的困難主要是由于軟件需求分析和開(kāi)發(fā)方法軟件維護(hù)的困難主要是由于軟件需求分析和開(kāi)發(fā)方法的缺陷造成的。這種困難主要有如下幾個(gè)方面:的缺陷造成的。這種困難主要有如下幾個(gè)方面: 讀懂別人編的程序是困難的。要修改別人的程序,讀懂別人編的程序是困難的。要修改別人的程序,首先要讀懂和理解別人的程序。而理解別人的程序是非常首先要讀懂和理解別人的程序。而理解別人的程序是非常困難的,如果沒(méi)有相應(yīng)的文檔,困難就達(dá)到非常嚴(yán)重
22、的地困難的,如果沒(méi)有相應(yīng)的文檔,困難就達(dá)到非常嚴(yán)重的地步。步。 文檔的不一致性。文檔不一致會(huì)導(dǎo)致維護(hù)人員不文檔的不一致性。文檔不一致會(huì)導(dǎo)致維護(hù)人員不知所措,不知根據(jù)什么進(jìn)行修改。這種不一致是由于開(kāi)發(fā)知所措,不知根據(jù)什么進(jìn)行修改。這種不一致是由于開(kāi)發(fā)過(guò)程中文檔管理不嚴(yán)造成的,在開(kāi)發(fā)中經(jīng)常出現(xiàn)修改程序過(guò)程中文檔管理不嚴(yán)造成的,在開(kāi)發(fā)中經(jīng)常出現(xiàn)修改程序卻遺忘了修改與其相關(guān)的文檔,或某一文檔進(jìn)行了修改,卻遺忘了修改與其相關(guān)的文檔,或某一文檔進(jìn)行了修改,卻沒(méi)有修改與其相關(guān)的另一文檔。卻沒(méi)有修改與其相關(guān)的另一文檔。8.2 軟件維護(hù)的特點(diǎn) 軟件開(kāi)發(fā)和軟件維護(hù)在人員和時(shí)間上的差異。通軟件開(kāi)發(fā)和軟件維護(hù)在人員和
23、時(shí)間上的差異。通常開(kāi)發(fā)人員與維護(hù)人員是不同的,這種差異會(huì)導(dǎo)致維護(hù)常開(kāi)發(fā)人員與維護(hù)人員是不同的,這種差異會(huì)導(dǎo)致維護(hù)的困難。另外由于維護(hù)階段持續(xù)時(shí)間很長(zhǎng),正在運(yùn)行的的困難。另外由于維護(hù)階段持續(xù)時(shí)間很長(zhǎng),正在運(yùn)行的軟件可能是十幾、二十幾年前開(kāi)發(fā)的,開(kāi)發(fā)工具、方法、軟件可能是十幾、二十幾年前開(kāi)發(fā)的,開(kāi)發(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ù)過(guò)程軟件維護(hù)是一件復(fù)雜而困難的事,必須在相應(yīng)的技軟件維護(hù)是一件復(fù)雜而困難的事,必須在相應(yīng)的技術(shù)指導(dǎo)下,按照一定的步驟進(jìn)行。首先要建立一個(gè)維護(hù)術(shù)指導(dǎo)下,按照一定的步驟進(jìn)行。首先要建立一個(gè)維護(hù)的組織,建立維護(hù)活動(dòng)的登記、申請(qǐng)制度,及對(duì)維護(hù)方的組織,建立維護(hù)活動(dòng)的登記、申請(qǐng)制度,及對(duì)維護(hù)方案的審批制度,規(guī)定復(fù)審的評(píng)價(jià)標(biāo)準(zhǔn)。案的審批制度,規(guī)定復(fù)審的評(píng)價(jià)標(biāo)準(zhǔn)。通過(guò)軟件維護(hù)組織對(duì)維護(hù)過(guò)程進(jìn)行有效的控制,如通過(guò)軟件維護(hù)組織對(duì)維護(hù)過(guò)程進(jìn)行有效的控制,如首先要對(duì)軟件進(jìn)行全面、準(zhǔn)確、迅速地理解,這是決定首先要對(duì)
25、軟件進(jìn)行全面、準(zhǔn)確、迅速地理解,這是決定維護(hù)工作成敗和質(zhì)量好壞的關(guān)鍵。維護(hù)工作成敗和質(zhì)量好壞的關(guān)鍵。8.3 軟件維護(hù)過(guò)程8.3.1 8.3.1 維護(hù)組織維護(hù)組織軟件維護(hù)階段相對(duì)來(lái)說(shuō)是漫長(zhǎng)而且不定期的,軟件維護(hù)階段相對(duì)來(lái)說(shuō)是漫長(zhǎng)而且不定期的,長(zhǎng)期以來(lái)很少建立正式的維護(hù)組織,然而目前人長(zhǎng)期以來(lái)很少建立正式的維護(hù)組織,然而目前人們普遍認(rèn)識(shí)到,即使對(duì)于一個(gè)小的軟件開(kāi)發(fā)隊(duì)伍們普遍認(rèn)識(shí)到,即使對(duì)于一個(gè)小的軟件開(kāi)發(fā)隊(duì)伍而言,確立一個(gè)非正式的維護(hù)組織即非正式的維而言,確立一個(gè)非正式的維護(hù)組織即非正式的維護(hù)管理員來(lái)負(fù)責(zé)維護(hù)工作卻是絕對(duì)必要的。如圖護(hù)管理員來(lái)負(fù)責(zé)維護(hù)工作卻是絕對(duì)必要的。如圖8-1所示就是一個(gè)維護(hù)機(jī)
26、構(gòu)的組織方案。所示就是一個(gè)維護(hù)機(jī)構(gòu)的組織方案。8.3 軟件維護(hù)過(guò)程圖圖8- 1 軟件維護(hù)的組織結(jié)構(gòu)軟件維護(hù)的組織結(jié)構(gòu)8.3 軟件維護(hù)過(guò)程維護(hù)申請(qǐng)?zhí)峤唤o一個(gè)維護(hù)管理員,他把申請(qǐng)交給某維護(hù)申請(qǐng)?zhí)峤唤o一個(gè)維護(hù)管理員,他把申請(qǐng)交給某個(gè)系統(tǒng)監(jiān)督員去評(píng)價(jià)。系統(tǒng)監(jiān)督員是一位技術(shù)人員,他個(gè)系統(tǒng)監(jiān)督員去評(píng)價(jià)。系統(tǒng)監(jiān)督員是一位技術(shù)人員,他必須熟悉產(chǎn)品程序的某一部分。一旦做出評(píng)價(jià),由修改必須熟悉產(chǎn)品程序的某一部分。一旦做出評(píng)價(jià),由修改負(fù)責(zé)人確定如何進(jìn)行修改。維護(hù)人員對(duì)程序進(jìn)行修改的負(fù)責(zé)人確定如何進(jìn)行修改。維護(hù)人員對(duì)程序進(jìn)行修改的過(guò)程中,由配置管理員嚴(yán)格把關(guān),控制修改的范圍,對(duì)過(guò)程中,由配置管理員嚴(yán)格把關(guān),控制修改的
27、范圍,對(duì)軟件配置進(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è)包括管理人員、高級(jí)以是指定的某個(gè)人,也可以是一個(gè)包括管理人員、高級(jí)技術(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ù)過(guò)程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ò)誤概況以及對(duì)業(yè)務(wù)的影響大小,反復(fù)協(xié)商,弄清錯(cuò)誤概況以及對(duì)業(yè)務(wù)的影響大小,以及用戶希望做什么樣的修改,并把這些情況存以及用戶希望做什么樣的修改,并把這些情況存入故障數(shù)據(jù)庫(kù)。然后由維護(hù)組織管理員確認(rèn)維護(hù)入故障數(shù)據(jù)庫(kù)。然后由維護(hù)組織管理員確認(rèn)維護(hù)類型。類型。8.3 軟件維護(hù)過(guò)程圖圖8- 2 軟件維護(hù)的工作流程圖軟件維護(hù)的工作流程圖8.3 軟件維護(hù)過(guò)程對(duì)于校正性維護(hù)申請(qǐng),從評(píng)價(jià)錯(cuò)誤的嚴(yán)重性開(kāi)始。對(duì)于校正性維護(hù)申請(qǐng),從評(píng)價(jià)錯(cuò)誤的嚴(yán)重性開(kāi)始。如果存在一個(gè)嚴(yán)重的錯(cuò)誤,則必須安排人員,在系統(tǒng)監(jiān)如果
29、存在一個(gè)嚴(yán)重的錯(cuò)誤,則必須安排人員,在系統(tǒng)監(jiān)督員的指導(dǎo)下,進(jìn)行問(wèn)題分析,尋找錯(cuò)誤發(fā)生的原因,督員的指導(dǎo)下,進(jìn)行問(wèn)題分析,尋找錯(cuò)誤發(fā)生的原因,進(jìn)行進(jìn)行“救火救火”性的緊急維護(hù);對(duì)于不嚴(yán)重的錯(cuò)誤,可根性的緊急維護(hù);對(duì)于不嚴(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)重,不立即修理往往會(huì)導(dǎo)致重大事故,這樣就必須緊嚴(yán)重,不立即修理往往會(huì)導(dǎo)致重大事故,這樣就必須緊急修改,暫不顧及正常的維護(hù)控制,不必考慮評(píng)價(jià)可能急修改,暫不顧及正常的維護(hù)控制,
30、不必考慮評(píng)價(jià)可能發(fā)生的副作用。在維護(hù)完成、交付用戶之后再去做補(bǔ)償發(fā)生的副作用。在維護(hù)完成、交付用戶之后再去做補(bǔ)償工作。工作。8.3 軟件維護(hù)過(guò)程對(duì)于適應(yīng)性維護(hù)和完善性維護(hù)申請(qǐng),需要先確定每項(xiàng)對(duì)于適應(yīng)性維護(hù)和完善性維護(hù)申請(qǐng),需要先確定每項(xiàng)申請(qǐng)的優(yōu)先次序。若某項(xiàng)申請(qǐng)的優(yōu)先級(jí)非常高,就可立即申請(qǐng)的優(yōu)先次序。若某項(xiàng)申請(qǐng)的優(yōu)先級(jí)非常高,就可立即開(kāi)始維護(hù)工作;否則,維護(hù)申請(qǐng)和其他的開(kāi)發(fā)工作一樣,開(kāi)始維護(hù)工作;否則,維護(hù)申請(qǐng)和其他的開(kāi)發(fā)工作一樣,進(jìn)行排隊(duì),統(tǒng)一安排時(shí)間。并不是所有的完善性維護(hù)申請(qǐng)進(jìn)行排隊(duì),統(tǒng)一安排時(shí)間。并不是所有的完善性維護(hù)申請(qǐng)都必須承擔(dān),因?yàn)檫M(jìn)行完善性維護(hù)等于是做二次開(kāi)發(fā),工都必須承擔(dān),因
31、為進(jìn)行完善性維護(hù)等于是做二次開(kāi)發(fā),工作量很大,需要根據(jù)商業(yè)需要、可利用資源的情況、目前作量很大,需要根據(jù)商業(yè)需要、可利用資源的情況、目前和將來(lái)軟件的發(fā)展方向以及其他的考慮,決定是否承擔(dān)。和將來(lái)軟件的發(fā)展方向以及其他的考慮,決定是否承擔(dān)。雖然維護(hù)申請(qǐng)的類型不同,但都要進(jìn)行同樣的技術(shù)工雖然維護(hù)申請(qǐng)的類型不同,但都要進(jìn)行同樣的技術(shù)工作。這些工作有:修改軟件需求說(shuō)明、修改軟件設(shè)計(jì)、設(shè)作。這些工作有:修改軟件需求說(shuō)明、修改軟件設(shè)計(jì)、設(shè)計(jì)評(píng)審、對(duì)源程序做必要的修改、單元測(cè)試、集成測(cè)試計(jì)評(píng)審、對(duì)源程序做必要的修改、單元測(cè)試、集成測(cè)試(回歸測(cè)試回歸測(cè)試)、確認(rèn)測(cè)試、軟件配置評(píng)審等。、確認(rèn)測(cè)試、軟件配置評(píng)審等。
32、8.3 軟件維護(hù)過(guò)程在每次軟件維護(hù)任務(wù)完成后,要對(duì)維護(hù)任務(wù)進(jìn)行復(fù)在每次軟件維護(hù)任務(wù)完成后,要對(duì)維護(hù)任務(wù)進(jìn)行復(fù)審。進(jìn)行復(fù)審時(shí)要回答下列問(wèn)題:審。進(jìn)行復(fù)審時(shí)要回答下列問(wèn)題:(1) 在目前情況下,設(shè)計(jì)、編碼和測(cè)試中的哪一方在目前情況下,設(shè)計(jì)、編碼和測(cè)試中的哪一方面可以改進(jìn)?面可以改進(jìn)?(2) 各種維護(hù)資源已經(jīng)用了哪些?還有哪些未用各種維護(hù)資源已經(jīng)用了哪些?還有哪些未用(3) 工作中主要的或次要的障礙是什么?工作中主要的或次要的障礙是什么?(4) 從維護(hù)申請(qǐng)的類型來(lái)看是否應(yīng)當(dāng)有預(yù)防性維護(hù)?從維護(hù)申請(qǐng)的類型來(lái)看是否應(yīng)當(dāng)有預(yù)防性維護(hù)?情況復(fù)審對(duì)將來(lái)的維護(hù)工作如何進(jìn)行會(huì)產(chǎn)生重要的情況復(fù)審對(duì)將來(lái)的維護(hù)工作如何
33、進(jìn)行會(huì)產(chǎn)生重要的影響,并可為軟件機(jī)構(gòu)的有效管理提供重要的反饋信息。影響,并可為軟件機(jī)構(gòu)的有效管理提供重要的反饋信息。8.3 軟件維護(hù)過(guò)程8.3.3 8.3.3 維護(hù)技術(shù)維護(hù)技術(shù)有兩類維護(hù)技術(shù),它們是面向維護(hù)的技術(shù)和有兩類維護(hù)技術(shù),它們是面向維護(hù)的技術(shù)和維護(hù)支援技術(shù)。面向維護(hù)的技術(shù)是在軟件開(kāi)發(fā)階維護(hù)支援技術(shù)。面向維護(hù)的技術(shù)是在軟件開(kāi)發(fā)階段用來(lái)減少錯(cuò)誤、提高軟件可維護(hù)性的技術(shù)。維段用來(lái)減少錯(cuò)誤、提高軟件可維護(hù)性的技術(shù)。維護(hù)支援技術(shù)是在軟件維護(hù)階段用來(lái)提高維護(hù)工作護(hù)支援技術(shù)是在軟件維護(hù)階段用來(lái)提高維護(hù)工作的效率和質(zhì)量的技術(shù)。的效率和質(zhì)量的技術(shù)。(1) 面向維護(hù)的技術(shù)面向維護(hù)的技術(shù)面向維護(hù)的技術(shù)涉及軟
34、件開(kāi)發(fā)的所有階段。面向維護(hù)的技術(shù)涉及軟件開(kāi)發(fā)的所有階段。8.3 軟件維護(hù)過(guò)程在需求分析階段,對(duì)用戶的需求進(jìn)行嚴(yán)格的分析定義,在需求分析階段,對(duì)用戶的需求進(jìn)行嚴(yán)格的分析定義,使之沒(méi)有矛盾和易于理解,可以減少軟件中的錯(cuò)誤。例如使之沒(méi)有矛盾和易于理解,可以減少軟件中的錯(cuò)誤。例如美國(guó)密執(zhí)安大學(xué)的美國(guó)密執(zhí)安大學(xué)的ISDOS系統(tǒng)就是需求分析階段使用的系統(tǒng)就是需求分析階段使用的一種分析與文檔化工具,可以用它來(lái)檢查需求說(shuō)明書(shū)的一一種分析與文檔化工具,可以用它來(lái)檢查需求說(shuō)明書(shū)的一致性和完備性。致性和完備性。在設(shè)計(jì)階段,劃分模塊時(shí)充分考慮將來(lái)改動(dòng)或擴(kuò)充的在設(shè)計(jì)階段,劃分模塊時(shí)充分考慮將來(lái)改動(dòng)或擴(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)。使程序相對(duì)獨(dú)立在編碼階段,采用靈活的數(shù)據(jù)結(jié)構(gòu)。使程序相對(duì)獨(dú)立于數(shù)據(jù)的物理結(jié)構(gòu),養(yǎng)成良好的編程風(fēng)格。于數(shù)據(jù)的物理結(jié)構(gòu),養(yǎng)成良好的編程風(fēng)格。在測(cè)試階段,盡可能多的發(fā)現(xiàn)錯(cuò)誤,保存測(cè)試用例和在測(cè)試階段,盡可能多的發(fā)現(xiàn)錯(cuò)誤,保存測(cè)試用例和測(cè)試數(shù)據(jù)等。測(cè)試數(shù)據(jù)等。8.3 軟件維護(hù)過(guò)程(2) 維護(hù)支援技術(shù):包括以下各方面的技術(shù)。維護(hù)支援技術(shù):包括以下各方面的技術(shù)。 信息收集。信息收集。 錯(cuò)誤原因分析。錯(cuò)誤
36、原因分析。 軟件分析與理解。軟件分析與理解。 維護(hù)方案評(píng)價(jià)。維護(hù)方案評(píng)價(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ù)的難度大,稍有不慎就會(huì)在修改中作面廣,維護(hù)的難度大,稍有不慎就會(huì)在修改中給軟件帶來(lái)新的問(wèn)題或引入新的錯(cuò)誤,所以為了給軟件帶來(lái)新的問(wèn)題或引入新的錯(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)心的問(wèn)題之一。但量的幾個(gè)主要特性,也是用戶十分關(guān)心的問(wèn)題之一。但
38、是影響軟件質(zhì)量的這些因素,目前還沒(méi)有普遍適用的定是影響軟件質(zhì)量的這些因素,目前還沒(méi)有普遍適用的定量度量的方法。量度量的方法。8.4 軟件的可維護(hù)性軟件的可維護(hù)性是軟件開(kāi)發(fā)階段各個(gè)時(shí)期的關(guān)鍵目標(biāo)。軟件的可維護(hù)性是軟件開(kāi)發(fā)階段各個(gè)時(shí)期的關(guān)鍵目標(biāo)。影響軟件可維護(hù)性的因素很多,設(shè)計(jì)、編碼和測(cè)試中的疏忽影響軟件可維護(hù)性的因素很多,設(shè)計(jì)、編碼和測(cè)試中的疏忽和低劣的軟件配置,缺少文檔等都對(duì)軟件的可維護(hù)性產(chǎn)生不和低劣的軟件配置,缺少文檔等都對(duì)軟件的可維護(hù)性產(chǎn)生不良影響。軟件維護(hù)可用如下的七個(gè)質(zhì)量特性來(lái)衡量,即可理良影響。軟件維護(hù)可用如下的七個(gè)質(zhì)量特性來(lái)衡量,即可理解性、可測(cè)試性、可修改性、可靠性、可移植性、可
39、使用性解性、可測(cè)試性、可修改性、可靠性、可移植性、可使用性和效率。而且對(duì)于不同類型的維護(hù),這七種特性的側(cè)重點(diǎn)也和效率。而且對(duì)于不同類型的維護(hù),這七種特性的側(cè)重點(diǎn)也不相同。這些質(zhì)量特性通常體現(xiàn)在軟件產(chǎn)品的許多方面。將不相同。這些質(zhì)量特性通常體現(xiàn)在軟件產(chǎn)品的許多方面。將這些特性作為基本要求,需要在軟件開(kāi)發(fā)的整個(gè)階段都采用這些特性作為基本要求,需要在軟件開(kāi)發(fā)的整個(gè)階段都采用相應(yīng)的措施保證,也就是說(shuō)這些質(zhì)量要求滲透到軟件開(kāi)發(fā)的相應(yīng)的措施保證,也就是說(shuō)這些質(zhì)量要求滲透到軟件開(kāi)發(fā)的各個(gè)步驟中。因此,軟件的可維護(hù)性是產(chǎn)品投入運(yùn)行以前各各個(gè)步驟中。因此,軟件的可維護(hù)性是產(chǎn)品投入運(yùn)行以前各階段面臨這七種質(zhì)量特性
40、要求進(jìn)行開(kāi)發(fā)的最終結(jié)果。階段面臨這七種質(zhì)量特性要求進(jìn)行開(kāi)發(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ù)性的度量目前有幾種對(duì)軟件可維護(hù)性進(jìn)行綜合度量的方法,但目前有幾種對(duì)軟件可維護(hù)性進(jìn)行綜合度量的方法,但要對(duì)可維護(hù)性做出定量度量還是較困難的。這里介紹度量要對(duì)可維護(hù)性做出定量度量還是較困難的。這里介紹度量一個(gè)可維護(hù)的軟件的七種特性時(shí)常用的方法,即質(zhì)量檢查一個(gè)可維護(hù)的軟件的七種特性時(shí)常用的方法,即質(zhì)量檢查表、質(zhì)量測(cè)試和
41、質(zhì)量標(biāo)準(zhǔn)。表、質(zhì)量測(cè)試和質(zhì)量標(biāo)準(zhǔn)。質(zhì)量檢查表用于測(cè)試程序中某些質(zhì)量特性是否存在的質(zhì)量檢查表用于測(cè)試程序中某些質(zhì)量特性是否存在的一個(gè)問(wèn)題清單。評(píng)測(cè)者針對(duì)檢查表上的每一個(gè)問(wèn)題,依據(jù)一個(gè)問(wèn)題清單。評(píng)測(cè)者針對(duì)檢查表上的每一個(gè)問(wèn)題,依據(jù)自己的定性判斷,回答自己的定性判斷,回答“是是”或者或者“否否”。質(zhì)量測(cè)試和質(zhì)。質(zhì)量測(cè)試和質(zhì)量標(biāo)準(zhǔn)用于定量分析和評(píng)價(jià)程序的質(zhì)量。量標(biāo)準(zhǔn)用于定量分析和評(píng)價(jià)程序的質(zhì)量。由于許多質(zhì)量特性是相互抵觸的,要考慮幾種不同的由于許多質(zhì)量特性是相互抵觸的,要考慮幾種不同的度量標(biāo)準(zhǔn),去度量不同的質(zhì)量特性。度量標(biāo)準(zhǔn),去度量不同的質(zhì)量特性。8.4 軟件的可維護(hù)性1. 可理解性可理解性可理解性表
42、明人們通過(guò)閱讀源代碼和相關(guān)文檔,了可理解性表明人們通過(guò)閱讀源代碼和相關(guān)文檔,了解軟件功能及其運(yùn)行狀況的容易程度。一個(gè)可理解的軟解軟件功能及其運(yùn)行狀況的容易程度。一個(gè)可理解的軟件主要應(yīng)該具備的以下特性:模塊化,風(fēng)格一致性,使件主要應(yīng)該具備的以下特性:模塊化,風(fēng)格一致性,使用清晰明確的代碼,使用有意義的數(shù)據(jù)名和過(guò)程名,結(jié)用清晰明確的代碼,使用有意義的數(shù)據(jù)名和過(guò)程名,結(jié)構(gòu)化,完整性等。構(gòu)化,完整性等。對(duì)于可理解性,可以使用一種叫做對(duì)于可理解性,可以使用一種叫做“90-10測(cè)試法測(cè)試法”來(lái)衡量。即讓有經(jīng)驗(yàn)的程序員閱讀來(lái)衡量。即讓有經(jīng)驗(yàn)的程序員閱讀10分鐘要測(cè)試的程序,分鐘要測(cè)試的程序,然后把這個(gè)程序拿
43、開(kāi),這個(gè)程序員如能憑記憶和理解寫(xiě)然后把這個(gè)程序拿開(kāi),這個(gè)程序員如能憑記憶和理解寫(xiě)出出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ù)測(cè)??衫酶鶕?jù)軟件錯(cuò)誤統(tǒng)計(jì)
44、數(shù)字,進(jìn)行可靠性預(yù)測(cè)??衫靡恍┛煽啃阅P?,根據(jù)程序測(cè)試時(shí)發(fā)現(xiàn)并排除的錯(cuò)誤數(shù)預(yù)測(cè)一些可靠性模型,根據(jù)程序測(cè)試時(shí)發(fā)現(xiàn)并排除的錯(cuò)誤數(shù)預(yù)測(cè)平均失效間隔時(shí)間。平均失效間隔時(shí)間。(2) 根據(jù)軟件復(fù)雜性,預(yù)測(cè)軟件可靠性。使用這種方法根據(jù)軟件復(fù)雜性,預(yù)測(cè)軟件可靠性。使用這種方法的前提條件是可靠性與復(fù)雜性有關(guān)。程序復(fù)雜性度量標(biāo)準(zhǔn)可的前提條件是可靠性與復(fù)雜性有關(guān)。程序復(fù)雜性度量標(biāo)準(zhǔn)可用于預(yù)測(cè)哪些模塊最可能發(fā)生錯(cuò)誤,以及可能出現(xiàn)的錯(cuò)誤類用于預(yù)測(cè)哪些模塊最可能發(fā)生錯(cuò)誤,以及可能出現(xiàn)的錯(cuò)誤類型,了解錯(cuò)誤類型及它們可能出現(xiàn)在哪里,能更快地查出和型,了解錯(cuò)誤類型及它們可能出現(xiàn)在哪里,能更快地查出和糾正更多的錯(cuò)誤,提高可靠
45、性。糾正更多的錯(cuò)誤,提高可靠性。8.4 軟件的可維護(hù)性3. 可測(cè)試性可測(cè)試性可測(cè)試性表明論證軟件正確性的容易程度。程序越可測(cè)試性表明論證軟件正確性的容易程度。程序越簡(jiǎn)單,驗(yàn)證其正確性就越容易。對(duì)于軟件中的程序模塊,簡(jiǎn)單,驗(yàn)證其正確性就越容易。對(duì)于軟件中的程序模塊,可用程序復(fù)雜性來(lái)度量可測(cè)試性。顯然,程序的環(huán)路復(fù)可用程序復(fù)雜性來(lái)度量可測(cè)試性。顯然,程序的環(huán)路復(fù)雜性越大,程序的路徑就越多,全面測(cè)試程序的難度就雜性越大,程序的路徑就越多,全面測(cè)試程序的難度就越大。越大。4. 可修改性可修改性可修改性表明軟件容易修改的程度。一個(gè)可修改的可修改性表明軟件容易修改的程度。一個(gè)可修改的軟件應(yīng)當(dāng)是可理解的、通
46、用的、靈活的、簡(jiǎn)單的。其中,軟件應(yīng)當(dāng)是可理解的、通用的、靈活的、簡(jiǎn)單的。其中,通用是指當(dāng)軟件適用的功能發(fā)生改變而無(wú)需修改。靈活通用是指當(dāng)軟件適用的功能發(fā)生改變而無(wú)需修改。靈活指很容易對(duì)軟件進(jìn)行修改。指很容易對(duì)軟件進(jìn)行修改。8.4 軟件的可維護(hù)性測(cè)試可修改性的一種定量方法是修改練習(xí)。基本思想是測(cè)試可修改性的一種定量方法是修改練習(xí)?;舅枷胧峭ㄟ^(guò)做幾個(gè)簡(jiǎn)單的修改,來(lái)評(píng)價(jià)修改難度。設(shè)通過(guò)做幾個(gè)簡(jiǎn)單的修改,來(lái)評(píng)價(jià)修改難度。設(shè)C是程序中各是程序中各個(gè)模塊的平均復(fù)雜性,個(gè)模塊的平均復(fù)雜性,A是必須修改的模塊數(shù),是必須修改的模塊數(shù),D是要修改是要修改的模塊的平均復(fù)雜性。則修改的難度公式為:的模塊的平均復(fù)雜性
47、。則修改的難度公式為:D=A/C在簡(jiǎn)單修改時(shí)當(dāng)在簡(jiǎn)單修改時(shí)當(dāng)D1,說(shuō)明該軟件修改困難。,說(shuō)明該軟件修改困難。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ù)性對(duì)于延長(zhǎng)軟件的生存期具有軟件的可維護(hù)性對(duì)于延長(zhǎng)軟件的生存期具有決定意義,因此必須考慮怎樣才能提高軟件的可決定意義,因此必須考慮怎樣才能提高軟件的可維護(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)的,如可理解性和可測(cè)試性,可理解性和可修性是相互促進(jìn)的,如可理解性和可測(cè)試
50、性,可理解性和可修改性;某些質(zhì)量特性是相互抵觸的,如效率和可移植性,效改性;某些質(zhì)量特性是相互抵觸的,如效率和可移植性,效率和可修改性。因此,為保證程序的可維護(hù)性,應(yīng)該在一定率和可修改性。因此,為保證程序的可維護(hù)性,應(yīng)該在一定程度上滿足可維護(hù)的各個(gè)特性,但各個(gè)特性的重要性又是隨程度上滿足可維護(hù)的各個(gè)特性,但各個(gè)特性的重要性又是隨著程序的用途或計(jì)算機(jī)環(huán)境的不同而改變的。對(duì)編譯程序來(lái)著程序的用途或計(jì)算機(jī)環(huán)境的不同而改變的。對(duì)編譯程序來(lái)說(shuō),效率和可移植性是主要的;對(duì)信息管理系統(tǒng)來(lái)說(shuō),可使說(shuō),效率和可移植性是主要的;對(duì)信息管理系統(tǒng)來(lái)說(shuō),可使用性和可修改性可能是主要的。所以在對(duì)程序的質(zhì)量特性提用性和可修
51、改性可能是主要的。所以在對(duì)程序的質(zhì)量特性提出目標(biāo)的同時(shí),還必須規(guī)定它們的優(yōu)先級(jí)。出目標(biāo)的同時(shí),還必須規(guī)定它們的優(yōu)先級(jí)。8.4 軟件的可維護(hù)性2. 使用先進(jìn)的軟件開(kāi)發(fā)技術(shù)和工具使用先進(jìn)的軟件開(kāi)發(fā)技術(shù)和工具利用先進(jìn)的軟件開(kāi)發(fā)技術(shù)是軟件開(kāi)發(fā)過(guò)程中利用先進(jìn)的軟件開(kāi)發(fā)技術(shù)是軟件開(kāi)發(fā)過(guò)程中提高軟件質(zhì)量,降低成本的有效方法之一,也是提高軟件質(zhì)量,降低成本的有效方法之一,也是提高可維護(hù)性的有效的技術(shù)。常用的技術(shù)有:模提高可維護(hù)性的有效的技術(shù)。常用的技術(shù)有:模塊化、結(jié)構(gòu)化程序設(shè)計(jì),自動(dòng)重建結(jié)構(gòu)和重新格塊化、結(jié)構(gòu)化程序設(shè)計(jì),自動(dòng)重建結(jié)構(gòu)和重新格式化的工具等。例如,面向?qū)ο蟮能浖_(kāi)發(fā)方法式化的工具等。例如,面向?qū)ο?/p>
52、的軟件開(kāi)發(fā)方法就是一個(gè)非常使用而強(qiáng)有力的軟件開(kāi)發(fā)方法。就是一個(gè)非常使用而強(qiáng)有力的軟件開(kāi)發(fā)方法。8.4 軟件的可維護(hù)性3. 進(jìn)行明確的質(zhì)量保證審查進(jìn)行明確的質(zhì)量保證審查質(zhì)量保證審查對(duì)于獲得和維持軟件的質(zhì)量,是一個(gè)很有質(zhì)量保證審查對(duì)于獲得和維持軟件的質(zhì)量,是一個(gè)很有用的技術(shù)。除了保證軟件得到適當(dāng)?shù)馁|(zhì)量外,審查還可以用用的技術(shù)。除了保證軟件得到適當(dāng)?shù)馁|(zhì)量外,審查還可以用來(lái)檢測(cè)在開(kāi)發(fā)和維護(hù)階段內(nèi)發(fā)生的質(zhì)量變化。一旦檢測(cè)出問(wèn)來(lái)檢測(cè)在開(kāi)發(fā)和維護(hù)階段內(nèi)發(fā)生的質(zhì)量變化。一旦檢測(cè)出問(wèn)題,就可以采取措施進(jìn)行糾正,以控制不斷增長(zhǎng)的軟件維護(hù)題,就可以采取措施進(jìn)行糾正,以控制不斷增長(zhǎng)的軟件維護(hù)成本,延長(zhǎng)軟件系統(tǒng)的有效生
53、命期。成本,延長(zhǎng)軟件系統(tǒng)的有效生命期。在軟件開(kāi)發(fā)和軟件維護(hù)的各階段,質(zhì)量保證檢查是非常在軟件開(kāi)發(fā)和軟件維護(hù)的各階段,質(zhì)量保證檢查是非常有效的方法。保證軟件質(zhì)量的最佳方法就是在軟件開(kāi)發(fā)的最有效的方法。保證軟件質(zhì)量的最佳方法就是在軟件開(kāi)發(fā)的最初階段就把質(zhì)量和可維護(hù)性要求考慮進(jìn)去,并在開(kāi)發(fā)過(guò)程每初階段就把質(zhì)量和可維護(hù)性要求考慮進(jìn)去,并在開(kāi)發(fā)過(guò)程每一階段的終點(diǎn),設(shè)置檢查點(diǎn)進(jìn)行檢查。檢查的目的是要證實(shí),一階段的終點(diǎn),設(shè)置檢查點(diǎn)進(jìn)行檢查。檢查的目的是要證實(shí),已開(kāi)發(fā)的軟件是否符合標(biāo)準(zhǔn),是否滿足規(guī)定的質(zhì)量需求。在已開(kāi)發(fā)的軟件是否符合標(biāo)準(zhǔn),是否滿足規(guī)定的質(zhì)量需求。在不同的檢查點(diǎn),檢查的重點(diǎn)不完全相同,如圖不同的
54、檢查點(diǎn),檢查的重點(diǎn)不完全相同,如圖8-3所示。所示。8.4 軟件的可維護(hù)性圖圖8- 3 軟件開(kāi)發(fā)期間各個(gè)檢查點(diǎn)的檢查重點(diǎn)軟件開(kāi)發(fā)期間各個(gè)檢查點(diǎn)的檢查重點(diǎn)8.4 軟件的可維護(hù)性例如在設(shè)計(jì)階段,檢查重點(diǎn)是可理解性、可修改性、可例如在設(shè)計(jì)階段,檢查重點(diǎn)是可理解性、可修改性、可測(cè)試性,可理解性檢查的重點(diǎn)是程序的復(fù)雜性。測(cè)試性,可理解性檢查的重點(diǎn)是程序的復(fù)雜性。4. 驗(yàn)收檢查驗(yàn)收檢查驗(yàn)收檢查是一個(gè)特殊的檢查點(diǎn)的檢查,它實(shí)際上是驗(yàn)收驗(yàn)收檢查是一個(gè)特殊的檢查點(diǎn)的檢查,它實(shí)際上是驗(yàn)收測(cè)試的一部分,它是把軟件從開(kāi)發(fā)轉(zhuǎn)移到維護(hù)的最后一次檢測(cè)試的一部分,它是把軟件從開(kāi)發(fā)轉(zhuǎn)移到維護(hù)的最后一次檢查查,是軟件投入運(yùn)行之前
55、保證可維護(hù)性的最后機(jī)會(huì)。它對(duì)減是軟件投入運(yùn)行之前保證可維護(hù)性的最后機(jī)會(huì)。它對(duì)減少維護(hù)費(fèi)用,提高軟件質(zhì)量非常重要。少維護(hù)費(fèi)用,提高軟件質(zhì)量非常重要。 需求和規(guī)范標(biāo)準(zhǔn):以需求規(guī)格說(shuō)明書(shū)為標(biāo)準(zhǔn),進(jìn)行檢需求和規(guī)范標(biāo)準(zhǔn):以需求規(guī)格說(shuō)明書(shū)為標(biāo)準(zhǔn),進(jìn)行檢查,區(qū)分必須的、任選的、將來(lái)的需求;包括對(duì)系統(tǒng)運(yùn)行時(shí)查,區(qū)分必須的、任選的、將來(lái)的需求;包括對(duì)系統(tǒng)運(yùn)行時(shí)的計(jì)算機(jī)設(shè)備的需求;對(duì)維護(hù)、測(cè)試、操作、以及維護(hù)人員的計(jì)算機(jī)設(shè)備的需求;對(duì)維護(hù)、測(cè)試、操作、以及維護(hù)人員的需求;對(duì)測(cè)試工具等的需求。的需求;對(duì)測(cè)試工具等的需求。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)聚、低耦合的原則。通過(guò)一應(yīng)完成獨(dú)立的功能,滿足高內(nèi)聚、低耦合的原則。通過(guò)一些知道預(yù)期變化的實(shí)例,說(shuō)明設(shè)計(jì)的可擴(kuò)充性、可縮減性些知道預(yù)期變化的實(shí)例,說(shuō)明設(shè)計(jì)的可擴(kuò)充性、可縮減性和可適應(yīng)性。和可適應(yīng)性。 源代碼標(biāo)準(zhǔn)盡可能使用最高級(jí)的程序設(shè)計(jì)語(yǔ)言,且源代碼標(biāo)準(zhǔn)盡可能使用最高級(jí)的程序設(shè)計(jì)語(yǔ)言,且只使用語(yǔ)言的標(biāo)準(zhǔn)版本;所有的代碼都必須具有良好的結(jié)只使用語(yǔ)言的標(biāo)準(zhǔn)版本;所有的代碼都必須具有良好的結(jié)構(gòu);所有的代碼都必須文檔化,在注釋中說(shuō)明它的輸入、構(gòu);所有的代碼都必須文檔化,在注釋中說(shuō)明它的輸入、輸出以及便于測(cè)試、再測(cè)試的一些特點(diǎn)與風(fēng)格。輸出以及便于測(cè)試、再測(cè)試的一
57、些特點(diǎn)與風(fēng)格。 文檔標(biāo)準(zhǔn):文檔中應(yīng)說(shuō)明程序的輸入文檔標(biāo)準(zhǔn):文檔中應(yīng)說(shuō)明程序的輸入/輸出、使用輸出、使用方法方法/算法、錯(cuò)誤恢復(fù)方法、所有參數(shù)的范圍以及缺省條算法、錯(cuò)誤恢復(fù)方法、所有參數(shù)的范圍以及缺省條件等。件等。8.4 軟件的可維護(hù)性5. 周期性的維護(hù)檢查周期性的維護(hù)檢查上述兩種軟件檢查可用來(lái)保證新的軟件系統(tǒng)的可維護(hù)上述兩種軟件檢查可用來(lái)保證新的軟件系統(tǒng)的可維護(hù)性。對(duì)已運(yùn)行的軟件應(yīng)該進(jìn)行周期性的維護(hù)檢查。軟件在性。對(duì)已運(yùn)行的軟件應(yīng)該進(jìn)行周期性的維護(hù)檢查。軟件在運(yùn)行期間,為了糾正在開(kāi)發(fā)階段未發(fā)現(xiàn)的錯(cuò)誤和缺陷,使運(yùn)行期間,為了糾正在開(kāi)發(fā)階段未發(fā)現(xiàn)的錯(cuò)誤和缺陷,使軟件適應(yīng)新的計(jì)算機(jī)環(huán)境并滿足變化的用
58、戶要求,必須對(duì)軟件適應(yīng)新的計(jì)算機(jī)環(huán)境并滿足變化的用戶要求,必須對(duì)正在使用的軟件進(jìn)行修改。修改軟件可能引入新的錯(cuò)誤并正在使用的軟件進(jìn)行修改。修改軟件可能引入新的錯(cuò)誤并破壞原來(lái)程序概念的完整性。因此,必須像硬件的定期檢破壞原來(lái)程序概念的完整性。因此,必須像硬件的定期檢查一樣,每月一次,或兩月一次,對(duì)軟件做周期性的維護(hù)查一樣,每月一次,或兩月一次,對(duì)軟件做周期性的維護(hù)審查,以跟蹤軟件質(zhì)量的變化。審查,以跟蹤軟件質(zhì)量的變化。周期性維護(hù)審查實(shí)際上是開(kāi)發(fā)階段檢查點(diǎn)復(fù)查的繼續(xù),周期性維護(hù)審查實(shí)際上是開(kāi)發(fā)階段檢查點(diǎn)復(fù)查的繼續(xù),并且采用的檢查方法、檢查內(nèi)容都是相同的。并且采用的檢查方法、檢查內(nèi)容都是相同的。8.
59、4 軟件的可維護(hù)性6. 選擇可維護(hù)的程序設(shè)計(jì)語(yǔ)言選擇可維護(hù)的程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言的選擇的不同,對(duì)程序的可維護(hù)性影程序設(shè)計(jì)語(yǔ)言的選擇的不同,對(duì)程序的可維護(hù)性影響很大。很明顯,低級(jí)語(yǔ)言很難理解和掌握,維護(hù)當(dāng)然響很大。很明顯,低級(jí)語(yǔ)言很難理解和掌握,維護(hù)當(dāng)然很困難。高級(jí)語(yǔ)言比低級(jí)語(yǔ)言更容易理解,但同是高級(jí)很困難。高級(jí)語(yǔ)言比低級(jí)語(yǔ)言更容易理解,但同是高級(jí)語(yǔ)言,可理解的程度也不一樣。例如,用戶使用第四代語(yǔ)言,可理解的程度也不一樣。例如,用戶使用第四代語(yǔ)言開(kāi)發(fā)商業(yè)應(yīng)用程序比使用通常的高級(jí)語(yǔ)言快很多倍。語(yǔ)言開(kāi)發(fā)商業(yè)應(yīng)用程序比使用通常的高級(jí)語(yǔ)言快很多倍。一些第四代語(yǔ)言是過(guò)程語(yǔ)言,而另一些是非過(guò)程語(yǔ)言。一些
60、第四代語(yǔ)言是過(guò)程語(yǔ)言,而另一些是非過(guò)程語(yǔ)言。對(duì)非過(guò)程語(yǔ)言,用戶不需要指出實(shí)現(xiàn)算法,只需向編譯對(duì)非過(guò)程語(yǔ)言,用戶不需要指出實(shí)現(xiàn)算法,只需向編譯程序或解釋程序提出自己的要求。例如它能自動(dòng)選擇報(bào)程序或解釋程序提出自己的要求。例如它能自動(dòng)選擇報(bào)表格式、文字字符類型等。另外,第四代語(yǔ)言容易理解,表格式、文字字符類型等。另外,第四代語(yǔ)言容易理解,容易編程,程序容易修改,從維護(hù)角度來(lái)看,第四代語(yǔ)容易編程,程序容易修改,從維護(hù)角度來(lái)看,第四代語(yǔ)言就比其他語(yǔ)言更容易維護(hù)。言就比其他語(yǔ)言更容易維護(hù)。8.4 軟件的可維護(hù)性7. 健全程序的文檔健全程序的文檔(1) 程序文檔程序文檔程序文檔是對(duì)程序的總目標(biāo)、程序的各組
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 簽署房屋買賣合同
- 合同協(xié)議吸收合并協(xié)議
- 農(nóng)業(yè)科技智能溫室系統(tǒng)技術(shù)方案
- 個(gè)人健康記錄統(tǒng)計(jì)表(年度)
- 投資居間合同協(xié)議書(shū)
- 分項(xiàng)工程施工合同
- 房地產(chǎn)開(kāi)發(fā)全總包合同
- 計(jì)算機(jī)購(gòu)銷合同
- 2025年寧波貨運(yùn)從業(yè)資格證模擬考試題
- 公司賬號(hào)保密協(xié)議
- 基于核心素養(yǎng)下小學(xué)英語(yǔ)單元整體作業(yè)設(shè)計(jì)實(shí)踐研究 論文
- 風(fēng)電工作流程圖
- 社會(huì)救助公共基礎(chǔ)知識(shí)題庫(kù)及答案
- 《論文所用框架圖》課件
- 人教版三年級(jí)下冊(cè)說(shuō)課標(biāo)、說(shuō)教材
- 2022版《義務(wù)教育科學(xué)課程標(biāo)準(zhǔn)》試題及答案
- 《民法典》背景下違約精神損害賠償制度適用問(wèn)題
- 松下機(jī)器人操作手冊(cè)
- 數(shù)字電路邏輯設(shè)計(jì)(第3版)PPT全套完整教學(xué)課件
- 境外道路貨物運(yùn)輸應(yīng)急預(yù)案
- 管理學(xué)-北京師范大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
評(píng)論
0/150
提交評(píng)論