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

下載本文檔

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

文檔簡介

第13章軟件維護與再工程軟件演化是指軟件在交付以后,對軟件進行的一系列活動的總稱。軟件演化:軟件的維護、軟件再工程。軟件維護階段覆蓋了從軟件交付使用,到軟件被淘汰為止的整個時期。軟件的開發(fā)時間可能需要一、二年,甚至更短,但它的使用時間可能要經(jīng)歷幾年或幾十年。再工程的主要目的是為遺留系統(tǒng)轉(zhuǎn)化為可演化系統(tǒng)提供一條現(xiàn)實可行的途徑,是在軟件生命周期終止后開始的一個新的階段。軟件維護與再工程內(nèi)容摘要軟件維護再工程技術(shù)內(nèi)容摘要軟件維護再工程技術(shù)軟件維護的概念什么是軟件維護

是指軟件系統(tǒng)交付使用以后,為了改正錯誤或滿足新的需要而修改軟件的過程國標GB/T11457-95給出如下定義在軟件產(chǎn)品交付使用后對其進行修改,以糾正故障;在軟件產(chǎn)品交付使用后對其進行修改,以糾正故障、改進其性能和其它屬性,或使產(chǎn)品適應(yīng)改變了的環(huán)境軟件維護的概念-軟件維護分類兩種錯誤認識

軟件維護是一次新的開發(fā)活動軟件維護就是改錯新開發(fā)活動強調(diào)要在一定的約束條件下從頭開始實施軟件維護強調(diào)必須在現(xiàn)有系統(tǒng)的限定和約束條件下實施;根據(jù)起因不同,軟件維護可以分為糾錯性維護、適應(yīng)性維護、改善性維護和預(yù)防性維護四類軟件維護的概念-軟件維護分類糾錯性維護:為了改正軟件系統(tǒng)中的錯誤,使軟件能夠滿足預(yù)期的正常運行狀態(tài)的要求而進行的維護適應(yīng)性維護:為了使軟件適應(yīng)內(nèi)部或外部環(huán)境變化,而去修改軟件的過程改善性維護:滿足使用過程中用戶提出增加新功能或修改已有功能的建議維護預(yù)防性維護:為了提高軟件的可維護性、可靠性等,為以后進一步改進軟件打下良好基礎(chǔ)而修改軟件的活動軟件維護的概念-維護問題維護時:維護人員從分析需求規(guī)格說明開始,明白軟件功能和性能上的改變,對設(shè)計說明文檔進行修改和復(fù)查,再根據(jù)設(shè)計修改進行程序變動,并用測試文檔中的測試用例進行回歸測試,最后將修改后的軟件再次交付使用。軟件維護的概念-維護問題和軟件維護有關(guān)的部分問題:理解別人的代碼通常是非常困難的,而且難度隨著軟件配置成分的缺失而迅速增加需要維護的軟件往往沒有文檔、或文檔資料嚴重不足、或軟件的變化未在相應(yīng)的文檔中反映出來當(dāng)軟件要求維護時,不能指望由原來的開發(fā)人員來完成或提供軟件的解釋。由于維護持續(xù)時間很長,因此當(dāng)需要解釋軟件時候,往往開發(fā)人員已經(jīng)不在附近了絕大多數(shù)軟件在設(shè)計時沒有考慮到將來的修改問題軟件維護這項工作毫無吸引力。一方面是因為軟件維護,看不到什么“成果”,但工作量很大,更重要的是維護工作難度大,軟件維護人員經(jīng)常遭受挫折。軟件維護的概念-維護成本軟件維護除費用外的無形代價包括維護活動占用了其他軟件開發(fā)可用的資源,使資源的利用率降低一些修復(fù)或修改請求得不到及時安排,使得客戶滿意率下降維護的結(jié)果把一些新的潛在的錯誤引入軟件,降低了軟件質(zhì)量將軟件人員抽調(diào)到維護工作中,使得其它軟件開發(fā)過程受到干擾軟件維護的概念-維護成本維護的工作可劃分成

生產(chǎn)性活動如,分析評價、修改設(shè)計、編寫程序代碼等非生產(chǎn)性活動如,程序代碼功能理解、數(shù)據(jù)結(jié)構(gòu)解釋、接口特點和性能界限分析等維護工作量的模型

