軟件工程_第13章._第1頁
軟件工程_第13章._第2頁
軟件工程_第13章._第3頁
軟件工程_第13章._第4頁
軟件工程_第13章._第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 軟件演化是指軟件在交付以后,對(duì)軟件進(jìn)行的一系列活動(dòng)的總稱。 軟件演化:軟件的維護(hù)、軟件再工程。 軟件維護(hù)階段覆蓋了從軟件交付使用到軟件被淘汰為止的整個(gè)時(shí)期。軟件的開發(fā)時(shí)間可能需要一、二年,甚至更短,但它的使用時(shí)間可能要經(jīng)歷幾年或幾十年。 再工程的主要目的是為遺留系統(tǒng)轉(zhuǎn)化為可演化系統(tǒng)提供一條現(xiàn)實(shí)可行的途徑,是在軟件生命周期終止后開始的一個(gè)新的階段。 內(nèi)容摘要軟件維護(hù)軟件維護(hù)的概念 什么是軟件維護(hù) 是指軟件系統(tǒng)交付使用以后,為了改正錯(cuò)誤或滿足新的需要而修改軟件的過程 國標(biāo)GB/T 11457-95給出如下定義 在一軟件產(chǎn)品交付使用后對(duì)其進(jìn)行修改,以糾正故障; 在一軟件產(chǎn)品交付使用后對(duì)其進(jìn)行修改,

2、以糾正故障、改進(jìn)其性能和其它屬性,或使產(chǎn)品適應(yīng)改變了的環(huán)境軟件維護(hù)的概念軟件維護(hù)分類 兩種錯(cuò)誤認(rèn)識(shí) 軟件維護(hù)是一次新的開發(fā)活動(dòng) 軟件維護(hù)就是改錯(cuò) 新開發(fā)活動(dòng)強(qiáng)調(diào)要在一定的約束條件下從頭開始實(shí)施 軟件維護(hù)強(qiáng)調(diào)必須在現(xiàn)有系統(tǒng)的限定和約束條件下實(shí)施 ;根據(jù)起因不同,軟件維護(hù)可以分為糾錯(cuò)性維護(hù)、適應(yīng)性維護(hù)、改善性維護(hù)和預(yù)防性維護(hù)四類 軟件維護(hù)的概念軟件維護(hù)分類 糾錯(cuò)性維護(hù):為了改正軟件系統(tǒng)中的錯(cuò)誤,使軟件能夠滿足預(yù)期的正常運(yùn)行狀態(tài)的要求而進(jìn)行的維護(hù) 適應(yīng)性維護(hù):為了使軟件適應(yīng)內(nèi)部或外部環(huán)境變化,而去修改軟件的過程 改善性維護(hù):滿足使用過程中用戶提出增加新功能或修改已有功能的建議維護(hù) 預(yù)防性維護(hù):為了提

3、高軟件的可維護(hù)性、可靠性等,為以后進(jìn)一步改進(jìn)軟件打下良好基礎(chǔ)而修改軟件的活動(dòng)軟件維護(hù)的概念軟件維護(hù)分類 在實(shí)踐中,軟件維護(hù)各種活動(dòng)常常交織在一起,盡管這些維護(hù)在性質(zhì)上有些重疊,但是還是有充分的理由區(qū)分這些維護(hù)活動(dòng) 只有正確區(qū)分維護(hù)活動(dòng)的類型才能夠更有效地確定維護(hù)需求的優(yōu)先級(jí) 軟件維護(hù)的概念維護(hù)問題 結(jié)構(gòu)化維護(hù):采用軟件工程的方法進(jìn)行軟件開發(fā),保證每個(gè)階段都有完整且詳細(xì)的文檔 非結(jié)構(gòu)化維護(hù):如果不采用軟件工程方法開發(fā)軟件,軟件只有程序而欠缺文檔,則維護(hù)工作將變得十分困難 維護(hù)時(shí),開發(fā)人員從分析需求規(guī)格說明開始,明白軟件功能和性能上的改變,對(duì)設(shè)計(jì)說明文檔進(jìn)行修改和復(fù)查,再根據(jù)設(shè)計(jì)修改進(jìn)行程序變動(dòng),

