軟件維護和軟件重用課件_第1頁
軟件維護和軟件重用課件_第2頁
軟件維護和軟件重用課件_第3頁
軟件維護和軟件重用課件_第4頁
軟件維護和軟件重用課件_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件工程軟件5軟件維護和軟件重用軟件維護

軟件維護(SoftwareMaintenance)就是在軟件產(chǎn)品交付之后對其進行修改,以排除故障,或改進性能和其他屬性,或使產(chǎn)品適應改變了的環(huán)境。軟件維護是軟件生存周期中持續(xù)時間最長的一個階段,也是花費精力和費用最多的一個階段。在軟件運行的過程中,維護工作可以占到軟件開發(fā)全部工作量的一半以上。軟件的可維護性是指軟件被理解、改正、調(diào)整和改進的難易程度,它是指導軟件工程各階段工作的一條基本原則。提高可維護性、減少維護的工作量、降低軟件的總成本是軟件工程的一個重要任務。軟件重用是指在軟件開發(fā)、維護過程中不作修改或稍加修改就可以重復使用相同或相似的軟件元素的過程。軟件重用的目的是能更快、更好、成本更低地生產(chǎn)軟件。在軟件維護時,目前常采用軟件重用技術、逆向工程和再工程?!锉菊轮攸c:如何提高軟件的可維護性;軟件重用。軟件維護和軟件重用5軟件維護和軟件重用軟件維護軟件維護(SofContents目錄軟件維護01軟件重用和再工程02Contents目錄軟件維護01軟件重用和再工程0201軟件維護軟件維護的種類軟件維護的特點軟件維護過程提高軟件的可維護性01軟件維護軟件維護的種類軟件維護的特點軟件維護過程提高軟件5.1軟件維護5.1.1軟件維護的種類DABC1)改正性維護軟件測試不大可能找出一個大型軟件系統(tǒng)的全部隱含錯誤。也就是說,幾乎每一個大型程序在運行過程中,都會不可避免地出現(xiàn)各種錯誤。為克服現(xiàn)有軟件故障而進行的維護稱為改正性維護(CorrectiveMaintenance)。3)完善性維護軟件交給用戶使用后,用戶往往會因為工作流程、應用環(huán)境的變化,要求增加新的功能和完善性能等。為增加軟件功能、增強軟件性能、提高軟件運行效率而進行的維護稱為完善性維護(PerfectiveMaintenance)。2)適應性維護計算機技術的發(fā)展十分迅速,計算機的軟件、硬件環(huán)境也在不斷發(fā)生變化,而應用軟件的使用壽命往往比原先開發(fā)時的系統(tǒng)環(huán)境更為長久,因此,常常需對軟件加以修改使之適應改變了的環(huán)境。為使軟件產(chǎn)品適應環(huán)境的變化而進行的軟件維護稱為適應性維護(AdaptiveMaintenance)。4)預防性維護為了進一步提高軟件的可維護性和可靠性,為改進軟件性能創(chuàng)造條件,需要對軟件進行的其他維護稱為預防性維護(PreventiveMaintenance)。5.1軟件維護5.1.1軟件維護的種類DABC1)改正性5.1軟件維護5.1.1軟件維護的種類圖5-1各類維護工作量占總的維護工作量的百分比5.1軟件維護5.1.1軟件維護的種類圖5-1各類維5.1軟件維護5.1.2軟件維護的特點1)結構化維護與非結構化維護差別巨大與非結構化維護相比,結構化維護能減少工作量并提高維護的總體質(zhì)量。這是在軟件開發(fā)的早期就運用軟件工程方法論的結果。012)維護的問題很多02033)維護的代價高昂5.1軟件維護5.1.2軟件維護的特點1)結構化維護與非5.1.2軟件維護的特點圖5-2描繪了因軟件維護要求而引起的可能的事件流程。圖5-2圖5-2右側的流程表示的是“非結構化維護”。在這種情況下,由于所掌握的軟件文件只有源程序,維護工作只能從分析源程序開始。源程序內(nèi)部的注解和說明一般來講不會很詳盡,而軟件結構、全程數(shù)據(jù)結構、系統(tǒng)接口、性能和設計約束等細微的特征往往很難完全搞清。在沒有軟件文檔的情況下,維護工作往往要進行這種非結構化維護,并為此而付出代價。這種代價是由于沒有使用良好的軟件開發(fā)方法所造成的。5.1.2軟件維護的特點5.1.2軟件維護的特點圖5-2描繪了因軟件維護要求而引起5.1.2軟件維護的特點圖5-2描繪了因軟件維護要求而引起的可能的事件流程。圖5-2圖5-2左側的流程表示的是“結構化維護”。在這種情況下,由于有完整的軟件文檔,軟件維護工作就可從分析軟件文檔開始,進而確定軟件的結構特性、功能特性和接口特性,確定所要求的修改將會帶來的影響并計劃實施方法。然后修改設計、編寫相應的源程序代碼、對所做的修改進行復查,并利用在測試說明書中包含的信息重復過去的測試,以確保沒有因修改而把錯誤引入到先前運行的軟件中。最后,把修改后的軟件再次交付使用。結構化維護能減少工作量并提高維護的總體質(zhì)量。5.1.2軟件維護的特點5.1.2軟件維護的特點圖5-2描繪了因軟件維護要求而引起5.1.2

