i第8章-軟件維護(hù)課件_第1頁(yè)
i第8章-軟件維護(hù)課件_第2頁(yè)
i第8章-軟件維護(hù)課件_第3頁(yè)
i第8章-軟件維護(hù)課件_第4頁(yè)
i第8章-軟件維護(hù)課件_第5頁(yè)
已閱讀5頁(yè),還剩55頁(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)介

第8章軟件維護(hù)8.1軟件維護(hù)的概念8.2軟件維護(hù)的代價(jià)8.3維護(hù)過(guò)程8.4可維護(hù)性8.5維護(hù)的副作用8.1軟件維護(hù)的內(nèi)容

在軟件已經(jīng)交付用戶使用之后,為了改正錯(cuò)誤或滿足新的需求而進(jìn)行修改軟件的過(guò)程維護(hù)的類型有:改正性維護(hù)適應(yīng)性維護(hù)完善性維護(hù)預(yù)防性維護(hù)1.改正性維護(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ù)。2.適應(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ù)。例如,需要對(duì)已運(yùn)行的軟件進(jìn)行改造,以適應(yīng)網(wǎng)絡(luò)環(huán)境或已升級(jí)改版的操作系統(tǒng)要求。3.完善性維護(hù)在軟件的使用過(guò)程中,用戶往往會(huì)對(duì)軟件提出新的功能與性能要求。為了滿足這些要求,需要修改或再開(kāi)發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性。這種情況下進(jìn)行的維護(hù)活動(dòng)叫做完善性維護(hù)。例如,完善性維護(hù)可能是修改一個(gè)計(jì)算工資的程序,使其增加新的扣除項(xiàng)目;縮短系統(tǒng)的應(yīng)答時(shí)間,使其達(dá)到特定的要求等。4.預(yù)防性維護(hù)預(yù)防性維護(hù)是為了提高軟件的可維護(hù)性、可靠性等,為以后進(jìn)一步改進(jìn)軟件打下良好基礎(chǔ)。預(yù)防性維護(hù)定義為:采用先進(jìn)的軟件工程方法對(duì)需要維護(hù)的軟件或軟件中的某一部分(重新)進(jìn)行設(shè)計(jì)、編制和測(cè)試。實(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%5.各類維護(hù)工作所占的比重在整個(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ò)誤三類維護(hù)占維護(hù)在軟件生存期

總維護(hù)比例 所占比例8.2維護(hù)的特點(diǎn)

8.2.1非結(jié)構(gòu)化維護(hù)和結(jié)構(gòu)化維護(hù)1.非結(jié)構(gòu)化維護(hù)只有源程序,沒(méi)有文檔,維護(hù)活動(dòng)只能從閱讀、理解分析源程序開(kāi)始,來(lái)了解系統(tǒng)功能、軟件結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口、設(shè)計(jì)約束等。維護(hù)工作非常困難,要花費(fèi)大量的人力、物力,最終對(duì)源程序修改的后果是難以估量的。

2.結(jié)構(gòu)化維護(hù)軟件具有各個(gè)階段的文檔,對(duì)于理解和掌握系統(tǒng)功能、軟件結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口、設(shè)計(jì)約束有很大作用。進(jìn)行維護(hù)活動(dòng)時(shí),首先從評(píng)價(jià)需求開(kāi)始,搞清楚功能、性能上的改變,然后對(duì)設(shè)計(jì)說(shuō)明文檔進(jìn)行評(píng)價(jià),對(duì)設(shè)計(jì)說(shuō)明文檔進(jìn)行修改和復(fù)查根據(jù)設(shè)計(jì)的修改,再進(jìn)行程序的變動(dòng)根據(jù)測(cè)試文檔中的測(cè)試用例進(jìn)行回歸測(cè)試最后把修改后的軟件再次交付使用。

8.2.2維護(hù)的困難性1.讀懂別人的程序是困難的

修改別人的程序不如自己重新編寫(xiě)程序2.文檔的不一致性各種文檔之間不一致文檔與程序之間不一致

主要是開(kāi)發(fā)過(guò)程中文檔管理不嚴(yán)造成:修改程序忘了修改與其相關(guān)的文檔某一文檔改了,沒(méi)有修改與其相關(guān)的另一文檔3.軟件開(kāi)發(fā)和軟件維護(hù)在人員和時(shí)間上的差異軟件維護(hù)工作由軟件開(kāi)發(fā)人員來(lái)進(jìn)行,維護(hù)工作就變得容易通常開(kāi)發(fā)人員和維護(hù)人員不同,導(dǎo)致維護(hù)的困難。維護(hù)階段持續(xù)時(shí)間很長(zhǎng),正在運(yùn)行的軟件可能是十幾、二十幾年前開(kāi)發(fā)的,開(kāi)發(fā)工具、方法、技術(shù)與當(dāng)前的工具、方法、技術(shù)差異很大,導(dǎo)致維護(hù)困難。3.軟件維護(hù)不是一項(xiàng)吸引人的工作。8.2.3軟件維護(hù)的費(fèi)用在軟件的維護(hù)過(guò)程中,需要花費(fèi)大量的工作量,從而直接影響了軟件維護(hù)的成本。應(yīng)當(dāng)考慮有哪些因素影響軟件維護(hù)的工作量,相應(yīng)應(yīng)該采取什么維護(hù)策略,才能有效地維護(hù)軟件并控制維護(hù)的成本

1.維護(hù)工作量的計(jì)算模型M=P+K×exp(c-d)M是維護(hù)的總工作量P是生產(chǎn)性工作量K是經(jīng)驗(yàn)系數(shù)c是復(fù)雜程度(非結(jié)構(gòu)化設(shè)計(jì)和缺少文檔都會(huì)增加軟件的復(fù)雜程度)d是維護(hù)人員對(duì)軟件的熟悉程度

若C越大,D越小,維護(hù)的工作量將呈指數(shù)增加;C大表示軟件未使用軟件工程方法開(kāi)發(fā),文檔少,程序復(fù)雜度高;D表示維護(hù)人員不是原來(lái)的開(kāi)發(fā)人員,對(duì)軟件不熟悉,重新理解軟件花費(fèi)很多時(shí)間。應(yīng)用域的復(fù)雜性開(kāi)發(fā)人員的穩(wěn)定性軟件的生命期商業(yè)操作模式變化對(duì)軟件的影響3.影響維護(hù)代價(jià)的技術(shù)因素軟件對(duì)運(yùn)行環(huán)境的依賴性編程語(yǔ)言編程風(fēng)格測(cè)試與改錯(cuò)工作文檔的質(zhì)量2.影響維護(hù)代價(jià)的非技術(shù)因素4.維護(hù)成本有形的軟件維護(hù)成本是花費(fèi)了多少錢,無(wú)形的維護(hù)成本有更大的影響。一些合理的修復(fù)或修改請(qǐng)求不能及時(shí)安排,使得客戶不滿意;變更的結(jié)果引入新的故障,使得軟件整體質(zhì)量下降;把軟件人員抽調(diào)到維護(hù)工作中,干擾了軟件開(kāi)發(fā)工作。8.3軟件維護(hù)任務(wù)的實(shí)施

為了有效地進(jìn)行軟件維護(hù),應(yīng)事先就開(kāi)始做組織工作。首先建立維護(hù)的組織申明提出維護(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)。8.3.1維護(hù)組織1.臨時(shí)維護(hù)小組

執(zhí)行臨時(shí)的維護(hù)任務(wù):對(duì)程序排錯(cuò);檢查完善性維護(hù)的設(shè)計(jì),進(jìn)行質(zhì)量控制的復(fù)審等。2.長(zhǎng)期維護(hù)小組組長(zhǎng):負(fù)責(zé)向上級(jí)主管部門(mén)報(bào)告維護(hù)工作。組長(zhǎng)應(yīng)該是一個(gè)有經(jīng)驗(yàn)的系統(tǒng)分析員,具有一定的管理經(jīng)驗(yàn),熟悉系統(tǒng)的應(yīng)用領(lǐng)域。副組長(zhǎng):具有與組長(zhǎng)相同的業(yè)務(wù)水平和工作經(jīng)驗(yàn)。執(zhí)行同開(kāi)發(fā)部門(mén)和其他維護(hù)小組聯(lián)系的任務(wù)。

維護(hù)負(fù)責(zé)人:維護(hù)小組的行政負(fù)責(zé)人,管理幾個(gè)維護(hù)小組的人事工作,負(fù)責(zé)維護(hù)小組成員的人事管理工作維護(hù)程序員:負(fù)責(zé)分析程序改變的要求和執(zhí)行修改的工作。不僅具有軟件開(kāi)發(fā)方面的知識(shí)和經(jīng)驗(yàn),也應(yīng)具有軟件維護(hù)方面的知識(shí)和經(jīng)驗(yàn)。8.3.2.維護(hù)的流程1.制定維護(hù)申請(qǐng)報(bào)告

所有軟件維護(hù)申請(qǐng)應(yīng)按規(guī)定的方式提出。軟件維護(hù)組織通常提供維護(hù)申請(qǐng)報(bào)告(maintenancerequestform,MRF),或稱軟件問(wèn)題報(bào)告,由申請(qǐng)維護(hù)的用戶填寫(xiě)。如果遇到一個(gè)錯(cuò)誤,用戶必須完整地說(shuō)明產(chǎn)生錯(cuò)誤的情況,包括輸入數(shù)據(jù)、錯(cuò)誤清單以及其他有關(guān)材料。如果申請(qǐng)的是適應(yīng)性維護(hù)或完善性維護(hù),用戶必須提出一份修改說(shuō)明書(shū),列出所有希望的修改。維護(hù)申請(qǐng)報(bào)告將由維護(hù)管理員和系統(tǒng)監(jiān)督員來(lái)研究處理

維護(hù)申請(qǐng)報(bào)告是由軟件組織外部提交的文檔,它是計(jì)劃維護(hù)工作的基礎(chǔ)。軟件組織內(nèi)部應(yīng)相應(yīng)地做出軟件修改報(bào)告(softwarechangereport,SCR),指明:●所需修改變動(dòng)的性質(zhì);●申請(qǐng)修改的優(yōu)先級(jí);●為滿足某個(gè)維護(hù)申請(qǐng)報(bào)告,所需的工作量;●預(yù)計(jì)修改后的狀況。軟件修改報(bào)告應(yīng)提交修改負(fù)責(zé)人,經(jīng)批準(zhǔn)后才能開(kāi)始進(jìn)一步安排維護(hù)工作。2.軟件維護(hù)工作流程

第一步是先確認(rèn)維護(hù)要求,然后由維護(hù)組織管理員確認(rèn)維護(hù)類型。對(duì)于改正性維護(hù)申請(qǐng),如果存在嚴(yán)重的錯(cuò)誤,則必須安排人員,在系統(tǒng)監(jiān)督員的指導(dǎo)下,進(jìn)行問(wèn)題分析,尋找錯(cuò)誤發(fā)生的原因,進(jìn)行“救火”性的緊急維護(hù);對(duì)于不嚴(yán)重的錯(cuò)誤,可根據(jù)任務(wù)和人員情況,視輕重緩急進(jìn)行排隊(duì),統(tǒng)一安排時(shí)間。所謂“救火”式的緊急維護(hù),是指對(duì)非常嚴(yán)重的錯(cuò)誤進(jìn)行緊急修改,暫不再顧及正常的維護(hù)控制,不必考慮評(píng)價(jià)可能發(fā)生的副作用。在維護(hù)完成、交付用戶之后再去做這些工作。對(duì)于適應(yīng)性維護(hù)和完善性維護(hù)申請(qǐng),需要先確定每項(xiàng)申請(qǐng)的優(yōu)先次序。若某項(xiàng)申請(qǐng)的優(yōu)先級(jí)非常高,就可立即開(kāi)始維護(hù)工作;否則,維護(hù)申請(qǐng)和其他的開(kāi)發(fā)工作一樣,進(jìn)行排隊(duì),統(tǒng)一安排時(shí)間。不同類型的維護(hù)強(qiáng)調(diào)的重點(diǎn)不同,但基本途徑是相同的不管維護(hù)類型如何,都需要進(jìn)行:

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

確認(rèn)測(cè)試軟件配置評(píng)審等維護(hù)流程的一般任務(wù)3.維護(hù)的復(fù)審

在每次軟件維護(hù)任務(wù)完成后,最好進(jìn)行一次情況評(píng)審,對(duì)以下問(wèn)題做一總結(jié):在目前情況下,設(shè)計(jì)、編碼、測(cè)試中的哪一方面已經(jīng)完成?各種維護(hù)資源已經(jīng)用了哪些,還有哪些未用?工作中主要的或次要的障礙是什么?從維護(hù)申請(qǐng)的類型來(lái)看是否應(yīng)當(dāng)有預(yù)防性維護(hù)?維護(hù)評(píng)審對(duì)將來(lái)的維護(hù)工作如何進(jìn)行會(huì)產(chǎn)生重要的影響,并可為軟件機(jī)構(gòu)的有效管理提供重要的反饋信息。4.維護(hù)評(píng)價(jià)評(píng)價(jià)維護(hù)活動(dòng)可參考的度量值有:每次程序運(yùn)行平均失效的次數(shù);用于每一類維護(hù)活動(dòng)的總?cè)藭r(shí)數(shù);平均每個(gè)程序、每種語(yǔ)言、每種維護(hù)類型所做的程序變動(dòng)數(shù);維護(hù)過(guò)程中增加或刪除一個(gè)源語(yǔ)句平均花費(fèi)的人時(shí)數(shù);維護(hù)每種語(yǔ)言平均花費(fèi)的人時(shí)數(shù);一張維護(hù)申請(qǐng)表的平均周轉(zhuǎn)時(shí)間;不同維護(hù)類型所占的百分比。8.3.3.維護(hù)技術(shù)1。面向維護(hù)的技術(shù)在軟件開(kāi)發(fā)階段用來(lái)減少錯(cuò)誤,提高軟件可維護(hù)性的技術(shù)。在需求分析階段:對(duì)用戶的需求進(jìn)行嚴(yán)格的分析定義,使之沒(méi)有矛盾和易于理解,可以減少軟件中的錯(cuò)誤。設(shè)計(jì)階段:劃分模塊時(shí)充分考慮將來(lái)改動(dòng)或擴(kuò)成的可能性。編碼階段:采用靈活的數(shù)據(jù)結(jié)構(gòu),使程序相對(duì)獨(dú)立于數(shù)據(jù)的物理結(jié)構(gòu),養(yǎng)成良好的程序設(shè)計(jì)風(fēng)格測(cè)試階段:盡可能多的發(fā)現(xiàn)錯(cuò)誤,保存測(cè)試用例和測(cè)試數(shù)據(jù)。2.維護(hù)支援技術(shù)