4、并用測試文檔中的測試用例進(jìn)行回歸測試,最后將修改后的軟件再次交付使用。軟件維護(hù)的概念維護(hù)問題和軟件維護(hù)有關(guān)的部分問題 :理解別人的代碼通常是非常困難的,而且難度隨著軟件配置成分的缺失而迅速增加需要維護(hù)的軟件往往沒有文檔、或文檔資料嚴(yán)重不足、或軟件的變化未在相應(yīng)的文檔中反映出來軟件維護(hù)的概念維護(hù)問題當(dāng)軟件要求維護(hù)時(shí),不能指望由原來的開發(fā)人員來完成或提供軟件的解釋。由于維護(hù)持續(xù)時(shí)間很長,因此當(dāng)需要解釋軟件時(shí)候,往往開發(fā)人員已經(jīng)不在附近了絕大多數(shù)軟件在設(shè)計(jì)時(shí)沒有考慮到將來的修改問題軟件維護(hù)這項(xiàng)工作毫無吸引力。一方面是因?yàn)檐浖S護(hù),看不到什么“成果”,但工作量很大,更重要的是維護(hù)工作難度大,軟件維護(hù)人

5、員經(jīng)常遭受挫折。 軟件維護(hù)的概念維護(hù)成本 軟件維護(hù)除費(fèi)用外的無形代價(jià)包括 維護(hù)活動(dòng)占用了其他軟件開發(fā)可用的資源,使資源的利用率降低 一些修復(fù)或修改請(qǐng)求得不到及時(shí)安排,使得客戶滿意率下降 維護(hù)的結(jié)果把一些新的潛在的錯(cuò)誤引入軟件,降低了軟件質(zhì)量 將軟件人員抽調(diào)到維護(hù)工作中,使得其它軟件開發(fā)過程受到干擾 軟件維護(hù)的概念維護(hù)成本 維護(hù)的工作可劃分成: 生產(chǎn)性活動(dòng) 如,分析評(píng)價(jià)、修改設(shè)計(jì)、編寫程序代碼等 非生產(chǎn)性活動(dòng) 如,程序代碼功能理解、數(shù)據(jù)結(jié)構(gòu)解釋、接口特點(diǎn)和性能界限分析等 維護(hù)工作量的模型 M:維護(hù)的總工作量 ;P:生產(chǎn)性工作量;K:經(jīng)驗(yàn)常數(shù);c:復(fù)雜程度;d:維護(hù)人員對(duì)軟件的熟悉程度 dcKep

6、M軟件維護(hù)的概念維護(hù)成本 影響維護(hù)工作量的因素主要有以下六種 系統(tǒng)的規(guī)模:系統(tǒng)規(guī)模越大,其功能就越復(fù)雜,軟件維護(hù)的工作量也隨之增大 程序設(shè)計(jì)語言:使用強(qiáng)功能的程序設(shè)計(jì)語言可以控制程序的規(guī)模。語言的功能越強(qiáng),生成程序的模塊化和結(jié)構(gòu)化程度越高,所需的指令數(shù)就越少,程序的可讀性也越好軟件維護(hù)的概念維護(hù)成本 系統(tǒng)年齡:老系統(tǒng)比新系統(tǒng)需要更多的維護(hù)工作量。 數(shù)據(jù)庫技術(shù)的應(yīng)用:使用數(shù)據(jù)庫,可以簡單而有效地管理和存儲(chǔ)用戶程序中的數(shù)據(jù),還可以減少生成用戶報(bào)表應(yīng)用軟件的維護(hù)工作量 先進(jìn)的軟件開發(fā)技術(shù):在軟件開發(fā)過程中,如果采用先進(jìn)的分析設(shè)計(jì)技術(shù)和程序設(shè)計(jì)技術(shù),如面向?qū)ο蠹夹g(shù)、復(fù)用技術(shù)等,可減少大量的維護(hù)工作量軟

