軟件工程-08軟件維護(hù)課件_第1頁(yè)
軟件工程-08軟件維護(hù)課件_第2頁(yè)
軟件工程-08軟件維護(hù)課件_第3頁(yè)
軟件工程-08軟件維護(hù)課件_第4頁(yè)
軟件工程-08軟件維護(hù)課件_第5頁(yè)
已閱讀5頁(yè),還剩169頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

授課教師:梁麗軟件工程西華大學(xué)計(jì)算機(jī)與數(shù)理學(xué)院授課教師:梁麗軟件工程西華大學(xué)計(jì)算機(jī)與數(shù)理學(xué)院1第八章 軟件維護(hù)內(nèi)容要點(diǎn):

本章主要介紹軟件維護(hù)內(nèi)容、特點(diǎn)、實(shí)施及提高軟件可維護(hù)性的方法。

教學(xué)重點(diǎn):校正性維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)、預(yù)防性維護(hù)可維護(hù)性及其量度提高可維護(hù)性方法第八章 軟件維護(hù)內(nèi)容要點(diǎn):2

軟件維護(hù)的概念

軟件維護(hù)活動(dòng)

可維護(hù)性

提高可維護(hù)性的方法軟件維護(hù)軟件維護(hù)的概念軟件維護(hù)3軟件維護(hù)的概念

軟件維護(hù)的定義

影響維護(hù)工作量的因素

軟件維護(hù)的策略

維護(hù)成本軟件維護(hù)的概念軟件維護(hù)的定義4軟件維護(hù)的定義在軟件運(yùn)行/維護(hù)階段對(duì)軟件產(chǎn)品進(jìn)行的修改就是所謂的維護(hù)。維護(hù)的類(lèi)型有四種:

改正性維護(hù)

適應(yīng)性維護(hù)

完善性維護(hù)

預(yù)防性維護(hù)軟件維護(hù)的定義在軟件運(yùn)行/維護(hù)階段對(duì)軟件產(chǎn)品進(jìn)行的修改就是所5改正性維護(hù)在軟件交付使用后,因開(kāi)發(fā)時(shí)測(cè)試的不徹底、不完全,必然會(huì)有部分隱藏的錯(cuò)誤遺留到運(yùn)行階段。這些隱藏下來(lái)的錯(cuò)誤在某些特定的使用環(huán)境下就會(huì)暴露出來(lái)。為了識(shí)別和糾正軟件錯(cuò)誤、改正軟件性能上的缺陷、排除實(shí)施中的誤使用,應(yīng)當(dāng)進(jìn)行的診斷和改正錯(cuò)誤的過(guò)程就叫做改正性維護(hù)。改正性維護(hù)在軟件交付使用后,因開(kāi)發(fā)時(shí)測(cè)試的不徹底、不完全,必6適應(yīng)性維護(hù)在使用過(guò)程中,

外部環(huán)境(新的硬、軟件配置)

數(shù)據(jù)環(huán)境(數(shù)據(jù)庫(kù)、數(shù)據(jù)格式、數(shù)據(jù)輸入/輸出方式、數(shù)據(jù)存儲(chǔ)介質(zhì))可能發(fā)生變化。為使軟件適應(yīng)這種變化,而去修改軟件的過(guò)程就叫做適應(yīng)性維護(hù)。

適應(yīng)性維護(hù)在使用過(guò)程中,7完善性維護(hù)在軟件的使用過(guò)程中,用戶往往會(huì)對(duì)軟件提出新的功能與性能要求。為了滿足這些要求,需要修改或再開(kāi)發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性。這種情況下進(jìn)行的維護(hù)活動(dòng)叫做完善性維護(hù)。完善性維護(hù)在軟件的使用過(guò)程中,用戶往往會(huì)對(duì)軟件提出新的功能與8實(shí)踐表明,在幾種維護(hù)活動(dòng)中,完善性維護(hù)所占的比重最大。即大部分維護(hù)工作是改變和加強(qiáng)軟件,而不是糾錯(cuò)。完善性維護(hù)不一定是救火式的緊急維修,而可以是有計(jì)劃、有預(yù)謀的一種再開(kāi)發(fā)活動(dòng)。事實(shí)證明,來(lái)自用戶要求擴(kuò)充、加強(qiáng)軟件功能、性能的維護(hù)活動(dòng)約占整個(gè)維護(hù)工作的50%。實(shí)踐表明,在幾種維護(hù)活動(dòng)中,完善性維護(hù)所占的比重最大。即大部9預(yù)防性維護(hù)預(yù)防性維護(hù)是為了提高軟件的可維護(hù)性、可靠性等,為以后進(jìn)一步改進(jìn)軟件打下良好基礎(chǔ)。預(yù)防性維護(hù)定義為:采用先進(jìn)的軟件工程方法對(duì)需要維護(hù)的軟件或軟件中的某一部分(重新)進(jìn)行設(shè)計(jì)、編制和測(cè)試。預(yù)防性維護(hù)預(yù)防性維護(hù)是為了提高軟件的可維護(hù)性、可靠性等,為以10在整個(gè)軟件維護(hù)階段所花費(fèi)的全部工作量中,完善性維護(hù)占了幾乎一半的工作量。軟件維護(hù)活動(dòng)所花費(fèi)的工作占整個(gè)生存期工作量的70%以上,這是由于在漫長(zhǎng)的軟件運(yùn)行過(guò)程中需要不斷對(duì)軟件進(jìn)行修改,以改正新發(fā)現(xiàn)的錯(cuò)誤、適應(yīng)新的環(huán)境和用戶新的要求,這些修改需要花費(fèi)很多精力和時(shí)間,而且有時(shí)會(huì)引入新的錯(cuò)誤。在整個(gè)軟件維護(hù)階段所花費(fèi)的全部工作量中,完善性維護(hù)占了幾乎一11

三類(lèi)維護(hù)占維護(hù)在軟件生存期

總維護(hù)比例 所占比例三類(lèi)維護(hù)占維護(hù)在軟件生存期

總維護(hù)12影響維護(hù)工作量的因素在軟件的維護(hù)過(guò)程中,需要花費(fèi)大量的工作量,從而直接影響了軟件維護(hù)的成本。應(yīng)當(dāng)考慮有哪些因素影響軟件維護(hù)的工作量,相應(yīng)應(yīng)該采取什么維護(hù)策略,才能有效地維護(hù)軟件并控制維護(hù)的成本。影響維護(hù)工作量的因素在軟件的維護(hù)過(guò)程中,需要花費(fèi)大量的工作量13系統(tǒng)大?。合到y(tǒng)越大,理解掌握起來(lái)越困難。系統(tǒng)越大,所執(zhí)行功能越復(fù)雜。因而需要更多的維護(hù)工作量。程序設(shè)計(jì)語(yǔ)言:使用強(qiáng)功能的程序設(shè)計(jì)語(yǔ)言可以控制程序的規(guī)模。語(yǔ)言的功能越強(qiáng),生成程序的模塊化和結(jié)構(gòu)化程度越高,所需的指令數(shù)就越少,程序的可讀性越好。系統(tǒng)大小:系統(tǒng)越大,理解掌握起來(lái)越困難。系統(tǒng)越大,所執(zhí)行功能14系統(tǒng)年齡:老系統(tǒng)隨著不斷的修改,結(jié)構(gòu)越來(lái)越亂;維護(hù)人員經(jīng)常更換,程序又變得越來(lái)越難于理解。許多老系統(tǒng)在當(dāng)初并未按照軟件工程的要求進(jìn)行開(kāi)發(fā),因而沒(méi)有文檔,或文檔太少。在長(zhǎng)期的維護(hù)過(guò)程中文檔在許多地方與程序?qū)崿F(xiàn)變得不一致,在維護(hù)時(shí)就會(huì)遇到很大困難。系統(tǒng)年齡:15數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用:使用數(shù)據(jù)庫(kù),可以簡(jiǎn)單而有效地管理和存儲(chǔ)用戶程序中的數(shù)據(jù),還可以減少生成用戶報(bào)表應(yīng)用軟件的維護(hù)工作量。先進(jìn)的軟件開(kāi)發(fā)技術(shù):在軟件開(kāi)發(fā)時(shí),若使用能使軟件結(jié)構(gòu)比較穩(wěn)定的分析與設(shè)計(jì)技術(shù),及程序設(shè)計(jì)技術(shù),如面向?qū)ο蠹夹g(shù)、復(fù)用技術(shù)等,可減少大量的工作量。數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用:使用數(shù)據(jù)庫(kù),可以簡(jiǎn)單而有效地管理和存儲(chǔ)用戶16其它:應(yīng)用的類(lèi)型數(shù)學(xué)模型任務(wù)的難度開(kāi)關(guān)與標(biāo)記、IF嵌套深度、索引或下標(biāo)數(shù)等 對(duì)維護(hù)工作量都有影響。許多軟件在開(kāi)發(fā)時(shí)并未考慮將來(lái)的修改,為軟件的維護(hù)帶來(lái)許多問(wèn)題。其它:17軟件維護(hù)的策略改正性維護(hù)

通常要生成100%可靠的軟件并不一定合算,成本太高。但通過(guò)使用新技術(shù),可大大減少進(jìn)行改正性維護(hù)的需要。

這些技術(shù)包括:數(shù)據(jù)庫(kù)管理系統(tǒng)、軟件開(kāi)發(fā)環(huán)境、程序自動(dòng)生成系統(tǒng)、較高級(jí)(第四代)的語(yǔ)言。以及新的開(kāi)發(fā)方法、軟件復(fù)用、防錯(cuò)程序設(shè)計(jì)及周期性維護(hù)審查等。軟件維護(hù)的策略改正性維護(hù)

18適應(yīng)性維護(hù)

這一類(lèi)維護(hù)不可避免,可以控制。

(1)

在配置管理時(shí),把硬件、操作系統(tǒng)和其它相關(guān)環(huán)境因素的可能變化考慮在內(nèi)。

(2)

把與硬件、操作系統(tǒng),以及其它外圍設(shè)備有關(guān)的程序歸到特定的程序模塊中。

(3)使用內(nèi)部程序列表、外部文件,以及處理的例行程序包,可為維護(hù)時(shí)修改程序提供方便。適應(yīng)性維護(hù)

19完善性維護(hù)

利用前兩類(lèi)維護(hù)中列舉的方法,也可以減少這一類(lèi)維護(hù)。特別是數(shù)據(jù)庫(kù)管理系統(tǒng)、程序生成器、應(yīng)用軟件包,可減少維護(hù)工作量。

此外,建立軟件系統(tǒng)的原型,把它在實(shí)際系統(tǒng)開(kāi)發(fā)之前提供給用戶。用戶通過(guò)研究原型,進(jìn)一步完善他們的功能要求,就可以減少以后完善性維護(hù)的需要。完善性維護(hù)