在軟件維護(hù)階段用來(lái)提高維護(hù)作業(yè)的效率和質(zhì)量的技術(shù)。信息收集錯(cuò)誤原因分析軟件分析和理解維護(hù)方案評(píng)價(jià)代碼與文檔修改修改后的確認(rèn)遠(yuǎn)距離的維護(hù)

8.3.4維護(hù)的副作用

所謂維護(hù)的副作用是指因修改軟件而造成的錯(cuò)誤或其他不希望發(fā)生的情況,有以下3種副作用:1.修改代碼的副作用在使用程序設(shè)計(jì)語(yǔ)言修改源代碼時(shí),都可能引入新的錯(cuò)誤。刪除或修改一個(gè)子程序、刪除或修改一個(gè)標(biāo)號(hào)、刪除或修改一個(gè)標(biāo)識(shí)符改變程序代碼的時(shí)序關(guān)系、改變占用存儲(chǔ)的大小、改變邏輯運(yùn)算符修改文件的打開(kāi)或關(guān)閉改進(jìn)程序的執(zhí)行效率把設(shè)計(jì)上的改變翻譯成代碼的改變?yōu)檫吔鐥l件的邏輯測(cè)試做出改變時(shí)以上這些改變都容易引入錯(cuò)誤。2.修改數(shù)據(jù)的副作用在修改數(shù)據(jù)結(jié)構(gòu)時(shí),有可能造成軟件設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)不匹配,因而導(dǎo)致軟件出錯(cuò)。修改數(shù)據(jù)的副作用是修改軟件信息結(jié)構(gòu)導(dǎo)致的結(jié)果。在重新定義局部的或全局的常量、重新定義記錄或文件的格式增大或減小一個(gè)數(shù)組或高層數(shù)據(jù)結(jié)構(gòu)的大小修改全局或公共數(shù)據(jù)重新初始化控制標(biāo)志或指針重新排列輸入/輸出或子程序的參數(shù)時(shí)以上這些情況都容易導(dǎo)致設(shè)計(jì)與數(shù)據(jù)不相容的錯(cuò)誤。數(shù)據(jù)副作用可以通過(guò)詳細(xì)的設(shè)計(jì)文檔加以控制。3.修改文檔的副作用對(duì)數(shù)據(jù)流、軟件結(jié)構(gòu)、模塊邏輯或任何其他有關(guān)特性進(jìn)行修改時(shí),必須對(duì)相關(guān)技術(shù)文檔進(jìn)行相應(yīng)修改。如果對(duì)可執(zhí)行軟件的修改不反映在文檔里,會(huì)產(chǎn)生文檔的副作用。對(duì)交互輸入的順序或格式進(jìn)行修改,如果沒(méi)有正確地記入文檔中,可能引起重大的問(wèn)題。過(guò)時(shí)的文檔內(nèi)容、索引和文本可能造成沖突,引起用戶業(yè)務(wù)的失敗和不滿。因此,必須在軟件交付之前對(duì)整個(gè)軟件配置進(jìn)行評(píng)審,以減少文檔的副作用。為了控制因修改而引起的副作用,要做到:(1)按模塊把修改分組;(2)自頂向下地安排被修改模塊的順序;(3)每次修改一個(gè)模塊;(4)對(duì)于每個(gè)修改了的模塊,在安排修改下一個(gè)模塊之前,要確定這個(gè)修改的副作用,可以使用交叉引用表、存儲(chǔ)映象表、執(zhí)行流程跟蹤等。8.4可維護(hù)性8.4.1可維護(hù)性定義所謂軟件的可維護(hù)性,就是衡量糾正軟件系統(tǒng)出現(xiàn)的錯(cuò)誤和缺陷,以及為滿足新的要求進(jìn)行修改、擴(kuò)充或壓縮的容易程度的一種軟件屬性提高軟件的可維護(hù)性是支配軟件工程方法論所有步驟的重要目標(biāo)。許多軟件的維護(hù)十分困難,原因在于這些軟件的文檔和源程序難于理解,又難于修改。從原則上講,軟件開(kāi)發(fā)工作應(yīng)嚴(yán)格按照軟件工程的要求,遵循特定的軟件標(biāo)準(zhǔn)或規(guī)范進(jìn)行。但實(shí)際上往往由于種種原因并不能真正做到,如文檔不全、質(zhì)量差、開(kāi)發(fā)過(guò)程不注意采用先進(jìn)的方法,忽視程序設(shè)計(jì)風(fēng)格等,因此,造成軟件維護(hù)工作量加大,成本上升,修改出錯(cuò)率升高。此外,許多維護(hù)要求并不是因?yàn)槌绦蛑谐鲥e(cuò)而提出的,而是為適應(yīng)環(huán)境變化或需求變化而提出的。由于維護(hù)工作面廣,維護(hù)難度大,稍有不慎,就會(huì)在修改中給軟件帶來(lái)新的問(wèn)題或引入新的差錯(cuò),所以,為了使得軟件能夠易于維護(hù),必須考慮使軟件具有可維護(hù)性。

