軟件靜態(tài)演化技術_第1頁
軟件靜態(tài)演化技術_第2頁
軟件靜態(tài)演化技術_第3頁
軟件靜態(tài)演化技術_第4頁
軟件靜態(tài)演化技術_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件演化技術軟件演化概述演化是一種長期存在的自然現(xiàn)象,它始終貫穿于不同的物種、社會、群體和概念的發(fā)展過程中。其中,軟件系統(tǒng)也不例外。軟件是對現(xiàn)實世界中問題空間與解空間的具體描述,是客觀世界的一種抽象表示。隨著外界環(huán)境的變化,客觀世界也在不斷地發(fā)生變化。因此,和其描述的客觀事物一樣,軟件也應該是不斷地變化著的。由此可見,用戶期望軟件系統(tǒng)也能夠很好地適應外界環(huán)境變化的要求。軟件演化技術軟件演化概述由此可見,用戶期望軟件系統(tǒng)也能夠很好地適應外界環(huán)境變化的要求。同時,演化過程會不斷地促進技術向前發(fā)展。反過來,技術的不斷發(fā)展也會促進軟件系統(tǒng)的進一步升級。軟件演化技術軟件演化概述在軟件系統(tǒng)開發(fā)完畢正式投入使用之后如果用戶需求發(fā)生改變或者要將該系統(tǒng)移植到另外一個運行環(huán)境中或者在新環(huán)境中需求發(fā)生了改變時都需要對軟件系統(tǒng)進行修改和完善。這個過程本身就是一個進化和完善的過程。軟件系統(tǒng)進行逐步完善并達到所希望的目標的過程就是軟件演化。軟件演化技術軟件演化概述軟件演化是指軟件在其生命周期內(nèi)進行系統(tǒng)維護和系統(tǒng)更新的動態(tài)行為。演化是一系列貫穿軟件生命周期始終的活動,引起軟件變化的原因有系統(tǒng)需求改變、功能實現(xiàn)增強、新功能加入、軟件架構改變、軟件缺陷修復、運行環(huán)境改變等,均要求軟件系統(tǒng)能夠快速適應變化,具有較強的演化能力,以減少軟件維護的代價。

軟件演化技術軟件演化的具體過程現(xiàn)實世界軟件系統(tǒng)演化規(guī)約演化抽象確認實現(xiàn)確認確認模擬外部變化軟件演化技術軟件需求演化軟件需求演化是一個不斷調節(jié)應用系統(tǒng)以滿足用戶需求的過程,是一個對已有系統(tǒng)不斷進行修改、補充和完善,以適應外界環(huán)境變化的過程??陀^世界總是在不斷地發(fā)展變化,因此,系統(tǒng)需求也不可能是一成不變的。隨著新需求和新技術的不斷涌現(xiàn),幾乎所有的系統(tǒng)都要不斷地進行升級和更新,這種變化的起因更多地歸結于軟件需求的演化

。軟件演化技術軟件需求演化系統(tǒng)需求主要包括功能需求和非功能性需求兩部分。非功能性需求功能需求軟件體系結構體現(xiàn)約束軟件體系結構、非功能性需求和功能需求之間的關系。軟件演化技術軟件需求演化需求分析往往具有無法避免的不徹底性和不完備性,一些無法預料的外部條件的變化也總是在所難免。因此,無論是在開發(fā)階段還是在運行階段,經(jīng)常需要修改系統(tǒng)需求的定義,這就是需求演化。軟件需求演化主要分為三類:需求增加需求刪除需求改寫軟件演化技術軟件需求演化需求增加在軟件開發(fā)的過程中客戶要求增加一些功能,軟件工程師檢查用戶提出的新需求是否與原有功能沖突,如果沖突則向開發(fā)小組報告,否則將新需求加入到系統(tǒng)需求說明中,啟動軟件演化過程。軟件演化技術軟件需求演化需求刪除在開發(fā)和運行階段,系統(tǒng)往往存在著一些不必要的或重復的功能,必須刪除這些功能所對應的需求描述。此時,必須考慮以下因素:處理與該功能相關的消息通信和該功能有關的技術文檔;當刪除包含多個子功能的需求時,應該對每個子功能都做相應的刪除處理。