M:維護的總工作量;P:生產(chǎn)性工作量;K:經(jīng)驗常數(shù);c:復(fù)雜程度;d:維護人員對軟件的熟悉程度軟件維護的概念-維護成本影響維護工作量的因素主要有以下六種系統(tǒng)的規(guī)模:系統(tǒng)規(guī)模越大,其功能就越復(fù)雜,軟件維護的工作量也隨之增大程序設(shè)計語言:使用強功能的程序設(shè)計語言可以控制程序的規(guī)模。語言的功能越強,生成程序的模塊化和結(jié)構(gòu)化程度越高,所需的指令數(shù)就越少,程序的可讀性也越好系統(tǒng)年齡:老系統(tǒng)比新系統(tǒng)需要更多的維護工作量。數(shù)據(jù)庫技術(shù)的應(yīng)用:使用數(shù)據(jù)庫,可以簡單而有效地管理和存儲用戶程序中的數(shù)據(jù),還可以減少生成用戶報表應(yīng)用軟件的維護工作量先進的軟件開發(fā)技術(shù):在軟件開發(fā)過程中,如果采用先進的分析設(shè)計技術(shù)和程序設(shè)計技術(shù),如面向?qū)ο蠹夹g(shù)、復(fù)用技術(shù)等,可減少大量的維護工作量其它一些因素:如應(yīng)用的類型、數(shù)學(xué)模型、任務(wù)的難度、IF嵌套深度、索引或下標數(shù)等,對維護工作量也有影響軟件維護的過程-維護組織維護組織結(jié)構(gòu)圖系統(tǒng)監(jiān)督員一般都是對程序(某一部分)特別熟悉的技術(shù)人員。在維護人員對程序進行修改的過程中,由配置管理員嚴格把關(guān),控制修改的范圍,對軟件配置進行審計。

維護管理員、系統(tǒng)監(jiān)督員、修改控制決策機構(gòu)等,均代表維護工作的某個職責(zé)范圍。軟件維護的過程-維護組織維護團隊根據(jù)時間的不同,可以分為短期團隊和長期團隊短期團隊一般是當(dāng)需要執(zhí)行相關(guān)具體任務(wù)時,臨時組織起來解決手頭的問題