軟件的可維護(hù)性是軟件開(kāi)發(fā)階段各個(gè)時(shí)期的關(guān)鍵目標(biāo)。目前廣泛使用的是用如下的7個(gè)特性衡量程序的可維護(hù)性。而且對(duì)于不同類型的維護(hù),這7種特性的側(cè)重點(diǎn)也不相同。下表所示為在各類維護(hù)中的側(cè)重點(diǎn),表中的“□”表示需要的特性。1.可理解性

可理解性表明人們通過(guò)閱讀源代碼和相關(guān)文檔,了解程序功能及其如何運(yùn)行的容易程度。一個(gè)可理解的程序主要應(yīng)具備以下一些特性:模塊化、風(fēng)格一致性、不使用令人捉摸不定或含糊不清的代碼、使用有意義的數(shù)據(jù)名和過(guò)程名、結(jié)構(gòu)化、完整性等??衫斫庑钥梢酝ㄟ^(guò)“90-10測(cè)試”的方法來(lái)衡量,即把一份被測(cè)試的源程序清單拿給一位有經(jīng)驗(yàn)的程序員閱讀10分鐘。若該程序員能憑自己的理解和記憶寫(xiě)出該程序的90%以上。則認(rèn)為這個(gè)程序具有可理解性,否則這個(gè)程序要重新編寫(xiě)。2.可修改性可修改性表明程序容易修改的程度。一個(gè)可修改的程序應(yīng)當(dāng)是可理解的、通用的、靈活的、簡(jiǎn)單的。測(cè)試可修改性的一種定量方法是修改練習(xí)。其基本思想是通過(guò)做幾個(gè)簡(jiǎn)單的修改,來(lái)評(píng)價(jià)修改的難度。設(shè)C是程序中各個(gè)模塊的復(fù)雜性,n是必須修改的模塊數(shù),A是要修改的模塊的復(fù)雜性。則修改的難度D由下式計(jì)算:D=A/C

