版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、-軟件維護(hù),軟件工程第八章,首都師范大學(xué)教育技術(shù)系 方海光2006年10月,編程大師曾說過:“哪怕程序只有三行長,總有一天你也不得不對它進(jìn)行維護(hù)。”,在軟件開發(fā)過程中始終強(qiáng)調(diào)軟件的可維護(hù)性。原因是,一個應(yīng)用系統(tǒng)由于需求和環(huán)境的變化以及自身暴露的問題,在交付用戶使用后,對它進(jìn)行維護(hù)是不可避免的,統(tǒng)計(jì)和估測結(jié)果表明,信息技術(shù)中硬件費(fèi)用一般占35%,軟件占65%,而軟件后期維護(hù)費(fèi)用有時竟高達(dá)軟件總費(fèi)用的80%,所有前期開發(fā)費(fèi)用僅占20%。 許多大型軟件公司為維護(hù)已有軟件耗費(fèi)大量人力、財(cái)力。因此,必須建立一套評估、控制和實(shí)施軟件維護(hù)的機(jī)制,這就是本章重點(diǎn)討論的內(nèi)容。,內(nèi)容提要,軟件維護(hù)的定義 軟件維護(hù)
2、的類型 結(jié)構(gòu)化維護(hù)VS非結(jié)構(gòu)化維護(hù) 影響軟件維護(hù)工作量的因素 軟件維護(hù)的過程 可維護(hù)性 軟件維護(hù)的管理,軟件維護(hù)的定義,軟件維護(hù)是指軟件系統(tǒng)交付使用以后,為了改正錯誤或滿足新的需要而修改軟件的過程。 一般來說,要求進(jìn)行維護(hù)的原因大致有以下幾種: (1)改正程序中的錯誤和缺陷。 (2)改進(jìn)設(shè)計(jì)以適應(yīng)新的軟、硬件環(huán)境。 (3)增加新的應(yīng)用范圍。,軟件維護(hù)的類型,根據(jù)軟件維護(hù)的不同原因,軟件維護(hù)可以分成三種類型: 改正性維護(hù) 適應(yīng)性維護(hù) 完善性維護(hù) 預(yù)防性維護(hù),改正性維護(hù),在軟件交付使用后,因開發(fā)時測試的不徹底、不完全,必然會有部分隱藏的錯誤遺留到運(yùn)行階段。 這些隱藏下來的錯誤在某些特定的使用環(huán)境下
3、就會暴露出來。 為了識別和糾正軟件錯誤、改正軟件性能上的缺陷、排除實(shí)施中的誤使用,應(yīng)當(dāng)進(jìn)行的診斷和改正錯誤的過程就叫做改正性維護(hù)。,適應(yīng)性維護(hù),在使用過程中, 外部環(huán)境(新的硬、軟件配置) 數(shù)據(jù)環(huán)境(數(shù)據(jù)庫、數(shù)據(jù)格式、數(shù)據(jù)輸入/輸出方式、數(shù)據(jù)存儲介質(zhì)) 可能發(fā)生變化。 為使軟件適應(yīng)這種變化,而去修改軟件的過程就叫做適應(yīng)性維護(hù)。,完善性維護(hù),在軟件的使用過程中,用戶往往會對軟件提出新的功能與性能要求。 為了滿足這些要求,需要修改或再開發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性。 這種情況下進(jìn)行的維護(hù)活動叫做完善性維護(hù)。,預(yù)防性維護(hù),預(yù)防性維護(hù)即軟件再工程,是為了提高軟
4、件的可維護(hù)性、可靠性等,為以后進(jìn)一步改進(jìn)軟件打下良好基礎(chǔ)。 采用先進(jìn)的軟件工程方法對需要維護(hù)的軟件或軟件中的某一部分(重新)進(jìn)行設(shè)計(jì)、編制和測試,稱為預(yù)防性維護(hù)。,各種維護(hù)類型和維護(hù)工作量的比例,其它 維護(hù) 4 %,適應(yīng)性 維 護(hù) 18-25%,改正性 維護(hù)1721%,完善性維護(hù)50%66,維護(hù)占 70.8%,改正性維護(hù)占全部維護(hù)工作量的比率已從上世紀(jì)80年代初的20%大幅度下降, 上世紀(jì)90年代初一些公司的產(chǎn)品差錯率已接近于零!,軟件維護(hù)的特點(diǎn),結(jié)構(gòu)化維護(hù)和非結(jié)構(gòu)化維護(hù)差別巨大 軟件維護(hù)的代價高昂 維護(hù)問題多,軟件維護(hù)事件流,結(jié)構(gòu)化維護(hù)VS非結(jié)構(gòu)化維護(hù),軟件的開發(fā)過程對軟件的維護(hù)產(chǎn)生較大的影
5、響。 如果采用軟件工程的方法進(jìn)行軟件開發(fā),保證每個階段都有完整且詳細(xì)的文檔,這樣維護(hù)會相對容易,被稱為結(jié)構(gòu)化的維護(hù)。 反之,如果不采用軟件工程方法開發(fā)軟件,軟件只有程序而欠缺文檔,則維護(hù)工作變得十分困難,被成為非結(jié)構(gòu)化的維護(hù)。,結(jié)構(gòu)化維護(hù)VS非結(jié)構(gòu)化維護(hù),交付使用,分析設(shè)計(jì),制定計(jì)劃,修改計(jì)劃,編碼,復(fù)審?fù)ㄟ^,文件有嗎,苦讀代碼,找到問題,編碼,復(fù)審?fù)ㄟ^,維護(hù)要求,n,y,y,y,y,n,n,n,結(jié)構(gòu)化維護(hù),非結(jié)構(gòu)化維護(hù),維護(hù)要求,配置,評價設(shè)計(jì),計(jì)劃途徑,修改設(shè)計(jì),重編程序,評價代碼,?,重編程序,復(fù)查,復(fù)查,交付使用,軟件,代碼,結(jié)構(gòu)化維護(hù),非結(jié)構(gòu)化維護(hù),非結(jié)構(gòu)化維護(hù),在非結(jié)構(gòu)化維護(hù)過程中
6、,開發(fā)人員只能通過閱讀、理解和分析源程序來了解系統(tǒng)功能、軟件結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口和設(shè)計(jì)約束等,這樣做是十分困難的,也容易產(chǎn)生誤解。要弄清楚整個系統(tǒng),勢必要花費(fèi)大量的人力和物力,對源程序修改產(chǎn)生的后果難以估計(jì)。在沒有文檔的情況下,也不可能進(jìn)行回歸測試,很難保證程序的正確性。,結(jié)構(gòu)化維護(hù),在結(jié)構(gòu)化維護(hù)的過程中,所開發(fā)的軟件具有各個階段的文檔,它對于理解和掌握軟件的功能、性能、體系結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口和設(shè)計(jì)約束等有很大的作用。維護(hù)時,開發(fā)人員從分析需求規(guī)格說明開始,明白軟件功能和性能上的改變,對設(shè)計(jì)說明文檔進(jìn)行修改和復(fù)查,再根據(jù)設(shè)計(jì)修改進(jìn)行程序變動,并用測試文檔中的測試用例進(jìn)行回歸測試,最后
7、將修改后的軟件再次交付使用。這種維護(hù)有利于減少工作量和降低成本,大大提高軟件的維護(hù)效率。,軟件維護(hù)的代價高昂,有形代價逐年上升: 1970年軟件維護(hù)費(fèi)用占總費(fèi)用的35%40%; 1980年軟件維護(hù)費(fèi)用占總費(fèi)用的40%60%; 1990年軟件維護(hù)費(fèi)用占總費(fèi)用的70%80%。,軟件維護(hù)的代價高昂,維護(hù)費(fèi)用只不過是軟件維護(hù)最明顯的代價,其他一些還不明顯的代價將來可能更為人們關(guān)注。其他無形的代價還有: 可用的資源被軟件維護(hù)所占用。 未能及時滿足用戶的維護(hù)要求時引起用戶不滿。 維護(hù)時改動軟件,引入了潛在故障,降低了軟件質(zhì)量。 抽調(diào)人員從事維護(hù)工作,對新的開發(fā)過程造成混亂。 導(dǎo)致生產(chǎn)率的大幅下降。,軟件維
8、護(hù)的代價高昂,用于維護(hù)工作的勞動可以劃分成: 生產(chǎn)性活動(如,分析評價、修改設(shè)計(jì)、編寫程序代碼等) 非生產(chǎn)性活動(例如,理解程序代碼功能、解釋數(shù)據(jù)結(jié)構(gòu)、接口特點(diǎn)、性能限度等),軟件維護(hù)的代價高昂,下述表達(dá)式給出了維護(hù)工作量的一個模型: 其中,M是維護(hù)的總工作量,P是生產(chǎn)性工作量,K是經(jīng)驗(yàn)常數(shù),c是復(fù)雜程度,d是維護(hù)人員對軟件的熟悉程度 上述模型表明,如果軟件開發(fā)沒有運(yùn)用軟件工程方法學(xué),而且原來的開發(fā)人員未能夠參與到維護(hù)工作之中,則維護(hù)工作量和費(fèi)用將指數(shù)增加。,軟件維護(hù)的問題,與軟件維護(hù)有關(guān)的大多數(shù)問題都可歸因于軟件定義和開發(fā)方法上的不足。 軟件開發(fā)時采用急功近利,還是放眼未來的態(tài)度,對軟件維護(hù)
9、影響極大。 一般說來,軟件開發(fā)若不嚴(yán)格遵循軟件開發(fā)標(biāo)準(zhǔn),軟件維護(hù)就會遇到許多困難。,軟件維護(hù)的問題,下面列出了和軟件維護(hù)有關(guān)的部分問題: 理解別人的代碼通常是非常困難的,而且難度隨著軟件配置成分的缺失而迅速增加; 需要維護(hù)的軟件通常往往沒有合格的文檔,或文檔資料顯然不足。-認(rèn)識到文檔僅僅是第一步,容易理解且和程序保持一致的文檔才是真正具有價值的; 當(dāng)軟件要求維護(hù)時,不能指望開發(fā)人員給我們仔細(xì)說明軟件。由于維護(hù)持續(xù)時間很長,因此當(dāng)需要解釋軟件時候,往往開發(fā)人員已經(jīng)不在附近了; ,上述種種問題在現(xiàn)有沒有采用軟件工程思想開發(fā)出來的軟件中,都或多或少存在。,影響軟件維護(hù)工作量的因素,在軟件維護(hù)中,影響
10、維護(hù)工作量的因素主要有以下六種: 系統(tǒng)的大小 系統(tǒng)規(guī)模越大,其功能就越復(fù)雜,軟件維護(hù)的工作量也隨之增大。 程序設(shè)計(jì)語言 使用強(qiáng)功能的程序設(shè)計(jì)語言可以控制程序的規(guī)模。語言的功能越強(qiáng),生成程序的模塊化和結(jié)構(gòu)化程度越高,所需的指令數(shù)就越少,程序的可讀性越好。,影響軟件維護(hù)工作量的因素,系統(tǒng)年齡 老系統(tǒng)比新系統(tǒng)需要更多的維護(hù)工作量 。因?yàn)槎啻蔚男薷目赡茉斐上到y(tǒng)結(jié)構(gòu)變得混亂,由于維護(hù)人員經(jīng)常更換,程序變得越來越難于理解,加之系統(tǒng)開發(fā)時文檔不齊全,或在長期的維護(hù)過程中文檔在許多地方與程序?qū)崿F(xiàn)變得不一致,從而使維護(hù)變得十分困難。 數(shù)據(jù)庫技術(shù)的應(yīng)用 使用數(shù)據(jù)庫,可以簡單而有效地管理和存儲用戶程序中的數(shù)據(jù),還可
11、以減少生成用戶報(bào)表應(yīng)用軟件的維護(hù)工作量。,影響軟件維護(hù)工作量的因素,先進(jìn)的軟件開發(fā)技術(shù) 在軟件開發(fā)過程中,如果采用先進(jìn)的分析設(shè)計(jì)技術(shù)和程序設(shè)計(jì)技術(shù),如面向?qū)ο蠹夹g(shù)、復(fù)用技術(shù)等,可減少大量的維護(hù)工作量。 其它一些因素 如應(yīng)用的類型、數(shù)學(xué)模型、任務(wù)的難度、開關(guān)與標(biāo)記、IF嵌套深度、索引或下標(biāo)數(shù)等,對維護(hù)工作量也有影響。,軟件維護(hù)的過程,軟件維護(hù)工作在維護(hù)申請?zhí)岢鲋熬烷_始了,它包括: 建立維護(hù)組織,強(qiáng)制報(bào)告和評估的過程; 為每個維護(hù)申請確定標(biāo)準(zhǔn)化的事件序列; 制定保存維護(hù)活動記錄的制度和有關(guān)復(fù)審及評估的標(biāo)準(zhǔn)。,維護(hù)階段的工作事件流,維護(hù)組織,維護(hù)決策機(jī)構(gòu),維護(hù)管理員,系統(tǒng)管理員,維護(hù)人員,配置管理
12、員,維護(hù)申請,每個維護(hù)申請通過維護(hù)管理員轉(zhuǎn)告給系統(tǒng)管理員,系統(tǒng)管理員一般都是對程序(某一部分)特別熟悉的技術(shù)人員,他們對維護(hù)申請及可能引起的軟件修改進(jìn)行評估,并向修改控制決策機(jī)構(gòu)(一個或一組管理者)報(bào)告,由它最后確定是否采取行動。,在維護(hù)活動開始之前就明確維護(hù)責(zé)任是十分必要的,可以大大地減少維護(hù)過程中可能出現(xiàn)的混亂。,維護(hù)團(tuán)隊(duì)組織,維護(hù)報(bào)告MRF,應(yīng)該用標(biāo)準(zhǔn)的格式來表達(dá)維護(hù)要求。軟件維護(hù)人員通常提供給用戶空白的維護(hù)請求表(報(bào)告)即軟件問題報(bào)告,該報(bào)告(表)由要求一項(xiàng)維護(hù)活動的用戶填寫。 如遇到什么錯誤,用戶需要詳細(xì)描述錯誤出現(xiàn)的現(xiàn)場信息(包括輸入數(shù)據(jù)、列表文件和其他有關(guān)信息); 對適應(yīng)性維護(hù)、
13、完善性維護(hù)應(yīng)該給出一個簡短的需求規(guī)格說明書。最終由維護(hù)管理員和系統(tǒng)管理員評價用戶用戶提出的維護(hù)請求表。,一個維護(hù)申請被核準(zhǔn)后,維護(hù)請求表就成為外部文檔,視作規(guī)劃本次維護(hù)任務(wù)的依據(jù)。,軟件維護(hù)請求報(bào)告,軟件修改報(bào)告(SCR),依據(jù)維護(hù)請求表,軟件組織內(nèi)部應(yīng)該制定出一個軟件修改報(bào)告,它給出下述信息: 滿足維護(hù)請求表中提出的要求所需的工作量; 維護(hù)要求的性質(zhì); 維護(hù)要求的優(yōu)先次序; 與修改有關(guān)的背景數(shù)據(jù)。 在擬定進(jìn)一步維護(hù)計(jì)劃前,把軟件修改報(bào)告提交控制決策機(jī)構(gòu)審查批準(zhǔn)。,有 無,有 無,軟件修改報(bào)告(SCR),軟件維護(hù)的工作流,軟件維護(hù)工作流,雖然每種維護(hù)請求類型著眼點(diǎn)不同,但總的維護(hù)方法是相同的。
14、 維護(hù)工作最后一步是復(fù)審,主要審查修改過的軟件配置,以驗(yàn)證軟件結(jié)構(gòu)中的所有成分的功能,保證滿足維護(hù)請求表中的要求。,情況復(fù)審,當(dāng)一項(xiàng)軟件維護(hù)任務(wù)完成之后,進(jìn)行一次情況復(fù)審不無裨益。情況復(fù)審主要考慮下列問題: 依照當(dāng)前狀態(tài),在設(shè)計(jì)、編碼和測試的哪些方面還能用其他方法進(jìn)行? 哪些維護(hù)資源可用但未用? 這次維護(hù)活動中主要(或次要)的障礙有哪些? 在維護(hù)請求中有預(yù)防性維護(hù)嗎? 情況復(fù)審的目的在于促進(jìn)未來的維護(hù)工作,同時也為有效管理軟件組織提供重要的反饋信息。,軟件維護(hù)記錄的保存,有效的保存維護(hù)記錄是極端重要的。 保存維護(hù)記錄的第一個問題就是那些數(shù)據(jù)值得保存? Swanson為我們指出了下述內(nèi)容:程序標(biāo)
15、識、源語句數(shù)、機(jī)器指令數(shù)、使用的程序設(shè)計(jì)語言、軟件安裝的日期、自安裝以來軟件運(yùn)行的次數(shù)、自安裝以來軟件失敗的次數(shù)、程序變動的層次和標(biāo)識、因程序變動而增加的源語句數(shù)、因程序變動而刪除的源語句數(shù)、每個改動消耗的人時數(shù)、程序改動的日期、軟件工程師的名稱、維護(hù)要求的標(biāo)識、維護(hù)類型、維護(hù)開始和完成的時間、用于維護(hù)的累計(jì)人時數(shù)、與完成的維護(hù)相關(guān)聯(lián)的純收益。 應(yīng)該為每項(xiàng)維護(hù)工作都收集上述數(shù)據(jù)??梢岳眠@些數(shù)據(jù)構(gòu)成一個維護(hù)數(shù)據(jù)庫。,軟件維護(hù)記錄,評價維護(hù)活動,缺乏有效的數(shù)據(jù)就無法評價軟件維護(hù)活動。 如果已經(jīng)開始保存維護(hù)記錄,則可以對維護(hù)工作做一些定量度量,至少可以從如下7方面進(jìn)行評價: 每次程序運(yùn)行平均失敗的
16、次數(shù); 用于每一類維護(hù)活動的總?cè)藭r數(shù); 平均每個程序、每種語言、每種維護(hù)類型所必需的程序變動數(shù); 維護(hù)過程中增加或刪除源語句平均花費(fèi)的人時數(shù); 維護(hù)每種語言平均花費(fèi)的人時數(shù); 一張維護(hù)要求表的平均周轉(zhuǎn)時間; 不同維護(hù)類型所占的比例;,根據(jù)這些統(tǒng)計(jì)量可對開發(fā)技術(shù)、編程語言,以及對維護(hù)工作量的預(yù)測與資源分配等諸多方面的決策進(jìn)行評價。,軟件可維護(hù)性,軟件可維護(hù)性即軟件被理解、改正、調(diào)整和改進(jìn)的難易程度。 可維護(hù)性是指導(dǎo)軟件工程各個階段工作的一條基本原則,也是軟件工程追求的目標(biāo)之一。,影響軟件可維護(hù)性的因素,軟件的可維護(hù)性受各種因素的影響:設(shè)計(jì)、編碼和測試時漫不經(jīng)心,軟件配置不全,都會給維護(hù)帶來困難。
17、除了與開發(fā)方法有關(guān)的因素外,還有下列與開發(fā)環(huán)境有關(guān)的因素: 是否擁有一組訓(xùn)練有素的軟件人員; 系統(tǒng)結(jié)構(gòu)是否可理解; 是否使用標(biāo)準(zhǔn)的程序設(shè)計(jì)語言; 是否使用標(biāo)準(zhǔn)的操作系統(tǒng); 文檔的結(jié)構(gòu)是否標(biāo)準(zhǔn)化; 測試用例是否合適; 是否已有嵌入系統(tǒng)的調(diào)試工具; 是否有一臺計(jì)算機(jī)可用于維護(hù)。 除此之外,軟件開發(fā)時的原班人馬是否能參加維護(hù)也是一個值得考慮的因素。,軟件可維護(hù)性的度量,軟件可維護(hù)性與軟件質(zhì)量和可靠性一樣是難于量化的概念,然而借助維護(hù)活動中可以定量估算的屬性,能間接地度量可維護(hù)性: 察覺到問題所耗的時間; 收集維護(hù)工具所用的時間; 分析問題所需時間; 形成修改說明書所需時間; 糾錯(或修改)所用時間;
18、 局部測試所用時間; 整體測試所用時間; 維護(hù)復(fù)審所用時間; 完全恢復(fù)所用時間。,提高軟件可維護(hù)性的方法,建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級 使用提高軟件質(zhì)量的技術(shù)和工具 進(jìn)行明確的質(zhì)量保證審查 選擇可維護(hù)的程序設(shè)計(jì)語言 改進(jìn)程序的文檔 開發(fā)軟件時考慮到維護(hù),軟件維護(hù)的副作用,軟件修改是一項(xiàng)很危險的工作,對一個復(fù)雜的邏輯過程,那怕做一項(xiàng)微小的改動,都可能引入潛在的錯誤,雖然設(shè)計(jì)文檔化和細(xì)致的回歸測試有助于排除錯誤,但是維護(hù)仍然會產(chǎn)生副作用。 軟件維護(hù)的副作用指,由于維護(hù)或在維護(hù)過程中其他一些不期望的行為引入的錯誤,副作用大致可分為三類: 代碼副作用 數(shù)據(jù)副作用 文檔副作用,代碼的副作用,修改或刪除
19、子程序; 修改或刪除語句標(biāo)號; 修改或刪除標(biāo)識符; 為提高執(zhí)行效率而做的修改; 修改文件的open、close操作; 修改邏輯操作符; 由設(shè)計(jì)變動引起的代碼修改; 修改對邊界條件的測試。,數(shù)據(jù)的副作用,局部和全局常量的再定義; 記錄或文件格式的再定義; 增減數(shù)據(jù)或其他復(fù)雜數(shù)據(jù)結(jié)構(gòu)的體積; 修改全局?jǐn)?shù)據(jù); 重新初始化控制標(biāo)志和指針; 重新排列I/O表或子程序參數(shù)表。,文檔的副作用,維護(hù)應(yīng)統(tǒng)一考慮整個軟件配置,而不僅僅是源代碼。否則,由于在設(shè)計(jì)文檔和用戶手冊中未能準(zhǔn)確反映修改情況而引起文檔副作用。 對軟件的任何修改都應(yīng)在相應(yīng)的技術(shù)文檔中反映出來,如果設(shè)計(jì)文檔不能與軟件當(dāng)前的狀況對應(yīng)則比沒有文檔更糟
20、。 對用戶來說,若使用說明中未能反映修改后的狀況,那么用戶在這些問題上必定出錯。 一次維護(hù)完成之后,再次交付軟件之前應(yīng)仔細(xì)復(fù)審整個配置,有效地減少文檔副作用。 某些維護(hù)申請不必修改設(shè)計(jì)和代碼,只需整理用戶文檔便可達(dá)到維護(hù)的目的。,軟件可維護(hù)性,許多軟件的維護(hù)十分困難,原因在于這些軟件的文檔不全、質(zhì)量差、開發(fā)過程不注意采用好的方法,忽視程序設(shè)計(jì)風(fēng)格等。 許多維護(hù)要求并不是因?yàn)槌绦蛑谐鲥e而提出的,而是為適應(yīng)環(huán)境變化或需求變化而提出的。 為了使得軟件能夠易于維護(hù),必須考慮使軟件具有可維護(hù)性。,軟件可維護(hù)性的定義,軟件可維護(hù)性是指糾正軟件系統(tǒng)出現(xiàn)的錯誤和缺陷,以及為滿足新的要求進(jìn)行修改、擴(kuò)充或壓縮的容
21、易程度。 可維護(hù)性、可使用性、可靠性是衡量軟件質(zhì)量的主要質(zhì)量特性,也是用戶十分關(guān)心的幾個方面。 軟件的可維護(hù)性是軟件開發(fā)階段各個時期的關(guān)鍵目標(biāo)。,目前廣泛使用的是用如下的七個特性來衡量程序的可維護(hù)性。 可理解性可使用性 可測試性可移植性 可修改性效率 可靠性 而且對于不同類型的維護(hù),這七種特性的側(cè)重點(diǎn)也不相同。,在各類維護(hù)中的側(cè)重點(diǎn),這些質(zhì)量特性通常體現(xiàn)在軟件產(chǎn)品的許多方面; 為使每一個質(zhì)量特性都達(dá)到預(yù)定的要求,需要在軟件開發(fā)的各個階段采取相應(yīng)的措施加以保證。 這些質(zhì)量要求要滲透到而各開發(fā)階段的各個步驟當(dāng)中。因此,軟件的可維護(hù)性是產(chǎn)品投入運(yùn)行以前各階段面向上述各質(zhì)量特性要求進(jìn)行開發(fā)的最終結(jié)果。
22、,可維護(hù)性的度量,人們一直期望對軟件的可維護(hù)性做出定量度量,但要做到這一點(diǎn)并不容易。 常用的度量一個可維護(hù)的程序的七種特性的方法。就是 質(zhì)量檢查表 質(zhì)量測試 質(zhì)量標(biāo)準(zhǔn),質(zhì)量檢查表是用于測試程序中某些質(zhì)量特性是否存在的一個問題清單。 評價者針對檢查表上的每一個問題,依據(jù)自己的定性判斷,回答“Yes”或者“No”。 質(zhì)量測試與質(zhì)量標(biāo)準(zhǔn)則用于定量分析和評價程序的質(zhì)量。 由于許多質(zhì)量特性是相互抵觸的,要考慮幾種不同的度量標(biāo)準(zhǔn),相應(yīng)地去度量不同的質(zhì)量特性。,1. 可理解性,可理解性表明人們通過閱讀源代碼和相關(guān)文檔,了解程序功能及其如何運(yùn)行的容易程度。 一個可理解的程序應(yīng)具備以下一些特性:模塊化,風(fēng)格一致
23、性,不使用令人捉摸不定或含糊不清的代碼,使用有意義的數(shù)據(jù)名和過程名,結(jié)構(gòu)化,完整性等。,2. 可靠性,可靠性表明一個程序按照用戶的要求和設(shè)計(jì)目標(biāo),在給定的一段時間內(nèi)正確執(zhí)行的概率。 關(guān)于可靠性,度量的標(biāo)準(zhǔn)主要有: 平均失效間隔時間MTTF 平均修復(fù)時間MTTR 有效性A = MTBD/(MTBD+MDT),度量可靠性的方法,根據(jù)程序錯誤統(tǒng)計(jì)數(shù)字,進(jìn)行可靠性預(yù)測。常用方法是利用一些可靠性模型,根據(jù)程序測試時發(fā)現(xiàn)并排除的錯誤數(shù)預(yù)測平均失效間隔時間MTTF。 根據(jù)程序復(fù)雜性,預(yù)測軟件可靠性。用程序復(fù)雜性預(yù)測可靠性,前提條件是可靠性與復(fù)雜性有關(guān)。因此可用復(fù)雜性預(yù)測出錯率。程序復(fù)雜性度量標(biāo)準(zhǔn)可用于預(yù)測哪
24、些模塊最可能發(fā)生錯誤,以及可能出現(xiàn)的錯誤類型。,3. 可測試性,可測試性表明論證程序正確性的容易程度。程序越簡單,證明其正確性就越容易。而且設(shè)計(jì)合用的測試用例,取決于對程序的全面理解。 一個可測試的程序應(yīng)當(dāng)是可理解的,可靠的,簡單的。 用于可測試性度量的檢查項(xiàng)目如下: 程序是否模塊化? 結(jié)構(gòu)是否良好?,程序是否可理解? 程序是否可靠? 程序是否能顯示任意中間結(jié)果? 程序是否能以清楚的方式描述它的輸出? 程序是否能及時地按照要求顯示所有的輸入? 程序是否有跟蹤及顯示邏輯控制流程的能力? 程序是否能從檢查點(diǎn)再啟動? 程序是否能顯示帶說明的錯誤信息?,4. 可修改性,可修改性表明程序容易修改的程度。
25、 一個可修改的程序應(yīng)當(dāng)是可理解的、通用的、靈活的、簡單的。 通用性是指程序適用于各種功能變化而無需修改。 靈活性是指能夠容易地對程序進(jìn)行修改。,測試可修改性的一種定量方法是修改練習(xí)。其基本思想是通過做幾個簡單的修改,來評價修改的難度。 設(shè)C是程序中各個模塊的平均復(fù)雜性,n是必須修改的模塊數(shù),A 是要修改的模塊的平均復(fù)雜性。 則修改的難度D由下式計(jì)算: D = A / C,5. 可移植性,可移植性表明程序轉(zhuǎn)移到一個新的計(jì)算環(huán)境的可能性的大小?;蛘咚砻鞒绦蚩梢匀菀椎?、有效地在各種各樣的計(jì)算環(huán)境中運(yùn)行的容易程度。 一個可移植的程序應(yīng)具有結(jié)構(gòu)良好、靈活、不依賴于某一具體計(jì)算機(jī)或操作系統(tǒng)的性能。 用于
26、可移植性度量的檢查項(xiàng)目如下:,是否是用高級的獨(dú)立于機(jī)器的語言來編寫程序? 是否使用廣泛使用的標(biāo)準(zhǔn)化的程序設(shè)計(jì)語言來編寫程序? 是否僅使用了這種語言的標(biāo)準(zhǔn)版本和特性? 程序中是否使用了標(biāo)準(zhǔn)的普遍使用的庫功能和子程序? 程序中是否極少使用或根本不使用操作系統(tǒng)的功能?,程序在執(zhí)行之前是否初始化內(nèi)存? 程序在執(zhí)行之前是否測定當(dāng)前的輸入輸出設(shè)備? 程序是否把與機(jī)器相關(guān)的語句分離了出來,集中放在了一些單獨(dú)的程序模塊中,并有說明文件? 程序是否結(jié)構(gòu)化? 并允許在小一些的計(jì)算機(jī)上分段(覆蓋)運(yùn)行? 程序中是否避免了依賴于字母數(shù)字或特殊字符的內(nèi)部位表示?,6. 效率,效率表明一個程序能執(zhí)行預(yù)定功能而又不浪費(fèi)機(jī)器
27、資源的程度。 這些機(jī)器資源包括內(nèi)存容量、外存容量、通道容量和執(zhí)行時間。 用于效率度量的檢查項(xiàng)目如下: 程序是否模塊化? 結(jié)構(gòu)是否良好? 是否消除了無用的標(biāo)號與表達(dá)式,以充分發(fā)揮編譯器優(yōu)化作用?,程序的編譯器是否有優(yōu)化功能? 是否把特殊子程序和錯誤處理子程序都?xì)w入了單獨(dú)的模塊中? 是否以快速的數(shù)學(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)中,是否最有可能為“真”的分支首先得到測試? 在復(fù)雜的邏輯條件中,是否最有可能為“真“的表達(dá)式首先得到測試
28、?,7. 可使用性,從用戶觀點(diǎn)出發(fā),可使用性定義為程序方便、實(shí)用、及易于使用的程度。一個可使用的程序應(yīng)是易于使用的、能允許用戶出錯和改變,并盡可能不使用戶陷入混亂狀態(tài)的程序。 用于可使用性度量的檢查項(xiàng)目如下: 程序是否具有自描述性?,程序是否能始終如一地按照用戶的要求運(yùn)行? 程序是否讓用戶對數(shù)據(jù)處理有一個滿意的和適當(dāng)?shù)目刂? 程序是否容易學(xué)會使用? 程序是否使用數(shù)據(jù)管理系統(tǒng)來自動地處理事務(wù)性工作和管理格式化、地址分配及存儲器組織。 程序是否具有容錯性? 程序是否靈活?,其它間接定量度量可維護(hù)性的方法,問題識別的時間; 因管理活動拖延的時間; 收集維護(hù)工具的時間; 分析、診斷問題的時間; 修改規(guī)
29、格說明的時間; 具體的改錯或修改的時間; 局部測試的時間; 集成或回歸測試的時間; 維護(hù)的評審時間;,這些數(shù)據(jù)反映了維護(hù)全過程中檢錯糾錯驗(yàn)證的周期,即從檢測出軟件存在的問題開始至修正它們并經(jīng)回歸測試驗(yàn)證這段時間。 可以粗略地認(rèn)為,這個周期越短,維護(hù)越容易。,提高可維護(hù)性的方法,建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級 使用提高軟件質(zhì)量的技術(shù)和工具 進(jìn)行明確的質(zhì)量保證審查 選擇可維護(hù)的程序設(shè)計(jì)語言 改進(jìn)程序的文檔,1 建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級,一個可維護(hù)的程序應(yīng)是可理解的、可靠的、可測試的、可修改的、可移植的、效率高的、可使用的。 要實(shí)現(xiàn)這所有的目標(biāo),需要付出很大的代價,而且也不一定行得通。 某些質(zhì)
30、量特性是相互促進(jìn)的,例如可理解性和可測試性、可理解性和可修改性。,另一些質(zhì)量特性是相互抵觸的,如效率和可移植性、效率和可修改性等。 每一種質(zhì)量特性的相對重要性應(yīng)隨程序的用途及計(jì)算環(huán)境的不同而不同。例如,對編譯程序來說,可能強(qiáng)調(diào)效率;但對管理信息系統(tǒng)來說,則可能強(qiáng)調(diào)可使用性和可修改性。 應(yīng)當(dāng)對程序的質(zhì)量特性,在提出目標(biāo)的同時還必須規(guī)定它們的優(yōu)先級。,2 使用提高軟件質(zhì)量的技術(shù)和工具,模塊化 如果需要改變某個模塊的功能,則只要改變這個模塊,對其它模塊影響很小; 如果需要增加程序的某些功能,則僅需增加完成這些功能的新的模塊或模塊層; 程序的測試與重復(fù)測試比較容易; 程序錯誤易于定位和糾正;,結(jié)構(gòu)化程
31、序設(shè)計(jì) 程序被劃分成分層的模塊結(jié)構(gòu); 模塊調(diào)用控制必須從模塊的入口點(diǎn)進(jìn)入,從其出口點(diǎn)退出。 模塊的控制結(jié)構(gòu)僅限于順序、選擇、重復(fù)三種,且沒有GOTO語句。 每個程序變量只用于唯一的程序目的,而且變量的作用范圍應(yīng)是明確的、有限制的。,使用結(jié)構(gòu)化程序設(shè)計(jì)技術(shù),提高現(xiàn)有系統(tǒng)的可維護(hù)性 采用備用件的方法用一個新的結(jié)構(gòu)良好的模塊替換掉整個要修改的模塊。 采用自動重建結(jié)構(gòu)和重新格式化的工具(結(jié)構(gòu)更新技術(shù))把非結(jié)構(gòu)化代碼轉(zhuǎn)換成良好結(jié)構(gòu)代碼 。 改進(jìn)現(xiàn)有程序的不完善的文檔 建立或補(bǔ)充系統(tǒng)說明書、設(shè)計(jì)文檔、模塊說明書、以及在源程序中插入必要的注釋。,3 進(jìn)行明確的質(zhì)量保證審查,質(zhì)量保證審查對于獲得和維持軟件的質(zhì)
32、量,是一個很有用的技術(shù)。 審查可以用來檢測在開發(fā)和維護(hù)階段內(nèi)發(fā)生的質(zhì)量變化。 一旦檢測出問題來,就可以采取措施來糾正,以控制不斷增長的軟件維護(hù)成本,延長軟件系統(tǒng)的有效生命期。,保證軟件質(zhì)量的最佳方法是在軟件開發(fā)的最初階段把質(zhì)量要求考慮進(jìn)去,并在開發(fā)過程每一階段的終點(diǎn),設(shè)置檢查點(diǎn)進(jìn)行檢查。 檢查的目的是要證實(shí),已開發(fā)的軟件是否符合標(biāo)準(zhǔn),是否滿足規(guī)定的質(zhì)量需求。在不同的檢查點(diǎn),檢查的重點(diǎn)不完全相同。,1. 在檢查點(diǎn)進(jìn)行復(fù)審,軟件開發(fā)期間各個檢查點(diǎn)的檢查重點(diǎn),在設(shè)計(jì)階段,檢查重點(diǎn)是可理解性、可修改性、可測試性。 可理解性檢查的重點(diǎn)是程序的復(fù)雜性。對每個模塊可用McCabe環(huán)路來計(jì)算模塊的復(fù)雜性,若大
33、于10,則需重新設(shè)計(jì)。 可以使用各種質(zhì)量特性檢查表,或用度量標(biāo)準(zhǔn)來檢查可維護(hù)性。 審查小組可以采用人工測試一類的方式,進(jìn)行審查。,2. 驗(yàn)收檢查,驗(yàn)收檢查是一個特殊的檢查點(diǎn)的檢查,是交付使用前的最后一次檢查, 驗(yàn)收檢查實(shí)際上是驗(yàn)收測試的一部分,只不過它是從維護(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)以可測試的術(shù)語進(jìn)行書寫,排列優(yōu)先次序和定義; 區(qū)分必須的、任選的、將來的需求; 包括對系統(tǒng)運(yùn)行時的計(jì)算機(jī)設(shè)備的需求;對維護(hù)、測試、操作、以及維護(hù)人員的需求;對測試工具等的需求。,(2) 設(shè)計(jì)標(biāo)準(zhǔn) 程序應(yīng)設(shè)計(jì)成分層的模塊結(jié)構(gòu)。每個模塊應(yīng)完成唯一的
34、功能,并達(dá)到高內(nèi)聚、低耦合; 通過一些知道預(yù)期變化的實(shí)例,說明設(shè)計(jì)的可擴(kuò)充性、可縮減性和可適應(yīng)性。,(3) 源代碼標(biāo)準(zhǔn) 盡可能使用最高級的程序設(shè)計(jì)語言,且只使用語言的標(biāo)準(zhǔn)版本; 所有的代碼都必須具有良好的結(jié)構(gòu); 所有的代碼都必須文檔化,在注釋中說明它的輸入、輸出、以及便于測試再測試的一些特點(diǎn)與風(fēng)格。,(4) 文檔標(biāo)準(zhǔn) 文檔中應(yīng)說明 程序的輸入輸出 使用的方法算法 錯誤恢復(fù)方法 所有參數(shù)的范圍 缺省條件等。,3. 周期性地維護(hù)審查,檢查點(diǎn)復(fù)查和驗(yàn)收檢查,可用來保證新軟件系統(tǒng)的可維護(hù)性。 對已有的軟件系統(tǒng),則應(yīng)當(dāng)進(jìn)行周期性的維護(hù)檢查。 軟件在運(yùn)行期間進(jìn)行修改,會導(dǎo)致軟件質(zhì)量有變壞的危險,破壞程序概念的完整性。 必須定期檢查,對軟件做周期性的維護(hù)審查,以跟蹤軟件質(zhì)量的變化。,周期性維護(hù)審查實(shí)際上是開發(fā)階段檢查點(diǎn)復(fù)查的繼續(xù),并且采用的檢查方法、檢查內(nèi)容都是相同的。 維護(hù)審查的結(jié)果可以同以前的維護(hù)審查的結(jié)果,以前的驗(yàn)收檢查的結(jié)果、檢查點(diǎn)檢查的結(jié)果相比較,任何一種改變都表明在軟件質(zhì)量上或其它類型的問題上可能起了變化。 對于改變的原因應(yīng)當(dāng)進(jìn)行分析。,4. 對軟件包進(jìn)行檢查,軟件包是一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年昭通市消防救援支隊(duì)招錄第五批政府專職消防員(83人)參考題庫附答案
- 2026廣西南寧市西鄉(xiāng)塘區(qū)那龍衛(wèi)生院招聘編外工作人員2人筆試備考試題及答案解析
- 2025年下半年宜賓市一中翠屏初級中學(xué)校公開考核招聘合同制教師招聘(公共基礎(chǔ)知識)測試題附答案
- 2025年甘肅省中材科技(酒泉)風(fēng)電葉片有限公司招聘208人公筆試備考試題附答案
- 2025年浙江溫州醫(yī)科大學(xué)附屬第一醫(yī)院招聘生物樣本庫實(shí)驗(yàn)員1人備考題庫附答案
- 2025廣東廣州市花都區(qū)獅嶺鎮(zhèn)聯(lián)合小學(xué)招聘臨聘教師1人備考題庫附答案
- AI賦能基因組醫(yī)學(xué):從技術(shù)突破到臨床實(shí)踐
- 2026福建省儲備糧管理有限公司莆田直屬庫招聘1人筆試備考試題及答案解析
- 2026福建漳州市鼓浪嶼故宮文物館招聘6人筆試備考試題及答案解析
- 2026重慶經(jīng)開區(qū)物業(yè)管理有限公司招聘筆試參考題庫及答案解析
- 主管護(hù)師聘任述職報(bào)告
- AI搜索時代:從GEO到AIBE的品牌新藍(lán)圖
- 云南省2025年高二上學(xué)期普通高中學(xué)業(yè)水平合格性考試《信息技術(shù)》試卷(解析版)
- 產(chǎn)品知識培訓(xùn)會議總結(jié)
- 四川省成都市樹德實(shí)驗(yàn)中學(xué)2026屆九年級數(shù)學(xué)第一學(xué)期期末監(jiān)測試題含解析
- 與業(yè)主溝通技巧培訓(xùn)
- 專題11 圓(安徽專用)5年(2021-2025)中考1年模擬《數(shù)學(xué)》真題分類匯編
- 工程春節(jié)停復(fù)工方案(3篇)
- 社區(qū)基金使用管理辦法
- WST856-2025安全注射標(biāo)準(zhǔn)解讀
- 低壓控制基本知識培訓(xùn)課件
評論
0/150
提交評論