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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論