20維護(hù)成本有形的軟件維護(hù)成本是花費(fèi)了多少錢(qián),無(wú)形的維護(hù)成本有更大的影響。

一些合理的修復(fù)或修改請(qǐng)求不能及時(shí)安排,使得客戶不滿意;變更的結(jié)果引入新的故障,使得軟件整體質(zhì)量下降;把軟件人員抽調(diào)到維護(hù)工作中,干擾了軟件開(kāi)發(fā)工作。維護(hù)成本有形的軟件維護(hù)成本是花費(fèi)了多少錢(qián),無(wú)形的維護(hù)成本有更21軟件維護(hù)的代價(jià)是降低了生產(chǎn)率,在做老程序的維護(hù)時(shí)非常明顯。例如,開(kāi)發(fā)每一行源代碼耗資25美元,維護(hù)每一行源代碼需要耗資1000美元。維護(hù)工作量包括生產(chǎn)性活動(dòng)(如分析和評(píng)價(jià)、設(shè)計(jì)修改和實(shí)現(xiàn))和“輪轉(zhuǎn)”活動(dòng)(如力圖理解代碼在做什么、試圖判明數(shù)據(jù)結(jié)構(gòu)、接口特性、性能界限等)。軟件維護(hù)的代價(jià)是降低了生產(chǎn)率,在做老程序的維護(hù)時(shí)非常明顯。22維護(hù)工作量的模型

M是維護(hù)中消耗的總工作量p是上面描述的生產(chǎn)性工作量K是一個(gè)經(jīng)驗(yàn)常數(shù)c是因缺乏好的設(shè)計(jì)和文檔而導(dǎo)致復(fù)雜性的度量d是對(duì)軟件熟悉程度的度量。維護(hù)工作量的模型M是維護(hù)中消耗的總工作量23模型指明,如果使用了不好的軟件開(kāi)發(fā)方法(未按軟件工程要求做),原來(lái)參加開(kāi)發(fā)的人員或小組不能參加維護(hù),則工作量(及成本)將按指數(shù)級(jí)增加。模型指明,如果使用了不好的軟件開(kāi)發(fā)方法(未按軟件工程要求做)24軟件維護(hù)活動(dòng)為了有效地進(jìn)行軟件維護(hù),應(yīng)事先就開(kāi)始做組織工作。首先建立維護(hù)的機(jī)構(gòu)申明提出維護(hù)申請(qǐng)報(bào)告的過(guò)程及評(píng)價(jià)的過(guò)程為每一個(gè)維護(hù)申請(qǐng)規(guī)定標(biāo)準(zhǔn)的處理步驟建立維護(hù)活動(dòng)的登記制度以及規(guī)定評(píng)價(jià)和評(píng)審的標(biāo)準(zhǔn)。軟件維護(hù)活動(dòng)為了有效地進(jìn)行軟件維護(hù),應(yīng)事先就開(kāi)始做組織工作。25維護(hù)機(jī)構(gòu)除了較大的軟件開(kāi)發(fā)公司外,通常在軟件維護(hù)工作方面,并不保持一個(gè)正式的組織機(jī)構(gòu)。雖然不要求建立一個(gè)正式的維護(hù)機(jī)構(gòu),但是在開(kāi)發(fā)部門(mén)確立一個(gè)非正式的維護(hù)機(jī)構(gòu)則是非常必要的。維護(hù)機(jī)構(gòu)除了較大的軟件開(kāi)發(fā)公司外,通常在軟件維護(hù)工作方面,并26

軟件維護(hù)的機(jī)構(gòu)

軟件維護(hù)的機(jī)構(gòu)27維護(hù)申請(qǐng)?zhí)峤唤o維護(hù)管理員,他把申請(qǐng)交給某個(gè)系統(tǒng)監(jiān)督員去評(píng)價(jià)。一旦做出評(píng)價(jià),由修改負(fù)責(zé)人確定如何進(jìn)行修改。在修改程序的過(guò)程中,由配置管理員嚴(yán)格把關(guān),控制修改的范圍,對(duì)軟件配置進(jìn)行審計(jì)。在維護(hù)之前,就把責(zé)任明確下來(lái),可以減少維護(hù)過(guò)程中的混亂。維護(hù)申請(qǐng)?zhí)峤唤o維護(hù)管理員,他把申請(qǐng)交給某個(gè)系統(tǒng)監(jiān)督員去評(píng)價(jià)。28軟件維護(hù)申請(qǐng)報(bào)告維護(hù)申請(qǐng)報(bào)告或稱軟件問(wèn)題報(bào)告,由申請(qǐng)維護(hù)的用戶填寫(xiě)。用戶必須完整地說(shuō)明產(chǎn)生錯(cuò)誤的情況,包括輸入數(shù)據(jù)、錯(cuò)誤清單以及其它有關(guān)材料。如果申請(qǐng)的是適應(yīng)性維護(hù)或完善性維護(hù),用戶必須提出一份修改說(shuō)明書(shū),列出所有希望的修改。軟件維護(hù)申請(qǐng)報(bào)告維護(hù)申請(qǐng)報(bào)告或稱軟件問(wèn)題報(bào)告,由申請(qǐng)維護(hù)的用29

維護(hù)申請(qǐng)報(bào)告將由維護(hù)管理員和系統(tǒng)監(jiān)督員來(lái)研究處理。他們應(yīng)相應(yīng)地做出軟件修改報(bào)告,指明:所需修改變動(dòng)的性質(zhì);申請(qǐng)修改的優(yōu)先級(jí);為滿足某個(gè)維護(hù)申請(qǐng)報(bào)告,所需的工作量;預(yù)計(jì)修改后的狀況.

維護(hù)申請(qǐng)報(bào)告將由維護(hù)管理員和系統(tǒng)監(jiān)督員來(lái)研究處理。30軟件修改報(bào)告應(yīng)提交修改負(fù)責(zé)人,經(jīng)批準(zhǔn)后才能開(kāi)始進(jìn)一步安排維護(hù)工作。軟件修改報(bào)告應(yīng)提交修改負(fù)責(zé)人,經(jīng)批準(zhǔn)后才能開(kāi)始進(jìn)一步安排維護(hù)31軟件維護(hù)工作流程軟件維護(hù)工作流程32盡管維護(hù)申請(qǐng)的類(lèi)型不同,但都要進(jìn)行同樣的技術(shù)工作。

修改軟件需求說(shuō)明修改軟件設(shè)計(jì)設(shè)計(jì)評(píng)審對(duì)源程序做必要的修改單元測(cè)試集成測(cè)試(回歸測(cè)試)確認(rèn)測(cè)試軟件配置評(píng)審等。

盡管維護(hù)申請(qǐng)的類(lèi)型不同,但都要進(jìn)行同樣的技術(shù)工作。33在每次軟件維護(hù)任務(wù)完成后進(jìn)行情況評(píng)審,對(duì)以下問(wèn)題做一總結(jié):

(1)

在目前情況下,設(shè)計(jì)、編碼、測(cè)試中的哪一方面可以改進(jìn)?

(2)哪些維護(hù)資源應(yīng)該有但沒(méi)有?

(3)工作中主要的或次要的障礙是什么?

(4)從維護(hù)申請(qǐng)的類(lèi)型來(lái)看是否應(yīng)當(dāng)有預(yù)防性維護(hù)?

情況評(píng)審對(duì)將來(lái)的維護(hù)工作如何進(jìn)行會(huì)產(chǎn)生重要的影響。在每次軟件維護(hù)任務(wù)完成后進(jìn)行情況評(píng)審,對(duì)以下問(wèn)題做一總結(jié):

34維護(hù)檔案記錄程序名稱源程序語(yǔ)句條數(shù)機(jī)器代碼指令條數(shù)所用的程序設(shè)計(jì)語(yǔ)言程序安裝的日期程序安裝后的運(yùn)行次數(shù)與程序安裝后運(yùn)行次數(shù)有關(guān)的處理故障次數(shù)程序改變的層次及名稱維護(hù)檔案記錄程序名稱35

修改程序增加的源程序語(yǔ)句條數(shù)修改程序減少的源程序語(yǔ)句條數(shù)每次修改所付出的“人時(shí)”數(shù)修改程序的日期軟件維護(hù)人員的姓名維護(hù)申請(qǐng)報(bào)告的名稱、維護(hù)類(lèi)型維護(hù)開(kāi)始時(shí)間和維護(hù)結(jié)束時(shí)間、花費(fèi)在維護(hù)上的累計(jì)“人時(shí)”數(shù)維護(hù)工作的凈收益等。

修改程序增加的源程序語(yǔ)句條數(shù)36維護(hù)評(píng)價(jià)評(píng)價(jià)維護(hù)活動(dòng)比較困難,因?yàn)槿狈煽康臄?shù)據(jù)。如果維護(hù)的檔案記錄做得比較好,可以得出一些維護(hù)“性能”方面的度量值。每次程序運(yùn)行時(shí)的平均出錯(cuò)次數(shù);花費(fèi)在每類(lèi)維護(hù)上的總“人時(shí)”數(shù);每個(gè)程序、每種語(yǔ)言、每種維護(hù)類(lèi)型的程序平均修改次數(shù);維護(hù)評(píng)價(jià)評(píng)價(jià)維護(hù)活動(dòng)比較困難,因?yàn)槿狈煽康臄?shù)據(jù)。37因?yàn)榫S護(hù),增加或刪除每個(gè)源程序語(yǔ)句所花費(fèi)的平均“人時(shí)”數(shù);用于每種語(yǔ)言的平均“人時(shí)”數(shù);維護(hù)申請(qǐng)報(bào)告的平均處理時(shí)間;各類(lèi)維護(hù)申請(qǐng)的百分比。因?yàn)榫S護(hù),增加或刪除每個(gè)源程序語(yǔ)句所花費(fèi)的平均“人時(shí)”數(shù);38軟件可維護(hù)性許多軟件的維護(hù)十分困難,原因在于這些軟件的文檔不全、質(zhì)量差、開(kāi)發(fā)過(guò)程不注意采用好的方法,忽視程序設(shè)計(jì)風(fēng)格等。許多維護(hù)要求并不是因?yàn)槌绦蛑谐鲥e(cuò)而提出的,而是為適應(yīng)環(huán)境變化或需求變化而提出的。為了使得軟件能夠易于維護(hù),必須考慮使軟件具有可維護(hù)性。軟件可維護(hù)性許多軟件的維護(hù)十分困難,原因在于這些軟件的文檔不39

軟件可維護(hù)性的定義軟件可維護(hù)性是指糾正軟件系統(tǒng)出現(xiàn)的錯(cuò)誤和缺陷,以及為滿足新的要求進(jìn)行修改、擴(kuò)充或壓縮的容易程度??删S護(hù)性、可使用性、可靠性是衡量軟件質(zhì)量的主要質(zhì)量特性,也是用戶十分關(guān)心的幾個(gè)方面。軟件的可維護(hù)性是軟件開(kāi)發(fā)階段各個(gè)時(shí)期的關(guān)鍵目標(biāo)。