長期團隊則更正式,能夠?qū)I(yè)化創(chuàng)建溝通渠道,可以管理軟件系統(tǒng)整個生存期的成功演化無論是短期團隊還是長期團隊,都要把有經(jīng)驗的員工和新員工混合起來。軟件維護的過程-維護過程非糾錯性維護,則首先判斷維護類型,對適應(yīng)性維護,按照評估后得到的優(yōu)先級放入隊列改善性維護,則還要考慮是否采取行動,如果接受申請,則同樣按照評估后得到的優(yōu)先級放入隊列,如果拒絕申請,則通知請求者,并說明原因工作安排隊列中的任務(wù),由修改負責(zé)人依次從隊列中取出任務(wù),按照軟件工程方法學(xué)規(guī)劃、組織、實施工程。軟件維護的過程-維護過程維護請求類型類型嚴重性評估后按優(yōu)先級在隊列排隊救火行動,當(dāng)排在隊列之首評估后分類評估后按優(yōu)先級在隊列排隊采取的行動通知請求者并說明原因按優(yōu)先級在隊列中排隊從維護請求隊列之首取出一任務(wù)按SE方法學(xué)規(guī)劃、組織、實施工程隊列中還有維護請求嗎?資源用于開發(fā)新的軟件。yn糾錯性維護其他改善性維護適應(yīng)性維護拒絕接受并不嚴重非常嚴重維護過程圖軟件維護的過程-維護過程維護工作最后一步是復(fù)審依照當(dāng)前狀態(tài),在設(shè)計、編碼和測試的哪些方面還能用其他方法進行?哪些維護資源可用但未用?這次維護活動中主要(或次要)的障礙有哪些?在維護請求中有預(yù)防性維護嗎?軟件維護的過程-維護記錄維護人員對程序進行修改前要著重做好兩個記錄維護申請報告軟件修改報告維護請求表(報告)即軟件問題報告該報告(表)由要求維護活動的用戶填寫。對改正性維護,用戶需要將錯誤出現(xiàn)的現(xiàn)場信息詳細描述出來,包括輸入數(shù)據(jù)、錯誤清單以及其它有關(guān)材料。對適應(yīng)性維護或改善性維護,應(yīng)該給出簡短的需求規(guī)格說明書。維護申請被批準后,維護申請報告就成為外部文檔,作為本次維護的依據(jù)軟件維護的過程-維護評價如果已經(jīng)開始保存維護記錄,可以對維護工作做一些定量度量,至少可以從如下7方面進行評價:每次程序運行平均失敗的次數(shù);用于每一類維護活動的總?cè)藭r數(shù);平均每個程序、每種語言、每種維護類型所必需的程序變動數(shù);維護過程中增加或刪除源語句平均花費的人時數(shù);維護每種語言平均花費的人時數(shù);一張維護請求表的平均周轉(zhuǎn)時間;不同維護類型所占的比例;軟件可維護性可維護性(maintainability)指理解、改正、調(diào)整和改進軟件的難易程度。對軟件可維護性影響的主要因素有:可理解性(understandability)、可測試性(testability)、可修改性、modifiability)可移植性(portability)軟件可維護性-主要影響因素可理解性:指理解軟件的結(jié)構(gòu)、接口、功能和內(nèi)部過程的難易程度。提高軟件可理解性的措施有:采用模塊化的程序結(jié)構(gòu);書寫詳細正確的文檔;采用結(jié)構(gòu)化程序設(shè)計;書寫源程序的內(nèi)部文檔;使用良好的編程語言;具有良好的程序設(shè)計風(fēng)格等軟件可維護性-主要影響因素可測試性:指測試和診斷軟件(主要指程序)中錯誤的難易程度。提高軟件可測試性的措施有:采用良好的程序結(jié)構(gòu);書寫詳細正確的文檔;使用測試工具和調(diào)試工具;保存以前的測試過程和測試用例等軟件可維護性-主要影響因素可修改性:指修改軟件(主要指程序)的難易程度。在修改軟件時經(jīng)常會發(fā)生這樣的情況:修改了程序中某個錯誤的同時又產(chǎn)生新的錯誤(由程序的修改引起的);或者在程序中增加了某個功能后,導(dǎo)致原先的某些功能不能正常執(zhí)行。軟件可維護性-主要影響因素可移植性:指程序轉(zhuǎn)移到一個新的計算環(huán)境的難易程度。影響軟件可移植性的因素有:信息隱蔽原則;模塊獨立;模塊化;高內(nèi)聚低耦合;良好的程序結(jié)構(gòu);不用標準文本以外的語句等一個可移植的程序應(yīng)具有結(jié)構(gòu)良好、靈活、不依賴于某一具體計算機或操作系統(tǒng)的性能軟件可維護性-主要影響因素通常對于軟件可移植性的度量考慮如下因素是否是用高級的獨立于機器的語言來編寫程序?是否采用廣泛使用的標準化的程序設(shè)計語言來編寫程序?是否僅使用了這種語言的標準版本和特性?程序中是否使用了標準的普遍使用的庫功能和子程序?程序中是否極少使用或根本不使用操作系統(tǒng)的功能?軟件可維護性-主要影響因素程序在執(zhí)行之前是否初始化內(nèi)存?程序在執(zhí)行之前是否測定當(dāng)前的輸入/輸出設(shè)備?程序是否把與機器相關(guān)的語句分離了出來,集中放在了一些單獨的程序模塊中,并有說明文件?程序是否結(jié)構(gòu)化?并允許在小一些的計算機上分段(覆蓋)運行?程序中是否避免了依賴于字母數(shù)字或特殊字符的內(nèi)部位表示?軟件可維護性-軟件可維護性評審在進行設(shè)計評審時,要從易于維護和提高設(shè)計總體質(zhì)量的角度全面評審:數(shù)據(jù)設(shè)計總體結(jié)構(gòu)設(shè)計過程設(shè)計界面設(shè)計在進行代碼評審時,要強調(diào)編程風(fēng)格和內(nèi)部文檔在進行測試時應(yīng)指出軟件正式交付前應(yīng)進行的預(yù)防性維護在維護活動完成后也要進行評審。