軟件演化技術軟件需求演化需求改寫經(jīng)過與客戶商討之后,軟件工程師對功能定義、數(shù)據(jù)定義和實現(xiàn)方法進行修改,然后通知相關人員按照新需求重新啟動軟件演化工程。

軟件演化技術軟件需求演化需求演化的實施在實施需求演化時,軟件工程師應該對所涉及的多個相關因素進行慎重地考慮,盡量縮小影響范圍,保留現(xiàn)有的工作和投資。同時,還要保持軟件系統(tǒng)的松耦合結構,制定周密完整的修改計劃,然后設計對應的演化方案。在經(jīng)過模擬驗證和反復修改之后才能正式開始實施。軟件演化技術軟件演化的分類軟件演化指的是系統(tǒng)進行變化并達到預期目的的過程,可以分為:靜態(tài)演化動態(tài)演化靜態(tài)演化是指系統(tǒng)在停機狀態(tài)下進行的改動,動態(tài)演化則是指軟件在運行期間進行的更新。軟件演化技術軟件演化的分類靜態(tài)演化在停機狀態(tài)下,系統(tǒng)的維護和二次開發(fā)就是一種典型的軟件靜態(tài)演化。在軟件開發(fā)過程中,如果對當前結果不滿意,可以回退重復以前的步驟,這本身也是軟件的一次靜態(tài)演化。軟件演化技術軟件演化的分類從實現(xiàn)方式和粒度上看,演化主要包括:基于過程和函數(shù)的軟件演化面向對象的軟件演化基于構件的軟件演化基于體系結構的軟件演化軟件演化技術軟件演化的分類基于過程和函數(shù)的軟件演化一般來說,早期的動態(tài)鏈接庫DLL的動態(tài)加載就是以DLL為基礎的函數(shù)層的軟件演化。DLL的調用方式可以分為加載時刻的隱含調用和運行時刻的顯示調用。加載時刻的隱含調用由編譯系統(tǒng)來完成對DLL的加載和卸載工作,屬于軟件靜態(tài)演化。運行時刻的顯示調用則是由編譯者使用應用程序編程接口API函數(shù)來加載和卸載DLL實現(xiàn)對DLL的動態(tài)調用。