軟件可維護(hù)性的定義軟件可維護(hù)性是指糾正軟件系統(tǒng)出現(xiàn)的錯(cuò)40目前廣泛使用的是用如下的七個(gè)特性來(lái)衡量程序的可維護(hù)性。

可理解性 可使用性 可測(cè)試性 可移植性 可修改性 效率 可靠性而且對(duì)于不同類(lèi)型的維護(hù),這七種特性的側(cè)重點(diǎn)也不相同。目前廣泛使用的是用如下的七個(gè)特性來(lái)衡量程序的可維護(hù)性。41在各類(lèi)維護(hù)中的側(cè)重點(diǎn)

在各類(lèi)維護(hù)中的側(cè)重點(diǎn)42這些質(zhì)量特性通常體現(xiàn)在軟件產(chǎn)品的許多方面;為使每一個(gè)質(zhì)量特性都達(dá)到預(yù)定的要求,需要在軟件開(kāi)發(fā)的各個(gè)階段采取相應(yīng)的措施加以保證。這些質(zhì)量要求要滲透到而各開(kāi)發(fā)階段的各個(gè)步驟當(dāng)中。因此,軟件的可維護(hù)性是產(chǎn)品投入運(yùn)行以前各階段面向上述各質(zhì)量特性要求進(jìn)行開(kāi)發(fā)的最終結(jié)果。這些質(zhì)量特性通常體現(xiàn)在軟件產(chǎn)品的許多方面;43可維護(hù)性的度量人們一直期望對(duì)軟件的可維護(hù)性做出定量度量,但要做到這一點(diǎn)并不容易。常用的度量一個(gè)可維護(hù)的程序的七種特性的方法。就是質(zhì)量檢查表質(zhì)量測(cè)試質(zhì)量標(biāo)準(zhǔn)可維護(hù)性的度量人們一直期望對(duì)軟件的可維護(hù)性做出定量度量,但要44質(zhì)量檢查表是用于測(cè)試程序中某些質(zhì)量特性是否存在的一個(gè)問(wèn)題清單。評(píng)價(jià)者針對(duì)檢查表上的每一個(gè)問(wèn)題,依據(jù)自己的定性判斷,回答“Yes”或者“No”。質(zhì)量測(cè)試與質(zhì)量標(biāo)準(zhǔn)則用于定量分析和評(píng)價(jià)程序的質(zhì)量。由于許多質(zhì)量特性是相互抵觸的,要考慮幾種不同的度量標(biāo)準(zhǔn),相應(yīng)地去度量不同的質(zhì)量特性。質(zhì)量檢查表是用于測(cè)試程序中某些質(zhì)量特性是否存在的一個(gè)問(wèn)題清單451.可理解性可理解性表明人們通過(guò)閱讀源代碼和相關(guān)文檔,了解程序功能及其如何運(yùn)行的容易程度。一個(gè)可理解的程序應(yīng)具備以下一些特性:模塊化,風(fēng)格一致性,不使用令人捉摸不定或含糊不清的代碼,使用有意義的數(shù)據(jù)名和過(guò)程名,結(jié)構(gòu)化,完整性等。1.可理解性可理解性表明人們通過(guò)閱讀源代碼和相關(guān)文檔,了解462.可靠性可靠性表明一個(gè)程序按照用戶的要求和設(shè)計(jì)目標(biāo),在給定的一段時(shí)間內(nèi)正確執(zhí)行的概率。2.可靠性可靠性表明一個(gè)程序按照用戶的要求和設(shè)計(jì)目標(biāo),在給47度量可靠性的方法根據(jù)程序錯(cuò)誤統(tǒng)計(jì)數(shù)字,進(jìn)行可靠性預(yù)測(cè)。常用方法是利用一些可靠性模型,根據(jù)程序測(cè)試時(shí)發(fā)現(xiàn)并排除的錯(cuò)誤數(shù)預(yù)測(cè)平均失效間隔時(shí)間。

根據(jù)程序復(fù)雜性,預(yù)測(cè)軟件可靠性。

用程序復(fù)雜性預(yù)測(cè)可靠性,前提條件是可靠性與復(fù)雜性有關(guān)。因此可用復(fù)雜性預(yù)測(cè)出錯(cuò)率。程序復(fù)雜性度量標(biāo)準(zhǔn)可用于預(yù)測(cè)哪些模塊最可能發(fā)生錯(cuò)誤,以及可能出現(xiàn)的錯(cuò)誤類(lèi)型。度量可靠性的方法根據(jù)程序錯(cuò)誤統(tǒng)計(jì)數(shù)字,進(jìn)行可靠性預(yù)測(cè)。常483.可測(cè)試性可測(cè)試性表明論證程序正確性的容易程度。程序越簡(jiǎn)單,證明其正確性就越容易。而且設(shè)計(jì)合用的測(cè)試用例,取決于對(duì)程序的全面理解。一個(gè)可測(cè)試的程序應(yīng)當(dāng)是可理解的,可靠的,簡(jiǎn)單的。用于可測(cè)試性度量的檢查項(xiàng)目如下:程序是否模塊化?結(jié)構(gòu)是否良好?3.可測(cè)試性可測(cè)試性表明論證程序正確性的容易程度。程序越簡(jiǎn)49程序是否可理解?程序是否可靠?程序是否能顯示任意中間結(jié)果?程序是否能以清楚的方式描述它的輸出?程序是否能及時(shí)地按照要求顯示所有的輸入?程序是否有跟蹤及顯示邏輯控制流程的能力?

程序是否能從檢查點(diǎn)再啟動(dòng)?程序是否能顯示帶說(shuō)明的錯(cuò)誤信息?程序是否可理解?程序是否可靠?504.可修改性可修改性表明程序容易修改的程度。一個(gè)可修改的程序應(yīng)當(dāng)是可理解的、通用的、靈活的、簡(jiǎn)單的。通用性是指程序適用于各種功能變化而無(wú)需修改。靈活性是指能夠容易地對(duì)程序進(jìn)行修改4.可修改性可修改性表明程序容易修改的程度。51測(cè)試可修改性的一種定量方法是修改練習(xí)。其基本思想是通過(guò)做幾個(gè)簡(jiǎn)單的修改,來(lái)評(píng)價(jià)修改的難度。測(cè)試可修改性的一種定量方法是修改練習(xí)。其基本思想是通過(guò)做幾個(gè)525.可移植性可移植性表明程序轉(zhuǎn)移到一個(gè)新的計(jì)算環(huán)境的可能性的大小?;蛘咚砻鞒绦蚩梢匀菀椎亍⒂行У卦诟鞣N各樣的計(jì)算環(huán)境中運(yùn)行的容易程度。一個(gè)可移植的程序應(yīng)具有結(jié)構(gòu)良好、靈活、不依賴于某一具體計(jì)算機(jī)或操作系統(tǒng)的性能。用于可移植性度量的檢查項(xiàng)目如下:5.可移植性可移植性表明程序轉(zhuǎn)移到一個(gè)新的計(jì)算環(huán)境的可能性53

是否是用高級(jí)的獨(dú)立于機(jī)器的語(yǔ)言來(lái)編寫(xiě)程序?是否使用廣泛使用的標(biāo)準(zhǔn)化的程序設(shè)計(jì)語(yǔ)言來(lái)編寫(xiě)程序?是否僅使用了這種語(yǔ)言的標(biāo)準(zhǔn)版本和特性?程序中是否使用了標(biāo)準(zhǔn)的普遍使用的庫(kù)功能和子程序?程序中是否極少使用或根本不使用操作系統(tǒng)的功能?是否是用高級(jí)的獨(dú)立于機(jī)器的語(yǔ)言來(lái)編寫(xiě)程序?54程序在執(zhí)行之前是否初始化內(nèi)存?程序在執(zhí)行之前是否測(cè)定當(dāng)前的輸入/輸出設(shè)備?程序是否把與機(jī)器相關(guān)的語(yǔ)句分離了出來(lái),集中放在了一些單獨(dú)的程序模塊中,并有說(shuō)明文件?

程序是否結(jié)構(gòu)化?并允許在小一些的計(jì)算機(jī)上分段(覆蓋)運(yùn)行?程序中是否避免了依賴于字母數(shù)字或特殊字符的內(nèi)部位表示?程序在執(zhí)行之前是否初始化內(nèi)存?556.效率效率表明一個(gè)程序能執(zhí)行預(yù)定功能而又不浪費(fèi)機(jī)器資源的程度。這些機(jī)器資源包括內(nèi)存容量、外存容量、通道容量和執(zhí)行時(shí)間。用于效率度量的檢查項(xiàng)目如下:程序是否模塊化?結(jié)構(gòu)是否良好?是否消除了無(wú)用的標(biāo)號(hào)與表達(dá)式,以充分發(fā)揮編譯器優(yōu)化作用?6.效率效率表明一個(gè)程序能執(zhí)行預(yù)定功能而又不浪費(fèi)機(jī)器資源的56程序的編譯器是否有優(yōu)化功能?是否把特殊子程序和錯(cuò)誤處理子程序都?xì)w入了單獨(dú)的模塊中?是否以快速的數(shù)學(xué)運(yùn)算代替了較慢的數(shù)學(xué)運(yùn)算?是否盡可能地使用了整數(shù)運(yùn)算,而不是實(shí)數(shù)運(yùn)算?是否在表達(dá)式中避免了混合數(shù)據(jù)類(lèi)型的使用,消除了不必要的類(lèi)型轉(zhuǎn)換?程序的編譯器是否有優(yōu)化功能?57程序是否避免了非標(biāo)準(zhǔn)的函數(shù)或子程序的調(diào)用?在幾條分支結(jié)構(gòu)中,是否最有可能為“真”的分支首先得到測(cè)試?在復(fù)雜的邏輯條件中,是否最有可能為“真“的表達(dá)式首先得到測(cè)試?程序是否避免了非標(biāo)準(zhǔn)的函數(shù)或子程序的調(diào)用?587.可使用性從用戶觀點(diǎn)出發(fā),可使用性定義為程序方便、實(shí)用、及易于使用的程度。一個(gè)可使用的程序應(yīng)是易于使用的、能允許用戶出錯(cuò)和改變,并盡可能不使用戶陷入混亂狀態(tài)的程序。用于可使用性度量的檢查項(xiàng)目如下:程序是否具有自描述性?7.可使用性從用戶觀點(diǎn)出發(fā),可使用性定義為程序方便、實(shí)用、59