7、件維護(hù)的概念維護(hù)成本 其它一些因素:如應(yīng)用的類型、數(shù)學(xué)模型、任務(wù)的難度、IF嵌套深度、索引或下標(biāo)數(shù)等,對(duì)維護(hù)工作量也有影響 軟件維護(hù)的過程維護(hù)組織 維護(hù)組織結(jié)構(gòu)圖 軟件維護(hù)的過程維護(hù)組織 系統(tǒng)監(jiān)督員一般都是對(duì)程序(某一部分)特別熟悉的技術(shù)人員。 在維護(hù)人員對(duì)程序進(jìn)行修改的過程中,由配置管理員嚴(yán)格把關(guān),控制修改的范圍,對(duì)軟件配置進(jìn)行審計(jì) 。 維護(hù)管理員、系統(tǒng)監(jiān)督員、修改控制決策機(jī)構(gòu)等,均代表維護(hù)工作的某個(gè)職責(zé)范圍 。 軟件維護(hù)的過程維護(hù)組織 修改控制決策機(jī)構(gòu)、維護(hù)管理員可以是指定的某個(gè)人,也可以是一個(gè)包括管理人員、高級(jí)技術(shù)人員在內(nèi)的小組。 系統(tǒng)監(jiān)督員可以有其他職責(zé),但應(yīng)具體分管某一個(gè)軟件包。 軟

8、件維護(hù)的過程維護(hù)組織 維護(hù)團(tuán)隊(duì)根據(jù)時(shí)間的不同,可以分為短期團(tuán)隊(duì)和長期團(tuán)隊(duì) 短期團(tuán)隊(duì)一般是當(dāng)需要執(zhí)行相關(guān)具體任務(wù)時(shí),臨時(shí)組織起來解決手頭的問題 長期團(tuán)隊(duì)則更正式,能夠?qū)I(yè)化創(chuàng)建溝通渠道,可以管理軟件系統(tǒng)整個(gè)生存期的成功演化 無論是短期團(tuán)隊(duì)還是長期團(tuán)隊(duì),都要把有經(jīng)驗(yàn)的員工和新員工混合起來。軟件維護(hù)的過程維護(hù)過程 對(duì)于非糾錯(cuò)性維護(hù),則首先判斷維護(hù)類型,對(duì)適應(yīng)性維護(hù),按照評(píng)估后得到的優(yōu)先級(jí)放入隊(duì)列 對(duì)于改善性維護(hù),則還要考慮是否采取行動(dòng),如果接受申請(qǐng),則同樣按照評(píng)估后得到的優(yōu)先級(jí)放入隊(duì)列,如果拒絕申請(qǐng),則通知請(qǐng)求者,并說明原因 對(duì)于工作安排隊(duì)列中的任務(wù),由修改負(fù)責(zé)人依次從隊(duì)列中取出任務(wù),按照軟件工程方

9、法學(xué)規(guī)劃、組織、實(shí)施工程。軟件維護(hù)的過程維護(hù)過程維護(hù)請(qǐng)求維護(hù)請(qǐng)求類型類型類型類型嚴(yán)重性嚴(yán)重性評(píng)估后按優(yōu)先評(píng)估后按優(yōu)先級(jí)在隊(duì)列排隊(duì)級(jí)在隊(duì)列排隊(duì)救火行動(dòng),當(dāng)救火行動(dòng),當(dāng)排在隊(duì)列之首排在隊(duì)列之首評(píng)估后分類評(píng)估后分類評(píng)估后按優(yōu)先評(píng)估后按優(yōu)先級(jí)在隊(duì)列排隊(duì)級(jí)在隊(duì)列排隊(duì)采取的行動(dòng)采取的行動(dòng)通知請(qǐng)求者通知請(qǐng)求者并說明原因并說明原因按優(yōu)先級(jí)在按優(yōu)先級(jí)在隊(duì)列中排隊(duì)隊(duì)列中排隊(duì)從維護(hù)請(qǐng)求隊(duì)列之首取出一任務(wù)從維護(hù)請(qǐng)求隊(duì)列之首取出一任務(wù)按按SESE方法學(xué)規(guī)劃、組織、實(shí)施工程方法學(xué)規(guī)劃、組織、實(shí)施工程隊(duì)列中還有維護(hù)請(qǐng)求嗎?隊(duì)列中還有維護(hù)請(qǐng)求嗎?資源用于開發(fā)新的軟件。資源用于開發(fā)新的軟件。y yn n糾錯(cuò)性維護(hù)糾錯(cuò)性維護(hù)其他

