第章 軟件維護(hù)與再工程_第1頁(yè)
第章 軟件維護(hù)與再工程_第2頁(yè)
第章 軟件維護(hù)與再工程_第3頁(yè)
第章 軟件維護(hù)與再工程_第4頁(yè)
第章 軟件維護(hù)與再工程_第5頁(yè)
已閱讀5頁(yè),還剩64頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論