版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第8章 軟件維護軟件工程課件軟件工程課件ch08ch08軟件維護軟件維護第8章 軟件維護第8章 軟件維護第8章 軟件維護2022年6月30日第4頁教學內容教學內容8.1 軟件維護概述軟件維護概述8.2 軟件維護的過程軟件維護的過程8.3 軟件可維護性軟件可維護性8.4 軟件維護中存在的問題軟件維護中存在的問題8.5 再工程和逆向工程再工程和逆向工程8.6 本章小結和習題本章小結和習題 第8章 軟件維護2022年6月30日第5頁8.1 軟件維護概述軟件維護概述軟件系統(tǒng)開發(fā)完成交付用戶使用后,就進入軟件的運軟件系統(tǒng)開發(fā)完成交付用戶使用后,就進入軟件的運行維護階段。行維護階段。軟件維護的工作量大,而
2、且隨著軟件數量的增多和使軟件維護的工作量大,而且隨著軟件數量的增多和使用壽命的延長,軟件維護的工作量占整個軟件開發(fā)用壽命的延長,軟件維護的工作量占整個軟件開發(fā)運行過程總工作量的比例還在持續(xù)上升。運行過程總工作量的比例還在持續(xù)上升。8.1.1 軟件維護的定義軟件維護的定義8.1.2 軟件維護的分類軟件維護的分類8.1.3 軟件維護的特點軟件維護的特點第8章 軟件維護2022年6月30日第6頁8.1.1 軟件維護的定義軟件維護的定義軟件維護軟件維護:指軟件系統(tǒng)交付使用以后,為了改正軟件:指軟件系統(tǒng)交付使用以后,為了改正軟件運行錯誤,或者因滿足新的需求而加入新功能的修運行錯誤,或者因滿足新的需求而加
3、入新功能的修改軟件的過程。改軟件的過程。軟件維護與硬件維修不同,不是簡單地將軟件產品恢軟件維護與硬件維修不同,不是簡單地將軟件產品恢復到初始狀態(tài),而是需要給用戶提供一個經過修改復到初始狀態(tài),而是需要給用戶提供一個經過修改的軟件新產品。軟件維護活動需要改正現有錯誤,的軟件新產品。軟件維護活動需要改正現有錯誤,修改、改進現有軟件以適應新環(huán)境。修改、改進現有軟件以適應新環(huán)境。軟件維護不像軟件開發(fā)一樣從零做起,需要在現有軟軟件維護不像軟件開發(fā)一樣從零做起,需要在現有軟件結構中引入修改,并且要考慮代碼結構所施加的件結構中引入修改,并且要考慮代碼結構所施加的約束,此外,軟件維護所允許的時間通常只是很短約束
4、,此外,軟件維護所允許的時間通常只是很短的一段時間。的一段時間。第8章 軟件維護2022年6月30日第7頁8.1.2 軟件維護的分類軟件維護的分類軟件維護活動可以歸結為以下四類:軟件維護活動可以歸結為以下四類:v 改正性維護;改正性維護;v 適應性維護;適應性維護;v 完善性維護;完善性維護;v 預防性維護。預防性維護。 第8章 軟件維護 8.1 軟件維護的分類軟件維護的分類 在軟件交付使用后,因開發(fā)時測試的不徹底、不完全,在軟件交付使用后,因開發(fā)時測試的不徹底、不完全,必然會有部分隱藏的錯誤遺留到運行階段。必然會有部分隱藏的錯誤遺留到運行階段。u 這些隱藏下來的錯誤在某些特定的使用環(huán)境下就會
5、暴這些隱藏下來的錯誤在某些特定的使用環(huán)境下就會暴露出來。露出來。u 為了識別和糾正軟件錯誤、改正軟件性能上的缺陷,為了識別和糾正軟件錯誤、改正軟件性能上的缺陷,而進行診斷和改正錯誤的過程就叫做改正性維護。而進行診斷和改正錯誤的過程就叫做改正性維護。第8章 軟件維護 8.1 軟件維護的分類軟件維護的分類 改正性維護中的主要維護策略改正性維護中的主要維護策略: 開發(fā)過程中采用新技術開發(fā)過程中采用新技術 利用應用軟件包利用應用軟件包 提高系統(tǒng)結構化程度提高系統(tǒng)結構化程度 進行周期性維護審查等進行周期性維護審查等第8章 軟件維護 8.1 軟件維護的分類軟件維護的分類 在使用過程中,在使用過程中,p 外
6、部環(huán)境(新的硬、軟件配置)外部環(huán)境(新的硬、軟件配置)p 數據環(huán)境(數據庫、數據格式、數據輸入數據環(huán)境(數據庫、數據格式、數據輸入/ /輸出方輸出方式、數據存儲介質)可能發(fā)生變化式、數據存儲介質)可能發(fā)生變化。 為使軟件適應這種變化,而去修改軟件的過程就叫做適為使軟件適應這種變化,而去修改軟件的過程就叫做適應性維護。應性維護。第8章 軟件維護8.1 軟件維護的分類軟件維護的分類 適應性維護中的主要維護策略適應性維護中的主要維護策略對可能變化的因素進行配置管理對可能變化的因素進行配置管理將因環(huán)境變化而必須修改的部分局部化,即局限于某將因環(huán)境變化而必須修改的部分局部化,即局限于某些程序模塊等。些程
7、序模塊等。第8章 軟件維護8.1 軟件維護的分類軟件維護的分類 u 在軟件的使用過程中,用戶往往會對軟件提出新的功能與性在軟件的使用過程中,用戶往往會對軟件提出新的功能與性能要求。能要求。u 為了滿足這些要求,需要修改或再開發(fā)軟件,以擴充軟件功為了滿足這些要求,需要修改或再開發(fā)軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性。能、增強軟件性能、改進加工效率、提高軟件的可維護性。u 這種情況下進行的維護活動叫做完善性維護。這種情況下進行的維護活動叫做完善性維護。第8章 軟件維護8.1 軟件維護的分類軟件維護的分類 u 實踐表明,在幾種維護活動中,完善性維護所占的比重實踐表明,
8、在幾種維護活動中,完善性維護所占的比重最大。即大部分維護工作是改變和加強軟件,而不是糾錯。最大。即大部分維護工作是改變和加強軟件,而不是糾錯。u 完善性維護不一定是救火式的緊急維修,而可以是有計完善性維護不一定是救火式的緊急維修,而可以是有計劃、有預謀的一種再開發(fā)活動。劃、有預謀的一種再開發(fā)活動。第8章 軟件維護8.1 軟件維護的分類軟件維護的分類完善性維護中的主要維護策略完善性維護中的主要維護策略盡量采用功能強盡量采用功能強使用方便的工具,采用原型化的開發(fā)方法等使用方便的工具,采用原型化的開發(fā)方法等第8章 軟件維護8.1 軟件維護的分類軟件維護的分類 為了改進未來的可維護性或可靠性,或為了給
9、未來的為了改進未來的可維護性或可靠性,或為了給未來的改進奠定更好的基礎而修改軟件。改進奠定更好的基礎而修改軟件。u 也可以定義為:也可以定義為:“把今天的方法學用于昨天的系統(tǒng)以滿把今天的方法學用于昨天的系統(tǒng)以滿足明天的需要足明天的需要”。即該類維護工作需要采用先進的軟件工。即該類維護工作需要采用先進的軟件工程方法,對需要維護的軟件或軟件中的某一部分(重新)程方法,對需要維護的軟件或軟件中的某一部分(重新)進行設計、編碼和測試。進行設計、編碼和測試。第8章 軟件維護8.1 軟件維護的分類軟件維護的分類 預防性維護中的主要維護策略預防性維護中的主要維護策略采用提前實現采用提前實現軟件重用等技術軟件
10、重用等技術第8章 軟件維護8.1 軟件維護的分類軟件維護的分類第8章 軟件維護2022年6月30日第18頁8.1.3 軟件維護的特點軟件維護的特點軟件維護工作有以下特點。軟件維護工作有以下特點。 軟件維護是軟件生存周期中延續(xù)時間最長、工作量最大軟件維護是軟件生存周期中延續(xù)時間最長、工作量最大的一個階段。的一個階段。 軟件維護不僅工作量大、任務重,而且維護不當的話,軟件維護不僅工作量大、任務重,而且維護不當的話,還會產生一些意想不到的副作用,甚至引起新的錯誤。還會產生一些意想不到的副作用,甚至引起新的錯誤。 軟件維護活動實際上是一個修改和簡化了的軟件開發(fā)活軟件維護活動實際上是一個修改和簡化了的軟
11、件開發(fā)活動。動。 盡管軟件維護需要的工作量很大,但是長期以來,軟件盡管軟件維護需要的工作量很大,但是長期以來,軟件維護工作卻一直未受到軟件設計者們的足夠重視。維護工作卻一直未受到軟件設計者們的足夠重視。第8章 軟件維護2022年6月30日第19頁8.2 軟件維護的過程軟件維護的過程軟件維護是一件復雜而困難的事情,必須在相應的技術指軟件維護是一件復雜而困難的事情,必須在相應的技術指導下,按照一定的步驟進行。導下,按照一定的步驟進行。一般地,軟件維護活動首先要建立一個維護組織,然后建一般地,軟件維護活動首先要建立一個維護組織,然后建立維護活動的登記、申請制度及對維護方案的審批制度,立維護活動的登記
12、、申請制度及對維護方案的審批制度,規(guī)定復審的評價標準。規(guī)定復審的評價標準。8.2.1 結構化維護與非結構化維護結構化維護與非結構化維護8.2.2 維護組織維護組織8.2.3 維護工作的流程維護工作的流程8.2.4 維護工作的組織管理維護工作的組織管理第8章 軟件維護2022年6月30日第20頁8.2.1 結構化維護非結構化維護結構化維護非結構化維護8.2 維護與維護與8.2.2 維護組織維護組織8.2.3 維護工作的流程維護工作的流程8.2.4 維護工作的組織管理維護工作的組織管理第8章 軟件維護8.2.1 結構化維護與非結構化維護結構化維護與非結構化維護u結構化維護結構化維護 指軟件開發(fā)過程
13、是按照軟件工程指軟件開發(fā)過程是按照軟件工程方法進行的,開發(fā)各階段的文檔齊全,軟件的維方法進行的,開發(fā)各階段的文檔齊全,軟件的維護過程,有一整套完整的方案、技術、審定過程護過程,有一整套完整的方案、技術、審定過程及文檔。因此易于維護。及文檔。因此易于維護。u非結構化維護非結構化維護 軟件配置的惟一成分是程序代碼軟件配置的惟一成分是程序代碼, ,缺乏必要的文檔說明,文檔缺少或者不一制,難缺乏必要的文檔說明,文檔缺少或者不一制,難于確定數據結構、系統(tǒng)接口等特性,這樣的維護于確定數據結構、系統(tǒng)接口等特性,這樣的維護工作令人生畏,事倍功半。因此非結構化維護需工作令人生畏,事倍功半。因此非結構化維護需要付
14、出很大代價。要付出很大代價。第8章 軟件維護8.2 軟件維護的特點軟件維護的特點維護申請維護申請軟件系統(tǒng)軟件系統(tǒng)文檔全否文檔全否?計劃維護方法計劃維護方法分析原設計分析原設計修改設計修改設計重新編程重新編程經復審經復審,還還有問題嗎有問題嗎?無無有有分析源程序分析源程序修改源程序修改源程序經復審經復審, ,還還有問題嗎有問題嗎? ?無無交付使用交付使用結構化維護與非結構化維護的對比結構化維護與非結構化維護的對比是是否否有有有有第8章 軟件維護2022年6月30日第23頁8.2.2 維護組織維護組織對于大型軟件系統(tǒng),建立一個專門的維護組織機構對于大型軟件系統(tǒng),建立一個專門的維護組織機構是必須的。
15、較小的軟件系統(tǒng),也有必要委派一個是必須的。較小的軟件系統(tǒng),也有必要委派一個專人負責軟件維護工作。專人負責軟件維護工作。在維護活動開始之前,必須明確維護活動的審批制在維護活動開始之前,必須明確維護活動的審批制度。每個維護要求都要通過維護管理員轉交給系度。每個維護要求都要通過維護管理員轉交給系統(tǒng)管理員去評價。系統(tǒng)管理員對維護申請做出評統(tǒng)管理員去評價。系統(tǒng)管理員對維護申請做出評價后,由主管部門決定是否進行軟件修改。維護價后,由主管部門決定是否進行軟件修改。維護小組在接到通過審批的維護申請報告后,將維護小組在接到通過審批的維護申請報告后,將維護任務下達給指定的維護人員,并監(jiān)控維護活動的任務下達給指定的
16、維護人員,并監(jiān)控維護活動的開展。開展。第8章 軟件維護2022年6月30日第24頁8.2.2 維護組織維護組織第8章 軟件維護2022年6月30日第25頁8.2.3 維護工作的流程維護工作的流程概括地說,軟件維護過程是:概括地說,軟件維護過程是:建立維護機構建立維護機構編寫軟件維護申請報告編寫軟件維護申請報告確定軟件確定軟件維護工作流程維護工作流程整理軟件維護文檔整理軟件維護文檔評價軟件維評價軟件維護性能。護性能。第8章 軟件維護2022年6月30日第26頁8.2.3 維護工作的流程維護工作的流程1、一個典型的維護機構包括:維護管理員、修改批、一個典型的維護機構包括:維護管理員、修改批準人員、
17、系統(tǒng)管理員、配置管理員和維護人員。準人員、系統(tǒng)管理員、配置管理員和維護人員。2、維護申請報告將由維護管理員和系統(tǒng)管理員共同、維護申請報告將由維護管理員和系統(tǒng)管理員共同研究和處理,相應地做出軟件變更報告(研究和處理,相應地做出軟件變更報告(Software Change Report, SCR)。)。SCR 的內容的內容包括:所需修改變動的性質;申請修改的優(yōu)先級包括:所需修改變動的性質;申請修改的優(yōu)先級;為滿足該維護申請報告所需的工作量(人員數;為滿足該維護申請報告所需的工作量(人員數、時間數等);預計修改后的結果等。、時間數等);預計修改后的結果等。第8章 軟件維護2022年6月30日第27頁
18、8.2.3 維護工作的流程維護工作的流程3、具體執(zhí)行軟件維護、具體執(zhí)行軟件維護工作時,主要的步驟工作時,主要的步驟包括:包括:確認維護類型;確認維護類型;實施相應維護;實施相應維護;維護評審。維護評審。4、整理軟件維護文檔;、整理軟件維護文檔;5、評價軟件維護性能。、評價軟件維護性能。第8章 軟件維護2022年6月30日第28頁8.2.4 維護工作的組織管理維護工作的組織管理軟件維護工作的復雜性決定了軟件維護不僅軟件維護工作的復雜性決定了軟件維護不僅需要技術性工作,還需要大量的管理工作需要技術性工作,還需要大量的管理工作與之相配合,才能保證維護工作的質量和與之相配合,才能保證維護工作的質量和效
19、率。效率。第8章 軟件維護2022年6月30日第29頁8.2.4 維護工作的組織管理維護工作的組織管理第8章 軟件維護2022年6月30日第30頁8.3 軟件可維護性軟件可維護性8.3.1 軟件可維護性的定義軟件可維護性的定義8.3.2 軟件可維護性的度量軟件可維護性的度量8.3.3 提高軟件可維護性的方法提高軟件可維護性的方法第8章 軟件維護2022年6月30日第31頁8.3.1 軟件可維護性的定義軟件可維護性的定義u是指糾正軟件系統(tǒng)出現的錯誤和缺陷,以是指糾正軟件系統(tǒng)出現的錯誤和缺陷,以及為滿足新的要求進行修改、擴充或壓縮及為滿足新的要求進行修改、擴充或壓縮的容易程度。的容易程度。u 是軟
20、件開發(fā)階段各個時期的關鍵目標。是軟件開發(fā)階段各個時期的關鍵目標。第8章 軟件維護 8.3.1 軟件可維護性的定義軟件可維護性的定義 各類維護中的側重點各類維護中的側重點改正性維護改正性維護適應性維護適應性維護完善性維護完善性維護可理解性可理解性可測試性可測試性可修改性可修改性可靠性可靠性可移植性可移植性可使用性可使用性效率效率第8章 軟件維護 8.3.1 軟件可維護性的定義軟件可維護性的定義可理解性:維護人員通過閱讀源代碼和相關文檔,理解可理解性:維護人員通過閱讀源代碼和相關文檔,理解軟件的結構、接口、功能和內部過程的難易程度。軟件的結構、接口、功能和內部過程的難易程度??蓽y試性:指證實程序正
21、確性的難易程度。程序越簡單,可測試性:指證實程序正確性的難易程度。程序越簡單,證明其正確性就越容易,好的文檔資料對診斷和測試至證明其正確性就越容易,好的文檔資料對診斷和測試至關重要。關重要。可修改性:指修改程序的難易程度。一個可修改的程序可修改性:指修改程序的難易程度。一個可修改的程序往往是可理解的、通用的、靈活的和簡明的。往往是可理解的、通用的、靈活的和簡明的。第8章 軟件維護 8.3.1 軟件可維護性的定義軟件可維護性的定義可靠性:一個程序按照用戶的要求和設計目標,在給定的可靠性:一個程序按照用戶的要求和設計目標,在給定的一段時間內正確執(zhí)行的概率。度量標準主要有平均失效時一段時間內正確執(zhí)行
22、的概率。度量標準主要有平均失效時間間隔、間間隔、平均修復時間平均修復時間和和有效性有效性??梢浦残裕褐赋绦驈囊粋€計算機環(huán)境移到另一計算機環(huán)境可移植性:指程序從一個計算機環(huán)境移到另一計算機環(huán)境的適應能力,亦即程序在不同計算機環(huán)境下能夠有效地運的適應能力,亦即程序在不同計算機環(huán)境下能夠有效地運行的程度。行的程度。第8章 軟件維護 8.3.1 軟件可維護性的定義軟件可維護性的定義可使用性:從用戶觀點出發(fā),把可使用性定義為程序方便、可使用性:從用戶觀點出發(fā),把可使用性定義為程序方便、實用、及易于使用的程度。實用、及易于使用的程度。效率:一個程序能執(zhí)行預定功能而又不浪費機器資源的程效率:一個程序能執(zhí)行預
23、定功能而又不浪費機器資源的程度。這些機器資源包括內存容量、外存容量、通道容量和度。這些機器資源包括內存容量、外存容量、通道容量和執(zhí)行時間。執(zhí)行時間。第8章 軟件維護 8.3.2 軟件可維護性的度量軟件可維護性的度量u 度量一個可維護的程序的七種特性時常用的方法就是質度量一個可維護的程序的七種特性時常用的方法就是質量檢查表、質量測試和質量標準。量檢查表、質量測試和質量標準。u 質量檢查表是用于測試程序中某些質量特性是否存在的一質量檢查表是用于測試程序中某些質量特性是否存在的一個問題清單。評價者針對檢查表上的每個問題,依據自己的個問題清單。評價者針對檢查表上的每個問題,依據自己的定性判斷,回答定性
24、判斷,回答“是是”或者或者“否否”。u 質量測試和質量標準則用于定量分析和評價程序的質量。質量測試和質量標準則用于定量分析和評價程序的質量。第8章 軟件維護8.3.3 提高軟件可維護性的方法提高軟件可維護性的方法 需要從以下五個方面著手:需要從以下五個方面著手: 建立明確的軟件質量目標和優(yōu)先級建立明確的軟件質量目標和優(yōu)先級 使用提高軟件質量的技術和工具使用提高軟件質量的技術和工具 選擇便于維護的程序設計語言選擇便于維護的程序設計語言 采取明確的、有效的質量保證審查措施采取明確的、有效的質量保證審查措施 完善程序的文檔完善程序的文檔 第8章 軟件維護2022年6月30日第38頁8.4 軟件維護中
25、存在的問題軟件維護中存在的問題8.4.1 軟件維護困難的表現軟件維護困難的表現8.4.2 軟件維護的副作用軟件維護的副作用8.4.3 軟件維護的代價軟件維護的代價第8章 軟件維護2022年6月30日第39頁8.4.1 軟件維護困難的表現軟件維護困難的表現軟件維護的困難主要表現在以下幾個方面。軟件維護的困難主要表現在以下幾個方面。(1)讀懂別人的程序是很困難的,而文檔的不足更增)讀懂別人的程序是很困難的,而文檔的不足更增加了這種難度;加了這種難度;(2)文檔的不一致性是軟件維護困難的又一個因素,)文檔的不一致性是軟件維護困難的又一個因素,解決方法就是要加強開發(fā)工作中文檔的版本管理;解決方法就是要
26、加強開發(fā)工作中文檔的版本管理;(3)軟件開發(fā)和軟件維護在人員和時間上存在差異;)軟件開發(fā)和軟件維護在人員和時間上存在差異;(4)軟件維護不是一件吸引人的工作。)軟件維護不是一件吸引人的工作。第8章 軟件維護2022年6月30日第40頁8.4.2 軟件維護的副作用軟件維護的副作用維護的副作用是指由于修改軟件而導致新的錯誤的維護的副作用是指由于修改軟件而導致新的錯誤的出現或者新增加一些不希望發(fā)生的情況。一般維出現或者新增加一些不希望發(fā)生的情況。一般維護產生的副作用主要有如下護產生的副作用主要有如下3 種。種。1修改代碼的副作用修改代碼的副作用2修改數據的副作用修改數據的副作用3修改文檔的副作用修改
27、文檔的副作用第8章 軟件維護l影響維護工作量的因素主要有以下六種:影響維護工作量的因素主要有以下六種:系統(tǒng)的大小系統(tǒng)的大小程序設計語言:語言的功能越強,生成程序的模塊化和程序設計語言:語言的功能越強,生成程序的模塊化和結構化程度越高,所需的指令數就越少,程序的可讀性結構化程度越高,所需的指令數就越少,程序的可讀性越好。越好。系統(tǒng)年齡:系統(tǒng)使用時間越長,所進行的修改就越多,系統(tǒng)年齡:系統(tǒng)使用時間越長,所進行的修改就越多,而多次修改可能造成系統(tǒng)結構變得混亂。而多次修改可能造成系統(tǒng)結構變得混亂。8.4.3 軟件維護的代價軟件維護的代價第8章 軟件維護 數據庫技術的應用:可以簡單而有效地管理和存儲用戶
28、數據庫技術的應用:可以簡單而有效地管理和存儲用戶程序中的數據,減少生成用戶報表應用軟件的維護工作量。程序中的數據,減少生成用戶報表應用軟件的維護工作量。先進的軟件開發(fā)技術先進的軟件開發(fā)技術 :可減少大量的維護工作量。:可減少大量的維護工作量。其它一些因素,如應用的類型、數學模型、任務的難度、其它一些因素,如應用的類型、數學模型、任務的難度、開關與標記、開關與標記、IF嵌套深度、索引或下標數等,對維護工作嵌套深度、索引或下標數等,對維護工作量也有影響。量也有影響。8.4.3 軟件維護的代價軟件維護的代價第8章 軟件維護有形的軟件維護成本是花費了多少錢,而其他非直接的成本有形的軟件維護成本是花費了
29、多少錢,而其他非直接的成本有更大的影響。例如,無形的成本可以是:有更大的影響。例如,無形的成本可以是:(1)一些看起來是合理的修復或修改請求不能及時安排,)一些看起來是合理的修復或修改請求不能及時安排,使得客戶不滿意;使得客戶不滿意;(2)變更的結果把一些潛在的錯誤引入正在維護的軟件,)變更的結果把一些潛在的錯誤引入正在維護的軟件,使得軟件整體質量下降;使得軟件整體質量下降;(3)當必須把軟件人員抽調到維護工作中去時,就使得軟)當必須把軟件人員抽調到維護工作中去時,就使得軟件開發(fā)工作受到干擾。件開發(fā)工作受到干擾。維護工作量可以分成生產性活動(如分析和評價、設計修改維護工作量可以分成生產性活動(
30、如分析和評價、設計修改和實現)和和實現)和“輪轉輪轉”活動(如力圖理解代碼在做什么、試活動(如力圖理解代碼在做什么、試圖判明數據結構、接口特性、性能界限等)圖判明數據結構、接口特性、性能界限等)8.4.3 軟件維護的代價軟件維護的代價第8章 軟件維護Belady 和和Lehman 提出一個軟件維護工作量的模型如下:提出一個軟件維護工作量的模型如下:M=P+K*exp(C-D)其中,其中,M 表示維護中消耗的總工作量;表示維護中消耗的總工作量;P 表示上面描述的生產表示上面描述的生產性活動工作量;性活動工作量;K 是一個經驗是一個經驗常數;常數;C 表示由非結構化維護表示由非結構化維護(缺乏好的
31、設計和文檔)而引起的程序復雜性的度量;(缺乏好的設計和文檔)而引起的程序復雜性的度量;D 表表示示對維護軟件熟悉程度的度量。對維護軟件熟悉程度的度量。由上式可以發(fā)現,由上式可以發(fā)現,C 越大,越大,D 越小,那么維護工作量就成指越小,那么維護工作量就成指數數的增加。的增加。也就是說,如果使用了不好的軟件開發(fā)方法(未按軟件工程也就是說,如果使用了不好的軟件開發(fā)方法(未按軟件工程要求做),原來參加開發(fā)的人員或小組不能參加維護的話,要求做),原來參加開發(fā)的人員或小組不能參加維護的話,則維護工作量(及成本)將按指數級增加。則維護工作量(及成本)將按指數級增加。8.4.3 軟件維護的代價軟件維護的代價第
32、8章 軟件維護8.5 軟件再工程軟件再工程軟件再工程旨在對現存的大量軟件系統(tǒng)進行挖掘、整理以得到有軟件再工程旨在對現存的大量軟件系統(tǒng)進行挖掘、整理以得到有用的軟件組件,或對已有軟件組件進行維護以延長其生存期。用的軟件組件,或對已有軟件組件進行維護以延長其生存期。軟件再工程的基礎是系統(tǒng)理解,包括對運行系統(tǒng)、源代碼、設計、軟件再工程的基礎是系統(tǒng)理解,包括對運行系統(tǒng)、源代碼、設計、分析和文檔等的全面理解,但在很多情況下,由于各類文檔的丟分析和文檔等的全面理解,但在很多情況下,由于各類文檔的丟失,只能對源代碼進行理解,即程序理解。失,只能對源代碼進行理解,即程序理解。軟件再工程和逆向工程是目前預防性維
33、護采用的主要技術,是走軟件再工程和逆向工程是目前預防性維護采用的主要技術,是走向自動維護的必經之路。向自動維護的必經之路。第8章 軟件維護2022年6月30日第46頁8.5 再工程和逆向工程再工程和逆向工程8.5.1 再工程與逆向工程的概念再工程與逆向工程的概念8.5.2 為什么要實施軟件再工程為什么要實施軟件再工程8.5.3 軟件再工程技術軟件再工程技術第8章 軟件維護2022年6月30日第47頁8.5.1 再工程與逆向工程的概念再工程與逆向工程的概念 軟件再工程軟件再工程: 是一類軟件工程活動,它能夠使我們:是一類軟件工程活動,它能夠使我們: 增進對軟件的理解增進對軟件的理解; 準備或直接
34、提高軟件的可維護性、復用性或演化性。準備或直接提高軟件的可維護性、復用性或演化性。軟件的逆向工程軟件的逆向工程: : 是分析程序,力圖在比源代碼更高的抽象層次上建立程序表是分析程序,力圖在比源代碼更高的抽象層次上建立程序表示的過程。示的過程。第8章 軟件維護逆向工程過程逆向工程過程理解處理理解處理理解界面理解界面理解數據理解數據分析語句分析語句分析模式分析模式分析模塊分析模塊分析程序分析程序分析系統(tǒng)分析系統(tǒng)重構代碼重構代碼提取抽象提取抽象求精與簡化求精與簡化結構化源代碼結構化源代碼初始規(guī)格說明初始規(guī)格說明最終的規(guī)格說最終的規(guī)格說明明非結構化源代非結構化源代碼碼逆向工程過程逆向工程過程第8章 軟
35、件維護8.5.2 為什么要實施軟件再工程為什么要實施軟件再工程實施軟件再工程所帶來的好處實施軟件再工程所帶來的好處 :再工程可幫助軟件機構降低軟件演化的風險再工程可幫助軟件機構降低軟件演化的風險 再工程可幫助軟件機構補償軟件的投資再工程可幫助軟件機構補償軟件的投資 再工程可使得軟件易于進一步變更再工程可使得軟件易于進一步變更 再工程有著廣闊的市場再工程有著廣闊的市場 第8章 軟件維護 再工程相關的技術再工程相關的技術再工程課題再工程課題相關技術相關技術改進軟件改進軟件重構、文檔重寫、加注釋更新文檔、復用工程、重重構、文檔重寫、加注釋更新文檔、復用工程、重新劃分模塊、數據再工程、業(yè)務過程再工程、可維新劃分模塊、數據再工程、業(yè)務過程再工程、可維護性分析、業(yè)務分析、經濟分析護性分析、業(yè)務分析、經濟分析理解軟件理解軟件瀏覽、分析并度量逆向工程、設計恢復瀏覽、分析并度量逆向工程、設計恢復獲取、保存及擴充軟件的獲取、保存及擴充軟件的知識知識分解、逆向工程設計恢復、對象恢復、程序理解、分解、逆向工程設計恢復、對象恢復、程序理解、知識庫及變換知識庫及變換8.5.3 軟件再
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國石油大學(北京)《籃球》2023-2024學年第一學期期末試卷
- 鄭州升達經貿管理學院《園林景觀快題設計》2023-2024學年第一學期期末試卷
- 小學新課程標準培訓方案
- 長春工業(yè)大學《葡萄酒品嘗學》2023-2024學年第一學期期末試卷
- 生態(tài)恢復技術在退化土地上應用
- 餐飲業(yè)年度報告模板
- AI生活助手新品發(fā)布模板
- 碩士論文答辯報告
- 生醫(yī)年報展望模板
- 房地產交易制度政策-《房地產基本制度與政策》全真模擬試卷4
- 2025年中國AI AGENT(人工智能體)行業(yè)市場動態(tài)分析、發(fā)展方向及投資前景分析報告
- 家居建材行業(yè)綠色材料應用及節(jié)能設計方
- 農副產品安全培訓
- 2024年中國玩具工程車市場調查研究報告
- 2025-2030年中國電動三輪車市場發(fā)展現狀及前景趨勢分析報告
- TCABEE 063-2024 建筑光儲直柔系統(tǒng)變換器 通 用技術要求
- 【9化期末】合肥市廬陽區(qū)2023-2024學年九年級上學期期末化學試題
- 高一下學期生物人教版必修二:3.4 基因通常是有遺傳效應的DNA片段課件
- 下屬企業(yè)考核報告范文
- 修車補胎合同范例
- 2024年基金應知應會考試試題
評論
0/150
提交評論