[發明專利]一種構件間動態依賴關系的自動分析方法有效
申請號: | 201210362752.3 | 申請日: | 2012-09-25 |
公開(公告)號: | CN102880493A | 公開(公告)日: | 2013-01-16 |
發明(設計)人: | 馬曉星;曹春;呂建;蘇萍 | 申請(專利權)人: | 南京大學 |
主分類號: | G06F9/445 | 分類號: | G06F9/445 |
代理公司: | 南京蘇高專利商標事務所(普通合伙) 32204 | 代理人: | 夏雪 |
地址: | 210046 江蘇省南京市棲霞區仙*** | 國省代碼: | 江蘇;32 |
權利要求書: | 查看更多 | 說明書: | 查看更多 |
摘要: | |||
搜索關鍵詞: | 一種 構件 動態 依賴 關系 自動 分析 方法 | ||
技術領域
本發明屬于計算機應用領域,具體是一種構件間動態依賴關系的自動分析方法。?
背景技術
軟件環境和用戶需求總是不斷變化的,而這些變化在軟件初始設計時,或者很難預測,或者雖然可預測但處理起來成本很大,不適合在當前版本的系統完成。因此越來越需要對已經上線的舊版本的軟件系統進行動態更新,即在不停止當前正在運行的系統的前提下對系統進行更新或版本升級,以適應新的環境,滿足用戶新的需求[1]。動態更新不僅要保證更新前后和更新過程中系統的一致性,而且在保證一致性的同時,我們希望動態更新可以盡快完成,從而減少由于動態更新造成的系統某些服務不可用的時間。?
目前可以保障動態更新過程中系統一致性的模型主要有三種:Quiescence、Tranquillity、Version-consistency。它們中的軟件系統都是由構件及構件間的依賴關系組成。Quiescence的方法只考慮由系統架構確定的構件間的靜態依賴關系,這將導致要更新的構件及其相關聯的構件在動態更新中長時間不可用,造成系統較大的破壞性。與靜態依賴不同,動態依賴關系是運行系統中正在執行的事務的發起者構件及與其相關聯的構件在運行時刻不斷變化的依賴(或調用)關系。事務是指構件在一定時間內完成的一系列動作的執行。后兩種模型使用事務運行時的動態依賴關系,在保證一致性的同時,可以減少動態更新的時間。動態依賴關系的準確性嚴重影響了動態更新進行的最佳時機和完成動態更新所需的時間。錯誤的動態依賴關系可能會破壞動態更新的正確性。?
對于動態依賴關系的計算,文獻“Yves?Vandewoude.Dynamically?updating?component-oriented?systems.PhD?thesis,Katholieke?Universiteit?Leuven,2007.”提出在程序運行前,由構件的開發人員針對每個程序手工編寫一個事務狀態機,計算其中每個狀態的動態依賴信息,并且在業務邏輯中加入狀態轉移信息,這樣程序在運行時刻可以提供關于自身的動態依賴關系。顯然,這種方法給構件的開發人員增加了很多額外的負擔,尤其當程序結構比較復雜,與周圍構件的調用關系也?較復雜時,要手工分析出每個狀態的依賴關系并編寫出狀態機,不僅耗費大量的時間,而且正確性也很難保證。針對這一不足,文獻“夏晨,曹春,陶先平.一個用于動態更新一致性保障的狀態機抽取方法.計算機科學,2010,37(11):151-155.”提出一種通過靜態分析自動抽取事務狀態機的方法。它通過分析程序源代碼的控制結構及構件間的交互端口,自動生成事務的狀態機,并自動計算出每個狀態的依賴關系。這種方法雖然在開發效率上有了很大的提高,但由于其只采用靜態分析的方法,得到的依賴關系在某些位置是不精確的,甚至是錯誤的,尤其是那些可能多次執行,或者是可由多條路徑到達的位置,例如循環結構、分支匯合點。?
發明內容
發明目的:針對上述現有技術存在的問題和不足,本發明的目的是提供一種構件間動態依賴關系的自動分析方法,能自動獲得程序在當前執行環境下精確的動態依賴關系,不僅提高了開發效率和正確性,而且提高了動態依賴信息的精確度。?
技術方案:為實現上述發明目的,本發明采用的技術方案為一種構件間動態依賴關系的自動分析方法,包括如下步驟:?
1)靜態分析階段,構建程序的動態依賴自動機;?
2)靜態分析階段,計算動態依賴自動機中的動態依賴關系的Future信息,所述動態依賴關系包括Future信息和Past信息,其中Future信息是指程序在當前執行環境下,將來可能使用的構件集合,Past信息則指其過去使用過的構件集合;?
3)靜態分析階段,將已經分析出的動態依賴自動機和驅動動態依賴自動機正確自動運行的觸發信息插入原程序(這里的“原程序”指修改以前的程序)中;?
4)動態分析階段,當程序運行時,其對應的動態依賴自動機在觸發信息的驅動下自動運行,同時自適應地獲得當前執行環境下的動態依賴關系。?
所述步驟1)中構建程序的動態依賴自動機的具體步驟為:?
1.1)構建程序的控制流圖(CFG);?
1.2)在程序的CFG上,采用深度優先的搜索算法(DFS),從程序的入口節點開始,遞歸地分析每個節點;同時,初始化動態依賴自動機的初始狀態作為當前狀態,此處的狀態是指程序在一個代碼塊中穩定不變的動態依賴關系。?
遇到可能引起程序的動態依賴關系發生變化的節點,則執行以下步驟:?
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京大學,未經南京大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210362752.3/2.html,轉載請聲明來源鉆瓜專利網。