10、其他改善性維護(hù)改善性維護(hù)適應(yīng)性維護(hù)適應(yīng)性維護(hù)拒絕拒絕接受接受并不嚴(yán)重并不嚴(yán)重非常嚴(yán)重非常嚴(yán)重維護(hù)過程圖維護(hù)過程圖軟件維護(hù)的過程維護(hù)過程每種維護(hù)請(qǐng)求都要進(jìn)行同樣的一系列技術(shù)工作:修改軟件需求說明、修改軟件設(shè)計(jì)、設(shè)計(jì)評(píng)審、必要時(shí)重新編碼、單元測試、集成測試( 包括回歸測試)、確認(rèn)測試等 維護(hù)工作最后一步是復(fù)審 依照當(dāng)前狀態(tài),在設(shè)計(jì)、編碼和測試的哪些方面還能用其他方法進(jìn)行?哪些維護(hù)資源可用但未用?軟件維護(hù)的過程維護(hù)過程 這次維護(hù)活動(dòng)中主要(或次要)的障礙有哪些? 在維護(hù)請(qǐng)求中有預(yù)防性維護(hù)嗎?軟件維護(hù)的過程維護(hù)記錄 維護(hù)人員對(duì)程序進(jìn)行修改前要著重做好兩個(gè)記錄 維護(hù)申請(qǐng)報(bào)告 軟件修改報(bào)告 維護(hù)請(qǐng)求表(報(bào)

11、告)即軟件問題報(bào)告,該報(bào)告(表)由要求一項(xiàng)維護(hù)活動(dòng)的用戶填寫。對(duì)改正性維護(hù),用戶需要將錯(cuò)誤出現(xiàn)的現(xiàn)場信息詳細(xì)描述出來,包括輸入數(shù)據(jù)、錯(cuò)誤清單以及其它有關(guān)材料。對(duì)適應(yīng)性維護(hù)或改善性維護(hù),應(yīng)該給出一個(gè)簡短的需求規(guī)格說明書。維護(hù)申請(qǐng)被批準(zhǔn)后,維護(hù)申請(qǐng)報(bào)告就成為外部文檔,作為本次維護(hù)的依據(jù) 軟件維護(hù)的過程維護(hù)記錄 軟件修改報(bào)告指明:為滿足維護(hù)申請(qǐng)報(bào)告提出的需求所需的工作量、本次維護(hù)活動(dòng)的類別、本次維護(hù)請(qǐng)求的優(yōu)先級(jí)、本次修改的背景數(shù)據(jù)。在擬定進(jìn)一步維護(hù)計(jì)劃前,軟件修改報(bào)告要提交給修改決策機(jī)構(gòu),供進(jìn)一步規(guī)劃維護(hù)活動(dòng)使用 保存維護(hù)記錄的第一個(gè)問題就是哪些數(shù)據(jù)值得保存?軟件維護(hù)的過程維護(hù)評(píng)價(jià)如果已經(jīng)開始保存維