對(duì)于簡(jiǎn)單的修改,若D>1,說(shuō)明該程序修改困難。A和C可用任何一種度量程序復(fù)雜性的方法計(jì)算。3.可測(cè)試性

可測(cè)試性表明論證程序正確性的容易程度。程序越簡(jiǎn)單,證明其正確性就越容易。而且設(shè)計(jì)合適的測(cè)試用例,取決于對(duì)程序的全面理解,因此,一個(gè)可測(cè)試的程序應(yīng)當(dāng)是可理解的、可靠的、簡(jiǎn)單的。對(duì)于程序模塊,可用程序復(fù)雜性來(lái)度量可測(cè)試性。程序的環(huán)路復(fù)雜性越大,程序的路徑就越多,因此,全面測(cè)試程序的難度就越大。4.可靠性

可靠性表明一個(gè)程序按照用戶的要求和設(shè)計(jì)目標(biāo),在給定的一段時(shí)間內(nèi)正確執(zhí)行的概率。可靠性度量的標(biāo)準(zhǔn)主要有:平均失效間隔時(shí)間(meantimetofailure,MTTF)、平均修復(fù)時(shí)間(meantimetorepairerror,MTTR)、有效性A(=MTBD/(MTBD+MDT))。度量可靠性的方法主要有如下兩類:(1)根據(jù)程序錯(cuò)誤統(tǒng)計(jì)數(shù)字,進(jìn)行可靠性預(yù)測(cè)。(2)根據(jù)程序復(fù)雜性,預(yù)測(cè)軟件可靠性。5.可移植性