軟件可維護性-提高可維護性的方法提高可維護性通常采用的方法有確定質(zhì)量管理目標和優(yōu)先級規(guī)范化程序設(shè)計風(fēng)格選擇可維護性高的程序設(shè)計語言改進程序文檔保證軟件質(zhì)量審查方法軟件可維護性-提高可維護性的方法確定質(zhì)量管理目標和優(yōu)先級一個可維護的程序應(yīng)該是可理解的可修改的可測試的有些維護屬性之間是相互促進的,另外一些屬性之間則是相互抵觸的。在程序的開發(fā)階段就應(yīng)保證軟件具有可理解性、可修改性和可測試性。在軟件開發(fā)的每一個階段都應(yīng)盡力考慮軟件的可維護性。軟件可維護性-提高可維護性的方法使用提高軟件質(zhì)量的技術(shù)與工具在進行軟件設(shè)計時,采用:模塊化程序設(shè)計結(jié)構(gòu)化程序設(shè)計在軟件開發(fā)過程中,采用:結(jié)構(gòu)化小組,建立主程序小組實現(xiàn)嚴格的組織化管理,職能分工規(guī)范標準在對程序的質(zhì)量進行檢測時,采用:分工合作的方法這些方法會有效地提高軟件質(zhì)量和檢測效率,進而提高軟件的可維護性。軟件可維護性-提高可維護性的方法選擇可維護性高的程序設(shè)計語言選擇較好的程序設(shè)計語言對軟件維護有很大的影響。低級語言(如:機器代碼或匯編語言)程序是一般人很難掌握和理解的,因而很難維護。高級語言比低級語言容易理解,具有更好的可維護性。在高級語言中,一些語言可能比另外一些語言更容易理解。例如,cobol語言比fortran語言更容易理解,因為cobol的變量接近英語;軟件可維護性-提高可維護性的方法改進程序文檔程序文檔對提高程序的可理解性有著重要的作用。即使是一個相對簡單的程序,要想有效地、迅速對它進行維護,也需要編制文檔,對它的目的和任務(wù)進行解釋。對于程序的維護人員來說,要想對程序編制人員的意圖進行重新修改,并對今后可能出現(xiàn)的變化估計,缺少文檔的幫助也將很難實現(xiàn)。另一方面,對于程序文檔一定要能及時反映程序的變化,否則將對后續(xù)維護人員產(chǎn)生誤導(dǎo)。軟件可維護性-提高可維護性的方法進行質(zhì)量保證審查審查可以用來檢測在開發(fā)和維護階段內(nèi)發(fā)生的質(zhì)量變化。一旦發(fā)現(xiàn)問題,就可以采取措施來糾正,以控制不斷增長的軟件維護成本,延長軟件系統(tǒng)的有效生命期。為了保證軟件的可維護性,有四種類型的軟件審查:在檢查點進行復(fù)審驗收檢查周期性地維護審查對軟件包進行檢查。內(nèi)容摘要軟件維護再工程技術(shù)再工程的概念逆向工程(reverseengineering):指在軟件生存周期中,將軟件的某種形式描述轉(zhuǎn)換成更抽象形式的活動重構(gòu)(restructuring):指在同一抽象級別上轉(zhuǎn)換系統(tǒng)的描述形式。如把C++程序轉(zhuǎn)換成Java程序設(shè)計恢復(fù)(designrecovery):指借助工具從已有程序中抽象出有關(guān)數(shù)據(jù)結(jié)構(gòu)設(shè)計、總體結(jié)構(gòu)設(shè)計和過程設(shè)計的信息。再工程的概念再工程(reengineering):指在逆向工程所獲信息的基礎(chǔ)上修改或重構(gòu)已有的系統(tǒng),產(chǎn)生系統(tǒng)的一個新版本再工程的主要目的:為遺留系統(tǒng)轉(zhuǎn)化為可演化系統(tǒng)提供一條現(xiàn)實可行的途徑再工程是一個工程過程,它將逆向工程、重構(gòu)和正向工程組合起來,將現(xiàn)存系統(tǒng)重新構(gòu)造為新的形式。當(dāng)實施軟件的再工程時,軟件理解是再工程的基礎(chǔ)和前提。再工程的概念為什么要進行再工程維護一行源代碼的代價可能是最初開發(fā)該行源代碼代價的14-20倍;同時重新設(shè)計軟件體系結(jié)構(gòu)時使用了現(xiàn)代設(shè)計概念,它對將來的維護會有很大的幫助;現(xiàn)有的程序版本可以作為軟件原型使用,開發(fā)生產(chǎn)率可以大大高于平均水平;用戶具有較多使用該軟件的經(jīng)驗,因此,能夠很容易地搞清新的變更需求和變更的范圍;另外,利用逆向工程和再工程的工具,可以使一部分工作自動化;在完成預(yù)防性維護的過程中還可以建立起完整的軟件配置。