12、護(hù)記錄,可以對(duì)維護(hù)工作做一些定量度量,至少可以從如下7方面進(jìn)行評(píng)價(jià):每次程序運(yùn)行平均失敗的次數(shù);用于每一類維護(hù)活動(dòng)的總?cè)藭r(shí)數(shù);平均每個(gè)程序、每種語言、每種維護(hù)類型所必需的程序變動(dòng)數(shù);維護(hù)過程中增加或刪除源語句平均花費(fèi)的人時(shí)數(shù);維護(hù)每種語言平均花費(fèi)的人時(shí)數(shù);一張維護(hù)請(qǐng)求表的平均周轉(zhuǎn)時(shí)間;不同維護(hù)類型所占的比例;軟件可維護(hù)性 可維護(hù)性(maintainability) 指理解、改正、調(diào)整和改進(jìn)軟件的難易程度。對(duì)軟件可維護(hù)性影響的主要因素有:可理解性(understandability)、可測試性(testability)、可修改性、modifiability)和可移植性(portability)

13、軟件可維護(hù)性主要影響因素 可理解性:指理解軟件的結(jié)構(gòu)、接口、功能和內(nèi)部過程的難易程度。 提高軟件可理解性的措施有:采用模塊化的程序結(jié)構(gòu);書寫詳細(xì)正確的文檔;采用結(jié)構(gòu)化程序設(shè)計(jì);書寫源程序的內(nèi)部文檔;使用良好的編程語言;具有良好的程序設(shè)計(jì)風(fēng)格等 軟件可維護(hù)性主要影響因素 可測試性:指測試和診斷軟件(主要指程序)中錯(cuò)誤的難易程度。 提高軟件可測試性的措施有:采用良好的程序結(jié)構(gòu);書寫詳細(xì)正確的文檔;使用測試工具和調(diào)試工具;保存以前的測試過程和測試用例等 軟件可維護(hù)性主要影響因素 可修改性:指修改軟件(主要指程序)的難易程度。 在修改軟件時(shí)經(jīng)常會(huì)發(fā)生這樣的情況:修改了程序中某個(gè)錯(cuò)誤的同時(shí)又產(chǎn)生新的錯(cuò)誤

14、(由程序的修改引起的);或者在程序中增加了某個(gè)功能后,導(dǎo)致原先的某些功能不能正常執(zhí)行。 軟件可維護(hù)性主要影響因素 可移植性:指程序轉(zhuǎn)移到一個(gè)新的計(jì)算環(huán)境的難易程度。 影響軟件可移植性的因素有:信息隱蔽原則;模塊獨(dú)立;模塊化;高內(nèi)聚低耦合;良好的程序結(jié)構(gòu);不用標(biāo)準(zhǔn)文本以外的語句等 一個(gè)可移植的程序應(yīng)具有結(jié)構(gòu)良好、靈活、不依賴于某一具體計(jì)算機(jī)或操作系統(tǒng)的性能 軟件可維護(hù)性主要影響因素通常對(duì)于軟件可移植性的度量考慮如下因素 是否是用高級(jí)的獨(dú)立于機(jī)器的語言來編寫程序?是否采用廣泛使用的標(biāo)準(zhǔn)化的程序設(shè)計(jì)語言來編寫程序? 是否僅使用了這種語言的標(biāo)準(zhǔn)版本和特性?程序中是否使用了標(biāo)準(zhǔn)的普遍使用的庫功能和子程序