軟件維護的特點5.1.2軟件維護的特點412345由于可用的資源必須供軟件維護任務使用,導致耽誤甚至喪失開發(fā)良機。有關改錯或修改的要求不能及時滿足,引起用戶不滿。在所維護的軟件中,由于修改軟件而引入潛伏的新的錯誤,導致軟件質(zhì)量下降。當必須把從事開發(fā)的軟件人員調(diào)去從事維護工作時,將可能打亂軟件開發(fā)過程。每條指令的維護成本數(shù)十倍于每條指令的開發(fā)成本,造成生產(chǎn)率的大幅下降。32維護的代價高昂5.1.2軟件維護的特點5.1.2軟件維護的特點4125.1.2

軟件維護的特點5.1.2軟件維護的特點01

軟件人員經(jīng)常流動,因而當需要維護時,往往無法依賴開發(fā)者本人來對軟件進行解釋和說明。03

需要維護的軟件往往沒有足夠的、合格的文檔。維護時僅有文檔是不夠的,容易理解的并且和程序代碼完全一致的文檔,才對維護真正有價值。02

理解他人編寫的程序往往是非常困難的,而且軟件文檔越少,維護難度越大。如果只有程序代碼而沒有說明文檔,則將出現(xiàn)嚴重困難。03

由于維護工作十分困難,又容易受挫,因而難以成為一項吸引人的工作。3維護的問題很多5.1.2軟件維護的特點5.1.2軟件維護的特點015.1軟件維護5.1.3軟件維護過程軟件維護過程實際上也是軟件問題定義和開發(fā)的過程。維護活動和軟件開發(fā)一樣,要有嚴格的規(guī)范,才能保證質(zhì)量。軟件開發(fā)機構應建立維護組織,當用戶需要軟件維護時,應填寫維護申請表,維護組織對此進行評價,安排維護活動,軟件人員的維護過程要詳細記錄,并填寫維護報告,最后要復審。軟件維護時,首先要確定維護屬于哪種類型。如果屬于改正性維護,則需要評價其出錯的嚴重性。如果錯誤嚴重,就進一步指定人員,在系統(tǒng)管理員的指導配合下,分析錯誤的原因,進行維護。對于不太嚴重的錯誤,則該項改正性維護和其他軟件開發(fā)的任務一起統(tǒng)籌安排。如果屬于完善性或適應性維護,則先確定各個維護要求的優(yōu)先次序,并且安排所需工作時間。從其意圖和目標來看,屬于開發(fā)工作,因此可將其視為開發(fā)任務。如果某項維護要求的優(yōu)先次序特別高,可立即開始維護工作。5.1軟件維護5.1.3軟件維護過程軟件維護過程實際上也5.1軟件維護5.1.3軟件維護過程不管是改正性、完善性還是適應性維護,都需要進行同樣的技術工作,包括修改軟件設計、對源程序進行修改、單元測試、組裝、有效性測試及復審等。參加軟件維護工作的人員并不是越多越好。一般情況下,對需要維護的軟件比較熟悉的人員,其維護工作的效率比較高。維護人員在維護過程中要做好詳細的記錄。對于不同類型的維護,其工作的側重點會有所不同,但總的處理方法基本上是相同的。5.1軟件維護5.1.3軟件維護過程不管是改正性、完善性5.1軟件維護維護組織軟件開發(fā)機構應當建立正式的維護組織,或設立專門負責維護工作的非正式組織。維護組織由維護管理員、系統(tǒng)管理員、維護人員組成。系統(tǒng)管理員必須對軟件產(chǎn)品程序或?qū)⒈恍薷牡哪穷惓绦蛳喈斒煜?。每當軟件開發(fā)機構收到用戶的維護申請后,交給負責此事的維護管理員,由他把維護申請交給系統(tǒng)管理員評價,再由維護人員決定如何進行修改。015.1.3軟件維護過程5.1軟件維護維護組織軟件開發(fā)機構應當建立正式的維護組織,5.1軟件維護5.1.3軟件維護過程維護文件軟件維護要有書面文件:用戶填寫維護申請表、維護管理員填寫維護報告、維護人員填寫維護記錄。1)維護申請表軟件開發(fā)機構的維護組織向用戶提供空白的維護申請表,由要求維護的用戶填寫,該表應能完整描述軟件產(chǎn)生錯誤的情況(包括輸入數(shù)據(jù)、輸出數(shù)據(jù)及其他有關信息)。對于適應性或完善性的維護要求,則應提出簡單明了的維護要求規(guī)格說明。維護申請表由維護管理員和系統(tǒng)管理員負責研究處理。022)維護報告軟件開發(fā)組織在收到用戶的維護要求表后,維護管理員應寫一份軟件維護報告。該報告應包含下述內(nèi)容:按照要求進行維護所需要的工作量;維護要求的性質(zhì);該項要求與其他維護要求相比的優(yōu)先程度;預計軟件維護后的狀況。5.1軟件維護5.1.3軟件維護過程維護文件軟件維護要有5.1軟件維護5.1.3軟件維護過程維護文件02修改程序所增加的源語行數(shù)、所刪除的源語行數(shù);各次修改耗費的人時數(shù)、累計用于維護的人時數(shù);軟件工程師的姓名;維護要求表的標識;維護開始和結束的日期;維護工作的凈收益。3)維護記錄維護記錄可以包括如下內(nèi)容:程序名稱;維護類型;所用的編程語言;程序行數(shù)或機器指令條數(shù);程序開始使用的日期;已運行次數(shù)、故障處理次數(shù);程序改變的級別及名稱;5.1軟件維護5.1.3軟件維護過程維護文件02修改程序5.1軟件維護5.1.3軟件維護過程維護工作流程維護工作流程如下:(1)用戶提出維護申請。(2)維護組織審查申請報告并安排維護工作。(3)進行維護并做詳細的維護記錄。(4)復審。035.1軟件維護5.1.3軟件維護過程維護工作流程維護工作5.1軟件維護5.1.3軟件維護過程維護工作流程當然,有時維護申請的處理過程并不完全符合上述事件流。例如,當出現(xiàn)緊急軟件問題時,就出現(xiàn)所謂“救火”維護要求。在這種情況下,就需要立即投入人力進行維護。軟件維護的復審要明確下列問題:在目前的狀況下,設計、編程、測試等方面有什么可改進的。哪些維護資源應該有,實際上卻沒有。什么是這項維護工作中最主要的障礙。是否需要預防性維護。維護情況復查對將來的維護工作有重要意義,可為提高軟件組織的管理效能提供重要意見。035.1軟件維護5.1.3軟件維護過程維護工作流程當然,有5.1軟件維護5.1.3軟件維護過程對維護的評價在維護過程中,如果缺乏詳盡可靠的數(shù)據(jù),要評價軟件維護工作就很困難。如果有良好的維護記錄,就可對維護工作做一些定量的評價,可計算如下一些指標:(1)每次程序運行的平均出錯次數(shù)。(2)用在各類維護上的總的人時數(shù)。(3)平均每個程序、每種語言、每種類型的維護所做的程序變動數(shù)。(4)維護過程中每增加或減少一個源語句所平均花費的人時數(shù)。(5)維護每種語言所平均花費的人時數(shù)。(6)處理一張維護要求表平均所需時間。(7)各類維護申請的百分比。045.1軟件維護5.1.3軟件維護過程對維護的評價在維護過5.1軟件維護5.1.3軟件維護過程軟件維護的副作用維護是為了延長軟件的壽命,讓軟件創(chuàng)造更多的價值。但是維護會產(chǎn)生潛在的錯誤或其他不希望出現(xiàn)的情況,稱為維護的副作用。維護的副作用有編碼副作用、數(shù)據(jù)副作用和文檔副作用3種。055.1軟件維護5.1.3軟件維護過程軟件維護的副作用維護5.1軟件維護5.1.3軟件維護過程數(shù)據(jù)副作用文檔副作用編碼副作用軟件維護副作用數(shù)據(jù)副作用