程序是否能始終如一地按照用戶的要求運(yùn)行?程序是否讓用戶對(duì)數(shù)據(jù)處理有一個(gè)滿意的和適當(dāng)?shù)目刂?程序是否容易學(xué)會(huì)使用?程序是否使用數(shù)據(jù)管理系統(tǒng)來(lái)自動(dòng)地處理事務(wù)性工作和管理格式化、地址分配及存儲(chǔ)器組織。程序是否具有容錯(cuò)性?程序是否靈活?程序是否能始終如一地按照用戶的要求運(yùn)行?60其它間接定量度量可維護(hù)性的方法問(wèn)題識(shí)別的時(shí)間;因管理活動(dòng)拖延的時(shí)間;收集維護(hù)工具的時(shí)間;分析、診斷問(wèn)題的時(shí)間;修改規(guī)格說(shuō)明的時(shí)間;具體的改錯(cuò)或修改的時(shí)間;局部測(cè)試的時(shí)間;集成或回歸測(cè)試的時(shí)間;維護(hù)的評(píng)審時(shí)間;其它間接定量度量可維護(hù)性的方法問(wèn)題識(shí)別的時(shí)間;61這些數(shù)據(jù)反映了維護(hù)全過(guò)程中檢錯(cuò)-糾錯(cuò)-驗(yàn)證的周期,即從檢測(cè)出軟件存在的問(wèn)題開(kāi)始至修正它們并經(jīng)回歸測(cè)試驗(yàn)證這段時(shí)間??梢源致缘卣J(rèn)為,這個(gè)周期越短,維護(hù)越容易。這些數(shù)據(jù)反映了維護(hù)全過(guò)程中檢錯(cuò)-糾錯(cuò)-驗(yàn)證的周期,即從檢測(cè)出62提高可維護(hù)性的方法建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級(jí)使用提高軟件質(zhì)量的技術(shù)和工具進(jìn)行明確的質(zhì)量保證審查選擇可維護(hù)的程序設(shè)計(jì)語(yǔ)言改進(jìn)程序的文檔提高可維護(hù)性的方法建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級(jí)63建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級(jí)一個(gè)可維護(hù)的程序應(yīng)是可理解的、可靠的、可測(cè)試的、可修改的、可移植的、效率高的、可使用的。要實(shí)現(xiàn)這所有的目標(biāo),需要付出很大的代價(jià),而且也不一定行得通。某些質(zhì)量特性是相互促進(jìn)的,例如可理解性和可測(cè)試性、可理解性和可修改性。建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級(jí)一個(gè)可維護(hù)的程序應(yīng)是可理解的、64

另一些質(zhì)量特性是相互抵觸的,如效率和可移植性、效率和可修改性等。每一種質(zhì)量特性的相對(duì)重要性應(yīng)隨程序的用途及計(jì)算環(huán)境的不同而不同。例如,對(duì)編譯程序來(lái)說(shuō),可能強(qiáng)調(diào)效率;但對(duì)管理信息系統(tǒng)來(lái)說(shuō),則可能強(qiáng)調(diào)可使用性和可修改性。應(yīng)當(dāng)對(duì)程序的質(zhì)量特性,在提出目標(biāo)的同時(shí)還必須規(guī)定它們的優(yōu)先級(jí)。

另一些質(zhì)量特性是相互抵觸的,如效率和可移植性、效率和可修改65使用提高軟件質(zhì)量的技術(shù)和工具模塊化

如果需要改變某個(gè)模塊的功能,則只要改變這個(gè)模塊,對(duì)其它模塊影響很小;如果需要增加程序的某些功能,則僅需增加完成這些功能的新的模塊或模塊層;程序的測(cè)試與重復(fù)測(cè)試比較容易;程序錯(cuò)誤易于定位和糾正;

使用提高軟件質(zhì)量的技術(shù)和工具模塊化66結(jié)構(gòu)化程序設(shè)計(jì)程序被劃分成分層的模塊結(jié)構(gòu);模塊調(diào)用控制必須從模塊的入口點(diǎn)進(jìn)入,從其出口點(diǎn)退出。模塊的控制結(jié)構(gòu)僅限于順序、選擇、重復(fù)三種,且沒(méi)有GOTO語(yǔ)句。每個(gè)程序變量只用于唯一的程序目的,而且變量的作用范圍應(yīng)是明確的、有限制的。結(jié)構(gòu)化程序設(shè)計(jì)67

使用結(jié)構(gòu)化程序設(shè)計(jì)技術(shù),提高現(xiàn)有系統(tǒng)的可維護(hù)性采用備用件的方法──用一個(gè)新的結(jié)構(gòu)良好的模塊替換掉整個(gè)要修改的模塊。采用自動(dòng)重建結(jié)構(gòu)和重新格式化的工具(結(jié)構(gòu)更新技術(shù))──把非結(jié)構(gòu)化代碼轉(zhuǎn)換成良好結(jié)構(gòu)代碼。改進(jìn)現(xiàn)有程序的不完善的文檔──建立或補(bǔ)充系統(tǒng)說(shuō)明書(shū)、設(shè)計(jì)文檔、模塊說(shuō)明書(shū)、以及在源程序中插入必要的注釋。

使用結(jié)構(gòu)化程序設(shè)計(jì)技術(shù),提高現(xiàn)有系統(tǒng)的可維護(hù)性68進(jìn)行明確的質(zhì)量保證審查質(zhì)量保證審查對(duì)于獲得和維持軟件的質(zhì)量,是一個(gè)很有用的技術(shù)。審查可以用來(lái)檢測(cè)在開(kāi)發(fā)和維護(hù)階段內(nèi)發(fā)生的質(zhì)量變化。一旦檢測(cè)出問(wèn)題來(lái),就可以采取措施來(lái)糾正,以控制不斷增長(zhǎng)的軟件維護(hù)成本,延長(zhǎng)軟件系統(tǒng)的有效生命期。進(jìn)行明確的質(zhì)量保證審查質(zhì)量保證審查對(duì)于獲得和維持軟件的質(zhì)量,69保證軟件質(zhì)量的最佳方法是在軟件開(kāi)發(fā)的最初階段把質(zhì)量要求考慮進(jìn)去,并在開(kāi)發(fā)過(guò)程每一階段的終點(diǎn),設(shè)置檢查點(diǎn)進(jìn)行檢查。檢查的目的是要證實(shí),已開(kāi)發(fā)的軟件是否符合標(biāo)準(zhǔn),是否滿足規(guī)定的質(zhì)量需求。在不同的檢查點(diǎn),檢查的重點(diǎn)不完全相同。1.在檢查點(diǎn)進(jìn)行復(fù)審保證軟件質(zhì)量的最佳方法是在軟件開(kāi)發(fā)的最初階段把質(zhì)量要求考慮進(jìn)70軟件開(kāi)發(fā)期間各個(gè)檢查點(diǎn)的檢查重點(diǎn)軟件開(kāi)發(fā)期間各個(gè)檢查點(diǎn)的檢查重點(diǎn)71在設(shè)計(jì)階段,檢查重點(diǎn)是可理解性、可修改性、可測(cè)試性??衫斫庑詸z查的重點(diǎn)是程序的復(fù)雜性。對(duì)每個(gè)模塊可用McCabe環(huán)路來(lái)計(jì)算模塊的復(fù)雜性,若大于10,則需重新設(shè)計(jì)??梢允褂酶鞣N質(zhì)量特性檢查表,或用度量標(biāo)準(zhǔn)來(lái)檢查可維護(hù)性。審查小組可以采用人工測(cè)試一類(lèi)的方式,進(jìn)行審查。在設(shè)計(jì)階段,檢查重點(diǎn)是可理解性、可修改性、可測(cè)試性。722.驗(yàn)收檢查驗(yàn)收檢查是一個(gè)特殊的檢查點(diǎn)的檢查,是交付使用前的最后一次檢查,驗(yàn)收檢查實(shí)際上是驗(yàn)收測(cè)試的一部分,只不過(guò)它是從維護(hù)的角度提出驗(yàn)收的條件和標(biāo)準(zhǔn)。驗(yàn)收檢查必須遵循的最小驗(yàn)收標(biāo)準(zhǔn)。2.驗(yàn)收檢查驗(yàn)收檢查是一個(gè)特殊的檢查點(diǎn)的檢查,是交付使用前73(1)需求和規(guī)范標(biāo)準(zhǔn)

①需求應(yīng)當(dāng)以可測(cè)試的術(shù)語(yǔ)進(jìn)行書(shū)寫(xiě),排列優(yōu)先次序和定義;

②區(qū)分必須的、任選的、將來(lái)的需求;

③包括對(duì)系統(tǒng)運(yùn)行時(shí)的計(jì)算機(jī)設(shè)備的需求;對(duì)維護(hù)、測(cè)試、操作、以及維護(hù)人員的需求;對(duì)測(cè)試工具等的需求。(1)需求和規(guī)范標(biāo)準(zhǔn)74(2)設(shè)計(jì)標(biāo)準(zhǔn) ①程序應(yīng)設(shè)計(jì)成分層的模塊結(jié)構(gòu)。每個(gè)模塊應(yīng)完成唯一的功能,并達(dá)到高內(nèi)聚、低耦合;

②通過(guò)一些知道預(yù)期變化的實(shí)例,說(shuō)明設(shè)計(jì)的可擴(kuò)充性、可縮減性和可適應(yīng)性。(2)設(shè)計(jì)標(biāo)準(zhǔn)75(3)源代碼標(biāo)準(zhǔn) ①盡可能使用最高級(jí)的程序設(shè)計(jì)語(yǔ)言,且只使用語(yǔ)言的標(biāo)準(zhǔn)版本; ②所有的代碼都必須具有良好的結(jié)構(gòu); ③所有的代碼都必須文檔化,在注釋中說(shuō)明它的輸入、輸出、以及便于測(cè)試/再測(cè)試的一些特點(diǎn)與風(fēng)格。(3)源代碼標(biāo)準(zhǔn)76(4)文檔標(biāo)準(zhǔn)

文檔中應(yīng)說(shuō)明

程序的輸入/輸出使用的方法/算法錯(cuò)誤恢復(fù)方法所有參數(shù)的范圍缺省條件等。(4)文檔標(biāo)準(zhǔn)77

3.周期性地維護(hù)審查檢查點(diǎn)復(fù)查和驗(yàn)收檢查,可用來(lái)保證新軟件系統(tǒng)的可維護(hù)性。對(duì)已有的軟件系統(tǒng),則應(yīng)當(dāng)進(jìn)行周期性的維護(hù)檢查。軟件在運(yùn)行期間進(jìn)行修改,會(huì)導(dǎo)致軟件質(zhì)量有變壞的危險(xiǎn),破壞程序概念的完整性。必須定期檢查,對(duì)軟件做周期性的維護(hù)審查,以跟蹤軟件質(zhì)量的變化。