15、?程序中是否極少使用或根本不使用操作系統(tǒng)的功能?軟件可維護(hù)性主要影響因素 程序在執(zhí)行之前是否初始化內(nèi)存? 程序在執(zhí)行之前是否測定當(dāng)前的輸入輸出設(shè)備? 程序是否把與機(jī)器相關(guān)的語句分離了出來,集中放在了一些單獨(dú)的程序模塊中,并有說明文件? 程序是否結(jié)構(gòu)化? 并允許在小一些的計(jì)算機(jī)上分段(覆蓋)運(yùn)行? 程序中是否避免了依賴于字母數(shù)字或特殊字符的內(nèi)部位表示?軟件可維護(hù)性軟件可維護(hù)性評(píng)審 在進(jìn)行設(shè)計(jì)評(píng)審時(shí),要從易于維護(hù)和提高設(shè)計(jì)總體質(zhì)量的角度全面評(píng)審數(shù)據(jù)設(shè)計(jì)、總體結(jié)構(gòu)設(shè)計(jì)、過程設(shè)計(jì)和界面設(shè)計(jì)。在進(jìn)行代碼評(píng)審時(shí),要強(qiáng)調(diào)編程風(fēng)格和內(nèi)部文檔。在進(jìn)行測試時(shí)應(yīng)指出軟件正式交付前應(yīng)進(jìn)行的預(yù)防性維護(hù)。在維護(hù)活動(dòng)完成后

16、也要進(jìn)行評(píng)審。 軟件可維護(hù)性提高可維護(hù)性的方法 通常采用的方法有 確定質(zhì)量管理目標(biāo)和優(yōu)先級(jí) 規(guī)范化程序設(shè)計(jì)風(fēng)格 選擇可維護(hù)性高的程序設(shè)計(jì)語言 改進(jìn)程序文檔 保證軟件質(zhì)量審查方法 軟件可維護(hù)性提高可維護(hù)性的方法 確定質(zhì)量管理目標(biāo)和優(yōu)先級(jí) 一個(gè)可維護(hù)的程序應(yīng)該是可理解的,可修改的和可測試的。但是要實(shí)現(xiàn)所有這些目標(biāo),需要付出很大的代價(jià)。因?yàn)橛行┚S護(hù)屬性之間是相互促進(jìn)的,例如,可理解性和可測試性,可理解性和可修改性,另外一些屬性之間則是相互抵觸的。 在程序的開發(fā)階段就應(yīng)保證軟件具有可理解性??尚薷男院涂蓽y試性。在軟件開發(fā)的每一個(gè)階段都應(yīng)盡力考慮軟件的可維護(hù)性。 軟件可維護(hù)性提高可維護(hù)性的方法使用提高軟

17、件質(zhì)量的技術(shù)與工具在進(jìn)行軟件設(shè)計(jì)時(shí),采用如本書前面所述的模塊化程序設(shè)計(jì)、結(jié)構(gòu)化程序設(shè)計(jì)等程序設(shè)計(jì)方法,在軟件開發(fā)過程中,采用結(jié)構(gòu)化小組,建立主程序小組,實(shí)現(xiàn)嚴(yán)格的組織化管理,職能分工,規(guī)范標(biāo)準(zhǔn),在對(duì)程序的質(zhì)量進(jìn)行檢測時(shí),也可以采用分工合作的方法,這些方法會(huì)有效地提高軟件質(zhì)量和檢測效率,進(jìn)而提高軟件的可維護(hù)性。 軟件可維護(hù)性提高可維護(hù)性的方法 選擇可維護(hù)性高的程序設(shè)計(jì)語言 選擇較好的程序設(shè)計(jì)語言對(duì)軟件維護(hù)有很大的影響。低級(jí)語言(如:機(jī)器代碼或匯編語言)程序是一般人很難掌握和理解的,因而很難維護(hù)。高級(jí)語言比低級(jí)語言容易理解,具有更好的可維護(hù)性。在高級(jí)語言中,一些語言可能比另外一些語言更容易理解。例如,cobol語言比fortran語言更容易理解,因?yàn)閏obol的變量接近英語;pl/1比cobol更容易理解,因?yàn)閜l/1有更豐富、更強(qiáng)的語言集等 軟件可維護(hù)性提高可維護(hù)性的方法 改進(jìn)程序文檔 程序文檔對(duì)提高程序的可理解性有著重要的作用。即使是一個(gè)相對(duì)簡單的程序,要想有效地,迅速對(duì)它進(jìn)行維護(hù),也需要編制文檔對(duì)它的目的和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論