修改數(shù)據(jù)結構時可能造成軟件設計與數(shù)據(jù)結構不匹配,從而導致軟件錯誤。例如,修改局部量、全局量、記錄或文件的格式、初始化控制或指針、輸入/輸出或子程序的參數(shù)等容易導致設計與數(shù)據(jù)不一致。編碼副作用使用程序設計語言修改源程序時可能引入錯誤。例如,修改程序的標號、標識符、運算符、邊界條件、程序的時序關系等,要特別仔細、避免引入新的錯誤。

文檔副作用

對數(shù)據(jù)流、軟件結構、模塊邏輯或任何其他特性進行修改時,必須對相關的文檔進行相應修改,否則可能會導致文檔與程序功能不匹配、文檔不能反映軟件當前的狀態(tài)。因此,必須在軟件交付之前對軟件配置進行評審,以減少文檔的副作用。5.1軟件維護5.1.3軟件維護過程數(shù)據(jù)副作用文檔副作用5.1軟件維護5.1.4提高軟件的可維護性軟件可維護性是指軟件功能被理解、改正、適應和增強的難易程度,是維護人員對軟件進行維護的難易程度。可維護性是指導軟件工程各階段的一條基本原則,提高可維護性是軟件工程追求的目標之一5.1軟件維護5.1.4提高軟件的可維護性軟件可維護性是5.1軟件維護