3.周期性地維護(hù)審查檢查點(diǎn)復(fù)查和驗(yàn)收檢查,可用來(lái)保證新78周期性維護(hù)審查實(shí)際上是開(kāi)發(fā)階段檢查點(diǎn)復(fù)查的繼續(xù),并且采用的檢查方法、檢查內(nèi)容都是相同的。維護(hù)審查的結(jié)果可以同以前的維護(hù)審查的結(jié)果,以前的驗(yàn)收檢查的結(jié)果、檢查點(diǎn)檢查的結(jié)果相比較,任何一種改變都表明在軟件質(zhì)量上或其它類(lèi)型的問(wèn)題上可能起了變化。對(duì)于改變的原因應(yīng)當(dāng)進(jìn)行分析。周期性維護(hù)審查實(shí)際上是開(kāi)發(fā)階段檢查點(diǎn)復(fù)查的繼續(xù),并且采用的檢79

4.

對(duì)軟件包進(jìn)行檢查軟件包是一種標(biāo)準(zhǔn)化的,可為不同單位、不同用戶使用的軟件。一般源代碼和程序文檔不會(huì)提供給用戶。對(duì)軟件包的維護(hù)采取以下方法。使用單位的維護(hù)人員首先要仔細(xì)分析、研究賣(mài)主提供的用戶手冊(cè)、操作手冊(cè)、培訓(xùn)教程等,以及賣(mài)方提供的驗(yàn)收測(cè)試報(bào)告等。

4.對(duì)軟件包進(jìn)行檢查軟件包是一種標(biāo)準(zhǔn)化的,可為不同單位、80在此基礎(chǔ)上,深入了解本單位的希望和要求,編制軟件包的檢驗(yàn)程序。

檢查軟件包程序所執(zhí)行的功能是否與用戶的要求和條件相一致。為了建立這個(gè)程序,維護(hù)人員可以利用賣(mài)方提供的驗(yàn)收測(cè)試實(shí)例,還可以自己重新設(shè)計(jì)新的測(cè)試實(shí)例。根據(jù)測(cè)試結(jié)果,檢查和驗(yàn)證軟件包的參數(shù)或控制結(jié)構(gòu),以完成軟件包的維護(hù)。在此基礎(chǔ)上,深入了解本單位的希望和要求,編制軟件包的檢驗(yàn)程81選擇可維護(hù)的程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言的選擇,對(duì)程序的可維護(hù)性影響很大。選擇可維護(hù)的程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言的選擇,對(duì)程序的可維護(hù)性82機(jī)器語(yǔ)言

匯編語(yǔ)言

高級(jí)語(yǔ)言查詢語(yǔ)言

(FORTRAN、報(bào)表生成語(yǔ)言

COBOL等)圖象語(yǔ)言應(yīng)用生成語(yǔ)言機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言查詢語(yǔ)言83改進(jìn)程序的文檔程序文檔是對(duì)程序總目標(biāo)、程序各組成部分之間的關(guān)系、程序設(shè)計(jì)策略、程序?qū)崿F(xiàn)過(guò)程的歷史數(shù)據(jù)等的說(shuō)明和補(bǔ)充。即使是一個(gè)十分簡(jiǎn)單的程序,要想有效地、高效率地維護(hù)它,也需要編制文檔來(lái)解釋其目的及任務(wù)。改進(jìn)程序的文檔程序文檔是對(duì)程序總目標(biāo)、程序各組成部分之間的關(guān)84對(duì)于程序維護(hù)人員來(lái)說(shuō),要想按程序編制人員的意圖重新改造程序,并對(duì)今后變化的可能性進(jìn)行估計(jì),缺了文檔是不行的。因此,為了維護(hù)程序,人們必須閱讀和理解文檔。另外,在軟件維護(hù)階段,利用歷史文檔,可以大大簡(jiǎn)化維護(hù)工作。通過(guò)了解原設(shè)計(jì)思想,可以判斷出錯(cuò)之處,指導(dǎo)維護(hù)人員選擇適當(dāng)?shù)姆椒ㄐ薷拇a而不危及系統(tǒng)的完整性。對(duì)于程序維護(hù)人員來(lái)說(shuō),要想按程序編制人員的意圖重新改造程序,85歷史文檔有三種:

系統(tǒng)開(kāi)發(fā)日志錯(cuò)誤記載系統(tǒng)維護(hù)日志歷史文檔有三種:86系統(tǒng)開(kāi)發(fā)日志:記錄了軟件開(kāi)發(fā)的目標(biāo),優(yōu)先次序,設(shè)計(jì)實(shí)現(xiàn)方案,使用的測(cè)試技術(shù)和工具,開(kāi)發(fā)進(jìn)程中出現(xiàn)的問(wèn)題和解決辦法。這些對(duì)維護(hù)活動(dòng)具有極大的參照價(jià)值。運(yùn)行日志:記錄軟件每天的運(yùn)行情況,出錯(cuò)歷史、類(lèi)型,發(fā)生錯(cuò)誤的現(xiàn)場(chǎng)及條件。運(yùn)行日志是跟蹤軟件狀態(tài),合理評(píng)價(jià)軟件質(zhì)量,提出和預(yù)測(cè)維護(hù)要求的重要依據(jù)。系統(tǒng)維護(hù)日志:即條件修改報(bào)告系統(tǒng)開(kāi)發(fā)日志:記錄了軟件開(kāi)發(fā)的目標(biāo),優(yōu)先次序,設(shè)計(jì)實(shí)現(xiàn)方案,87授課教師:梁麗軟件工程西華大學(xué)計(jì)算機(jī)與數(shù)理學(xué)院授課教師:梁麗軟件工程西華大學(xué)計(jì)算機(jī)與數(shù)理學(xué)院88第八章 軟件維護(hù)內(nèi)容要點(diǎn):

本章主要介紹軟件維護(hù)內(nèi)容、特點(diǎn)、實(shí)施及提高軟件可維護(hù)性的方法。

教學(xué)重點(diǎn):校正性維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)、預(yù)防性維護(hù)可維護(hù)性及其量度提高可維護(hù)性方法第八章 軟件維護(hù)內(nèi)容要點(diǎn):89

軟件維護(hù)的概念

軟件維護(hù)活動(dòng)

可維護(hù)性

提高可維護(hù)性的方法軟件維護(hù)軟件維護(hù)的概念軟件維護(hù)90軟件維護(hù)的概念

軟件維護(hù)的定義

影響維護(hù)工作量的因素

軟件維護(hù)的策略

維護(hù)成本軟件維護(hù)的概念軟件維護(hù)的定義91軟件維護(hù)的定義在軟件運(yùn)行/維護(hù)階段對(duì)軟件產(chǎn)品進(jìn)行的修改就是所謂的維護(hù)。維護(hù)的類(lèi)型有四種:

改正性維護(hù)

適應(yīng)性維護(hù)

完善性維護(hù)

預(yù)防性維護(hù)軟件維護(hù)的定義在軟件運(yùn)行/維護(hù)階段對(duì)軟件產(chǎn)品進(jìn)行的修改就是所92改正性維護(hù)在軟件交付使用后,因開(kāi)發(fā)時(shí)測(cè)試的不徹底、不完全,必然會(huì)有部分隱藏的錯(cuò)誤遺留到運(yùn)行階段。這些隱藏下來(lái)的錯(cuò)誤在某些特定的使用環(huán)境下就會(huì)暴露出來(lái)。為了識(shí)別和糾正軟件錯(cuò)誤、改正軟件性能上的缺陷、排除實(shí)施中的誤使用,應(yīng)當(dāng)進(jìn)行的診斷和改正錯(cuò)誤的過(guò)程就叫做改正性維護(hù)。改正性維護(hù)在軟件交付使用后,因開(kāi)發(fā)時(shí)測(cè)試的不徹底、不完全,必93適應(yīng)性維護(hù)在使用過(guò)程中,

外部環(huán)境(新的硬、軟件配置)

數(shù)據(jù)環(huán)境(數(shù)據(jù)庫(kù)、數(shù)據(jù)格式、數(shù)據(jù)輸入/輸出方式、數(shù)據(jù)存儲(chǔ)介質(zhì))可能發(fā)生變化。為使軟件適應(yīng)這種變化,而去修改軟件的過(guò)程就叫做適應(yīng)性維護(hù)。

適應(yīng)性維護(hù)在使用過(guò)程中,94完善性維護(hù)在軟件的使用過(guò)程中,用戶往往會(huì)對(duì)軟件提出新的功能與性能要求。為了滿足這些要求,需要修改或再開(kāi)發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性。這種情況下進(jìn)行的維護(hù)活動(dòng)叫做完善性維護(hù)。完善性維護(hù)在軟件的使用過(guò)程中,用戶往往會(huì)對(duì)軟件提出新的功能與95實(shí)踐表明,在幾種維護(hù)活動(dòng)中,完善性維護(hù)所占的比重最大。即大部分維護(hù)工作是改變和加強(qiáng)軟件,而不是糾錯(cuò)。完善性維護(hù)不一定是救火式的緊急維修,而可以是有計(jì)劃、有預(yù)謀的一種再開(kāi)發(fā)活動(dòng)。事實(shí)證明,來(lái)自用戶要求擴(kuò)充、加強(qiáng)軟件功能、性能的維護(hù)活動(dòng)約占整個(gè)維護(hù)工作的50%。實(shí)踐表明,在幾種維護(hù)活動(dòng)中,完善性維護(hù)所占的比重最大。即大部96預(yù)防性維護(hù)預(yù)防性維護(hù)是為了提高軟件的可維護(hù)性、可靠性等,為以后進(jìn)一步改進(jìn)軟件打下良好基礎(chǔ)。預(yù)防性維護(hù)定義為:采用先進(jìn)的軟件工程方法對(duì)需要維護(hù)的軟件或軟件中的某一部分(重新)進(jìn)行設(shè)計(jì)、編制和測(cè)試。預(yù)防性維護(hù)預(yù)防性維護(hù)是為了提高軟件的可維護(hù)性、可靠性等,為以97在整個(gè)軟件維護(hù)階段所花費(fèi)的全部工作量中,完善性維護(hù)占了幾乎一半的工作量。軟件維護(hù)活動(dòng)所花費(fèi)的工作占整個(gè)生存期工作量的70%以上,這是由于在漫長(zhǎng)的軟件運(yùn)行過(guò)程中需要不斷對(duì)軟件進(jìn)行修改,以改正新發(fā)現(xiàn)的錯(cuò)誤、適應(yīng)新的環(huán)境和用戶新的要求,這些修改需要花費(fèi)很多精力和時(shí)間,而且有時(shí)會(huì)引入新的錯(cuò)誤。在整個(gè)軟件維護(hù)階段所花費(fèi)的全部工作量中,完善性維護(hù)占了幾乎一98

三類(lèi)維護(hù)占維護(hù)在軟件生存期

總維護(hù)比例 所占比例三類(lèi)維護(hù)占維護(hù)在軟件生存期