可移植性表明程序轉(zhuǎn)移到一個(gè)新的計(jì)算環(huán)境的可能性的大小?;蛘咚砻鞒绦蚩梢匀菀椎?、有效地在各種各樣的計(jì)算環(huán)境中運(yùn)行的容易程度。一個(gè)可移植的程序應(yīng)具有結(jié)構(gòu)良好、靈活、不依賴于某一具體計(jì)算機(jī)或操作系統(tǒng)的性能。6.效率

效率表明一個(gè)程序能執(zhí)行預(yù)定功能而又不浪費(fèi)機(jī)器資源的程度。這些機(jī)器資源包括內(nèi)存容量、外存容量、通道容量和執(zhí)行時(shí)間。7.可使用性從用戶觀點(diǎn)出發(fā),可使用性是指程序方便、實(shí)用及易于使用的程度。一個(gè)可使用的程序應(yīng)是易于使用的、能允許用戶出錯(cuò)和改變,并盡可能不使用戶陷入混亂狀態(tài)的程序。用于可使用性度量的檢查項(xiàng)目主要有:(1)程序是否具有自描述性?(2)程序是否能始終如一地按照用戶的要求運(yùn)行?(3)程序是否讓用戶對(duì)數(shù)據(jù)處理有一個(gè)滿意的和適當(dāng)?shù)目刂???)程序是否容易學(xué)會(huì)使用?(5)程序是否使用數(shù)據(jù)管理系統(tǒng)來(lái)自動(dòng)地處理事務(wù)性工作和管理格式化、地址分配及存儲(chǔ)器組織。(6)程序是否具有容錯(cuò)性?(7)程序是否靈活?8.其他間接定量度量可維護(hù)性的方法