5.1.4提高軟件的可維護性可維護性(1)是否擁有一組訓練有素的軟件人員;(3)文檔結構是否標準化;(5)是否已有嵌入系統(tǒng)的調(diào)試工具;(7)是否使用了標準的操作系統(tǒng)。(4)測試用例是否合適;(2)系統(tǒng)結構是否可理解、是否合理;(6)是否使用了合適的程序設計語言;

造成軟件維護工作變得困難的原因是多方面的,有維護人員素質(zhì)方面的因素,也有技術條件和管理方面的因素等。與開發(fā)環(huán)境有關的可維護性影響因素如下:1決定軟件可維護性的因素5.1軟件維護

5.1.4提高軟件的可維護性可維護性(15.1軟件維護5.1.4提高軟件的可維護性以上影響軟件可維護性的因素中,結構合理性是軟件設計時應當考慮的。系統(tǒng)結構若不合理,對其維護當然困難較大。所謂結構的合理性主要是以下列幾點為基礎的:模塊化、層次組織、系統(tǒng)文檔的結構、命令的格式和約定、程序的復雜性等。其他影響軟件可維護性的因素還有應用的類型、使用的數(shù)據(jù)庫技術、開關與標號的數(shù)量、IF語句的嵌套層次、索引或下標變量的數(shù)量等。此外軟件開發(fā)人員是否能參加維護也是值得考慮的因素。5.1軟件維護5.1.4提高軟件的可維護性以上影響軟件可5.1軟件維護

5.1.4提高軟件的可維護性135糾錯或修改軟件的時間;6測試軟件的時間;7維護評審的時間;8軟件恢復運行的時間。1識別問題的時間;2修改規(guī)格說明書的時間;3分析、診斷問題的時間;4選擇維護工具的時間;

軟件的可維護性是難以量化的概念,然而借助維護活動中可以定量估算的屬性,可以從下列維護工作所需的時間間接地度量可維護性。2軟件可維護性的度量5.1軟件維護

5.1.4提高軟件的可維護性135糾錯或5.1軟件維護

5.1.4提高軟件的可維護性

軟件的可維護性,主要表現(xiàn)在它的可理解性、可測試性、可修改性、可移植性等方面。因而,對可維護性的度量問題,也可分解成對可理解性、可測試性、可修改性、可移植性的度量問題。

軟件的可理解性表現(xiàn)為維護人員理解軟件結構、接口、功能和內(nèi)部過程的難易程度。模塊化;結構化設計或面向?qū)ο笤O計;與源程序一致的、完整正確詳盡的設計文檔、源代碼內(nèi)部的文檔和良好的高級程序設計語言等,都能提高軟件的可理解性。也可以通過對軟件復雜性的度量來評價軟件的可理解性。軟件越復雜,理解就越困難。具體可參考本書第4.5.5節(jié)“程序環(huán)形復雜程度的度量”。1)可理解性5.1軟件維護

5.1.4提高軟件的可維護性5.1軟件維護5.1.4提高軟件的可維護性

可測試性代表了軟件容易被測試的程度。它與源代碼有關,要求程序易于理解,還要求有齊全的測試文檔,保留開發(fā)時期使用的測試用例。好的文檔資料對診斷和測試至關重要。

可測試性要求軟件需求的定義要便于對需求進行分析并易于建立測試準則;還要便于就這些準則對軟件進行評價??蓽y試性是指證實程序正確性的難易程度。此外,有無可用的測試、調(diào)試工具及測試過程的確定也非常重要。在軟件設計階段就應該注意使差錯容易定位,以便維護時容易找到糾錯的辦法。2)可測試性5.1軟件維護5.1.4提高軟件的可維護性5.1軟件維護

5.1.4提高軟件的可維護性3)可修改性

可修改性是指程序容易修改的程度。一個可修改的程序往往是可理解的、通用的、靈活的和簡明的。所謂通用,是指不需要修改程序就可使程序改變功能。所謂靈活,是指程序容易被分解和組合。要度量一個程序的可修改性,可以通過對該程序做少量簡單的改變來估算修改這個程序的困難程度,例如對程序增加新類型的作業(yè)、改變輸入/輸出設備、取消輸出報告等。如果對于一個簡單的改變,程序中必須修改的模塊超過30%,則該程序?qū)儆陔y修改之列。

模塊設計的內(nèi)聚、耦合、局部化等因素都會影響軟件的可修改性。模塊抽象和信息隱蔽愈好,模塊的獨立性愈高,則修改時出錯的機會也就愈少。5.1軟件維護

5.1.4提高軟件的可維護性3)可修改性5.1軟件維護

5.1.4提高軟件的可維護性