總維護(hù)99影響維護(hù)工作量的因素在軟件的維護(hù)過(guò)程中,需要花費(fèi)大量的工作量,從而直接影響了軟件維護(hù)的成本。應(yīng)當(dāng)考慮有哪些因素影響軟件維護(hù)的工作量,相應(yīng)應(yīng)該采取什么維護(hù)策略,才能有效地維護(hù)軟件并控制維護(hù)的成本。影響維護(hù)工作量的因素在軟件的維護(hù)過(guò)程中,需要花費(fèi)大量的工作量100系統(tǒng)大?。合到y(tǒng)越大,理解掌握起來(lái)越困難。系統(tǒng)越大,所執(zhí)行功能越復(fù)雜。因而需要更多的維護(hù)工作量。程序設(shè)計(jì)語(yǔ)言:使用強(qiáng)功能的程序設(shè)計(jì)語(yǔ)言可以控制程序的規(guī)模。語(yǔ)言的功能越強(qiáng),生成程序的模塊化和結(jié)構(gòu)化程度越高,所需的指令數(shù)就越少,程序的可讀性越好。系統(tǒng)大?。合到y(tǒng)越大,理解掌握起來(lái)越困難。系統(tǒng)越大,所執(zhí)行功能101系統(tǒng)年齡:老系統(tǒng)隨著不斷的修改,結(jié)構(gòu)越來(lái)越亂;維護(hù)人員經(jīng)常更換,程序又變得越來(lái)越難于理解。許多老系統(tǒng)在當(dāng)初并未按照軟件工程的要求進(jìn)行開(kāi)發(fā),因而沒(méi)有文檔,或文檔太少。在長(zhǎng)期的維護(hù)過(guò)程中文檔在許多地方與程序?qū)崿F(xiàn)變得不一致,在維護(hù)時(shí)就會(huì)遇到很大困難。系統(tǒng)年齡:102數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用:使用數(shù)據(jù)庫(kù),可以簡(jiǎn)單而有效地管理和存儲(chǔ)用戶程序中的數(shù)據(jù),還可以減少生成用戶報(bào)表應(yīng)用軟件的維護(hù)工作量。先進(jìn)的軟件開(kāi)發(fā)技術(shù):在軟件開(kāi)發(fā)時(shí),若使用能使軟件結(jié)構(gòu)比較穩(wěn)定的分析與設(shè)計(jì)技術(shù),及程序設(shè)計(jì)技術(shù),如面向?qū)ο蠹夹g(shù)、復(fù)用技術(shù)等,可減少大量的工作量。數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用:使用數(shù)據(jù)庫(kù),可以簡(jiǎn)單而有效地管理和存儲(chǔ)用戶103其它:應(yīng)用的類(lèi)型數(shù)學(xué)模型任務(wù)的難度開(kāi)關(guān)與標(biāo)記、IF嵌套深度、索引或下標(biāo)數(shù)等 對(duì)維護(hù)工作量都有影響。許多軟件在開(kāi)發(fā)時(shí)并未考慮將來(lái)的修改,為軟件的維護(hù)帶來(lái)許多問(wèn)題。其它:104軟件維護(hù)的策略改正性維護(hù)

通常要生成100%可靠的軟件并不一定合算,成本太高。但通過(guò)使用新技術(shù),可大大減少進(jìn)行改正性維護(hù)的需要。

這些技術(shù)包括:數(shù)據(jù)庫(kù)管理系統(tǒng)、軟件開(kāi)發(fā)環(huán)境、程序自動(dòng)生成系統(tǒng)、較高級(jí)(第四代)的語(yǔ)言。以及新的開(kāi)發(fā)方法、軟件復(fù)用、防錯(cuò)程序設(shè)計(jì)及周期性維護(hù)審查等。軟件維護(hù)的策略改正性維護(hù)

105適應(yīng)性維護(hù)

這一類(lèi)維護(hù)不可避免,可以控制。

(1)

在配置管理時(shí),把硬件、操作系統(tǒng)和其它相關(guān)環(huán)境因素的可能變化考慮在內(nèi)。

(2)

把與硬件、操作系統(tǒng),以及其它外圍設(shè)備有關(guān)的程序歸到特定的程序模塊中。

(3)使用內(nèi)部程序列表、外部文件,以及處理的例行程序包,可為維護(hù)時(shí)修改程序提供方便。適應(yīng)性維護(hù)

106完善性維護(hù)

利用前兩類(lèi)維護(hù)中列舉的方法,也可以減少這一類(lèi)維護(hù)。特別是數(shù)據(jù)庫(kù)管理系統(tǒng)、程序生成器、應(yīng)用軟件包,可減少維護(hù)工作量。

此外,建立軟件系統(tǒng)的原型,把它在實(shí)際系統(tǒng)開(kāi)發(fā)之前提供給用戶。用戶通過(guò)研究原型,進(jìn)一步完善他們的功能要求,就可以減少以后完善性維護(hù)的需要。完善性維護(hù)

107維護(hù)成本有形的軟件維護(hù)成本是花費(fèi)了多少錢(qián),無(wú)形的維護(hù)成本有更大的影響。

一些合理的修復(fù)或修改請(qǐng)求不能及時(shí)安排,使得客戶不滿意;變更的結(jié)果引入新的故障,使得軟件整體質(zhì)量下降;把軟件人員抽調(diào)到維護(hù)工作中,干擾了軟件開(kāi)發(fā)工作。維護(hù)成本有形的軟件維護(hù)成本是花費(fèi)了多少錢(qián),無(wú)形的維護(hù)成本有更108軟件維護(hù)的代價(jià)是降低了生產(chǎn)率,在做老程序的維護(hù)時(shí)非常明顯。例如,開(kāi)發(fā)每一行源代碼耗資25美元,維護(hù)每一行源代碼需要耗資1000美元。維護(hù)工作量包括生產(chǎn)性活動(dòng)(如分析和評(píng)價(jià)、設(shè)計(jì)修改和實(shí)現(xiàn))和“輪轉(zhuǎn)”活動(dòng)(如力圖理解代碼在做什么、試圖判明數(shù)據(jù)結(jié)構(gòu)、接口特性、性能界限等)。軟件維護(hù)的代價(jià)是降低了生產(chǎn)率,在做老程序的維護(hù)時(shí)非常明顯。109維護(hù)工作量的模型

M是維護(hù)中消耗的總工作量p是上面描述的生產(chǎn)性工作量K是一個(gè)經(jīng)驗(yàn)常數(shù)c是因缺乏好的設(shè)計(jì)和文檔而導(dǎo)致復(fù)雜性的度量d是對(duì)軟件熟悉程度的度量。維護(hù)工作量的模型M是維護(hù)中消耗的總工作量110模型指明,如果使用了不好的軟件開(kāi)發(fā)方法(未按軟件工程要求做),原來(lái)參加開(kāi)發(fā)的人員或小組不能參加維護(hù),則工作量(及成本)將按指數(shù)級(jí)增加。模型指明,如果使用了不好的軟件開(kāi)發(fā)方法(未按軟件工程要求做)111軟件維護(hù)活動(dòng)為了有效地進(jìn)行軟件維護(hù),應(yīng)事先就開(kāi)始做組織工作。首先建立維護(hù)的機(jī)構(gòu)申明提出維護(hù)申請(qǐng)報(bào)告的過(guò)程及評(píng)價(jià)的過(guò)程為每一個(gè)維護(hù)申請(qǐng)規(guī)定標(biāo)準(zhǔn)的處理步驟建立維護(hù)活動(dòng)的登記制度以及規(guī)定評(píng)價(jià)和評(píng)審的標(biāo)準(zhǔn)。軟件維護(hù)活動(dòng)為了有效地進(jìn)行軟件維護(hù),應(yīng)事先就開(kāi)始做組織工作。112維護(hù)機(jī)構(gòu)除了較大的軟件開(kāi)發(fā)公司外,通常在軟件維護(hù)工作方面,并不保持一個(gè)正式的組織機(jī)構(gòu)。雖然不要求建立一個(gè)正式的維護(hù)機(jī)構(gòu),但是在開(kāi)發(fā)部門(mén)確立一個(gè)非正式的維護(hù)機(jī)構(gòu)則是非常必要的。維護(hù)機(jī)構(gòu)除了較大的軟件開(kāi)發(fā)公司外,通常在軟件維護(hù)工作方面,并113

軟件維護(hù)的機(jī)構(gòu)

軟件維護(hù)的機(jī)構(gòu)114維護(hù)申請(qǐng)?zhí)峤唤o維護(hù)管理員,他把申請(qǐng)交給某個(gè)系統(tǒng)監(jiān)督員去評(píng)價(jià)。一旦做出評(píng)價(jià),由修改負(fù)責(zé)人確定如何進(jìn)行修改。在修改程序的過(guò)程中,由配置管理員嚴(yán)格把關(guān),控制修改的范圍,對(duì)軟件配置進(jìn)行審計(jì)。在維護(hù)之前,就把責(zé)任明確下來(lái),可以減少維護(hù)過(guò)程中的混亂。維護(hù)申請(qǐng)?zhí)峤唤o維護(hù)管理員,他把申請(qǐng)交給某個(gè)系統(tǒng)監(jiān)督員去評(píng)價(jià)。115軟件維護(hù)申請(qǐng)報(bào)告維護(hù)申請(qǐng)報(bào)告或稱軟件問(wèn)題報(bào)告,由申請(qǐng)維護(hù)的用戶填寫(xiě)。用戶必須完整地說(shuō)明產(chǎn)生錯(cuò)誤的情況,包括輸入數(shù)據(jù)、錯(cuò)誤清單以及其它有關(guān)材料。如果申請(qǐng)的是適應(yīng)性維護(hù)或完善性維護(hù),用戶必須提出一份修改說(shuō)明書(shū),列出所有希望的修改。軟件維護(hù)申請(qǐng)報(bào)告維護(hù)申請(qǐng)報(bào)告或稱軟件問(wèn)題報(bào)告,由申請(qǐng)維護(hù)的用116

維護(hù)申請(qǐng)報(bào)告將由維護(hù)管理員和系統(tǒng)監(jiān)督員來(lái)研究處理。他們應(yīng)相應(yīng)地做出軟件修改報(bào)告,指明:所需修改變動(dòng)的性質(zhì);申請(qǐng)修改的優(yōu)先級(jí);為滿足某個(gè)維護(hù)申請(qǐng)報(bào)告,所需的工作量;預(yù)計(jì)修改后的狀況.

維護(hù)申請(qǐng)報(bào)告將由維護(hù)管理員和系統(tǒng)監(jiān)督員來(lái)研究處理。117軟件修改報(bào)告應(yīng)提交修改負(fù)責(zé)人,經(jīng)批準(zhǔn)后才能開(kāi)始進(jìn)一步安排維護(hù)工作。軟件修改報(bào)告應(yīng)提交修改負(fù)責(zé)人,經(jīng)批準(zhǔn)后才能開(kāi)始進(jìn)一步安排維護(hù)118軟件維護(hù)工作流程軟件維護(hù)工作流程119盡管維護(hù)申請(qǐng)的類(lèi)型不同,但都要進(jìn)行同樣的技術(shù)工作。

