




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、軟件工程第1頁(yè),共68頁(yè)。內(nèi)容摘要軟件維護(hù)再工程技術(shù)2第2頁(yè),共68頁(yè)。內(nèi)容摘要軟件維護(hù)再工程技術(shù)3第3頁(yè),共68頁(yè)。軟件維護(hù)的目的1軟件維護(hù)的目的 (1)在運(yùn)行中發(fā)現(xiàn)在測(cè)試階段未能發(fā)現(xiàn)的潛在軟件錯(cuò)誤和設(shè)計(jì)缺陷。 (2)根據(jù)實(shí)際情況改進(jìn)軟件設(shè)計(jì),以增強(qiáng)軟件的功能,提高軟件的性能。 (3)在某環(huán)境下已運(yùn)行的軟件要求能適應(yīng)特定的硬件、軟件、外部設(shè)備和通信設(shè)備等新的工作環(huán)境,或是要求適應(yīng)已變動(dòng)的數(shù)據(jù)或文件。 (4)為使投入運(yùn)行的軟件與其它相關(guān)的程序有良好的接口,以利于協(xié)同工作。 (5)為使運(yùn)行軟件的應(yīng)用范圍得到必要的擴(kuò)充。 4第4頁(yè),共68頁(yè)。軟件維護(hù)的概念 什么是軟件維護(hù)是指軟件系統(tǒng)交付使用以后,
2、為了改正錯(cuò)誤或滿(mǎn)足新的需要而修改軟件的過(guò)程 國(guó)標(biāo)GB/T 11457-95給出如下定義 在一軟件產(chǎn)品交付使用后對(duì)其進(jìn)行修改,以糾正故障;在一軟件產(chǎn)品交付使用后對(duì)其進(jìn)行修改,以糾正故障、改進(jìn)其性能和其它屬性,或使產(chǎn)品適應(yīng)改變了的環(huán)境5第5頁(yè),共68頁(yè)。軟件維護(hù)的概念軟件維護(hù)分類(lèi)兩種錯(cuò)誤認(rèn)識(shí) 軟件維護(hù)是一次新的開(kāi)發(fā)活動(dòng) 軟件維護(hù)就是改錯(cuò) 新開(kāi)發(fā)活動(dòng)強(qiáng)調(diào)要在一定的約束條件下從頭開(kāi)始實(shí)施 軟件維護(hù)強(qiáng)調(diào)必須在現(xiàn)有系統(tǒng)的限定和約束條件下實(shí)施 ;根據(jù)起因不同,軟件維護(hù)可以分為糾錯(cuò)性維護(hù)、適應(yīng)性維護(hù)、改善性維護(hù)和預(yù)防性維護(hù)四類(lèi) 6第6頁(yè),共68頁(yè)。軟件維護(hù)的概念軟件維護(hù)分類(lèi)(1)糾錯(cuò)性維護(hù) 對(duì)在測(cè)試階段未能發(fā)
3、現(xiàn)的,在軟件投入使用后才逐漸暴露出來(lái)的錯(cuò)誤的測(cè)試、診斷、定位、糾錯(cuò)以及驗(yàn)證、修改的回歸測(cè)試過(guò)程,稱(chēng)為糾錯(cuò)性維護(hù)。糾錯(cuò)性維護(hù)占整個(gè)維護(hù)工作的 21% 。(2)適應(yīng)性維護(hù) 適應(yīng)性維護(hù)是為了適應(yīng)計(jì)算機(jī)的飛速發(fā)展,使軟件適應(yīng)外部新的硬件和軟件環(huán)境或者數(shù)據(jù)環(huán)境(數(shù)據(jù)庫(kù)、數(shù)據(jù)格式、數(shù)據(jù)輸入/輸出方式、數(shù)據(jù)存儲(chǔ)介質(zhì))發(fā)生的變化,而進(jìn)行修改軟件的過(guò)程。適應(yīng)性維護(hù)占整個(gè)維護(hù)工作的 25%。 7第7頁(yè),共68頁(yè)。軟件維護(hù)的概念軟件維護(hù)分類(lèi)(3)完善性維護(hù)在軟件的使用過(guò)程中,用戶(hù)往往會(huì)對(duì)軟件提出新的功能與性能要求。為了滿(mǎn)足這些要求,需要修改或再開(kāi)發(fā)軟件,以擴(kuò)充軟件功能、增強(qiáng)軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性
4、。這種情況下進(jìn)行的維護(hù)活動(dòng)叫做完善性維護(hù)。(4)預(yù)防性維護(hù)預(yù)防性維護(hù)是為了提高軟件的可維護(hù)性和可靠性,采用先進(jìn)的軟件工程方法對(duì)需要維護(hù)的軟件或軟件中的某一部分重新進(jìn)行設(shè)計(jì)、編制和測(cè)試,為以后進(jìn)一步維護(hù)和運(yùn)行打好基礎(chǔ)。也就是軟件開(kāi)發(fā)組織選擇在最近的將來(lái)可能變更的程序,做好變更它們的準(zhǔn)備。 8第8頁(yè),共68頁(yè)。軟件維護(hù)的概念軟件維護(hù)分類(lèi)在實(shí)踐中,軟件維護(hù)各種活動(dòng)常常交織在一起,盡管這些維護(hù)在性質(zhì)上有些重疊,但是還是有充分的理由區(qū)分這些維護(hù)活動(dòng)只有正確區(qū)分維護(hù)活動(dòng)的類(lèi)型才能夠更有效地確定維護(hù)需求的優(yōu)先級(jí) 9第9頁(yè),共68頁(yè)。軟件維護(hù)的概念維護(hù)問(wèn)題和軟件維護(hù)有關(guān)的部分問(wèn)題 :理解別人的代碼通常是非常困
5、難的,而且難度隨著軟件配置成分的缺失而迅速增加需要維護(hù)的軟件往往沒(méi)有文檔、或文檔資料嚴(yán)重不足、或軟件的變化未在相應(yīng)的文檔中反映出來(lái)10第10頁(yè),共68頁(yè)。軟件維護(hù)的概念維護(hù)問(wèn)題當(dāng)軟件要求維護(hù)時(shí),不能指望由原來(lái)的開(kāi)發(fā)人員來(lái)完成或提供軟件的解釋。由于維護(hù)持續(xù)時(shí)間很長(zhǎng),因此當(dāng)需要解釋軟件時(shí)候,往往開(kāi)發(fā)人員已經(jīng)不在附近了絕大多數(shù)軟件在設(shè)計(jì)時(shí)沒(méi)有考慮到將來(lái)的修改問(wèn)題軟件維護(hù)這項(xiàng)工作毫無(wú)吸引力。一方面是因?yàn)檐浖S護(hù),看不到什么“成果”,但工作量很大,更重要的是維護(hù)工作難度大,軟件維護(hù)人員經(jīng)常遭受挫折。 11第11頁(yè),共68頁(yè)。軟件維護(hù)的概念維護(hù)成本軟件維護(hù)除費(fèi)用外的無(wú)形代價(jià)包括維護(hù)活動(dòng)占用了其他軟件開(kāi)發(fā)可
6、用的資源,使資源的利用率降低 一些修復(fù)或修改請(qǐng)求得不到及時(shí)安排,使得客戶(hù)滿(mǎn)意率下降 維護(hù)的結(jié)果把一些新的潛在的錯(cuò)誤引入軟件,降低了軟件質(zhì)量 將軟件人員抽調(diào)到維護(hù)工作中,使得其它軟件開(kāi)發(fā)過(guò)程受到干擾 12第12頁(yè),共68頁(yè)。軟件維護(hù)的概念維護(hù)成本維護(hù)的工作可劃分成:生產(chǎn)性活動(dòng) 如,分析評(píng)價(jià)、修改設(shè)計(jì)、編寫(xiě)程序代碼等 非生產(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ì)軟件的熟悉程度 13第13頁(yè),共68頁(yè)。軟件維護(hù)的概念維護(hù)成本影響維護(hù)工作量的因素主要有以下六種系統(tǒng)的規(guī)模:系
7、統(tǒng)規(guī)模越大,其功能就越復(fù)雜,軟件維護(hù)的工作量也隨之增大程序設(shè)計(jì)語(yǔ)言:使用強(qiáng)功能的程序設(shè)計(jì)語(yǔ)言可以控制程序的規(guī)模。語(yǔ)言的功能越強(qiáng),生成程序的模塊化和結(jié)構(gòu)化程度越高,所需的指令數(shù)就越少,程序的可讀性也越好14第14頁(yè),共68頁(yè)。軟件維護(hù)的概念維護(hù)成本系統(tǒng)年齡:老系統(tǒng)比新系統(tǒng)需要更多的維護(hù)工作量。數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用:使用數(shù)據(jù)庫(kù),可以簡(jiǎn)單而有效地管理和存儲(chǔ)用戶(hù)程序中的數(shù)據(jù),還可以減少生成用戶(hù)報(bào)表應(yīng)用軟件的維護(hù)工作量 先進(jìn)的軟件開(kāi)發(fā)技術(shù):在軟件開(kāi)發(fā)過(guò)程中,如果采用先進(jìn)的分析設(shè)計(jì)技術(shù)和程序設(shè)計(jì)技術(shù),如面向?qū)ο蠹夹g(shù)、復(fù)用技術(shù)等,可減少大量的維護(hù)工作量15第15頁(yè),共68頁(yè)。軟件維護(hù)的概念維護(hù)成本其它一些因素:
8、如應(yīng)用的類(lèi)型、數(shù)學(xué)模型、任務(wù)的難度、IF嵌套深度、索引或下標(biāo)數(shù)等,對(duì)維護(hù)工作量也有影響 16第16頁(yè),共68頁(yè)。軟件維護(hù)的過(guò)程維護(hù)組織維護(hù)組織結(jié)構(gòu)圖 17第17頁(yè),共68頁(yè)。軟件維護(hù)的過(guò)程維護(hù)組織系統(tǒng)監(jiān)督員一般都是對(duì)程序(某一部分)特別熟悉的技術(shù)人員。在維護(hù)人員對(duì)程序進(jìn)行修改的過(guò)程中,由配置管理員嚴(yán)格把關(guān),控制修改的范圍,對(duì)軟件配置進(jìn)行審計(jì) 。維護(hù)管理員、系統(tǒng)監(jiān)督員、修改控制決策機(jī)構(gòu)等,均代表維護(hù)工作的某個(gè)職責(zé)范圍 。 18第18頁(yè),共68頁(yè)。軟件維護(hù)的過(guò)程維護(hù)組織修改控制決策機(jī)構(gòu)、維護(hù)管理員可以是指定的某個(gè)人,也可以是一個(gè)包括管理人員、高級(jí)技術(shù)人員在內(nèi)的小組。 系統(tǒng)監(jiān)督員可以有其他職責(zé),但應(yīng)
9、具體分管某一個(gè)軟件包。 19第19頁(yè),共68頁(yè)。軟件維護(hù)的過(guò)程維護(hù)組織維護(hù)團(tuán)隊(duì)根據(jù)時(shí)間的不同,可以分為短期團(tuán)隊(duì)和長(zhǎng)期團(tuán)隊(duì) 短期團(tuán)隊(duì)一般是當(dāng)需要執(zhí)行相關(guān)具體任務(wù)時(shí),臨時(shí)組織起來(lái)解決手頭的問(wèn)題 長(zhǎng)期團(tuán)隊(duì)則更正式,能夠?qū)I(yè)化創(chuàng)建溝通渠道,可以管理軟件系統(tǒng)整個(gè)生存期的成功演化 無(wú)論是短期團(tuán)隊(duì)還是長(zhǎng)期團(tuán)隊(duì),都要把有經(jīng)驗(yàn)的員工和新員工混合起來(lái)。20第20頁(yè),共68頁(yè)。軟件維護(hù)的過(guò)程維護(hù)過(guò)程對(duì)于非糾錯(cuò)性維護(hù),則首先判斷維護(hù)類(lèi)型,對(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)求者,并說(shuō)明原因?qū)τ诠?/p>
10、作安排隊(duì)列中的任務(wù),由修改負(fù)責(zé)人依次從隊(duì)列中取出任務(wù),按照軟件工程方法學(xué)規(guī)劃、組織、實(shí)施工程。21第21頁(yè),共68頁(yè)。軟件維護(hù)的過(guò)程維護(hù)過(guò)程維護(hù)請(qǐng)求類(lèi)型類(lèi)型嚴(yán)重性評(píng)估后按優(yōu)先級(jí)在隊(duì)列排隊(duì)救火行動(dòng),當(dāng)排在隊(duì)列之首評(píng)估后分類(lèi)評(píng)估后按優(yōu)先級(jí)在隊(duì)列排隊(duì)采取的行動(dòng)通知請(qǐng)求者并說(shuō)明原因按優(yōu)先級(jí)在隊(duì)列中排隊(duì)從維護(hù)請(qǐng)求隊(duì)列之首取出一任務(wù)按SE方法學(xué)規(guī)劃、組織、實(shí)施工程隊(duì)列中還有維護(hù)請(qǐng)求嗎?資源用于開(kāi)發(fā)新的軟件。yn糾錯(cuò)性維護(hù)其他改善性維護(hù)適應(yīng)性維護(hù)拒絕接受并不嚴(yán)重非常嚴(yán)重維護(hù)過(guò)程圖22第22頁(yè),共68頁(yè)。軟件維護(hù)的過(guò)程維護(hù)過(guò)程每種維護(hù)請(qǐng)求都要進(jìn)行同樣的一系列技術(shù)工作:修改軟件需求說(shuō)明、修改軟件設(shè)計(jì)、設(shè)計(jì)評(píng)審、
11、必要時(shí)重新編碼、單元測(cè)試、集成測(cè)試( 包括回歸測(cè)試)、確認(rèn)測(cè)試等 維護(hù)工作最后一步是復(fù)審 依照當(dāng)前狀態(tài),在設(shè)計(jì)、編碼和測(cè)試的哪些方面還能用其他方法進(jìn)行?哪些維護(hù)資源可用但未用?23第23頁(yè),共68頁(yè)。軟件維護(hù)的過(guò)程維護(hù)過(guò)程這次維護(hù)活動(dòng)中主要(或次要)的障礙有哪些?在維護(hù)請(qǐng)求中有預(yù)防性維護(hù)嗎?24第24頁(yè),共68頁(yè)。軟件維護(hù)的過(guò)程維護(hù)記錄維護(hù)人員對(duì)程序進(jìn)行修改前要著重做好兩個(gè)記錄維護(hù)申請(qǐng)報(bào)告軟件修改報(bào)告 維護(hù)請(qǐng)求表(報(bào)告)即軟件問(wèn)題報(bào)告,該報(bào)告(表)由要求一項(xiàng)維護(hù)活動(dòng)的用戶(hù)填寫(xiě)。對(duì)改正性維護(hù),用戶(hù)需要將錯(cuò)誤出現(xiàn)的現(xiàn)場(chǎng)信息詳細(xì)描述出來(lái),包括輸入數(shù)據(jù)、錯(cuò)誤清單以及其它有關(guān)材料。對(duì)適應(yīng)性維護(hù)或改善性維
12、護(hù),應(yīng)該給出一個(gè)簡(jiǎn)短的需求規(guī)格說(shuō)明書(shū)。維護(hù)申請(qǐng)被批準(zhǔn)后,維護(hù)申請(qǐng)報(bào)告就成為外部文檔,作為本次維護(hù)的依據(jù) 25第25頁(yè),共68頁(yè)。軟件維護(hù)的過(guò)程維護(hù)記錄軟件修改報(bào)告指明:為滿(mǎn)足維護(hù)申請(qǐng)報(bào)告提出的需求所需的工作量、本次維護(hù)活動(dòng)的類(lèi)別、本次維護(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è)問(wèn)題就是哪些數(shù)據(jù)值得保存?26第26頁(yè),共68頁(yè)。軟件維護(hù)的過(guò)程維護(hù)評(píng)價(jià)如果已經(jīng)開(kāi)始保存維護(hù)記錄,可以對(duì)維護(hù)工作做一些定量度量,至少可以從如下7方面進(jìn)行評(píng)價(jià):每次程序運(yùn)行平均失敗的次數(shù);用于每一類(lèi)維護(hù)活動(dòng)的總?cè)藭r(shí)數(shù);平均每個(gè)
13、程序、每種語(yǔ)言、每種維護(hù)類(lèi)型所必需的程序變動(dòng)數(shù);維護(hù)過(guò)程中增加或刪除源語(yǔ)句平均花費(fèi)的人時(shí)數(shù);維護(hù)每種語(yǔ)言平均花費(fèi)的人時(shí)數(shù);一張維護(hù)請(qǐng)求表的平均周轉(zhuǎn)時(shí)間;不同維護(hù)類(lèi)型所占的比例;27第27頁(yè),共68頁(yè)。軟件可維護(hù)性 可維護(hù)性(maintainability)指理解、改正、調(diào)整和改進(jìn)軟件的難易程度。對(duì)軟件可維護(hù)性影響的主要因素有:可理解性(understandability)、可測(cè)試性(testability)、可修改性、modifiability)和可移植性(portability) 28第28頁(yè),共68頁(yè)。軟件可維護(hù)性主要影響因素可理解性:指理解軟件的結(jié)構(gòu)、接口、功能和內(nèi)部過(guò)程的難易程度。 提
14、高軟件可理解性的措施有:采用模塊化的程序結(jié)構(gòu);書(shū)寫(xiě)詳細(xì)正確的文檔;采用結(jié)構(gòu)化程序設(shè)計(jì);書(shū)寫(xiě)源程序的內(nèi)部文檔;使用良好的編程語(yǔ)言;具有良好的程序設(shè)計(jì)風(fēng)格等 29第29頁(yè),共68頁(yè)。軟件可維護(hù)性主要影響因素可測(cè)試性:指測(cè)試和診斷軟件(主要指程序)中錯(cuò)誤的難易程度。提高軟件可測(cè)試性的措施有:采用良好的程序結(jié)構(gòu);書(shū)寫(xiě)詳細(xì)正確的文檔;使用測(cè)試工具和調(diào)試工具;保存以前的測(cè)試過(guò)程和測(cè)試用例等 30第30頁(yè),共68頁(yè)。軟件可維護(hù)性主要影響因素可修改性:指修改軟件(主要指程序)的難易程度。在修改軟件時(shí)經(jīng)常會(huì)發(fā)生這樣的情況:修改了程序中某個(gè)錯(cuò)誤的同時(shí)又產(chǎn)生新的錯(cuò)誤(由程序的修改引起的);或者在程序中增加了某個(gè)功能
15、后,導(dǎo)致原先的某些功能不能正常執(zhí)行。 31第31頁(yè),共68頁(yè)。軟件可維護(hù)性主要影響因素可移植性:指程序轉(zhuǎn)移到一個(gè)新的計(jì)算環(huán)境的難易程度。影響軟件可移植性的因素有:信息隱蔽原則;模塊獨(dú)立;模塊化;高內(nèi)聚低耦合;良好的程序結(jié)構(gòu);不用標(biāo)準(zhǔn)文本以外的語(yǔ)句等一個(gè)可移植的程序應(yīng)具有結(jié)構(gòu)良好、靈活、不依賴(lài)于某一具體計(jì)算機(jī)或操作系統(tǒng)的性能 32第32頁(yè),共68頁(yè)。軟件可維護(hù)性主要影響因素通常對(duì)于軟件可移植性的度量考慮如下因素 是否是用高級(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ù)功能和子程序?程序中
16、是否極少使用或根本不使用操作系統(tǒng)的功能?33第33頁(yè),共68頁(yè)。軟件可維護(hù)性主要影響因素程序在執(zhí)行之前是否初始化內(nèi)存?程序在執(zhí)行之前是否測(cè)定當(dāng)前的輸入輸出設(shè)備?程序是否把與機(jī)器相關(guān)的語(yǔ)句分離了出來(lái),集中放在了一些單獨(dú)的程序模塊中,并有說(shuō)明文件?程序是否結(jié)構(gòu)化? 并允許在小一些的計(jì)算機(jī)上分段(覆蓋)運(yùn)行?程序中是否避免了依賴(lài)于字母數(shù)字或特殊字符的內(nèi)部位表示?34第34頁(yè),共68頁(yè)。軟件可維護(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ì)、過(guò)程設(shè)計(jì)和界面設(shè)計(jì)。在進(jìn)行代碼評(píng)審時(shí),要強(qiáng)調(diào)編程風(fēng)格和內(nèi)部文檔。在進(jìn)行測(cè)試時(shí)應(yīng)指出軟件正式交付前應(yīng)進(jìn)行的
17、預(yù)防性維護(hù)。在維護(hù)活動(dòng)完成后也要進(jìn)行評(píng)審。 35第35頁(yè),共68頁(yè)。軟件可維護(hù)性提高可維護(hù)性的方法通常采用的方法有確定質(zhì)量管理目標(biāo)和優(yōu)先級(jí)規(guī)范化程序設(shè)計(jì)風(fēng)格選擇可維護(hù)性高的程序設(shè)計(jì)語(yǔ)言改進(jìn)程序文檔保證軟件質(zhì)量審查方法 36第36頁(yè),共68頁(yè)。軟件可維護(hù)性提高可維護(hù)性的方法確定質(zhì)量管理目標(biāo)和優(yōu)先級(jí) 一個(gè)可維護(hù)的程序應(yīng)該是可理解的,可修改的和可測(cè)試的。但是要實(shí)現(xiàn)所有這些目標(biāo),需要付出很大的代價(jià)。因?yàn)橛行┚S護(hù)屬性之間是相互促進(jìn)的,例如,可理解性和可測(cè)試性,可理解性和可修改性,另外一些屬性之間則是相互抵觸的。 在程序的開(kāi)發(fā)階段就應(yīng)保證軟件具有可理解性??尚薷男院涂蓽y(cè)試性。在軟件開(kāi)發(fā)的每一個(gè)階段都應(yīng)盡力
18、考慮軟件的可維護(hù)性。 37第37頁(yè),共68頁(yè)。軟件可維護(hù)性提高可維護(hù)性的方法使用提高軟件質(zhì)量的技術(shù)與工具在進(jìn)行軟件設(shè)計(jì)時(shí),采用如本書(shū)前面所述的模塊化程序設(shè)計(jì)、結(jié)構(gòu)化程序設(shè)計(jì)等程序設(shè)計(jì)方法,在軟件開(kāi)發(fā)過(guò)程中,采用結(jié)構(gòu)化小組,建立主程序小組,實(shí)現(xiàn)嚴(yán)格的組織化管理,職能分工,規(guī)范標(biāo)準(zhǔn),在對(duì)程序的質(zhì)量進(jìn)行檢測(cè)時(shí),也可以采用分工合作的方法,這些方法會(huì)有效地提高軟件質(zhì)量和檢測(cè)效率,進(jìn)而提高軟件的可維護(hù)性。 38第38頁(yè),共68頁(yè)。軟件可維護(hù)性提高可維護(hù)性的方法選擇可維護(hù)性高的程序設(shè)計(jì)語(yǔ)言 選擇較好的程序設(shè)計(jì)語(yǔ)言對(duì)軟件維護(hù)有很大的影響。低級(jí)語(yǔ)言(如:機(jī)器代碼或匯編語(yǔ)言)程序是一般人很難掌握和理解的,因而很難
19、維護(hù)。高級(jí)語(yǔ)言比低級(jí)語(yǔ)言容易理解,具有更好的可維護(hù)性。在高級(jí)語(yǔ)言中,一些語(yǔ)言可能比另外一些語(yǔ)言更容易理解。例如,cobol語(yǔ)言比f(wàn)ortran語(yǔ)言更容易理解,因?yàn)閏obol的變量接近英語(yǔ);pl/1比cobol更容易理解,因?yàn)閜l/1有更豐富、更強(qiáng)的語(yǔ)言集等 39第39頁(yè),共68頁(yè)。軟件可維護(hù)性提高可維護(hù)性的方法改進(jìn)程序文檔 程序文檔對(duì)提高程序的可理解性有著重要的作用。即使是一個(gè)相對(duì)簡(jiǎn)單的程序,要想有效地,迅速對(duì)它進(jìn)行維護(hù),也需要編制文檔對(duì)它的目的和任務(wù)進(jìn)行解釋。而對(duì)于程序的維護(hù)人員來(lái)說(shuō),要想對(duì)程序編制人員的意圖進(jìn)行重新修改,并對(duì)今后可能出現(xiàn)的變化估計(jì),缺少文檔的幫助也將很難實(shí)現(xiàn)。另一方面,對(duì)于
20、程序文檔一定要能及時(shí)反映程序的變化,否則將對(duì)后續(xù)維護(hù)人員產(chǎn)生誤導(dǎo)。40第40頁(yè),共68頁(yè)。軟件可維護(hù)性提高可維護(hù)性的方法進(jìn)行質(zhì)量保證審查 除了保證軟件得到適當(dāng)?shù)馁|(zhì)量外,審查還可以用來(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)的有效生命期。為了保證軟件的可維護(hù)性,有四種類(lèi)型的軟件審查:在檢查點(diǎn)進(jìn)行復(fù)審、驗(yàn)收檢查、周期性地維護(hù)審查、對(duì)軟件包進(jìn)行檢查。 41第41頁(yè),共68頁(yè)。內(nèi)容摘要軟件維護(hù)再工程技術(shù)42第42頁(yè),共68頁(yè)。再工程的概念 逆向工程(reverse engineering):指在軟件生存周期中,將軟件的某種
21、形式描述轉(zhuǎn)換成更抽象形式的活動(dòng)重構(gòu)(restructuring):指在同一抽象級(jí)別上轉(zhuǎn)換系統(tǒng)的描述形式。如把C+ 程序轉(zhuǎn)換成Java程序設(shè)計(jì)恢復(fù)(design recovery):指借助工具從已有程序中抽象出有關(guān)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、總體結(jié)構(gòu)設(shè)計(jì)和過(guò)程設(shè)計(jì)的信息。 43第43頁(yè),共68頁(yè)。再工程的概念再工程(reengineering):指在逆向工程所獲信息的基礎(chǔ)上修改或重構(gòu)已有的系統(tǒng),產(chǎn)生系統(tǒng)的一個(gè)新版本 再工程的主要目的:為遺留系統(tǒng)轉(zhuǎn)化為可演化系統(tǒng)提供一條現(xiàn)實(shí)可行的途徑 再工程是一個(gè)工程過(guò)程,它將逆向工程、重構(gòu)和正向工程組合起來(lái),將現(xiàn)存系統(tǒng)重新構(gòu)造為新的形式。當(dāng)實(shí)施軟件的再工程時(shí),軟件理解是再工程
22、的基礎(chǔ)和前提。 44第44頁(yè),共68頁(yè)。再工程的概念為什么要進(jìn)行再工程 維護(hù)一行源代碼的代價(jià)可能是最初開(kāi)發(fā)該行源代碼代價(jià)的14-20倍;同時(shí)重新設(shè)計(jì)軟件體系結(jié)構(gòu)時(shí)使用了現(xiàn)代設(shè)計(jì)概念,它對(duì)將來(lái)的維護(hù)會(huì)有很大的幫助;現(xiàn)有的程序版本可以作為軟件原型使用,開(kāi)發(fā)生產(chǎn)率可以大大高于平均水平;用戶(hù)具有較多使用該軟件的經(jīng)驗(yàn),因此,能夠很容易地搞清新的變更需求和變更的范圍;另外,利用逆向工程和再工程的工具,可以使一部分工作自動(dòng)化;在完成預(yù)防性維護(hù)的過(guò)程中還可以建立起完整的軟件配置。 45第45頁(yè),共68頁(yè)。再工程的概念通常再工程包含:業(yè)務(wù)過(guò)程再工程、軟件再工程 業(yè)務(wù)過(guò)程再工程(BPRBusiness Proce
23、ss Re-engineering,也稱(chēng)業(yè)務(wù)過(guò)程重組)定義業(yè)務(wù)目標(biāo)、標(biāo)示并評(píng)估現(xiàn)有的業(yè)務(wù)過(guò)程以及修訂業(yè)務(wù)過(guò)程以更好滿(mǎn)足業(yè)務(wù)目標(biāo),這一部分通常由咨詢(xún)公司的業(yè)務(wù)專(zhuān)家完成軟件再工程包含庫(kù)存目錄分析、文檔重構(gòu)、逆向工程、程序和數(shù)據(jù)重構(gòu)以及正向工程。這一部分通常由軟件工程師完成 46第46頁(yè),共68頁(yè)。業(yè)務(wù)過(guò)程再工程 Michael Hammer的是業(yè)務(wù)過(guò)程和計(jì)算管理革命的奠基性文章,Hammer在文章中大力呼吁使用業(yè)務(wù)過(guò)程再工程技術(shù)。不過(guò),到21世紀(jì)初,對(duì)于業(yè)務(wù)過(guò)程再工程的宣傳已經(jīng)不太常見(jiàn),但是這種過(guò)程已經(jīng)在很多公司中得到使用。 業(yè)務(wù)過(guò)程是一組“邏輯相關(guān)的任務(wù),它們被執(zhí)行以達(dá)到符合預(yù)定義的業(yè)務(wù)結(jié)果”。
24、 47第47頁(yè),共68頁(yè)。業(yè)務(wù)過(guò)程再工程每個(gè)系統(tǒng)都是由不同的子系統(tǒng)構(gòu)成,而子系統(tǒng)還可以再細(xì)分為更細(xì)的子系統(tǒng),從而整個(gè)業(yè)務(wù)呈現(xiàn)一種層次結(jié)構(gòu) 業(yè)務(wù) 業(yè)務(wù)系統(tǒng) 業(yè)務(wù)過(guò)程 業(yè)務(wù)子過(guò)程業(yè)務(wù)層次 48第48頁(yè),共68頁(yè)。業(yè)務(wù)過(guò)程再工程在理想情況下,BPR應(yīng)該自頂向下地進(jìn)行,從標(biāo)示主要的業(yè)務(wù)目標(biāo)或子目標(biāo)開(kāi)始,而以生成業(yè)務(wù)(子)過(guò)程中每個(gè)任務(wù)的詳細(xì)的規(guī)約結(jié)束 對(duì)一個(gè)業(yè)務(wù)過(guò)程進(jìn)行再工程需要服從一定的原則。Hammer在1990年提出一組原則,用于指導(dǎo)BPR活動(dòng) 圍繞結(jié)果而不是任務(wù)進(jìn)行組織;49第49頁(yè),共68頁(yè)。業(yè)務(wù)過(guò)程再工程讓那些使用過(guò)程結(jié)果的人來(lái)執(zhí)行流程;將信息處理工作合并到生產(chǎn)原始信息的現(xiàn)實(shí)工作中;將地理
25、分散的資源視為好像它們是集中的;連接并行的活動(dòng)以代替集成它們的結(jié)果;在工作完成的地方設(shè)置決策點(diǎn),并將控制加入過(guò)程中;在其源頭一次性獲取數(shù)據(jù)。50第50頁(yè),共68頁(yè)。業(yè)務(wù)過(guò)程再工程業(yè)務(wù)過(guò)程再工程是迭代的。因此業(yè)務(wù)過(guò)程再工程沒(méi)有開(kāi)始和結(jié)束,只有不斷的演化。整個(gè)業(yè)務(wù)過(guò)程再工程模型可用下圖表示業(yè)務(wù)定義過(guò)程標(biāo)識(shí)過(guò)程評(píng)估過(guò)程規(guī)約和設(shè)計(jì)原型實(shí)現(xiàn)求精和實(shí)例化51第51頁(yè),共68頁(yè)。業(yè)務(wù)過(guò)程再工程軟件規(guī)模的擴(kuò)大導(dǎo)致出現(xiàn)軟件的管理、質(zhì)量等一些嚴(yán)重的問(wèn)題,人們開(kāi)始尋找軟件業(yè)中的銀彈。BPR的出現(xiàn),使人們誤以為BPR就是傳說(shuō)中的銀彈。然而經(jīng)過(guò)幾年的夸大宣傳后,BRP陷于嚴(yán)重的批評(píng)中,又被人們認(rèn)為一文不值。因此有必要樹(shù)
26、立一種對(duì)BRP認(rèn)識(shí)的正確觀點(diǎn)。BRP不是銀彈,當(dāng)然BRP確實(shí)可以提高軟件的質(zhì)量。52第52頁(yè),共68頁(yè)。軟件再工程過(guò)程 在業(yè)務(wù)過(guò)程被分析清楚后,可以對(duì)軟件實(shí)施再工程,整個(gè)軟件再工程過(guò)程模型如下圖 53第53頁(yè),共68頁(yè)。軟件再工程過(guò)程庫(kù)存目錄分析包含關(guān)于每個(gè)應(yīng)用系統(tǒng)的基本信息(例如,應(yīng)用系統(tǒng)的名字,最初構(gòu)建它的日期,已做過(guò)的實(shí)質(zhì)性修改次數(shù),過(guò)去18個(gè)月報(bào)告的錯(cuò)誤,用戶(hù)數(shù)量,安裝它的機(jī)器數(shù)量,它的復(fù)雜程度,文檔質(zhì)量,整體可維護(hù)性等級(jí),預(yù)期壽命,在未來(lái)36個(gè)月內(nèi)的預(yù)期修改次數(shù),業(yè)務(wù)重要程度等)。下述3類(lèi)程序有可能成為預(yù)防性維護(hù)的對(duì)象:預(yù)定將使用多年的程序、當(dāng)前正在成功地使用著的程序和在最近的將來(lái)可
27、能要做重大修改或增強(qiáng)的程序。 54第54頁(yè),共68頁(yè)。軟件再工程過(guò)程文檔重構(gòu)建立文檔非常耗費(fèi)時(shí)間,不可能為數(shù)百個(gè)程序都重新建立文檔。如果一個(gè)程序是相對(duì)穩(wěn)定的,而且可能不會(huì)再經(jīng)歷什么變化,那么,讓它保持現(xiàn)狀。為了便于今后的維護(hù),必須更新文檔,但只針對(duì)系統(tǒng)中當(dāng)前正在修改的那些部分建立完整文檔。如果某應(yīng)用系統(tǒng)是完成業(yè)務(wù)工作的關(guān)鍵,而且必須重構(gòu)全部文檔,則仍然應(yīng)該設(shè)法把文檔工作減少到必需的最小量。 55第55頁(yè),共68頁(yè)。軟件再工程過(guò)程逆向工程軟件的逆向工程是分析程序以便在比源代碼更高的抽象層次上創(chuàng)建出程序的某種表示的過(guò)程,逆向工程工具從現(xiàn)存的程序代碼中抽取有關(guān)數(shù)據(jù)、體系結(jié)構(gòu)和處理過(guò)程的設(shè)計(jì)信息。 5
28、6第56頁(yè),共68頁(yè)。軟件再工程過(guò)程代碼重構(gòu)某些老程序具有比較完整、合理的體系結(jié)構(gòu),但是,個(gè)體模塊的編碼方式卻是難于理解、測(cè)試和維護(hù)的。在這種情況下,可以重構(gòu)可疑模塊的代碼。 為了完成代碼重構(gòu)活動(dòng),首先用重構(gòu)工具分析源代碼,標(biāo)注出和結(jié)構(gòu)化程序設(shè)計(jì)概念相違背的部分。然后重構(gòu)有問(wèn)題的代碼(此項(xiàng)工作可自動(dòng)進(jìn)行)。最后,復(fù)審和測(cè)試生成的重構(gòu)代碼(以保證沒(méi)有引入異常)并更新代碼文檔。57第57頁(yè),共68頁(yè)。軟件再工程過(guò)程數(shù)據(jù)重構(gòu)數(shù)據(jù)重構(gòu)發(fā)生在相當(dāng)?shù)偷某橄髮哟紊?,它是一種全范圍的再工程活動(dòng)。在大多數(shù)情況下,數(shù)據(jù)重構(gòu)始于逆向工程活動(dòng),分解當(dāng)前使用的數(shù)據(jù)體系結(jié)構(gòu),必要時(shí)定義數(shù)據(jù)模型,標(biāo)識(shí)數(shù)據(jù)對(duì)象和屬性,并從軟
29、件質(zhì)量的角度復(fù)審現(xiàn)存的數(shù)據(jù)結(jié)構(gòu)。 58第58頁(yè),共68頁(yè)。軟件再工程過(guò)程正向工程正向工程過(guò)程應(yīng)用軟件工程的原理、概念、技術(shù)和方法來(lái)重新開(kāi)發(fā)某個(gè)現(xiàn)有的應(yīng)用系統(tǒng)。在大多數(shù)情況下,被再工程的軟件不僅重新實(shí)現(xiàn)現(xiàn)有系統(tǒng)的功能,而且加入了新功能和提高了整體性能。59第59頁(yè),共68頁(yè)。逆向工程 逆向工程是把軟件源程序還原為軟件文檔或軟件設(shè)計(jì)的過(guò)程。通過(guò)逆向工程,可以從更高的抽象度來(lái)觀察軟件。抽象度的多少可由抽象的層次,文檔的完整性,工具等因素決定。逆向工程來(lái)源于硬件世界。硬件廠商總想弄到競(jìng)爭(zhēng)對(duì)手產(chǎn)品的設(shè)計(jì)和制造“奧秘”。但是又得不到現(xiàn)成的檔案,只好拆卸對(duì)手的產(chǎn)品并進(jìn)行分析,企圖從中獲取有價(jià)值的東西。軟件的
30、逆向工程在道理上與硬件相似。但在很多時(shí)候,軟件的逆向工程并不是針對(duì)競(jìng)爭(zhēng)對(duì)手的,而是針對(duì)自己公司多年前的產(chǎn)品。期望從老產(chǎn)品中提取系統(tǒng)設(shè)計(jì)、需求說(shuō)明等有價(jià)值的信息。 60第60頁(yè),共68頁(yè)。逆向工程逆向工程導(dǎo)出的信息可分為四個(gè)抽象層次實(shí)現(xiàn)級(jí):包括程序的抽象語(yǔ)法樹(shù)、符號(hào)表等信息;結(jié)構(gòu)級(jí):包括反映程序分量之間相互依賴(lài)關(guān)系的信息,如調(diào)用圖、結(jié)構(gòu)圖等;功能級(jí):包括反映程序段功能及程序段之間關(guān)系的信息;領(lǐng)域級(jí):包括反映程序分量或程序諸實(shí)體與應(yīng)用領(lǐng)域概念之間對(duì)應(yīng)關(guān)系的信息。對(duì)于一項(xiàng)具體的維護(hù)任務(wù),一般不必導(dǎo)出所有抽象級(jí)別上的信息。如代碼重構(gòu)任務(wù),只需獲得實(shí)現(xiàn)級(jí)信息即可。61第61頁(yè),共68頁(yè)。逆向工程根據(jù)源程序的類(lèi)別不同,逆向工程還可以分為:對(duì)用戶(hù)界面的逆向工程、對(duì)數(shù)據(jù)的逆向工程和對(duì)理解的逆向工程。現(xiàn)代的軟件一般都擁有華麗的界面,當(dāng)準(zhǔn)備對(duì)舊的軟件進(jìn)行用戶(hù)界面的逆向工程時(shí),必須先理解舊軟件的用戶(hù)界面,并且刻畫(huà)出界面的結(jié)構(gòu)和行為。62第62頁(yè),共68頁(yè)。逆向工程對(duì)數(shù)據(jù)的逆向工程:由于程序中存在許多不同種類(lèi)的數(shù)據(jù),例如內(nèi)部的數(shù)據(jù)結(jié)構(gòu),以及底層的數(shù)據(jù)庫(kù)和外部的文件。其中對(duì)內(nèi)部的數(shù)據(jù)結(jié)構(gòu)的逆向工程可以通過(guò)檢查程序代碼以及變量來(lái)完成;而對(duì)數(shù)據(jù)庫(kù)結(jié)構(gòu)的重構(gòu)可通過(guò)建立一個(gè)初始的對(duì)象模型,確定侯選鍵,精化實(shí)驗(yàn)性的類(lèi),定義一般化,以及發(fā)現(xiàn)關(guān)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院收費(fèi)合同范本
- 農(nóng)體產(chǎn)品加工合同范本
- 醫(yī)院制氧機(jī)采購(gòu)合同范本
- 絲接頭采購(gòu)合同范本
- 公司買(mǎi)賣(mài)合同范本
- 買(mǎi)賣(mài)小商鋪合同范本
- 企業(yè)房產(chǎn)轉(zhuǎn)讓合同范本
- 單位考察合同范本
- 信息化合同范本
- 公司不執(zhí)行合同范本
- 地理-廣東省上進(jìn)聯(lián)考領(lǐng)航高中聯(lián)盟2025屆高三下學(xué)期開(kāi)學(xué)考試題和答案
- GB/T 20032-2024項(xiàng)目風(fēng)險(xiǎn)管理應(yīng)用指南
- 護(hù)膚基礎(chǔ)知識(shí)
- 博鰲亞洲論壇:創(chuàng)新報(bào)告2024
- 2025年全國(guó)青少年禁毒知識(shí)競(jìng)賽題庫(kù)及答案(401一516) - 副本
- 小學(xué)生網(wǎng)絡(luò)安全教育
- 2025年高三歷史高考第二輪復(fù)習(xí)知識(shí)梳理中國(guó)史部分復(fù)習(xí)提綱
- 2025山東能源集團(tuán)中級(jí)人才庫(kù)選拔高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年蒙鹽集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 精神科醫(yī)療質(zhì)控課件
- 護(hù)理三基三嚴(yán)習(xí)題+參考答案
評(píng)論
0/150
提交評(píng)論