可移植性是指軟件不加改動地從一種運行環(huán)境轉(zhuǎn)移到另一種運行環(huán)境下運行的能力,即程序在不同計算機環(huán)境下能夠有效地運行的程度??梢浦残院玫能浖菀拙S護。4)可移植性5.1軟件維護

5.1.4提高軟件的可維護性5.1軟件維護

5.1.4提高軟件的可維護性1明確軟件的質(zhì)量目標

在軟件開發(fā)的整個過程中,始終應該考慮并努力提高軟件的可維護性,盡力將軟件設計成容易理解、容易測試和容易修改的軟件。2利用先進的軟件技術和工具

軟件工程在不斷發(fā)展,新的技術和工具在不斷出現(xiàn),對軟件工程的新技術和新工具,應及時學習并應用。3選擇便于維護的程序設計語言

機器語言、匯編語言不易理解,難以維護。一般只有在對軟件的運行時間和使用空間有嚴格限制或系統(tǒng)硬件有特殊要求時,才使用機器語言或匯編語言。高級語言容易理解,可維護性較好。查詢語言、報表生成語言、圖像語言更容易理解、使用和維護。選擇適當?shù)某绦蛟O計語言非常重要,要慎重、綜合地考慮各種因素,征求用戶的意見。要提高軟件的可維護性,應從以下幾個方面入手。5.1軟件維護

5.1.4提高軟件的可維護性1明確軟件的5.1軟件維護

5.1.4提高軟件的可維護性4采取有效的質(zhì)量保證措施

在軟件開發(fā)時需要確定中間及最終交付的成果以及所有開發(fā)階段各項工作的質(zhì)量特征和評價標準。在每個階段結束前的技術審查和管理復審中,也應著重對可維護性進行復審。加強軟件測試工作,保證軟件的質(zhì)量。用戶要求確保軟件質(zhì)量,如果做不到這一點,軟件開發(fā)人員就無法生存。本書第10.6節(jié)將進一步介紹軟件質(zhì)量保證知識。5完善程序的文檔軟件文檔應滿足下述要求:(1)描述如何使用系統(tǒng),沒有這種描述,系統(tǒng)將無法使用。(2)描述怎樣安裝和管理系統(tǒng)。(3)描述系統(tǒng)需求和設計。(4)描述系統(tǒng)的實現(xiàn)和測試。在軟件工程生存周期每個階段的技術復審和管理復審中,應對文檔進行檢查,對可維護性進行復審。在維護階段,利用歷史文檔可大大簡化維護工作。歷史文檔有3種:系統(tǒng)開發(fā)文檔、錯誤記錄和系統(tǒng)維護文檔。5.1軟件維護

5.1.4提高軟件的可維護性4采取有效的02軟件重用和再工程軟件的重用軟件重用過程模型開發(fā)可重用的軟件構件軟件逆向工程軟件再工程02軟件重用和再工程軟件的重用軟件重用過程模型開發(fā)可重用的軟5.2軟件重用和再工程

軟件重用(SoftwareReuse)是指在軟件開發(fā)、維護過程中不作修改或稍加修改就可以重復使用相同或相似的軟件元素的過程。這些軟件元素包括應用領域知識、開發(fā)經(jīng)驗、設計經(jīng)驗、體系結構、需求分析文檔、設計文檔、程序代碼和測試用例等。對于新的軟件開發(fā)項目而言,它們是構成整個軟件系統(tǒng)的部件,或者在軟件開發(fā)過程中可發(fā)揮某種作用。通常把這些軟件元素稱為軟件構件。5.2軟件重用和再工程

軟件重用(SoftwareReu5.2軟件重用和再工程逆向工程(ReverseEngineer)是指根據(jù)已有的源代碼構造軟件中間產(chǎn)品,包括重新創(chuàng)建設計和規(guī)約。再工程(Reengineering)是指在逆向工程所獲得信息的基礎上,重新進行軟件設計,重構已有系統(tǒng)的一個新版本。在軟件開發(fā)、維護中采用重用軟件構件,一般可以比從頭開發(fā)這個軟件更加容易。軟件重用的目的是能更快、更好、成本更低地生產(chǎn)軟件制品。各種軟件開發(fā)過程都能使用重用軟件構件,利用面向?qū)ο蠹夹g,可以方便有效地實現(xiàn)軟件重用。5.2軟件重用和再工程逆向工程(ReverseEngin5.2軟件重用和再工程

5.2.1軟件的重用軟件重用軟件成分的重用知識重用方法和標準重用知識重用1知識重用是多方面的,例如,軟件工程知識,開發(fā)經(jīng)驗、設計經(jīng)驗、應用領域知識等的重用。5.2軟件重用和再工程

5.2.1軟件的重用軟件軟件成分5.2軟件重用和再工程

5.2.1軟件的重用軟件重用軟件成分的重用方法和標準重用知識重用方法和標準重用2方法和標準的重用包括傳統(tǒng)軟件工程方法、面向?qū)ο蠓椒ā⒂嘘P軟件開發(fā)的國家標準和國際標準的重用等。5.2軟件重用和再工程

