版權(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章 維護(hù),軟件維護(hù)是軟件生命周期的最后一個(gè)階段,它處于系統(tǒng)投入生產(chǎn)性運(yùn)行以后的時(shí)期中,因此不屬于系統(tǒng)開發(fā)過(guò)程。 軟件維護(hù)的基本任務(wù)是保證軟件在一個(gè)相當(dāng)長(zhǎng)的時(shí)期能夠正常運(yùn)行。 軟件維護(hù)需要的工作量非常大,雖然在不同應(yīng)用領(lǐng)域維護(hù)成本差別很大,但是,平均說(shuō)來(lái),大型軟件的維護(hù)成本高達(dá)開發(fā)成本的四倍左右。,8.1.1 軟件維護(hù)定義,所謂軟件維護(hù)就是在軟件已經(jīng)交付使用之后,為了改正錯(cuò)誤或滿足新的需要而修改軟件的過(guò)程。 軟件維護(hù)包括下述4項(xiàng)活動(dòng)。 診斷和改正錯(cuò)誤的過(guò)程:改正性維護(hù) 為了和變化了的環(huán)境適當(dāng)?shù)嘏浜隙M(jìn)行的修改軟件的活動(dòng):適應(yīng)性維護(hù) 為了滿足在使用軟件的過(guò)程中用戶的
2、建議和改進(jìn)意見而作的維護(hù):完善性維護(hù) 為了給未來(lái)的改進(jìn)奠定更好的基礎(chǔ)而修改軟件:預(yù)防性維護(hù),在軟件交付使用后,因開發(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ù)的工作量占全部維護(hù)活動(dòng)的17%21%。,1、改正(糾錯(cuò))性維護(hù),適應(yīng)性維護(hù),也就是為了和變化了的環(huán)境適當(dāng)?shù)嘏浜隙M(jìn)行的修改軟件的活動(dòng),是既必要又經(jīng)常的維護(hù)活動(dòng)。 外部環(huán)境(新的硬、軟件配置) 數(shù)據(jù)環(huán)境(數(shù)據(jù)庫(kù)、數(shù)據(jù)格式、數(shù)據(jù)輸入/輸出方式
3、、數(shù)據(jù)存儲(chǔ)介質(zhì)) 可能發(fā)生變化。 適應(yīng)性維護(hù)的工作量占全部維護(hù)活動(dòng)的18%25%,2、適應(yīng)性維護(hù),在軟件的使用過(guò)程中,用戶往往會(huì)對(duì)軟件提出新的功能與性能要求。 為了滿足這些要求,需要修改或再開發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性。 這種情況下進(jìn)行的維護(hù)活動(dòng)叫做完善性維護(hù)。,3、完善性維護(hù),實(shí)踐表明,在幾種維護(hù)活動(dòng)中,完善性維護(hù)所占的比重最大。即大部分維護(hù)工作是改變和加強(qiáng)軟件,而不是糾錯(cuò)。 完善性維護(hù)不一定是救火式的緊急維修,而可以是有計(jì)劃、有預(yù)謀的一種再開發(fā)活動(dòng)。 事實(shí)證明,來(lái)自用戶要求擴(kuò)充、加強(qiáng)軟件功能、性能的維護(hù)活動(dòng)約占整個(gè)維護(hù)工作的50以上。,3、完善性
4、性維護(hù),預(yù)防性維護(hù)是為了提高軟件的可維護(hù)性、可靠性等,為以后進(jìn)一步改進(jìn)軟件打下良好基礎(chǔ)。 預(yù)防性維護(hù)定義為:采用先進(jìn)的軟件工程方法對(duì)需要維護(hù)的軟件或軟件中的某一部分(重新)進(jìn)行設(shè)計(jì)、編制和測(cè)試。 在整個(gè)維護(hù)活動(dòng)中,預(yù)防性維護(hù)占很小的比例,只占5%。,4、預(yù)防性維護(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ò)誤。,8.1.1 軟件維護(hù)定義,三類維護(hù)占
5、 維護(hù)在軟件生 總維護(hù)比例 存期所占比例,8.2 維護(hù)的特點(diǎn),結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)的差別巨大 1.非結(jié)構(gòu)化維護(hù) 如果軟件配置的唯一成分是程序代碼,那么維護(hù)活動(dòng)從艱苦地評(píng)價(jià)程序代碼開始,而且常常由于程序內(nèi)部文檔不足而使評(píng)價(jià)更困難。而且對(duì)程序代碼所做的改動(dòng)的后果是難于估量的:因?yàn)闆]有測(cè)試方面的文檔,所以不可能進(jìn)行回歸測(cè)試。 非結(jié)構(gòu)化維護(hù)付出代價(jià)高昂。,8.2 維護(hù)的特點(diǎn),2.結(jié)構(gòu)化維護(hù) 如果有一個(gè)完整的軟件配置存在,那么維護(hù)工作從評(píng)價(jià)設(shè)計(jì)文檔開始,確定軟件重要的結(jié)構(gòu)特點(diǎn)、性能特點(diǎn)以及接口特點(diǎn);估量要求的改動(dòng)將帶來(lái)的影響,并且計(jì)劃實(shí)施途徑。然后首先修改設(shè)計(jì)并且對(duì)所做的修改進(jìn)行仔細(xì)復(fù)查。接下來(lái)編寫
6、相應(yīng)的源程序代碼;使用在測(cè)試說(shuō)明書中包含的信息進(jìn)行回歸測(cè)試;最后,把修改后的軟件再次交付使用。 結(jié)構(gòu)化維護(hù)能減少精力浪費(fèi)并且能提高維護(hù)的總體質(zhì)量。,8.2 維護(hù)的特點(diǎn),二、維護(hù)成本,有形的軟件維護(hù)成本是花費(fèi)了多少錢,無(wú)形的維護(hù)成本有更大的影響。 一些合理的修復(fù)或修改請(qǐng)求不能及時(shí)安排,使得客戶不滿意; 變更的結(jié)果引入新的故障,使得軟件整體質(zhì)量下降; 把軟件人員抽調(diào)到維護(hù)工作中,干擾了軟件開發(fā)工作。,軟件維護(hù)的代價(jià)是降低了生產(chǎn)率,在做老程序的維護(hù)時(shí)非常明顯。 例如,開發(fā)每一行源代碼耗資25美元,維護(hù)每一行源代碼需要耗資1000美元。,8.2 維護(hù)的特點(diǎn),維護(hù)工作量的一個(gè)模型:,M P K * ex
7、p(c - d) 其中: M是維護(hù)用的總工作量, P是生產(chǎn)性工作量, K是經(jīng)驗(yàn)常數(shù), c是因缺乏好的設(shè)計(jì)和文檔而導(dǎo)致復(fù)雜性的度量), d是維護(hù)人員對(duì)軟件的熟悉程度。 模型表明,如果軟件的開發(fā)途徑不好(即,沒有使用軟件工程方法學(xué)),而且原來(lái)的開發(fā)人員不能參加維護(hù)工作,那么維護(hù)工作量和費(fèi)用將指數(shù)地增加。,影響維護(hù)工作量的因素,在軟件的維護(hù)過(guò)程中,需要花費(fèi)大量的工作量,從而直接影響了軟件維護(hù)的成本。 許多軟件在開發(fā)時(shí)并未考慮將來(lái)的修改,為軟件的維護(hù)帶來(lái)許多問題。,系統(tǒng)大?。合到y(tǒng)越大,理解掌握起來(lái)越困難。系統(tǒng)越大,所執(zhí)行功能越復(fù)雜。因而需要更多的維護(hù)工作量。 程序設(shè)計(jì)語(yǔ)言:使用強(qiáng)功能的程序設(shè)計(jì)語(yǔ)言可以
8、控制程序的規(guī)模。語(yǔ)言的功能越強(qiáng),生成程序的模塊化和結(jié)構(gòu)化程度越高,所需的指令數(shù)就越少,程序的可讀性越好。,系統(tǒng)年齡: 老系統(tǒng)隨著不斷的修改,結(jié)構(gòu)越來(lái)越亂; 維護(hù)人員經(jīng)常更換,程序又變得越來(lái)越難于理解。 許多老系統(tǒng)在當(dāng)初并未按照軟件工程的要求進(jìn)行開發(fā),因而沒有文檔,或文檔太少。 在長(zhǎng)期的維護(hù)過(guò)程中文檔在許多地方與程序?qū)崿F(xiàn)變得不一致,在維護(hù)時(shí)就會(huì)遇到很大困難。,數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用:使用數(shù)據(jù)庫(kù),可以簡(jiǎn)單而有效地管理和存儲(chǔ)用戶程序中的數(shù)據(jù),還可以減少生成用戶報(bào)表應(yīng)用軟件的維護(hù)工作量。 先進(jìn)的軟件開發(fā)技術(shù):在軟件開發(fā)時(shí),若使用能使軟件結(jié)構(gòu)比較穩(wěn)定的分析與設(shè)計(jì)技術(shù),及程序設(shè)計(jì)技術(shù),如面向?qū)ο蠹夹g(shù)、復(fù)用技術(shù)等
9、,可減少大量的工作量。,8.2 維護(hù)的特點(diǎn),維護(hù)的問題 與軟件維護(hù)有關(guān)的絕大多數(shù)問題,都可歸因于軟件定義和軟件開發(fā)的方法有缺點(diǎn)。 在軟件生命周期的頭兩個(gè)時(shí)期沒有嚴(yán)格而又科學(xué)的管理和規(guī)劃,幾乎必然會(huì)導(dǎo)致在最后階段出現(xiàn)問題。,8.2 維護(hù)的特點(diǎn),和軟件維護(hù)有關(guān)的部分問題: 理解別人寫的程序通常非常困難,而且困難程度隨著軟件配置成分的減少而迅速增加。如果僅有程序代碼沒有說(shuō)明文檔,則會(huì)出現(xiàn)嚴(yán)重的問題。 需要維護(hù)的軟件往往沒有合格的文檔,或者文檔資料顯著不足。認(rèn)識(shí)到軟件必須有文檔僅僅是第一步,容易理解的并且和程序代碼完全一致的文檔才真正有價(jià)值。 當(dāng)要求對(duì)軟件進(jìn)行維護(hù)時(shí),不能指望由開發(fā)人員給我們仔細(xì)說(shuō)明軟
10、件。由于維護(hù) “階段持續(xù)的時(shí)間很長(zhǎng),因此,當(dāng)需要解釋軟件時(shí),往往原來(lái)寫程序的人已經(jīng)不在附近了。,8.2 維護(hù)的特點(diǎn),絕大多數(shù)軟件在設(shè)計(jì)時(shí)沒有考慮將來(lái)的修改。除非使用強(qiáng)調(diào)模塊獨(dú)立原理的設(shè)計(jì)方法論,否則修改軟件既困難又容易發(fā)生差錯(cuò)。 軟件維護(hù)不是一項(xiàng)吸引人的工作。形成這種觀念很大程度上是因?yàn)榫S護(hù)工作經(jīng)常遭受挫折。,8.3 軟件維護(hù)過(guò)程,維護(hù)過(guò)程本質(zhì)上是修改和壓縮了的軟件定義和開發(fā)過(guò)程。 為了有效地進(jìn)行軟件維護(hù),應(yīng)事先就開始做組織工作。 首先建立一個(gè)維護(hù)組織 確定報(bào)告及評(píng)價(jià)的過(guò)程 為每一個(gè)維護(hù)要求規(guī)定一個(gè)標(biāo)準(zhǔn)化的事件序列 建立一個(gè)適用于維護(hù)活動(dòng)的記錄保管過(guò)程,并且規(guī)定復(fù)審標(biāo)準(zhǔn),8.3 軟件維護(hù)過(guò)程,
11、維護(hù)組織,維護(hù)組織,維護(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ù)修改建議,分析修改建議,是否合理,提交管理部門審查,是否同意,修改,撤銷,N,Y,N,Y,進(jìn)行測(cè)試,提交管理部門審批,是否批準(zhǔn),更新主文檔,Y,更新其他文檔,提交使用,修改,N,軟件維護(hù)的管理流程,8.3 軟件維護(hù)過(guò)程,維護(hù)報(bào)告 應(yīng)該用標(biāo)準(zhǔn)化的格式表達(dá)所有軟件維護(hù)要求。 軟件維護(hù)人員給用戶提供空白的維護(hù)要求有時(shí)稱為軟件問題報(bào)告表
12、,由要求一項(xiàng)維護(hù)活動(dòng)的用戶填寫。 如果遇到了一個(gè)錯(cuò)誤,那么必須完整描述導(dǎo)致出現(xiàn)錯(cuò)誤的環(huán)境(包括輸入數(shù)據(jù),全部輸出數(shù)據(jù),以及其他有關(guān)信息)。 對(duì)于適應(yīng)性或完善性的維護(hù)要求,應(yīng)該提出一個(gè)簡(jiǎn)短的需求說(shuō)明書。 由維護(hù)管理員和系統(tǒng)管理員評(píng)價(jià)用戶提交的維護(hù)要求表。,8.3 軟件維護(hù)過(guò)程,維護(hù)的事件流,8.3 軟件維護(hù)過(guò)程,保存維護(hù)記錄 應(yīng)該為每項(xiàng)維護(hù)工作都收集下述數(shù)據(jù): (1)程序標(biāo)識(shí); (2)源語(yǔ)句數(shù); (3)機(jī)器指令條數(shù); (4)使用的程序設(shè)計(jì)語(yǔ)言; (5)程序安裝的日期; (6)自從安裝以來(lái)程序運(yùn)行的次數(shù); (7)自從安裝以來(lái)程序失效的次數(shù);(8)程序變動(dòng)的層次和標(biāo)識(shí); (9)因程序變動(dòng)而增加的源語(yǔ)
13、句數(shù);(10)因程序變動(dòng)而刪除的源語(yǔ)句數(shù); (11)每個(gè)改動(dòng)耗費(fèi)的人時(shí)數(shù); (12)程序改動(dòng)的日期; (13)軟件工程師的名字; (14)維護(hù)要求表的標(biāo)識(shí); (15)維護(hù)類型; (l6)維護(hù)開始和完成的日期; (17)累計(jì)用于維護(hù)的人時(shí)數(shù); (18)與完成的維護(hù)相聯(lián)系的純效益。,8.3 軟件維護(hù)過(guò)程,評(píng)價(jià)維護(hù)活動(dòng) 從下述七個(gè)方面度量維護(hù)工作: (1)每次程序運(yùn)行平均失效的次數(shù); (2)用于每一類維護(hù)活動(dòng)的總?cè)藭r(shí)數(shù); (3)平均每個(gè)程序、每種語(yǔ)言、每種維護(hù)類型所做的程序變動(dòng)效; (4)維護(hù)過(guò)程中增加或刪除一個(gè)源語(yǔ)句平均花費(fèi)的人時(shí)數(shù); (5)維護(hù)每種語(yǔ)言平均花費(fèi)的人時(shí)數(shù); (6)一張維護(hù)要求表的平
14、均周轉(zhuǎn)時(shí)間; (7)不同維護(hù)類型所占的百分比。,8.4程序修改的步驟及修改的副作用,在軟件維護(hù)時(shí),必然會(huì)對(duì)源程序進(jìn)行修改。 通常對(duì)源程序的修改不能無(wú)計(jì)劃地倉(cāng)促上陣,為了正確、有效地修改,需要經(jīng)歷以下三個(gè)步驟。 分析和理解程序 修改程序 重新驗(yàn)證程序,分析和理解程序,經(jīng)過(guò)分析,全面、準(zhǔn)確、迅速地理解程序是決定維護(hù)成敗和質(zhì)量好壞的關(guān)鍵。在這方面,軟件的可理解性和文檔的質(zhì)量非常重要。,修改程序,對(duì)程序的修改,必須事先做出計(jì)劃,有預(yù)謀地、周密有效地實(shí)施修改。 1. 設(shè)計(jì)程序的修改計(jì)劃 程序的修改計(jì)劃要考慮人員和資源的安排。小的修改可以不需要詳細(xì)的計(jì)劃,而對(duì)于需要耗時(shí)數(shù)月的修改,就需要計(jì)劃立案。,2.
15、修改代碼,以適應(yīng)變化在修改時(shí),要求: (1) 正確、有效地編寫修改代碼;(2) 要謹(jǐn)慎地修改程序,盡量保持程序的風(fēng)格及格式,要在程序清單上注明改動(dòng)的指令;(3) 不要?jiǎng)h除程序語(yǔ)句,除非完全肯定它是無(wú)用的;(4) 不要試圖共用程序中已有的臨時(shí)變量或工作區(qū),為了避免沖突或混淆用途,應(yīng)設(shè)置自己的變量;,(5) 插入錯(cuò)誤檢測(cè)語(yǔ)句;(6) 在修改過(guò)程中做好修改的詳細(xì)記錄,消除變更中任何有害的副作用(波動(dòng)效應(yīng)); 3. 修改程序的副作用 所謂副作用是指因修改軟件而造成的錯(cuò)誤或其它不希望發(fā)生的情況。副作用有三種:修改代碼的副作用、修改數(shù)據(jù)的副作用、文檔的副作用。,在修改源代碼時(shí),都可能引入錯(cuò)誤。例如,刪除或
16、修改一個(gè)子程序、刪除或修改一個(gè)標(biāo)號(hào)、 刪除或修改一個(gè)標(biāo)識(shí)符、改變程序代碼的時(shí)序關(guān)系、改變占用存儲(chǔ)的大小、改變邏輯運(yùn)算符、修改文件的打開或關(guān)閉、改進(jìn)程序的執(zhí)行效率,以及把設(shè)計(jì)上的改變翻譯成代碼的改變時(shí),都容易引入錯(cuò)誤。,(1) 修改代碼的副作用,(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é)果。 容易導(dǎo)致設(shè)計(jì)與數(shù)據(jù)不相容的錯(cuò)誤可以有: 重新定義局部的或全局的常量,重新定義記錄或文件的格式 增大或減小一個(gè)數(shù)組或高層數(shù)據(jù)結(jié)構(gòu)的大小 修改全局或公共數(shù)據(jù) 重新初始化控制標(biāo)志或指針 重新排列輸入輸出或子程序的參數(shù),
17、(3) 文檔的副作用,對(duì)數(shù)據(jù)流、軟件結(jié)構(gòu)、 模塊邏輯或任何其它有關(guān)特性進(jìn)行修改時(shí),必須對(duì)相關(guān)技術(shù)文檔進(jìn)行相應(yīng)修改。否則會(huì)導(dǎo)致文檔與程序功能不匹配,缺省條件改變,新錯(cuò)誤信息不正確等錯(cuò)誤。使得軟件文檔不能反映軟件的當(dāng)前狀態(tài)。 對(duì)于用戶來(lái)說(shuō),軟件事實(shí)上就是文檔。,如果對(duì)可執(zhí)行軟件的修改不反映在文檔里,就會(huì)產(chǎn)生文檔的副作用。 對(duì)交互輸入的順序或格式進(jìn)行修改,如果沒有正確地記入文檔中,就可能引起重大的問題。 過(guò)時(shí)的文檔內(nèi)容、索引和文本可能造成沖突,引起用戶失敗和不滿。 因此,必須在軟件交付之前對(duì)整個(gè)軟件配置進(jìn)行評(píng)審,以減少文檔的副作用。,重新驗(yàn)證程序,在將修改后的程序提交用戶之前,需要進(jìn)行充分的確認(rèn)和測(cè)
18、試,以保證整個(gè)修改后程序的正確性。 靜態(tài)確認(rèn)修改軟件,伴隨著引起新的錯(cuò)誤的危險(xiǎn)。為了能夠做出正確的判斷,驗(yàn)證修改后的程序至少需要兩個(gè)人參加。要檢查:,(1) 修改是否涉及到規(guī)格說(shuō)明? 修改結(jié)果是否符合規(guī)格說(shuō)明? 有沒有歪曲規(guī)格說(shuō)明?(2) 程序的修改是否足以修正軟件中的問題? 源程序代碼有無(wú)邏輯錯(cuò)誤? 修改時(shí)有無(wú)修補(bǔ)失誤?(3) 修改部分對(duì)其它部分有無(wú)不良影響(副作用)?對(duì)軟件進(jìn)行修改,常常會(huì)引發(fā)別的問題,有必要檢查修改的影響范圍。,計(jì)算機(jī)確認(rèn)在進(jìn)行了以上確認(rèn)的基礎(chǔ)上,用計(jì)算機(jī)對(duì)修改程序進(jìn)行確認(rèn)測(cè)試:(1) 確認(rèn)測(cè)試順序:先對(duì)修改部分進(jìn)行測(cè)試,然后隔離修改部分,測(cè)試程序的未修改部分,最后再把它
19、們集成起來(lái)進(jìn)行測(cè)試。這種測(cè)試稱為回歸測(cè)試。 (2) 準(zhǔn)備標(biāo)準(zhǔn)的測(cè)試用例。(3) 充分利用軟件工具幫助重新驗(yàn)證過(guò)程。,(4) 在重新確認(rèn)過(guò)程中,需邀請(qǐng)用戶參加。 維護(hù)后的驗(yàn)收在交付新軟件之前,維護(hù)主管部門要檢驗(yàn):(1) 全部文檔是否完備,并已更新;(2) 所有測(cè)試用例和測(cè)試結(jié)果已經(jīng)正確記載;(3) 記錄軟件配置所有副本的工作已經(jīng)完成;(4) 維護(hù)工序和責(zé)任已經(jīng)確定。,8.5 軟件的可維護(hù)性,許多軟件的維護(hù)十分困難,原因在于這些軟件的文檔不全、質(zhì)量差、開發(fā)過(guò)程不注意采用好的方法,忽視程序設(shè)計(jì)風(fēng)格等。 許多維護(hù)要求并不是因?yàn)槌绦蛑谐鲥e(cuò)而提出的,而是為適應(yīng)環(huán)境變化或需求變化而提出的。 為了使得軟件能夠
20、易于維護(hù),必須考慮使軟件具有可維護(hù)性。,8.5 軟件的可維護(hù)性,軟件可維護(hù)性可以定性地定義為: 維護(hù)人員理解、改正、改動(dòng)和改進(jìn)這個(gè)軟件的難易程度。 軟件的可維護(hù)性是軟件開發(fā)階段各個(gè)時(shí)期的關(guān)鍵目標(biāo)。,8.5.1 軟件可維護(hù)性的因素,目前廣泛使用的是用如下的七個(gè)特性來(lái)衡量程序的可維護(hù)性。 可理解性可使用性 可測(cè)試性可移植性 可修改性效率 可靠性 而且對(duì)于不同類型的維護(hù),這七種特性的側(cè)重點(diǎn)也不相同。,8.5.1 軟件可維護(hù)性的因素,8.5.2 軟件可維護(hù)性的度量,人們一直期望對(duì)軟件的可維護(hù)性做出定量度量,但要做到這一點(diǎn)并不容易。 常用的度量一個(gè)可維護(hù)的程序的七種特性的方法。,1. 可理解性,可理解性
21、表明人們通過(guò)閱讀源代碼和相關(guān)文檔,了解程序功能及其如何運(yùn)行的容易程度。 一個(gè)可理解的程序應(yīng)具備以下一些特性:模塊化,風(fēng)格一致性,不使用令人捉摸不定或含糊不清的代碼,使用有意義的數(shù)據(jù)名和過(guò)程名,結(jié)構(gòu)化,完整性等。,2. 可靠性,可靠性表明一個(gè)程序按照用戶的要求和設(shè)計(jì)目標(biāo),在給定的一段時(shí)間內(nèi)正確執(zhí)行的概率。 關(guān)于可靠性,度量的標(biāo)準(zhǔn)主要有: 平均失效間隔時(shí)間MTTF 平均修復(fù)時(shí)間MTTR 有效性A = MTBD/(MTBD+MDT) 注:系統(tǒng)平均不工作間隔時(shí)間MTBD(Mean Time Between System Downs)、平均停機(jī)時(shí)間MDT(Mean Down Time),3. 可測(cè)試性,
22、可測(cè)試性表明論證程序正確性的容易程度。程序越簡(jiǎn)單,證明其正確性就越容易。而且設(shè)計(jì)合用的測(cè)試用例,取決于對(duì)程序的全面理解。 一個(gè)可測(cè)試的程序應(yīng)當(dāng)是可理解的,可靠的,簡(jiǎn)單的。 用于可測(cè)試性度量的檢查項(xiàng)目如下: 程序是否模塊化? 結(jié)構(gòu)是否良好?,程序是否可理解? 程序是否可靠? 程序是否能顯示任意中間結(jié)果? 程序是否能以清楚的方式描述它的輸出? 程序是否能及時(shí)地按照要求顯示所有的輸入? 程序是否有跟蹤及顯示邏輯控制流程的能力? 程序是否能從檢查點(diǎn)再啟動(dòng)? 程序是否能顯示帶說(shuō)明的錯(cuò)誤信息?,4. 可修改性,可修改性表明程序容易修改的程度。 一個(gè)可修改的程序應(yīng)當(dāng)是可理解的、通用的、靈活的、簡(jiǎn)單的。 通用
23、性是指程序適用于各種功能變化而無(wú)需修改。 靈活性是指能夠容易地對(duì)程序進(jìn)行修改。,5. 可移植性,可移植性表明程序轉(zhuǎn)移到一個(gè)新的計(jì)算環(huán)境的可能性的大小。或者它表明程序可以容易地、有效地在各種各樣的計(jì)算環(huán)境中運(yùn)行的容易程度。 一個(gè)可移植的程序應(yīng)具有結(jié)構(gòu)良好、靈活、不依賴于某一具體計(jì)算機(jī)或操作系統(tǒng)的性能。 用于可移植性度量的檢查項(xiàng)目如下:,是否是用高級(jí)的獨(dú)立于機(jī)器的語(yǔ)言來(lái)編寫程序? 是否使用廣泛使用的標(biāo)準(zhǔn)化的程序設(shè)計(jì)語(yǔ)言來(lái)編寫程序? 是否僅使用了這種語(yǔ)言的標(biāo)準(zhǔn)版本和特性? 程序中是否使用了標(biāo)準(zhǔn)的普遍使用的庫(kù)功能和子程序? 程序中是否極少使用或根本不使用操作系統(tǒng)的功能?,程序在執(zhí)行之前是否初始化內(nèi)存?
24、 程序在執(zhí)行之前是否測(cè)定當(dāng)前的輸入輸出設(shè)備? 程序是否把與機(jī)器相關(guān)的語(yǔ)句分離了出來(lái),集中放在了一些單獨(dú)的程序模塊中,并有說(shuō)明文件? 程序是否結(jié)構(gòu)化? 并允許在小一些的計(jì)算機(jī)上分段(覆蓋)運(yùn)行? 程序中是否避免了依賴于字母數(shù)字或特殊字符的內(nèi)部位表示?,6. 效率,效率表明一個(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)化作用?,程序的編譯器是否有優(yōu)化功能? 是否把特殊子程序和錯(cuò)誤處理子程序都?xì)w入了單獨(dú)的模塊中? 是否以快速的數(shù)
25、學(xué)運(yùn)算代替了較慢的數(shù)學(xué)運(yùn)算? 是否盡可能地使用了整數(shù)運(yùn)算,而不是實(shí)數(shù)運(yùn)算? 是否在表達(dá)式中避免了混合數(shù)據(jù)類型的使用,消除了不必要的類型轉(zhuǎn)換?,程序是否避免了非標(biāo)準(zhǔn)的函數(shù)或子程序的調(diào)用? 在幾條分支結(jié)構(gòu)中,是否最有可能為“真”的分支首先得到測(cè)試? 在復(fù)雜的邏輯條件中,是否最有可能為“真“的表達(dá)式首先得到測(cè)試?,7. 可使用性,從用戶觀點(diǎn)出發(fā),可使用性定義為程序方便、實(shí)用、及易于使用的程度。一個(gè)可使用的程序應(yīng)是易于使用的、能允許用戶出錯(cuò)和改變,并盡可能不使用戶陷入混亂狀態(tài)的程序。 用于可使用性度量的檢查項(xiàng)目如下: 程序是否具有自描述性?,程序是否能始終如一地按照用戶的要求運(yùn)行? 程序是否讓用戶對(duì)數(shù)
26、據(jù)處理有一個(gè)滿意的和適當(dāng)?shù)目刂? 程序是否容易學(xué)會(huì)使用? 程序是否使用數(shù)據(jù)管理系統(tǒng)來(lái)自動(dòng)地處理事務(wù)性工作和管理格式化、地址分配及存儲(chǔ)器組織。 程序是否具有容錯(cuò)性? 程序是否靈活?,8.5.3 提高軟件可維護(hù)性的方法,建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級(jí) 使用提高軟件質(zhì)量的技術(shù)和工具 進(jìn)行明確的質(zhì)量保證審查 選擇可維護(hù)的程序設(shè)計(jì)語(yǔ)言 改進(jìn)程序的文檔,8.5 軟件再工程過(guò)程,圖8.3 軟件再工程過(guò)程模型,8.5 軟件再工程過(guò)程,典型的軟件再工程過(guò)程模型如圖8.3所示,該模型定義了6類活動(dòng)。 再工程范型是一個(gè)循環(huán)模型。這意味著作為該范型的組成部分的每個(gè)活動(dòng)都可能被重復(fù),而且對(duì)于任意一個(gè)特定的循環(huán)來(lái)說(shuō),過(guò)程可以在完成任意一個(gè)活動(dòng)之后終止。,8.5 軟件再工程過(guò)程,1.庫(kù)存目錄分析 每個(gè)軟件組織都應(yīng)該保存其擁有的所有應(yīng)用系統(tǒng)的庫(kù)存目錄。該目錄包含關(guān)于每個(gè)應(yīng)用系統(tǒng)的基本信息。 對(duì)庫(kù)中每個(gè)程序都做逆向工程或再工程是不現(xiàn)實(shí)的。下述3類程序有可能成為預(yù)防性維護(hù)的對(duì)象: (1)預(yù)定將使用多年的程序; (2)當(dāng)前正在成功地使用著的程序; (3)在最近的將來(lái)可能要做重大修改或增強(qiáng)的程序。,8
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 延髓梗死患者的腦水腫預(yù)防與護(hù)理
- 山東省濟(jì)寧市梁山京師華宇高中2026年教師招聘?jìng)淇碱}庫(kù)含答案詳解
- 2026年汽車電工考試題庫(kù)參考答案
- 2026年湖北省省直轄行政單位單招職業(yè)適應(yīng)性測(cè)試題庫(kù)必考題
- 2026年淄博張店區(qū)教育系統(tǒng)公開招聘工作人員(71人)備考題庫(kù)含答案
- 2026安徽皖信人力資源管理有限公司馬鞍山分公司招聘13人參考題庫(kù)含答案
- 哮喘患者的心理治療
- 岳陽(yáng)市中心醫(yī)院2026年度人員招聘?jìng)淇碱}庫(kù)附答案詳解
- 峨山縣教育體育系統(tǒng)公開招聘2026年畢業(yè)生備考題庫(kù)參考答案詳解
- 2026吉林高速公路集團(tuán)有限公司白城分公司勞務(wù)派遣項(xiàng)目招聘2人參考題庫(kù)及答案1套
- 保密工作臺(tái)帳(模板)
- 報(bào)警信息管理辦法
- 2025年上??季嬖囶}目及答案
- 瀝青混凝土供貨方案及保障措施
- 主數(shù)據(jù)mdm管理辦法
- 醫(yī)院智慧管理分級(jí)評(píng)估標(biāo)準(zhǔn)體系(試行)-全文及附表
- DB14∕T 3327-2025 高速公路路基路面探地雷達(dá)檢測(cè)技術(shù)規(guī)程
- 《完整的PMC部作業(yè)流程體系》
- 氨水泄漏應(yīng)急處置預(yù)案
- 心理輔導(dǎo)送教上門教學(xué)計(jì)劃
- 電商公司費(fèi)用管理制度
評(píng)論
0/150
提交評(píng)論