軟件演化技術軟件演化的分類面向對象的軟件演化面向對象語言是從現(xiàn)實世界中客觀存在的事物(即對象)出發(fā)來構造應用系統(tǒng)的,提高了人們表達客觀世界的抽象層次,使開發(fā)的軟件具有更好的構造性。對象是某一功能的定義與實現(xiàn)體,封裝了對象的所有屬性和相關方法。類則是一類具有相似屬性的對象的抽象。軟件演化技術軟件演化的分類面向對象的軟件演化(續(xù))在設計系統(tǒng)時,可以為對象提供一個代理對象,在運行軟件時,任何訪問該對象的操作都必須通過代理對象來完成。當一個對象調用另一個對象時,代理對象首先取得調用請求信息,然后識別被調用對象的類版本是否更新,如果已經(jīng)更新則重新裝載該類并替換被調用對象。軟件演化技術軟件演化的分類基于構件的軟件演化從復用的粒度來講,軟件構件比對象大得多,更易于復用和演化。在基于構件的系統(tǒng)中,構件作為一個特定的功能單位,主要包括信息、行為和接口三個部分。信息保存在構件的內(nèi)部,指明構件的內(nèi)部狀態(tài),構件在實現(xiàn)其功能時將參照這些信息行為是構件所能實現(xiàn)的功能接口是構件對外的表現(xiàn),包括構件對外屬性和方法調用軟件演化技術軟件演化的分類基于構件的軟件演化(續(xù))構件演化是在現(xiàn)有構件的基礎上對其進行修改,以滿足用戶的新需求。根據(jù)構件的組成,構件的演化主要包括信息演化、行為演化和接口演化三種類型。信息演化是給構件增加新的內(nèi)部狀態(tài)行為演化是在保持構件對外接口不變的情況下,修改構件的具體功能,重新實現(xiàn)構件的內(nèi)部邏輯接口演化則是要對構件的接口進行修改包括增加、刪除和替換原構件的接口軟件演化技術軟件演化的分類基于體系結構的軟件演化由于系統(tǒng)需求、技術、環(huán)境和分布等因數(shù)的變化,最終將導致系統(tǒng)框架按照一定的方式來變動,這就是軟件體系結構演化。從系統(tǒng)是否運行的角度來看,軟件體系結構演化包括靜態(tài)演化和動態(tài)演化。在非運行時刻,系統(tǒng)框架結構的修改和變更被稱為軟件體系結構靜態(tài)演化。在運行時刻,系統(tǒng)框架結構的變更被稱為軟件體系結構動態(tài)演化。軟件演化技術軟件演化的分類基于體系結構的軟件演化(續(xù)1)從系統(tǒng)框架發(fā)生變化的時間來進行劃分,軟件體系結構演化可以分為以下四個階段:設計時的體系結構演化運行前的體系結構演化安全運行模式下的體系結構演化運行時刻的體系結構演化軟件演化技術軟件演化的分類基于體系結構的軟件演化(續(xù)2)設計時的體系結構演化在設計階段,隨著對系統(tǒng)理解的不斷深入,系統(tǒng)的整體框架會越來越清晰,這本身就是一個體系結構設計方案不斷完善的過程。在這個階段,由于系統(tǒng)框架還沒有與之相對應的實現(xiàn)代碼,因此,這時候的演化是相對簡單的。目前,有多種技術可以提高軟件設計時演化的能力,如基于構件的開發(fā)、基于軟件框架的開發(fā)等等。軟件演化技術軟件演化的分類基于體系結構的軟件演化(續(xù)3)運行前的體系結構演化此時,框架各部分所對應的代碼已經(jīng)被編譯到軟件系統(tǒng)中,但系統(tǒng)還沒有開始運行。由于系統(tǒng)還沒有運行,體系結構更新不需要考慮系統(tǒng)的狀態(tài)信息,只需要重新編譯框架中變化部分的代碼和對構件元素進行重新配置。軟件演化技術軟件演化的分類基于體系結構的軟件演化(續(xù)4)安全運行模式下的體系結構演化這種模式又稱為受限運行演化。系統(tǒng)運行在安全模式下,軟件體系結構的演化不會破壞系統(tǒng)的穩(wěn)定性和一致性,但是演化的程度要受到限制。此外,還需要提供保存系統(tǒng)框架信息和動態(tài)演化的相關機制。軟件演化技術軟件演化的分類基于體系結構的軟件演化(續(xù)5)運行時刻的體系結構演化在系統(tǒng)運行過程中,需要檢查系統(tǒng)的狀態(tài),包括系統(tǒng)的全局狀態(tài)和演化構件的內(nèi)部狀態(tài),以保證系統(tǒng)的完整性和約束性不被破壞,使演化后系統(tǒng)能夠正常地運行。這個階段除了要求系統(tǒng)提供保存當前的框架信息和動態(tài)演化機制外,還要求具備演化一致性檢查功能。軟件演化技術軟件靜態(tài)演化技術靜態(tài)演化是指在應用系統(tǒng)停止運行時對軟件所進行的修改和更新,即一般意義上的軟件改進和升級。在停機狀態(tài)下,系統(tǒng)的維護和二次開發(fā)就是一種典型的軟件靜態(tài)演化。在軟件開發(fā)過程中,如果對當前結果不滿意,可以回退重復以前的步驟,這本身也是軟件的一次靜態(tài)演化。軟件演化技術軟件靜態(tài)演化技術靜態(tài)演化的優(yōu)缺點優(yōu)點是在更新過程中,不需要考慮系統(tǒng)的狀態(tài)遷移和活動線程問題。缺點是停止應用程序意味著停止系統(tǒng)所提供的服務,使軟件暫時失效。軟件演化技術軟件靜態(tài)演化技術軟件理解需求變更分析演化計劃系統(tǒng)重構系統(tǒng)測試更新后系統(tǒng)原系統(tǒng)循環(huán)迭代軟件演化技術軟件靜態(tài)演化技術體系結構的靜態(tài)演化軟件體系結構演化基本上可以歸結為三類:局部更新非局部更新體系結構級更新軟件演化技術軟件靜態(tài)演化技術體系結構的靜態(tài)演化局部更新是指修改單個的軟件構件,包括構件的刪除、增加和修改。非局部更新是指對幾個軟件構件進行修改,但不影響整個體系結構,包括構件合并、分解和若干個構件的修改。體系結構級更新則會影響到系統(tǒng)各個組成元素之間的相互關系,甚至會改動整個框架結構。軟件演化技術軟件靜態(tài)演化技術構件的靜態(tài)演化在開發(fā)構件時,通常采用接口和實現(xiàn)相分離的原則,構件之間只能通過接口來進行通信。具有兼容性接口是構件在靜態(tài)演化過程中的一種有效途徑。但是,在實際開發(fā)過程中,由于開發(fā)人員的不同或者采用的標準不同,可能出現(xiàn)構件之間的接口不一致的情況。這就需要對構件的接口進行修改,以方便在軟件演化過程中添加構件。軟件演化技術軟件靜態(tài)演化技術為了提高軟件演化的效率,通常使用構件包裝器來修改原構件的接口,以適應新環(huán)境的需求。在構件包裝器中,封裝了原始構件,同時提供了系統(tǒng)所需要的接口,這樣就解決了構件接口不兼容的問題。構件A演化包裝器構件AB軟件演化技術軟件靜態(tài)演化技術構件的靜態(tài)演化包裝器本身不做任何實質的核心工作,它只是一個簡單的接口轉換器,通過調用原始構件中相應的方法來響應用戶的請求。包裝器不僅能封裝單個構件,而且可以同時封裝多個構件。通過復合多個構件的功能,包裝器可以提供更加強大的功能。軟件演化技術軟件靜態(tài)演化技術構件的靜態(tài)演化繼承機制也可以實現(xiàn)構件演化。新構件是通過繼承原構件來獲取的,是原構件的子類型。子類型是通過在加強原構件的基礎上創(chuàng)建一個新構件,并重用其實現(xiàn)部分來完成演化的。在設計構件時,將可能發(fā)生變化的部分定義為虛函數(shù),并提供默認的實現(xiàn)。在更新軟件時,就可以在原構件的基礎上,使用繼承機制來創(chuàng)建子構件,并按照需求重新實現(xiàn)相關的虛函數(shù),來完成構件演化的任務。軟件演化技術軟件靜態(tài)演化技術構件的靜態(tài)演化例如,打印構件負責實現(xiàn)系統(tǒng)數(shù)據(jù)的輸出,輸出過程主要包括三個部分,即:PreparePrint():初始化打印機PrintDocument():打印文檔AfterPrint():打印結束后期處理在不同的運行環(huán)境中,打印機的初始化和后期處理可能會有所不同。所以在設計打印構件時,可以把PreparePrint和AfterPrint定義為虛函數(shù)。軟件演化技術軟件靜態(tài)演化技術構件的靜態(tài)演化PrintComponentVirtual::PreparePrint()PrintDocument()Virtual::AfterPrint()演化PrintComponentVirtual::PreparePrint()PrintDocument()Virtual::AfterPrint()PrintAPreparePrint()PrintDocument()AfterPrint()繼承軟件演化技術軟件靜態(tài)演化技術體系結構的靜態(tài)演化在體系結構的靜態(tài)演化中,從表面上看是對構件的增加、替換、刪除和更新,但實質上這種變動蘊涵著一系列的連鎖反應和波及效應,更多的表現(xiàn)為變化的構件、連接件與其相關聯(lián)的構件、連接件之間的重新組合和調整。顯然,局部更新是最常發(fā)生的,也是容易實現(xiàn)的;在系統(tǒng)功能的調整時,會出現(xiàn)非局部更新,其處理過程要比局部更新復雜一些;當系統(tǒng)功能發(fā)生重大變化時,會發(fā)生體系結構級更新,此時,體系框架將需要進行重新設計。軟件演化技術軟件靜態(tài)演化技術正交體系結構演化對于復雜的應用系統(tǒng),可以通過對功能進行分層和線索

溫馨提示

  • 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

提交評論