修改軟件需求說(shuō)明修改軟件設(shè)計(jì)設(shè)計(jì)評(píng)審對(duì)源程序做必要的修改單元測(cè)試集成測(cè)試(回歸測(cè)試)確認(rèn)測(cè)試軟件配置評(píng)審等。

盡管維護(hù)申請(qǐng)的類(lèi)型不同,但都要進(jìn)行同樣的技術(shù)工作。120在每次軟件維護(hù)任務(wù)完成后進(jìn)行情況評(píng)審,對(duì)以下問(wèn)題做一總結(jié):

(1)

在目前情況下,設(shè)計(jì)、編碼、測(cè)試中的哪一方面可以改進(jìn)?

(2)哪些維護(hù)資源應(yīng)該有但沒(méi)有?

(3)工作中主要的或次要的障礙是什么?

(4)從維護(hù)申請(qǐng)的類(lèi)型來(lái)看是否應(yīng)當(dāng)有預(yù)防性維護(hù)?

情況評(píng)審對(duì)將來(lái)的維護(hù)工作如何進(jìn)行會(huì)產(chǎn)生重要的影響。在每次軟件維護(hù)任務(wù)完成后進(jìn)行情況評(píng)審,對(duì)以下問(wèn)題做一總結(jié):

121維護(hù)檔案記錄程序名稱源程序語(yǔ)句條數(shù)機(jī)器代碼指令條數(shù)所用的程序設(shè)計(jì)語(yǔ)言程序安裝的日期程序安裝后的運(yùn)行次數(shù)與程序安裝后運(yùn)行次數(shù)有關(guān)的處理故障次數(shù)程序改變的層次及名稱維護(hù)檔案記錄程序名稱122

修改程序增加的源程序語(yǔ)句條數(shù)修改程序減少的源程序語(yǔ)句條數(shù)每次修改所付出的“人時(shí)”數(shù)修改程序的日期軟件維護(hù)人員的姓名維護(hù)申請(qǐng)報(bào)告的名稱、維護(hù)類(lèi)型維護(hù)開(kāi)始時(shí)間和維護(hù)結(jié)束時(shí)間、花費(fèi)在維護(hù)上的累計(jì)“人時(shí)”數(shù)維護(hù)工作的凈收益等。

修改程序增加的源程序語(yǔ)句條數(shù)123維護(hù)評(píng)價(jià)評(píng)價(jià)維護(hù)活動(dòng)比較困難,因?yàn)槿狈煽康臄?shù)據(jù)。如果維護(hù)的檔案記錄做得比較好,可以得出一些維護(hù)“性能”方面的度量值。每次程序運(yùn)行時(shí)的平均出錯(cuò)次數(shù);花費(fèi)在每類(lèi)維護(hù)上的總“人時(shí)”數(shù);每個(gè)程序、每種語(yǔ)言、每種維護(hù)類(lèi)型的程序平均修改次數(shù);維護(hù)評(píng)價(jià)評(píng)價(jià)維護(hù)活動(dòng)比較困難,因?yàn)槿狈煽康臄?shù)據(jù)。124因?yàn)榫S護(hù),增加或刪除每個(gè)源程序語(yǔ)句所花費(fèi)的平均“人時(shí)”數(shù);用于每種語(yǔ)言的平均“人時(shí)”數(shù);維護(hù)申請(qǐng)報(bào)告的平均處理時(shí)間;各類(lèi)維護(hù)申請(qǐng)的百分比。因?yàn)榫S護(hù),增加或刪除每個(gè)源程序語(yǔ)句所花費(fèi)的平均“人時(shí)”數(shù);125軟件可維護(hù)性許多軟件的維護(hù)十分困難,原因在于這些軟件的文檔不全、質(zhì)量差、開(kāi)發(fā)過(guò)程不注意采用好的方法,忽視程序設(shè)計(jì)風(fēng)格等。許多維護(hù)要求并不是因?yàn)槌绦蛑谐鲥e(cuò)而提出的,而是為適應(yīng)環(huán)境變化或需求變化而提出的。為了使得軟件能夠易于維護(hù),必須考慮使軟件具有可維護(hù)性。軟件可維護(hù)性許多軟件的維護(hù)十分困難,原因在于這些軟件的文檔不126

軟件可維護(hù)性的定義軟件可維護(hù)性是指糾正軟件系統(tǒng)出現(xiàn)的錯(cuò)誤和缺陷,以及為滿足新的要求進(jìn)行修改、擴(kuò)充或壓縮的容易程度。可維護(hù)性、可使用性、可靠性是衡量軟件質(zhì)量的主要質(zhì)量特性,也是用戶十分關(guān)心的幾個(gè)方面。軟件的可維護(hù)性是軟件開(kāi)發(fā)階段各個(gè)時(shí)期的關(guān)鍵目標(biāo)。

軟件可維護(hù)性的定義軟件可維護(hù)性是指糾正軟件系統(tǒng)出現(xiàn)的錯(cuò)127目前廣泛使用的是用如下的七個(gè)特性來(lái)衡量程序的可維護(hù)性。

可理解性 可使用性 可測(cè)試性 可移植性 可修改性 效率 可靠性而且對(duì)于不同類(lèi)型的維護(hù),這七種特性的側(cè)重點(diǎn)也不相同。目前廣泛使用的是用如下的七個(gè)特性來(lái)衡量程序的可維護(hù)性。128在各類(lèi)維護(hù)中的側(cè)重點(diǎn)

在各類(lèi)維護(hù)中的側(cè)重點(diǎn)129這些質(zhì)量特性通常體現(xiàn)在軟件產(chǎn)品的許多方面;為使每一個(gè)質(zhì)量特性都達(dá)到預(yù)定的要求,需要在軟件開(kāi)發(fā)的各個(gè)階段采取相應(yīng)的措施加以保證。這些質(zhì)量要求要滲透到而各開(kāi)發(fā)階段的各個(gè)步驟當(dāng)中。因此,軟件的可維護(hù)性是產(chǎn)品投入運(yùn)行以前各階段面向上述各質(zhì)量特性要求進(jìn)行開(kāi)發(fā)的最終結(jié)果。這些質(zhì)量特性通常體現(xiàn)在軟件產(chǎn)品的許多方面;130可維護(hù)性的度量人們一直期望對(duì)軟件的可維護(hù)性做出定量度量,但要做到這一點(diǎn)并不容易。常用的度量一個(gè)可維護(hù)的程序的七種特性的方法。就是質(zhì)量檢查表質(zhì)量測(cè)試質(zhì)量標(biāo)準(zhǔn)可維護(hù)性的度量人們一直期望對(duì)軟件的可維護(hù)性做出定量度量,但要131質(zhì)量檢查表是用于測(cè)試程序中某些質(zhì)量特性是否存在的一個(gè)問(wèn)題清單。評(píng)價(jià)者針對(duì)檢查表上的每一個(gè)問(wèn)題,依據(jù)自己的定性判斷,回答“Yes”或者“No”。質(zhì)量測(cè)試與質(zhì)量標(biāo)準(zhǔn)則用于定量分析和評(píng)價(jià)程序的質(zhì)量。由于許多質(zhì)量特性是相互抵觸的,要考慮幾種不同的度量標(biāo)準(zhǔn),相應(yīng)地去度量不同的質(zhì)量特性。質(zhì)量檢查表是用于測(cè)試程序中某些質(zhì)量特性是否存在的一個(gè)問(wèn)題清單1321.可理解性可理解性表明人們通過(guò)閱讀源代碼和相關(guān)文檔,了解程序功能及其如何運(yùn)行的容易程度。一個(gè)可理解的程序應(yīng)具備以下一些特性:模塊化,風(fēng)格一致性,不使用令人捉摸不定或含糊不清的代碼,使用有意義的數(shù)據(jù)名和過(guò)程名,結(jié)構(gòu)化,完整性等。1.可理解性可理解性表明人們通過(guò)閱讀源代碼和相關(guān)文檔,了解1332.可靠性可靠性表明一個(gè)程序按照用戶的要求和設(shè)計(jì)目標(biāo),在給定的一段時(shí)間內(nèi)正確執(zhí)行的概率。2.可靠性可靠性表明一個(gè)程序按照用戶的要求和設(shè)計(jì)目標(biāo),在給134度量可靠性的方法根據(jù)程序錯(cuò)誤統(tǒng)計(jì)數(shù)字,進(jìn)行可靠性預(yù)測(cè)。常用方法是利用一些可靠性模型,根據(jù)程序測(cè)試時(shí)發(fā)現(xiàn)并排除的錯(cuò)誤數(shù)預(yù)測(cè)平均失效間隔時(shí)間。

根據(jù)程序復(fù)雜性,預(yù)測(cè)軟件可靠性。

用程序復(fù)雜性預(yù)測(cè)可靠性,前提條件是可靠性與復(fù)雜性有關(guān)。因此可用復(fù)雜性預(yù)測(cè)出錯(cuò)率。程序復(fù)雜性度量標(biāo)準(zhǔn)可用于預(yù)測(cè)哪些模塊最可能發(fā)生錯(cuò)誤,以及可能出現(xiàn)的錯(cuò)誤類(lèi)型。度量可靠性的方法根據(jù)程序錯(cuò)誤統(tǒng)計(jì)數(shù)字,進(jìn)行可靠性預(yù)測(cè)。常1353.可測(cè)試性可測(cè)試性表明論證程序正確性的容易程度。程序越簡(jiǎn)單,證明其正確性就越容易。而且設(shè)計(jì)合用的測(cè)試用例,取決于對(duì)程序的全面理解。一個(gè)可測(cè)試的程序應(yīng)當(dāng)是可理解的,可靠的,簡(jiǎn)單的。用于可測(cè)試性度量的檢查項(xiàng)目如下:程序是否模塊化?結(jié)構(gòu)是否良好?3.可測(cè)試性可測(cè)試性表明論證程序正確性的容易程度。程序越簡(jiǎn)136程序是否可理解?程序是否可靠?程序是否能顯示任意中間結(jié)果?程序是否能以清楚的方式描述它的輸出?程序是否能及時(shí)地按照要求顯示所有的輸入?程序是否有跟蹤及顯示邏輯控制流程的能力?