再工程的概念通常再工程包含:業(yè)務(wù)過程再工程、軟件再工程業(yè)務(wù)過程再工程(BPR——BusinessProcessRe-engineering,也稱業(yè)務(wù)過程重組)定義業(yè)務(wù)目標標示并評估現(xiàn)有的業(yè)務(wù)過程修訂業(yè)務(wù)過程以更好滿足業(yè)務(wù)目標軟件再工程包含:庫存目錄分析文檔重構(gòu)逆向工程程序和數(shù)據(jù)重構(gòu)正向工程業(yè)務(wù)過程再工程業(yè)務(wù)過程是一組“邏輯相關(guān)的任務(wù),它們被執(zhí)行以達到符合預(yù)定義的業(yè)務(wù)結(jié)果”。

每個系統(tǒng)都是由不同的子系統(tǒng)構(gòu)成,而子系統(tǒng)還可以再細分為更細的子系統(tǒng),從而整個業(yè)務(wù)呈現(xiàn)一種層次結(jié)構(gòu)業(yè)務(wù)業(yè)務(wù)系統(tǒng) 業(yè)務(wù)過程 業(yè)務(wù)子過程業(yè)務(wù)層次

業(yè)務(wù)過程再工程業(yè)務(wù)過程再工程是迭代的,不斷演化的。整個業(yè)務(wù)過程再工程模型可用下圖表示業(yè)務(wù)定義過程標識過程評估過程規(guī)約和設(shè)計原型實現(xiàn)求精和實例化軟件再工程過程在業(yè)務(wù)過程被分析清楚后,可以對軟件實施再工程,整個軟件再工程過程模型如下圖軟件再工程過程庫存目錄分析包含關(guān)于每個應(yīng)用系統(tǒng)的基本信息應(yīng)用系統(tǒng)的名字最初構(gòu)建它的日期已做過的實質(zhì)性修改次數(shù)過去18個月報告的錯誤用戶數(shù)量安裝它的機器數(shù)量它的復(fù)雜程度文檔質(zhì)量整體可維護性等級預(yù)期壽命在未來36個月內(nèi)的預(yù)期修改次數(shù)業(yè)務(wù)重要程度等軟件再工程過程文檔重構(gòu)建立文檔非常耗費時間,不可能為數(shù)百個程序都重新建立文檔。如果一個程序是相對穩(wěn)定的,而且可能不會再經(jīng)歷什么變化,那么,讓它保持現(xiàn)狀。為了便于今后的維護,必須更新文檔,但只針對系統(tǒng)中當(dāng)前正在修改的那些部分建立完整文檔。如果某應(yīng)用系統(tǒng)是完成業(yè)務(wù)工作的關(guān)鍵,而且必須重構(gòu)全部文檔,則仍然應(yīng)該設(shè)法把文檔工作減少到必需的最小量。

軟件再工程過程逆向工程軟件的逆向工程是分析程序,以便在比源代碼更高的抽象層次上,創(chuàng)建出程序的某種表示的過程;逆向工程工具從現(xiàn)存的程序代碼中抽取有關(guān)數(shù)據(jù)、體系結(jié)構(gòu)和處理過程的設(shè)計信息。軟件再工程過程代碼重構(gòu)某些老程序具有比較完整、合理的體系結(jié)構(gòu),但是,個體模塊的編碼方式卻是難于理解、測試和維護的。在這種情況下,可以重構(gòu)可疑模塊的代碼。為了完成代碼重構(gòu)活動:首先用重構(gòu)工具分析源代碼,標注出和結(jié)構(gòu)化程序設(shè)計概念相違背的部分。然后重構(gòu)有問題的代碼(此項工作可自動進行)。最后復(fù)審和測試生成的重構(gòu)代碼(以保證沒有引入異常)并更新代碼文檔。軟件再工程過程數(shù)據(jù)重構(gòu)數(shù)據(jù)重構(gòu)發(fā)生在相當(dāng)?shù)偷某橄髮哟紊?,它是一種全范圍的再工程活動。在大多數(shù)情況下,數(shù)據(jù)重構(gòu)始于逆向工程活動,分解當(dāng)前使用的數(shù)據(jù)體系結(jié)構(gòu),必要時定義數(shù)據(jù)模型,標識數(shù)據(jù)對象和屬性,并從軟件質(zhì)量的角度復(fù)審現(xiàn)存的數(shù)據(jù)結(jié)構(gòu)。軟件再工程過程正向工程正向工程過程應(yīng)用軟件工程的原理、概念、技術(shù)和方法來重新開發(fā)某個現(xiàn)有的應(yīng)用系統(tǒng)。在大多數(shù)情況下,被再工程的軟件不僅重新實現(xiàn)現(xiàn)有系統(tǒng)的功能,而且加入了新功能和提高了整體性

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論