Gilb提出了與軟件維護(hù)期間工作量有關(guān)的一些數(shù)據(jù),可以使用它們間接地對(duì)軟件的可維護(hù)性做出估計(jì)。(1)問(wèn)題識(shí)別的時(shí)間;(2)因管理活動(dòng)拖延的時(shí)間;(3)收集維護(hù)工具的時(shí)間;(4)分析、診斷問(wèn)題的時(shí)間;(5)修改規(guī)格說(shuō)明的時(shí)間;(6)具體的改錯(cuò)或修改的時(shí)間;(7)局部測(cè)試的時(shí)間;(8)集成或回歸測(cè)試的時(shí)間;(9)維護(hù)的評(píng)審時(shí)間;(10)恢復(fù)時(shí)間。這些數(shù)據(jù)反映了維護(hù)全過(guò)程中檢錯(cuò)-糾錯(cuò)-驗(yàn)證的周期,即從檢測(cè)出軟件存在的問(wèn)題開(kāi)始至修正它們并經(jīng)回歸測(cè)試驗(yàn)證這段時(shí)間??梢源致缘卣J(rèn)為,這個(gè)周期越短,維護(hù)越容易。8.4.2可維護(hù)性的度量

軟件度量學(xué)是一門(mén)研究對(duì)軟件的可維護(hù)性做出定量度量的學(xué)科。度量一個(gè)可維護(hù)程序的7種特性常用的方法有質(zhì)量檢查表、質(zhì)量測(cè)試和質(zhì)量標(biāo)準(zhǔn)。質(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ì)量特性。8.4.3提高可維護(hù)性的方法建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級(jí)使用提高軟件質(zhì)量的技術(shù)和工具進(jìn)行明確的質(zhì)量保證審查選擇可維護(hù)的程序設(shè)計(jì)語(yǔ)言提供完整和一致的文檔一個(gè)可維護(hù)的程序應(yīng)是可理解的、可靠的、可測(cè)試的、可修改的、可移植的、效率高的、可使用的。盡管可維護(hù)性要求每一種質(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ì)量,并對(duì)軟件生存期的費(fèi)用產(chǎn)生很大的影響。建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級(jí)1.模塊化模塊化技術(shù)的優(yōu)點(diǎn)是如果需要改變某個(gè)模塊的功能,則只要改變這個(gè)模塊,對(duì)其他模塊影響很??;如果需要增加程序的某些功能,則僅需增加完成這些功能的新的模塊或模塊層;程序的測(cè)試與重復(fù)測(cè)試比較容易;程序錯(cuò)誤易于定位和糾正;容易提高程序效率。2.結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)不僅使得模塊結(jié)構(gòu)標(biāo)準(zhǔn)化,而且將模塊間的相互作用也標(biāo)準(zhǔn)化了,因而把模塊化又向前推進(jìn)了一步。采用結(jié)構(gòu)化程序設(shè)計(jì)可以獲得良好的程序結(jié)構(gòu)。使用提高軟件質(zhì)量的技術(shù)和工具