5.2.1軟件的重用軟件軟件成分5.2軟件重用和再工程

5.2.1軟件的重用軟件重用知識重用軟件成分的重用方法和標準重用軟件成分的重用3軟件成分的重用可分為3個級別:源代碼重用、設計結果重用和規(guī)格說明重用。5.2軟件重用和再工程

5.2.1軟件的重用軟件知識重用5.2軟件重用和再工程5.2.1軟件的重用源代碼的剪貼:這種重用存在配置管理問題,無法跟蹤代碼塊的修改重用過程。源代碼包含(Include):許多程序設計語言都提供Include機制,所包含的程序庫要經(jīng)過重新編譯,才能運行。繼承:利用繼承機制重用類庫中的類時,不必修改已有代碼,就可以擴充類,或找到需要的類。源代碼重用011可重用的軟件成分5.2軟件重用和再工程5.2.1軟件的重用源代碼的剪貼:5.2軟件重用和再工程5.2.1軟件的重用設計結果的重用包括體系結構的重用。設計結果的重用有助于把應用軟件系統(tǒng)移植到不同的軟件或硬件平臺上。設計結果重用021可重用的軟件成分5.2軟件重用和再工程5.2.1軟件的重用設計結果的重用5.2軟件重用和再工程5.2.1軟件的重用規(guī)格說明重用特別適用于用戶需求沒有改變,但是系統(tǒng)體系結構發(fā)生了變化的場合。規(guī)格說明重用031可重用的軟件成分5.2軟件重用和再工程5.2.1軟件的重用規(guī)格說明重用特5.2軟件重用和再工程5.2.1軟件的重用項目計劃

軟件項目計劃的基本結構和許多內(nèi)容是可以重用的。這樣,可以減少制訂計劃的時間,降低建立進度表和進行風險分析等活動的不確定性。軟件結構

在很多情況下,軟件結構有相似或相同之處。可以創(chuàng)建一組軟件結構模板,作為重用的設計框架。成本估計

不同的項目中經(jīng)常含有類似的功能,在做成本估計時,重用部分的成本也可重用。2可重用軟件成分的具體內(nèi)容5.2軟件重用和再工程5.2.1軟件的重用項目計劃5.2軟件重用和再工程5.2.1軟件的重用需求模型和規(guī)格說明

類和對象的模型及規(guī)格說明、數(shù)據(jù)流圖等可以重用。源代碼

經(jīng)過驗證的程序構件可以重用。設計

系統(tǒng)和對象設計可以重用,用傳統(tǒng)方法開發(fā)的軟件結構、接口、設計過程等可以重用。2可重用軟件成分的具體內(nèi)容5.2軟件重用和再工程5.2.1軟件的重用需求模型和規(guī)格5.2軟件重用和再工程5.2.1軟件的重用用戶文檔和技術文檔

經(jīng)??梢灾赜眠@些文檔的較大部分內(nèi)容。數(shù)據(jù)重用

包括數(shù)據(jù)結構的重用、輸入數(shù)據(jù)的重用和中間結果的重用等。用戶界面

很多情況下用戶界面可以重用。測試用例

一旦設計或代碼構件被重用,相關的測試用例也應該被重用。2可重用軟件成分的具體內(nèi)容5.2軟件重用和再工程5.2.1軟件的重用用戶文檔和技術5.2軟件重用和再工程

5.2.2軟件重用的過程模型軟件重用的組裝模型01最簡單的軟件重用過程是,先將以往軟件工程項目中建立的軟件構件存儲在構件庫中;通過對軟件構件庫進行查詢,提取可以重用的構件,為了適應新系統(tǒng),對它們做一些修改,并建造新系統(tǒng)需要的其他構件,再將需要的所有構件組裝成新系統(tǒng)。圖5-4描述了軟件重用的組裝模型。5.2軟件重用和再工程

5.2.2軟件重用的過程模型軟件5.2軟件重用和再工程

5.2.2軟件重用的過程模型類構件的重用02利用面向?qū)ο蠹夹g,可以比較方便、有效地實現(xiàn)軟件重用。面向?qū)ο蠹夹g中的類是比較理想的可重用軟件構件,不妨稱之為類構件。5.2軟件重用和再工程

5.2.2軟件重用的過程模型類構5.2軟件重用和再工程5.2.2軟件重用的過程模型繼承重用多態(tài)重用實例重用類構件的重用繼承重用

利用面向?qū)ο蠓椒ǖ睦^承性機制,子類可以繼承父類已經(jīng)定義的所有數(shù)據(jù)和操作,也可以另外定義新的數(shù)據(jù)和操作。為提高繼承重用的效果,關鍵是設計一個合理的、具有一定深度的類構件繼承層次結構。這樣可以降低類構件的接口復雜度,提高類的可理解性,為軟件開發(fā)人員提供更多可重用的類構件。實例重用