程序是否能從檢查點(diǎn)再啟動(dòng)?程序是否能顯示帶說(shuō)明的錯(cuò)誤信息?程序是否可理解?程序是否可靠?1374.可修改性可修改性表明程序容易修改的程度。一個(gè)可修改的程序應(yīng)當(dāng)是可理解的、通用的、靈活的、簡(jiǎn)單的。通用性是指程序適用于各種功能變化而無(wú)需修改。靈活性是指能夠容易地對(duì)程序進(jìn)行修改4.可修改性可修改性表明程序容易修改的程度。138測(cè)試可修改性的一種定量方法是修改練習(xí)。其基本思想是通過(guò)做幾個(gè)簡(jiǎn)單的修改,來(lái)評(píng)價(jià)修改的難度。測(cè)試可修改性的一種定量方法是修改練習(xí)。其基本思想是通過(guò)做幾個(gè)1395.可移植性可移植性表明程序轉(zhuǎn)移到一個(gè)新的計(jì)算環(huán)境的可能性的大小。或者它表明程序可以容易地、有效地在各種各樣的計(jì)算環(huán)境中運(yùn)行的容易程度。一個(gè)可移植的程序應(yīng)具有結(jié)構(gòu)良好、靈活、不依賴于某一具體計(jì)算機(jī)或操作系統(tǒng)的性能。用于可移植性度量的檢查項(xiàng)目如下:5.可移植性可移植性表明程序轉(zhuǎn)移到一個(gè)新的計(jì)算環(huán)境的可能性140

是否是用高級(jí)的獨(dú)立于機(jī)器的語(yǔ)言來(lái)編寫(xiě)程序?是否使用廣泛使用的標(biāo)準(zhǔn)化的程序設(shè)計(jì)語(yǔ)言來(lái)編寫(xiě)程序?是否僅使用了這種語(yǔ)言的標(biāo)準(zhǔn)版本和特性?程序中是否使用了標(biāo)準(zhǔn)的普遍使用的庫(kù)功能和子程序?程序中是否極少使用或根本不使用操作系統(tǒng)的功能?是否是用高級(jí)的獨(dú)立于機(jī)器的語(yǔ)言來(lái)編寫(xiě)程序?141程序在執(zhí)行之前是否初始化內(nèi)存?程序在執(zhí)行之前是否測(cè)定當(dāng)前的輸入/輸出設(shè)備?程序是否把與機(jī)器相關(guān)的語(yǔ)句分離了出來(lái),集中放在了一些單獨(dú)的程序模塊中,并有說(shuō)明文件?

程序是否結(jié)構(gòu)化?并允許在小一些的計(jì)算機(jī)上分段(覆蓋)運(yùn)行?程序中是否避免了依賴于字母數(shù)字或特殊字符的內(nèi)部位表示?程序在執(zhí)行之前是否初始化內(nèi)存?1426.效率效率表明一個(gè)程序能執(zhí)行預(yù)定功能而又不浪費(fèi)機(jī)器資源的程度。這些機(jī)器資源包括內(nèi)存容量、外存容量、通道容量和執(zhí)行時(shí)間。用于效率度量的檢查項(xiàng)目如下:程序是否模塊化?結(jié)構(gòu)是否良好?是否消除了無(wú)用的標(biāo)號(hào)與表達(dá)式,以充分發(fā)揮編譯器優(yōu)化作用?6.效率效率表明一個(gè)程序能執(zhí)行預(yù)定功能而又不浪費(fèi)機(jī)器資源的143程序的編譯器是否有優(yōu)化功能?是否把特殊子程序和錯(cuò)誤處理子程序都?xì)w入了單獨(dú)的模塊中?是否以快速的數(shù)學(xué)運(yùn)算代替了較慢的數(shù)學(xué)運(yùn)算?是否盡可能地使用了整數(shù)運(yùn)算,而不是實(shí)數(shù)運(yùn)算?是否在表達(dá)式中避免了混合數(shù)據(jù)類(lèi)型的使用,消除了不必要的類(lèi)型轉(zhuǎn)換?程序的編譯器是否有優(yōu)化功能?144程序是否避免了非標(biāo)準(zhǔn)的函數(shù)或子程序的調(diào)用?在幾條分支結(jié)構(gòu)中,是否最有可能為“真”的分支首先得到測(cè)試?在復(fù)雜的邏輯條件中,是否最有可能為“真“的表達(dá)式首先得到測(cè)試?程序是否避免了非標(biāo)準(zhǔn)的函數(shù)或子程序的調(diào)用?1457.可使用性從用戶觀點(diǎn)出發(fā),可使用性定義為程序方便、實(shí)用、及易于使用的程度。一個(gè)可使用的程序應(yīng)是易于使用的、能允許用戶出錯(cuò)和改變,并盡可能不使用戶陷入混亂狀態(tài)的程序。用于可使用性度量的檢查項(xiàng)目如下:程序是否具有自描述性?7.可使用性從用戶觀點(diǎn)出發(fā),可使用性定義為程序方便、實(shí)用、146

程序是否能始終如一地按照用戶的要求運(yùn)行?程序是否讓用戶對(duì)數(shù)據(jù)處理有一個(gè)滿意的和適當(dāng)?shù)目刂?程序是否容易學(xué)會(huì)使用?程序是否使用數(shù)據(jù)管理系統(tǒng)來(lái)自動(dòng)地處理事務(wù)性工作和管理格式化、地址分配及存儲(chǔ)器組織。程序是否具有容錯(cuò)性?程序是否靈活?程序是否能始終如一地按照用戶的要求運(yùn)行?147其它間接定量度量可維護(hù)性的方法問(wèn)題識(shí)別的時(shí)間;因管理活動(dòng)拖延的時(shí)間;收集維護(hù)工具的時(shí)間;分析、診斷問(wèn)題的時(shí)間;修改規(guī)格說(shuō)明的時(shí)間;具體的改錯(cuò)或修改的時(shí)間;局部測(cè)試的時(shí)間;集成或回歸測(cè)試的時(shí)間;維護(hù)的評(píng)審時(shí)間;其它間接定量度量可維護(hù)性的方法問(wèn)題識(shí)別的時(shí)間;148這些數(shù)據(jù)反映了維護(hù)全過(guò)程中檢錯(cuò)-糾錯(cuò)-驗(yàn)證的周期,即從檢測(cè)出軟件存在的問(wèn)題開(kāi)始至修正它們并經(jīng)回歸測(cè)試驗(yàn)證這段時(shí)間??梢源致缘卣J(rèn)為,這個(gè)周期越短,維護(hù)越容易。這些數(shù)據(jù)反映了維護(hù)全過(guò)程中檢錯(cuò)-糾錯(cuò)-驗(yàn)證的周期,即從檢測(cè)出149提高可維護(hù)性的方法建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級(jí)使用提高軟件質(zhì)量的技術(shù)和工具進(jìn)行明確的質(zhì)量保證審查選擇可維護(hù)的程序設(shè)計(jì)語(yǔ)言改進(jìn)程序的文檔提高可維護(hù)性的方法建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級(jí)150建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級(jí)一個(gè)可維護(hù)的程序應(yīng)是可理解的、可靠的、可測(cè)試的、可修改的、可移植的、效率高的、可使用的。要實(shí)現(xiàn)這所有的目標(biāo),需要付出很大的代價(jià),而且也不一定行得通。某些質(zhì)量特性是相互促進(jìn)的,例如可理解性和可測(cè)試性、可理解性和可修改性。建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級(jí)一個(gè)可維護(hù)的程序應(yīng)是可理解的、151

另一些質(zhì)量特性是相互抵觸的,如效率和可移植性、效率和可修改性等。每一種質(zhì)量特性的相對(duì)重要性應(yīng)隨程序的用途及計(jì)算環(huán)境的不同而不同。例如,對(duì)編譯程序來(lái)說(shuō),可能強(qiáng)調(diào)效率;但對(duì)管理信息系統(tǒng)來(lái)說(shuō),則可能強(qiáng)調(diào)可使用性和可修改性。應(yīng)當(dāng)對(duì)程序的質(zhì)量特性,在提出目標(biāo)的同時(shí)還必須規(guī)定它們的優(yōu)先級(jí)。

另一些質(zhì)量特性是相互抵觸的,如效率和可移植性、效率和可修改152使用提高軟件質(zhì)量的技術(shù)和工具模塊化

如果需要改變某個(gè)模塊的功能,則只要改變這個(gè)模塊,對(duì)其它模塊影響很?。蝗绻枰黾映绦虻哪承┕δ?,則僅需增加完成這些功能的新的模塊或模塊層;程序的測(cè)試與重復(fù)測(cè)試比較容易;程序錯(cuò)誤易于定位和糾正;

使用提高軟件質(zhì)量的技術(shù)和工具模塊化153結(jié)構(gòu)化程序設(shè)計(jì)程序被劃分成分層的模塊結(jié)構(gòu);模塊調(diào)用控制必須從模塊的入口點(diǎn)進(jìn)入,從其出口點(diǎn)退出。模塊的控制結(jié)構(gòu)僅限于順序、選擇、重復(fù)三種,且沒(méi)有GOTO語(yǔ)句。每個(gè)程序變量只用于唯一的程序目的,而且變量的作用范圍應(yīng)是明確的、有限制的。結(jié)構(gòu)化程序設(shè)計(jì)154

使用結(jié)構(gòu)化程序設(shè)計(jì)技術(shù),提高現(xiàn)有系統(tǒng)的可維護(hù)性采用備用件的方法──用一個(gè)新的結(jié)構(gòu)良好的模塊替換掉整個(gè)要修改的模塊。采用自動(dòng)重建結(jié)構(gòu)和重新格式化的工具(結(jié)構(gòu)更新技術(shù))──把非結(jié)構(gòu)化代碼轉(zhuǎn)換成良好結(jié)構(gòu)代碼。改進(jìn)現(xiàn)有程序的不完善的文檔──建立或補(bǔ)充系統(tǒng)說(shuō)明書(shū)、設(shè)計(jì)文檔、模塊說(shuō)明書(shū)、以及在源程序中插入必要的注釋。

使用結(jié)構(gòu)化程序設(shè)計(jì)技術(shù),提高現(xiàn)有系統(tǒng)的可維護(hù)性155進(jìn)行明確的質(zhì)量保證審查質(zhì)量保證審查對(duì)于獲得和維持軟件的質(zhì)量,是一個(gè)很有用的技術(shù)。審查可以用來(lái)檢測(cè)在開(kāi)發(fā)和維護(hù)階段內(nèi)發(fā)生的質(zhì)量變化。一旦檢測(cè)出問(wèn)題來(lái),就可以采取措施來(lái)糾正,以控制不斷增長(zhǎng)的軟件維護(hù)成本,延長(zhǎng)軟件系統(tǒng)的有效生命期。進(jìn)行明確的質(zhì)量保證審查質(zhì)量保證審查對(duì)于獲得和維持軟件的質(zhì)量,156保證軟件質(zhì)量的最佳方法是在軟件開(kāi)發(fā)的最初階段把質(zhì)量要求考慮進(jìn)去,并在開(kāi)發(fā)過(guò)程每一階段的終點(diǎn),設(shè)置檢查點(diǎn)進(jìn)行檢查。檢查的目的是要證實(shí),已開(kāi)發(fā)的軟件是否符合標(biāo)準(zhǔn),是否滿足規(guī)定的質(zhì)量需求。在不同的檢查點(diǎn),檢查的重點(diǎn)不完全相同。1.在檢查點(diǎn)進(jìn)行復(fù)審保證軟件質(zhì)量的最佳方法

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論