3.使用結(jié)構(gòu)化程序設(shè)計(jì)技術(shù),提高現(xiàn)有系統(tǒng)的可維護(hù)性

(1)采用備用件的方法——當(dāng)要修改某一個(gè)模塊時(shí),用一個(gè)新的結(jié)構(gòu)良好的模塊替換掉整個(gè)模塊。(2)采用自動(dòng)重建結(jié)構(gòu)和重新格式化的工具(結(jié)構(gòu)更新技術(shù))。(3)改進(jìn)現(xiàn)有程序的不完善的文檔。(4)使用結(jié)構(gòu)化程序設(shè)計(jì)方法實(shí)現(xiàn)新的子系統(tǒng)。(5)采用結(jié)構(gòu)化小組。

質(zhì)量保證審查除了保證軟件得到適當(dāng)?shù)馁|(zhì)量外,還可以用來(lái)檢測(cè)在開(kāi)發(fā)和維護(hù)階段內(nèi)發(fā)生的質(zhì)量變化。一旦檢測(cè)出問(wèn)題來(lái),就可以采取措施糾正,以控制不斷增長(zhǎng)的軟件維護(hù)成本。為了保證軟件的可維護(hù)性,有4種類型的軟件審查。1.在檢查點(diǎn)進(jìn)行復(fù)審保證軟件質(zhì)量的最佳方法是在軟件開(kāi)發(fā)的最初階段就把質(zhì)量要求考慮進(jìn)去,并在開(kāi)發(fā)過(guò)程每一個(gè)階段的終點(diǎn),設(shè)置檢查點(diǎn)進(jìn)行檢查。檢查的目的是要證實(shí),已開(kāi)發(fā)的軟件是否符合標(biāo)準(zhǔn),是否滿足規(guī)定的質(zhì)量需求。質(zhì)量保證審查