按照需要創(chuàng)建類的實例,然后向該實例發(fā)送適當?shù)南?,啟動相應的服務,完成所需要的工作?/p>

多態(tài)重用

多態(tài)重用方法根據(jù)接收消息的對象類型,在響應一個一般化的消息時,由多態(tài)性機制啟動正確的方法,執(zhí)行不同的操作。5.2軟件重用和再工程5.2.2軟件重用的過程模型繼承重5.2軟件重用和再工程

5.2.2軟件重用的過程模型軟件重用過程模型03為了實現(xiàn)軟件重用,已經(jīng)有許多過程模型,這些模型都強調(diào)領域工程和軟件工程同時進行。所謂“領域”,是指具有相似或者相近軟件需求的應用系統(tǒng)所覆蓋的一組功能區(qū)域??梢愿鶕?jù)領域的特性及相似性,預測軟件構件的可重用性。領域工程就是分析、設計和構造具有重用價值的軟件構件,進而建立可重用的軟件構件庫的過程。左圖描述了適用于軟件重用的過程模型。領域工程在特定的領域中創(chuàng)建應用領域的模型,設計軟件體系結構模型,開發(fā)可重用的軟件成分,建立可重用的軟件構件庫。顯然,對軟件構件庫應當不斷地積累構件、不斷地進行完善。5.2軟件重用和再工程

5.2.2軟件重用的過程模型軟件5.2軟件重用和再工程

5.2.2軟件重用的過程模型軟件重用過程模型03基于構件的軟件工程,根據(jù)用戶的實際需求,參照領域模型進行系統(tǒng)分析,使用領域的結構模型進行結構設計,從可重用軟件構件庫中查找需要的構件,對構件進行鑒定、調(diào)整以構造新的軟件構件,對軟件構件進行組合以開發(fā)應用軟件,軟件構件不斷更新,并補充到可重用軟件構件庫中去。5.2軟件重用和再工程

5.2.2軟件重用的過程模型軟件5.2軟件重用和再工程

5.2.3開發(fā)可重用的軟件構件開發(fā)可重用的軟件構件傳播軟件構件分析過程領域工程開發(fā)可重用的軟件構件

為了開發(fā)可重用的軟件構件,應該考慮以下問題:標準的數(shù)據(jù)結構、標準的接口協(xié)議、設計程序模板等。分析過程領域工程分析過程的主要任務是標識可重用的軟件構件。

傳播軟件構件

傳播軟件構件就是讓用戶能在成千上萬的軟件構件中找到他所需要的構件,這需要很好地描述構件。構件的描述包括構件的功能、使用條件、接口和如何實現(xiàn)等。構件如何實現(xiàn)的問題,只有準備修改構件的人需要知道,其他人只要了解構件的功能、使用條件和接口即可。1領域工程5.2軟件重用和再工程

5.2.3開發(fā)可重用的軟件構件5.2軟件重用和再工程

5.2.3開發(fā)可重用的軟件構件

隨著軟件構件的不斷豐富,軟件構件庫的規(guī)模會不斷擴大,軟件構件庫組織結構的合理性將直接影響構件的檢索效率。庫結構的設計和檢索方法的選用,應當盡量保證用戶容易理解、便于使用。對可重用軟件構件庫要進行分類,以便于用戶檢索使用。軟件構件分類的方法有3種典型模式:枚舉分類、刻面分類和屬性值分類。2分類和檢索軟件構件5.2軟件重用和再工程

5.2.3開發(fā)可重用的軟件構件5.2軟件重用和再工程

5.2.3開發(fā)可重用的軟件構件枚舉分類01枚舉分類方法通過層次結構來描述構件,在該結構中定義軟件構件的類以及子類的不同層次。它把實際構件放在枚舉層次的適當路徑的最底層。枚舉分類模式的層次結構容易理解和使用,但在建立層次之前必須完成領域工程,以使層次中的項具有足夠的信息。EnumeratedClassification5.2軟件重用和再工程

5.2.3開發(fā)可重用的軟件構件5.2軟件重用和再工程

5.2.3開發(fā)可重用的軟件構件刻面分類02分析應用領域并標識出一組基本的描述特征,這些描述特征稱為刻面。描述一個構件的刻面的集合稱為刻面描述表。根據(jù)重要性確定刻面的優(yōu)先次序,并把它們與構件聯(lián)系起來??堂婵梢悦枋鰳嫾瓿傻墓δ堋⒓庸さ臄?shù)據(jù)、應用構件的操作和實現(xiàn)方法等特征。通常,刻面描述不超過7個。把關鍵詞的值賦給重用庫中每個構件的刻面集。使用自動工具完成同義詞詞典功能,從而可以根據(jù)關鍵詞或關鍵詞的同義詞,在構件庫中查找所需要的構件。

刻面分類方法通過分析軟件構件的基本特征,并分析這些基本特征的優(yōu)先次序,來建立軟件構件庫。FacetedClassification5.2軟件重用和再工程

5.2.3開發(fā)可重用的軟件構件5.2軟件重用和再工程

5.2.3開發(fā)可重用的軟件構件屬性值分類03屬性值分類模式是指為一個領域中的所有構件定義一組屬性,然后與刻面分類法類似地給這些屬性賦值。屬性值分類法與刻面分類法相似,區(qū)別如下:對可重用的屬性個數(shù)沒有限制。屬性沒有優(yōu)先級。不使用同義詞詞典功能。Attribute-ValueClassification5.2軟件重用和再工程

5.2.3開發(fā)可重用的軟件構件5.2軟件重用和再工程

5.2.4軟件逆向工程逆向工程是一種產(chǎn)品設計技術的再現(xiàn)過程,即對一項目標產(chǎn)品進行逆向分析及研究,從而演繹并得出該產(chǎn)品的處理流程、組織結構、功能特性及技術規(guī)格等設計要素,以制作出功能相近,但又不完全一樣的產(chǎn)品。簡單地說,逆向工程就是根據(jù)已有的產(chǎn)品,反向推出產(chǎn)品設計數(shù)據(jù)(包括各類設計圖或數(shù)據(jù)模型)的過程。因此,逆向工程可以被認為是一個從產(chǎn)品到設計的過程。5.2軟件重用和再工程

5.2.4軟件逆向工程逆向工程是5.2軟件重用和再工程

5.2.4軟件逆向工程軟件的逆向工程是分析程序,力圖在比源代碼更高的抽象層次上,建立程序的表示過程。它不僅是設計的恢復過程,還可以借助工具從已經(jīng)存在的程序中抽取數(shù)據(jù)結構、體系結構和程序設計信息。軟件逆向工程也可被視作“開發(fā)周期的逆行”。對一項軟件程序進行逆向工程,類似于逆行傳統(tǒng)瀑布模型中的開發(fā)步驟,即從實現(xiàn)階段的輸出(即軟件程序)還原出在設計階段所做的構思。軟件逆向工程僅僅是一種檢測或分析的過程,它并不會更改目標系統(tǒng)。軟件的逆向工程可以使用凈室技術(將在第11.2節(jié)介紹)來避免侵犯版權。5.2軟件重用和再工程

5.2.4軟件逆向工程軟件的逆向5.2軟件重用和再工程

5.2.4軟件逆向工程圖5-6軟件逆向工程的過程及可能恢復的信息●處理規(guī)則●構件調(diào)用●偽代碼●數(shù)據(jù)、控制●流程圖●數(shù)據(jù)結構圖●數(shù)據(jù)接口表●測試路徑源代碼靜態(tài)分析數(shù)據(jù)字典E-R圖模塊、變量表5.2軟件重用和再工程

5.2.4軟件逆向工程圖5-65.2軟件重用和再工程5.2.4軟件逆向工程分析通過信息交換所得的觀察最常用于協(xié)議逆向工程,涉及使用總線分析器和數(shù)據(jù)包嗅探器。在接入計算機總線或網(wǎng)絡的連接,并成功截取到通信數(shù)據(jù)后,可以對總線或網(wǎng)絡行為進行分析,以制造出擁有相同行為的通信實現(xiàn)。此法特別適用于設備驅(qū)動程序的逆向工程。1反匯編使用反匯編器把程序的原始機器碼翻譯成較便于閱讀理解的匯編代碼。這適用于任何的計算機程序,對不熟悉機器碼的人特別有用。流行的相關工具有OllyDebug和IDA。2反編譯使用反編譯器嘗試從程序的機器碼或字節(jié)碼中重現(xiàn)高級語言形式的源代碼。3軟件逆向工程的實現(xiàn)方法很多,主要有以下3種。5.2軟件重用和再工程5.2.4軟件逆向工程分析通過信息隨著計算機技術在各個領域的廣泛應用,特別是軟件開發(fā)技術的迅猛發(fā)展,基于某個軟件,以反匯編閱讀源碼的方式去推斷其數(shù)據(jù)結構、體系結構和程序設計信息,成為軟件逆向工程技術關注的主要對象。目前主流應用的四大逆向工程軟件為:ImagewareSurfacer,GeomagicStudio,CopyCAD,RapidForm。5.2軟件重用和再工程

5.2.4軟件逆向工程軟件逆向技術的目的是用來研究和學習先進的技術,特別是當手里沒有合適的文檔資料,又很需要實現(xiàn)某個軟件功能的時候。也正因為這樣,很多軟件為了壟斷技術,在軟件安裝之前,要求用戶同意不去逆向研究。隨著計算機技術在各個領域的廣泛應用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論