在不同的檢查點(diǎn),檢查的重點(diǎn)不完全相同,例如,在設(shè)計(jì)階段,檢查重點(diǎn)是可理解性、可修改性、可測(cè)試性??衫斫庑詸z查的重點(diǎn)是程序的復(fù)雜性。如下圖所示??梢允褂酶鞣N質(zhì)量特性檢查表,或用度量標(biāo)準(zhǔn)來(lái)檢查可維護(hù)性。各種度量標(biāo)準(zhǔn)應(yīng)當(dāng)在管理部門(mén)、用戶、軟件開(kāi)發(fā)人員、軟件維護(hù)人員當(dāng)中達(dá)成一致意見(jiàn)。審查小組可以采用人工測(cè)試一類的方式進(jìn)行審查。

2.驗(yàn)收檢查驗(yàn)收檢查是一個(gè)特殊的檢查點(diǎn)的檢查,是交付使用前的最后一次檢查,是軟件投入運(yùn)行之前保證可維護(hù)性的最后機(jī)會(huì)。它實(shí)際上是驗(yàn)收測(cè)試的一部分,只不過(guò)它是從維護(hù)的角度提出驗(yàn)收的條件和標(biāo)準(zhǔn)。以下是驗(yàn)收檢查必須遵循的最小驗(yàn)收標(biāo)準(zhǔn)。(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è)試工具等的需求。(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)性。(3)源代碼標(biāo)準(zhǔn)①盡可能使用程序設(shè)計(jì)語(yǔ)言的標(biāo)準(zhǔn)版本。②所有的代碼都必須具有良好的結(jié)構(gòu)。③所有的代碼都必須文檔化,在注釋中說(shuō)明它的輸入、輸出,以及便于測(cè)試/再測(cè)試的一些特點(diǎn)與風(fēng)格。(4)文檔標(biāo)準(zhǔn)文檔中應(yīng)說(shuō)明程序的輸入/輸出、使用的方法/算法、錯(cuò)誤恢復(fù)方法、所有參數(shù)的范圍、默認(rèn)條件等。3.周期性地維護(hù)審查檢查點(diǎn)復(fù)查和驗(yàn)收檢查,可用來(lái)保證新軟件系統(tǒng)的可維護(hù)性。對(duì)已有的軟件系統(tǒng),則應(yīng)當(dāng)進(jìn)行周期性

溫馨提示

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